TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: juanes79 en 24 de Julio de 2013, 00:55:25

Título: No me funciona instruccion de rotacion en pic 16F873A
Publicado por: juanes79 en 24 de Julio de 2013, 00:55:25
Hola amigos, les consulto que error puedo tener en este codigo que aui les muestro esta en lenguajeC.

La idea es hacer una rotacion de los bits del puerto "A" del micro 16F873A, pero no me funciona en montaje real ni en proteus. Simulo en el programa PICC CSS y no me muestra erores.

Còdigo para analizar.

#include <16f873a.h>
#use delay (clock=4000000)
#fuses XT, NOPROTECT, NOWDT, NOBROWNOUT, PUT, NOLVP
#BYTE PORTA=5


  MAIN ()
{
   
    SET_TRIS_a(0b000000);
   
    WHILE(TRUE)
      {
     
      PORTA=(0b000001);
      delay_ms(500);
       PORTA=PORTA<<1;  rotacion al a izquierda, segun he leido debe rotar todos lo bits del puerto A. Solo me rotan dos bits RA0 Y RA1,
      DELAY_MS(500);       
       }
}  fin del còdigo

espero me ayuden a solucionar este inconveniente y que otra instruccion e permite realizar rotacion ya sea a la derecha  o izquierda.
Título: Re: No me funciona instruccion de rotacion en pic 16F873A
Publicado por: BrunoF en 24 de Julio de 2013, 01:02:19
Hola.

Puede estar relacionado a los pines analógicos. Deshabilitá el módulo ADC, y inicializá todos los pines como digitales.

Saludos.
Título: Re: No me funciona instruccion de rotacion en pic 16F873A
Publicado por: bmb en 24 de Julio de 2013, 10:10:22
Hola juanes79, intenta con la instrucción PORTA=(0b000001); por fuera del ciclo while(), algo así:

Código: C
  1. #include <16f873a.h>
  2. #use delay (clock=4000000)
  3.  
  4. #fuses XT, NOPROTECT, NOWDT, NOBROWNOUT, PUT, NOLVP
  5. #BYTE PORTA=5
  6.  
  7.   MAIN ()
  8. {
  9.    
  10.     SET_TRIS_a(0b000000);
  11.     PORTA=(0b000001);  
  12.  
  13.     WHILE(TRUE)
  14.     {
  15.         PORTA=PORTA<<1;  rotacion al a izquierda, segun he leido debe rotar todos lo bits del puerto A. Solo me rotan dos bits RA0 Y RA1,
  16.         DELAY_MS(500);        
  17.     }
  18. }  fin del codigo

Saludos!
Título: Re: No me funciona instruccion de rotacion en pic 16F873A
Publicado por: BrunoF en 24 de Julio de 2013, 11:26:18
Ah! Tiene razón, no vi ese detalle :D