Buenas a todos!
Soy nuevo en esto y he empezado con el PIC12F683 con el leguaje ensamblador. He cogido este porque era el que tenia
Bueno el caso es que estaba haciendo un programa con dos leds que haga que se encienda un led y cuando se apague se encienda el otro y asi sucesivamente.
He utilizado la instruccion RLF para desplazar el bit al otro pin donde tengo conectado el otro led y luego hago un bucle.
El caso es que el pic lo que hace es que pone en el pic 000001 y cuado ejecuta RLF pone todos los pines a 000000 en vez de 000010.
¿Donde esta el problema?
Os dejo el codigo del programa:
Soy nuevo en esto y he empezado con el PIC12F683 con el leguaje ensamblador. He cogido este porque era el que tenia
Bueno el caso es que estaba haciendo un programa con dos leds que haga que se encienda un led y cuando se apague se encienda el otro y asi sucesivamente.
He utilizado la instruccion RLF para desplazar el bit al otro pin donde tengo conectado el otro led y luego hago un bucle.
El caso es que el pic lo que hace es que pone en el pic 000001 y cuado ejecuta RLF pone todos los pines a 000000 en vez de 000010.
¿Donde esta el problema?
Os dejo el codigo del programa:
Código:
list p=12F683 ; list directive to define processor
#include <p12F683.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _FCMEN_ON & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_ON & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
;------------mapa de memoria---------
CONTADOR1 equ 0x20
CONTADOR2 equ 0x21
;------------------------------------
;-----------Oscilador interno--------
bsf STATUS,RP0
call 3FFh
movwf OSCCON;
bcf STATUS,RP0
;------------------------------------
;____________PROGRAMA______________________
;Configuracion de puertos
bsf STATUS,RP0 ;Va al Banco 1
clrf TRISIO ; Pone todos como salida
bcf STATUS,RP0 ; Vuelve al Banco 0
;--------------------------------------
Inicio
movlw 01h
movwf GPIO ; Enciende el led1
call RETARDO
call RETARDO
rlf GPIO,1 ;Apaga el 1º led y enciende el otro: 000100
call RETARDO
call RETARDO
goto Inicio ;Repite el bucle del parpadeo d elos dos led
;___________________________________________
;------------------------------------------
;Retardo subrutina
RETARDO
MOVLW 25h ; Guardamos el numero de retardo en el registro W
MOVWF CONTADOR1; Lo guardamos en los dos contador
MOVWF CONTADOR2;
;Empieza el 1º retardo
Bucle1
DECFSZ CONTADOR1,1 ; Restamos 1 a 255.
goto Bucle1
MOVWF CONTADOR1;
;Comienza el 2º retardo
DECFSZ CONTADOR2,1
goto Bucle1 ; Volvemos al inicio de nuestro bucle
; Este retardo cuenta hacia atrás ...
; ...desde 255 a 0, 255 veces.
RETURN
;------------------------------------------
org 0x3FF
retlw 0x20
end ; se acabó