微机课件接口第9章new

上传人:E**** 文档编号:91041355 上传时间:2019-06-21 格式:PPT 页数:25 大小:497KB
返回 下载 相关 举报
微机课件接口第9章new_第1页
第1页 / 共25页
微机课件接口第9章new_第2页
第2页 / 共25页
微机课件接口第9章new_第3页
第3页 / 共25页
微机课件接口第9章new_第4页
第4页 / 共25页
微机课件接口第9章new_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《微机课件接口第9章new》由会员分享,可在线阅读,更多相关《微机课件接口第9章new(25页珍藏版)》请在金锄头文库上搜索。

1、应用背景 在许多应用中,需要每隔一定时间完成一次预定的操作定时操作。如定时数据采集、定时显示、定时键盘扫描等,而采用定时中断技术实现这种操作具有实时性好、占用CPU资源较少的特点。,9.7 实模式定时中断程序设计,一、定时中断程序的设计方法 1.定时中断源的选择 系统8254 0#计数器, 外扩8254作为定时中断源,2.确定中断服务程序的类型 中断类型由定时中断源接入8259A的中断引脚IRx有关。 如果中断源是外扩定时器,由从8259A的IR1引脚引入,则服务程序应定义为0AH或71H型。 如果中断源是系统8254的0#计数器,并且定时周期是55ms的整数倍,则定义用户服务程序为1CH型,

2、取代系统的1CH型服务程序。 如果中断源是系统8254的0计数器,但定时周期55ms的整数倍,则应重新对8254 0计数器进行初始化。,定时周期不等于55ms整数倍的处理框图,3.置换中断向量 服务程序的类型确定之后,应置换相应的中断 向量(使用INT21H的25H和35H子功能)。 4.开放8259A中断,从系统硬件中断的结构图可知: 用户中断要经过从8259A、主8259A两级中断控制器的管理,为了使用户中断请求送到CPU,应将从8259A的IMR的D1位置0,主8259A的IMR的D2位置0,从而打通用户中断请求的通道。,一般说,各种型号的主机板对日时钟中断都是开放 的,用户不必再采取措

3、施。,5 .避免“DOS重入”,“DOS 重入”示意图,: : : INT21H,现行程序,21H型服务程序 : : IRET,有中断请求,: : INT 21H,DOS不允许重入,6中断服务程序的执行时间 必须远远小于定时中断的时间间隔,7. 中断结束向8259A发中断结束命令,定时中断周期T1,服务程序执行时间,IRX,T2 T1,T2,二.定时中断程序结构,之一,主程序,关中断 *中断源初始化 置换中断向量 其他准备工作 开中断,等待中断,* 恢复系统资源 恢复中断向量 返回DOS,服务程序,保护现场,定时时间到?,执行定时操作,向8259A送结束命令 恢复现场 IRET,Y,N,避免D

4、OS 重入,特点:服务程序 直接进行定时操作,* 表示视具体情况而定,程序结束前,之二,主程序,关中断 * 中断源初始化 置换中断向量 其他准备工作 开中断,* 恢复系统资源 恢复中断向量 返回DOS,保护现场,定时时间到?,设置“时间到”标志,向8259A送结束命令 恢复现场 IRET,Y,N,“时间到”标志可利用数据段某单元或某个空闲寄存器,特点:服务程序不直接进行定时操作,而是建立“时间到”标志。由主程序判断时间到标志再进行定时操作。,* 表示视具体情况而定,其它操作,有无“时间到”标志?,执行定时操作,Y,N,程序是否需要结束?,N,Y,服务程序,三定时中断程序举例,【例9.8.1】1

5、CH型中断的应用 假设微机系统外扩了共阴级数码管电路(见下页),要求使用系统定时源并采用中断方式每隔一秒完成一次8字左移,循环往复,直到主机键盘按下任意键时停止。,a,b,c,d,e,f,g,h,共阴级数码管结构,h,a,b,c,d,e,f,g,h,8位锁存器(位选),(200H选中),D0,D1,D2,D3,D4,D5,D6,D7,D0-D7,8位锁存器(段选),(201H选中),D0,D7,D6,D5,D4,D3,D2,D1,a,b,c,d,e,f,g,h,CS,CS,(反相输出),COM,COM,COM,COM,COM,COM,数码管显示原理 使用段选码和位选码进行控制。 段选码:显示什

6、么字符。6个数码管的同名段共享连接,即D0-a;D1-b;D6-g;D7-h 。显示字符“8”的段选码是7FH。 位选码:选择被点亮的LED(仅D5-D0有效)。 点亮右边第1个LED,位选码为00100000B 点亮右边第2个LED,位选码为00010000B : : 点亮左边第1个LED,位选码为00000001B,设计思路 主要解决四个问题: (1)字符“8”的显示控制问题,包括段选码和位选码; (2)定时时间间隔1秒钟如何实现; (3)每隔一秒钟“8”如何左移一位显示; (4)显示过程如何结束,MOV DX,201H MOV AL,7FH ;“8”段码 OUT DX, AL MOV D

7、X,200H MOV AL,Origin ;位码 OUT DX, AL,SHR Origin,1 :,SCAN:MOV AL,1 INT 16H JZ SCAN 结束准备,定时程序由主程序和1CH型中断程序组成,主程序,图9-18 【例9.8.1】程序框图,关中断 转移系统的1CH型中断向量 写入用户的1CH型中断向量 第6位数码管显示“8”字符 开中断,有键入?,N,恢复系统的1CH型中断向量 返回DOS,Y,SCAN:MOV AH,1 INT 16H JZ SCAN,CALL RESET MOV AH,4CH INT 21H,1CH型中断服务程序,保护现场 重新定义用户数据段 中断计数,满

8、18次?,18中断计数单元 ”8”字左移一位,Y,N,恢复现场 中断返回,【程序清单】 ;FILENAME:891.ASM .486 DATA SEGMENT USE16 ;数据段定义 OLD1C DD ? ICOUNT DB 18 ;中断计数初值 ORIGIN DB 20H ;数码管位选初值 DATA ENDS CODE SEGMENT USE16 ;代码段 ASSUME CS:CODE,DS:DATA START: MOV AX, DATA ;DS段赋值 MOV DS, AX CLI ;关中断 CALL READ1C CALL WRITE1C MOV DX,201H MOV AL,7FH

9、OUT DX, AL ;输出“8”的字型码 MOV DX,200H MOV AL,ORIGIN OUT DX, AL ;定位显示 STI ;开中断,SCAN: MOV AH,1 INT 16H ;有键入? JZ SCAN ;否,转移 CALL RESET MOV AH,4CH ;返回DOS INT 21H ;-以下为中断服务程序 - SERVICE PROC PUSHA ;保护现场 PUSH DS MOV AX,DATA ;注意:重新给DS赋值。 MOV DS, AX DEC ICOUNT ;中断计数 JNZ EXIT ;不满18次转移 MOV ICOUNT,18 ;满18次,重新赋计数初值,

10、SHR ORIGIN,1 JNC NEXT ;没有显示到最左端,转移 MOV ORIGIN, 20H ;已显示到最左端,重新赋初值 NEXT: MOV AL,ORIGIN MOV DX,200H OUT DX, AL ;“8”字左移一位 EXIT: POP DS POPA ;注意:不需给8259A送中断结束命令。 IRET ;返回系统8型中断服务程序 SERVICE ENDP ;- READ1C PROC ;转移系统1CH型中断向量 MOV AX,351CH INT 21H MOV WORD PTR OLD1C,BX MOV WORD PTR OLD1C+2,ES RET READ1C END

11、P,;- WRITE1C PROC ;写入用户1CH型中断向量 PUSH DS MOV AX,CODE MOV DS, AX MOV DX,OFFSET SERVICE MOV AX,251CH INT 21H POP DS RET WRITE1C ENDP ;- RESET PROC ;恢复系统1CH型中断向量 MOV DX,WORD PTR OLD1C ;注意:给DX和DS赋值不能颠倒 MOV DS,WORD PTR OLD1C+2 MOV AX,251CH INT 21H RET RESET ENDP CODE ENDS END START,CLI ;关中断 CALL READ1C ;转

12、移系统1CH型中断向量 CALL WRITE1C ;写入用户1CH型中断向量 MOV DX,201H ;段选码端口地址 MOV AL,7FH ;”8”的字型码 OUT DX, AL ;输出段码 MOV DX,200H ;位选码端口地址 MOV AL,ORIGIN ;右边第1个数码管显示的位置码 OUT DX, AL ;输出位码,显示“8”字符 STI ;开中断,READ1C PROC ;转移系统1CH型中断向量 MOV AX,351CH INT 21H MOV WORD PTR OLD1C,BX MOV WORD PTR OLD1C+2,ES RET READ1C ENDP ;- WRITE1

13、C PROC ;写入用户1CH型中断向量 PUSH DS MOV AX,CODE MOV DS, AX MOV DX,OFFSET SERVICE MOV AX,251CH INT 21H POP DS RET WRITE1C ENDP,定时间隔1秒钟的实现,因为系统定时器每隔55ms产生一次日时钟中断,中断18次为990ms,接近1秒钟。还由于日时钟中断每次都要调用1CH型中断,因此用户可以设计新的1CH型中断服务程序,对日时钟中断进行计数,计满18次完成一次8字左移,SERVICE PROC PUSHA ;保护现场 PUSH DS MOV AX,DATA ;重新给DS赋值 MOV DS, AX DEC ICOUNT ;中断计数 JNZ EXIT ;不满18次转移 MOV ICOUNT,18 ;满18次,重新赋计数初值 SHR ORIGIN,1 JNC NEXT ;没有显示到最左端,转移 MOV ORIGIN, 20H ;已显示到最左端,重新赋初值 NEXT: MOV AL,ORIGIN MOV DX,200H OUT DX, AL ;“8”字左移一位 EXIT: POP DS POPA IRET ;返回系统8型中断服务程序 SERVICE ENDP,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号