熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
|
建檔扶貧對(duì)象 發(fā)表于 2020-3-20 16:56 void Delay(uint time) 這個(gè)函數(shù)聲明的時(shí)候定義了輸入變量time,所以調(diào)用的時(shí)候要用Delay(xxx),里面填延時(shí)的長(zhǎng)度。 waitforstarting 這個(gè)我不知道是什么,前面也沒(méi)有聲明這個(gè)函數(shù),格式也不對(duì) |
xxpp2011 發(fā)表于 2020-3-20 13:47 這里是聲明部分和主函數(shù)部分函數(shù)。出問(wèn)題的是:void Delay(uint time)參數(shù)列表長(zhǎng)度不同、waitforstarting未定義標(biāo)識(shí)符,你看看是哪里出問(wèn)題了。 #include<reg52.h> #include<intrins.h> #include<math.h> #define uchar unsigned char #define uint unsigned int #define Lcd_Data P0; //定義LCD數(shù)據(jù)端口 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; //計(jì)時(shí)器的高低位 uchar count=0; //10秒計(jì)次數(shù) uint distance; //距離 sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit DQ=P2^7; //DS18B20數(shù)字端口 sbit Busy=P0^7; uint temp; //溫度變量 uchar bdata flag; //DS18B20存在標(biāo)準(zhǔn) void Delay(void); //延時(shí)函數(shù) void Read_Busy(void); //檢查L(zhǎng)CD是否忙 void lint_18B20(void); //初始化18B20 void Write_Comm(uchar); //寫(xiě)入LCD命令 void Write_Data(uhar); //寫(xiě)入LCD數(shù)據(jù) void lint_LCD(void); //初始化LCD uchar Readonechar(void); //讀取第一個(gè)字節(jié) void Writeonechar(uchar dat); //寫(xiě)入第一個(gè)字節(jié) void testtemp(void); //啟動(dòng)溫度轉(zhuǎn)換 uint wd(void); //讀取溫度 void Delay(uint time); //延時(shí)函數(shù) sbit sta_flag=flag^0; //10MS到標(biāo)準(zhǔn)位 sbit fuhao=flag^1; //溫度符號(hào)位 sbit START=P1^0; //啟動(dòng)測(cè)距 sbit CNT=P2^5; //發(fā)射超聲波 sbit CSBIN=P2^6; //返回信號(hào) sbit BUZZER=P3^7; void timer(void); void delay1ms(void); //延時(shí)1MS void sys_init(void); //系統(tǒng)初始化 void display(void); //顯示函數(shù) void computer(void); //計(jì)算 void hextobcd(bit flag,uchar num); //轉(zhuǎn)換BCD void bm(void); //求補(bǔ)碼 void delay15(uchar us); //延時(shí)15us /***********主函數(shù)**************/ void main(void) { uchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); sys_init(); //初始化 display(); //顯示 sta_flag=0; //標(biāo)準(zhǔn)復(fù)位 Waitforstarting; // 檢查按鍵 while(START); for(i=0;i<20;i++) delay1ms(); if(START) goto waitforstarting; BUZZER=0; i=100000; while(i--); TR0=1; //啟動(dòng)定時(shí)器0 ET0=1; testtemp(); //啟動(dòng)溫度轉(zhuǎn)換 while(1) { if(sta_flag) //10MS到了 { while(0==CSBIN); //收到回波 TR1=0; jsh=TH1; jsl=TL1; if(15==count) //900MS到檢測(cè)溫度 { temp=wd(); //讀取溫度 count=0; testtemp(); //重新啟動(dòng)轉(zhuǎn)換 display(); //刷新顯示 } computer(); //計(jì)算距離 hextobcd(); //轉(zhuǎn)換BCD碼 sta_flag=0; } } } |
xxpp2011 發(fā)表于 2020-3-20 13:47 這是聲明和主函數(shù)部分,問(wèn)題是:void Delay(uint time)參數(shù)列表長(zhǎng)度不同、waitforstarting未定義標(biāo)識(shí)符 你可以幫忙看看哪里出問(wèn)題了嗎? #include<reg52.h> #include<intrins.h> #include<math.h> #define uchar unsigned char #define uint unsigned int #define Lcd_Data P0; //定義LCD數(shù)據(jù)端口 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; //計(jì)時(shí)器的高低位 uchar count=0; //10秒計(jì)次數(shù) uint distance; //距離 sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit DQ=P2^7; //DS18B20數(shù)字端口 sbit Busy=P0^7; uint temp; //溫度變量 uchar bdata flag; //DS18B20存在標(biāo)準(zhǔn) void Delay(void); //延時(shí)函數(shù) void Read_Busy(void); //檢查L(zhǎng)CD是否忙 void lint_18B20(void); //初始化18B20 void Write_Comm(uchar); //寫(xiě)入LCD命令 void Write_Data(uhar); //寫(xiě)入LCD數(shù)據(jù) void lint_LCD(void); //初始化LCD uchar Readonechar(void); //讀取第一個(gè)字節(jié) void Writeonechar(uchar dat); //寫(xiě)入第一個(gè)字節(jié) void testtemp(void); //啟動(dòng)溫度轉(zhuǎn)換 uint wd(void); //讀取溫度 void Delay(uint time); //延時(shí)函數(shù) sbit sta_flag=flag^0; //10MS到標(biāo)準(zhǔn)位 sbit fuhao=flag^1; //溫度符號(hào)位 sbit START=P1^0; //啟動(dòng)測(cè)距 sbit CNT=P2^5; //發(fā)射超聲波 sbit CSBIN=P2^6; //返回信號(hào) sbit BUZZER=P3^7; void timer(void); void delay1ms(void); //延時(shí)1MS void sys_init(void); //系統(tǒng)初始化 void display(void); //顯示函數(shù) void computer(void); //計(jì)算 void hextobcd(bit flag,uchar num); //轉(zhuǎn)換BCD void bm(void); //求補(bǔ)碼 void delay15(uchar us); //延時(shí)15us /***********主函數(shù)**************/ void main(void) { uchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); sys_init(); //初始化 display(); //顯示 sta_flag=0; //標(biāo)準(zhǔn)復(fù)位 Waitforstarting; // 檢查按鍵 while(START); for(i=0;i<20;i++) delay1ms(); if(START) goto waitforstarting; BUZZER=0; i=100000; while(i--); TR0=1; //啟動(dòng)定時(shí)器0 ET0=1; testtemp(); //啟動(dòng)溫度轉(zhuǎn)換 while(1) { if(sta_flag) //10MS到了 { while(0==CSBIN); //收到回波 TR1=0; jsh=TH1; jsl=TL1; if(15==count) //900MS到檢測(cè)溫度 { temp=wd(); //讀取溫度 count=0; testtemp(); //重新啟動(dòng)轉(zhuǎn)換 display(); //刷新顯示 } computer(); //計(jì)算距離 hextobcd(); //轉(zhuǎn)換BCD碼 sta_flag=0; } } } |
csmyldl 發(fā)表于 2020-3-20 12:36 這里是聲明部分和主函數(shù)部分函數(shù)。出問(wèn)題的是:void Delay(uint time)參數(shù)列表長(zhǎng)度不同、waitforstarting未定義標(biāo)識(shí)符,你看看是哪里出問(wèn)題了。 #include<reg52.h> #include<intrins.h> #include<math.h> #define uchar unsigned char #define uint unsigned int #define Lcd_Data P0; //定義LCD數(shù)據(jù)端口 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; //計(jì)時(shí)器的高低位 uchar count=0; //10秒計(jì)次數(shù) uint distance; //距離 sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2; sbit DQ=P2^7; //DS18B20數(shù)字端口 sbit Busy=P0^7; uint temp; //溫度變量 uchar bdata flag; //DS18B20存在標(biāo)準(zhǔn) void Delay(void); //延時(shí)函數(shù) void Read_Busy(void); //檢查L(zhǎng)CD是否忙 void lint_18B20(void); //初始化18B20 void Write_Comm(uchar); //寫(xiě)入LCD命令 void Write_Data(uhar); //寫(xiě)入LCD數(shù)據(jù) void lint_LCD(void); //初始化LCD uchar Readonechar(void); //讀取第一個(gè)字節(jié) void Writeonechar(uchar dat); //寫(xiě)入第一個(gè)字節(jié) void testtemp(void); //啟動(dòng)溫度轉(zhuǎn)換 uint wd(void); //讀取溫度 void Delay(uint time); //延時(shí)函數(shù) sbit sta_flag=flag^0; //10MS到標(biāo)準(zhǔn)位 sbit fuhao=flag^1; //溫度符號(hào)位 sbit START=P1^0; //啟動(dòng)測(cè)距 sbit CNT=P2^5; //發(fā)射超聲波 sbit CSBIN=P2^6; //返回信號(hào) sbit BUZZER=P3^7; void timer(void); void delay1ms(void); //延時(shí)1MS void sys_init(void); //系統(tǒng)初始化 void display(void); //顯示函數(shù) void computer(void); //計(jì)算 void hextobcd(bit flag,uchar num); //轉(zhuǎn)換BCD void bm(void); //求補(bǔ)碼 void delay15(uchar us); //延時(shí)15us /***********主函數(shù)**************/ void main(void) { uchar i,j; for(i=0;i<255;i++) for(j=0;j<255;j++); sys_init(); //初始化 display(); //顯示 sta_flag=0; //標(biāo)準(zhǔn)復(fù)位 Waitforstarting; // 檢查按鍵 while(START); for(i=0;i<20;i++) delay1ms(); if(START) goto waitforstarting; BUZZER=0; i=100000; while(i--); TR0=1; //啟動(dòng)定時(shí)器0 ET0=1; testtemp(); //啟動(dòng)溫度轉(zhuǎn)換 while(1) { if(sta_flag) //10MS到了 { while(0==CSBIN); //收到回波 TR1=0; jsh=TH1; jsl=TL1; if(15==count) //900MS到檢測(cè)溫度 { temp=wd(); //讀取溫度 count=0; testtemp(); //重新啟動(dòng)轉(zhuǎn)換 display(); //刷新顯示 } computer(); //計(jì)算距離 hextobcd(); //轉(zhuǎn)換BCD碼 sta_flag=0; } } } |
|
如果前面有聲明這個(gè)函數(shù)的話(huà),調(diào)用要這樣: Waitforstarting(); 如果有輸入?yún)?shù)要填在括號(hào)里面。 第一個(gè)錯(cuò)誤在35行,看不到 |
| 是不是延時(shí)函數(shù)delay()括號(hào)內(nèi)要加入實(shí)際參數(shù)呢?程序不全,不能作出準(zhǔn)確的答復(fù) |
Powered by 單片機(jī)教程網(wǎng)