完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
#include
***it SW=P3^0; void Delay() { unsigned char i,j; for(i=0;i<177;i++) for(j=0;j<177;j++); } void main() { unsigned char temp,i; P1=0xff; while(1) { temp=0x01; for(i=0;i<8;i++) { if(SW==0) { P1=~temp; Delay(); temp=temp<<1; } } } } 在流水灯设置一个开关控制的,不知道怎么运行都不行 大家帮帮忙我。 |
|
相关推荐
10个回答
|
|
本帖最后由 零tot 于 2016-3-16 22:54 编辑
好久不写51了原理就是我说的这些,给你写个大概你试试可能有错误 char flag = 0;//bit 可以定义的话可以用bit while(1) { if(flag == 0) //start/stop 标志位 { P1 = ~temp; Delay(); temp = temp<<1; } //我不确定这个移位动作是否是循环的所以我加一下判断 if(temp == 0x80) { temp = 0x01; } //按键消抖,可以网上找找 if(sw == 按下) { delay_us(10); if(sw == 按下) { flag =(~flag)&0x01; } } } 这个应该就可以了,我也没试过,你可以试一下
最佳答案
|
|
|
|
这个是什么功能呢?是按完按键后流水灯自行跑还是每按一次按键切换一次流水灯?
愚人之见: 此软件无论按多少下按键,流水灯也不会跑起来; 问题点:“while”循环第一步就是“temp=0x01;”,那么流水灯应该是一直亮一个灯,或者会出现按下按键后第二个等闪 一 下的现象; 解决:将这个语句放在“while”循环外边,一次定义好,防止一直被初始化。 |
|
|
|
希望对你有帮助!
|
|
|
|
|
|
|
|
你好,原本设置是想按一下开关按键流水灯就停止的。现在一直按也不停 |
|
|
|
首先看你这个撑血是sw置低事灯开始有移位,这里呢建议你可以加一下按键消抖,还有你temp=0x01结合你后面的一句你可能是想左移八位进行值的复位,不过这样写是有问题的,你可以进行if语句判断还原初值,如果你是想按键按下后停止,简单的话你可以增加一个标志位,正常情况下流水灯在跑,按键后标志位置位,然后停止,或者您可以设置成标志位在按键后进行翻转这样就可以通过按键控制流水灯开始停止
|
|
|
|
零tot 发表于 2016-3-16 22:18 大哥可以给个代码吗?我是小白不太会写,拜托拜托 |
|
|
|
上面的那个程序应该还会最后一个灯会一直不亮的问题,就当作思考题把
|
|
|
|
虽然还是不行,大哥不过你也教了不少。 |
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
54 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
395 浏览 0 评论
439 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1265 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
529 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11749 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-20 00:36 , Processed in 0.706248 second(s), Total 93, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号