实验一 交通灯控制8255A

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二交通灯控制实验(8255A)

一、实验目的

1、掌握并行接口8255的基本原理

2、掌握8255的编程方法

二、实验内容

如图所示,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通变化规律燃灭。

三、编程提示

1、8255地址分析:控制寄存器地址: 021BH

A口地址: 0218H

C口地址: 021AH

2、十字路口交通灯的变化规律要求

(1)南北路口的绿灯、东西路口的红灯同时亮三秒;

(2)南北路口的黄灯闪烁三次,同时东西路口的红灯继续亮;

(3)南北路口的红灯、东西路口的绿灯同时亮三秒;

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁三次;

(5)转(1)重复。

3、C口置数分析

由于发光二极管是共阴极相连,所以若要其发亮应给高电平;黄灯闪烁是让其不断交替亮灭来实现;同时分析可知只要有绿灯亮,灯就会持续亮三秒,黄灯亮就会闪烁三次。

四、汇编语言程序

STACKA SEGMENT STACK

DB 100H DUP(?)

STACKA ENDS

CODE SEGMENT

ASSUME CS:CODE

START: MOV AL,10000000B ;A口输出,C口输出

MOV DX,021BH

OUT DX,AL

L0: MOV AL,00100100B ;南北绿灯亮,东西红灯亮

MOV DX,021AH

CALL DALLY ;长延时

MOV CX,3 ;黄灯闪烁次数

L1: MOV AL,01000100B ;南北黄灯闪烁,东西红灯亮 OUT DX,AL

CALL DALLY1 ;短延时

MOV AL,00000100B

OUT DX,AL

CALL DALLY1 ;短延时

LOOP L1

MOV AL,10000001B ;南北红灯亮,东西绿灯亮

OUT DX,AL

CALL DALLY ;长延时

MOV CX,3

L2: MOV AL,10000010B ;南北红灯亮,东西黄灯闪烁 OUT DX,AL

CALL DALLY1 ;短延时

MOV AL,10000000B

OUT DX,AL

CALL DALLY1 ;短延时

LOOP L2

MOV DL,0FFH ;有键按下吗?

MOV AH,06H

INT 21H

JZ L0 ;无键按下则ZF=1,跳转重复 MOV AH,4CH

INT 21H ;返回DOS

DALLY PROC ;长延时程序

PUSH DX

PUSH CX

PUSH AX

MOV CX,0FFFFH

T1: MOV AX,0FFFFH

T2: DEC AX

JNZ T2

LOOP T1

POP AX

POP CX

POP DX

RET

DALLY ENDP

DALLY1 PROC ;短延时程序

PUSH DX

MOV CX,0FFFFH

T3: MOV DX,4000H

T4: DEC DX

JNZ T4

LOOP T3

POP DX

POP CX

RET

DALLY1 ENDP

CODE ENDS

END START

五、程序设计流程图

开始

设置8255C口

南北路口的绿灯、东西路口的红灯亮

长延时

南北路口的黄灯闪烁,东西路口红灯亮

南北路口的红灯、东西路口的绿灯亮

长延时

南北路口红灯亮、东西路口黄灯亮闪烁

N

有键按下吗?

Y

返回DOS

六、总结

交通灯实验程序编写的过程中,最常遇到的问题主要是由于延时时间的不确定所导致的

闪烁不明显,因此必须设定足够长时间的延迟才能使人眼分辨。在本例中,我采用较为简单循环嵌套结构。经过多次计算后最终确定了长亮时嵌套两层0FFFFH,闪烁时嵌套一层0FFFH和一层4000H。实验效果比较理想。8255A的工作原理比较简单,实验现象也十分稳定,实验整体比较顺利。

相关文档
最新文档