#include<16f876a.h> #device ADC=10 #use delay( clock=8000000) #fuses HS,NOWDT,PUT,BROWNOUT,NOWDT int clock=0; int16 d1, d2, d3, d4, d5, d6; int digito[10]={ 0b11000000 // 0 0b11111001 // 1 0b10100100 // 2 0b10110000 // 3 0b10011001 // 4 0b10010010 // 5 0b10000010 // 6 0b11111000 // 7 0b10000000 // 8 0b10010000 // 9 }; #INT_RTCC void trata_t0 () { clock++; if (clock>6) clock=1; switch(clock) { case 1: output_C(digito[d1]) | (0b01111111); output_C(digito[d1]); output_B(0b00000001); Break; case 2: output_C(digito[d2]); output_B(0b00000010); break; case 3: output_C(digito [d3]); output_B(0b00000100); BREAK; case 4: output_C(digito[d4]); output_B(0b00001000); BREAK; case 5: output_C(digito[d5]); output_B(0b00010000); BREAK; case 6: output_C(digito[d6]); output_B(0b00100000); BREAK; } SET_TIMER0(25); } void volt (){ int32 adc; { SET_ADC_CHANNEL(0); adc=READ_ADC(); adc=(adc*2500)/1023; delay_us(10); d1= adc/1000; d2= (adc/100)%10; d3= (adc/10)%10; delay_ms (10); } } void amp () {int32 adc1; { SET_ADC_CHANNEL(1); adc1=READ_ADC(); adc1=(adc1*2500)/1023; delay_us(10); d4= adc1/1000; d5= (adc1/100)%10; d6= (adc1/10)%10; delay_ms (10); }} void main() { set_tris_A(0b00000011); set_tris_B(0b00000000); set_tris_C(0b00000000); ENABLE_INTERRUPTS(GLOBAL|INT_TIMER0); SETUP_TIMER_0(RTCC_INTERNAL|RTCC_DIV_16); SET_TIMER0(100); setup_ADC_ports(AN0_AN1_AN3); setup_ADC(ADC_CLOCK_INTERNAL); delay_us(10); while(true) { volt(); delay_ms (500); amp(); delay_ms(500); } }