《微机原理与接口技术》实验报告书专业班级网104班学号109074姓名指导教师高云全安徽工业大学计算机学院实验一 8255A应用—数码管动态显示一、实验目的1、掌握8255A的工作方式、编程原理和微机接口方法。
2、了解LED数码管动态显示的工作原理及编程方法。
二、实验内容编制程序,使数码管显示“DICE88”字样。
三、实验程序框图图6-1 实验程序流程图四、实验步骤联机模式:(1)在PC机和实验系统联机状态下,运行实验系统dj8086k.exe(双击桌面OTA图标或通过开始-程序-dj8086k-DJ8086k微机原理与接口技术),新建文件并在编辑窗口输入汇编源程序,再单击工具栏中编译装载,即可完成源文件自动编译、装载目标代码功能,再单击“调试”中“连续运行”或工具图标运行,即开始运行程序。
(2)数码管显示“DICE88”字样。
脱机模式:(1)在P.态下,通过单板机小键盘,从2DF0地址开始输入机器码(参见附录三),完成后返回监控,输入起始地址2DF0,再按EX键执行。
(2)数码管显示“DICE88”字样。
五、实验程序清单CODE SEGMENT ; display "DICE88"ASSUME CS:CODEORG 2DF0HSTART: JMP START0PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口BUF DB ?,?,?,?,?,?data1:db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1hdb 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH,0F0H START0: CALL BUF1CON1: CALL DISPJMP CON1DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALINC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,0DH ;实验修改 mov buf,0ah MOV BUF+1,01HMOV BUF+2,0CHMOV BUF+3,0EHMOV BUF+4,08H ;实验修改mov buf+4,00hMOV BUF+5,08H ;实验修改mov,buf+5,09hRETCODE ENDSEND START六、思考题:修改程序使之可以显示其他字符,如“AHUt09”。
实验二 8259单级中断控制器实验一、实验目的1.掌握8259中断控制器的接口方法。
2.掌握8259中断控制器的应用编程。
二、实验内容利用8259实现对外部中断的响应和处理,要求程序对每次中断进行计数,并将计数结果送数码显示。
三、实验接线图图6-2 实验二接线图四、编程指南⑴8259芯片介绍中断控制器8259A是专为控制优先级中断而设计的芯片。
它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中。
因此无需附加任何电路,只需对8259A进行编程,就可以管理8级中断,并选择优先模式和中断请求方式。
即中断结构可以由用户编程来设定。
同时,在不需要增加其它电路的情况下,通过多片8259A的级联,能构成多达64级的矢量中断系统。
⑵本实验中使用3号中断源IR3,“”插孔和IR3相连,中断方式为边沿触发方式,每拨1次AN开关产生一次中断,满5次中断,显示“good”。
如果中断源电平信号不符合规定要求,则自动转到7号中断,显示“Err”。
五、实验程序框图图6-3 主程序流程图6-4 IR3中断服务程序流程IR3中断服务程序:IR7中断服务程序:图6-5 IR7中断服务流程六、实验步骤1、按图6-2连好实验线路图。
⑴8259的INT连8088的INTR;⑵8259的INTA连8088的INTA;⑶“”插孔和8259的3号中断IR3插孔相连,“”端初始为低电平;⑷8259的CS端接FF80H孔。
2、输入并运行实验程序,系统显示8259-1。
3、按动AN开关按钮,按满5次显示good。
七、实验程序清单CODE SEGMENT ;ASSUME CS: CODEINTPORT1 EQU 0FF80HINTPORT2 EQU 0FF81HINTQ3 EQU INTREEUP3INTQ7 EQU INTREEUP7PA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口ORG 12D0HSTART: JMP START0BUF DB ?,?,?,?,?,?intcnt db ?data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: CLDCALL BUF1CALL WRINTVER ;WRITE INTRRUPTMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV intcnt,01H ;TIME=1STIWATING: CALL DISP ;DISP 8259-1JMP WATINGWRINTVER: MOV AX,0HMOV ES,AXMOV DI,002CHLEA AX,INTQ3STOSWMOV AX,0000hSTOSWMOV DI,003CHLEA AX,INTQ7STOSWMOV AX,0000hSTOSWRETINTREEUP3: CLIpush axpush bxpush cxpush dxMOV AL,INTCNTCALL CONVERSMOV BX,OFFSET BUF ;077BHMOV AL,10HMOV CX,05HINTRE0: MOV [BX],ALINC BXLOOP INTRE0MOV AL,20HMOV DX,INTPORT1OUT DX,ALADD INTCNT,01HCMP INTCNT,06HJNA INTRE2CALL BUF2 ;DISP:goodINTRE1: CALL DISPJMP INTRE1CONVERS: AND AL,0FHMOV BX,offset buf ;077AHMOV [BX+5],ALRETINTRE2: MOV AL,20HMOV DX,INTPORT1OUT DX,ALpop dxpop cxpop bxpop axSTIIRETINTREEUP7: CLIMOV AL,20HMOV DX,INTPORT1OUT DX,ALcall buf3 ;disp:errINTRE3: CALL DISPJMP INTRE3DISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;20H ;显示子程序 ,5msMOV BX,OFFSET BUFDIS1: MOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,08HMOV BUF+1,02HMOV BUF+2,05HMOV BUF+3,09HMOV BUF+4,17HMOV BUF+5,01HRETBUF2: MOV BUF,09HMOV BUF+1,00HMOV BUF+2,00HMOV BUF+3,0dHMOV BUF+4,10HMOV BUF+5,10HRETBUF3: MOV BUF,0eHMOV BUF+1,18HMOV BUF+2,18HMOV BUF+3,10HMOV BUF+4,10HMOV BUF+5,10HRETCODE ENDSEND START八、思考题:若用IR0产生中断,要求修改硬件和软件并调试,修改位置实验三 8253、8255、8259综合实验1.8253计数器实验要求:计数器1方式0计数,计满3个数产生中断,中断5次后结束。
实验线路见图6-6:图6-6 8253计数器实验电路图实验程序:INTPORT1 EQU 0FF80HINTPORT2 EQU 0FF81HINTQ3 EQU INTREEUP3TCONTR0 EQU 0043HTCON1 EQU 0041HPA EQU 0FF20H ;字位口PB EQU 0FF21H ;字形口PC EQU 0FF22H ;键入口code segmentassume cs:codeORG 12D0HSTART: JMP START0BUF DB ?,?,?,?,?,?intcnt db ?data1 db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h db 0a1h,86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FHSTART0: CLDCALL BUF1CALL WRINTVER ;WRITE INTRRUPTMOV AL,13HMOV DX,INTPORT1OUT DX,ALMOV AL,08HMOV DX,INTPORT2OUT DX,ALMOV AL,09HOUT DX,ALMOV AL,0F7HOUT DX,ALMOV intcnt,01H ;TIME=1MOV DX,TCONTR0MOV AL,51HOUT DX,ALMOV DX,TCON1MOV AL,03OUT DX,ALMOV DX,0FF23HMOV AL,80OUT DX,ALSTIWATING: CALL DISP ;DISP 825359JMP WATINGWRINTVER: MOV AX,0HMOV ES,AXMOV DI,002CHLEA AX,INTQ3STOSWMOV AX,0000hSTOSWRETINTREEUP3: push axpush bxpush cxpush dxMOV DX,TCON1MOV AL,03OUT DX,ALMOV AL,INTCNTCALL CONVERSMOV BX,OFFSET BUFMOV AL,10HMOV CX,05HINTRE0: MOV [BX],ALINC BXLOOP INTRE0ADD INTCNT,01HCMP INTCNT,06HJNA INTRE2CALL BUF2 ;DISP:good INTRE1: CALL DISPJMP INTRE1CONVERS: AND AL,0FHMOV BX,offset bufMOV [BX+5],ALRETINTRE2: MOV AL,20HMOV DX,INTPORT1OUT DX,ALpop dxpop cxpop bxpop axIRETDISP: MOV AL,0FFH ;00HMOV DX,PAOUT DX,ALMOV CL,0DFH ;20HMOV BX,OFFSET BUFDIS1: MOV DX,PCOUT DX,ALMOV AL,[BX]MOV AH,00HPUSH BXMOV BX,OFFSET DATA1ADD BX,AXMOV AL,[BX]POP BXMOV DX,PBOUT DX,ALMOV AL,CLMOV DX,PAOUT DX,ALPUSH CXDIS2: MOV CX,00A0HLOOP $POP CXCMP CL,0FEH ;01HJZ LX1INC BXROR CL,1 ;SHR CL,1JMP DIS1LX1: MOV AL,0FFHMOV DX,PBOUT DX,ALRETBUF1: MOV BUF,08HMOV BUF+1,02HMOV BUF+2,05HMOV BUF+3,03HMOV BUF+4,05HMOV BUF+5,09HRETBUF2: MOV BUF,09HMOV BUF+1,00HMOV BUF+2,00HMOV BUF+3,0dHMOV BUF+4,10HMOV BUF+5,10HRETCODE ENDSEND START要求做的改变:换成计数器0,计满11次后产生中断2、8253定时器实验要求:用8253定时器1通道定时,每隔1秒使PA口的指示灯的状态右移一位。