资源描述:
《8255方式一输入输出(中断)new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、8255方式一输入输出————中断方式实验说明8255方式一输出(中断)每按一次单脉冲按钮发出一个脉冲,向8255送一个信号,信号的上升沿使8255引脚INTRA=H(有效),向8259提出一次中断请求。8259接到中断请求后,如果该请求不屏蔽,则进行优先权裁决,并提供中断类型号,让CPU转到中断服务程序,进行一次中断服务(输出、点亮发光二极管L0-L7)。服务完毕,再返回被打断的主程序继续执行。下图为中断输出完整硬件图CPU8255DBABCBD0~D7nRDnWRA1A0RESETnCSnIORnIOWPA7~PA0
2、PC(ACK)PC3(INTA)8259nRDnWRnCSA0IR3INTnINTAINTR288HA0D0~D7接CPU总线槽里的数据线D0~D720H21HnINTA8255输出程序清单codesegmentassumecs:codestart:movax,csmovds,axmovdx,offsetint_procmovax,250bh;设外部中断int_proc类型号为0BHint21hmovdx,21hinal,dxandal,0f7h;开放IRQ3中断outdx,almovdx,28bh;置8255为A口方式
3、1输出moval,0a0houtdx,almoval,0dh;将PC6置位outdx,almovbl,1ll:jmpll;循环等待int_proc:moval,blmovdx,288h;将AL从8255的A口输出outdx,almoval,20hout20h,alshlbl,1jncnext;中断次数小于8,返回主程序inal,21horal,08h;关闭IRQ7中断out21h,alsti;开中断movah,4ch;返回DOSint21hnext:iretcodeendsendstart8255方式一输入(中断)每按一
4、次单脉冲按钮发出一个脉冲,向8255送一个STB信号,该信号的上升沿使引脚INTRA=H(有效),向8259提出一次中断请求。8259接到中断请求后,如果该请求不屏蔽,则进行优先权裁决,并提供中断类型号,让CPU转到中断服务程序,进行一次中断服务(输入,读K0-K7)。服务完毕,再返回被打断的主程序继续执行。下图为中断输入完整硬件图CPUDBABCBD0~D7nIORnIOW8255nRDnWRA1A0RESETnCSPA0~PA7PC4(STB)PC3(INTA)8255nRDnWRnCSA0IRQ3INTnINTAD
5、0~D7接CPU总线槽里的数据线D0~D7288H20H21HA08255输入8255方式一输入codesegmentassumecs:codestart:movax,csmovds,axmovdx,offsetint_proc;设置IRQ3中断矢量movax,250bhint21hmovdx,21hinal,dxandal,0f7h;开放IRQ3中断outdx,almovdx,28bh;设8255为A口方式1输入moval,0b8houtdx,almoval,09h;将PC4置位outdx,almovbl,8;BL为中
6、断次数计数器ll:jmpllint_proc:;中断服务程序movdx,288h;自8255A口输入一数据inal,dxmovdl,al;将所输入的数据保存到DLmovah,02h;显示ASCII码为DL的字符int21hmovdl,0dh;回车movah,02hint21hmovdl,0ah;换行movah,02hint21hmovdx,20h;发出EOI结束命令moval,20houtdx,aldecbl;计数器减1jnznext;不为0则返回主程序inal,21horal,08hout21h,al;关IRQ3中断s
7、ti;开中断movah,4ch;返回DOSint21hnext:iretcodeendsendstart