ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV SP,#60H
; LCALL DIR ;调用日期、时间显示子程序
LOOP:
MOV P1,#0FFH
LJMP TEST
LCALL ROAD1 ;路口1的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
MOV P1,#0FFH ;恢复P1口高电平
LCALL RESET ;恢复8155各口为高电平
LCALL YELLOW1 ;路口1的车直行-->路口2的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
LCALL RESET ;恢复8155各口为高电平
MOV P1,#0FFH ;恢复P1口
LCALL ROAD2 ;路口2的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
LCALL RESET ;恢复8155A 、B口为高电?
MOV P1,#0FFH ;恢复P1口高电平
LCALL YELLOW2 ;路口2的车直行-->路口3的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
LCALL RESET ;恢复8155A 、B口为高电?
MOV P1,#0FFH ;恢复P1口高电平
LCALL ROAD3 ;路口3的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
LCALL RESET ;恢复8155A 、B口为高电?
MOV P1,#0FFH ;恢复P1口高电平
LCALL YELLOW3 ;路口3的车直行-->路口4的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
LCALL RESET ;恢复8155各口为高电平
MOV P1,#0FFH ;恢复P1口高电平
LJMP TEST
LCALL ROAD4 ;路口4的车直行时各路口灯亮情况
LCALL DLY30s ;延时30秒
SETB P1.5 ;恢复P1.5高电平
SETB P1.4 ;恢复P1.4高电平
MOV DPTR,#0FFFFH ;恢复8155各口为高电平
LCALL YELLOW4 ;路口4的车直行-->路口1的车直行黄灯亮情况
LCALL DLY5s ;延时5秒
SETB P1.6 ;恢复P1.6高电平
SETB P1.3 ;恢复P1.3高电平
MOV DPTR,#0FFFFH ;恢复8155各口为高电平
LJMP LOOP
;路口1的车直行时各路口灯亮情况3a3b2p绿3c红+4a4b4c3p全红+1c绿1a1b4p红+2c绿2a2b1p红
ROAD1:
MOV DPTR,#7F00H ;置8155命令口地址;无关位为1)
MOV A,#03H ;A口、B口输出,A口、B口为基本输入输出方式
MOVX @DPTR,A ;写入工作方式控制字
INC DPTR ;指向A口
MOV A,#79H ;1a1b4p红1c绿2a2b1p红
MOVX @DPTR,A
INC DPTR ;指向B口
MOV A,#0E6H ;3a3b2p绿3c红4a4b3p红
MOVX @DPTR,A
MOV P1,#0DEH ;4c红2c绿
RET
6、结语
本系统结构简单,操作方便;可现自动控制,具有一定的智能性;对优化城市交通具有一定的意义。
本设计将各任务进行细分包装,使各任务保持相对独立;能有效改善程序结构,便于模块化处理,使程序的可读性、可维护性和可移植性都得到进一步的提高。
6、参考资料
[1] 韩太林,李红,于林韬;单片机原理及应用(第3版)。电子工业出版社,2005
[2] 刘乐善,欧阳星明,刘学清;微型计算机接口技术及应用。华中理工大学出版社,2003
[3] 胡汉才;单片机原理及其接口技术。清华大学出版社,2000
|