内容发布更新时间 : 2024/12/23 18:08:46星期一 下面是文章的全部内容请认真阅读。
MOV P1, #0FFH ZA: SETB P1.7 ACALL DELAY CLR P1.7 ACALL DELAY JNB P3.2, ZA SETB EX0 RETI END
实验七 8255控制交通灯
一、实验目的
了解8255芯片的结构及编程方法,学习模拟交通灯控制的实现方法。
二、实验内容
用8255做输出口,控制十二个发光二极管燃灭,模拟交通灯管理。
三、程序框图
四、实验电路
-36-
五、实验过程
假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态2,东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态3,南北绿灯通车,东西红灯。过一段时间转状态 4,南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。
实验中调用延时子程序实现交通灯点亮持续一段时间再转变。通过对输出口写入特定数值,实现灯亮灭的控制。延时程序可通过对R2寄存器的压栈和出栈操作实现。在程序实现的过程中,需要对现场进行保护和恢复。交通灯闪烁由调用较短延时实现。
六、实验结果及分析
在连续运行方式下,初始态为四个路口的红灯全亮之后,东西路口的绿灯亮南北路口的红灯亮,东西路口方向通车。延时一段时间后东西路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北路口方向开始通车,延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪耀。闪耀若干次后,再切换到东西路口方向。之后重复以上过程。
问题回答:东西方向的红灯是L6和L12。
七、实验源程序
ORG 0BB0H
;制定一个空间
;设置堆栈首地址 ;写控制字的地址FFDB
D0: MOV SP, #60H MOV DPTR, #0FFDBH
MOV A, #80H
;控制字A口输出工作在方式0 ,C口高4位输出,C口低4位输出工作在方式0,B口输出 MOVX @DPTR, A MOV DPTR, #0FFD8H
MOV A, #0B6H MOVX @DPTR, A INC DPTR
MOV A, #0DH MOVX @DPTR, A MOV R2, #25H LCALL DELY D1: MOV DPTR, #0FFD8H MOV A, #75H
MOVX @DPTR, A INC DPTR
MOV A, #0DH
;00001101点亮3号灯 ;01110101点亮5 9 11 ;00001101点亮3号灯 ;点亮4个红灯 ;设定一个延时时间 ;延时
;101100110点亮6 9 12号灯 ;设置控制字
-37-
MOVX @DPTR, A MOV R2, #55H LCALL DELY MOV R7, #05H D2: MOV DPTR, #0FFD8H
MOV A, #0F3H ;东西绿灯亮,南北红灯亮 ;设定一个延时时间 ;延时
;设定闪烁次数
;11110011 点亮9 10
MOVX @DPTR, A INC DPTR
MOV A, #0CH MOVX @DPTR, A MOV R2, #20H LCALL DELY MOV DPTR, #0FFD8H
MOV A, #0F7H MOVX @DPTR, A INC DPTR
MOV A, #0DH MOVX @DPTR, A MOV R2, #20H
LCALL DELY DJNZ R7,D2 MOV DPTR, #0FFD8H MOV A, #0AEH
MOVX @DPTR, A INC DPTR
MOV A, #0BH MOVX @DPTR, A MOV R2, #55H
LCALL DELY MOV R7, #05H D4: MOV DPTR, #0FFD8H
MOV A, #9EH ;1100点亮3 4
;东西黄灯亮,南北红灯亮 ;设定一个延时时间 ;延时
;11110111点亮9号灯
;00001101点亮3号灯 ;南北红灯亮
;延时
;闪烁次数未到继续
;10101110点亮6 8 12
;1011点亮2号
;东西红灯亮,南北绿灯亮
;延时 ;闪烁次数
;10011110点亮6 7 12
-38-
MOVX @DPTR, A INC DPTR
MOV A, #07H MOVX @DPTR, A MOV R2, #20H
LCALL DELY MOV DPTR, #0FFD8H
MOV A, #0BEH MOVX @DPTR, A INC DPTR
MOV A, #0FH MOVX @DPTR, A MOV R2, #20H
LCALL DELY DJNZ R7,D4 LJMP D1 ;--------------------------------------------- DELY: PUSH 02H DEL2: PUSH 02H
DEL3: PUSH 02H DEL4: DJNZ R2, DEL4 POP 02H DJNZ R2, DEL3 POP 02H DJNZ R2, DEL2 POP 02H DJNZ R2, DELY RET
;--------------------------------------------- END
;延时
;延时
;闪烁次数未到继续 ;循环
;把1号黄灯灭了 ;东西红灯亮
;10111110点亮6 12——把7号黄灯灭了 ;延时
;0111点亮1号
;东西红灯亮,南北黄灯亮
实验十九 小直流电机调速试验
-39-