找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

单片机独立控制开关控制流水灯程序错误

查看数: 1372 | 评论数: 6 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-3-28 18:15

正文摘要:

大佬们,小白学习遇到问题了,还请大佬不嫌麻烦,指点一二。 事情: 本想用独立控制开关控制流水灯,但是,程序在protues上模拟却没有反应,而且,我不知道怎么线上调试程序,所以,一直无法发现错误在哪? 希望 ...

回复

ID:1013784 发表于 2022-3-29 19:02
把按键的while(1)循环部分去掉,单独弄一个按键函数。然后放在main函数的大循环里
ID:1013777 发表于 2022-3-29 08:38
大佬们,这个问题已经解决,问题竟然是key()函数中的while(1)后多加了一个分号,这种低级错误确实难防,我以后会勤加练习,全力避免这样的错误。由衷的感谢大佬的帮助,我会仔细阅读各位的回复。
ID:1013777 发表于 2022-3-29 08:32
兴安xa 发表于 2022-3-28 22:42
改动一下,看看能跑起来不
#include
#define LED P2

谢谢,我也找到自己的错误所在,问题就在于在while(1)后多加了一个分号,这种毛病不经意间~,由衷感谢你的教导。
ID:1013777 发表于 2022-3-29 08:29
lkc8210 发表于 2022-3-28 21:00
谁教你在函数中用while(1)的?

我自学的,老师们用的都是while(1)死循环。
而且,今天我分别测试了两个分装函数,发现是key()函数出的问题,于是便仔细检查每一句,最后发现是因为while(1)后面加了个分号,我已经狠狠掴了自己一个大鼻窦,希望我能记住这次教训,并由衷感谢您的留言。
ID:979299 发表于 2022-3-28 22:42
改动一下,看看能跑起来不
#include<reg52.h>
#define LED P2
typedef unsigned int u16;
typedef unsigned char u8;
sbit key=P3^1;
void daley(u8 x)
{
    u8 y;
    for(x;x>0;x--)
    {
       for(y=110;y>0;y--);
    }
   
}
void Leds()
{
   u16 num;
   u16 LED_1;
   LED=0xff;
    {
       LED_1=0Xfe;
       LED=0Xfe;
       daley(100);
       for(num=7;num>0;num--)
    {
           LED_1=LED_1<<1|0X01;
           LED=LED_1;
           daley(100);
       }
    }
}

void KEY()

{
   if(key==0)
   {
       daley(2);
       if(key==0)
      {
           Leds();
       }
       while(!key);

   }

}


void main()

{

    while(1)

    {
       KEY();
       Leds();
    }
}
ID:161164 发表于 2022-3-28 21:00
谁教你在函数中用while(1)的?

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表