//****用p0口德八个引脚控制交通灯闪烁P2.5——p2.7分别代表东西路口的红黄绿灯P2.0—-p2.2分别代表南北路口的红黄绿灯
//****1.开始时东西红灯亮南北绿灯亮(延时10s) ****//
//****2.然后东西红灯亮南北黄灯闪烁3次(亮一秒,灭一秒)****//
//****3.然后东西绿灯亮南北红灯亮(延时10s)****//
//****4.然后东西黄灯闪烁3次(亮一秒,灭一秒)****//
//****5.返回的第一步继续循环****//
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP T1INT1
ORG 0030H
MAIN: MOV P2,#00100100B
MOV A,#06
DINGSHI:
AA3: MOV R1,#03
MOV R2,#03
MOV R7,#20
AA2: MOV TMOD,#10H
MOV TH1,#3CH
MOV TL1,#0BDH
SETB ET1
SETB EA
SETB TR1
T1INT1:DJNZ R7,ZD1 //***定时1S***//
DEC A
MOV R6,A
LCALL XIANSHI
MOV A,R6
CJNE A,#3,ZD4
JNB P2.0,ZD2
LJMP ZD3
ZD2: SETB P2.1 //***南北黄灯闪烁***//
DEC A
MOV R6,A
LCALL XIANSHI
MOV A,R6
CLR P2.1
DJNZ R1,ZD2
MOV P2,#10000001B //****东西绿灯亮南北红灯亮****//
MOV A,#06
LJMP ZD4
ZD3:SETB P2.6 //***东西黄灯闪烁***//
DEC A
MOV R6,A
LCALL XIANSHI
MOV A,R6
CLR P2.6
DJNZ R2,ZD3
MOV P2,#00100100B //***东西红灯亮南北绿灯亮***//
MOV A,#06
LJMP ZD4
ZD1: CLR TF0
LJMP AA2
ZD4:CLR TF0
LJMP AA3
RETI
DELAY1s:MOV R3,#10 //***延时函数(1s)***//
MOV TMOD,#01H
LOOP:MOV TH0,#1FH
MOV TL0,#0F6H
SETB TR0
LOOP1:JBC TF0,LOOP2
SJMP LOOP1
LOOP2:CLR TR0
DJNZ R3,LOOP
RET
XIANSHI:ANL A,#0FH
MOV R4,A
ANL A,#0F0H
SWAP A
MOV R5,A
MOV A,R4
MOV DPTR,#LEDMAP
MOVC A,@A+DPTR
CLR P2.3
MOV P0,A
SETB P2.3
MOV A,R5
MOVC A,@A+DPTR
CLR P2.4
MOV P0,A
SETB P2.4
RET
DELAY1ms:CLR TF0
MOV TMOD,#00H
MOV TH0,#1CH
MOV TL0,#18H
SETB TR0
RET
LEDMAP:db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db 7fh,6fh,77h,7ch,39h,5eh,79h,71h
RET
NOP
NOP
end
求大神查错
这个程序是自己写的,似乎问题不小啊,中断到底怎么用啊,但这个程序可以用keil4进行软件仿真,用protutes7,就没有理想的结果。
我感觉显示那块有点问题,还有就是定时器,延时程序都不太对,现在想大神指点一下,或者费神根据本帖用汇编写一下,万分感谢。
|