Documente Academic
Documente Profesional
Documente Cultură
LIST P=16F877
INCLUDE <P16F877.INC>
ORG 0
;configurar puerto
bsf STATUS,RP0 ; banco -1
clrf TRISD ; PORTD como salida
bcf STATUS,RP0 ; banco 0
btfss PIR1,TMR1IF
goto $-1
bcf PIR1,TMR1IF ;limpiar el flag
goto LEDON
goto $
END
Simulación en Proteus a 2.5 ms por división en el eje horizontal.
Problema 3
LIST P=16F877
INCLUDE <P16F877.INC>
ORG 0
movlw 0x00
movwf PORTB ;todos a cero
movlw B'10000001'
movwf ADCON0 ; Ta=1.6us / CH0-RA0 / ON
REPITE
call WAIT1 ;20us
bsf ADCON0,GO ;inicio d conversion
btfsc ADCON0,GO ;¿FIN?
goto $-1 ;NO
BUCLE3
call WAIT1 ;20us
movf ADRESH,0 ;w<-muestra de 8 bits
SUBLW 0x98 ; resto menos 0x98 q equivale a valores entre 2 y 3 volt
BTFSS STATUS,C ;evalua la resta
GOTO BUCLE4
BUCLE4
call WAIT1 ;20us
movf ADRESH,0 ;w<-muestra de 8 bits
SUBLW 0xcb ; resto menos 0xcb q equivale a valores entre 3 y 4 volt
BTFSS STATUS,C ;evalua la resta
GOTO BUCLE5
BUCLE4
call WAIT1 ;20us
movlw 0x08
movwf PORTB
goto REPITE
;-----------------
WAIT1 ;total = 20.8us
movlw .20 ;0.2us
movwf 20H ;0.2us
LAZO
nop ;0.2us
nop ;0.2us
decfsz 20H ;0.2us
goto LAZO ;0.4us
return ;0.4us
END
Problema 4. Usando como entrada un canal de conversión A/D modificar el ciclo
de trabajo de un PWM.
LIST P=16F877
INCLUDE <P16F877.INC>
org 0
bsf STATUS,RP0 ; banco 1 ;configuro TIMER
bcf TRISC,2
bsf TRISA,0
movlw .255 ;es como el 100%
movwf PR2
bcf STATUS,RP0 ; banco 0
movlw .127 ;configuro modo pwm
movwf CCPR1H
movlw B'1100' ;modoo pwm
movwf CCP1CON
ADC
;leer adc y pasrlo a ccpril
call WAIT1 ;20us
call WAIT1 ;20us
bsf ADCON0,GO ;inicio d conversion
btfsc ADCON0,GO ;¿FIN?
goto $-1 ;NO
call WAIT1 ;20us
movf ADRESH,0 ;w<-muestra de 8 bits
movwf CCPR1L ;mueve el dato a CCPRIL
goto ADC ;vuleve a esperar una nueva conversion
;-----------------
WAIT1 ;total = 20.8us
movlw . 20 ;0.2us
movwf 20H ;0.2us
LAZO
nop ;0.2us
nop ;0.2us
decfsz 20H ;0.2us
goto LAZO ;0.4us
return ;0.4us
End
;CCP
;Modo PWM (CCP1)(RC2)
LIST P=16F877
INCLUDE<P16F877.INC>
org 0
org 0
bsf STATUS,RP0
bcf TRISC,2
movlw .255 ;es como el 100%
movwf PR2
bcf STATUS,RP0
movlw .1
movwf CCPR1L
movlw B'1100' ;modoo pwm
movwf CCP1CON
movlw B'00000101' ; usado para .249 y .95
movwf T2CON ; usado para .249 y .95
BOTON
btfsc PORTD,0
goto $-1
btfss PORTD,0
goto $-1
incf CCPR1L
goto BOTON
End