Está en la página 1de 2

#include <16F877.

h>

#device ADC=10

#use DELAY (CLOCK=4000000)

#fuses XT,NOWDT

#USE STANDARD_IO(A,D,C,B)

#define use_portd_lcd true //HABILITACION DEL PUERTO D PARA LCD

#define LCD_ENABLE_PIN PIN_D0 ////CONFIGURACION DE LOS PINES POR PUERTOS

#define LCD_RS_PIN PIN_D1 ////

#define LCD_RW_PIN PIN_D2 ////

#define LCD_DATA4 PIN_D4 ////

#define LCD_DATA5 PIN_D5 ////

#define LCD_DATA6 PIN_D6 ////

#define LCD_DATA7 PIN_D7

#include<LCD.C> //libreria LCD

int cont; //variable contador

long bits; //variable entrada volt analogica en base 1023

float volt; //variable voltaje

#INT_ext //interrupción externa

void INT_rb0(){ //función de la interrupción

output_c(0); //pasos de la interrupción

void main(){

set_tris_b(0b00000001); //entrada de datos b0 (interrupción)

port_b_pullups(true); //habilitación de las resistencias del puerto B

enable_interrupts (INT_ext); //sentencia que activa la función

ext_INT_edge(h_to_l); // orden de salida de alto a bajo

enable_interrupts(global); //activación globa de interrupciones

while(true){

SET_TRIS_A(0b00000100); //ENTRADA RA2

SETUP_ADC_PORTS (ALL_ANALOG); //ELECCION DE TODO EL PUERTO ANALOGO


SETUP_adc(adc_clock_internal); //

LCD_INIT(); //INICIALIZO LCD

SET_ADC_CHANNEL(2); //SELECCIONO EL CANAL RA2

bits=READ_ADC() ; //GUARDO LOS DATOS DEL VOLTAJE

volt=bits*0.004887585533; //CONVERSION DE DATO VOLTAJE

if(volt<=1.5999 ){ //RANGO VOLTAJE 1

output_c(7); //encendido seleccionado de leds

cont=15; //modulo del contador 15

if(volt<=3.999 && volt>=1.6){ //RANGO VOLTAJE 2

output_c(56); //encendido seleccionado de leds

cont=30; //modulo del contador 30

if(volt<=5.9999 && volt>=4){ //RANGO VOLTAJE 3

output_c(192); //encendido seleccionado de leds

cont=50; //modulo del contador 50

for(int x=0;x<=cont;x++){

lcd_gotoxy(1,1); //posicionamiento del lcd

printf(lcd_putc"CONTADOR: %d ", x); //imprimo contador

delay_ms(150); //TIEMPO RETARDO CONTADOR

bits=READ_ADC() ; //GUARDO LOS DATOS DEL VOLTAJE

volt=bits*0.004887585533; //CONVERSION DE DATO VOLTAJE

lcd_gotoxy(2,2); //posicionamiento del lcd

printf(lcd_putc"VOLTAJE: %2.1f",volt);//imprimo voltaje

}}}

También podría gustarte