2012-06-21 2 views
0

저는 PIC-Web의 서미스터를 사용하여 프로젝트의 실내 온도를 읽습니다. 코드를 주석 처리하여 언더런 상태임을 입증해야합니다. 코드의 첫 번째 부분은 이해하지만 두 번째 부분은 그다지 중요하지 않습니다. 우리가 사용하는 이유itoa 및 uitoa usage

void HTTPPrint_temp(void) 
{ 
// We define TempString as a string of bytes 
BYTE TempString[8]; 

// We define SP_String as a string of bytes 
BYTE SP_String[8]; 

// We define temperature and tmp as integers 
int temperature, tmp; 

// We define r and z as floating point number 
float r, z; 

#if defined(__18CXX) 
// We utilize channel 9 for the A/D conversion 
ADCON0bits.CHS0 = 1; 
ADCON0bits.CHS1 = 0; 
ADCON0bits.CHS2 = 0; 
ADCON0bits.CHS3 = 1; 

// We wait for the A/D conversion to end 
ADCON0bits.GO = 1; 
while(ADCON0bits.GO); 

// We convert the 10-bit value into an ASCII string 
tmp = (WORD)ADRES; 

// We read and calculate the value of the temperature 
r = ((1024.0*10000.0)/(float)tmp)-10000.0; 

// We calculate the value in degrees Celsius 
temperature = 4100.0/log(r/0.0111182) - 273.15; 

// We alocate the value of the temperature to TempString 
itoa(temperature, TempString); 

#else 

// Don't know? 
ADval = (WORD)ADC1BUF0; 

// Don't know 
uitoa(ADval, (BYTE*)AN0String); 

#endif 

// We open up a socket and send the data to the website 
TCPPutString(sktHTTP, TempString); 

} 

누군가가 설명 할 수 :

itoa 
else 
ADval=(WORD)ADC1BUF0 
uitoa 
+4

먼저이 코드가 어떤 언어인지 이해해야합니다. [C#] [C++] [c] 질문에 태그를 추가 했습니까? – BoltClock

+2

@BoltClock은 C처럼 보입니다. –

+0

내 수치는 정말 모르겠다. –

답변

2

이 조건부 컴파일 지시문을 사용하여 두 개의 서로 다른 아키텍처에 정의 된이 코드입니다.

#if defined(__18CXX) 
    // code for PIC18 
#else 
    // code for other 
#endif 

내가 PIC 제품군에 익숙하지 해요,하지만 PIC18 컨트롤러가 다른 사진에서 다른 ADC 설치되어 있는지 여부는 확인해야합니다 : 더 조사 할 필요가

부품이다.

__18CXX 기호는 아마도 컴파일러에 의해 자동으로 정의됩니다. 원하는 대상 장치에 대한 설정을 찾으면 컴파일 중에 올바른 코드가 사용될 수 있습니다.