欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 菜鳥請教:STC89C55RD+單片機做流水燈效果無法點亮LED燈,問題出在哪里? [打印本頁]

作者: 木示    時間: 2021-4-13 11:07
標題: 菜鳥請教:STC89C55RD+單片機做流水燈效果無法點亮LED燈,問題出在哪里?
各位,大神好。
                   本菜,利用普中學習板,想實現3個LED流水燈的效果,LED1不亮,LED2亮,LED3不亮------LED1亮,LED2不亮,LED3亮!如此循環,編譯后,沒有提示錯誤,但下載到學習板上,LED燈沒有任何反應,測試對應的單片機管腳未見有電壓輸出!現在還不知曉問題出在哪里?向各位大神們請教!以下為代碼:

#include <reg51.h>

void delay(unsigned int i);
sbit led1=P2^2;
sbit led2=P2^3;
sbit led3=P2^4;
main()
{
  unsigned char led1,led2,led3;
            
led1=  0xff  ;

  delay(600);

  led2=0x00 ;


  delay(600);

led3=0xff ;
        
         delay(600);
        
        led1=  0x00  ;
        
          delay(600);
        
        led2=0xff ;
        
          delay(600);
               
        led3=0x00 ;
        
          delay(600);
return 0;

}


void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)   
        for(j = 255; j > 0; j--);
}



作者: 木示    時間: 2021-4-13 11:14
creating hex file from ".\Objects\LEDNO2"...
".\Objects\LEDNO2" - 0 Error(s), 0 Warning(s).
Build Time Elapsed:  00:00:02
作者: liu--2019    時間: 2021-4-13 11:36
sbit  位定義   是操作P2口   2/3/4、位的   賦值1和0 應該就能控制燈的狀態   
作者: liu--2019    時間: 2021-4-13 11:41
本帖最后由 liu--2019 于 2021-4-13 14:12 編輯

#include <reg51.h>
        
void delay(unsigned int i);

sbit led1=P2^2;
sbit led2=P2^3;
sbit led3=P2^4;
void main()
{
     while(1)
     {
           led1=1;
           led2=led3=0;
           delay(600);
           led2=1;
           led1=led3=0;
           delay(600);
           led3=1;
           led1=led2=0;
           delay(600);       }  

}

void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)   
        for(j = 255; j > 0; j--);
}

作者: 木示    時間: 2021-4-13 21:49
感謝指導,有一點沒有想明白,用while語句的用意是什么?
作者: jfmdam    時間: 2021-4-13 22:23
while語句就是讓單片機一直保持運行,想要單片機一直工作,就需要給它一個無限循環(C語言中叫死循環,一般不能出現,但單片機中必須要有)來讓他保持工作,完成你的各種指。
作者: ANT1987    時間: 2021-4-14 08:45
你都說要如此循環了,為何程序里面卻沒有循環.
作者: teared    時間: 2021-4-14 11:45
#include <reg51.h>
        
void delay(unsigned int i);


void main()
{

sbit led1=P2^2;
sbit led2=P2^3;
sbit led3=P2^4;
     while(1)
     {
           led1=1;
           led2=led3=0;
           delay(600);
           led2=1;
           led1=led3=0;
           delay(600);
           led3=1;
           led1=led2=0;
           delay(600);       }  

}

void delay(unsigned int i)
{
    unsigned char j;
    for(i; i > 0; i--)   
        for(j = 255; j > 0; j--);
}
試試這個程序
作者: muzhi    時間: 2021-4-14 12:55
無操作系統時主程序里多是一個while(1)死循環在跑

Screenshot_20210414-125342_Chrome.jpg (244.16 KB, 下載次數: 66)

Screenshot_20210414-125342_Chrome.jpg

作者: 木示    時間: 2021-4-14 21:20
jfmdam 發表于 2021-4-13 22:23
while語句就是讓單片機一直保持運行,想要單片機一直工作,就需要給它一個無限循環(C語言中叫死循環,一般 ...


作者: 木示    時間: 2021-4-14 21:21
muzhi 發表于 2021-4-14 12:55
無操作系統時主程序里多是一個while(1)死循環在跑

感謝指導
作者: 木示    時間: 2021-4-14 21:22
teared 發表于 2021-4-14 11:45
#include
        
void delay(unsigned int i);

這個程序是可以 的
作者: 木示    時間: 2021-4-14 21:33
感謝打大家的幫助,經過這兩天學習,我發的程序里面有3出錯誤,雖然編譯無誤,但實際無法操作:1.sbit 的值域只有,0或1.所以LED=0XFF,是錯誤的,雖然語法沒有錯誤。2.少了while語句。3.unsigned char led1,led2,led3;  事實上前面已經定義了LED的對應的管腳,就沒有必要再定義了。經過修改上面3處錯誤后,可以點亮LED燈了,算是自己學習的總結吧。
     接下來,想把這三種效果,做成一個軟件:開機----LED亮------斷電5S內,再上電------LED閃爍-----斷電5S內,再上電----LED流水效果,如此循環。如果斷電>5S,則運行當前的程序。
  希望各位,大神不吝指導!謝謝




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1