微机原理实验报告.docx
《微机原理实验报告.docx》由会员分享,可在线阅读,更多相关《微机原理实验报告.docx(12页珍藏版)》请在冰点文库上搜索。
微机原理实验报告
班级学号姓名实验组别
实验日期2010/12/24室温报告日期2010/12/26成绩
报告内容:
(目的和要求,原理,步骤,数据,计算,小结等)
实验名称:
可编程并行接口8255实验
一、实验目的:
了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。
二、实验设备:
(1)PC机一台;
(2)QTH-8086B16位微机教学实验仪一套。
三、实验说明
1、8255A的内部结构:
(1)数据总线缓冲器:
这是一个双向三态的8位数据缓冲器,它是8255A与微机系统数据总线的接口。
输入输的数据、CPU输出的控制字以及CPU输入的状态信息都是通过这个缓冲器传送的。
(2)三个端口A,B和C:
A端口包含一个8位数据输出锁存器和缓冲器,一个8位数据输入锁存器。
B端口包含一个8位数据输入/输出锁存器和缓冲器,一个8位数据输入缓冲器。
C端口包含一个8位数据输出锁存器及缓冲器,一个8位数据输入缓冲器(输入没有锁存器)。
(3)A组和B组控制电路:
这是两组根据CPU输出的控制字控制8255工作方式的电路,它们对于CPU而言,共用一个端口地址相同的控制字寄存器,接收CPU输出的一字节方式控制字或对C口按位复位字命令。
方式控制字的高5位决定A组工作方式,低3位决定B组的工作方式。
对C口按位复位命令字可对C口的每一位实现置位或复位。
A组控制电路控制A口和C口上半部,B组控制电路控制B口和C口下半部。
(4)读写控制逻辑:
用来控制把CPU输出的控制字或数据送至相应端口,也由它来控制把状态信息或输入数据通过相应的端口送到CPU。
2、8255A的工作方式:
方式0—基本输入输出方式;方式1—选通输入输出方式;方式2—双向选通输入输出方式。
3、8255A的状态字:
图18255方式1的状态字
图28255方式2的状态字
4、8255A的控制字:
1
D6
D5
D4
D3
D2
D1
D0
特
征
位
A组方式
00=方式01=方式1
1X=方式2
A口
0=输出
1=输入
C口高4位
0=输出
1=输入
B组方式
0=方式0
1=方式1
B口
0=输出
1=输入
C口低4位
0=输出
1=输入
图38255A方式控制字
0
D6
D5
D4
D3
D2
D1
D0
特征位
不用
位选择
000=C口0位……111=C口7位
0=复位
1=置位
图4C口按位置位/复位控制字
四、实验原理图
图5可编程并行接口8255电路
五、实验内容
(1)流水灯实验:
利用8255的A口循环点亮发光二极管。
(2)交通灯实验:
利用8255的A口模拟交通信号灯。
(3)I/O输入输出实验:
利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。
六、实验步骤
1、流水灯实验:
(1)实验连线
Ø该模块的WR、RD分别连到MCU主模块的WR、RD。
Ø该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
Ø8255模块选通线CE连到MCU主模块的地址A15。
Ø8255的PA0~PA7连到发光二极管的L0~L7。
(1)运行程序:
(2)XunHuan.ASM,观察发光二极管。
图6流水灯实验
图7交通灯实验
图8I/O输入输出实验
2、交通灯实验:
(1)实验连线:
Ø该模块的WR、RD分别连到MCU主模块的WR、RD。
Ø该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
Ø8255模块选通线CE连到MCU主模块的地址A15。
Ø8255的PA0-L7、PA1-L6、PA2-L5、PA3-L3、PA4-L2、PA5-L1。
(2)运行程序:
Trac.ASM,观察发光二极管。
3、I/O输入输出实验:
(1)实验连线
a)该模块的WR、RD分别连到MCU主模块的WR、RD。
b)该模块的数据(AD0~AD7)、地址线(A0~A7)分别连到MCU主模块的数据(AD0~AD7)、地址线(A0~A7)。
c)8255模块选通线CE连到MCU主模块的地址A15。
d)8255的PA0~PA7接开关K0~K7,8255的PB0~PB7接发光二极管L0~L7。
(2)运行程序:
Kaiguan.ASM;拨动开关,观察发光二极管。
七、实验程序
1、流水灯程序
;PA口接L1~L8
PAGE60,132
.MODELsmall
.STACK20h
.DATA20h
A8255EQU7000H
B8255EQU7001H
C8255EQU7002H
D8255EQU7003H
.CODE
ORG0000H
DD0000FFF0H
DD0000FE80H
DD0000FE80H
ORG0270H
MAIN:
MOVSP,9000H
MOVDX,D8255;状态字
MOVAL,80H;方式0输出
OUTDX,AL
MOVDX,A8255
MAIN1:
CALLRIGHT
CALLLEFT
CALLALLON
CALLALLOFF
JMPMAIN1
;*************************************************************************
;/*右移子程序*/
;*************************************************************************RIGHT:
MOVCL,08H
MOVAL,0FFH
CLC
RIGHT1:
RCRAL,1
OUTDX,AL
CALLDELAY
LOOPRIGHT1
RET
;*************************************************************************
;/*左移子程序*/
;*************************************************************************
LEFT:
MOVCL,08H
MOVAL,0FFH
CLC
LEFT1:
RCLAL,1
OUTDX,AL
CALLDELAY
LOOPLEFT1
RET
;*************************************************************************;/*全亮子程序*/
;*************************************************************************ALLON:
INAL,00H
OUTDX,AL
CALLDELAY
RET
;*************************************************************************;/*全灭子程序*/
;*************************************************************************
ALLOFF:
INAL,0FFH
OUTDX,AL
CALLDELAY
RET
;*************************************************************************;/*延时子程序*/
;*************************************************************************
DELAY:
PUSHCX
MOVCX,0FFFFH
LOOP$
POPCX
RET
END
2、交通灯程序
PAGE60,132
.MODELsmall
.STACK20h
.DATA20h
A8255EQU7000H
B8255EQU7001H
C8255EQU7002H
D8255EQU7003H
.CODE
ORG0000H
DD0000FFF0H
DD0000FE80H
DD0000FE80H
ORG0270H
MAIN:
MOVSP,9000H
TRAFFIC:
MOVDX,D8255;状态口
MOVAL,80H;方式0输出
OUTDX,AL
MOVDX,A8255;PA口地址
CALLST0
TRAFFIC1:
CALLST1
CALLST2
CALLST3
CALLST4
JMPTRAFFIC1
;*************************************************************************;/*初始状态全为红灯*/
;*************************************************************************
ST0:
MOVAL,1BH
OUTDX,AL
CALLDELAY
RET
;*************************************************************************;/*南北为绿灯,东西为红灯子程序*/
;*************************************************************************
ST1:
MOVAL,33H
OUTDX,AL
CALLDELAY1
CALLDELAY1
CALLDELAY1
CALLDELAY1
CALLDELAY1
CALLDELAY1
RET
;*************************************************************************;/*南北红灯闪烁,东西为红灯子程序*/
;*************************************************************************
ST2:
MOVCL,5H
ST20:
MOVAL,2BH
OUTDX,AL
CALLDELAY1
MOVAL,3BH
OUTDX,Al
CALLDELAY1
LOOPST20
RET
;*************************************************************************;/*南北为红灯,东西为绿灯子程序*/
;*************************************************************************
ST3:
MOVAL,1EH
OUTDX,AL
CALLDELAY1
CALLDELAY1
CALLDELAY1
CALLDELAY1
CALLDELAY1
CALLDELAY1
RET
;*************************************************************************;/*南北为红灯,东西黄灯闪烁子程序*/
;*************************************************************************
ST4:
MOVCL,5H
ST40:
MOVAL,1DH
OUTDX,AL
CALLDELAY1
MOVAL,1FH
OUTDX,AL
CALLDELAY1
LOOPST40
RET
;*************************************************************************;/*延时子程序*/
;*************************************************************************
DELAY1:
PUSHCX
MOVCX,0FFFFH
LOOP$
POPCX
RET
DELAY:
PUSHCX
MOVCX,0FFH
LOOP$
POPCX
RET
END
3、开关控制程序:
PAGE60,132
.MODELsmall
.STACK20h
.DATA20h
A8255EQU7000H
B8255EQU7001H
C8255EQU7002H
D8255EQU7003H
.CODE
ORG0000H
DD0000FFF0H
DD0000FE80H
DD0000FE80H
ORG0270H
start:
MOVSP,9000H
MOVDX,D8255;8255控制口口地址
MOVAL,90H;控制字
OUTDX,AL
S1:
MOVDX,A8255;读A口数据
INAL,DX
MOVDX,B8255
OUTDX,AL;送B口
JMPS1
END
八、实验结果
运行第一个流水灯程序以后,先是左边第一个LED灯亮,然后亮的灯的位置依次想右移动一个位置,然后到最右端以后再一次向左移动一个位置,再到顶端以后,LED灯全部点亮,然后全部熄灭;
运行第二个交通灯控制程序以后,先是两边都是红灯、然后一边是红灯的时候另一边是绿灯,然后状态交换,实现对交通控制灯的模拟;
运行第三个开关控制程序时,所有的发光二极管的亮灭状态和对应的控制开关状态相一致,改变开关的状态,则它对应控制的发光二极管的亮灭状态也随之改变。
九、实验小结
在前几次实验的经验和教训的基础上,这一次综合性的实验进行得还是比较顺利的,并且通过这次实验也系统地更深入地了解了8255这一功能比较综合、全面的芯片。
在做交通灯控制实验的时候,观察发现两边的状态其实不对称,后来检查程序没有错误,分析后发现是一边的黄灯对应的发光二极管出现了问题,不能亮。