完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
回复本帖可获得 1 分积分奖励! 每人限 1 次(中奖概率 50%) |
#include
#include #define uchar unsigned char #define uint unsigned int void DelayMS(uint x) { uchar i; while(x--) { for(i=0;i<120;i++); } } //主涵 void main() { uchar i; P1=0xfe; while(1) //第一个死循环 { i=0;i++; if(i<2) { for(i=0;i<7;i++) { P1=_crol_(P1,1); //P1 左循环 DelayMS(100); } for(i=0;i<7;i++) { P1=_cror_(P1,1); //P1 右循环 DelayMS(100); } } if (i>=2) //第一个死循环跳出 { uchar j; P1=0xff; while(1) //第二个死循环 { j=0;j++; if(j<7) {P1=~P1; DelayMS(150); } if(j>=7) //第二个死循环 跳不出 { P1=0xff; } } } } } 小弟是刚刚学的C程序应用,以上是一个8LED循环练习,我的想法是这样的,LED来回流水一次后全部闪烁7次,然后跳出,LED保持全部亮,试验结果是流水一次后开始闪烁,之后就一直在闪烁了。我看了一下程序,第一次进入While语句在我设的if条件跳出了,但是第二次我再用的时候就跳不出来了,这是为什么?是哪里出问题了呢? 还有一个问题就是,我想闪烁七次后又再次自动开始循环之前的步骤又应该怎么改,或者要用到什么语句?各位大神提示一下就可以了。 |
|
相关推荐
5个回答
|
|
if (i>=2)
{ uchar j; P1=0xff; while(1) //这的While(1)一直为真,就真是死循环了,只有括号里为“假”时才退出这个循环 { //这个循环为什么不沿用上面的for循环呢, j=0;j++; if(j<7) {P1=~P1; DelayMS(150); } 这里 i=0;i++; while(1) //第一个死循环 这里的i变量不会按你想象中的变化 { i=0;i++; if(i<2) { for(i=0;i<7;i++) //在这里 i变量经过循环后被赋值成了7, P1=_crol_(P1,1); //P1 左循环 DelayMS(100); } for(i=0;i<7;i++) //在这开始被赋值为0,经过循环后又变为7 ,之后直接跳过if(i<2),直奔下个if语言,最终停在了while循环 { P1=_cror_(P1,1); //P1 右循环 |
|
|
|
|
|
|
|
共勉…………………………
|
|
|
|
|
|
路过学习。。。。。。。。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
4452 浏览 3 评论
5742 浏览 1 评论
6016 浏览 0 评论
Protues中自己封装的芯片元件无Program File、Clock Frequency选项怎么解决,求求大神了!
7750 浏览 1 评论
基于51单片机的车辆倒车雷达报警系统,HC-SR04超声波测距,全套资料
1222 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 14:12 , Processed in 0.713140 second(s), Total 106, Slave 88 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号