王栋春 发表于 2020-10-26 21:53

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

#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 数据类型错误
页: [1]
查看完整版本: 新手51单片机流水灯程序问题请教