微机原理与接口技术 实验报告.docx
- 文档编号:6446722
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:22
- 大小:433.43KB
微机原理与接口技术 实验报告.docx
《微机原理与接口技术 实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术 实验报告.docx(22页珍藏版)》请在冰豆网上搜索。
微机原理与接口技术实验报告
微机原理与接口技术
实验报告
学院:
计算机与通信工程学院
专业:
计算机科学与技术
班级:
学号:
姓名:
实验一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机内中断级联的方式,参看前面的原理说明),代码如下:
DATASEGMENT
MESSDB'IRQ10',0DH,0AH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT10
MOVAX,2572H;设置IRQ10对应的中断向量
INT21H
INAL,21H;读取中断屏蔽寄存器
ANDAL,0F3H;开放IRQ3中断和从片
OUT21H,AL
INAL,0A1H;从片的中断屏蔽寄存器
ANDAL,0FBH;开放IRQ10中断
OUT0A1H,AL
MOVCX,10
STI
WAIT:
JMPWAIT
INT10:
MOVAX,DATA;中断服务程序
MOVDS,AX
MOVDX,OFFSETMESS
MOVAH,09;在屏幕上显示每次中断的提示信息
INT21H
MOVAL,20H;发出EOI结束中断到PC内主片的地址20H
OUT20H,AL
LOOPNEXT
INAL,21H;读中断屏蔽寄存器,获取中断屏蔽字
ORAL,08H;关闭IRQ3中断
OUT21H,AL;将中断屏蔽字送到中断屏蔽寄存器
STI;置中断标志位
MOVAH,4CH;返回DOS
INT21H
NEXT:
IRET;中断返回
CODEENDS
ENDSTART
调用程序代码,观察实验现象,屏幕显示截图如下:
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)程序所有代码及注释:
DATASEGMENT
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
.386
CLI
MOVAX,CS
MOVDS,AX
MOVDX,OFFSETINT10;采用间接修改法,设置中断向量
MOVAX,2572H;设置IRQ10对应的中断向量
INT21H
MOVDX,OFFSETINT3;采用间接修改法,设置中断向量
MOVAX,250BH;设置IRQ3对应的中断向量
INT21H
INAL,21H;读中断屏蔽寄存器,21H是该寄存器的端口号
ANDAL,0F3H;开放中断,允许从片和IRQ3
OUT21H,AL
INAL,0A1H;读中断屏蔽寄存器,0A1H是该寄存器的端口
ANDAL,0FBH;开放中断IRQ10
OUT0A1H,AL
MOVCX,10;记中断循环次数为10次
STI
WAIT:
JMPWAIT
INT10:
CLI;中断服务程序
PUSHAD
PUSHFD
MOVCX,10;记中断循环次数为10次
NEXT10_1:
MOVDX,31H
MOVAH,02H;输出DL
INT21H
MOVDX,30H
MOVAH,02H;输出DL
INT21H
MOVDX,20H;发出EOI结束中断到PC内主片的地址20H
MOVAH,02H;输出DL,3
INT21H
CALLDELAY1;等待
LOOPNEXT10_1
MOVDX,0DH
MOVAH,02H;输出DL,‘’
INT21H
MOVDX,0AH;发出EOI结束中断到PC内从片占用的是0A0H端口
MOVAH,02H;输出DL,发生中断后输出10
INT21H
MOVAL,20H;将中断屏蔽字送到中断屏蔽寄存器
OUT0A0H,AL;从片
OUT20H,AL;主片
POPFD;关中断,出栈,返回
POPAD
STI
IRET
INT3:
CLI;中断服务程序
PUSHAD
PUSHFD
MOVCX,10;记中断循环次数为10次
NEXT3_1:
MOVDX,33H
MOVAH,02H;输出DL
INT21H
MOVDX,20H;发出EOI结束中断到PC内主片的地址20H
MOVAH,02H;输出DL,3
INT21H
CALLDELAY1;等待
LOOPNEXT3_1
MOVDX,0DH
MOVAH,02H;输出DL,‘’
INT21H
MOVDX,0AH;发出EOI结束中断到PC内从片占用的是0A0H端口
MOVAH,02H;发生中断输出DL,10
INT21H
MOVAL,20H
OUT20H,AL;将中断屏蔽字送到中断屏蔽寄存器
OUT0A0H,AL
POPFD;出栈,关中断,返回
POPAD
STI
IRET
DELAY1PROC;控制等待部分
PUSHAD
PUSHFD
MOVCX,0FH
DELAY_LOOP1:
MOVBX,0FFFFH
DELAY_LOOP2:
DECBX
NOP
JNZDELAY_LOOP2
LOOPDELAY_LOOP1
POPFD
POPAD
RET
DELAY1ENDP
CODEENDS
ENDSTART
3.实验1-3:
扩展多中断应用实验
调用程序源码文件8259-3.asm,在程序源代码中划横线的位置,请按照所学8259工作原理填写并验证,然后将所填内容写在实验报告中,并分析所填数据的形成原理。
屏幕截图:
程序代码及与案例说明:
;*****************************************************************
;8259中断查询方式应用实验
;请根据所学原理推断横线处需填写的源代码
;*****************************************************************
I8259_1EQU2B0H;8259的ICW1端口地址
I8259_2EQU2B1H;8259的ICW2端口地址
I8259_3EQU2B1H;8259的ICW3端口地址,ICW3,ICW4,OCW1都写入奇地址中
I8259_4EQU2B1H;8259的ICW4端口地址
O8259_1EQU2B1H;8259的OCW1端口地址
O8259_2EQU2B0H;8259的OCW2端口地址,OCW2,OCW3写入偶地址
O8259_3EQU2B0H;8259的OCW3端口地址
DATASEGMENT
MES1DB'YOUCANPLAYAKEYONTHEKEYBOARD!
',0DH,0AH,24H
MES2DDMES1
MESS1DB'HELLO!
THISISINTERRUPT*0*!
',0DH,0AH,'$'
MESS2DB'HELLO!
THISISINTERRUPT*1*!
',0DH,0AH,'$'
MESS3DB'HELLO!
THISISINTERRUPT*2*!
',0DH,0AH,'$'
MESS4DB'HELLO!
THISISINTERRUPT*3*!
',0DH,0AH,'$'
MESS5DB'HELLO!
THISISINTERRUPT*4*!
',0DH,0AH,'$'
MESS6DB'HELLO!
THISISINTERRUPT*5*!
',0DH,0AH,'$'
MESS7DB'HELLO!
THISISINTERRUPT*6*!
',0DH,0AH,'$'
MESS8DB'HELLO!
THISISINTERRUPT*7*!
',0DH,0AH,'$'
DATAENDS
STACKSSEGMENT
DB100DUP(?
)
STACKSENDS
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA,SS:
STACKS,ES:
DATA
.386
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
MOVAX,STACKS
MOVSS,AX
MOVDX,I8259_1;初始化8259的ICW1
MOVAL,13H;边沿触发、单片8259、需要ICW4,查表得到控制字
OUTDX,AL
MOVDX,I8259_2;初始化8259的ICW2
MOVAL,0B0H
OUTDX,AL
MOVAL,03H
OUTDX,AL
MOVDX,O8259_1;初始化8259的中断屏蔽操作命令字
MOVAL,000H;打开屏蔽位,将全部屏蔽位打开
OUTDX,AL
QUERY:
MOVAH,1;判断是否有按键按下
INT16H
JNZQUIT;有按键则退出
MOVDX,O8259_3;向8259发送查询命令
MOVAL,6CH;01101100
OUTDX,AL
INAL,DX;读出查询字
TESTAL,80H;判断中断是否已响应,响应后对应位置0
JZQUERY;没有响应则继续查询
ANDAL,07H
CMPAL,00H
JEIR0ISR;若为IR0请求,跳到IR0处理程序
CMPAL,01H
JEIR1ISR;若为IR1请求,跳到IR1处理程序
CMPAL,02H
JEIR2ISR;若为IR2请求,跳到IR2处理程序
CMPAL,03H
JEIR3ISR;若为IR3请求,跳到IR3处理程序
CMPAL,04H
JEIR4ISR;若为IR4请求,跳到IR4处理程序
CMPAL,05H
JEIR5ISR;若为IR5请求,跳到IR5处理程序
CMPAL,06H
JEIR6ISR;若为IR6请求,跳到IR6处理程序
CMPAL,07H
JEIR7ISR;若为IR7请求,跳到IR7处理程序
JMPQUERY
IR0ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS1;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR1ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS2;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR2ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS3;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR3ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS4;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR4ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS5;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR5ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS6;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR6ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS7;显示提示信息
MOVAH,09
INT21H
JMPEOI
IR7ISR:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETMESS8;显示提示信息
MOVAH,09
INT21H
EOI:
MOVDX,O8259_2;向8259发送中断结束命令
MOVAL,20H;00100000
OUTDX,AL
JMPQUERY
QUIT:
MOVAX,4C00H;结束程序退出
INT21H
CODEENDS
ENDSTART
实验二8254定时/计数器应用实验
一、实验目的
1.掌握8254的工作方式及应用编程。
2.掌握8254典型应用电路的接法。
二、实验内容
1.计数应用实验。
应用8254的计数功能,用开关模拟计数,使每当按照计数初值的次数按动单次脉冲后,观察LED的变化。
2.自设计实验。
参考实验一的程序,编写程序,以1MHz为时钟源,应用8254的定时功能,将其分频为1Hz。
以LED灯作为输出显示。
三、实验步骤
1.实验2-1:
计数器应用实验
程序代码填补:
IO8254_MODEEQU283H;8254控制寄存器端口地址
IO8254_COUNT0EQU280H;8254计数器0端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,IO8254_MODE;初始化8254工作方式
MOVAL,16H;计数器0,方式3,填入控制字:
00010110
OUTDX,AL
MOVDX,IO8254_COUNT0;装入计数初值
MOVAL,04H;初值为4,04H
OUTDX,AL
MOVAX,4C00H;返回到DOS
INT21H
CODEENDS
ENDSTART
此时按两次后灯亮,再按两次后灯灭。
如果令计数器0工作在方式0,其实验现象为:
按五次后灯变亮,之后不在熄灭。
2.实验2-2:
自设计实验
实验要求:
参考实验一的程序和接线,自行设计接线图以及程序代码,实现,以1MHz为时钟源,应用8254的定时功能,将其分频为1Hz。
以LED灯作为输出显示。
使用计数器0和计数器1两个计数器,设置其均工作于方式3,计数初值为1000,通过两个计数器级联,1000*1000=10^6达到分频的目的。
程序代码如下:
IO8254_MODEEQU283H;8254控制寄存器端口地址
IO8254_COUNT0EQU280H;8254计数器0端口地址
IO8254_COUNT1EQU281H;8254计数器1端口地址
STACK1SEGMENTSTACK
DW256DUP(?
)
STACK1ENDS
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,IO8254_MODE;初始化8254工作方式
MOVAL,37H;计数器0,方式300110111
MOVDX,IO8254_COUNT0;装入计数初值
MOVAX,03E8H;1000D=0000001111101000B=03E8H
MOVAL,03H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVDX,IO8254_MODE;初始化8254工作方式
MOVAL,76H;计数器1,方式301110110
OUTDX,AL
MOVDX,IO8254_COUNT1;装入计数初值
MOVAX,03E8H;1000D=0000001111101000B=03E8H
MOVAL,03H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAX,4C00H;返回到DOS
INT21H
CODEENDS
ENDSTART
接线图如下:
实验三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_MODEEQU28BH
IO8255_AEQU288H
IO8255_BEQU289H
IO8255_CEQU28AH
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,IO8255_MODE;8255初始化
MOVAL,90H;B口输入,A口输出10010000
OUTDX,AL
INOUT:
MOVDX,IO8255_B;读入数据
INAL,DX
MOVDX,IO8255_A;输出数据
OUTDX,AL
MOVDL,0FFH;判断是否有按键
MOVAH,06H
INT21H
JZINOUT;若无,则继续
MOVAH,4CH;否则返回
INT21H
CODEENDS
ENDSTART
接线图如下:
2.实验3-2:
自设计试验
自行设计完成本实验,要求,8255A口工作在方式一输入,B口工作在方式一输出,利用方式一的控制信号,使数据从输入到输出人为可控。
在实验报告中画出接线图,并说明设计的原理,给出对应的程序代码。
实现方案:
方式一的控制信号即为PC2和PC4,将PC2和PC4分别接到高低电平,控制A输入,观察B输出的改变。
程序源代码:
IO8255_MODEEQU28BH
IO8255_AEQU288H
IO8255_BEQU289H
IO8255_CEQU28AH
CODESEGMENT
ASSUMECS:
CODE
START:
MOVDX,IO8255_MODE;8255初始化
MOVAL,0B4H;A口方式一输入,B口方式一输出,10110100
OUTDX,AL
INOUT:
MOVDX,IO8255_A;读入数据
INAL,DX
MOVDX,IO8255_B;输出数据
OUTDX,AL
MOVDL,0FFH;判断是否有按键
MOVAH,06H
INT21H
JZINOUT;若无,则继续
MOVAH,4CH;否则返回
INT21H
CODEENDS
ENDSTART
实验结果:
只有PC4和PC2均为低电平时,改变A的输入,B才会有变化。
实验四8251串口控制器应用实验
一、实验目的
(1)掌握8251的工作方式及应用。
(2)学习PC机串口的操作方法。
二、实验内容
与PC串口通讯应用实验。
编写程序完成PC机串口与实验装置串口的通讯,由PC机串口1发数,实验装置串口接收。
3、实验步骤
从键盘输入一个字符,将其ASCII码加1后发送出去,再接收回来在屏幕上显示,实现自发自收。
说明:
1)运行源程序8251.asm,按接线图接线,实现串行数据传输功能。
2)图示电路8251的控制口地址为2B9H,数据口地址为2B8H。
3)8254计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
4)收发采用查询方式。
屏幕显示结果截图:
实验六键盘扫描及显示实验(综合)
一、实验目的
1.学习按键扫描的原理及电路接法。
2.掌握利用8255完成按键扫描及显示。
二、实验内容
1.连接8255与键盘扫描单元,验证按键扫描功能,使得从4X4键盘上按下的键能够在数码管上一一对应显示。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理与接口技术 实验报告 微机 原理 接口 技术 实验 报告