Tutorial 1 - Microcontroladores pic - Assembler - enceder LEDS

En el tutorial anterior vimos cómo se instalaba mplab y como se iniciaba un proyecto ahora veremos como encender uno o más led´s conectados al puerto B del microcontrolador

        LIST            P=16F628A
        INCLUDE         <P16F628A.INC>

        ORG             0X00
        GOTO            INICIO
        ORG             0X05

INICIO

        bsf             STATUS,RP0  ;banco1
        movlw           b'00000000'  ; configuro puertos
        movwf           TRISB             
        bcf             STATUS,RP0   ; banco 0 
        movlw           b'01010101'
        movwf           PORTB   
        END 


ahora veremos el funcionamiento del codigo

LIST P=16F628A
Define el microcontrolador que se va a utilizar
INCLUDE  <P16F628A.INC>
aqui definimos las etiquetas del PIC
__CONFIG _CP_OFF&_MCLRE_OFF&_WDT_OFF&_INTRC_OSC_NOCLKOUT
definimos la configuracion del microcontrolador , configuracion para el grabador
- utilizaremos oscilador interno del pic
- descartivaremos el watchdog
constante equ b’10101010′
aqui declaramos una constante
la sintaxis para declarar constantes es la siguinte <nombre de la constante> equ <valor> lo que hace el codigo es que cada vez que llamemos a la constante  tome el valor  de constante
ejemplo:
constante equ b’10101010′   — cada vez que llamemos a constante este tomara el valor de  10101010 en binario
tambien podemos escribirlo en octal hexagecimal binario decimal , siendo el primero el menos usado
binario  = 11111111
decimal = 255
hex = 0xFF
org 0×00
el programa  comienza en la direccion 0 de la memoria del programa. Es muy importante comenzar el programa con el nemonico org  en la direccion 0×00 ya que este nemonico define la dirección en la que se comenzará a escribir el código. Al momento de encender el microcontrolador , un reset lo primero que el microcontrolador hace es leer la dirección 0×00, si no hay nada en esa dirección lo más probable es que el microcontrolador se cicle. Otra cosa importante que debemos tomar en cuenta es que la memoria de programa del PIC 16F628A comienza en la dirección 0×05<ver data sheet del micontrolador> ,  es por eso que se pone org 0×05
goto inicio
lo  que hace goto es hacer un salto  como su nombre lo indica , a inicio
org 0×05
hacemos que incio este en la direccion 5 de la memoria del programa
inicio bsf STATUS,RP0
bsf se utiliza para cambiar el estado lógico de un bit de un registro a un nivel alto ,  la sintáxis es bsf f,b donde f es el registro y b el bit que se quiere cambiar (bsf STATUS,RP0)
“Pone un 1 al bit 5  del STATUS .  Acceso al banco 1″
clrf  TRISB
Una vez en el banco 1 configuramos el puerto B como salida, de eso se encarga clrf, este nemonico  borra el contenido de un registro, al estar en el banco 1 clrf TRISB hace que todos los bits del registro TRISB se pongan en un nivel bajo, configurando así el puerto B como salida
“Se configura puerto B como salida”
bcf  STATUS,RP0
Después regresamos de nuevo al banco 0 con bcf STATUS,RP0. bcf realiza la acción contraria de bsf, pone a 0 un bit del registro específicado. Con eso termina la configuración del puerto B.
movlw constante
carga el registro de trabajo W  con la constante
bucle
movwf PORTB
en contenido de W se deposita en el Puerto B (salida)
goto bucle
creamos un bucle infinito…
end

fin del programa

Publicar un comentario