久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: [求助]這個簡單的流水燈程序怎么了 [打印本頁]

作者: hsllssmxian    時間: 2009-6-30 22:18
標題: [求助]這個簡單的流水燈程序怎么了

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

 P17=0;
 uchar k=0; //設置流水燈的方向標志位
 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++);
}

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


作者: zhou402306834    時間: 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; //設置發光管的開關
main()
{

 P17=0;
 k=0; //設置流水燈的方向標志位
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    時間: 2009-7-1 08:50

上面的〈at89x51.h>是我隨便改的,和錯誤沒關系。


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

作者: hg1949    時間: 2009-7-1 19:40

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


作者: hsllssmxian    時間: 2009-7-4 07:08
如果這樣的話,編譯有錯通不過,
#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    時間: 2009-7-4 19:26

在函數中,變量的定義必須放在執行語句前面!


作者: 單片機材料    時間: 2009-7-24 15:34

把定義部分應該放在主函數MAIN之前吧,全局變量


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

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

作者: zhoufukang    時間: 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    時間: 2009-12-7 16:29

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

 

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


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

main里面的

P17=0;是賦值語句

肯定要放在

uchar k=0; //設置流水燈的方向標志位 
uchar leds=0x01;

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


作者: 桃源客    時間: 2010-6-30 16:28

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

我也遇到過這樣的問題,不過現在不會這樣的了。

 

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

把:

P17=0;
 uchar k=0; //設置流水燈的方向標志位
 uchar leds=0x01;

改為

uchar k=0; //設置流水燈的方向標志位
 uchar leds=0x01;
P17=0;
 應該可以的了。

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





歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩在线中文字幕 | 风间由美一区二区三区 | 国产成人精品亚洲 | 婷婷综合| 亚洲精品成人网 | 一本在线 | 国产一级18片视频 | 亚洲私人影院 | 欧美日韩亚洲一区 | 91亚洲精品在线 | 免费看黄色片子 | 成人中文字幕在线观看 | 免费h片| 欧美激情一二三区 | 国产成人a亚洲精品 | 欧美日韩一区二区三区视频 | av黄色在线 | 免费看片网站91 | 日韩精品区| 日韩大片在线观看 | 涩久久 | 国产一区二区三区免费播放 | 色八区 | 最新免费黄色网址 | 久久精品二区 | 欧美专区第一页 | 日日夜夜天天干 | 国产一区免费视频 | 男女裸体无遮挡做爰 | 亚洲精品成人网 | 激情影院在线观看 | 中文字幕视频一区 | 欧美一区二 | 欧美一级二级三级 | 91久久精品日日躁夜夜躁欧美 | 国产精品国产三级国产 | 日本黄色免费网站 | xxx免费视频 | 久草福利在线观看 | 欧美综合色 | 国产精品高潮呻吟av |