Buenas, espero que alguien me pueda ayudar. Para empezar con los pics estoy realizando una secuencia de leds y dependiendo de como varie uns sw dicha secuencia tendra un determinado tiempo.
¿Alguien sabe pq siempre obtengo el mismo tiempo al simular con proteus?
;Programa para la simulacion de una serie de leds
list P=16F877
radix hex
#include <p16f877.inc> ;incluimos la libreria del PIC 16F877
;********************Zona de Etiquetas**************
temp equ 0x20 ;registro temporal
tempi equ 0x21
aux equ 0x23
;****************************************************************
;*************************************************************************************+
ORG 0x00
goto inicio
ORG 0x05
;*********************************CARGO VALOR DE REFERENCIA************
movlw b'00000001'
movwf aux
;****************COnfiguracion del controlador******************************************
inicio
bsf STATUS,RP0 ;acceso al banco 0
bcf STATUS,RP1
;*******PUERTOS******************************************
clrf PORTB ;puerta B como salida, aqui estaran los leds que vamos a usar
movlw b'00000011'
movwf PORTA ;puerta A0 y A1 entrada digital para seleccionar tiempo
bsf PORTC,5 ;Lo usaremos como boton de START
;*******CONFIGURACION DEL TMR0****************************
movlw b'10010111'
movwf OPTION_REG ;configuracion del timer0 con un preescalado de 256
clrf INTCON
bcf STATUS,5
;**************FIN DE LA CONFIGURACION ***************************
;**************COMIENZO DEL PROGRAMA****************************************
main clrf PORTB
btfsc PORTC,5
goto main
call tiempo
clrf PORTB
bsf PORTB,0
call retardo ;encendemos la primera bombilla y esperamos
call ida
call vuelta
goto inicio
;****************************rutina Programa ***********************************
ida rlf PORTB,1
call retardo
btfss PORTB,7
goto ida
return
vuelta rrf PORTB,1
call retardo
btfss PORTB,0
goto vuelta
return ;volvemos al principio
retardo movf temp,W
movwf tempi
retar movlw 0xD9 ;mi retardo de partida es un retardo de 10milisegundos
movwf OPTION_REG
bcf INTCON,2
Explora0_5 btfss INTCON,2
goto Explora0_5
decfsz tempi,1
goto retar
return
;**** SELECICON DE RETARDO********************************
tiempo
btfss PORTA,0
goto xA
goto xB
xA btfss PORTA,1
goto AA
goto BA
xB btfss PORTA,1
goto AB
goto BB
AA movlw 0x32; 50 pasado a HEX para un retardo de 0.5
movwf temp
return
BA movlw 0x14 ; 20 pasado a HEX para un retardo de 0.4
movwf temp
return
AB movlw 0x00 ; 100 pasado a HEX ,esta variable hace que nuestro contador aumente
movwf temp
return
BB movlw 0x80 ;30 pasado a HEX
movwf temp
return
end