Practicas en pic
Microcontrolador PIC16F84A.
Objetivo:
Encender y apagar cada segundo los leds conectados al puerto B.
Esquema eléctrico:
[pic]
Programa:
;------------------------------------------------------
;PROGRAMA PORTB.ASM
;Apagar y encender el puerto B cada segundo
;-------------------------------------------------------
list p=16f84A; identificar el micro usado.
include "p16F84A.inc"; archivo con los registros definidos.
org 00h; posición de memoria de comienzo del re-
; set ( 0000h ).
reset; etiqueta = posición de memoria.
goto inicio; salto a posición dememoria donde comien-
; za el programa.
org 10h; posición de memoria donde comienza el
; programa ( 0010h ).
inicio; etiqueta = dirección 0010h.
;-------------------------------------------
;Configurar el puerto B como salida;--------------------------------------------
;Registro TRISB=00h para salidas.
bsf STATUS,5; pongo a uno el bit 5 del registro
; STATUS para entrar en el banco1.
movlw 00h; cargo w con el dato 00h.
movwf TRISB; cargo el registro TRISB con el w para
; hacer el puerto B como salida.
bcf STATUS,5; pongo a cero el bit 5 del registro
; STATUS para entrar en el banco 0.
;----------------------------------
;PROGRAMA PRINCIPAL
;-----------------------------------
programa; etiqueta deprograma principal.
movlw 00h; cargo w con el dato 00h
movwf PORTB; cargo el registro PORTB con w
; apagando los leds.
call sg1; subrutina de retardo de 1 seg.
movlw 0ffh; cargo w con el datoffh.
movwf PORTB; cargo el registro PORTB con w
; encendiendo los leds.
call sg1; subrutina del retardo de 1 seg.
goto programa; salta al comienzo del programa.
;------------------------------------------------
;RETARDOS
;------------------------------------------------
;ffh=255 goto=2 useg. decfsz=1 useg.
;(255 x 2) + 255= 765 useg
;(765 x 765) + 255= 585480 useg.
;(585480 x 2) + 1= 1170961 useg.
sg1; etiqueta = subrutina del retardo de 1 seg.
movlw 0ffh; cargo w con el dato ffh.
movwf 0ch; cargo el registro 0ch con el w.
movwf 0dh; cargo el registro 0dh con el w.
movlw 01h; cargo w con el dato 01h.
movwf 0eh; cargo el registro 0eh con w.
salto1 ; etiqueta del bucle derepetición.
decfsz 0ch,1; decremento el registro 0ch y salto si es
; cero depositando el resultado en 0ch.
goto salto1; salto a la etiqueta salto1.
decfsz 0dh,1; decremento el registro 0dh...
Regístrate para leer el documento completo.