单片机Word文档格式.docx
- 文档编号:17293305
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:10
- 大小:141.77KB
单片机Word文档格式.docx
《单片机Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
1.理解AT89C51单片机中断优先级和优先权。
2.用PROTEUS设计、仿真基于AT89C51单片机的中断优先级实验。
3.掌握中断编程。
4.掌握发光二极管的控制方法。
二、设计要求
单片机主程序控制P0口数码管循环显示0~8;
外中断(INT0)、外中断(INT1)发生时分别在P2、P1口依次显示0~8;
INT1为高优先级,INT0为低优先级。
三、中断处理过程(实验原理)
中断处理过程大致可分为四步:
中断请求、中断响应、中断服务、中断返回
⒈中断请求
中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。
⒉中断响应
CPU查询(检测)到某中断标志为“1”,在满足中断响应条件下,响应中断。
⑴中断响应条件:
①该中断已经“开中”;
②CPU此时没有响应同级或更高级的中断;
③当前正处于所执行指令的最后一个机器周期;
④正在执行的指令不是RETI或者是访向IE、IP的指令,否则必须再另外执行一条指令后才能响应。
⑵中断响应操作
CPU响应中断后,进行下列操作:
①保护断点地址;
②撤除该中断源的中断请求标志;
③关闭同级中断;
④将相应中断的入口地址送入PC;
80C51五个中断入口地址:
INT0:
0003H;
T0:
000BH;
INT1:
0013H
T1:
001BH;
串行口:
0023H
⒊执行中断服务程序
中断服务程序应包含以下几部分:
⑴保护现场
⑵执行中断服务程序主体,完成相应操作
⑶恢复现场
⒋中断返回
在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作:
⑴恢复断点地址。
⑵开放同级中断,以便允许同级中断源请求中断。
5、中断响应等待时间
若排除CPU正在响应同级或更高级的中断情况,中断响应等待时间为:
3~8个机器周期
6、中断请求的撤除
中断源发出中断请求,相应中断请求标志置“1”。
CPU响应中断后,必须清除中断请求“1”标志。
否则中断响应返回后,将再次进入该中断,引起死循环出错。
⑴对定时/计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清除了相应的中断请求标志。
⑵对外中断电平触发方式,需要采取软硬结合的方法消除后果。
⑶对串行口中断,用户应在串行中断服务程序中用软件清除TI或RI。
7、中断优先控制
80C51中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之间的中断优先权。
其从高到低的顺序为:
INT0、INT1、T0、T1、串行口。
中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中断源同时请求中断时的优先次序。
80C51中断优先控制的基本原则:
①高优先级中断可以中断正在响应的低优先级中断,反之则不能。
②同优先级中断不能互相中断。
③同一中断优先级中,若有多个中断源同时请求中断,CPU将先响应优先权高的中断,后响应优先权低的中断。
8、中断嵌套
当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CPU可以“中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中断嵌套。
中断嵌套只能高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。
中断嵌套结构类似与调用子程序嵌套,不同的是:
①子程序嵌套是在程序中事先按排好的;
中断嵌套是随机发生的。
②子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。
9、中断初始化
⑴设置堆栈指针SP
⑵定义中断优先级
⑶定义外中断触发方式
⑷开放中断
⑸安排好等待中断或中断发生前主程序应完成的操作内容。
10、中断服务主程序
中断服务子程序内容要求:
⑴在中断服务入口地址设置一条跳转指令,转移到中断服务程序的实际入口处。
⑵根据需要保护现场。
⑶中断源请求中断服务要求的操作。
⑷恢复现场。
与保护现场相对应,注意先进后出、后进先出操作原则。
⑸中断返回,最后一条指令必须是RETI。
11、流程图
三、电路设计
4、元件清单
1.从PROTEUS库中选取元件
①AT89C51:
单片机;
②RES、RX8、RESPACK-8:
电阻、8排阻、带公共端的排阻;
③7SEG-COM-AN-GRN:
带公共端共阳七段绿色数码管;
④CAP、CAP-ELEC:
电容、电解电容;
⑤CRYSTAL:
晶振;
⑥BUTTON:
按钮。
2.放置元器件
3.放置电源和地
4.连线
5.元器件属性设置
6.电气检测
四、源程序设计、生成目标代码文件
1、源程序设计
通过菜单“source→Add/RemoveSourceFiles…”新建源程序文件:
DZC34.ASM。
通过菜单“source→DZC34.ASM”,打开PROTEUS提供的文本编辑器SRCEDIT,在其中编辑源程序。
程序编辑好后,单击按钮
存入文件DZC34.ASM。
2、源程序编译汇编、生成目标代码文件
通过菜单“source→BuildAll”编译汇编源程序,生成目标代码文件。
若编译失败,可对程序进行修改调试直至汇编成功。
五、PROTEUS仿真
1.加载目标代码文件
2.全速仿真
单击按钮
,启动仿真。
(1)低优先级INT0中断主程序:
当主程序运行时,单片机控制与P0口相接的数码管循环显示1~8;
而P1、P2口的数码管不显示。
当前主程序控制P0口显示“5”的时刻单击“低优先级输入”按钮,触发INT0如图所示,INT0服务程序控制P2口依次显示1~8,当前显示“3”。
(2)高优先级INT1中断低优先级INT0;
在上一步的基础上,即主程序被INT0中断在P0口输出“8”,而在INT0服务程序在P2口输出“2”的时刻,单击“高优先级输入”按钮,触发高优先级INT1,所在INT0被中断在显示“3”,INT1服务程序控制P1口依次显示1~8。
六、源程序
ORG0
SJMPSTAR;
ORG0003H
SJMPINT0S;
ORG0013H
SJMPINT1S;
ORG0030H
STAR:
MOVIE,#85H;
MOVTCON,#05H;
MOVA,#0FEH;
MOVP3,#0FFH;
SETBPX1;
ST0:
MOVA,#01H;
ST1:
PUSHACC;
ACALLSEG7;
MOVP0,A;
ACALLDELAY;
POPACC;
INCA;
CJNEA,#09H,ST1;
SJMPST0;
INT0S:
MOVA,#0H;
LOOP:
INCA;
PUSHACC;
MOVP2,A;
CJNEA,#08H,LOOP;
MOVP2,#0FFH;
RETI;
INT1S:
LOOP1:
MOVP1,A;
CJNEA,#8,LOOP1;
MOVP1,#0FFH;
DELAY:
MOVR7,#250;
D1:
MOVR6,#250;
D2:
NOP;
NOP;
DJNZR6,D2;
DJNZR7,D1;
RET;
SEG7:
MOVCA,@A+PC;
RET;
DB0C0H,0F9H,0A4H,0B0H
DB99H,92H,82H,0F8H,80H
END
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机
![提示](https://static.bdocx.com/images/bang_tan.gif)