1、 实验十 可编程8255方式1一、实验目的1、掌握8255工作方式时的使用及编程。2、进一步掌握中断处理程序的编写。二、实验设备TPC-USB实验系统(块USB总线接口模块、一个扩展实验台及软件集成实验环境)三、实验原理与内容1、按图10-1,8255方式1的输出电路连好线路。2、编程:每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0L7依次发光,中断次结束。3、按图 10-2,8255 方式 1 输入电路,连好线路。图 10-1 输出电路图 10-2 输入电路4、编程:每按一次单
2、脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的 ASCII 码,在屏幕上显示其对应的字符,中断次结束。四、参考流程图(如图 10-3、图 10-4)五、汇编程序参考程序: code segmentassume cs:codestart:mov ax,csmov ds,axmov dx,offset int_procmov ax,250bh ;设外部中断int_proc类型号为0BHint 21hmov dx,21h ;中断屏蔽寄存器in al,dxand al,0f7h ;开放IRQ3中断out dx,almov dx,28bh ;控制字端口
3、1010001011mov al,0a0h ;置8255为A口方式1输出10100000out dx,almov al,0dh ;将PC6置位00001101out dx,almov bl,1ll: jmp ll ;循环等待int_proc:mov al,blmov dx,288h ;将AL从8255的A口输出1010001000out dx,almov al,20hout 20h,al ;中断结束命令EOI(用20h表示)shl bl,1jnc next ;CF=0,中断次数小于8,返回主程序in al,21hor al,08h ;关闭IRQ3中断out 21h,alsti ;开中断mov
4、ah,4ch ;返回DOSint 21hnext: iretcode endsend start参考程序:mov ax,250bhint 21hmov dx,21hin al,dx ;设置IRQ3中断矢量and al,0f7h ;开放IRQ3中断out dx,almov dx,28bh ;控制端口mov al,0b8h ;设8255为A口方式1输入10111000out dx,almov al,09h ;将PC4置位00000100out dx,almov bl,8 ;BL为中断次数计数器sss: jmp sssint_proc: ;中断服务程序mov dx,288h ;自8255A口输入一数据in al,dxmov dl,al ;将所输入的数据保存到DLmov ah,02h ;显示ASCII码为DL的字符int 21hmov dl,0dh ;回车int 21hmov dl,0ah ;换行int 21hmov dx,20h ;发出EOI结束命令mov al,20hout dx,aldec bl ;计数器减1jnz next ;不为0则返回主程序in al,21hor al,08hout 21h,al ;关IRQ3中断sti ;mov ah,4ch ;返回DOSint 21hnext: iretcode endsend start