Envió de datos vía serial con un pic18f4550
Envió de datos vía serial con un pic18f4550 ( comunicación serial )
Objetivos:
- Leer el voltaje de un potenciometro que varia de 0 a 5 V con una entrada analogica del PIC
- Enviar la lectura del voltaje via rs232 serial a un terminal virtual de proteus
Program in PIC C:
#include <18F4550.h> #device ADC=8 #FUSES NOWDT //No Watch Dog Timer #FUSES WDT128 //Watch Dog Timer uses 1:128 Postscale #FUSES NOBROWNOUT //No brownout reset #FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O #FUSES NOXINST //Extended set extension and Indexed Addressing mode disabled (Legacy mode) #fuses NOMCLR INTRC_IO // #use delay(internal=8000000) #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,stream=PORT1) int lecturadigital; // int16 lecturadigital; float voltaje; void main() { setup_adc_ports(AN0); setup_adc(ADC_CLOCK_DIV_8); while(TRUE) { set_adc_channel(0); //Seleccionar Canal 0 para leer el pot lecturadigital=read_adc(); // es una funcion que el valor analogico y convertirlo a digital con un resolucion de 10 bits /// 5 V ---1024 /// voltaje ----lecturadigital voltaje=(lecturadigital*5.0)/254.0; // voltaje=(lecturadigital*5.0)/1023.0; printf("LD = "); printf("%u nr",lecturadigital); // printf("%Lu nr",lecturadigital); printf("EL voltaje = "); printf("%2.1f Volts nr",voltaje); //TODO: User Code } }
