#include <16F877A.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
//#define use_portb_lcd TRUE
void main()
{
lcd_init();
do {
switch(input_b())
{
case 0x00:
lcd_gotoxy(1,1);
printf(lcd_putc,"En Espera");
break;
case 0x01:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 1 ");
break;
case 0x02:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 2 ");
break;
case 0x03:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 3 ");
break;
case 0x04:
lcd_gotoxy(1,1);
printf(lcd_putc,"Ornde 4 ");
break;
case 0x05:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 5 ");
break;
case 0x06:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 6 ");
break;
case 0x07:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 7 ");
break;
case 0x08:
lcd_gotoxy(1,1);
printf(lcd_putc,"Orden 8 ");
break;
}
} while (TRUE);
}
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
void main() {
int valor;
lcd_init();
while(1){
for (valor=0;valor<=10;valor++) {
PUTC(valor);
printf(lcd_putc,"\fenviando=%1D",VALOR);
delay_ms(500);
}
}
}Pic que Recibe#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=8000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#include <LCD.C>
#BYTE TRISA=0X85
#BYTE PORTA=0X05
int valor;
#int_RDA
RDA_isr()
{
valor=GETC();
}
void main() {
bit_clear(TRISA,0);
lcd_init();
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
for (;;) {
lcd_gotoxy(1,1);
printf(lcd_putc,"recibiendo=%1D",valor);
}
}
Este codigo es equivalente al que posteaste primero, pero mas corto y sin tantos gotoxy, en una de esas te sirve :)Con este ya me facilitaste mas lo de la imprecion nadamas lo malo es que aun asi tendria que poner los 127 casos T-TCódigo: C
Aver si te entendemos.
Dado el caso 10 por ejemplo, que en binario es 1010, necesitas que se imprima "2=on 8=on"?
Una funcion así no te serviria:Necesitaria Adaptarla al codigo para ver que efecto daCódigo: C
void on_off(unsigned char val) { int i; for(i=1; i<256; i<<=1) if(val & i) }
Si haces on_off(10) por ejemplo, te imprime "2=on 8=on", on_off(5) te imprime "1=on 4=on"
#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()
{
int orden;
lcd_init();
while(TRUE) {
lcd_gotoxy(1,1);
orden = input_b();
if(!orden) {
printf(lcd_putc,"TX En Espera ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
putc(0x00);
}
else
printf(lcd_putc,"Tx Orden %d ", orden);
switch(orden) {
case 0x01:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 1");
putc(0x01);
break;
case 0x02:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 2");
putc(0x02);
break;
case 0x03:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 3");
putc(0x03);
break;
case 0x04:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 4");
putc(0x04);
break;
case 0x05:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 5");
putc(0x05);
break;
case 0x06:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 6");
putc(0x06);
break;
case 0x07:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 7");
putc(0x07);
break;
case 0x08:
lcd_gotoxy(1,2);
printf(lcd_putc,"Prende Led 8");
putc(0x08);
break;
}
}
}
Como podria meter el Case dentro de un if o una cadena para que asi con cada incremento de los dipswtich solo coloque el caso que necesita #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()
{
char lectura;
lcd_init();
do
{
lectura=getchar();
if(lectura=='S'){
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx esperando");
}
lcd_gotoxy(1,1);
printf(lcd_putc,"hola ");
}while(true);
}#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()
{
int orden;
lcd_init();
while(TRUE) {
lcd_gotoxy(1,1);
orden = input_b();
if(!orden) {
printf(lcd_putc,"TX En Espera ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
putc('A');
}
else
printf(lcd_putc,"Tx Alarma %d ", orden);
switch(orden) {
case 0x01:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('B');
break;
case 0x02:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('C');
break;
case 0x03:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('D');
break;
case 0x04:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('E');
break;
case 0x05:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('F');
break;
case 0x06:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('G');
break;
case 0x07:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('H');
break;
case 0x08:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('I');
break;
case 0x09:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('J');
break;
case 0x0A:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('K');
break;
case 0x0B:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('L');
break;
case 0x0C:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('M');
break;
case 0x0D:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('N');
break;
case 0x0E:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('O');
break;
case 0x0F:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('P');
break;
case 0x10:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('Q');
break;
case 0x11:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('R');
break;
case 0x12:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('S');
break;
case 0x13:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('T');
break;
case 0x14:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('U');
break;
case 0x15:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('V');
break;
case 0x16:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('W');
break;
case 0x17:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('X');
break;
case 0x18:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('Y');
break;
case 0x19:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('Z');
break;
case 0x1A:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('a');
break;
case 0x1B:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('b');
break;
case 0x1C:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('c');
break;
case 0x1D:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('d');
break;
case 0x1E:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('e');
break;
case 0x1F:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('f');
break;
case 0x20:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('g');
break;
case 0x21:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('h');
break;
case 0x22:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('i');
break;
case 0x23:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('j');
break;
case 0x24:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('k');
break;
case 0x25:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('l');
break;
case 0x26:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('m');
break;
case 0x27:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('n');
break;
case 0x28:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('o');
break;
case 0x29:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('p');
break;
case 0x2A:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('q');
break;
case 0x2B:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('r');
break;
case 0x2C:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('s');
break;
case 0x2D:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('t');
break;
case 0x2E:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('u');
break;
case 0x2F:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('v');
break;
case 0x30:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('w');
break;
case 0x31:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('x');
break;
case 0x32:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('y');
break;
case 0x33:
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta");
putc('z');
break;
}
}
}
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use standard_io(B)
#include <LCD.C>
void main()
{
char lectura;
lcd_init();
do
{
lectura=getchar();
if(lectura=='A'){
OUTPUT_B(0x00);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx esperando ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
}
if(lectura=='B'){
OUTPUT_B(0x0A);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alama 1 Abierta");
}
}while(true);
}
Tu switch de 256 lineas es equivalente a estas 6:y si necesitara de 1024 bits ahora el detalle es como podria reparar el de Recepcion ya que esta en las mismas condicionesCódigo: C
// si orden=1, entonces purta = 'B' // si orden=0x1A, entonces purta = 'a' lcd_gotoxy(1,2); if(orden < 0x1A) else
Tu switch de 256 lineas es equivalente a estas 6:Código: C
// si orden=1, entonces purta = 'B' // si orden=0x1A, entonces purta = 'a' lcd_gotoxy(1,2); if(orden < 0x1A) else
#include <16F877A.h>
#fuses XT,NOWDT,NOPROTECT,NOLVP
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, bits=8)
#use standard_io(B)
#include <LCD.C>
void main()
{
char lectura;
lcd_init();
do
{
lectura=getchar();
if(lectura==0x00){
OUTPUT_B(0x00);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx esperando ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
}
if(lectura=='A'){
OUTPUT_B(0x01);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 1 Abierta");
}
if(lectura=='C'){
OUTPUT_B(0x02);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 2 Abierta");
}
if(lectura=='D'){
OUTPUT_B(0x03);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 3 Abierta");
}
if(lectura=='E'){
OUTPUT_B(0x04);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 4 Abierta");
}
if(lectura=='F'){
OUTPUT_B(0x05);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 5 Abierta");
}
if(lectura=='G'){
OUTPUT_B(0x06);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 6 Abierta");
}
if(lectura=='H'){
OUTPUT_B(0x07);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 7 Abierta");
}
if(lectura=='I'){
OUTPUT_B(0x08);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 8 Abierta");
}
if(lectura=='J'){
OUTPUT_B(0x09);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 9 Abierta");
}
if(lectura=='K'){
OUTPUT_B(0x0A);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 10 Abierta");
}
if(lectura=='L'){
OUTPUT_B(0x0B);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 11 Abierta");
}
if(lectura=='M'){
OUTPUT_B(0x0C);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 12 Abierta");
}
if(lectura=='N'){
OUTPUT_B(0x0D);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 13 Abierta");
}
if(lectura=='O'){
OUTPUT_B(0x0E);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 14 Abierta");
}
if(lectura=='P'){
OUTPUT_B(0x0F);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma 15 Abierta");
}
}while(true);
}
#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 orden;
lcd_init();
while(TRUE) {
orden = input_b();
if(!orden) {
lcd_gotoxy(1,1);
printf(lcd_putc,"TX En Espera ");
lcd_gotoxy(1,2);
printf(lcd_putc," ");
putc(0x00);
}
else{
lcd_gotoxy(1,1);
printf(lcd_putc,"Tx Alarma %Lu ", orden);
lcd_gotoxy(1,2);
printf(lcd_putc,"Puerta abierta ");
putc(0x00 + orden);
}
}
#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{
output_b(lectura);
lcd_gotoxy(1,1);
printf(lcd_putc,"Rx Recibiendo");
lcd_gotoxy(1,2);
printf(lcd_putc,"Alarma %Lu Abierta",lectura);}
}while(true);
}