Tengo lo siguiente del libro que yo uso. Espero te sirva.
Codigo:
;************************************ Retardo_08.asm ************************************
;
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López. www.pic16f84a.com
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================
;
; Por la barra de diodos LED conectada al puerto de salida se visualizará un juegos de
; luces que al lector le resulte divertido. Hay que utilizar una tabla de datos.
;
; ZONA DE DATOS **********************************************************************
LIST P=16F84A
INCLUDE <P16F84A.INC>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
CBLOCK 0x0C
TablaLongitud
TablaPosicion
ENDC
; ZONA DE CÓDIGOS ********************************************************************
ORG 0
Inicio
bsf STATUS,RP0
clrf PORTB
bcf STATUS,RP0
Principal
movlw TablaFin-TablaInicio ; Calcula la longitud de la tabla y la carga en
movwf TablaLongitud ; este registro que actuará como contador.
clrf TablaPosicion ; Apunta a la primera posición de la tabla.
VisualizaOtraPosicion
movf TablaPosicion,W ; Posición de la tabla a leer.
call LeeTabla ; Visualiza la posición de la tabla.
movwf PORTB ; El resultado se visualiza por la salida.
call Retardo_200ms ; Durante el tiempo estimado.
incf TablaPosicion,F ; Apunta a la siguiente posición por visualizar.
decfsz TablaLongitud,F ; ¿Ha terminado la tabla?
goto VisualizaOtraPosicion; No, pues visualiza la siguiente posición.
goto Principal ; Repite el proceso.
;
; Subrutina "LeeTabla" ------------------------------------------------------------------
;
LeeTabla
addwf PCL,F
TablaInicio ; Indica la posición inicial de la tabla.
retlw b"00000000"
retlw b"10000001"
retlw b"01000010"
retlw b"00100100"
retlw b"00011000"
retlw b"00111100"
retlw b"01111110"
retlw b"11111111"
retlw b"11100111"
retlw b"11000011"
retlw b"10000001"
retlw b"10000001"
retlw b"11000011"
retlw b"11100111"
retlw b"11111111"
retlw b"11111111"
retlw b"01111110"
retlw b"00111100"
retlw b"00011000"
retlw b"00100100"
retlw b"01000010"
retlw b"10000001"
TablaFin ; Indica la posición final de la tabla.
INCLUDE <RETARDOS.INC>
END
Suerte.
Adrian.
Bueno yo desarrolle este programita q SIMPLEMENTE hace un efecto pin-pon con 8 leds y un solo led a la vez encndido:
Codigo:
list p=16f84a
include <p16f84a.inc>
CounterA equ 10h
CounterB equ 11h
msret equ 12h
org 00h
goto start
org 05h
start bsf status, rp0
clrf trisb
bcf status, rp0
movlw 1
movwf portb
bcf status, c
call ret
rtr rlf portb, f
btfsc status, c
goto rtl
call ret
goto rtr
rtl rrf portb, f
btfsc status, c
goto rtr
call ret
goto rtl
;PIC Time Delay = 0.0100020 s with Osc = 4.000000 MHz
ret movlw 8
movwf msret
msc movlw D"13"
movwf CounterB
movlw D"251"
movwf CounterA
loop decfsz CounterA,1
goto loop
decfsz CounterB,1
goto loop
decfsz msret, 1
goto msc
return
end
no le puse comentarios pero es bastante facil de leer