一位计数器,按p3.2数码管加1,到9后回0,同时小喇叭响一下报警,该程序是在一位计数器的基础上改;进过来的,
;*************************************************************************** ;* (程序转载请著明出处 ,未声明可适应本站开发套件 * ;* E-mail:sxj1974@163.com (51c51 test web) 51单片机学习网,自学单片机的网站 * ;* Create by :石学军 www.51c51.com www.8951.com 更多例程请登陆网站 * ;***************************************************************************
org 00h;开始 jmp start;跳到主程序 org 0030h start:mov 30h,#0ffh ;30h送ff即-1 main:INC 30H mov a,30h setb p3.5 ;把键盘口送高电平 mm: jnb p3.5,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 |
|