Sunteți pe pagina 1din 6

Problema 2.

Utilizando el TIMER 0 y TIMER1 generar una señal que tenga un


pulso positivo de duración 5ms con el TIMER0 y 25ms sin trabajar con el
TIMER1. (a 20MHz).

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

clrf PORTD ;PORTD=0

LEDON bsf PORTD,0 ;LED - on

;TIMER0 y retardo de 5ms


bsf STATUS,RP0 ;banco 1
movlw B'11010110' ;n=128
movwf OPTION_REG
bcf STATUS,RP0 ;Banco -0
movlw .61
movwf TMR0 ;TMR0 = 61
bcf INTCON,T0IF
btfss INTCON,T0IF ;¿T0IF = 1? ; existe desbordamiento
goto $-1 ;espera
bcf INTCON,T0IF ; borrar el señalidzador
; y continua con lo de abajo

LEDOFF bcf PORTD,0 ;LED - OFF

;TIMER1 y retardo de 25ms


movlw LOW .34286
movwf TMR1L
movlw HIGH .34286
movwf TMR1H
movlw B'00100001' ; para 25ms
movwf T1CON
bcf PIR1,TMR1IF ;limpiar el flag

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

bsf STATUS,RP0 ;banco 1


clrf TRISB ;PORTB como salida
bcf STATUS,RP0 ;banco 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

movf ADRESH,0 ;w<-muestra de 8 bits


SUBLW 0x32 ; resto menos 0x32 q equivale a valores menroes de 1 voltio.
BTFSS STATUS,C ;evalua la resta
GOTO BUCLE2

call WAIT1 ;20us


movlw 0x80
movwf PORTB
goto REPITE
BUCLE2
call WAIT1 ;20us
movf ADRESH,0 ;w<-muestra de 8 bits
SUBLW 0x65 ; resto menos 0x65 q equivale a valores entre 1 y 2 volt
BTFSS STATUS,C ;evalua la resta
GOTO BUCLE3

call WAIT1 ;20us


movlw 0x40
movwf PORTB
goto REPITE

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

call WAIT1 ;20us


movlw 0x20
movwf PORTB
goto REPITE

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

call WAIT1 ;20us


movlw 0x10
movwf PORTB
goto REPITE

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.

En este ejercicio se tuvo problemas simulando el PWM en Proteus

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

movlw B'00000101' ; usado para .249 y .95


movwf T2CON ; usado para .249 y .95

movlw B'10000001' ;configuro ADC


movwf ADCON0 ; Ta=1.6us / CH0-RA0 / ON

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

Simulación del problema desarrollado no se puede simular en proteus pero si en


MPLAB.

Programa de clase simulado en MPLAB pero en PROTEUS no simula bien

;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

Y si simulo lo mismo en Proteus obtengo lo siguiente:

S-ar putea să vă placă și