微型计算机接口技术实验报告
- 格式:doc
- 大小:447.00 KB
- 文档页数:29
《微型计算机接口技术》实验报告实验室:S318学院:计算机科学与技术专业:计算机科学与技术姓名:实验时间:第7周星期一7 - 8节第9周星期五7 - 8节第11周星期四1 - 2节第13周星期四9 -10节●实验时间(第x周第XX节)、地点、学生姓名、学生学号、班级、指导教师●(比如:循环程序设计)●实验内容(具体实验题目)●实验程序清单●运行结果●实验中遇到的问题及解决方案●实验心得体会实验一、PCI总线中断应用一、实验题目PCI总线中断应用二、实验内容1.【示例】编写一实验程序,利用实验装置提供的中断源,完成每按动一次脉冲开关,产生一次中断,向显示器输出字符“7”。
2.修改示例程序,控制中断响应次数为10次,即当第11次以后按动脉冲开关,屏幕上不再显示“7”。
三、程序清单;先执行PCI_BIOS.EXE,获得PCI板卡申请的第一个I/O空间的首地址及;中断号,修改下面CPU访问PCI操作寄存器的端口地址。
;由中断号确定相应中断向量及OCW1、OCW2命令字。
INTCSR_BYTE0 EQU 9438H ;修改PCI操作寄存器的端口地址INTCSR_BYTE1 EQU 9439HINTCSR_BYTE2 EQU 943AHINTCSR_BYTE3 EQU 943BHIMB4_BYTE3 EQU 941FHDATA SEGMENTCSBAK DW ?IPBAK DW ?MKBAK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AX;初始化PCI寄存器MOV DX,INTCSR_BYTE0MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,AL;保存和替换中断入口地址MOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4,根据中断号修改 MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSW;保存中断屏蔽字寄存器内容IN AL,0A1HMOV MKBAK,ALAND AL,0F7H ;打开中断屏蔽位,根据中断号修改 OUT 0A1H,ALSTI;等待A1: NOPCALL BREAKJMP A1;========中断服务程序===========MYINT: PUSH DSPUSH AXPUSH DX;清PCI板中断标志MOV DX,IMB4_BYTE3IN AL,DXMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,AL;清8259中断标志MOV AL,63H ;根据中断号修改OUT 0A0H,ALMOV AL,62HOUT 20H,AL;显示字符‘7’MOV AH,0EHMOV AL,37HINT 10HPOP DXPOP AXPOP DSIRET;检测是否有键按下程序BREAK PROC NEARPUSH DSMOV AH,06HMOV DL,0FFHINT 21HJE RETURNPOP DSCLI;恢复中断屏蔽命令字MOV AL,MKBAKOUT 0A1H,AL;恢复中断入口地址MOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4,根据中断号修改 MOV AX,IPBAKCLDSTOSWMOV AX,CSBAKSTOSWMOV DX,INTCSR_BYTE1MOV AL,00HOUT DX,ALSTIMOV AX,4C00HINT 21HRETURN:POP DSRETBREAK ENDPCODE ENDSEND START四、运行结果(1)每按动一次脉冲开关,产生一次中断,向显示器输出字符“7”(2)每按动一次脉冲开关,产生一次中断,向显示器输出字符“7”,控制中断响应次数为10次,即当第11次以后按动脉冲开关,屏幕上不再显示“7”。
五、遇到的问题及解决方案对于DOS环境下编译、连接、下载程序的操作不是很熟悉,还好有实验操作步骤,但是还是导致了多次重启计算机。
六、心得体会掌握了使用PCI中断的方法,进一步了解了操作PCI设备I/O端口的方法。
掌握了8259中断控制器的工作原理、编程方法以及PC机如何通过8259A实现对外部可屏蔽硬件中断源的管理,掌握了一般中断服务程序的设计方法。
实验二、8254定时/计数器应用一、实验题目8254定时/计数器应用二、实验内容1.计数应用实验:编写程序,应用8254的计数功能,用开关模拟计数。
使每当按动开关KK1五次后,产生中断,并在屏幕上显示一个字符“M”。
2.定时应用:自己编写程序,应用8254的定时功能,将屏幕设计为一个秒表。
3.电子发声:自己编写程序让实验装置上的扬声器和PC机上的扬声器唱歌。
三、程序清单1.MY8254_COUNT0 EQU 9C40H ;修改端口地址MY8254_COUNT1 EQU 9C41HMY8254_COUNT2 EQU 9C42HMY8254_MODE EQU 9C43HINTCSR_BYTE0 EQU 9438HINTCSR_BYTE1 EQU 9439HINTCSR_BYTE2 EQU 943AHINTCSR_BYTE3 EQU 943BHIMB4_BYTE3 EQU 941FHDATA SEGMENTCSBAK DW ?IPBAK DW ?MKBAK DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: CLIMOV AX,DATAMOV DS,AXMOV DX,INTCSR_BYTE0MOV AL,00HOUT DX,ALMOV DX,INTCSR_BYTE1MOV AL,1FHOUT DX,ALMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV DX,INTCSR_BYTE3MOV AL,00HOUT DX,ALMOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4,,根据中断号修改MOV AX,ES:[DI]MOV IPBAK,AX ;IPMOV AX,OFFSET MYINTCLDSTOSWMOV AX,ES:[DI] ;CSMOV CSBAK,AXMOV AX,SEG MYINTSTOSWIN AL,0A1HMOV MKBAK,ALAND AL,0F7H ;打开中断屏蔽位,根据中断号修改OUT 0A1H,ALSTIMOV DX,MY8254_MODE ;CLK=KK1MOV AL,17HOUT DX,ALMOV DX,MY8254_COUNT0MOV AL,5OUT DX,ALA1: NOPCALL BREAKJMP A1MYINT: PUSH DSPUSH AXPUSH DXMOV DX,IMB4_BYTE3IN AL,DXMOV DX,INTCSR_BYTE2MOV AL,3FHOUT DX,ALMOV AL,63H ;根据中断号修改OUT 0A0H,ALMOV AL,62HOUT 20H,ALMOV AX,0E4DHINT 10HMOV AX,0E20HINT 10HPOP DXPOP AXPOP DSIRETBREAK PROC NEARPUSH DSMOV AH,06HMOV DL,0FFHINT 21HJE RETURNPOP DSCLIMOV AL,MKBAKOUT 0A1H,ALMOV AX,0000HMOV ES,AXMOV DI,01CCH ;INT 73H,01CCH=73H*4,,根据中断号修改MOV AX,IPBAKCLDSTOSWMOV AX,CSBAKSTOSWMOV DX,INTCSR_BYTE1MOV AL,00HOUT DX,ALSTIMOV AX,4C00HINT 21HRETURN:POP DSRETBREAK ENDPCODE ENDSEND START2.PC8254_COUNT0 EQU 40HPC8254_COUNT1 EQU 41HPC8254_COUNT2 EQU 42HPC8254_MODE EQU 43HDATA SEGMENTBAK DB ?DTABLE DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33H DB 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45HDB 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26HDB 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H DB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DH DB 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26HDB 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45HDB 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DHDB 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39HDB 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00HDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: IN AL,61HMOV BAK,ALMOV AX,DATAMOV DS,AXMOV BX,OFFSET DTABLEMOV AL,[BX]MOV AH,00HA1: MOV DL,20HMUL DLPUSH AXMOV DX,PC8254_MODEMOV AL,0B6HOUT DX,ALPOP AXMOV DX,PC8254_COUNT2OUT DX,ALMOV AL,AHOUT DX,ALMOV AL,BAKOR AL,03HOUT 61H,ALINC BXMOV AH,00HMOV AL,[BX]TEST AL,0FFHJZ A2PUSH AXCALL DALLYCALL BREAKPOP AXJMP A1A2: MOV BX,OFFSET DTABLE MOV AL,[BX]MOV AH,00HJMP A1DALLY: MOV CX,77FFHD1: MOV AX,0B00HD2: DEC AXJNZ D2LOOP D1BREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNAND AL,0FDHOUT 61H,ALMOV AL,AHMOV AL,BAKOUT 61H,ALMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START3.MY8254_COUNT0 EQU 9C40HMY8254_COUNT1 EQU 9C41HMY8254_COUNT2 EQU 9C42HMY8254_MODE EQU 9C43HDATA SEGMENTDTABLE DB 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 26H, 2DH, 2DH, 26H, 2DH, 33H DB 33H, 33H, 33H, 33H, 33H, 4DH, 45H, 3DH, 3DH, 3DH, 45H, 4DH, 45HDB 45H, 45H, 45H, 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26HDB 26H, 28H, 2DH, 2DH, 26H, 26H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H DB 39H, 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 2DH, 2DH DB 26H, 26H, 26H, 26H, 26H, 26H, 28H, 28H, 2DH, 28H, 26H, 26H, 26HDB 26H, 2DH, 28H, 26H, 2DH, 2DH, 33H, 3DH, 4DH, 45H, 45H, 45H, 45HDB 45H, 45H, 45H, 45H, 33H, 33H, 3DH, 33H, 26H, 26H, 26H, 28H, 2DHDB 2DH, 26H, 2DH, 33H, 33H, 33H, 33H, 33H, 33H, 45H, 3DH, 39H, 39HDB 39H, 52H, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 4DH, 00HDATA ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AX,DATAMOV DS,AXMOV BX,OFFSET DTABLEMOV AL,[BX]MOV AH,00HA1: MOV DL,0AH ;CLK=1MHzMUL DLPUSH AXMOV DX,MY8254_MODEMOV AL,36HOUT DX,ALPOP AXMOV DX,MY8254_COUNT0OUT DX,ALMOV AL,AHOUT DX,ALINC BXMOV AH,00HMOV AL,[BX]TEST AL,0FFHJZ A2PUSH AXCALL DALLYPOP AXJMP A1A2: MOV BX,OFFSET DTABLEMOV AL,[BX]MOV AH,00HJMP A1DALLY: MOV CX,77FFHD1: MOV AX,0C00HD2: DEC AXJNZ D2LOOP D1BREAK PROC NEARMOV AH,06HMOV DL,0FFHINT 21HJE RETURNMOV AX,4C00HINT 21HRETURN:RETBREAK ENDPCODE ENDSEND START四、运行结果(1)使每当按动开关KK1五次后,产生中断,并在屏幕上显示一个字符“M”。