1、1. 硬件(1)74HC138译码电路如图所示,A15为1,E2、E3接地保证74HC138正常工作,此时、对应地址分别为8000H、9000H、0A000H.(2) 8259的片选地址为9000H,所以接8086有16位数据总线,其低8位作为偶存储体来传输数据,8086的A0要一直为0,所以8259的A0要接8086的A1IR2端输入中断请求信号,该信号由8253的方波信号产生(频率1Hz),所以8259的IR2端与8253的OUT1端相连。(3)74LS273的片选地址为8000H,且需要向其写入LED灯的状态,则和经或非门后接入CLK。(4)8253的片选地址为A000H,所以。CLK0
2、接入1MHz信号,GATE0与GATE1同时接电源,OUT0输入到CLK1,OUT1经分频输出1HZ的信号。2. 软件(1) 流程图(2)与8259A有关的设置1 8259A初始化(ICW)据要求(上升沿触发、单片、全嵌套、非缓冲、普通中断结束方式、需设置ICW4,中断类型号为80H87H),初始化:ICW1=13H(00010011B);写入偶地址端口9000HICW2=08H(00001000B);写入奇地址端口9002HICW4=01H(00000001B);2 中断屏蔽字(OCW1)(写入奇地址端口9002H)允许IR2中断 OCW1与0FBH(11111011B)相与禁止IR2中断
3、OCW1与04H(00000100B)相或3 中断结束字(OCW2)(写入偶地址端口9000H)OCW2=20H(00000010B)(3) 与8253有关的设置计数器0计数器11MH 计数器z1KHz1Hz1MHZ要分频为1HZ至少需要两个计数器。可考虑如下分频方式:计数器0选用工作方式3(方波),计数器0控制字为37H(00110111B)(写入控制寄存器端口0A006H);计数器0预置值为1000H,BCD计数。(写入计数器0端口地址0A000H)计数器1选用工作方式2(分频),计数器1控制字为75H(01110101B)(写入控制寄存器端口0A006H);计数器1预置值为1000H,B
4、CD计数。(写入计数器1端口地址0A002H)三源程序及注释CODE SEGMENT ;CODE逻辑段开始ASSUME CS:CODESTART: CLI ;关中断 ;8253A初始化 MOV DX,0A006H ;控制器地址0A006H MOV AL,37H ;计数器0选用工作方式3(方波) OUT DX,AL ;写计数器0工作方式 MOV DX,0A000H ;计数器0地址0A000H MOV AL,00H ;计数器0预置值为1000H OUT DX,AL MOV AL,10H MOV AL,75H ;计数器1选用工作方式2(分频)写计数器1工作方式 MOV DX,0A002H ;计数器1
5、地址0A002H计数器1预置值1000H8259初始化 MOV DX,9000H ;ICW1=13H(0001 0011B) MOV AL,13H MOV DX,9002H ;ICW2=80H(1000 0000B) MOV AL,80HICW3=01H(0000 0001B) MOV AL,01H非规装入地址向量 MOV AX,0 MOV DS,AX MOV BX,82H*4 MOV AX,OFFSET INTP MOV BX,AX INC BX MOV AX,SEG INTP MOV DX,9002H ;允许IRQ2中断 IN AL,DX AND AL,0FBH MOV DX,8000HL
6、ED灯初始化全灭 MOV BL,1 ;设置灯初始状况 MOV CX,8 ;设置中断次数为8 STI L1:MOV AL,82H ; Proteus中8086模型有问题,它取得的中断号是最后发到总线上的数据,并不是由8259发出的中断号 MOV DX,0B000H所以造成了要在这里执行EOI的假相,地址使用没有用过的,如b000h,8259的地址是9000h CMP CX,0 JZ QUIT JMP L1 ;等待中断QUIT:CLI ;禁止IRQ2中断 OR AL,4STI ;开中断 MOV CX,0FFFFHL: LOOP L ;为看到第8次中断结束后LED灯亮,需用延时8次中断结束,LED灯
7、全灭 JMP $INTP PROC ;中断服务子程序 MOV AL,BL ROL BL,1 DEC CX MOV DX,9000H MOV AL,20H ;发中断结束命令EOI IRET ;中断返回INTP ENDPCODE ENDS END START ;汇编结束四运行结果第一次来一个上升沿,申请中断一次,CPU响应后通过输出接口74LS273使发光二极管亮,第1次中断,LED0亮。以后每来一个上升沿,LED灯依次亮灭,直到计数到8为止。最后LED灯全灭五实验思考1.为什么程序退出后,8253仍在输出方波信号?8253的GATE0和GATE1仍接在电源上,而且8253的控制字没有重新写入,所以8253没能复位清零。2.如果要将8253复位,该如何修改程序?向控制寄存器重新写入控制字MOV DX,0A006H MOV AL,37H OUT DX,AL MOV AL,75H OUT DX,AL
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1