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

標(biāo)題: [求助]這個(gè)簡單的流水燈程序怎么了 [打印本頁]

作者: hsllssmxian    時(shí)間: 2009-6-30 22:18
標(biāo)題: [求助]這個(gè)簡單的流水燈程序怎么了

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
delay(uint t);
sbit P17=P1^7; //設(shè)置發(fā)光管的開關(guān)
main()
{

 P17=0;
 uchar k=0; //設(shè)置流水燈的方向標(biāo)志位
 uchar leds=0x01;
 P0=~leds;
 while(1)
 {
  delay(1000); 
  if(k==0&&leds==0x80)
   {
     k=1;
   }
  else if(k==1&&leds==0x01) 
   {
    k=0;
   }
  if(k==0)
   {
    leds=leds<<1;
    P0=~leds;
   }
  else
   {
    leds=leds>>1;
    P0=~leds;
   }
  }

}
delay(uint t)
{
 uint i,j;
 for(i=0;1<t;i++);
 for(j=0;j<223;j++);
}

就這個(gè)簡單流水燈,為什么編譯老是說有K,leds沒有被定義,編譯無法通過,試著調(diào)整擺放P17的位置,卻能編譯成功,這到底為什么啊?誰能給個(gè)解釋啊?


作者: zhou402306834    時(shí)間: 2009-7-1 08:49

#include <at89x51.h>
#define uchar unsigned char
#define uint unsigned int
uchar k,leds;
delay(uint t);
sbit P17=P1^7; //設(shè)置發(fā)光管的開關(guān)
main()
{

 P17=0;
 k=0; //設(shè)置流水燈的方向標(biāo)志位
leds=0x01;
 P0=~leds;
 while(1)
 {
  delay(1000);
  if((k==0)&&(leds==0x80))
   {
     k=1;
   }
  else if((k==1)&&(leds==0x01))
   {
    k=0;
   }
  if(k==0)
   {
    leds=leds<<1;
    P0=~leds;
   }
  else
   {
    leds=leds>>1;
    P0=~leds;
   }
  }

}
delay(uint t)
{
 uint i,j;
 for(i=0;1<t;i++);
 for(j=0;j<223;j++);
}


這樣就可以了,什么原因,我也不清楚,請高手回答一下,謝謝??
作者: zhou402306834    時(shí)間: 2009-7-1 08:50

上面的〈at89x51.h>是我隨便改的,和錯(cuò)誤沒關(guān)系。


作者: zhou402306834    時(shí)間: 2009-7-1 08:55
還有一種方法是把P17=0寫在uchar led=0x01的后面也行。
main()
{
 uchar k=0; //設(shè)置流水燈的方向標(biāo)志位
uchar leds=0x01;
 P17=0;

作者: hg1949    時(shí)間: 2009-7-1 19:40

把定義放在main前面時(shí),定義的量在全局有效


作者: hsllssmxian    時(shí)間: 2009-7-4 07:08
如果這樣的話,編譯有錯(cuò)通不過,
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
delay(uint t);
sbit P17=P1^7;
main()
{
 P17=0;
 uchar k,leds;
 leds=0x01;
 P0=~leds;
 while(1)

但是如果只是把P17=0放到uchar k,leds;的后面就可以
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
delay(uint t);
sbit P17=P1^7;
main()
{
 uchar k,leds;
 leds=0x01;
 P0=~leds;
 P17=0;
 while(1)

真是不得其解啊?想不通為什么...

作者: lzh_567    時(shí)間: 2009-7-4 19:26

在函數(shù)中,變量的定義必須放在執(zhí)行語句前面!


作者: 單片機(jī)材料    時(shí)間: 2009-7-24 15:34

把定義部分應(yīng)該放在主函數(shù)MAIN之前吧,全局變量


作者: a4496216    時(shí)間: 2009-7-27 09:36
#define uchar unsigned char
#define uint unsigned int

#include <reg51.h>
。。
。。
。。
這樣?

作者: zhoufukang    時(shí)間: 2009-10-26 10:25

#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
delay(uint t);                  //什么意思??
sbit P17=P1^7;

uchar k,leds;

main()
{
 P17=0;
  leds=0x01;
 P0=~leds;
 while(1)

}


作者: sophya    時(shí)間: 2009-12-7 16:29

P17=0;賦值語句 unchar leds;變量定義

 

變量定義放在后面肯定不能通過編譯。


作者: long05931    時(shí)間: 2010-1-6 17:05
定義一般都在每個(gè)函數(shù)的最前面
作者: li334505330    時(shí)間: 2010-6-2 15:50
void delay(uint z);
作者: zengyi703    時(shí)間: 2010-6-30 14:10

main里面的

P17=0;是賦值語句

肯定要放在

uchar k=0; //設(shè)置流水燈的方向標(biāo)志位 
uchar leds=0x01;

之后了,這里沒有什么全局變量不全局變量的問題


作者: 桃源客    時(shí)間: 2010-6-30 16:28

“為什么編譯老是說有K,leds沒有被定義”

我也遇到過這樣的問題,不過現(xiàn)在不會這樣的了。

 

定義變量和常量一定要在要定義,再寫執(zhí)行語句,否則不可能編譯通過

把:

P17=0;
 uchar k=0; //設(shè)置流水燈的方向標(biāo)志位
 uchar leds=0x01;

改為

uchar k=0; //設(shè)置流水燈的方向標(biāo)志位
 uchar leds=0x01;
P17=0;
 應(yīng)該可以的了。

[此貼子已經(jīng)被作者于2010-6-30 16:28:24編輯過]





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