|
|
Publicado en 25/11/2014 22:12:09
|
|
|

[mw_shl_code=c,true]#include<pic.h> // Usar oscilador de cristal de 12M #include"12864.h" #define uint unsigned int #define uchar personaje sin firmar __CONFIG(FOSC_HS&WDTE_OFF&LVP_OFF); Uchar temp_valueH, hum_valueH, hum_valueL, temp_valueL, comprobado; uint delay_time; void timer0_init()
{ TMR0=0; Primer valor T0CS=0; Seleccione la fuente de reloj, que es 1/4 del oscilador de cristal; T0SE=1; Bits de selección de bordes de la fuente de reloj PSA=0; Bits de asignación del predivisor PS0=0; PS1=0; PS2=0; Bits de selección previos a la división TMR0IF=0; La bandera del temporizador está limpia 0 GIE=1; Abre la interrupción global TMR0IE=0; Temporizador 0 activado TMR0=236; El primer valor del poema
} interrupción void timer0()
{ if(TMR0IF) { TMR0IF=0; TMR0=235; delay_time--; }
} Void timer0_delay(uint delay_value)
{ delay_time=delay_value; TMR0IE=1; mientras que (delay_time); TMR0IE=0;
} Uchar Read_byte()
{ uchar i, temp, hum; para (i=0; i<8; i++) { ¡Mientras tanto(! RC1); timer0_delay(2); Retraso 20us temp=0; if(RC1){temp=1; mientras que (RC1); } else{temp=0; } hum<<=1; hum|=temp; } return (hum);
} void Read_data()
{ Uchar ckeck_value; RC1=0; timer0_delay(2500); El autobús es arrastrado por al menos 18 MS RC1=1; timer0_delay(2); El bus es tirado hacia arriba por la resistencia de pull-up y el retardo del host es de 20us TRISC1=1; El host está configurado para entrar y juzgar la señal de respuesta del esclavo RC1=1; ¡si(! RC1) { mientras que ((! RC1)) // Determinar si el esclavo emite una señal de respuesta baja de 80 US o no { NOP(); } while(RC1) // Determinar si el esclavo emite un nivel alto de 80us y, en caso afirmativo, entra en el estado receptor de datos { NOP(); } temp_valueH=Read_byte(); temp_valueL=Read_byte(); hum_valueH=Read_byte(); hum_valueL=Read_byte(); jaque=Read_byte(); ckeck_value=hum_valueL+hum_valueH+temp_valueL+temp_valueH; if(check==ckeck_value) { Proce_num(0x84,temp_valueH); Proce_num(0x94,hum_valueH); } } TRISC1=0; RC1=1;
} void main()
{ TRISB=0X00; lcdinit(); timer0_init(); mientras que (1) { Read_data(); } }[/mw_shl_code]
|
Anterior:Pensamiento y programación desnuda [Serializado]Próximo:Prestaciones sociales, normas de denominación en lengua C, cosas muy prácticas
|