单片机系统开发之利用中断控制8盏灯的循环点亮.docx

上传人:b****6 文档编号:13866286 上传时间:2023-06-18 格式:DOCX 页数:10 大小:916.35KB
下载 相关 举报
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第1页
第1页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第2页
第2页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第3页
第3页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第4页
第4页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第5页
第5页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第6页
第6页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第7页
第7页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第8页
第8页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第9页
第9页 / 共10页
单片机系统开发之利用中断控制8盏灯的循环点亮.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机系统开发之利用中断控制8盏灯的循环点亮.docx

《单片机系统开发之利用中断控制8盏灯的循环点亮.docx》由会员分享,可在线阅读,更多相关《单片机系统开发之利用中断控制8盏灯的循环点亮.docx(10页珍藏版)》请在冰点文库上搜索。

单片机系统开发之利用中断控制8盏灯的循环点亮.docx

单片机系统开发之利用中断控制8盏灯的循环点亮

 

单片机应用系统开发作业

利用中断控制8盏灯花样闪烁

 

学校:

理工大学

专业:

信息对抗技术

学号:

**********

吴志飞

 

1.系统设计要求:

设晶振频率为12MHZ,利用中断系统使主程序P0口进行花样显示。

显示规律为:

(1)P0口连接8个LED,依次左移闪亮;

(2)当按下INT1时,8个LED灯依次右移闪亮;

(3)当按下INT0时,8个灯闪亮5次。

2.系统设计分析:

单片机的最小系统+8盏LED灯+排电阻。

本系统涉及到两个外中断,中断优先级,左移右移等问题。

在设计时可能要设计中断优先级。

左移右移需要用到两个移位指令RL和RR。

3.系统原理图设计:

系统所需原件为单片机AT89C51,瓷片电容CAP30pf,晶振CRYSTAL12MHZ,电解电容CAP-ELEC,电阻RES,发光二极管LED8只,排电阻RESPACK-8以及开关SWITCH。

利用中断控制8盏LED灯花样闪烁的原理图如1.1所示。

图1.1利用中断制8盏LED灯花样闪烁原理图

4.系统流程图设计:

 

 

 

5.系统源程序设计:

汇编源程序:

ORG0000H

AJMPSTART

ORG0003H

AJMPINTR0

ORG0013H

AJMPINTR1

START:

MOVIE,#85H

MOVIP,#01H

MOVTCON,#00H

MOVSP,#60H

MOVP0,#0FFH

MOVP3,#0FFH

MOVA,#0FEH

LP1:

MOVP0,A

RLA

LCALLDELAY

SJMPLP1

INTR0:

PUSHACC

PUSHPSW

MOVR1,#10

MOVA,#00H

XH:

MOVP0,A

LCALLDELAY

CPLA

DJNZR1,XH

POPPSW

POPACC

RETI

INTR1:

PUSHACC

PUSHPSW

MOVA,#7FH

MOVR2,#16

XH1:

MOVP0,A

LCALLDELAY

RRA

DJNZR2,XH1

POPPSW

POPACC

RETI

DELAY:

MOVR7,#20

DELAY1:

MOVR6,#20

DELAY2:

MOVR5,#248

DJNZR5,$

DJNZR6,DELAY2

DJNZR7,DELAY1

RET

END

 

C语言源程序:

#include

#include

voiddelay();

#defineuintunsignedint

#defineucharunsignedchar

uchartemp;

uinti;

voidmain(void)

{

IE=0X85;

IP=0X01;

TCON=0X00;

temp=0xfe;

while

(1)

{

P0=temp;

delay();

temp=_crol_(temp,1);

}

}

voidint0()interrupt0

{uchars;

s=0x00;

for(i=0;i<10;i++)

{

P0=s;

delay();

s=~s;

}

}

voidint1()interrupt2

{

uchartemp1;

temp1=0x7f;

while

(1)

{

P0=temp1;

delay();

temp1=_cror_(temp1,1);

}

}

voiddelay()

{

uinti,j;

for(i=0;i<256;i++)

for(j=0;j<256;j++)

{;}

 

6.在keil中进行调试:

(1)创建“中断控制8盏灯花样闪亮”项目,选择单片机型号为AT89C51,汇编源程序,保存为“中断控制8盏灯花样闪亮.ASM”或“中断控制8盏灯花样闪亮.C”。

(2)将源程序添加到项目中。

(3)打开项目菜单,选择Optionsfortarget’target1’选项,点击output一项,在CreateHEXFile前打上对勾。

(4)编译源程序,如果有问题,则需要调试修改,若没有错误,则成功创建“中断控制8盏灯花样闪亮.HEX”文件。

图1.3编译成功提示图

 

7.在Proteus中进行仿真:

打开Proteus软件,用左键单击单片机,在出现的对话框中,添加“中断控制8盏灯花样闪亮.HEX”文件,开始仿真,效果如下图所示。

图1.4中断控制8盏灯花样闪亮仿真图

图1.5中断控制8盏灯花样闪亮仿真图

图1.6中断控制8盏灯花样闪亮仿真图

在没有外部中断时,LED依次左移闪亮,如图1.4所示。

当按下INT0时,发生中断,单片机执行中断子程序0,如图1.5所示LED闪亮5次,然后返回主程序。

当按下INT1时,单片机执行中断子程序1,LED依次右移闪亮,如图1.6所示。

在执行中断子程序0时按下INT1无反应,因为INT0的优先级比INT1高。

仿真结果符合设计要求。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2