📄 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 + -