Autor Tema: XC8 Operacion "AND" y resultado en PORTB  (Leído 2310 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
XC8 Operacion "AND" y resultado en PORTB
« en: 25 de Junio de 2018, 11:41:58 »
Saludos

Aqui me tienen de nuevo luchando con el c :lol:

El titulo lo explica casi todo...
Es el programa que sigue:

1) Despues de iniciar mete 0x27 en el PORTB. Los leds conectados en este puerto lucen con el numero en binario
2) Mete un retraso de 200 ms
3) Coje el PORTB (0x27)  y hace un AND con el numero 0xB4
4) Saca el resultado (0x24) por el PORTB y los leds lucen este numero en binaro..... o deberia, porque en este punto del programa las luces se quedan apagadas :shock:

El caso es que en el simulador del MPLAB X lo hace bien pero en el Proteus no va asi que puede ser del proteus...
Pero como tampoco he utilizado tanto el AND, OR etc en c tambien puede ser que este haciendo algo mal en el programa.

Adjunto el .hex, el main.c y la simulacion en proteus.

Agraceria cualquier ayuda porque, aunque parezca mentira pero llevo horas con esto :oops: :shock:

* PORTB AND.zip
(30.64 kB - descargado 174 veces)


Saludos




Desconectado AleSergi

  • PIC16
  • ***
  • Mensajes: 209
Re:XC8 Operacion "AND" y resultado en PORTB
« Respuesta #1 en: 25 de Junio de 2018, 12:00:56 »
no pude  ver  el archivo zip que has subido,  me hice error..
en fin....
siempre tener en cuenta que hay un operador
&
y existe tambien
&&
los dos son AND, el primero a nivel bit!

Yo suelo confundirme,  no sera tu caso?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:XC8 Operacion "AND" y resultado en PORTB
« Respuesta #2 en: 25 de Junio de 2018, 12:05:52 »
El codigo deberia funcionar, copio el codigo para los demas

Código: C
  1. #include <xc.h>
  2. #include <stdint.h>
  3.  
  4. #define _XTAL_FREQ  4000000
  5.  
  6. uint8_t a,b,c = 0;
  7.  
  8. void IO_CONFIG(void)
  9. {
  10. //    TRISA=0xFF;
  11.     TRISB=0x00;
  12.     TRISC=0x00;
  13.     TRISD=0x00;
  14.     TRISE=0x00;
  15.     PORTA=0x00;
  16.     PORTB=0x00;
  17.     PORTC=0x00;
  18.     PORTD=0x00;
  19. }
  20.  
  21. void main(void)
  22. {
  23.     IO_CONFIG();
  24.        
  25.     while(1)
  26.     {
  27.       NOP();
  28.       NOP();
  29.       PORTB = 0x27;
  30.       __delay_ms(200);
  31.       a = PORTB;
  32.       b = 0xB4;
  33.       PORTB = a & b;
  34.       for(;;)
  35.             {
  36.                 //Loop infinito. Espera hasta resetar el PIC
  37.             }
  38.     }
  39. }

Personalmente hubiera realizado esto:

Código: C
  1. PORTB = 0x27;
  2.       __delay_ms(200);
  3.       PORTB &= 0xB4;

Y no usaba esas variables, pero el resultado es el mismo. Por lo que el código esta correcto.
No puedo probar la simulacion ya que no poseo Proteus en esta PC ( la del laburo)

PD: Puede que parezca que no hago nada en mi laburo porque estoy en el foro, pero si.. no hay mucho para realizar, y ademas ya me deben 5 meses de sueldo.. Asi que tampoco hay muchas ganas de hacer algo jejej.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:XC8 Operacion "AND" y resultado en PORTB
« Respuesta #3 en: 25 de Junio de 2018, 21:33:33 »
Gracias por su ayuda


no pude  ver  el archivo zip que has subido,  me hice error..


Porque sera? :?. Aqui te lo envio otra vez por si acaso.

* PORTB AND_2.zip
(30.73 kB - descargado 164 veces)



siempre tener en cuenta que hay un operador
&
y existe tambien
&&
los dos son AND, el primero a nivel bit!

Yo suelo confundirme,  no sera tu caso?


Pues puede ser porque todavia no estoy muy diestro en c. Lo probare.


Personalmente hubiera realizado esto:

Código: C
  1. PORTB = 0x27;
  2.       __delay_ms(200);
  3.       PORTB &= 0xB4;

Y no usaba esas variables


Aaaahhh que bueno.
Estoy acostumbrado al assembler que siempre hay que cambiar al Wreg y aqui y alla....  :lol:


PD: Puede que parezca que no hago nada en mi laburo porque estoy en el foro, pero si.. no hay mucho para realizar, y ademas ya me deben 5 meses de sueldo.. Asi que tampoco hay muchas ganas de hacer algo jejej.


5 MESES???? :shock: :shock: :shock:. Vaya vaya.
Que una persona con tu conocimiento y tu disposicion este de esta manera es una autentica putada (y perdon por la palabra). Espero que tu situacion se arregle lo antes posible.

Saludos.

Desconectado Loudness

  • PIC16
  • ***
  • Mensajes: 147
Re:XC8 Operacion "AND" y resultado en PORTB
« Respuesta #4 en: 27 de Junio de 2018, 22:35:08 »
Hola a todos.

Pues probando en un protoboard el programa de arriba ha funcionado perfectamente.

Otra vez me la ha jugado el Proteus :5]

Gracias por su tiempo.


 

anything