You are on page 1of 3

;^

; T�tulo ejem03-1.asm ^
; Autor V. Garcia ^
; Date 12012006 ^
; Deben documentarse todas las rutinas y el motivo de ser ^
; (Las tildes estan omitidas de manera intencionada) ^
;_________________________________________________________________ ^
; Recordar que con 0 se designa al registro W y con ^
; 1 se designa al archivo f ^
; ^
; Que hace = Encender LED 1, lo apaga y enciende el siguiente ^
; hasta el LED 8, luego vuelve a emepzar. ^
; PIC16F84A ^
;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
;
;--------------- Encabezado -------------
list p=pic16f84a
#include p16f84a.inc
errorlevel -302 ;Eliminar banco mensajes

; Definicion de Etiquetas
STATUS equ h'0003'
porta equ h'0005' ; define puerto A
portb equ h'0006' ; define puerto B
TRISA equ h'0085'
TRISB equ h'0086'

; Estos estan definidos en #include


;w equ h'0000'
;f equ h'0001'

ra0 equ 00 ;RA0 bit


ra1 equ 01 ;RA1 bit
ra2 equ 02 ;RA2 bit
ra3 equ 03 ;RA3 bit
ra4 equ 04 ;RA4 bit
rp0 equ 06

cnt500u equ 0c ;500usec direccion contador


cnt1m equ 0d ;1msec direccion contador
cnt100m equ 0e ;100msec direccion contador
cnt500m equ 0f ;500msec direccion contador
cnt1s equ 10 ;1sec direccion contador

; Definicion Modelo Datos


; '1'OFF '0'ON

; Tabla Modelo
p00 equ b'01111111'
p01 equ b'10111111'
p02 equ b'11011111'
p03 equ b'11101111'
p04 equ b'11110111'
p05 equ b'11111011'
p06 equ b'11111101'
p07 equ b'11111110'
;
; Inicio Programa
org 0 ;Vector Reset
goto init
org 4 ;Vector Interrupcion
BCF INTCON,GIE ;Por si se dispararan las interrupciones
goto init

; Proceso Inicial
org 5
init bsf STATUS,RP0 ;Cambiar a Banco1
movlw h'ff' ;Define modo datos entrada
movwf TRISA ;Define PORTA en modo Entrada
clrf TRISB ;Define PORTB a modo Salida
bcf STATUS,RP0 ;Cambia a Banco0
;
movlw h'ff' ;Pon datos '11111111' en salida
movwf portb ;para apagar LEDs

; Modelo 0 Subrutina Salida


ptn0 movlw p00 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p01 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p02 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p03 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p04 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p05 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p06 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw p07 ;Pon datos modelo en
movwf portb ;datos salida
call t100m ;Espera 100msec
movlw h'ff' ;Pon datos FF en salida
movwf portb ;datos para apagar LED
call t100m ;Espera 100msec
return

;
; Subrutina retardo (Timer) para reloj 10MHz
;

; Subrutina 1msec Timer


t1m movlw d'2' ;(1) Pon lazo cnt1
movwf cnt1m ;(1) Guarda lazo cnt1
tm1lp1 movlw d'249' ;(1)2 Pon lazo cnt2
movwf cnt500u ;(1)2 Guarda lazo cnt2
tm1lp2 nop ;(1)2492 ajust retardo
nop ;(1)2492 ajust retardo
decfsz cnt500u,f ;(1)2492 cnt500u-1=0
goto tm1lp2 ;(2)2482 No, continua
decfsz cnt1m,f ;(1)2 cnt1m-1=0
goto tm1lp1 ;(2) No. Continua
return ;(2) Si. final de Cnt
;Total 25010.4usec=1msec

; 100msec Subrutina Retardo (Timer)


t100m movlw d'100' ;Pon lazo contador
movwf cnt100m ;Guarda lazo contador
tm2lp call t1m ;subrutina 1msec
decfsz cnt100m,f ;cnt100m - 1 = 0
goto tm2lp ;No. Continua
return ;Si. Final de Contador

; 500msec Subrutina Retardo (Timer)


t500m movlw d'5' ;pon lazo contador
movwf cnt500m ;Guarda lazo contador
tm3lp call t100m ;subrutina 100msec
decfsz cnt500m,f ;cnt500m - 1 = 0
goto tm3lp ;No. Continua
return ;Si. final de Contador

; 1sec Subrutina Retardo (Timer)


t1s movlw d'2' ;Pon lazo contador
movwf cnt1s ;Guarda lazo contador
tm4lp call t500m ;subrutina 500msec
decfsz cnt1s,f ;cnt1s - 1 = 0
goto tm4lp ;No. Continua
return ;Si. Final de Contador

;
; Final del proceso parpadeo LED
;

end

You might also like