完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本人在学习51单片机,现在在做按键松开可以闪烁,如果下次再按就熄灭。代码如下,请各位大神帮忙分享下,最好给改进的代码,key1是另外一个按键,想按下这个按键,松开就可以闪烁,现在这个程序是要一直按住闪烁,松开无任何反映。
|
|
相关推荐
8个回答
|
|
你这判断有问题,应该先检测按键key和key1,然后再操作P1口
|
|
|
|
你这个是单键对应多个动作的问题,这种情况需要记录按键按下的次数,根据按键按下的次数进行对应的动作。
|
|
|
|
|
|
|
|
那我怎么改了,能写出代码来,注释下, |
|
|
|
|
|
|
|
|
|
|
|
void main()
{ uchar a; uchar u8Key = 0, u8Key1 = 0; P1=0Xff; while(1) { u8Key = 1; u8Key1 = 1; if(key==0) //按键0检测 { Delay10ms(); if(key==0) { u8Key = 0; } } if(key1==0) //按键1检测 { Delay10ms(); if(key1==0) { u8Key1 = 0; } } if(u8Key1 == 0) { P1=0X00; Delay40ms(); P1=0Xff; Delay10ms(); } else { if(u8Key == 0) { a++; a %= 10; switch(a) { case 1:P1=0X00; Delay200ms();break; //灯全亮 case 2:P1=0X7f; Delay200ms();break; //第一亮 case 3:P1=0Xbf; Delay200ms();break; //第二个亮 case 4:P1=0Xdf; Delay200ms();break; case 5:P1=0Xef; Delay200ms();break; case 6:P1=0Xf7; Delay200ms();break; case 7:P1=0Xfb; Delay200ms();break; case 8:P1=0Xfd; Delay200ms();break; case 0:P1=0Xfe; Delay200ms();break; //第8个亮 } } } } } 把main函数替换了试试是不是你想要的 |
|
|
|
人中狼 发表于 2017-11-30 09:48 中断程序还不会写,所以用中断和定时,写不出来,麻烦写一下给我看看,再跟据书理解中断用法和定时器用法 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
202 浏览 0 评论
556 浏览 2 评论
ESP32开发中,使用ADF环境,系统报错I2C Bus WriteReg Error和I2C Bus ReadReg Error
495 浏览 1 评论
在ZYNQ上跑超炫酷GUI!手把手教你移植LVGL到ZYNQ平台!
709 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-开发板适配之FLEXCAN
888 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12463 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-3-7 10:09 , Processed in 0.595727 second(s), Total 50, Slave 45 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191