TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: jhonathanve en 03 de Octubre de 2009, 01:46:09
-
Buenas a todos tengo una duda sobre un codgio. ya tengo cierta conocimiento sobre el pic basic pero en ASM soy nuevo.... el codigo es el siguiente
processor 16f84a ;se define el tipo de microcontrolador para el ensamblador
#include <p16f84a.inc> ;se incluye la libreria que detectará los comandos apropiados
;para el micro en cuestión
status equ 03h ;el primer paso es definir las etiquetas que nos indicarán el
trisa equ 05h ;seguimiento que debemos hacer en el transcurso del programa
porta equ 05h ;son etiquetas que nos indican registros internos del pic y
;nuestra programación, estos son los EQU de igual
#define banco0 bcf status,5 ;luego están las macros que nos harán nuestro programa mas
#define banco1 bsf status,5 ;personalizado. son los #define, nos permiten tener nombres
;que nos ubican facilmente al verlos.
org 00h ;esta es la indicación para que el micro sepa que es el comienzo
;de nuestro programa
banco1 ;aquí invocamos la macro que lleva al micro al banco 1 de configuración
bcf trisa,0 ;se lleva a cero el bit 0 del puerto A colocándolo como salida
bsf trisa,1 ;se lleva a uno el bit 1 del mismo puerto como entrada
banco0 ;retorno al banco 0, el banco de trabajo
inicio ;esta etiqueta indica al programador el inicio real de su programa
btfsc porta,1 ;prueba el bit 1 del puerto A y si es cero se salta una instrucción
goto esumo ;salta hasta la etiqueta prevista ESUNO
bsf porta,0 ;coloca 1 en el bit 0 del puerto A RA0
goto inicio ;salta hasta la etiqueta inicio
esumo ;etiqueta
bcf porta,0 ;coloca a 0 el RA0
goto inicio ;salta a inicio
end ;final del programa
La duda es la sigueite
inicio ;esta etiqueta indica al programador el inicio real de su programa
btfsc porta,1 ;prueba el bit 1 del puerto A y si es cero se salta una instrucción
goto esumo ;salta hasta la etiqueta prevista ESUNO
bsf porta,0 ;coloca 1 en el bit 0 del puerto A RA0
en esta parte el comando BTFSC me dice que prueba el bit 1 del puerto A y si es Cero se salta una Instrucion. hay no entiendo .. el salta a la etiqueta esuno??
-
La instrucción BTFSC PORTA,1 es una instruccion de la llamado de "Brinco" esto lo que hace es testear el Bit 1 de PORTA y Saltar una instrucción si ese bit es 0
en este caso si el bit de porta,1 es 1 haria la siguiente instruccion tal cual y si es 0 saltaria directamente una instruccion que corresponde a "goto esumo"
En ASM en el repertorio de 35 instrucciones que componen los PIC de la gama Media hay 4 instruciones de brinco:
BTFSC, F,bit -> comprueba el Bit F y salta si vale 0
BTFSS , F,bit -> comprueba el Bit F y salta si vale 1
DECFSZ ,F,bit -> decrementa F y salta si bit vale 0
INCFSZ ,F,bit -> incrementa F y salta si bit vale 0
-
Para que te quede claro como funciona esa instrucción te diré que nombre recibe cada sigla.
BTFSC, es lo mismo que BIT TEST SKIP IF CLEAR, entonces la instrucción lo que hace es comprobar el estado del del BIT1 del PORTA, que hemos definido como entrada.
Si el bit es 1, está instrucción no hace nada, es como si hiciera un NOP y sigue el transcurso normal del programa.
Si el bit es 0, ésta instrucción se salta la siguiente instrucción, es como si hiciera un goto "2 posiciones mas abajo".
0 inicio
1 btfsc porta,1
2 goto esuno
3 bsf porta,0
Si el bit es 0 hace un goto miposición+2, es decir goto 1+2 y el programa va hacia la posición 3.
Salu2.