Last active
December 29, 2015 11:58
-
-
Save davidae1704/7666977 to your computer and use it in GitHub Desktop.
codigo para desafio 11 de laboratorio de microcontroladores
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <p18f4550.h> | |
#include <xc.h> | |
#include "stdlib.h" | |
#pragma config FOSC=INTOSC_EC | |
#pragma config WDT=OFF | |
#pragma config PBADEN=OFF | |
#pragma config MCLRE=ON | |
#pragma config DEBUG=ON | |
#pragma config LVP=OFF | |
char msgInicio[]={10,'V','o','l','t','i','m','e','t','r','o',10,4}; | |
char msgUnidad[]={9,'V','o','l','t','i','o','s',10,4}; | |
unsigned char valor[6]=0x30; | |
char comparacion(unsigned int act, unsigned int prev); | |
void delay_ms(unsigned int y); | |
void configuracion(); | |
float voltaje; char numero = 0x30; int i = 0; | |
unsigned int anterior = 0; | |
unsigned int lectura; | |
unsigned char nada[3]={'0',10,4}; | |
void main() | |
{ | |
configuracion(); | |
//transmision de mensaje de inicio | |
i=0; | |
TXEN=1; //Habilitamos transmision | |
while(msgInicio[i] != 4) | |
{ | |
TXREG=msgInicio[i]; // se almacenan los datos dyte por byte para ser transmitidos | |
while((TXIF==1)&&(TRMT==0)){;} //espera a que termine la transmision | |
i++; | |
} | |
TXEN=0; //se deshabilita la transmision | |
while(1) | |
{ | |
ADCON0bits.ADON=1; //se activa el ADC | |
ADCON0bits.GO_DONE=1; //se inicia la conversion | |
while(ADCON0bits.GO_DONE==1){;}//espera a que GO/DONE pase a 0(fin de la conversion) | |
ADCON0bits.ADON=0; //se desacitva la conversion | |
itoa(valor, ADRES, 10);//transformacion del dato de la lectura del ADC a ASCII | |
//*************envio del dato medido por el ADC a traves del puerto RS232 | |
if (RB0==0) | |
{ | |
delay_ms(100); | |
//transmision de datos | |
i=0; | |
TXEN=1; //Habilitamos transmision | |
while(valor[i] !=4) | |
{ | |
TXREG=valor[i]; // se almacenan los datos dyte por byte para ser transmitidos | |
while((!TXIF)&&(!TRMT)){;} //espera a que termine la transmision | |
i++; | |
valor[5]=4; | |
} | |
TXEN=0; //se deshabilita la transmision | |
//transmision de unidades | |
i=0; //reinicializa el puntero de conteo | |
TXEN=1; //Habilitamos transmision | |
while(msgUnidad[i] != 4) | |
{ | |
TXREG=msgUnidad[i]; // se almacenan los datos dyte por byte para ser transmitidos | |
while((!TXIF)&&(!TRMT)){;} //espera a que termine la transmision | |
i++; | |
} | |
TXREG=0X20; | |
while((!TXIF)&&(!TRMT)){;} //espera a que termine la transmision | |
TXEN=0; //se deshabilita la transmision | |
TXREG=0X20; | |
while((!TXIF)&&(!TRMT)){;} //espera a que termine la transmision | |
} | |
} | |
} | |
void configuracion() | |
{ | |
OSCCONbits.IRCF0=1; | |
OSCCONbits.IRCF1=1; | |
OSCCONbits.IRCF2=1; //8Mhz | |
LATA=0; | |
LATB=0; | |
LATC=0; | |
TRISA0=1; //RA0 como entrada | |
TRISB0=1; //RB0 como entrada | |
LATA=0; | |
LATB=0; | |
LATC=0; | |
TRISC7=1; | |
TRISC6=1; | |
//Configuracion de timer 0 | |
T0CON=0x42; TMR0IF=0; TMR0IE=0; | |
//Seleccion de velocidad de comunicacion a 9600 | |
SPBRG=51; | |
BRG16=0; | |
TXSTA=0x0C; //CSRC-TX9-TXEN-SYNC-SENDB-BRGH-TRMT-TX9D | |
// 0 0 0 0 1 1 0 0 | |
RCSTA = 0x90; | |
BAUDCON = 0x00; | |
TXCKP=0; //Transmision no invertida | |
TXIE=0; //NO hay interrupcion | |
SPEN=1; //habilitamos puerto serial | |
RBPU=0; //habilitamos pull ups para puerto B | |
//Configuracion modulo ADC | |
TRISA0=1; //RA0 como entrada | |
ADCON0=0; //configuracion para usar RA0 como canal del ADC | |
ADCON1=0x0E; //configuracion para establecer RA0 como pin analógico y las referencias | |
ADCON2=0x10; //configuracion para establecer: frecuencia de trabajo, tiempo de adquisicion y | |
//justificacion del dato | |
CMCON=0X07; | |
return; | |
} | |
//rutina de retardo | |
void delay_ms(unsigned int y) | |
{ | |
TMR0ON=1; //habilita el Timer0 | |
while(y!=0) | |
{ | |
TMR0L=0; | |
TMR0IF=0; | |
while(TMR0IF==0){;} | |
y--; | |
} | |
TMR0ON=0; //deshabilita el Timer0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment