资源描述
微机原理与接口技术
实验报告
学院:
计算机与通信工程学院
专业:
计算机科学与技术
班级:
学号:
姓名:
实验一 8259中断控制器应用实验
一、实验目
1.掌握PC机中断解决系统基本原理。
2. 掌握可编程中断控制器8259应用编程办法。
二、实验内容
1.PC机内中断实验。使用单次脉冲模仿中断产生。验证中断解决程序,在显示屏屏幕上显示一行预设定字符串。
2.PC机内中断嵌套实验。使用单次脉冲模仿两个中断源中断产生,填写中断解决程序,体会中断嵌套过程。
3.扩展多中断源查询方式应用实验。运用实验平台上8259控制器作为中断扩展源,编写程序对8259控制器中断祈求进行解决。
三、实验环节
1.实验1-1:PC机内中断应用实验
(1)按接线图连好接线,调用程序源代码8259-1.asm,观测实验现象,屏幕显示成果截图如下:
(2) 自设计实验。变化接线方式,将单次脉冲连到USB核心板上IRQ10插孔上,参照本实验代码,编程实现IRQ10中断。(注意:考虑PC机内中断级联方式,参看前面原理阐明),代码如下:
DATA SEGMENT
MESS DB 'IRQ10 ',0DH,0AH,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INT10
MOV AX,2572H ;设立IRQ10相应中断向量
INT 21H
IN AL,21H ;读取中断屏蔽寄存器
AND AL,0F3H ;开放IRQ3中断和从片
OUT 21H,AL
IN AL,0A1H ;从片中断屏蔽寄存器
AND AL,0FBH ;开放IRQ10中断
OUT 0A1H,AL
MOV CX,10
STI
WAIT: JMP WAIT
INT10: MOV AX,DATA ;中断服务程序
MOV DS,AX
MOV DX,OFFSET MESS
MOV AH,09 ;在屏幕上显示每次中断提示信息
INT 21H
MOV AL,20H ;发出EOI结束中断到PC内主片地址20H
OUT 20H,AL
LOOP NEXT
IN AL,21H ;读中断屏蔽寄存器,获取中断屏蔽字
OR AL,08H ;关闭IRQ3中断
OUT 21H,AL ;将中断屏蔽字送到中断屏蔽寄存器
STI ;置中断标志位
MOV AH,4CH ;返回DOS
INT 21H
NEXT: IRET ;中断返回
CODE ENDS
END START
调用程序代码,观测实验现象,屏幕显示截图如下:
2.实验1-2:PC机内中断嵌套实验
实验规定:
(1)按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,观测屏幕显示成果并分析产生该现象因素:
A. 按下连接IRQ单次脉冲按键,屏幕上会显示10个3,在屏幕上10次显示未结束之前,按下连接IRQ10单次脉冲按键,观测现象;
按下IRQ时屏幕上会显示10个3,此时按下IRQ10,会直接在屏幕上显示10个10,然后结束后再显示剩余3B. 按下连接IRQ10单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3单次脉冲按键,观测现象。
在屏幕上显示10个10过程中按下IRQ无反映,等到10个10所有显示完毕后才再显示10个3
浮现这种现象因素是IRQ10中断优先级高于IRQ3
屏幕截图:
(2) 程序所有代码及注释:
DATA SEGMENT
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA
START:
.386
CLI
MOV AX,CS
MOV DS,AX
MOV DX,OFFSET INT10 ;采用间接修改法,设立中断向量
MOV AX,2572H ;设立IRQ10相应中断向量
INT 21H
MOV DX,OFFSET INT3 ;采用间接修改法,设立中断向量
MOV AX,250BH ;设立IRQ3相应中断向量
INT 21H
IN AL,21H ;读中断屏蔽寄存器,21H是该寄存器端标语
AND AL,0F3H ;开放中断,容许从片和IRQ3
OUT 21H,AL
IN AL,0A1H ;读中断屏蔽寄存器,0A1H是该寄存器端口
AND AL,0FBH ;开放中断IRQ10
OUT 0A1H,AL
MOV CX,10 ;记中断循环次数为10次
STI
WAIT: JMP WAIT
INT10:CLI ;中断服务程序
PUSHAD
PUSHFD
MOV CX,10 ;记中断循环次数为10次
NEXT10_1:
MOV DX,31H
MOV AH,02H ;输出DL
INT 21H
MOV DX,30H
MOV AH,02H ;输出DL
INT 21H
MOV DX,20H ;发出EOI结束中断到PC内主片地址20H
MOV AH,02H ;输出DL,3
INT 21H
CALL DELAY1 ;等待
LOOP NEXT10_1
MOV DX,0DH
MOV AH,02H ;输出DL,‘ ’
INT 21H
MOV DX,0AH ;发出EOI结束中断到PC内从片占用是0A0H端口
MOV AH,02H ;输出DL,发生中断后输出10
INT 21H
MOV AL,20H ;将中断屏蔽字送到中断屏蔽寄存器
OUT 0A0H,AL ;从片
OUT 20H,AL ;主片
POPFD ;关中断,出栈,返回
POPAD
STI
IRET
INT3: CLI ;中断服务程序
PUSHAD
PUSHFD
MOV CX,10 ;记中断循环次数为10次
NEXT3_1:
MOV DX,33H
MOV AH,02H ;输出DL
INT 21H
MOV DX,20H ;发出EOI结束中断到PC内主片地址20H
MOV AH,02H ;输出DL,3
INT 21H
CALL DELAY1 ;等待
LOOP NEXT3_1
MOV DX,0DH
MOV AH,02H ;输出DL,‘ ’
INT 21H
MOV DX,0AH ;发出EOI结束中断到PC内从片占用是0A0H端口
MOV AH,02H ;发生中断输出DL,10
INT 21H
MOV AL,20H
OUT 20H,AL ;将中断屏蔽字送到中断屏蔽寄存器
OUT 0A0H,AL
POPFD ;出栈,关中断,返回
POPAD
STI
IRET
DELAY1 PROC ;控制等待某些
PUSHAD
PUSHFD
MOV CX,0FH
DELAY_LOOP1:
MOV BX,0FFFFH
DELAY_LOOP2:
DEC BX
NOP
JNZ DELAY_LOOP2
LOOP DELAY_LOOP1
POPFD
POPAD
RET
DELAY1 ENDP
CODE ENDS
END START
3.实验1-3:扩展多中断应用实验
调用程序源码文献8259-3.asm,在程序源代码中划横线位置,请按照所学8259工作原理填写并验证,然后将所填内容写在实验报告中,并分析所填数据形成原理。
屏幕截图:
程序代码及与案例阐明:
;*****************************************************************
; 8259中断查询方式应用实验
;请依照所学原理推断横线处需填写源代码
;*****************************************************************
I8259_1 EQU 2B0H ;8259ICW1端口地址
I8259_2 EQU 2B1H ;8259ICW2端口地址
I8259_3 EQU 2B1H ;8259ICW3端口地址,ICW3,ICW4,OCW1都写入奇地址中
I8259_4 EQU 2B1H ;8259ICW4端口地址
O8259_1 EQU 2B1H ;8259OCW1端口地址
O8259_2 EQU 2B0H ;8259OCW2端口地址,OCW2,OCW3写入偶地址
O8259_3 EQU 2B0H ;8259OCW3端口地址
DATA SEGMENT
MES1 DB 'YOU CAN PLAY A KEY ON THE KEYBOARD!',0DH,0AH,24H
MES2 DD MES1
MESS1 DB 'HELLO!THIS IS INTERRUPT * 0 *!',0DH,0AH,'$'
MESS2 DB 'HELLO!THIS IS INTERRUPT * 1 *!',0DH,0AH,'$'
MESS3 DB 'HELLO!THIS IS INTERRUPT * 2 *!',0DH,0AH,'$'
MESS4 DB 'HELLO!THIS IS INTERRUPT * 3 *!',0DH,0AH,'$'
MESS5 DB 'HELLO!THIS IS INTERRUPT * 4 *!',0DH,0AH,'$'
MESS6 DB 'HELLO!THIS IS INTERRUPT * 5 *!',0DH,0AH,'$'
MESS7 DB 'HELLO!THIS IS INTERRUPT * 6 *!',0DH,0AH,'$'
MESS8 DB 'HELLO!THIS IS INTERRUPT * 7 *!',0DH,0AH,'$'
DATA ENDS
STACKS SEGMENT
DB 100 DUP(?)
STACKS ENDS
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACKS,ES:DATA
.386
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACKS
MOV SS,AX
MOV DX,I8259_1 ;初始化8259ICW1
MOV AL,13H ;边沿触发、单片8259、需要ICW4,查表得到控制字
OUT DX,AL
MOV DX,I8259_2 ;初始化8259ICW2
MOV AL,0B0H
OUT DX,AL
MOV AL,03H
OUT DX,AL
MOV DX,O8259_1 ;初始化8259中断屏蔽操作命令字
MOV AL,000H ;打开屏蔽位,将所有屏蔽位打开
OUT DX,AL
QUERY: MOV AH,1 ;判断与否有按键按下
INT 16H
JNZ QUIT ;有按键则退出
MOV DX,O8259_3 ;向8259发送查询命令
MOV AL,6CH ;01101100
OUT DX,AL
IN AL,DX ;读出查询字
TEST AL,80H ;判断中断与否已响应,响应后相应位置0
JZ QUERY ;没有响应则继续查询
AND AL,07H
CMP AL,00H
JE IR0ISR ;若为IR0祈求,跳到IR0解决程序
CMP AL,01H
JE IR1ISR ;若为IR1祈求,跳到IR1解决程序
CMP AL,02H
JE IR2ISR ;若为IR2祈求,跳到IR2解决程序
CMP AL,03H
JE IR3ISR ;若为IR3祈求,跳到IR3解决程序
CMP AL,04H
JE IR4ISR ;若为IR4祈求,跳到IR4解决程序
CMP AL,05H
JE IR5ISR ;若为IR5祈求,跳到IR5解决程序
CMP AL,06H
JE IR6ISR ;若为IR6祈求,跳到IR6解决程序
CMP AL,07H
JE IR7ISR ;若为IR7祈求,跳到IR7解决程序
JMP QUERY
IR0ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS1 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR1ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS2 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR2ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS3 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR3ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS4 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR4ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS5 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR5ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS6 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR6ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS7 ;显示提示信息
MOV AH,09
INT 21H
JMP EOI
IR7ISR: MOV AX,DATA
MOV DS,AX
MOV DX,OFFSET MESS8 ;显示提示信息
MOV AH,09
INT 21H
EOI:
MOV DX,O8259_2 ;向8259发送中断结束命令
MOV AL,20H ;00100000
OUT DX,AL
JMP QUERY
QUIT: MOV AX,4C00H ;结束程序退出
INT 21H
CODE ENDS
END START
实验二 8254定期/计数器应用实验
一、实验目
1. 掌握 8254 工作方式及应用编程。
2. 掌握 8254 典型应用电路接法。
二、实验内容
1.计数应用实验。应用8254计数功能,用开关模仿计数,使每当按照计数初值次数按动单次脉冲后,观测LED变化。
2. 自设计实验。参照实验一程序, 编写程序,以1MHz为时钟源,应用8254定期功能,将其分频为1Hz。以LED灯作为输出显示。
三、实验环节
1.实验2-1:计数器应用实验
程序代码弥补:
IO8254_MODE EQU 283H ;8254控制寄存器端口地址
IO8254_COUNT0 EQU 280H ;8254计数器0端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START:MOV DX,IO8254_MODE ;初始化8254工作方式
MOV AL,16H ;计数器0,方式3,填入控制字:00010110
OUT DX,AL
MOV DX,IO8254_COUNT0 ;装入计数初值
MOV AL,04H ;初值为4,04H
OUT DX,AL
MOV AX,4C00H ;返回到DOS
INT 21H
CODE ENDS
END START
此时按两次后灯亮,再按两次后灯灭。
如果令计数器0工作在方式0,其实验现象为:按五次后灯变亮,之后不在熄灭。
2.实验2-2:自设计实验
实验规定:
参照实验一程序和接线,自行设计接线图以及程序代码,实现,以1MHz为时钟源,应用8254定期功能,将其分频为1Hz。以LED灯作为输出显示。
使用计数器0和计数器1两个计数器,设立其均工作于方式3,计数初值为1000,通过两个计数器级联,1000*1000=10^6达到分频目。
程序代码如下:
IO8254_MODE EQU 283H ;8254控制寄存器端口地址
IO8254_COUNT0 EQU 280H ;8254计数器0端口地址
IO8254_COUNT1 EQU 281H ;8254计数器1端口地址
STACK1 SEGMENT STACK
DW 256 DUP(?)
STACK1 ENDS
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,IO8254_MODE ;初始化8254工作方式
MOV AL,37H ;计数器0,方式3 00110111
MOV DX,IO8254_COUNT0 ;装入计数初值
MOV AX,03E8H ;1000D=0000 0011 1110 1000B=03E8H
MOV AL,03H
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV DX,IO8254_MODE ;初始化8254工作方式
MOV AL,76H ;计数器1,方式3 01110110
OUT DX,AL
MOV DX,IO8254_COUNT1 ;装入计数初值
MOV AX,03E8H ;1000D=0000 0011 1110 1000B=03E8H
MOV AL,03H
OUT DX,AL
MOV AL,AH
OUT DX,AL
MOV AX,4C00H ;返回到DOS
INT 21H
CODE ENDS
END START
接线图如下:
实验三 8255并口控制器应用实验
一、实验目
1. 掌握 8255 工作方式及应用编程。
2. 掌握 8255 典型应用电路接法。
二、实验内容
1. 基本输入输出实验。编写程序,自行设定A、B、C三个口中某一种口为输入,某一种为输出,完毕拨动开关到数据灯数据传播。规定只要开关拨动,数据灯显示就变化。
2. 自设计实验。自行设计能实现A口工作在方式一输入,B口工作在方式一输出电路并完毕程序编制和在实验箱上验证,规定,运用控制信号控制数据输入。
三、实验环节
1.实验3-1:可编程并行接口8255方式0应用实验
编写程序,自行设定A、B、C三个口中某一种口为输入,某一种为输出,完毕拨动开关到数据灯数据传播。规定只要开关拨动,数据灯显示就变化。依照原理补全代码中缺失某些,依照自己设计,补全接线图,并将代码和相应接线图写在实验报告中。
阐明:运营源程序8255.asm,按接线图接线,实现并行数据传播功能。
设定B口为输入,接到开关上,A口为输出接到LED灯上。
程序源代码:
IO8255_MODE EQU 28BH
IO8255_A EQU 288H
IO8255_B EQU 289H
IO8255_C EQU 28AH
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,IO8255_MODE ;8255初始化
MOV AL,90H ;B口输入,A口输出 10010000
OUT DX,AL
INOUT: MOV DX,IO8255_B ;读入数据
IN AL,DX
MOV DX,IO8255_A ;输出数据
OUT DX,AL
MOV DL,0FFH ;判断与否有按键
MOV AH,06H
INT 21H
JZ INOUT ;若无,则继续
MOV AH,4CH ;否则返回
INT 21H
CODE ENDS
END START
接线图如下:
2.实验3-2:自设计实验
自行设计完毕本实验,规定,8255A口工作在方式一输入,B口工作在方式一输出,运用方式一控制信号,使数据从输入到输出人为可控。在实验报告中画出接线图,并阐明设计原理,给出相应程序代码。
实现方案:方式一控制信号即为PC2和PC4,将PC2和PC4分别接到高低电平,控制A输入,观测B输出变化。
程序源代码:
IO8255_MODE EQU 28BH
IO8255_A EQU 288H
IO8255_B EQU 289H
IO8255_C EQU 28AH
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,IO8255_MODE ;8255初始化
MOV AL,0B4H ;A口方式一输入,B口方式一输出,10110100
OUT DX,AL
INOUT: MOV DX,IO8255_A ;读入数据
IN AL,DX
MOV DX,IO8255_B ;输出数据
OUT DX,AL
MOV DL,0FFH ;判断与否有按键
MOV AH,06H
INT 21H
JZ INOUT ;若无,则继续
MOV AH,4CH ;否则返回
INT 21H
CODE ENDS
END START
实验成果:只有PC4和PC2均为低电平时,变化A输入,B才会有变化。
实验四 8251串口控制器应用实验
一、实验目
(1)掌握8251工作方式及应用。
(2)学习PC机串口操作办法。
二、实验内容
与PC串口通讯应用实验。编写程序完毕PC机串口与实验装置串口通讯,由PC机串口1发数,实验装置串口接受。
三、 实验环节
从键盘输入一种字符,将其ASCII码加 1 后发送出去,再接受回来在屏幕上显示,实现自发自收。
阐明:
1)运营源程序8251.asm,按接线图接线,实现串行数据传播功能。
2)图示电路8251控制口地址为2B9H,数据口地址为2B8H。
3)8254计数器计数初值=时钟频率/(波特率×波特率因子),这里时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
4) 收发采用查询方式。
屏幕显示成果截图:
实验六 键盘扫描及显示实验(综合)
一、实验目
1. 学习按键扫描原理及电路接法。
2. 掌握运用8255完毕按键扫描及显示。
二、实验内容
1.连接8255与键盘扫描单元,验证按键扫描功能,使得从4X4键盘上按下键可以在数码管上一一相应显示。
三、实验环节
验证程序,使得在小键盘上每按一种健,4位数码管上显示出相应字符,它
们相应关系如下:
小键盘—显示
0 — 0 C — C 1 — 1 D — D 2 — 2 E — E 3 — 3
F — F 4 — 4 5 — 5 6 — 6 7 — 7 8 — 8 9 — 9
A — A B — B
阐明:打开源程序keyscreen.asm,按接线图接线,运营源程序,实现键盘显示功能。
输入:A695FBB7DC8
截图如下:
当输入E时运营结束,截图如下:
展开阅读全文