#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
void main()
{
int16 lectura;
lcd_init();
Do {
lectura=getchar();
if(lectura==0x00){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx esperando ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
output_b(lectura);}
else if (lectura<=0x01){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"PUERTA ABIERTA ");
output_b(lectura);}
else if (lectura<=0x03){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA FUSIBLE ");
output_b(lectura);}
else if (lectura<=0x07){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MAQ. EN OPERACION ");
output_b(lectura);}
else if (lectura<=0x0F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MAQ. BLOQUEADA ");
output_b(lectura);}
else if (lectura<=0x1F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA DE C.F.E. ");
output_b(lectura);}
else if (lectura<=0x3F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA RECTIFICADOR ");
output_b(lectura);}
else if (lectura<=0x7F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA + RECTIFICADOR ");
output_b(lectura);}
else if (lectura<=0xFF){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"ALTA TEMPERATURA ");
output_b(lectura);}
}While(1);
}
Realice el siguiente codigo en un pic 16f877Código: [Seleccionar]#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
void main()
{
int16 lectura;
lcd_init();
Do {
lectura=getchar();
if(lectura==0x00){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx esperando ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
output_b(lectura);}
else if (lectura<=0x01){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"PUERTA ABIERTA ");
output_b(lectura);}
else if (lectura<=0x03){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA FUSIBLE ");
output_b(lectura);}
else if (lectura<=0x07){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MAQ. EN OPERACION ");
output_b(lectura);}
else if (lectura<=0x0F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MAQ. BLOQUEADA ");
output_b(lectura);}
else if (lectura<=0x1F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA DE C.F.E. ");
output_b(lectura);}
else if (lectura<=0x3F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA RECTIFICADOR ");
output_b(lectura);}
else if (lectura<=0x7F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA + RECTIFICADOR ");
output_b(lectura);}
else if (lectura<=0xFF){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"ALTA TEMPERATURA ");
output_b(lectura);}
}While(1);
}
Cuando lo conecto hasta que no le doy Click en el Master Clear no me imprime las señales que le mando
Siempre que quiero saber lo que sucede devo de darle Master Clear
Lo que no entiendo es por que no me respeta el Do While
printf(lcd_putc,"ALTA TEMPERATURA ");
output_b(lectura);}
}
While(1);
}
while(TRUE)
{
//aca tu codigo
}
saludos!
void main()
{
int16 lectura;
lcd_init();
lectura=getchar();
while(TRUE)
{
if(lectura==0x00){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx esperando ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
output_b(lectura);}
else if (lectura<=0x01){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"PUERTA ABIERTA ");
output_b(lectura);}
else if (lectura<=0x03){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA FUSIBLE ");
output_b(lectura);}
else if (lectura<=0x07){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MAQ. EN OPERACION ");
output_b(lectura);}
else if (lectura<=0x0F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"MAQ. BLOQUEADA ");
output_b(lectura);}
else if (lectura<=0x1F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA DE C.F.E. ");
output_b(lectura);}
else if (lectura<=0x3F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA RECTIFICADOR ");
output_b(lectura);}
else if (lectura<=0x7F){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"FALLA + RECTIFICADOR ");
output_b(lectura);}
else if (lectura<=0xFF){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo AL ");
lcd_gotoxy(1,2);
printf(lcd_putc,"ALTA TEMPERATURA ");
output_b(lectura);}
}
}
La línea:
lectura=getchar();
debe estar dentro del while{} para poder actualizarse...
Además, puede que si estás bombardeando al uC con datos por el RS232, estés desbordando el buffer del micro, provocando un error en el módulo que impide la lectura del mísmo.
Un saludo.
para que el micro salga del reset debes poner ese pin a 5V, en 0V está en reset. Verifica que lo estás conectando correctamente. Una observación, no lo dejes al aire porque sino no va a funcionar, en el video no se ve bien como lo conectas.