📄 test01.asm
字号:
51单片机源程序--数码管显示1-100计数器
[ 2007-11-22 22:06:00 | By: emcu51 ]
; /* 51单片机开发板V3.0和V4.0适用*/
;1 到100数码管显示
ABIT EQU 20H ;个位数存放处
BBIT EQU 21H ;十位数存放处
TEMP EQU 22H ;计数器寄存器
START:MOV P2,#0FFH
MOV TEMP,#0 ;初始化计数器
STLOP:ACALL DISPLAY
INC TEMP
MOV A,TEMP
CJNE A,#100,NEXT ;=100重来
MOV TEMP,#0
NEXT:LJMP STLOP
;显示子程序
DISPLAY: mov p0,0ffh
MOV A,TEMP ;将temp中的十六进制数转换成10进制
MOV B,#10 ;10进制/10=10进制
DIV AB
MOV BBIT,A ;十位在a
MOV ABIT,B ;个位在b
;p0口接段码a,b,c,d,e,f,g, p2口接位码,选哪个数码管显示
MOV DPTR,#TAB ;指定查表启始地址
MOV R0,#4
DPL1:MOV R1,#250 ;显示1000次
DPLOP:MOV A,ABIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
MOV P0,A ;送出个位的7段代码
CLR P2.0 ;开个位显示
ACALL D1MS ;显示1ms
SETB P2.0
MOV A,BBIT ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
MOV P0,A ;送出十位的7段代码
CLR P2.1 ;开十位显示
ACALL D1MS ;显示1ms
SETB P2.1
DJNZ R1,DPLOP ;100次没完循环
DJNZ R0,DPL1 ;4个100次没完循环
RET
;1MS延时(按12MHZ算)
;====================================================
D1MS:MOV R7,#80
DJNZ R7,$
RET
;7段数码管各划的数字排列表
TAB:DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0F8h,80h,90h
;不带小数点0 1 2 3 4 5 6 7 8 9
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -