新手51单片机流水灯程序问题请教

[复制链接]
1890|8
 楼主| 王栋春 发表于 2020-10-26 21:53 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<intrins.h>            
void delay(void)               
         {
           unsigned int i,j,k;  
           for(i=20;i>0;i--)     
           for(j=20;j>0;j--)
           for(k=248;k>0;k--);
          }
  void main()  
  {
   int temp;
  temp=0x01;
  while(1)
   
    {
      
   P1=~temp;
   delay();
   P1=0xff;
   temp=temp<<1;
   if (temp==0x00)
  temp=0x01;
     }
  
  }
想要用单片机左位移指令实现流水灯,程序正确,调试也显示正确,在单片机上运行了一遍也是可以实现,问题在于,当第八个LED熄灭后,要等很长时间后第一个LED才会重新亮起,
ayb_ice 发表于 2020-10-27 08:20 | 显示全部楼层
int temp->unsigned char temp
chunk 发表于 2020-10-27 08:39 | 显示全部楼层
在mcs51上int类型是16bit的,char类型是8bit。
mcu5i51 发表于 2020-10-27 08:56 | 显示全部楼层
多一倍的时间,上面都说了;
如果对效率要求不高,建议用计数方式,通用性好;
while(1)
{
temp = 1;
for(i=0;i<8;i++)
....

temp = (1<<i);











cainiao518 发表于 2020-10-27 10:35 | 显示全部楼层
楼上正解
duguwuyun1985 发表于 2020-10-27 11:09 | 显示全部楼层
mcu5i51  正解
 楼主| 王栋春 发表于 2020-10-27 12:52 | 显示全部楼层
chunk 发表于 2020-10-27 08:39
在mcs51上int类型是16bit的,char类型是8bit。

收到   改正
 楼主| 王栋春 发表于 2020-10-27 12:53 | 显示全部楼层
mcu5i51 发表于 2020-10-27 08:56
多一倍的时间,上面都说了;
如果对效率要求不高,建议用计数方式,通用性好;
while(1)

好的
sxy4517 发表于 2020-10-31 09:12 | 显示全部楼层

新手51单片机流水灯程序问题请教

temp 数据类型错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4823

主题

28981

帖子

80

粉丝
快速回复 在线客服 返回列表 返回顶部