Hola amigos del foro:
Me encuentro empezando a programar y por razones de uso, necesidades y otras cosas.
Empeze por los 12f. Estoy haciendo un programa simple que prende una luz al pulsar un boton.
Está escrito en assembler y queria que me hechen una mano, pues no funciona. No entiendo si hay que definir con ansel como digital o analogo, tengo entendido que seria digital al entrada. Y si es necesario definir el comparador.
En el programa parto configurando el osscal, despues las i/o y despues el programa mismo.
Estoy usando MPLAB Ide v863
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;este programa lo que hace es encender un led cuando se apreta un pulsador ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;list p=12f675
#include <p12f675.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_OFF
ERRORLEVEL -302
ORG 0x00 ;se inicializa el reloj interno
bSf STATUS,RP0 ;banco 1
call 3FFh
movwf OSCCAL
bcf STATUS,RP0 ;banco 0
; bcf STATUS,RP0 ;esta en el banco cero (esta es la configuracion que microchip propone)
clrf GPIO ;inicializa el gpo en cero
movlw 07h ;se carga con 0111 cmcom
movwf CMCON ;set del cero al dos son e/s digitales
bsf STATUS,RP0 ;esta en el banco 1
;movlw 08h ;se carga ansel con 1000 binario y queda el bit 3 como analogo
clrf ANSEL ;deja como digital todas las i/o
movlw 0ch ;los gpio 2y3 como entrada
movwf TRISIO ;y los gpio 5,4,1,0 como salida
LOOP:
BTFSS GPIO,3 ;SE REALIZA LA PREGUNTA? SI SE APRETO EL PULSADOR SI O NO(si el puerto 3 esta en cero o no)
;si (BTFSS)en esta 1 salta hello y prende el led
goto Hello ;va hasta hello
BSF GPIO,1 ;pone un 1
goto LOOP ; va hasta loop
Hello:
BCF GPIO,1 ;se coloca un cero gpio,1 y no prende el led
goto LOOP
END
Gracias, he buscado bastante pero sobre 12f no hay tanto, espero este bien ubicado el tema en el foro.
Gracias!!! Saludos.
Nicolas.
Me encuentro empezando a programar y por razones de uso, necesidades y otras cosas.
Empeze por los 12f. Estoy haciendo un programa simple que prende una luz al pulsar un boton.
Está escrito en assembler y queria que me hechen una mano, pues no funciona. No entiendo si hay que definir con ansel como digital o analogo, tengo entendido que seria digital al entrada. Y si es necesario definir el comparador.
En el programa parto configurando el osscal, despues las i/o y despues el programa mismo.
Estoy usando MPLAB Ide v863
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;este programa lo que hace es encender un led cuando se apreta un pulsador ;;
;; ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;list p=12f675
#include <p12f675.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _CPD_OFF
ERRORLEVEL -302
ORG 0x00 ;se inicializa el reloj interno
bSf STATUS,RP0 ;banco 1
call 3FFh
movwf OSCCAL
bcf STATUS,RP0 ;banco 0
; bcf STATUS,RP0 ;esta en el banco cero (esta es la configuracion que microchip propone)
clrf GPIO ;inicializa el gpo en cero
movlw 07h ;se carga con 0111 cmcom
movwf CMCON ;set del cero al dos son e/s digitales
bsf STATUS,RP0 ;esta en el banco 1
;movlw 08h ;se carga ansel con 1000 binario y queda el bit 3 como analogo
clrf ANSEL ;deja como digital todas las i/o
movlw 0ch ;los gpio 2y3 como entrada
movwf TRISIO ;y los gpio 5,4,1,0 como salida
LOOP:
BTFSS GPIO,3 ;SE REALIZA LA PREGUNTA? SI SE APRETO EL PULSADOR SI O NO(si el puerto 3 esta en cero o no)
;si (BTFSS)en esta 1 salta hello y prende el led
goto Hello ;va hasta hello
BSF GPIO,1 ;pone un 1
goto LOOP ; va hasta loop
Hello:
BCF GPIO,1 ;se coloca un cero gpio,1 y no prende el led
goto LOOP
END
Gracias, he buscado bastante pero sobre 12f no hay tanto, espero este bien ubicado el tema en el foro.
Gracias!!! Saludos.
Nicolas.