打印

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

[复制链接]
1300|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);











使用特权

评论回复
5
cainiao518| | 2020-10-27 10:35 | 只看该作者
楼上正解

使用特权

评论回复
6
duguwuyun1985| | 2020-10-27 11:09 | 只看该作者
mcu5i51  正解

使用特权

评论回复
7
王栋春|  楼主 | 2020-10-27 12:52 | 只看该作者
chunk 发表于 2020-10-27 08:39
在mcs51上int类型是16bit的,char类型是8bit。

收到   改正

使用特权

评论回复
8
王栋春|  楼主 | 2020-10-27 12:53 | 只看该作者
mcu5i51 发表于 2020-10-27 08:56
多一倍的时间,上面都说了;
如果对效率要求不高,建议用计数方式,通用性好;
while(1)

好的

使用特权

评论回复
9
sxy4517| | 2020-10-31 09:12 | 只看该作者

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

temp 数据类型错误

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3487

主题

24401

帖子

71

粉丝