Autor Tema: duda con Codigo  (Leído 2199 veces)

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

Desconectado jhonathanve

  • PIC12
  • **
  • Mensajes: 88
duda con Codigo
« 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??

Desconectado isfan

  • PIC16
  • ***
  • Mensajes: 145
Re: duda con Codigo
« Respuesta #1 en: 03 de Octubre de 2009, 05:19:18 »
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

« Última modificación: 03 de Octubre de 2009, 05:22:03 por isfan »

Desconectado jim_17

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 309
    • Blog personal
Re: duda con Codigo
« Respuesta #2 en: 03 de Octubre de 2009, 05:24:46 »
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.
Share the world !

Blog's

http://www.area0x33.com


 

anything