完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ORG 0000H
lJMP START ORG 0030H START: MOV 30H,#00H ;第一位LED数存放30H MOV 31H,#00H ;第二位LED数存放31H MOV 32H,#00H ;第三位LED数存放32H MOV 33H,#00H ;第四位LED数存放33H START1: LCALL DISP JNB P3.0,FUN0 ;按键1按下,转键1处理子程序 JNB P3.1,FUN1 ;按键2按下,转键2处理子程序 JNB P3.2,FUN2 ;按键3按下,转键3处理子程序 JNB P3.3,FUN3 ;按键4按下,转键4处理子程序 JNB P3.4,FUN3 ;按键5按下,转键5处理子程序 JNB F0,START1 ;无按键按下,标志位为0,重判 FUN0: LCALL DL10MS ;键1按下,开始处理。调用延时20MS子程序 JB P3.0,START1 ;返回再判,防抖 LCALL DISP ;显示 JNB P3.0,$-3 ;等待释放,键未释放,跳至上一条,继续显示并等待键释放 SETB F0 ;曾经有按键按下,标志位置1 LCALL FUN00 ;调用按键1功能子程序 AJMP START1 ;跳转判定按键状态 FUN1: LCALL DL10MS ;延时10MS,防抖 JB P3.1,START1 ;再判 LCALL DISP ;显示。三字节指令 JNB P3.1,$-3 ;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。 SETB F0 ;曾经有键按下,标志位置1 LCALL FUN11 ;调用按键2功能子程序 AJMP START1 ;跳转判定按键状态 FUN2: LCALL DL10MS ;延时10MS JB P3.2,START1 ;再判 LCALL DISP ;显示。三字节指令 JNB P3.2,$-3 ;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。 SETB F0 ;曾经有键按下,标志位置1 LCALL FUN22 ;调用按键3功能子程序 AJMP START1 ;跳转判定按键状态 FUN3: LCALL DL10MS ;延时10MS JB P3.3,START1 ;再判 LCALL DISP ;显示 。三字节指令 JNB P3.3,$-3 ;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。 SETB F0 ;曾经有键按下,标志位置1 LJMP START ;转回重新开始 FUN4: LCALL DL10MS ;延时10MS JB P3.4,START1 ;再判 LCALL DISP ;显示 。三字节指令 JNB P3.4,$-3 ;等待释放,键未释放,跳至上一条,继续显示并等待键释放。这样可使按下键时,LED不熄灭。 SETB F0 ;曾经有键按下,标志位置1 LJMP START ;转回重新开始 FUN00: INC 30H ;30H内数加1 MOV A,30H ;30H内数送A CJNE A,#0AH,OUT ;30H内数未到0AH,返回判定按键状态。 MOV 30H,#00H ;30H数加到0AH,清30H CLR F0 ;标志位置0 RET ;返回调用 FUN11: INC 31H MOV A,31H CJNE A,#0AH,OUT MOV 31H,#00H CLR F0 RET FUN22: INC 32H MOV A,32H CJNE A,#0AH,OUT MOV 32H,#00H CLR F0 RET FUN33: INC 33H MOV A,33H CJNE A,#0AH,OUT MOV 33H,#00H CLR F0 OUT: RET DISP: MOV A,30H ;第一位数送A MOV DPTR,#TAB ;码表首地址 MOVC A,@A+DPTR ;取字形码送A MOV P1,A ;字形码送P1口 SETB P2.4 ;开第一位LED ACALL DL1MS ;延时 CLR P2.4 ;关第一位,防止鬼影 MOV A,31H ;第二位数送A MOV DPTR,#TAB ;码表首地址 MOVC A,@A+DPTR ;取字形码送A MOV P1,A ;字形码送P1口 SETB P2.5 ;开第二位LED ACALL DL1MS ;延时 CLR P2.5 ;关第二位,防止鬼影 MOV A,32H ;第三位数送A MOV DPTR,#TAB ;码表首地址 MOVC A,@A+DPTR ;取字形码送A MOV P1,A ;字形码送P1口 SETB P2.6 ;开第三位LED ACALL DL1MS ;延时 CLR P2.6 ;关第三位,防止鬼影 MOV A,33H ;第四位数送A MOV DPTR,#TAB ;码表首地址 MOVC A,@A+DPTR ;取字形码送A MOV P1,A ;字形码送P1口 SETB P2.7 ;开第四位LED ACALL DL1MS ;延时 CLR P2.7 ;关第四位,防止鬼影 RET ;返回调用 DL1MS: MOV R2,#2uj MOV R1,#256 ;二字节指令 DJNZ R1,$ ;二字节指令 DJNZ R2,$-4 ;R2不为0,转上2条指令 RET DL10MS: MOV R3,#10 LCALL DL1MS ;三字节指令 DJNZ R3,$-3 ;R3不为0,转上一条指令 RET ;共阳8段LED TAB: DB 0C0H,0F9H,0A4H,0B0H,099H ;"0"~"4" DB 092H,082H,0F8H,080H,090H ;"5"~"9" END 求帮忙看下这个为什么不行!菜鸟不懂啊
|
|
相关推荐
2个回答
|
|
没人吗
|
|
|
|
求指导4个按键的呢
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
5965 浏览 3 评论
7235 浏览 1 评论
7479 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
9266 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1266 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 00:36 , Processed in 0.556167 second(s), Total 47, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号