#include "public.h" #include "smg.h" #include "ds18b20.h" #include "reg52.h" #include <stdio.h> void init_uart() { SCON = 0x50; TMOD = 0x20; TH1 = 0xfd; TL1 = 0xfd; TR1 = 1; EA = 1; ES = 1; } void send_byte(unsigned char dat) { SBUF = dat; while(!TI); TI = 0; } void send_string(char *str) { while(*str != '\0') { send_byte(*str++); } } void main() { u8 i=0; int temp_value; u8 temp_buf[5]; char str[10]; init_uart(); // ds18b20_init(); // while(1) { i++; if(i%50==0) // temp_value=ds18b20_read_temperture()*10; if(temp_value<0) { temp_value=-temp_value; temp_buf[0]=0x40; } else temp_buf[0]=0x00; temp_buf[0]=gsmg_code[temp_value/1000]; temp_buf[1]=gsmg_code[temp_value%1000/100]; temp_buf[2]=gsmg_code[temp_value%1000%100/10]|0x80; temp_buf[3]=gsmg_code[temp_value%1000%100%10]; smg_display(temp_buf,1); sprintf(str, "%d.%d\r\n", temp_value/100, temp_value%10); send_string(str); } } error C202: 'str': undefined identifier
时间: 2024-03-12 20:44:26 浏览: 72
这段代码中出现了编译错误C202: 'str': undefined identifier。这是因为在main函数中调用了sprintf函数,但是sprintf函数需要一个char类型的字符数组作为参数,而在main函数中并没有定义这个字符数组。
要解决这个错误,需要在main函数中定义一个长度足够的字符数组,例如:
```
void main() {
u8 i=0;
int temp_value;
u8 temp_buf[5];
char str[20]; // 定义一个长度为20的字符数组
init_uart();
// ds18b20_init();
while(1) {
i++;
if(i%50==0)
temp_value=ds18b20_read_temperture()*10;
if(temp_value<0)
{
temp_value=-temp_value;
temp_buf[0]=0x40;
}
else
temp_buf[0]=0x00;
temp_buf[0]=gsmg_code[temp_value/1000];
temp_buf[1]=gsmg_code[temp_value%1000/100];
temp_buf[2]=gsmg_code[temp_value%1000%100/10]|0x80;
temp_buf[3]=gsmg_code[temp_value%1000%100%10];
smg_display(temp_buf,1);
sprintf(str, "%d.%d\r\n", temp_value/100, temp_value%10);
send_string(str);
}
}
```
这样就可以解决编译错误了。
阅读全文