central de chamada a ser utilizada em enfermaria de um hospital
Fiz a programação que segue abaixo usando o MPLAB X IDE, para uma central de chamada a ser utilizada em enfermaria de um hospital. Ou seja quando um paciente chama declarei como C (chamada), e esta chamada é registrada no led com o número do quarto do paciente (p. ex. C101), ao ser atendido no quarto, quem está atendendo aciona um botão que é identificado no led como P (presença) e se ao chegar for necessário, o atendente pode acionar outro botão que é definido por E (emergência). Depois de ter terminado a programação, numa sumulação, se 10 quartos diferentes chamarem ao mesmo, o programa está pulando um quarto. Revisei toda a programação e também o hardware, e não encontro o problema. Será que pode me dar uma dica porque está acontecendo este erro de pular o quarto que está chamando? Segue abaixo os códigos.
O programa tem 2574 linhas.
#include <p18f4620.h> //Aqui é informado o processador que será utilizado pelo projeto
#include <string.h>
#include "lcd.h"
#include <delays.h>
#pragma config OSC = INTIO67 //clock interno
#pragma config WDT = OFF //desliga watchdog
#pragma config LVP = OFF //desliga programação em baixa tensão
void lcd_texto(char *texto);
void main (void)
{
//OSCCON=0b01100011;
char dado [20];
int x;
char y;
lcd_inic();
TRISAbits.RA4=1;
TRISAbits.RA3=1;
TRISEbits.RE3=0;
PORTEbits.RE0=0;
y=17;
volta:
x=1;
lcd_locate(1,1);
strcpypgm2ram(dado,"Hospital São Lucas");
lcd_texto(dado);
/*************************************************************************
QUARTOS 1~10
**************************************************************************/
if (PORTA==0B00000001)
{
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
lcd_locate(2,1);
strcpypgm2ram(dado,"C101");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00000010)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C102");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00000011)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C103");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00000100)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C104");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00000101)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C105");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00000110)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C106");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00000111)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C107");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00001000)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C108");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00001001)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C109");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00001010)
{
lcd_locate(2,1);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,1);
strcpypgm2ram(dado,"C110");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(25);
PORTEbits.RE0=0;
Delay10KTCYx(25);
}
if(PORTA==0B00001011)
{
/*lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P101");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00001100)
{
/* lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P102");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00001101)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P103");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00001110)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P104");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00001111)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P105");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00010000)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P106");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00010001)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P107");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00010010)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P108");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00010011)
{
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado,"P109");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00010100)
{
PORTEbits.RE0=0;
lcd_locate(2,6);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,6);
strcpypgm2ram(dado,"P110");
lcd_texto(dado);
Delay10KTCYx(50);
}
if(PORTA==0B00010101)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E101");
lcd_texto(dado);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00010110)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E102");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00010111)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E103");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011000)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E104");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011001)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E105");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011010)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E106");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011011)
{
/* lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E107");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011100)
{
/*lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E108");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011101)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E109");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}
if(PORTA==0B00011110)
{
lcd_locate(2,11);
strcpypgm2ram(dado," ");
lcd_texto(dado);
/* y=y+1;
if (y==11)
{ Fazer a andar no display
y=1;
}*/
lcd_locate(2,11);
strcpypgm2ram(dado,"E110");
lcd_texto(dado);
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
PORTEbits.RE0=1;
Delay10KTCYx(12);
PORTEbits.RE0=0;
Delay10KTCYx(12);
}Discussão (3)
Carregando comentários...