ds18b20 c51源代码#include "reg51.h" #include "INTRINS.H" #include "LCD.h" #define CLR_RI (RI=0) #define CLR_TI (TI=0) unsigned char code ID[2][8]={ 0x28,0x1D,0x25,0x1D,0x00,0x00,0x00,0x80, 0x28,0x0e,0x9e,0x1c,0x00,0x00,0x00,0x32}; unsigned char currSensorNo=0; sbit TMDAT = P1^7; sbit RUN_LED = P1^6; /*------------------------------------------------ * *------------------------------------------------*/ void serial_initial() { TMOD=0X20; SCON=0X50; PCON=0X00; TL1=TH1=0XE8; TR1=1; } /*------------------------------------------------ * *------------------------------------------------*/ void send(unsigned char count,unsigned char SEND_Buf[]) { unsigned char i; for(i=0;i<125; for(i="0;" while(Nms--) i; unsigned Nms int Delay_ms ms CLR_TI; while(!TI); SBUF="SEND_Buf[i];">0) Count--; } /*---------------------------------------------------- * start Reset Pulse ----------------------------------------------------*/ void tmreset(void) { TMDAT=0; Delay_Count(103); TMDAT=1; Delay_Count(4); } /*---------------------------------------------------- * ACK *----------------------------------------------------*/ void tmpre(void) { while(TMDAT); while(~TMDAT); Delay_Count(4); } /*---------------------------------------------------- * Read a bit from 1820 *----------------------------------------------------*/ bit tmrbit(void) { int i=0; bit dat; TMDAT=0;i++; TMDAT=1;i++;i++; dat = TMDAT; Delay_Count(8); return dat; } /*---------------------------------------------------- * Read a byte from 1820 *----------------------------------------------------*/ unsigned char tmrbyte(void) { unsigned char i,j,dat=0; for(i=1;i<=8;i++) { j=tmrbit(); dat=(j<<7)|(dat>>1); } return dat; } /*---------------------------------------------------- * Read a byte from 1820 *----------------------------------------------------*/ void tmwbyte(unsigned char dat) { signed char i=0; unsigned char j; bit testb; for(j=1;j<=8;j++) { testb=dat & 0x01; dat = dat>>1; if(testb) { TMDAT=0; i++;i++; TMDAT=1;
上一页12 3 下一页
|