返回主页 单片机教程XL2000开发板 单片机学习 自制编程器 单片机资料 软件下载 电子技术产品介绍如何购买 论坛

;6位数的计数器源程序,可以从0一直到999999,按p3.2计数,开机显示000000
;*********************************************************************************
;*  E-mail:sxj1974@163.com (51c51 test web)  51单片机学习网,自学单片机的网站      *
;* www.51c51.com www.8951.com 51单片机学习网系列自学单片机例程
*   
;*********************************************************************************



a_bit equ 20h ;个位寄存器
b_bit equ 21h ;10位寄存器
c_bit equ 22h ;百位寄存器
d_bit equ 23h
e_bit equ 24h
f_bit equ 25h
org 0000h
ajmp star
org 0020h
star: ;初始化把所有的位全部清零
mov a,#00h
mov a_bit,a
mov b_bit,a
mov c_bit,a
mov d_bit,a
mov e_bit,a
mov f_bit,a
stlop: acall display ;调用显示
jb p3.2,stlop;监测键盘,如果p3.2按下那么执行显示
we: acall display;显示保持!
acall d1ms ;延时1ms避免键盘误动作
jnb p3.2,we ;如果p3.2还没有放开继续延时
count: ;计算数据部分
inc a_bit;个位加1
mov a,a_bit
cjne a,#10,stlop ;如果在10以内显示
mov a_bit,#00h ;如果到了10则清除
inc b_bit ;10位加1
mov a,b_bit
cjne a,#10,stlop ;如果在10以内显示
mov b_bit,#00h ;如果到了10则清除
inc c_bit ;百位加1
mov a,c_bit
cjne a,#10,stlop
mov c_bit,#00h
inc d_bit
mov a,d_bit
cjne a,#10,stlop
mov d_bit,#00h
inc e_bit
mov a,e_bit
cjne a,#10,stlop
mov e_bit,#00h
inc f_bit
mov a,f_bit
cjne a,#10,stlop
mov f_bit,#00h
ajmp stlop

display: ;显示
mov dptr,#numtab ;送数据表
mov a,a_bit ;送个位数据
MOVC A,@A+DPTR ;查表
mov p0,a ;送p0口显示
clr p2.6 ;选中第一个数码管
acall d1ms ;显示1ms
setb p2.6 ;关闭显示
mov a,b_bit ;送10位数据
MOVC A,@A+DPTR ; 查表
mov p0,a ;送p0口显示
clr p2.5 ; 选中第二个数码管
acall d1ms ; 显示1ms
setb p2.5 ; 关闭显示
mov a,c_bit
MOVC A,@A+DPTR
mov p0,a
clr p2.4
acall d1ms
setb p2.4
mov a,d_bit
MOVC A,@A+DPTR
mov p0,a
clr p2.3
acall d1ms
setb p2.3
mov a,e_bit
MOVC A,@A+DPTR
mov p0,a
clr p2.2
acall d1ms
setb p2.2
mov a,f_bit
MOVC A,@A+DPTR
mov p0,a
clr p2.1
acall d1ms
setb p2.1
ret
D1MS: ;数码管延时
MOV R7,#2
DJNZ R7,$
RET
;数码管代码表
numtab: db 28h,7eh,0a2h,62h,74h,61h,21h,7ah,20h,60h
;0 1 2 3 4 5 6 7 8 9
end

hex格式文件下载(点右键,目标另存为hex即可直接烧写)