當前位置:編程學習大全網 - 編程語言 - AT89S51 單片機控制交通燈程序(匯編語言)

AT89S51 單片機控制交通燈程序(匯編語言)

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

  • 上一篇:asan對程序性能的影響
  • 下一篇:如何開啟商城模塊,實現在線支付
  • copyright 2024編程學習大全網