DS18B20의 CRC 검사는 어떻게 되었나요?
CRC는 일련번호가 올바른지 확인하는 데 사용되는 일련번호 확인 코드입니다. 일련번호는 일반적으로 표시되어 있지 않으며 직접 읽어야 합니다. 일련 번호를 읽는 프로그램을 제공하고 포트를 변경하여 사용할 수 있습니다:
#include
#include #define uchar unsigned char #define uint unsigned int sbit DQ = P2^0; //DS18B20 포트 DQ 정의 sbit BEEP=P3^7 ; //버저 구동 라인 비트 존재 sbit LCD_RS = P2^6 sbit LCD_RW = P2^5; /p> sbit LCD_EN = P2^4; uchar 코드 cdis1[ ] = {" DS18B20 OK "} uchar 코드 cdis2[ ] = {" "} ; uchar 코드 cdis3[ ] = {" DS18B20 ERR0R "} uchar 코드 cdis4[ ] = {" 확인하세요 "}; 부호 없는 문자 데이터 표시[ 2] = {0x00,0x00}; 부호 없는 문자 데이터 RomCode[8] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; > unsigned char Temp; void beep() {_nop_();_nop_ ();_nop_( );_nop_();} /***************************** ******* *********************************/ 지연 무효1 (int ms) { unsigned char y while(ms--) { for(y = 0; y<250; y++) { _nop_() _nop_(); _nop_(); _nop_(); } } } /*** ********* ***************************************** ********** ******/ /* */ /*LCD 사용 상태 확인*/ /*lcd_busy가 1이면 바쁜 상태입니다. 기다려주세요. LCD-busy가 0이면 유휴 상태이며 명령과 데이터를 쓸 수 있습니다. */ /* */ /******************************** ***** *************************************/ 비트 lcd_busy() { 비트 결과 LCD_RS = 0 LCD_RW = 1; > LCD_EN = 1; 지연NOP(); 결과 = (비트)(P0&0x80) LCD_EN = 0; 반환(결과); } /**************************** ***** *********************************/ /* */ /*LCD에 명령 데이터 쓰기 */ /*RS=L, RW=L, E=하이 펄스, D0-D7=명령 코드. */ /* */ /******************************** ***** ****************************************/ void lcd_wcmd(uchar cmd) { while(lcd_busy()) LCD_RS = 0 LCD_RW = 0; LCD_EN = 0; _nop_(); > 지연NOP() LCD_EN = 1; 지연NOP() LCD_EN = 0; /p> / ******************************************* ******** *******************/ /* */ /*쓰기 디스플레이 데이터를 LCD로 */ /*RS=H, RW=L, E=하이 펄스, D0-D7=데이터.