Beruflich Dokumente
Kultur Dokumente
RPTA1: Hola evolution, primero y principal en la simulacin de proteus no debes fijarte en la frecuencia con que el led parpadea, ya que no lo hace en tiempo real y por lo
tanto parece como si fuese errtico. Debes utilizar el analizador lgico o el osciloscopio del proteus para corroborar los tiempos.
lo segundo: Para poder realizar retardos en asm el mximo valor que puede tomar un registro es 255, y tu colocaste 249000, el compilador solo te toma los bits menos
significativos en este caso 0 por lo tanto el retardo que logras es de solo 256 pasos, es decir hasta que tu variable se haga nuevamente 0. Con esto logras un retardo de
alrededor de 4*256/1Meg=1.024mseg. que est muy lejos de un segundo.
Para realizar retardos ms largos debes anidar varios bucles. Espero haberte ayudado
;********************************************************************************************
__CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
;********************************************************************************************
#DEFINE
LED
CBLOCK
Cont
PORTB,0
ENDC
;********************************************************************************************
Inicio
ORG
bcf
bcf
STATUS,RP0
LED
STATUS,RP0
bsf
call
bcf
call
goto
LED
Retardo
LED
Retardo
Principal
bsf
Principal
;********************************************************************************************
Retardo
movlw d'249000'
movwf Cont
bucle
nop
decfsz Cont,1
goto
bucle
return
;********************************************************************************************
END
;********************************************************************************************
;************************************************************************************************
;Anidando un bucle queda de esta forma si el valor maximo de un registro es 255 pues utlizo un segundo
;contador con valor 200 y ahora si, porsupuesto que las instrucciones del bucle que anida agregan ciclos maquina
;pero ya tiene mas sentido esto :) gracias.
;************************************************************************************************
__CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>
;********************************************************************************************
#DEFINE
LED
PORTB,0
CBLOCK
Cont_1
Cont_2
ENDC
;********************************************************************************************
Inicio
ORG
bcf
bcf
STATUS,RP0
LED
STATUS,RP0
bsf
call
call
call
call
call
bcf
call
call
LED
Retardo_2
Retardo_2
Retardo_2
Retardo_2
Retardo_2
LED
Retardo_2
Retardo_2
bsf
Principal
call
call
call
goto
Retardo_2
Retardo_2
Retardo_2
Principal
;********************************************************************************************
Retardo_2
movlw d'200'
movwf Cont_2
bucle_2
decfsz Cont_2,1
Retardo_1
movlw d'249'
movwf Cont_1
bucle_1
nop
decfsz Cont_1,1
goto
bucle_1
return
goto
bucle_2
return
;********************************************************************************************
END
;********************************************************************************************