He escrito el siguiente código para generar PWM y para cambiar el ciclo de trabajo cuando se presiona un botón. En simulaciones funciona bien. Sin embargo, cuando se implementa el circuito, el PWM comienza cuando se presiona el botón. Pero después de unos 2 segundos se detendrá. PWM no se genera continuamente. ¿Hay alguna razón por la que esto está sucediendo? (por ejemplo: PIC es un defecto, error en el código de ensamblaje)
* Estoy usando el reloj interno del PIC
PROCESSOR PIC16F628A
#INCLUDE <P16F628A.INC>
#INCLUDE <BANKSEL.INC> ;a macro is used to easily change the banks
org 0x00
;set the PWM period
Bank1
movlw d'249' ; PR2 is 249 when Fosc=4MHz, TMR2 prescale=4
movwf PR2
;set the PWM duty cycle- initially set to zero
Bank0
movlw d'0' ; set bits 9 - 2
movwf CCPR1L
bcf CCP1CON,CCP1X ; set bit 5
bcf CCP1CON,CCP1Y ; set bit 4
;Make the CCP1 pin an output
Bank1
bcf TRISB,3
bsf TRISB,0;make RB0 as input
;Set the TMR2 prescale value
Bank0
movlw b'00000101' ; TMR2 = on, prescale = 1:4
movwf T2CON
; enable pwm mode
bsf CCP1CON,3
bsf CCP1CON,2
l
btfsc PORTB,0 ;bit test f skip if clear
call inc
goto l
inc
movlw d'50'
addwf CCPR1L,1
return
END