|
166黑幣
這里是聲明部分和主函數部分函數。出問題的是:void Delay(uint time)參數列表長度不同、waitforstarting未定義標識符,大神看看是哪里出問題了。附件里有全部函數
#include<reg52.h>
#include<intrins.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
#define Lcd_Data P0; //定義LCD數據端口
uchar code dispbuf[33]={"Temperature: Distance: mm"};
uchar numcode[10]={'0','1','2','3','4','5','6','7','8','9'};
uint num[29]={0};
uchar jsh,jsl; //計時器的高低位
uchar count=0; //10秒計次數
uint distance; //距離
sbit RS=P2^0;
sbit RW=P2^1;
sbit E=P2^2;
sbit DQ=P2^7; //DS18B20數字端口
sbit Busy=P0^7;
uint temp; //溫度變量
uchar bdata flag; //DS18B20存在標準
void Delay(void); //延時函數
void Read_Busy(void); //檢查LCD是否忙
void lint_18B20(void); //初始化18B20
void Write_Comm(uchar); //寫入LCD命令
void Write_Data(uhar); //寫入LCD數據
void lint_LCD(void); //初始化LCD
uchar Readonechar(void); //讀取第一個字節
void Writeonechar(uchar dat); //寫入第一個字節
void testtemp(void); //啟動溫度轉換
uint wd(void); //讀取溫度
void Delay(uint time); //延時函數
sbit sta_flag=flag^0; //10MS到標準位
sbit fuhao=flag^1; //溫度符號位
sbit START=P1^0; //啟動測距
sbit CNT=P2^5; //發射超聲波
sbit CSBIN=P2^6; //返回信號
sbit BUZZER=P3^7;
void timer(void);
void delay1ms(void); //延時1MS
void sys_init(void); //系統初始化
void display(void); //顯示函數
void computer(void); //計算
void hextobcd(bit flag,uchar num); //轉換BCD
void bm(void); //求補碼
void delay15(uchar us); //延時15us
/***********主函數**************/
void main(void)
{
uchar i,j;
for(i=0;i<255;i++)
for(j=0;j<255;j++);
sys_init(); //初始化
display(); //顯示
sta_flag=0; //標準復位
Waitforstarting; // 檢查按鍵
while(START);
for(i=0;i<20;i++)
delay1ms();
if(START)
goto waitforstarting;
BUZZER=0;
i=100000;
while(i--);
TR0=1; //啟動定時器0
ET0=1;
testtemp(); //啟動溫度轉換
while(1)
{
if(sta_flag) //10MS到了
{
while(0==CSBIN); //收到回波
TR1=0;
jsh=TH1;
jsl=TL1;
if(15==count) //900MS到檢測溫度
{
temp=wd(); //讀取溫度
count=0;
testtemp(); //重新啟動轉換
display(); //刷新顯示
}
computer(); //計算距離
hextobcd(); //轉換BCD碼
sta_flag=0;
}
}
}
|
最佳答案
查看完整內容
我看了你的代碼,第一個問題
void Delay(uint time); //延時函數
聲明時括號里面的uint time意思是調用這個函數時需要在括號里面輸入參數time,可以填一個數字(具體需要延時的長度)。
然而你在前面還有一行聲明了名稱一樣的函數,里面沒有定義輸入參數
void Delay(void); //延時函數
需要把這行刪掉。
第二個問題
Waitforstarting; // 檢查 ...
|