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




;一位计数器,按p3.2数码管加1,到9后回0,同时小喇叭响一下报警,该程序是在一位计数器的基础上改进过来的

;***************************************************************************
;*  E-mail:sxj1974@163.com (51c51 test web)  51单片机学习网,自学单片机的网站  *
;* Create by :石学军

org 00h ;开始
jmp start;跳到主程序
org 0030h
start:mov 30h,#0ffh ;30h送ff即-1
main:INC 30H
mov a,30h
setb p3.2 ;把键盘口送高电平
mm: jnb p3.2,tt ;如果p3.2按下则执行tt
ljmp mm ;如果没有按下则反复监测键盘
tt: MOV DPTR,#TAB
MOVC A,@A+DPTR
CLR P2.6 ;开数码管
MOV P0,A ;送显示
lcall delay ;延时一段时间
cjne a,#60h,main ;如果是最后一个数据重新开始
cjne a,#20h,BB ;如果是数字9到小喇叭响的程序
ljmp start ;否则30H 清除
ret
TAB: DB 28H,7EH,0A2H,62H,74H,61H,21H,7AH,20H,60H 
;数据表,0--9(如果反向排列则为倒计数
BB: 
mov r1,#255 ;小喇叭响的次数
ppp:cpl p3.3 ; 小喇叭响
call deL ;小喇叭响的速率
djnz r1,ppp ;小喇叭响255次。
jmp start
delay: mov r5,#20 ;延时子程序1闪烁灯调用
d1:mov r6,#20
d2: mov r7,#255
djnz r7,$
djnz r6,d2
djnz r5,d1
ret
del: ;延时子程序2小喇叭调用
mov r4,#255
djnz r4,$
ret
end