《教学课件微机原理(第2版)4.4中断程序设计ppt(全).pptx》由会员分享,可在线阅读,更多相关《教学课件微机原理(第2版)4.4中断程序设计ppt(全).pptx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、教学课件微机原理(第2版)4.4中断程序设计22.3存储器结构与地址空间学习内容:中断程序设计目标:掌握汇编语言设计中断程序第4章中断系统35.4中断程序设计4.4.1中断初始化第5章中断系统中断初始化:对中断相关SFR(TCON、SCON、IE和IP)的设置,使得MCU的中断系统按照设置要求对中断源进行管理和控制。中断初始化主要包括以下操作:设置CPU中断控制位,选择CPU中断的允许或禁止;设置各中断源的中断控制位,选择各中断源中断的允许或禁止;设置各中断源的中断优先级别,选择高优先级或低优先级;设置外部中断请求的触发方式;对相关中断源的初始化(如定时器/计数器或串行口的初始化)。65.4中
2、断程序设计4.4.2中断程序设计方法第5章中断系统1.保护现场和恢复现场中断服务程序的保护现场和恢复现场的方法,与子程序类似(3种方法)若要在执行当前中断程序时禁止高优先级的中断(即不允许中断嵌套),则在进入中断程序后先关闭CPU中断(令EA=0),或将高级中断源的中断允许位清0,在中断返回前再予以开放。2.中断程序的安排各中断入口地址之间只间隔8个字节,一般的中断服务程序容纳不下最常用的方法:在中断入口地址处安排一条无条件转移指令,使程序跳转到用户安排的中断服务程序的存放区。中断服务程序的设计原则是执行时间尽量短85.4中断程序设计4.4.2中断程序设计方法第5章中断系统例:假设程序中有2个
3、中断源:外部中断0和定时器T1,则程序结构为:ORG0000HLJMPMAIN;跳转到主程序ORG0003H;INT0中断入口地址LJMPINT0SUB;跳转到实际INT0中断服务程序存放空间ORG001BH;T1中断入口地址LJMPT1SUB;跳转到实际T1中断服务程序存放空间ORG 0030H ;实际主程序存放区MAIN:MOVSP,#5FH;设置堆栈区:SETBIT0;选择INT0为下降沿触发方式SETBEA;CPU开中断SETBEX0;INT0开中断SETBET1;T1开中断SETBPX0;设置INT0为高优先级SJMP$;模拟主程序例:假设程序中有2个中断源:外部中断0和定时器T1,
4、则程序结构为:105.4中断程序设计4.4.2中断程序设计方法第5章中断系统例:假设程序中有2个中断源:外部中断0和定时器T1,则程序结构为:ORG 0800H ;INT0中断服务程序存放区INT0SUB:PUSHACCPUSHPSWPOPPSWPOPACCRETI;中断返回T1SUB:PUSHACC;定时器T1中断服务程序PUSHPSWPOPPSWPOPACCRETI;中断返回125.4中断程序设计4.4.4中断程序设计举例第5章中断系统例5-1:试编写程序,将外部RAM3000H开始的20H个单元的数据,传送到内部RAM40H开始的20个单元中。允许外部中断INT0,下降沿触发。汇编程序:
5、ORG0000HLJMPMAINORG0003HLJMPINT0SUBORG0040HMAIN:MOVSP,#6FH;更改堆栈区域SETBEA;CPU中断允许SETBEX0;INT0中断允许SETBIT0;下降沿触发LOOP2:MOVDPTR,#3000H;外部数据存储器地址指针MOVR0,#40H;内部数据存储器地址指针MOVR2,#20H;传送的数据个数LOOP1:MOVXA,DPTRMOVR0,AINCR0INCDPTRDJNZR2,LOOP1SJMP$165.4中断程序设计4.4.4中断程序设计举例第5章中断系统ORG1000HINT0SUB:PUSHACCPUSHDPHPUSHDPL
6、PUSHPSWSETBRS0;修改工作寄存器组,中断程序中用1组的R0-R7;假设中断程序要用到A、DPTR、R0-R7,以及PSW汇编程序:引入中断flashCLRRS0;恢复主程序使用的0组工作寄存器POPPSWPOPDPLPOPDPHPOPACCRETIEND185.4中断程序设计4.4.5利用I/O端口扩展外部中断源第5章中断系统将4个按键(外部中断源)连接到一个4“与门”的输入端,当其中一个或几个按键按下时,“与门”输出从高电平变为低电平,该下降沿触发MCU的INT0。在中断服务程序中,按程序设置的顺序查询4条I/O口线的状态,确定本次是哪个按键按下引起的中断,然后进行相应的按键处理
7、。195.4中断程序设计4.4.5利用I/O端口扩展外部中断源第5章中断系统INT0中断程序(汇编):ORG0003HLJMPMAINORG0003HLJMP INTRP0ORG0100HMAIN:SETBEASETBEX0SETBIT0CLR KEYFLAG;按键标志清0LOOP:JNBKEYFLAG,LOOPCLRKEYFLAGJNBP1.0,M1;判断是否M1键按下,按下则转移JNBP1.1,M2;判断是否M2键按下,按下则转移JNBP1.2,M3;判断是否M3键按下,按下则转移JNBP1.3,M4;判断是否M4键按下,按下则转移SJMP LOOP;都没有按下,继续查询225.4中断程序设计4.4.5利用I/O端口扩展外部中断源第5章中断系统INT0中断程序(汇编):M1:;M1键处理程序SJMP LOOPM2:;M2键处理程序SJMP LOOPM3:;M3键处理程序SJMP LOOPM4:;M4键处理程序SJMP LOOPORG1000H;中断程序尽量短INTRP0:SETBKEYFLAGRETI