標(biāo)題:
基于單片機(jī)的倉庫溫濕度源程序錯(cuò)誤有大神幫忙改么
[打印本頁]
作者:
654234820
時(shí)間:
2018-5-8 20:02
標(biāo)題:
基于單片機(jī)的倉庫溫濕度源程序錯(cuò)誤有大神幫忙改么
本人用的是keil4,源程序如下:
#include<reg51.h>
#include"key_contrl.h"
#include"lcd1602.h"
#define LCM_Data P1
#define Busy 0x80 //用于檢測(cè)LCM狀態(tài)字中的Busy標(biāo)識(shí)
extern int temp_value,humi_value;
extern int flag;
extern int temp;
sbit red=P2^6;
sbit blue=P2^7;
sbit LCM_RW= P2^4; //定義引腳
sbit LCM_RS= P2^5;
sbit LCM_E= P2^3;
sbit beep = P0^6;//beep = 0時(shí)候發(fā)聲
extern inttemph,templ,disp_mode,huih,huil;
extern chartel,teh,hh,hl;
//寫數(shù)據(jù)
void alarm()
{
beep=0;
Delay5Ms();
Delay5Ms();
beep=1;
Delay5Ms();
Delay5Ms();
}
voidWriteDataLCM(unsigned char WDLCM)
{
ReadStatusLCM(); //檢測(cè)忙
LCM_Data = WDLCM;
LCM_RS = 1;
LCM_RW = 0;
LCM_E = 0; //若晶振速度太高可以在這后加小的延時(shí)
LCM_E = 0; //延時(shí)
LCM_E = 1;
}
//寫指令
voidWriteCommandLCM(unsigned char WCLCM,BuysC) //BuysC為0時(shí)忽略忙檢測(cè)
{
if (BuysC)ReadStatusLCM(); //根據(jù)需要檢測(cè)忙
LCM_Data = WCLCM;
LCM_RS = 0;
LCM_RW = 0;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
}
//讀數(shù)據(jù)
unsigned charReadDataLCM(void)
{
LCM_RS = 1;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
return(LCM_Data);
}
//讀狀態(tài)
unsigned charReadStatusLCM(void)
{
LCM_Data = 0xFF;
LCM_RS = 0;
LCM_RW = 1;
LCM_E = 0;
LCM_E = 0;
LCM_E = 1;
while (LCM_Data &Busy); //檢測(cè)忙信號(hào)
return(LCM_Data);
}
void LCMInit(void)//LCM初始化
{
LCM_Data = 0;
WriteCommandLCM(0x38,0);//三次顯示模式設(shè)置,不檢測(cè)忙信號(hào)
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,0);
Delay5Ms();
WriteCommandLCM(0x38,1);//顯示模式設(shè)置,開始要求每次檢測(cè)忙信號(hào)
WriteCommandLCM(0x08,1);//關(guān)閉顯示
WriteCommandLCM(0x01,1);//顯示清屏
WriteCommandLCM(0x06,1);// 顯示光標(biāo)移動(dòng)設(shè)置
WriteCommandLCM(0x0C,1);// 顯示開及光標(biāo)設(shè)置
}
//按指定位置顯示一個(gè)字符
voidDisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData)
{
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
if (Y) X |= 0x40; //當(dāng)要顯示第二行時(shí)地址碼 0x40;
X |= 0x80; // 算出指令碼
WriteCommandLCM(X, 0);//這里不檢測(cè)忙信號(hào),發(fā)送地址碼
WriteDataLCM(DData);
}
//按指定位置顯示一串字符
voidDisplayListChar(unsigned char X, unsigned char Y, unsigned char code *DData)
{
unsigned charListLength;
ListLength = 0;
Y &= 0x1;
X &= 0xF; //限制X不能大于15,Y不能大于1
while(DData[ListLength]>0x20) //若到達(dá)字串尾則退出
{
if (X <= 0xF) //X坐標(biāo)應(yīng)小于0xF
{
DisplayOneChar(X, Y,DData[ListLength]); //顯示單個(gè)字符
ListLength++;
X++;
}
}
}
//5ms延時(shí)
void Delay5Ms(void)
{
unsigned int TempCyc =5552;
while(TempCyc--);
}
/*voidDelay_xMs(unsigned int x)
{
unsigned int i,j;
for( i =0;i < x;i++ )
{
for( j =0;j<500;j++ );
}
}
*/
void display_temp(void)
{
DisplayOneChar(0,0,' ');
DisplayOneChar(1,0,' ');
DisplayOneChar(2,0,'T');
DisplayOneChar(3,0,'e');
DisplayOneChar(4,0,'m');
DisplayOneChar(5,0,'p');
DisplayOneChar(6,0,':');
DisplayOneChar(10,0,'C');
DisplayOneChar(9,0,0xdf);
DisplayOneChar(7,0,temp_value/100+0x30);
DisplayOneChar(8,0,(temp_value/10)-(temp_value/100)*10+0x30);
DisplayOneChar(11,0,' ');
DisplayOneChar(12,0,' ');
DisplayOneChar(13,0,' ');
DisplayOneChar(14,0,' ');
DisplayOneChar(15,0,' ');
DisplayOneChar(0,1,' ');
DisplayOneChar(1,1,' ');
DisplayOneChar(2,1,'H');
DisplayOneChar(3,1,'u');
DisplayOneChar(4,1,'m');
DisplayOneChar(5,1,'i');
DisplayOneChar(6,1,'d');
DisplayOneChar(7,1,'i');
DisplayOneChar(8,1,'t');
DisplayOneChar(9,1,'y');
DisplayOneChar(10,1,':');
DisplayOneChar(11,1,humi_value/100+0x30);
DisplayOneChar(12,1,(humi_value/10)-(humi_value/100)*10+0x30);
DisplayOneChar(13,1,'%');
DisplayOneChar(14,1,' ');
DisplayOneChar(15,1,' ');
}
voiddisplay_temp1(void)
{
DisplayOneChar(0,0,' ');
DisplayOneChar(1,0,'T');
DisplayOneChar(2,0,'h');
DisplayOneChar(3,0,':');
if(flag&teh)
{
DisplayOneChar(4,0,0x20);
DisplayOneChar(5,0,0x20);
}
else
{
DisplayOneChar(4,0,temph/10+0x30);
DisplayOneChar(5,0,temph%10+0x30);
}
DisplayOneChar(6,0,0xdf);
DisplayOneChar(7,0,'C');
DisplayOneChar(8,0,' ');
DisplayOneChar(9,0,'T');
DisplayOneChar(10,0,'h');
DisplayOneChar(11,0,':');
if(flag&tel)
{
DisplayOneChar(12,0,0x20);
DisplayOneChar(13,0,0x20);
}
else
{
DisplayOneChar(12,0,templ/10+0x30);
DisplayOneChar(13,0,templ%10+0x30);
}
DisplayOneChar(14,0,0xdf);
DisplayOneChar(15,0,'C');
DisplayOneChar(0,1,' ');
DisplayOneChar(1,1,'H');
DisplayOneChar(2,1,'h');
DisplayOneChar(3,1,':');
if(flag&hh)
{
DisplayOneChar(4,1,0x20);
DisplayOneChar(5,1,0x20);
}
else
{
DisplayOneChar(4,1,huih/10+0x30);
DisplayOneChar(5,1,huih%10+0x30);
}
DisplayOneChar(6,1,'%');
DisplayOneChar(7,1,' ');
DisplayOneChar(8,1,' ');
DisplayOneChar(9,1,'H');
DisplayOneChar(10,1,'l');
DisplayOneChar(11,1,':');
if(flag&hl)
{
DisplayOneChar(12,1,0x20);
DisplayOneChar(13,1,0x20);
}
else
{
DisplayOneChar(12,1,huil/10+0x30);
DisplayOneChar(13,1,huil%10+0x30);
}
DisplayOneChar(14,1,'%');
DisplayOneChar(15,1,' ');
}
void displayfun1()
{
display_temp();
}
void displayfun2()
{
display_temp1();
}
void display()
{
if((((temp_value/10)%100)<templ)||(((humi_value/10)%100)<huil))
{beep=0;red=0;} //溫度低于下限值,報(bào)警
elseif(((temp_value/10)%100)>=temph || ((humi_value/10)%100)>=huih)
{beep=0;blue=0;} //溫度高于或等于上限值,報(bào)警
else{beep=1;red=1;blue=1;}
// if(((humi_value/10)%100)<huil){beep=0;led=0;} //溫度低于下限值,報(bào)警
// elseif(((humi_value/10)%100)>=huih)beep=0; //溫度高于或等于上限值,報(bào)警
// else{beep=1;led=1;}
if(!disp_mode)
displayfun1(); //顯示正常
else
displayfun2(); //設(shè)置界面
}
#include"dht11.h"
#include<reg52.h>
//請(qǐng)根據(jù)自己的dht11接的IO 口來改動(dòng)位定義
sbit dht11 = P3^0;
//防止在與硬件通信時(shí)發(fā)生死循環(huán)的計(jì)數(shù)范圍
#define NUMBER 20
#define SIZE 5
static unsigned charstatus;
//存放五字節(jié)數(shù)據(jù)的數(shù)組
static unsigned charvalue_array[SIZE];
/*可在其他的文件引用溫濕度值,實(shí)際是溫度的整數(shù)的10 倍
如dht11 讀回的溫度是26,則temp_value = 260, 濕度同理*/
int temp_value,humi_value;
static unsigned charReadValue(void);
void Delay_1ms(unsignedint ms)
{
unsigned int x, y;
for(x = ms; x > 0; x--)
{
for(y = 124; y > 0; y--);
}
}
static voidDHT11_Delay_10us(void)
{
unsigned char i;
i--;
i--;
i--;
i--;
i--;
i--;
}
/*讀一個(gè)字節(jié)的數(shù)據(jù)*/
static unsigned charDHT11_ReadValue(void)
{
unsigned char count, value = 0, i;
status = OK; //設(shè)定標(biāo)志為正常狀態(tài)
for(i = 8; i > 0; i--)
{
//高位在先
value <<= 1;
count = 0;
//每一位數(shù)據(jù)前會(huì)有一個(gè)50us 的低電平時(shí)間.等待50us低電平結(jié)束
while(dht11 == 0 && count++ < NUMBER);
if(count >= NUMBER)
{
status = ERROR; //設(shè)定錯(cuò)誤標(biāo)志
return 0; //函數(shù)執(zhí)行過程發(fā)生錯(cuò)誤就退出函數(shù)
}
//26-28us 的高電平表示該位是0,為70us高電平表該位1
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
//延時(shí)30us 后檢測(cè)數(shù)據(jù)線是否還是高電平
if(dht11 != 0)
{
//進(jìn)入這里表示該位是1
value++;
//等待剩余(約40us)的高電平結(jié)束
while(dht11 != 0 && count++ < NUMBER)
{
dht11 = 1;
}
if(count >= NUMBER)
{
status = ERROR; //設(shè)定錯(cuò)誤標(biāo)志
return 0;
}
}
}
return (value);
}
//讀溫度和濕度函數(shù),讀一次的數(shù)據(jù),共五字節(jié),讀出成功函數(shù)返回OK, 錯(cuò)誤返回ERROR
unsigned charDHT11_ReadTempAndHumi(void)
{
unsigned char i = 0, check_value = 0,count = 0;
EA = 0;
dht11 = 0; //拉低數(shù)據(jù)線大于18ms 發(fā)送開始信號(hào)
Delay_1ms(20); //需大于18 毫秒
dht11 = 1; //釋放數(shù)據(jù)線,用于檢測(cè)低電平的應(yīng)答信號(hào)
//延時(shí)20-40us,等待一段時(shí)間后檢測(cè)應(yīng)答信號(hào),應(yīng)答信號(hào)是從機(jī)拉低數(shù)據(jù)線80us
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
DHT11_Delay_10us();
if(dht11 != 0) //檢測(cè)應(yīng)答信號(hào),應(yīng)答信號(hào)是低電平
{
//沒應(yīng)答信號(hào)
EA = 1;
return ERROR;
}
else
{
//有應(yīng)答信號(hào)
while(dht11 == 0 && count++ < NUMBER); //等待應(yīng)答信號(hào)結(jié)束
if(count >= NUMBER) //檢測(cè)計(jì)數(shù)器是否超過了設(shè)定的范圍
{
dht11 = 1;
EA = 1;
return ERROR; //讀數(shù)據(jù)出錯(cuò),退出函數(shù)
}
count = 0;
dht11 = 1;//釋放數(shù)據(jù)線
//應(yīng)答信號(hào)后會(huì)有一個(gè)80us 的高電平,等待高電平結(jié)束
while(dht11 != 0 && count++ < NUMBER);
if(count >= NUMBER)
{
dht11 = 1;
EA = 1;
return ERROR; //退出函數(shù)
}
//讀出濕.溫度值
for(i = 0; i < SIZE; i++)
{
value_array[ i] = DHT11_ReadValue();
if(status == ERROR)//調(diào)用ReadValue()讀數(shù)據(jù)出錯(cuò)會(huì)設(shè)定status 為ERROR
{
dht11 = 1;
EA = 1;
return ERROR;
}
//讀出的最后一個(gè)值是校驗(yàn)值不需加上去
if(i != SIZE - 1)
{
//讀出的五字節(jié)數(shù)據(jù)中的前四字節(jié)數(shù)據(jù)和等于第五字節(jié)數(shù)據(jù)表示成功
check_value += value_array[ i];
}
}//end for
//在沒用發(fā)生函數(shù)調(diào)用失敗時(shí)進(jìn)行校驗(yàn)
if(check_value == value_array[SIZE - 1])
{
//將溫濕度擴(kuò)大10 倍方便分離出每一位
humi_value = value_array[0] * 10;
temp_value = value_array[2] * 10;
dht11 = 1;
EA = 1;
return OK; //正確的讀出dht11 輸出的數(shù)據(jù)
}
else
{
//校驗(yàn)數(shù)據(jù)出錯(cuò)
EA = 1;
return ERROR;
}
}
}
#include"lcd1602.h"
#include"key_contrl.h"
#include"dht11.h"
#include<reg52.h>
int temp;
int temph = 40; //初始上限值
int templ = 10; //初始下限值
int huih = 90;
int huil =10;
inttimecount,flag=0,number=0,count=0;
void t0(void) interrupt1 using 0
{ TH0=(65535-50000)/256; //50ms定時(shí)
TL0=(65535-50000)%256;
timecount++;//re_disp++;
if(timecount>9){timecount=0;flag=~flag;} //50ms到了則反顯
//if(re_disp>200){re_disp=0;if(id)id=0;} //10秒到了則由調(diào)整模式自動(dòng)進(jìn)入正常顯示模式
}
void t1(void) interrupt 3 using 0
{
TH1=(65535-50000)/256;//50ms定時(shí)
TL1=(65535-50000)%256;
number++;
if(number>2)
{
number=0;
count++;
//beep=0;
}
}
void main(void)
{
TMOD=0x11; //初始化定時(shí)器t0方式1
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=(65535-50000)/256;
TL1=(65535-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
LCMInit(); //LCM初始化
Delay5Ms(); //延時(shí)片刻
while(1)
{
if(count==2)
{
DHT11_ReadTempAndHumi();
count=0;
}
delay_LCM(300);
Scan_Key();
}
}
復(fù)制代碼
這里是出現(xiàn)的各種各樣的問題
Build target '目標(biāo) 1'
compiling 1.c...
1.c(3): warning C318: can't open file 'key_contrl.h'
1.c(4): warning C318: can't open file 'lcd1602.h'
1.C(34): warning C206: 'Delay5Ms': missing function-prototype
1.C(46): warning C206: 'ReadStatusLCM': missing function-prototype
1.C(77): error C231: 'ReadStatusLCM': redefinition
1.C(86): error C231: 'ReadStatusLCM': redefinition
1.C(131): error C231: 'Delay5Ms': redefinition
1.C(134): error C231: 'Delay5Ms': redefinition
1.c(296): warning C318: can't open file 'dht11.h'
D:\禿驢爹\C51\INC\REG52.H(13): error C231: 'P0': redefinition
D:\禿驢爹\C51\INC\REG52.H(14): error C231: 'P1': redefinition
D:\禿驢爹\C51\INC\REG52.H(15): error C231: 'P2': redefinition
D:\禿驢爹\C51\INC\REG52.H(16): error C231: 'P3': redefinition
D:\禿驢爹\C51\INC\REG52.H(17): error C231: 'PSW': redefinition
D:\禿驢爹\C51\INC\REG52.H(18): error C231: 'ACC': redefinition
D:\禿驢爹\C51\INC\REG52.H(19): error C231: 'B': redefinition
D:\禿驢爹\C51\INC\REG52.H(20): error C231: 'SP': redefinition
D:\禿驢爹\C51\INC\REG52.H(21): error C231: 'DPL': redefinition
D:\禿驢爹\C51\INC\REG52.H(22): error C231: 'DPH': redefinition
D:\禿驢爹\C51\INC\REG52.H(23): error C231: 'PCON': redefinition
D:\禿驢爹\C51\INC\REG52.H(24): error C231: 'TCON': redefinition
D:\禿驢爹\C51\INC\REG52.H(25): error C231: 'TMOD': redefinition
D:\禿驢爹\C51\INC\REG52.H(26): error C231: 'TL0': redefinition
D:\禿驢爹\C51\INC\REG52.H(27): error C231: 'TL1': redefinition
D:\禿驢爹\C51\INC\REG52.H(28): error C231: 'TH0': redefinition
D:\禿驢爹\C51\INC\REG52.H(29): error C231: 'TH1': redefinition
D:\禿驢爹\C51\INC\REG52.H(30): error C231: 'IE': redefinition
D:\禿驢爹\C51\INC\REG52.H(31): error C231: 'IP': redefinition
D:\禿驢爹\C51\INC\REG52.H(32): error C231: 'SCON': redefinition
D:\禿驢爹\C51\INC\REG52.H(33): error C231: 'SBUF': redefinition
D:\禿驢爹\C51\INC\REG52.H(45): error C231: 'CY': redefinition
D:\禿驢爹\C51\INC\REG52.H(46): error C231: 'AC': redefinition
D:\禿驢爹\C51\INC\REG52.H(47): error C231: 'F0': redefinition
D:\禿驢爹\C51\INC\REG52.H(48): error C231: 'RS1': redefinition
D:\禿驢爹\C51\INC\REG52.H(49): error C231: 'RS0': redefinition
D:\禿驢爹\C51\INC\REG52.H(50): error C231: 'OV': redefinition
D:\禿驢爹\C51\INC\REG52.H(51): error C231: 'P': redefinition
D:\禿驢爹\C51\INC\REG52.H(54): error C231: 'TF1': redefinition
D:\禿驢爹\C51\INC\REG52.H(55): error C231: 'TR1': redefinition
D:\禿驢爹\C51\INC\REG52.H(56): error C231: 'TF0': redefinition
D:\禿驢爹\C51\INC\REG52.H(57): error C231: 'TR0': redefinition
D:\禿驢爹\C51\INC\REG52.H(58): error C231: 'IE1': redefinition
D:\禿驢爹\C51\INC\REG52.H(59): error C231: 'IT1': redefinition
D:\禿驢爹\C51\INC\REG52.H(60): error C231: 'IE0': redefinition
D:\禿驢爹\C51\INC\REG52.H(61): error C231: 'IT0': redefinition
D:\禿驢爹\C51\INC\REG52.H(64): error C231: 'EA': redefinition
D:\禿驢爹\C51\INC\REG52.H(66): error C231: 'ES': redefinition
D:\禿驢爹\C51\INC\REG52.H(67): error C231: 'ET1': redefinition
D:\禿驢爹\C51\INC\REG52.H(68): error C231: 'EX1': redefinition
D:\禿驢爹\C51\INC\REG52.H(69): error C231: 'ET0': redefinition
D:\禿驢爹\C51\INC\REG52.H(70): error C231: 'EX0': redefinition
D:\禿驢爹\C51\INC\REG52.H(74): error C231: 'PS': redefinition
D:\禿驢爹\C51\INC\REG52.H(75): error C231: 'PT1': redefinition
D:\禿驢爹\C51\INC\REG52.H(76): error C231: 'PX1': redefinition
D:\禿驢爹\C51\INC\REG52.H(77): error C231: 'PT0': redefinition
D:\禿驢爹\C51\INC\REG52.H(78): error C231: 'PX0': redefinition
D:\禿驢爹\C51\INC\REG52.H(81): error C231: 'RD': redefinition
D:\禿驢爹\C51\INC\REG52.H(82): error C231: 'WR': redefinition
D:\禿驢爹\C51\INC\REG52.H(83): error C231: 'T1': redefinition
D:\禿驢爹\C51\INC\REG52.H(84): error C231: 'T0': redefinition
D:\禿驢爹\C51\INC\REG52.H(85): error C231: 'INT1': redefinition
D:\禿驢爹\C51\INC\REG52.H(86): error C231: 'INT0': redefinition
D:\禿驢爹\C51\INC\REG52.H(87): error C231: 'TXD': redefinition
D:\禿驢爹\C51\INC\REG52.H(88): error C231: 'RXD': redefinition
D:\禿驢爹\C51\INC\REG52.H(91): error C231: 'SM0': redefinition
D:\禿驢爹\C51\INC\REG52.H(92): error C231: 'SM1': redefinition
D:\禿驢爹\C51\INC\REG52.H(93): error C231: 'SM2': redefinition
D:\禿驢爹\C51\INC\REG52.H(94): error C231: 'REN': redefinition
D:\禿驢爹\C51\INC\REG52.H(95): error C231: 'TB8': redefinition
D:\禿驢爹\C51\INC\REG52.H(96): error C231: 'RB8': redefinition
D:\禿驢爹\C51\INC\REG52.H(97): error C231: 'TI': redefinition
D:\禿驢爹\C51\INC\REG52.H(98): error C231: 'RI': redefinition
1.C(345): error C202: 'OK': undefined identifier
1.C(355): error C202: 'ERROR': undefined identifier
1.C(374): error C202: 'ERROR': undefined identifier
1.C(398): error C202: 'ERROR': undefined identifier
1.C(408): error C202: 'ERROR': undefined identifier
1.C(418): error C202: 'ERROR': undefined identifier
1.C(424): error C202: 'ERROR': undefined identifier
1.C(428): error C202: 'ERROR': undefined identifier
1.C(445): error C202: 'OK': undefined identifier
1.C(451): error C202: 'ERROR': undefined identifier
1.c(455): warning C318: can't open file 'lcd1602.h'
1.c(457): warning C318: can't open file 'key_contrl.h'
1.c(458): warning C318: can't open file 'dht11.h'
目標(biāo)未創(chuàng)建
作者:
654234820
時(shí)間:
2018-5-8 20:04
剛剛?cè)腴T的樓主 希望大家給予詳細(xì)解答
作者:
chaoself
時(shí)間:
2018-5-10 10:37
你這里不是沒有把頭文件放在工程的文件夾里?你的主函數(shù)用了#include<reg51.h>,你的頭文件應(yīng)該是用了#include<reg52.h>。所以肯定有很多錯(cuò)誤了,你再修改一下。你還有一些函數(shù)沒定義,仔細(xì)查一下。
作者:
654234820
時(shí)間:
2018-5-10 18:27
這里是改完以后出現(xiàn)的問題,請(qǐng)問該怎么修改
1.c(3): warning C318: can't open file 'key_contrl.h'
1.c(4): warning C318: can't open file 'lcd1602.h'
1.C(34): warning C206: 'Delay5Ms': missing function-prototype
1.C(46): warning C206: 'ReadStatusLCM': missing function-prototype
1.C(131): error C231: 'Delay5Ms': redefinition
1.C(134): error C231: 'Delay5Ms': redefinition
1.c(296): warning C318: can't open file 'dht11.h'
1.C(345): error C202: 'OK': undefined identifier
1.C(355): error C202: 'ERROR': undefined identifier
1.C(374): error C202: 'ERROR': undefined identifier
1.C(398): error C202: 'ERROR': undefined identifier
1.C(408): error C202: 'ERROR': undefined identifier
1.C(418): error C202: 'ERROR': undefined identifier
1.C(424): error C202: 'ERROR': undefined identifier
1.C(428): error C202: 'ERROR': undefined identifier
1.C(445): error C202: 'OK': undefined identifier
1.C(451): error C202: 'ERROR': undefined identifier
1.c(455): warning C318: can't open file 'lcd1602.h'
1.c(457): warning C318: can't open file 'key_contrl.h'
1.c(458): warning C318: can't open file 'dht11.h'
1.c - 12 Error(s), 8 Warning(s).
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1