/*8个发光管间隔200ms由上至下,再由下至上,再重复一次
然后全部熄灭再以300ms间隔全部闪烁5次。重复此过程。
*/
#include<reg52.h>
#include<intrins.h> //左右移动函数头文件
#define uint unsigned int
#define uchar unsigned char
void delay(uint time) //延时子函数
{
uint i,j;
for(i=time;i>0;i--) //延时time 秒
for(j=110;j>0;j--);
}
void main()
{ uchar S,X,i,j;
while(1)
{
for(j=0;j<2;j++) //
为什么j改成i后不进行循环了而是直接进入P1=0xff那一步,求解答~
{ S=0xfe;
for(i=0;i<8;i++)
{
P1=S;
delay(200); //延时200ms
S= _crol_(S,1); //向左移动一位
}
X=0x7f;
for(i=0;i<8;i++)
{
P1=X;
delay(200);
X=_cror_(X,1); //向右移动一位
}
}
P1=0xff; //全部灯灭
for(i=0;i<9;i++) //闪烁5次
{
P1=~P1;
delay(300); //间隔300ms闪烁一次
}
}
}
就是红 {MOD}字体部分~ 刚开始我想只用一个 i 变量进行循环控制的,但是烧录到单片机中却发现它并没有像我想的那样重复一次而是直接跳跃到下面的 全部灯灭,然后闪烁5次。
上星期刚开始学习单片机~~ 好多还不太懂,希望大家帮我解答下
此帖出自
小平头技术问答
同意 jlhgold 的分析。
一周热门 更多>