Y siguiendo esa línea y en el mismo mood, se me ha dado la idea de hacer y poner todo un programa comentado para compartirlo con la comunidad estudiantil que lo necesite.
Espero que les pueda servir de algo.
; Programa de muestra hecho para el estudio de mi enanisima!!!
;Bits de configuración.
;LVD_OFF=Programa de voltaje bajo apagado.
;CP_OFF=Protección de código
;PWRTE_ON=habilita el reset mediante power up timer
;XT_OSC=Se utiliza un cristal de cuarzo
;BODEN_OFF=desabilita el reset por caida de tención.
;WDT_OFF= DESABILITA EL PERRO GUARDIAN.
__CONFIG _LVP_OFF & _CP_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF & _WDT_OFF
;Generador de archivos list y llamada a librerias.
list p=pic16f877
;RADIX HEX
include<p16f877.inc>
;Declaración de variables
;b'00000111' Este valor pasa al registro OPTION_REG para configurar el divisor de frecuencia.
Prescaler equ d'256'
TMR_50ms equ d'56'
Cont equ 0x20
Cont1 equ 0x21
Temp equ 0x22
;indicadores del pic16f877
org 0x00
;Llamando a la rutina de configuración del pic.
call Init
;Llamando a la rutina principal del programa.
goto Principal
org 4
retfie
org 5
;rutinas
Init
;Cambiando al banco0.
bcf STATUS,RP0
bcf STATUS,RP1
;limpiando los puertos
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTE
;Cambiando al banco1
bsf STATUS,RP0
;Cambiando puertos de entrada a salida
;clrf TRISA
clrf TRISB
clrf TRISC
clrf TRISD
clrf TRISE
;Cambiando al banco0
bcf STATUS,RP0
return
confPrescaler
bcf STATUS,RP1
bcf STATUS,RP0
movlw b'00000001'
movwf OPTION_REG
;Algoritmo proporcionado por Labra Porthela Victor Manuel
;Lazo anidado.
delay10mS
movlw d'21'
call dmS
return
dmS
movwf Cont
ciclo
decfsz Cont,F
goto dmS1
return
dmS1
call d500uS
nop
goto ciclo
d500uS
movlw d'163'
call duS
return
duS
movwf Cont1
ciclo1
decfsz Cont1,F
goto ciclo1
return
;Programa principal.
Principal
;Usaremos el puerto A como entrada y el puesto B como salida.
movlw PORTA
movf PORTB
call delay10mS
goto Principal
end
No hay comentarios:
Publicar un comentario