找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1467|回復(fù): 6
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)獨(dú)立控制開關(guān)控制流水燈程序錯(cuò)誤

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
大佬們,小白學(xué)習(xí)遇到問題了,還請(qǐng)大佬不嫌麻煩,指點(diǎn)一二。
事情:
本想用獨(dú)立控制開關(guān)控制流水燈,但是,程序在protues上模擬卻沒有反應(yīng),而且,我不知道怎么線上調(diào)試程序,所以,一直無法發(fā)現(xiàn)錯(cuò)誤在哪?
希望大佬們不吝指教,救救小白。
下面是程序的截圖和程序文本:
#include<reg52.h>
#define LED P2
typedef unsigned int u16;
typedef unsigned char u8;
sbit key=P3^1;
int daley(u8 x)
{
    u8y;
    for(x;x>0;x--)
    {
       for(y=110;y>0;y--);
    }
    return 0;
}
int Leds()
{
   u16 num;
   u16 LED_1;
   LED=0xff;
    while(1)
    {
       LED_1=0Xfe;
       LED=0Xfe;
       daley(100);
       for(num=7;num>0;num--)
       {
           LED_1=LED_1<<1|0X01;
           LED=LED_1;
           daley(100);
       }
    }
    return 0;
}
int KEY()
{
    while(1);
    {
       if(key==0)
       {
           daley(2);
           if(key==0)
           {
               Leds();
           }
           while(!key);
       }
    }
    return 0;
}
int main()
{
    while(1)
    {
       KEY();
//     Leds();
    }
    return 0;
}


程序.jpg (61.76 KB, 下載次數(shù): 70)

程序圖片

程序圖片

工程圖.jpg (291.3 KB, 下載次數(shù): 61)

工程圖.jpg
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:161164 發(fā)表于 2022-3-28 21:00 | 只看該作者
誰教你在函數(shù)中用while(1)的?
回復(fù)

使用道具 舉報(bào)

板凳
ID:979299 發(fā)表于 2022-3-28 22:42 | 只看該作者
改動(dòng)一下,看看能跑起來不
#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();
    }
}
回復(fù)

使用道具 舉報(bào)

地板
ID:1013777 發(fā)表于 2022-3-29 08:29 | 只看該作者
lkc8210 發(fā)表于 2022-3-28 21:00
誰教你在函數(shù)中用while(1)的?

我自學(xué)的,老師們用的都是while(1)死循環(huán)。
而且,今天我分別測(cè)試了兩個(gè)分裝函數(shù),發(fā)現(xiàn)是key()函數(shù)出的問題,于是便仔細(xì)檢查每一句,最后發(fā)現(xiàn)是因?yàn)閣hile(1)后面加了個(gè)分號(hào),我已經(jīng)狠狠摑了自己一個(gè)大鼻竇,希望我能記住這次教訓(xùn),并由衷感謝您的留言。
回復(fù)

使用道具 舉報(bào)

5#
ID:1013777 發(fā)表于 2022-3-29 08:32 | 只看該作者
興安xa 發(fā)表于 2022-3-28 22:42
改動(dòng)一下,看看能跑起來不
#include
#define LED P2

謝謝,我也找到自己的錯(cuò)誤所在,問題就在于在while(1)后多加了一個(gè)分號(hào),這種毛病不經(jīng)意間~,由衷感謝你的教導(dǎo)。
回復(fù)

使用道具 舉報(bào)

6#
ID:1013777 發(fā)表于 2022-3-29 08:38 | 只看該作者
大佬們,這個(gè)問題已經(jīng)解決,問題竟然是key()函數(shù)中的while(1)后多加了一個(gè)分號(hào),這種低級(jí)錯(cuò)誤確實(shí)難防,我以后會(huì)勤加練習(xí),全力避免這樣的錯(cuò)誤。由衷的感謝大佬的幫助,我會(huì)仔細(xì)閱讀各位的回復(fù)。
回復(fù)

使用道具 舉報(bào)

7#
ID:1013784 發(fā)表于 2022-3-29 19:02 | 只看該作者
把按鍵的while(1)循環(huán)部分去掉,單獨(dú)弄一個(gè)按鍵函數(shù)。然后放在main函數(shù)的大循環(huán)里
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表