完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
按键K1.控制4个流水灯轮流闪烁。按键按下一次换一个灯闪烁。现在遇到的问题是:我按下按键的判断时间跟灯闪烁的延时时间一样。例如,我把灯的闪烁改成1s一次,按键就也会跟着变成要按1s才会换下个灯亮。我把判断按键放进延时,然后在有按键按下时让他延时一下。但是我一加下面这个注释123的延时。就会导致整个delay02的时间延长,从而导致灯的闪烁不符合我要的时间。求大神给个解决让按键判断时间跟灯闪烁延时时间分开的法子。
#include ***it K1=P1^0; ***it L1=P1^4; ***it L2=P1^5; ***it L3=P1^6; ***it L4=P1^7; unsigned char i,j,k,a,b,c,d,; void delay02s() { unsigned char i,j,k; for(i=20;i>0;i--) for(j=20;j>0;j--) for(k=248;k>0;k--)//; { if(K1==0) { a++; if(a==4) { a=0; } for(b=10;b>0;b--)//1 for(c=40;c>0;c--)//2 for(d=248;d>0;d--);//3.一加这个延时就会导致整个延时变长。 return;//程序运行到这里会马上跳回主函数。 } } } void main() { a=0; while(1) { if(a==0) { L4=1;//初始化其他灯的状态,保持只有一个灯闪烁,其他灭。 L1=~L1; delay02s(); } if(a==1) { L1=1; L2=~L2; if(K==1){ delay02s();} } if(a==2) { L2=1; L3=~L3; delay02s(); } if(a==3) { L3=1; L4=~L4; delay02s(); } } } |
|
相关推荐
2个回答
|
|
void delay20ms();
void main() { unsigned char shift=0x11; while(1) { if(k1==1)//按一下按钮,马上放开 { if(shift==0)shift=0x11; P1=shift; delay20ms(); shift<<=1; } } } 可以试试上面的,delay20ms,自己写。 |
|
|
|
delay02s(xx);
用参数传递解决,xx表示多少个20MS,在delay02s(u8 num)函数里面再加个for(;num > 0; num --){把你程序包含在里面},同时提醒你一下,你是空函数,不需要返回 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
《DNESP32S3使用指南-IDF版_V1.6》第三十章 DHT11数字温湿度传感器
522 浏览 0 评论
656 浏览 0 评论
【敏矽微ME32G070开发板免费体验】之原厂2812测试例程解析
978 浏览 0 评论
1042 浏览 2 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
735 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12044 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-27 12:01 , Processed in 0.498023 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号