當前位置:編程學習大全網 - 編程語言 - 求C51單片機匯編語言控制兩位數碼管倒計時程序,最好能說明下思路

求C51單片機匯編語言控制兩位數碼管倒計時程序,最好能說明下思路

查詢方式:

ORG 00H

START: MOV R0,#20

MOV R4,#60

LP0: MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H

MOV DPTR,#TABLE

SETB TR0

LP1: JBC TF0,LP2

ACALL DISP

AJMP LP1

LP2: DJNZ R0,LP0

CLR TR0

MOV R0,#20

MOV A,R4

CJNE A,#0,DEC1

MOV R4,#60

AJMP JP1

DEC1: DEC A

MOV R4,A

JP1: ACALL DISP

AJMP LP0

DISP: MOV A,R4

MOV B,#10

DIV AB ;當前值除以10

MOV 20H,A ;得出的商送給十位

MOV 21H,B ;得出的余數送給個位

MOV A,20H ;十位顯示

MOVC A,@A+DPTR

MOV P0,A

SETB P2.1

LCALL DELAY

CLR P2.1

MOV A,21H ;個位顯示

MOVC A,@A+DPTR

MOV P0,A

SETB P2.0

LCALL DELAY

CLR P2.0

RET

DELAY: ;誤差 0us

MOV R6,#10

DL0:

MOV R5,#50

DJNZ R5,$

DJNZ R6,DL0

RET

TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;***陽極0-9顯示代碼

DB 92H,82H,0F8H,80H,90H

END

中斷方式:

ORG 00H

AJMP MAIN

ORG 0BH

AJMP T0INT

ORG 30H

MAIN:

MOV TMOD,#01H

MOV TH0,#3CH

MOV TL0,#0B0H ;50MS壹中斷

MOV R0,#20 ;20次為1S

MOV R4,#60 ;60S開始倒計時

SETB EA

SETB ET0

SETB TR0

MOV DPTR,#TABLE

MAIN1:

ACALL DISP

AJMP MAIN1

DISP:

MOV A,R4

MOV B,#10

DIV AB ;當前值除以10

MOV 20H,A ;得出的商送給十位

MOV 21H,B ;得出的余數送給個位

MOV A,20H ;十位顯示

MOVC A,@A+DPTR

MOV P0,A

SETB P2.1

LCALL DELAY

CLR P2.1

MOV A,21H ;個位顯示

MOVC A,@A+DPTR

MOV P0,A

SETB P2.0

LCALL DELAY

CLR P2.0

RET

T0INT:

MOV TH0,#3CH

MOV TL0,#0B0H

DJNZ R0,RTI

MOV R0,#20

DEC R4

CJNE R4,#0,RTI

MOV R4,#60

RTI:

RETI

DELAY: ;誤差 0us

MOV R6,#10

DL0:

MOV R5,#50

DJNZ R5,$

DJNZ R6,DL0

RET

TABLE:

DB 0C0H,0F9H,0A4H,0B0H,99H ;***陽極0-9顯示代碼

DB 92H,82H,0F8H,80H,90H

END

  • 上一篇:與矩陣有關的電影,不是黑客帝國
  • 下一篇:單片機開發板上的硬件怎麽使用
  • copyright 2024編程學習大全網