Autor Tema: No me funciona instruccion de rotacion en pic 16F873A  (Leído 1303 veces)

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

Desconectado juanes79

  • PIC10
  • *
  • Mensajes: 41
No me funciona instruccion de rotacion en pic 16F873A
« 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.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: No me funciona instruccion de rotacion en pic 16F873A
« Respuesta #1 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.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: No me funciona instruccion de rotacion en pic 16F873A
« Respuesta #2 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!

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: No me funciona instruccion de rotacion en pic 16F873A
« Respuesta #3 en: 24 de Julio de 2013, 11:26:18 »
Ah! Tiene razón, no vi ese detalle :D
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.


 

anything