永发信息网

单片机左右移函数

答案:6  悬赏:70  手机版
解决时间 2021-03-17 19:10
  • 提问者网友:椧運幽默
  • 2021-03-17 08:28
# include <reg51.h>
# include <intrins.h>
#define LED P2
void Delay(unsigned int);
void main(void)
{
unsigned char n;

LED=0x01;

while(1)
{

for(n=0; n<7; n++)
{
LED = _crol_(LED,1);
Delay(25);
}

for(n=0; n<7; n++)
{
LED = _cror_(LED,1);
Delay(25);
}
}
}
void Delay(unsigned int c)
{
unsigned int i, j;
while(c--)
{
for(i=38; i>0; i--)
for(j=130; j>0; j--);
}
}

求教主函数里边的两个for循环为什么换成
for(n=7; n>0; n--)
就不行呢,应该可以的啊。
最佳答案
  • 五星知识达人网友:第幾種人
  • 2021-03-17 08:36
延时函数没有起到作用 ,你没有在延时函数中加入 while(i--);
而且你的延时也太短了,才25,要看到效果至少也是50000
全部回答
  • 1楼网友:未来江山和你
  • 2021-03-17 12:19
亲 你i定义了吗
  • 2楼网友:笑迎怀羞
  • 2021-03-17 11:04
延时时间太短吧。
  • 3楼网友:纵马山川剑自提
  • 2021-03-17 10:41
一个时钟周期=晶振的倒数 51单片机的一个机器周期=6个状态周期=12个时钟周期 一个单周期指令包括一个机器周期,即12个时钟周期,所以12m晶振的话一条单周期指令执行的时间为12*(1除12m)=1us 延时更多的话往上乘就是了
  • 4楼网友:时间的尘埃
  • 2021-03-17 09:11
不行的表现是什么,你得说出来啊 是编译不通过了,还是灯不亮了
  • 5楼网友:拾荒鲤
  • 2021-03-17 09:04
首先对比一下 左边与右边 那里有不同 同时 程序不同对应的输出结构有哪些不同。。 P2口 连接8个LED 低电平驱动使其发光。 P2=0xfe //上电 P2.0连接的 LED发光。 其余的熄灭。 对比一下程序 void main() //主函数 { P2=0xfe; //P2初始化 while(1) //死循环 { num=P2; //这里 与左边不同 把P2的状态给 NUM 也就是0xFE num=0xfe P2=_crol_(num,1); //P2等于num 循环左移 P2=0xef 这时应该是连接的P2.7的LED发光 delay(0);//延迟 } } 左边 代码 NUM 每次大循环 都赋值 num=0xfe 是固定的 所以不管你以后怎么移动 P2口的输出都是不变得 只移动了一次。。 求采纳为满意回答。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯