當前位置:編程學習大全網 - 編程語言 - 51單片機倒計數編程

51單片機倒計數編程

;假設條件:

;A 采用***陽極數碼管

;B P2口控制LED的段碼,p2.0接A段,負輸出有效

;C P1口控制位碼,P1.0接最高位,P1.3接最高位,負輸出有效。

;D 晶振采用12M

;E 數碼管顯示0.5S後自動加1

;程序:

ORG 0000H

LJMP 0080H

ORG 0030H

VAR1:DS 1 ;高位數據

VAR2:DS 1 ;低位數據

VAR3:DS 1 ;數碼管位狀態

VAR4:DS 1 ;暫存

VAR5:DS 1 ;周期

ORG 0080H

MOV SP, #60H

;初始狀態為00.00

MOV VAR1, #00H

MOV VAR2, #00H

MOV VAR3, #01H

;==關閉數碼管====

MOV P1, #0FFH

MOV P2, #0FFH

MOV VAR5, #12

INT:

;==================================================

ACALL AJTDATA ;將兩位數據調整成按每位輸出的單獨數據

ACALL OUTSIM ;數碼管顯示程序

;===================================================

;==以上兩個小程序執行的時間約為40MS,

;所以,當延時12次以後,程序運行了480ms,

;子程序ADDONE就是等待約0.5秒後,顯示數據自動加1

ACALL ADDONE

LJMP INT

ADDONE:

DJNZ VAR5, EXITADD

MOV VAR5, #12

MOV A, VAR2

CLR C

ADDC A, #01H

DA A

MOV VAR2, A

MOV A, VAR1

ADDC A, #00H

DA A

MOV VAR1, A

EXITADD:

RET

AJTDATA:

MOV R0, #VAR4

;最高位

MOV A, VAR1

SWAP A

ANL A, #0FH

MOV @R0, A

;第二位

INC R0

MOV A, VAR1

ANL A, #0FH

MOV @R0, A

;第三位

INC R0

MOV A, VAR2

SWAP A

ANL A, #0FH

MOV @R0, A

;第四位

INC R0

MOV A, VAR2

ANL A, #0FH

MOV @R0, A

RET

OUTSIM:

MOV R0, #VAR4

;送第壹位

MOV A, @R0

MOV DPTR, #TABLE

MOVC A, @A+DPTR

MOV P2, A

MOV P1, #01H

ACALL DEL10 ;延時10MS,以保證數碼管顯示時的視覺延緩時間

;送第二位

INC R0

MOV A, @R0

MOV DPTR, #TABLE

MOVC A, @A+DPTR

ANL A, #7FH ;將最高位,即小數點位清零,讓其亮

MOV P2, A

MOV P1, #02H

ACALL DEL10

;送第三位

INC R0

MOV A, @R0

MOV DPTR, #TABLE

MOVC A, @A+DPTR

MOV P2, A

MOV P1, #04H

ACALL DEL10

;送第二位

INC R0

MOV A, @R0

MOV DPTR, #TABLE

MOVC A, @A+DPTR

MOV P2, A

MOV P1, #08H

ACALL DEL10

RET

DEL10: ;10MS延時程序

MOV R6, #20

DEL1:

MOV R7, #250

DJNZ R7, $

DJNZ R6, DEL1

RET

TABLE:

DB 0C0H,0F9H,0A4H,0B0H,99H,32H,82H,0F8H,80H,90H

END

  • 上一篇:3d打印可以用哪些方式建模?
  • 下一篇:這種無人機的遙控器怎麽用啊
  • copyright 2024編程學習大全網