北京理工大学自动化专业微机原理硬件软件实验.docx
《北京理工大学自动化专业微机原理硬件软件实验.docx》由会员分享,可在线阅读,更多相关《北京理工大学自动化专业微机原理硬件软件实验.docx(38页珍藏版)》请在冰豆网上搜索。
北京理工大学自动化专业微机原理硬件软件实验
微机原理与接口技术
硬件实验报告
班级:
:
学号:
实验一:
8259中断控制器实验
一、实验目的
1.掌握8259的工作原理。
2.掌握编写中断服务程序的方法。
3.掌握初始化中断向量的方法。
二、实验容
用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。
三、实验设备
微机实验教学系统实验箱、8086CPU模块
四、连线
①单脉冲发生器输出P+与8259的IR0相连
②8259的片选CS8259与CS0相连
③8259的INT与8086的INT相连
④8259的INTA与8086的INTA相连
⑤CS273与CS1相连
⑥00与LED1相连
其它线均已连好如下图:
五、实验步骤
(1)连线。
(2)编辑程序,编译后,调试程序。
(3)调试通过后,在中断服务程序设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序的断点处。
(4)撰写实验报告。
六、实验源程序
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,4A0H;写ICW1
MOVAX,13H
OUTDX,AX
MOVDX,4A2H;写ICW2
MOVAX,80H;IR0的中断向量码为80H
OUTDX,AX
MOVAX,01
OUTDX,AX;一般嵌套,非缓冲,非自动EOI
MOVAX,0;写OCW1
OUTDX,AX;允许中断
;中断向量存放在(0000H:
0200H)开始的四个单元里
MOVAX,0
MOVDS,AX
MOVSI,200H;中断类型号为80H
MOVAX,OFFSETHINT;中断服务程序的入口地址
MOVDS:
[SI],AX
ADDSI,2
MOVAX,CS
MOVDS:
[SI],AX
STI;开中断,设置IF=1
JMP$;原地跳转
HINT:
;中断服务程序
XORCX,0FFH;CX取反
MOVDX,4B0H;CS273接口的地址,与8个LED灯相连
MOVAX,CX;输出高低电平控制LED灯的亮灭
OUTDX,AX
MOVDX,4A0H;OCW2的地址
MOVAX,20H;一般EOI命令,全嵌套方式
OUTDX,AX
IRET;中断返回
CODEENDS
ENDSTART
七、实验思考题
1.将P+连线连接到IR1—IR7任意一个;重新编写程序。
将P+接到IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,4A0H;写ICW1
MOVAX,13H
OUTDX,AX
MOVDX,4A2H;写ICW2
MOVAX,81H;IR0的中断向量码为81H
OUTDX,AX
MOVAX,01
OUTDX,AX;一般嵌套,非缓冲,非自动EOI
MOVAX,0;写OCW1
OUTDX,AX;允许中断
;中断向量存放在(0000H:
0200H)开始的四个单元里
MOVAX,0
MOVDS,AX
MOVSI,204H;中断类型号为81H
MOVAX,OFFSETHINT;中断服务程序的入口地址
MOVDS:
[SI],AX
ADDSI,2
MOVAX,CS
MOVDS:
[SI],AX
STI;开中断,设置IF=1
JMP$;原地跳转
HINT:
;中断服务程序
XORCX,0FFH;CX取反
MOVDX,4B0H;CS273接口的地址,与8个LED灯相连
MOVAX,CX;输出高低电平控制LED灯的亮灭
OUTDX,AX
MOVDX,4A0H;OCW2的地址
MOVAX,20H;一般EOI命令,全嵌套方式
OUTDX,AX
IRET;中断返回
CODEENDS
ENDSTART
实验现象:
运行程序,触发脉冲发生器产生中断请求,相应二极管点亮。
2.设置OCW1,屏蔽某个中断请求,运行程序观察现象。
将IR0重新接入LED0,设置OWC1为01H,屏蔽中断IR0,则IR0的中断无法得到响应。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,4A0H;ICW1的地址,写初始化命令字ICW1
MOVAX,13H;上升沿触发单片8259,要写ICW4
OUTDX,AX
MOVDX,4A2H;ICW2的地址,写中断向量码ICW2
MOVAX,80H;IR0的中断向量码为80H
OUTDX,AX
MOVAX,01;写中断结束控制字ICW4
OUTDX,AX;一般嵌套,非缓冲,非自动EOI
MOVAX,01H;写中断屏蔽字OCW1
OUTDX,AX;屏蔽IR0中断
;中断向量存放在(0000H:
0200H)开始的四个单元里
MOVAX,0
MOVDS,AX
MOVSI,200H;中断类型号为80H
MOVAX,OFFSETHINT;中断服务程序的入口地址
MOVDS:
[SI],AX
ADDSI,2
MOVAX,CS
MOVDS:
[SI],AX
STI;开中断,设置IF=1
JMP$;原地跳转
HINT:
;中断服务程序
XORCX,0FFH;CX取反
MOVDX,4B0H;CS273接口的地址,与8个LED灯相连
MOVAX,CX;输出高低电平控制LED灯的亮灭
OUTDX,AX
MOVDX,4A0H;OCW2的地址
MOVAX,20H;一般EOI命令,全嵌套方式
OUTDX,AX
IRET;中断返回
CODEENDS
ENDSTART
实验现象:
每按单脉冲发生器一次产生一次中断申请,但连接的发光二极管一直不亮。
3.设置OCW2,了解中断结束方式与设置优先权。
将IR0和IR1都连接到P+上,分别连接LED0和LED1到00和01。
一般EOI命令,将IR0设置为最低中断优先级。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,4A0H;ICW1的地址
MOVAX,13H;上升沿触发,单片8259,要写ICW4
OUTDX,AX
MOVDX,4A2H;ICW2的地址
MOVAX,80H;IRO的中断向量码为80H,第三位自动写入
OUTDX,AX
MOVAX,01;写ICW4
OUTDX,AX;一般嵌套,非缓冲,非自动EOI
MOVAX,0;写OCW1
OUTDX,AX;允许中断
;IR0的中断向量存放在(0000H:
0200H)开始的四个单元里
MOVAX,0
MOVDS,AX
MOVSI,200H
MOVAX,OFFSETHINT
MOVDS:
[SI],AX
ADDSI,2
MOVAX,CS
MOVDS:
[SI],AX
STI;开中断,设置IF=1
;IR1的中断向量存放在(0000H:
0204H)开始的四个单元里
MOVAX,0
MOVDS,AX
MOVSI,204H
MOVAX,OFFSETHINT2
MOVDS:
[SI],AX
ADDSI,2
MOVAX,CS
MOVDS:
[SI],AX
JMP$;原地跳转
HINT1:
;中断服务程序1
XORCX,0F0H;CX高四位取反
MOVDX,4B0H;CS273接口的地址,与8个LED灯相连
MOVAX,CX;输出高低电平控制LED灯的亮灭
OUTDX,AX
MOVDX,4A0H;OCW2的地址
MOVAX,E0H;一般EOI命令,IR0优先级最低
OUTDX,AX
IRET;中断返回
HINT2:
;中断服务程序2
XORCX,00FH;CX低四位取反
MOVDX,4B0H;CS273接口的地址,与8个LED灯相连
MOVAX,CX;输出高低电平控制LED灯的亮灭
OUTDX,AX
MOVDX,4A0H;OCW2的地址
MOVAX,E0H;一般EOI命令,IR0优先级最低
OUTDX,AX
IRET;中断返回
CODEENDS
ENDSTART
实验现象:
CS273的00与LED0相连,01与LED1相连,02与LED2相连,依次下去,直至07与LED7相连。
每按单脉冲发生器一次产生一次中断申请,由于IR0的优先级比IR1低,故先响应IR1,后响应IR0,观察到第四位的LED灯先点亮或熄灭,高四位的LED灯后点亮或熄灭。
八、实验心得
本次实验让我熟悉了8086硬件实验系统的使用,对8259的部寄存器的功能也有了更加深入的认识,掌握了8259的初始化步骤和工作方式的选择,以及中断服务程序的编写。
使用实验箱和编译软件对学习容的掌握的理解有很大帮助,让我更透彻地学习了知识。
实验二8255并行接口实验
一、实验容
8255的A口作为输入口,与逻辑电平开关相连。
8255的B口作为输出口,与发光二极管相连。
编写程序,使得逻辑电平开关的变化在发光二极管上显示出来。
二、实验目的
掌握8255的编程原理
三、实验设备
微机实验教学系统实验箱、8086CPU模块
四、连线
1.8255的PA0—PA7分别与逻辑电平开关的K1—K8相连。
2.PB0—PB7分别与发光二极管电路的LED1—LED8相连。
3.CS0与8255的片选CS8255相连。
4.其它线路均已连好。
五、实验步骤
(1)连线。
(2)编辑程序,编译后,单步运行,调试程序。
(3)调试通过后,全速运行,观察实验结果。
(4)撰写实验报告。
六、实验源程序
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,90H
OUTDX,AX
START1:
MOVDX,04A0H
INAX,DX
MOVDX,04A2H
OUTDX,AX
JMPSTART1
CODEENDS
ENDSTART
七、思考题
1.将片选线接到CS1—CS7;重新编写程序。
将片选线接到CS1上。
在原程序的基础上,将控制口的地址改成04B6H,将A口的地址改成04B0H,将B口的地址改成04B2H。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04B6H
MOVAX,90H
OUTDX,AX
START1:
MOVDX,04B0H
INAX,DX
MOVDX,04B2H
OUTDX,AX
JMPSTART1
CODEENDS
ENDSTART
实验现象:
实验将刚才的实验地址CS0换成了CS2。
这里CS0的地址为04A0H,CS1->04B0H,CS2->04C0H,CS3->04D0H,CS4->04E0H,CS5->04F0H。
这里我们将CS0换成了CS2。
实验现象和上一个程序的实验现象相同。
2.交换AB接线,A口输出、B口输入;重新编写程序。
将A口接LED,B口接开关。
原程序中,将方式控制字90H改成82H,START1中A、B口地址互换。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,82H
OUTDX,AX
START1:
MOVDX,04A2H
INAX,DX
MOVDX,04A0H
OUTDX,AX
JMPSTART1
CODEENDS
ENDSTART
实验现象:
PB口的逻辑电平开关对应PA口的LED灯,对应的PB口开关给高电平,LED灯亮,对应的PB口开关给低电平,LED灯灭
3.C口4位接LED;4位接开关;重新编写程序。
将C口的高四位接开关,低四位接LED灯。
在原程序的基础上,方式控制字改成88H,加逻辑右移语句。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,88H
OUTDX,AX
START1:
MOVDX,04A4H
INAX,DX
MOVCL,4
RORAX,CL
MOVDX,04A4H
OUTDX,AX
JMPSTART1
CODEENDS
ENDSTART
实验现象:
设置PC口低4位输入,高4位为输出。
低四位接逻辑电平开关,高四位接LED灯。
将8255控制字修改为将PC口低四位设置为输入,高四位设置为输出。
PC口低四位的逻辑电平开关对应PC口高四位的LED灯,对应的PC口低四位开关给高电平,LED灯亮,对应的PC口低四位开关给低电平,LED灯灭。
实验三8253可编程定时器
一、实验目的
掌握8253定时/计数器的编程原理。
二、实验容
8253计数器0,1,2工作于方波方式,观察其输出。
三、实验设备
微机实验教学系统实验箱、8086CPU模块。
四、连线
1.CS0与8253的片选CS8253相连
2.CLK3(750KHz)与8253CLK0相连
3.8253的OUT0与8253CLK2相连
4.OUT2与发光二极管LED1相连
其它线均已连好。
五、实验步骤
1.连线。
2.编辑程序,编译后,跟踪运行,调试程序。
3.调试通过后,全速运行,观察实验结果。
4.撰写实验报告。
六、实验源程序
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,36H
OUTDX,AX
MOVDX,04A0H
MOVAX,7CH
OUTDX,AX
MOVAX,92H
OUTDX,AX
MOVDX,04A6H
MOVAX,0B6H
OUTDX,AX
MOVDX,04A4H
MOVAX,4
OUTDX,AX
MOVAX,0
OUTDX,AX
JMP$
CODEENDS
ENDSTART
实验现象:
LED灯一亮一灭时间频率一样。
七、思考题
1.定时器2计数值改为20H;观察其现象。
实验程序:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,36H
OUTDX,AX
MOVDX,04A0H
MOVAX,7CH
OUTDX,AX
MOVAX,92H
OUTDX,AX
MOVDX,04A6H
MOVAX,0B6H
OUTDX,AX
MOVDX,04A4H
MOVAX,20H
OUTDX,AX
MOVAX,0
OUTDX,AX
JMP$
CODEENDS
ENDSTART
实验现象:
LED灯一亮一灭,灭的时间比亮的时间长一些。
2.将定时器2改为方式2分频器方式;观察其现象。
实验程序:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,36H
OUTDX,AX
MOVDX,04A0H
MOVAX,7CH
OUTDX,AX
MOVAX,92H
OUTDX,AX
MOVDX,04A6H
MOVAX,0B4H
OUTDX,AX
MOVDX,04A4H
MOVAX,20H
OUTDX,AX
MOVAX,0
OUTDX,AX
JMP$
CODEENDS
ENDSTART
实验现象:
LED灯在开始一段时间后亮灭一次就不再有现象
3.将GATE2接到开关上;观察其现象。
实验程序:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,34H
OUTDX,AX
MOVDX,04A0H
MOVAX,7CH
OUTDX,AX
MOVAX,92H
OUTDX,AX
MOVDX,04A6H
MOVAX,0B4H
OUTDX,AX
MOVDX,04A4H
MOVAX,20H
OUTDX,AX
MOVAX,0
OUTDX,AX
JMP$
CODEENDS
ENDSTART
实验现象:
将GATE2接到逻辑电平开关上,GATE2高电平时,LED亮灭有序,GATE2低电平时,LED不会有现象。
4.将GATE2接到PULP+开关上,计数器2改为方式1;观察其现象。
实验程序:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,36H
OUTDX,AX
MOVDX,04A0H
MOVAX,7CH
OUTDX,AX
MOVAX,92H
OUTDX,AX
MOVDX,04A6H
MOVAX,0B2H
OUTDX,AX
MOVDX,04A4H
MOVAX,4
OUTDX,AX
MOVAX,0
OUTDX,AX
JMP$
CODEENDS
ENDSTART
实验现象:
为了使实验更加准确,我们先测试了一下PULP+在没有按下时的电平状态为高电平。
在改为该题的要求后,测试结果是,在没有按下PULP+时,LED灯没有任何现象。
在按下PULP+时,按下后,灯亮灭一次就不再有变化。
说明是下降沿使能。
5.将GATE2接到PULP+开关上,计数器2改为方式5;观察其现象。
实验程序:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,04A6H
MOVAX,36H
OUTDX,AX
MOVDX,04A0H
MOVAX,7CH
OUTDX,AX
MOVAX,92H
OUTDX,AX
MOVDX,04A6H
MOVAX,0BAH
OUTDX,AX
MOVDX,04A4H
MOVAX,20H
OUTDX,AX
MOVAX,0
OUTDX,AX
JMP$
CODEENDS
ENDSTART
实验现象:
在没有按下PULP+时,LED灯没有任何现象。
在按下PULP+时,按下后松手的瞬间开始,灯亮灭一次就不再有变化。
说明是上升沿使能。
八、心得体会:
计数器方式等知识在理论课上并没有能够理解其用处,在调整计数器方式和分频器方式的过程中慢慢得到了了解。
实验四8250串行接口实验
一、实验目的
在实验箱与PC机(上位机)之间实现串行通信,主机每下传一个字符,若通讯正确,则下位机返回一个同样的字符;若不正确,则无返回值或者返回值不同。
二、实验容
1.熟悉串行通信的一般原理和8250的工作原理。
2.了解RS—232串行接口标准及连接方法。
3.掌握8250芯片的编程方法。
三、实验设备
微机实验教学系统实验箱、8086CPU模块
四、连线
五、实验步骤
(1)无须连线,部已经连好。
8250的端口地址为0480H起始的偶地址单元。
(2)编写下位机程序,编译后,全速运行。
(3)退出“8086实验系统”,运行“串口调试助手”上位机程序。
(4)将“串口调试助手”程序输入和输出都调整为16进制格式,发送一个16进制数,观察返回的是否是同样一个16进制数。
六、实验源程序
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,486H
MOVAX,80H
OUTDX,AX
MOVDX,480H
MOVAX,12
OUTDX,AX
MOVDX,482H
MOVAX,0
OUTDX,AX
MOVDX,486H
MOVAX,3
OUTDX,AX
MOVDX,482H
MOVAX,0
OUTDX,AX
MOVDX,48AH
INAX,DX
MOVDX,480H
INAX,DX
LOOP1:
CALLRECV
CALLSEND
JMPLOOP1
SEND:
PUSHAX
MOVDX,48AH
INAX,DX
TESTAX,20H
JNZSEND2
POPAX
JMPSEND
SEND2:
POPAX
MOVDX,480H
OUTDX,AX
RET
RECV:
MOVDX,48AH
INAX,DX
TESTAX,1
JZRECV
MOVDX,480H
INAX,DX
RET
CODEENDS
ENDSTART
七、思考题
1.连接8255,将接收到的16进制数;驱动8个彩灯;观察其现象。
硬件将CS0与CS8255片选端相连,将PB0~PB7与LED1~LED8依次相连。
程序如下:
CODESEGMENTPUBLIC
ASSUMECS:
CODE
ORG100H
START:
MOVDX,486H
MOVAX,80H
OUTDX,AX
MOVDX,480H
MOVAX,12
OUTDX,AX
MOVDX,482H
MOVAX,0
OUTDX,AX
MOVDX,486H
MOVAX,3
OUTDX,AX
MOVDX,482H
MOVAX,0
OUTDX,AX
MOVDX,48AH
INAX,DX
MOVDX,480H
INAX,DX
MOVDX,04A6H;设置8255的控制字
MOVAX,80H
OUTDX,AX
LOOP1:
CALLRECV
CALLSEND
MOVDX,04A2H;设置A口为输出口
OU