永发信息网

关于单片机中利用C51实现流水灯的一个问题

答案:3  悬赏:70  手机版
解决时间 2021-02-03 01:40
  • 提问者网友:辞取
  • 2021-02-02 12:53
关于单片机中利用C51实现流水灯的一个问题
最佳答案
  • 五星知识达人网友:蓝房子
  • 2021-02-02 14:16
这个很简单啊,你把temp = 0xfe带进入,逐条分析一下就得到答案了,如果带进去,执行过程是这样的:

while(1)
{

tmep = 0xFE;
P1 = temp; //---即P1 = 0xFE
temp=_crol_(temp,1); //---执行完这句后,temp = 0xFC,一个while(1)就执行完了,
//---再执行下一个while(1);



|
|
|
while(1)
{
tmep = 0xFE; //---新的一次while(1),又重新把temp 赋值成0xFE,也就是说,
//--你上次的while(1)最后那句:temp=_crol_(temp,1)的工作白做了。
P1 = temp; //---即P1 = 0xFE
temp=_crol_(temp,1); //---执行完这句后,temp = 0xFC,一个while(1)就执行完了,
//---再执行下一个while(1);
}



周而复始,楼主明白了吗?
全部回答
  • 1楼网友:逐風
  • 2021-02-02 15:02
io输出低时亮,0xfe=B很简单的道理,temp在每次while循环结束之后都有不同的值,但是将temp放入while(1)里面的话每次temp得到的结果都是一样的。达不到循环显示的目的了
  • 2楼网友:孤独的牧羊人
  • 2021-02-02 14:40
请看将temp=0xfe;这一语句放入while(1){}中程序是如何运行的:
while(1)
{
temp = 0xfe;//1,准备让第1个灯亮的编码
P1=temp;//2,将编码送到可以亮灯的端口开始亮灯
delamy(5);//3,让亮着的灯在人的视觉里停留一会儿
temp=_crol_(temp,1);//4,准备下一个灯亮的编码
}//回到1,
说明:程序运行到第4行,刚“准备好下一个灯亮的编码”,紧接着程序回到第1行,又被“准备让第1个灯亮的编码”给替代了,如此周而复始的循环,结果只有第1个灯一直亮着。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯