51单片机对交通灯的控制设计

控制/MCU

1878人已加入

描述

用的是51系列的单片机,说一下,MARK标志位其关键作用。

下面是仿真图

51单片机

LED0 EQU P1

LED2 EQU P2

LED1 EQU P0

MARK BIT 00H

MARK1 BIT 01H

TIME EQU 30H;时间缓冲区

SHI EQU 31H ;时长数据缓冲区!

KEY EQU P3.2

KEY1 EQU P3.3

CTH EQU (65536-50000)/256

CTL EQU (65536-50000) MOD 256

ORG 0000H

JMP START

ORG 0003H

JMP INT_0

ORG 000BH

JMP TIME0

ORG 0030H

START: MOV P1,#00H

MOV P0,#0FFH

MOV P2,#0FFH

MOV DPTR,#ABC

MOV SP,#5FH

MOV SHI,#20

MOV R0,SHI

MOV R7,#20

CLR MARK

CLR MARK1

MOV TMOD,#01H

MOV TH0,#CTH;初始指针

MOV TL0,#CTL

SETB EA

SETB IT0

SETB EX0

SETB ET0

SETB TR0

MOV TIME,R0

CALL DISPLAY

MAIN: MOV LED0,#21H;北,红灯亮

CJNE R0,#3,MAIN

MOV SHI,#04

NEXT: MOV R6,#3

A1: MOV LED0,#01H

CALL DELAY_500MS

MOV LED0,#21H

CALL DELAY_500MS

DJNZ R6,A1

S1: JBC MARK,A2

SJMP S1

A2: MOV LED0,#11H; BEI HUANG DENG LIANG

MOV SHI,#20

JBC MARK,MAIN1

SJMP A2

MAIN1: MOV LED0,#0CH ;XI HONG DENG LIANG

CJNE R0,#3,MAIN1

MOV SHI,#04

NEXT1: MOV R6,#3

A3: MOV LED0,#08H

CALL DELAY_500MS

MOV LED0,#0CH

CALL DELAY_500MS

DJNZ R6,A3

S2: JBC MARK,A4

SJMP S2

A4: MOV LED0,#0AH

MOV SHI,#20

JBC MARK,MAIN

SJMP A4

DELAY_500MS:

MOV R5,#20

K1: MOV R4,#50

K2: MOV R3,#250

DJNZ R3,$

DJNZ R4,K2

DJNZ R5,K1

RET

DISPLAY:MOV A,TIME

MOV B,#10

DIV AB

MOVC A,@A+DPTR

MOV LED2,A

MOV A,B

MOVC A,@A+DPTR

MOV LED1,A

RET

ABC: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H

INT_0: PUSH ACC

PUSH PSW

SETB RS1

SETB RS0

MOV R5,#70

K4: MOV R4,#250

DJNZ R4,$

DJNZ R5,K4

JB KEY,ITT_2

MOV TIME,#20

CALL DISPLAY

ITT_1: MOV LED0,#00010010B

CALL DELAY_500MS

MOV LED0,#00H

JNB KEY,ITT_2

CALL DELAY_500MS

JB KEY,ITT_1

ITT_2: JNB KEY ,$

POP PSW

POP ACC

RETI

TIME0: PUSH ACC

PUSH PSW

MOV TH0,#CTH;初始指针

MOV TL0,#CTL

DJNZ R7,TIME1

MOV R7,#20

DJNZ R0,TIME2

SETB MARK

MOV R0,SHI

TIME2: MOV TIME,R0

CALL DISPLAY

TIME1: POP PSW

POP ACC

RETI

END

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分