;********************************************************************************
;6位数的计数器源程序,可以从0一直到999999,按p3.2计数,开机显示000000 *
;.数码管数据p0,数码管控制p2口,按键p3.2口 *
;********************************************************************************
;* 日期: 2007-3-25 *
;* 版本: 3.0 *
;* 作者: 深圳学林电子有限公司 专业8051单片机教学站 *
;* 邮箱: sxj1974@163.com *
;* 网站: http://www.51c51.com http://www.8951.com 更多例程请登陆网站 *
;********************************************************************************
;* 硬件:此程序在本公司xlisp系列单片机实验仪运行通过 *
;********************************************************************************
;* 【版权】 Copyright(C)深圳学林电子有限公司 www.51c51.com All Rights Reserved *
;* 【声明】 此程序仅用于学习与参考,引用请注明版权和作者信息! *
;********************************************************************************
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 ;送数据表