?? 50000計數器.asm
字號:
ORG 0000H
ajmp MIAN
org 0030h
MIAN:
AW equ 60h ;個位數據緩沖
BW equ 61h ;十位數據緩沖
CW equ 62h ;百位數據緩沖
EW equ 63h ;千位數據緩沖
GW equ 64h ;萬位數據緩沖
Mov AW,#0 ;初始化全為0
Mov BW,#0
Mov CW,#0
MOV EW,#0
MOV GW ,#0
Mov TMOD,#51H
;計數器1方式1
Mov TH1,#0
Mov TL1,#0
CLR EA ;禁止所有中斷
JNB P3.5 ,$
Setb TR1 ;計數開始
START:
Mov R3,TL1 ;將計數值讀入
Mov AW,R3
Mov R4,AW
Cjne R4,#0AH,DISPLAY
Clr AW ;個位=10清零
MOV TL1,#0 ;同時清計數值
Inc BW ;進位
Mov R4,BW
Cjne R4,#0AH,DISPLAY
MOV BW,#00H ;十位=10清零
MOV TL1 ,#0
Inc CW ;進百位
Mov R4,CW
Cjne R4,#0AH,DISPLAY
MOV CW ,#00H ;百位=10清零
MOV TL1 ,#0
INC EW
Mov R4,EW
Cjne R4,#0AH,DISPLAY
MOV EW,#00H ; 千位=10清零
MOV TL1 ,#0
INC GW
Mov R4 ,GW
Cjne R4,#05H,DISPLAY
MOV GW,#00H; 計數到50000重新開始
MOV TL1 ,#0
CLR AW
CLR BW
CLR CW
CLR EW
RET
DISPLAY:
CLR A
MOV A ,AW
MOV DPTR ,#TAB
MOVC A ,@A+DPTR
MOV P0 ,A
MOV P2 ,#00H;//打開第一位數碼管的顯示電源
ACALL D1MS;//調用延時15MS子程序
MOV P2 ,#0FFH
CLR A
MOV A ,BW
MOV DPTR ,#TAB
MOVC A ,@A+DPTR
MOV P0 ,A
MOV P2 ,#01H;//打開第二位數碼管的顯示電源
ACALL D1MS;//調用延時15MS子程序
MOV P2 ,#0FFH
CLR A
MOV A ,CW
MOV DPTR ,#TAB
MOVC A ,@A+DPTR
MOV P0 ,A
MOV P2 ,#02H;//打開第三位數碼管的顯示電源
ACALL D1MS;//調用延時15MS子程序
MOV P2 ,#0FFH
CLR A
MOV A ,EW
MOV DPTR ,#TAB
MOVC A ,@A+DPTR
MOV P0 ,A
MOV P2 ,#03H;//打開第三位數碼管的顯示電源
ACALL D1MS;//調用延時15MS子程序
MOV P2 ,#0FFH
CLR A
MOV A ,GW
MOV DPTR ,#TAB
MOVC A ,@A+DPTR
MOV P0 ,A
MOV P2 ,#04H;//打開第三位數碼管的顯示電源
ACALL D1MS;//調用延時15MS子程序
MOV P2 ,#0FFH
AJMP START
D1MS:
MOV TMOD ,#51H
MOV TL0 , #58H
MOV TH0 , #0FFH
SETB TR0
WAIT: JNB TF0 , WAIT
CLR TF0
CLR TR0
RET
TAB :DB 0C0H ,0F9H ,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -