80c51单片机交通灯程序

80c51单片机交通灯程序,第1张

ORG 1000H

L:JNB P30,LP3

JNB P31,LP2 ;判断p31,p30口

;如果P30为1的话,正常运行交通灯

;如果P31为1的话,正常运行交通灯

;如果P31为0的话,依次点亮灯

;如果P30为0的话,停止交通灯,只有黄灯闪烁

;正常运行交通灯

LP1:

MOV P1,#61H

CLR P32

CLR P33

CLR P34

SETB P35 ;1,3 路口红灯亮,2,4 路口绿灯

LCALL DELAY1

MOV B,#04H ;设置循环次数为4次

M:MOV P1,#51H

CLR P35

SETB P34 ;1,3路口红灯亮,2,4路口黄灯亮

LCALL DELAY2

MOV P1,#41H

CLR P34 ;1,3路口红灯亮,2,4路口黄灯灭

LCALL DELAY2

DJNZ B,M

MOV P1,#0CH

SETB P32

SETB P33 ;1,3路口绿灯亮,2,4路口红灯亮

LCALL DELAY1

MOV B,#04H

N:MOV P1,#8AH

CLR P32 ;1,3路口黄灯亮,2,4路口红灯亮

LCALL DELAY2

MOV P1,#08H ;1,3路口黄灯灭,2,4路口红灯亮

LCALL DELAY2

DJNZ B,N

AJMP L

;黄灯闪

LP3: CLR P17

CLR P32

CLR P33

CLR P35

MOV P1,#92H

SETB P34 ;黄灯亮,其他的灯灭

LCALL DELAY2

MOV P1,#00H

CLR P34 ;所有的黄灯灭

LCALL DELAY2

AJMP L

;循环亮

LP2: CLR P32

CLR P33

CLR P34

CLR P35

MOV A,#01H ;赋初值

MOV R0,#08 ;循环变量,循环7次,控制7个灯

LOOP: MOV P1,A ;点亮第一个灯

LCALL DELAY2 ;延迟

RL A ;A的值加1,循环左移

DJNZ R0,LOOP ;RO的值减1不等于1则执行LOOP标号

SETB P32 ;P32灯亮

LCALL DELAY2 ;延迟

CLR P32 ;P32灯灭

SETB P33 ;下一个灯P33亮

LCALL DELAY2 ;延迟

CLR P33 ;P33灯灭

SETB P34 ;下一个灯P33亮

LCALL DELAY2 ;延迟

CLR P34 ;P34灯灭

SETB P35 ;P35灯亮

LCALL DELAY2 ;延迟

AJMP L

;延迟1

DELAY1 :

MOV R3,#200

DEL1: MOV R4,#250

DEL2: MOV R5,#50

DEL3: NOP ;空 *** 作

DJNZ R5,DEL3

DJNZ R4,DEL2

DJNZ R3,DEL1 ;延长5秒

RET

;延迟2

DELAY2 :

DEL4: MOV R3,#200

DEL5: MOV R4,#200

DEL6: NOP

DJNZ R4,DEL6

DJNZ R3,DEL5 ;延迟008秒

RET

END

ORG  0000H

LJMP START

ORG  0003H    ;INT 0 中断入口地址

LJMP INT0

ORG  0040H

START:

MOV SP,#60H

SETB EX0      ;INT 0 中断有效

SETB IT0

SETB EA

LCALL STATUS0 ;初始状态(都是红灯)

CIRCLE:

LCALL STATUS1 ;南北绿灯,东西红灯

LCALL STATUS2 ;南北绿灯闪转黄灯,东西红灯

LCALL STATUS3 ;南北红灯,东西绿灯

LCALL STATUS4 ;南北红灯,东西绿灯闪转黄灯

LJMP CIRCLE

INT0:

PUSH PSW      ;保护现场

PUSH 2

PUSH ACC

MOV DPTR,#8300H

MOV A,#0FH    ;南北,东西都亮红灯

MOVX @DPTR,A

MOV R2,#100   ;延时10秒

LCALL DELAY

POP ACC       ;恢复现场

MOVX @DPTR,A

POP 2

POP PSW

RETI

STATUS0:              ;南北红灯,东西红灯

MOV DPTR,#8300H

MOV A,#0FH

MOVX @DPTR,A

MOV R2,#10    ;延时1秒

LCALL DELAY

RET

STATUS1:              ;南北绿灯,东西红灯

MOV DPTR,#8300H

MOV A,#96H    ;南北绿灯,东西红灯

MOVX @DPTR,A

MOV R2,#200   ;延时20秒

LCALL DELAY

RET

STATUS2:              ;南北绿灯闪转黄灯,东西红灯

MOV DPTR,#8300H

MOV R3,#03H   ;绿灯闪3次

FLASH:

MOV A,#9FH

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

MOV A,#96H

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

DJNZ R3,FLASH

MOV A,#06H    ;南北黄灯,东西红灯

MOVX @DPTR,A

MOV R2,#10    ;延时1秒

LCALL DELAY

RET

STATUS3:              ;南北红灯,东西绿灯

MOV DPTR,#8300H

MOV A,#69H

MOVX @DPTR,A

MOV R2,#200   ;延时20秒

LCALL DELAY

RET

STATUS4:              ;南北红灯,东西绿灯闪转黄灯

MOV DPTR,#8300H

MOV R3,#03H   ;绿灯闪3次

FLASH1:

MOV A,#6FH

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

MOV A,#69H

MOVX @DPTR,A

MOV R2,#03H

LCALL DELAY

DJNZ R3,FLASH1

MOV A,#09H   ;南北红灯,东西黄灯

MOVX @DPTR,A

MOV R2,#10   ;延时1秒

LCALL DELAY

NOP

RET

DELAY:                ;延时子程序

PUSH 2

PUSH 1

PUSH 0

DELAY1:

MOV 1,#00H

DELAY2:

MOV 0,#0B2H

DJNZ 0,$

DJNZ 1,DELAY2 ;延时 100 mS

DJNZ 2,DELAY1

POP 0

POP 1

POP 2

RET

END

这是我们的实验,程序肯定没问题。至于ULN2803,只是一个增大电流,电压的芯片,因为51单片机本身的电流太小。你改一下就好。至于其他不明白的地方,可以交流。QQ375778861

以上就是关于80c51单片机交通灯程序全部的内容,包括:80c51单片机交通灯程序、AT89S51 单片机控制交通灯程序(汇编语言)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9838430.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-02
下一篇2023-05-02

发表评论

登录后才能评论

评论列表(0条)

    保存