;******************************************************************************** ;6位数的计数器源程序,可以从0一直到999999,NE555的输出口P3.5计数,开机显示000000 * ;.数码管数据p0,数码管控制p2口,计数脉冲NE555 P3.5输出 调整NE555的电位器, * ;可以观察到计数的变化, 去掉ne555的跳线,则停止计数 * ;接线方法: * ;1 接8位数码管的数据线。将数码管部份的数据口 JP5接到CPU部份的P0口JP51. * ;2 接8位数码管的显示位线。将数码管部份的显示位口 JP8接到CPU部份的P2口JP52. * ;3 NE555的JP80用一条1pin线连接P3.5 * ;******************************************************************************** ;* 日期: 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 0080h 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.5,stlop;监测键盘,如果p3.2按下那么执行显示 we: acall display;显示保持! acall d1ms ;延时1ms避免键盘误动作 jnb p3.5,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
|