完善资料让更多小伙伴认识你,还能领取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 中断程序还不会写,所以用中断和定时,写不出来,麻烦写一下给我看看,再跟据书理解中断用法和定时器用法 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNK210使用指南 -CanMV版 V1.0》第八章 CanMV IDE初体验
1589 浏览 0 评论
过采样提高12位ADC精度在STM32主控上的实现(附电路及代码)
1091 浏览 1 评论
飞凌嵌入式-ELFBOARD 解决PCB布线时无法捕捉到焊盘中心的问题
1072 浏览 0 评论
Openharmony软件评估指南-米尔瑞芯微RK3568开发板
1869 浏览 0 评论
STM32CUBEMX(7)--移植雅特力AT32F403AVGT(兼容STM32F103VGT6),DAC输出电压
1355 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11182 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-21 01:46 , Processed in 0.740730 second(s), Total 85, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号