完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
为什么不能取反,怎么改
unsigned char can(void) { if(key_s2 == 0) //判断是否按下S2 { delay(5); //软件消抖 if(key_s2 == 0)//再次判断是否按下S2 { return 1;//如果在这里用P1=~P1;就可以实现取反 } while(!key_s2);//松手检测 } return 0; } void main() { while(1) { switch(can()) { case 1:P1=~P1;break;//不能实现取反操作 default:break; } } } |
|
相关推荐
1 条评论
6个回答
|
|
看逻辑和思路应该是可以的,如果不可以的话要看SWITCH的语法要求,这样直接对函数进行判断是否可以
|
|
|
|
|
|
|
|
逻辑问题,按下按键can()返回1,主循环case1一直成立,一直执行取反,频率太高,接示波器可以看到波形,接LED是看不到闪动的。
|
|
|
|
支持3楼,在取反之后加一个延时等待,估计就能看到效果了,那个while(!key_s2);//松手检测 没什么用,检测到按下就已经返回了,同时也支持1楼,最好不要直接switc函数,可以用个变量装函数的返回结果在switch
|
|
|
|
你的while要跳出来才可以的,可以使用break;
|
|
|
|
过来学习了一下。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《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积木平台
11179 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-20 16:45 , Processed in 0.557656 second(s), Total 52, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号