Programa de rotacion de leds no funciona

#1
hola,quisiera que me dijerais donde esta el fallo en este programa que he hecho,no me va,solo enciende el primer led pero de rotar nada.
;*********************************************
rotar equ 0x0a
PORTB equ 0x06
STATUS equ 0x03

;***********************************************
reset org 0x00;
goto Inicio;
Inicio org 0x05;
bsf STATUS,RP0;
clrf PORTB;
bcf STATUS,RP0;
;**********************************************
Principal movlw 0x01 ;
movwf rotar;

rotando movf rotar,w;
movwf PORTB;
call Retardo_1s;
rlf rotar,1;
btfss rotar,6;
goto rotando;
goto Principal;
 
#2
El programa se ve bien... no recuerdo si en la instruccion rlf rotar,1 el "1" quiere decir f, si ese es el caso no debes tener problemas

Verifica tu rubrutina de retardo de 1S (Retardo_1s) posiblemente es demasiado lenta, demasiado rapida o esta causando que se atasque el microcontrolador
 
#3
Hola, es posible que te falte definir la variable
rotar, con la instruccion equ para que tenga un lugar en la memoria
ejemplo rotar equ 0x20
esto hace que el programa busque los valores de "rotar" en la posicion de memoria 0x20
Saludos
 
#4
hola chico 3001,el 1 se refiere al registro f y la subrutina de retardo la he comprobado en otros programas y va perfecta,tambien he cambiado de valor a la variable rotar como me dijo el amigo meta pero tampoco va y el micro no es ya que le he grabado otros programas y va bueno ,no se que le pasa ...........saludos.
 
#5
Meta tiene razon.. la variable rotar esta mal declarada.. la estas declarando en la direccion 0Ah y dependiendo del tipo de PIC la RAM de usuario va apartir de la direccion 20h...

que PIC es el que usas?
 
#7
e probado algo similar simulando en proteus, aunque inicia bien al llegar al 4 bit simplemente se pierde el valor quedado el registro en ceros (utilizo un 628 es mejor qu el 84)
 
#8
andresd0 dijo:
e probado algo similar simulando en proteus, aunque inicia bien al llegar al 4 bit simplemente se pierde el valor quedado el registro en ceros (utilizo un 628 es mejor qu el 84)
Cuando acabe con el libro utilizaré el 16F88 que es mejor que el 16F628A que por eso lo actualizaron.
 

Vick

Moderador
#9
El primer error es que estas definiendo rotar en la posición 0x0a y esa dirección corrsponde al registro PCLATH, la memoria de datos de usuario comienza en la dirección 0x0c.
 
Arriba