8259中断控制器作业 利用8255触发8259A的中断点亮LEDxWord格式文档下载.docx
《8259中断控制器作业 利用8255触发8259A的中断点亮LEDxWord格式文档下载.docx》由会员分享,可在线阅读,更多相关《8259中断控制器作业 利用8255触发8259A的中断点亮LEDxWord格式文档下载.docx(6页珍藏版)》请在冰豆网上搜索。
![8259中断控制器作业 利用8255触发8259A的中断点亮LEDxWord格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/4/ce0d71ef-8c23-466d-af07-8bd4e4c73a9e/ce0d71ef-8c23-466d-af07-8bd4e4c73a9e1.gif)
1、中断服务程序的主要功能是交替点亮和熄灭LED指示灯(即第1次进中断点亮LED,第2次进中断则熄灭LED)。
当然8255A能使用前需要在主程序中初始化。
2、主程序可以采样死等待的方式,如果要结束程序,可以按动实验平台的Reset键。
也可以采用计数的方法,即进中断5次后结束程序。
3、8255的PC6作为中断源,应采用上升沿触发方式(由低到高的变化),为了能够进行下次中断,PC6必须变为低点平。
4、为了能使LED的闪烁可见,在中断各申请之间加入延迟程序。
五、 流程图
-6-
‘
六、程序清单
.MODELSMALL
.386
CODESEGMENT
ASSUMECS:
CODESTART:
MOVDX,203H
MOVAL,10000000B ;
设置8255控制字
OUTDX,ALMOVCL,0CLI
;
写入中断屏蔽字OCW1时,采用读取-修改-写入的顺序
INAL,21H
ANDAL,11011111BOUT21H,AL
将中断入口地址写入中断向量表
PUSHDSMOVBX,0MOVDS,BX
LEAAX,CS:
INT_PROCMOVBX,5
MOVSI,30HADDSI,BXSALSI,2
MOVDS:
[SI],AXPUSHCS
POPAX
MOVDS;
[SI+2],AXPOPDS
STI ;
开386CPU中断
L1:
MOVAL,00001100BOUTDX,AL
CALLDELAYMOVDX,203H
MOVAL,00001101BOUTDX,AL
CALLDELAYJMPL1
INT_PROCPROCFAR
PUSHAXCMPBL,0JZL2
MOVDX,201H ;
PC0=1MOVAL,01
OUTDX,ALMOVBL,0JMPEXIT
L2:
MOVDX,201H ;
PC0=0MOVAL,00
OUTDX,ALMOVBL,1
EXIT:
MOVAL,20H
OUT20H,ALPOPAX
STIIRET
INT_PROCENDP
DELAY:
MOVCX,0FFFFHL3:
LOOPL3
RETCODEENDSENDSTART
8259-2:
利用8259A中断次数不同使得
8253产生不同波形
通过按键PLUS的按下,统计8259中断次数,比如按5次8253产生方波,按10次
8253产生窄脉冲周期波形。
三、 接线图
四、 流程图
连线图
五、 程序清单
CODESEGMENTSTART:
MOVDX,203H
MOVAL,36H ;
8253初始化,计数器0,方式3,00110110BOUTDX,AL
MOVCX,0 ;
CX初始计0MOVBX,0
CLI
INAL,21H ;
设置屏蔽字,IR5开放
INTRMOVBX,05HMOVSI,30HADDSI,BX
SALSI,2
开程序中断WAITING:
JMPWAITING
INTR:
;
中断服务程序PUSHAX
PUSHDXCLI
CMPCX,5
JGEL1 ;
CX大于等于5跳转L1INCCX
JMPL3
CMPCX,10 ;
CX大于等于10则跳转L2JGEL2
MOVDX,200H ;
输出方波MOVAL,00000100B
OUTDX,ALINCCXJMPL3
MOVDX,203H ;
输出窄脉冲周期波形MOVAL,01111000B
OUTDX,ALMOVDX,201H
MOVAL,00000100BOUTDX,AL
INCCX
L3:
MOVAL,20HOUT20H,ALSTI
POPDXPOPAXIRET
CODEENDSENDSTART