Vous êtes sur la page 1sur 2

#include <16f877a.

h> #device adc=8 #fuses HS,NOWDT,PUT,NOBROWNOUT,NOLVP,NOCPD,NOWRT,NODEBUG,NOPROTECT #USE DELAY(CLOCK=20000000) #use i2c(SLAVE, SDA=PIN_C4, SCL=PIN_C3, address=0xc0,FORCE_HW) #use standard_io(a) #use standard_io(c) #include <lcd.c> int address; int buffer[0x10]; int a; int b; #int_ssp void ssp_interupt () { int incoming; BYTE state; state = i2c_isr_state(); if(state==0x00) { address=i2c_read(0); } else if(state<0x80 && state>0x00) //Master is sending data { incoming=i2c_read(0); if(state==1) //First received byte is address {buffer[1]=incoming; }ELSE if(state==2) //Second received byte is data { buffer[2]=incoming; } ELSE if(state==3) //Second received byte is data { buffer[3]=incoming; } ELSE //Second received byte is data { buffer[0] = incoming; } } if(state == 0x80) //Master is requesting data { i2c_write(a); delay_us(800); ///retardo de 800 microsegundos i2c_write(b); delay_us(800); ///retardo de 800 microsegundos }} void main(){ setup_adc(ADC_CLOCK_INTERNAL); //// Esta funcin prepara o configura el conv ersor A/D. setup_adc_ports(AN0_AN1_AN3); //// Esto hace que los pines A0, A1 y A3 sean an algicos enable_interrupts(global); ///habilita las interrupciones globales enable_interrupts(int_ssp); ///habilita las interrupciones while(true){ set_adc_channel(0); ///Especifica el canal a utilizar por la funcin READ_

ADC a=read_adc(); set_adc_channel(1); DC b=read_adc(); }}

//// lea a ///Especifica el canal a utilizar por la funcin READ_A //// lea b

Vous aimerez peut-être aussi