微机原理十字路口红绿灯闪烁实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三十字路口红绿灯闪烁实验
一、实验目的
通过对红绿黄灯的控制,熟练掌握8255A接口芯片的编程方法
二、实验内容
对8255A接口芯片进行编程,使红黄绿发光二级管按照十字路口交通灯的形式点亮或者熄灭。
三、线路连接
发光二级管共8个,其中两组红黄绿灯用六个,L2、L3、L4为一组,L5、L6、L7、为一组;试验台连接如图所示。高电平时,灯点亮。
四、编程提示
1、红、黄、绿灯变化规律
设有一个十字路口,两组灯分别代表东西和南北两个方向,其红黄绿灯变化规律为:
(1)两个路口红灯全亮
(2)南北路口绿灯亮,东西路口红灯亮
(3)南北路口绿灯灭,东西路口红灯亮
(4)两个路口黄灯闪烁
(5)两个路口红灯全亮
(6)东西路口绿灯亮,南北路口红灯亮
(7)东西路口绿灯灭,南北路口红灯亮
(8)两个路口黄灯闪烁
(9)转向(2)循环执行
2. 设置8255A 方式控制字
设置8255A 的端口C 工作在方式0,为输出。D0、D1控制绿灯,D2、D3控制黄灯,D4、D5控制红灯。需要点亮哪一位指示灯时,8255A 相应端口对应为就输出“1”。
五、流程图
N
两个路口红灯亮
延时
南北路口绿灯亮,东西路口红灯亮 有键按下?
延时 南北路口绿灯灭 两个路口黄灯闪烁 两个路口红灯亮 延时
显示提示信息 东西路口绿灯灭 读端口C 数据并保存 两个路口红灯亮
延时 设控制字为80H(端口C 均为输出)
东西路口绿灯亮,南北路口红灯亮 延时 两个路口黄闪烁 设控制字为81H(端口C 低四位为输入) 读/写 开始
六、实验程序
DATA SEGMENT
IOPORT EQU 0D880H-280H
IO8255C EQU IOPORT+282H
IO8255T EQU IOPORT+283H
PB DB ?
MESS DB 'ENTER ANY KEY CAN EXIT TO DOS!',0DH,0AH,'$' DATA ENDS
STACK SEGMENT STACK
STA DW 50 DUP(?)
TOP EQU LENGTH STA
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AH,09H
MOV DX,OFFSET MESS
INT 21H
MOV DX,IO8255T
MOV AL,81H
OUT DX,AL
MOV DX,IO8255C
IN AL,DX
MOV PB,AL
MOV DX,IO8255T
MOV AL,80H
OUT DX,AL
MOV DX,IO8255C
MOV AL,PB
OR AL,0CH
OUT DX,AL
MOV AL,30H
OUT DX,AL
CALL DELAY10
LLL: MOV DX,IO8255C
MOV AL,12H
OUT DX,AL
CALL DELAY10
CALL DELAY10
CALL DELAY10
CALL DELAY10
OUT DX,AL
MOV CX,0040H TTT: MOV AL,0CH
OUT DX,AL
PUSH CX
MOV CX,80H
LOP1: CALL DELAY1
LOOP LOP1
MOV AL,00H
OUT DX,AL
MOV CX,80H
LOP2: CALL DELAY1
LOOP LOP2
POP CX
LOOP TTT
MOV AL,30H
OUT DX,AL
CALL DELAY10 MOV AL,21H
OUT DX,AL
CALL DELAY10 CALL DELAY10 CALL DELAY10 CALL DELAY10 MOV AL,20H
OUT DX,AL
MOV CX,0040H GGG: MOV AL,0CH OUT DX,AL
PUSH CX
MOV CX,80H LOP3: CALL DELAY1 LOOP LOP3
MOV AL,00H
OUT DX,AL
MOV CX,80H
LOP4: CALL DELAY1
LOOP LOP4
POP CX
LOOP GGG
MOV AL,30H
OUT DX,AL
CALL DELAY10
MOV DL,0FFH
INT 21H
JNZ PPP
JMP LLL
PPP: MOV AX,4C00H
INT 21H
DELAY1 PROC NEAR
PUSH CX
MOV CX,0FFFFH
CCC: LOOP CCC
POP CX
RET
DELAY1 ENDP
DELAY10 PROC NEAR
PUSH AX
PUSH CX
MOV CX,0F00H
UUU: CALL DELAY1
LOOP UUU
POP CX
POP AX
RET
DELAY10 ENDP
CODE ENDS
END START
七、实验步骤
1、在windows环境下,打开“开始”菜单,选择“运行”项,然后输入”CMD”,按“确定”进去DOS环境。
2、输入“E:”回车,输入“CD MASM”回车。
3、输入“EDIT ZF1.ASM”回车,进入编辑状态,将以上源程序写入,完成后,如下图,按“Alt+F”打开文件菜单,选“Save”存盘,选“Exit”退出编辑状态。
4、对原程序进行汇编连接,输入“ML ZF1.ASM”回车
5、打开扩展卡I/O端口地址,用ALLOWIO命令打开I/O端口地址:
输入“RUN”回车。
6、按实验电路图1接好线,给实验箱通电。
输入“NT”回车,即可看到按一定规律变化的红黄绿灯。