En el tutorial anterior vimos como encender uno o mas leds. ahora veremos como encenderlos mediante pulsadores
LIST P=16F628A INCLUDE <P16F628A.INC> aux EQU 0X0C ORG 0X00 GOTO INICIO ORG 0X05 INICIO BSF STATUS,RP0 MOVLW B'00001111' MOVWF TRISB BCF STATUS,RP0 LEER MOVF PORTB,W ANDLW 0X0F MOVWF aux COMF aux,W ANDLW 0X0F MOVWF aux SWAPF aux,W MOVWF PORTB GOTO LEER END
LIST P=16F628A
Define el microcontrolador que se va a utilizar
INCLUDE <P16F628A.INC>
aqui definimos las etiquetas del PIC
aux EQU 0X0C
declaramos una constante aux
ORG 0X00
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 , 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 0X05
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″
MOVLW B’00001111′
carga el registro de trabajo con la 00001111
MOVWF TRISB
Mueve 00001111 a trisb (0 salida 1 entrada)
BCF STATUS,RP0
nos pasamos al banco 0
LEER MOVF PORTB,W
cargamos lo que esta en el puerto b en w
ANDLW 0X0F
Realiza la operación lógica AND entre el registro W y el registro “f”
MOVWF aux
cargamos w a aux
COMF aux,W
El contenido del registro ‘f’ se complementa. Si d=0 el resultado se almacena en el registro W. Si d=1 el resultado se almacena en el registro ‘f’.
ANDLW 0X0F
Realiza la operación lógica AND entre el registro W y el registro “f”
MOVWF aux
movemos lo que esta en w a aux
SWAPF aux,W
El nibble bajo del registro ‘f’ se intercambia con el nibble alto del mismo
00001111 —– 11110000
MOVWF PORTB
movemos lo que esta en w al puerto b
GOTO LEER
crea un bucle
END
fin del programa
Publicar un comentario