Académique Documents
Professionnel Documents
Culture Documents
ASIGNATURA MICROCONTROLADORES
TEMA: PWM
Profesor: Ing. Danny Sotomayor
EQUIPO No5:
Angelo Rodriguez
David Sandoval
Guillermo Rodriguez
SANGOLQU 19-06-2014
5. Diagrama de flujo:
6. Diagrama electrnico.
7. Clculos
Periodo PWM
PWM = [(PR29+1}*4T*(TMR2 Prescale Value)
PWM = (255+1)*1us*16
PWM= 4096us = 4ms
PWM DUTY CITE
PWMDC=(CCPR2L:CCPICON<5:4>)* TOSC*(TMR2 PRESCALE VALUE)
PWMDC = 508*0,25*16
PWMDC = 2032us
8. Programa:
list
p=16f877a;tipo de procesador
INCLUDE
"P16F877A.Inc"; librerias del registro del pic
__CONFIG(0x3f71);Grabar desde el Programa del PICKIT
DATO EQU 20H
;Define constantes para 20 milisegundos
N
EQU 0x1A
M
EQU 0x0
CONT1 EQU 0x20
CONT2 EQU 0x21
;Define constante para mascara 0xFF (tecla pulsada)
MASQ EQU 22H
ORG 00H
;____________________________CONFIGURACIN_______________________________
_______________________
CONFI
CLRF STATUS
BSF
STATUS,RP0 ;Banco1
MOVLW
0xF0
MOVWF
TRISB
;Puerto B teclado
BCF
OPTION_REG,7 ;Conecta todas las resistencias Pull-Up
BCF
STATUS,RP0 ;Banco 0
CALL INICIA_PWM
;CLRF PORTC
CLRF PORTB
;_________________________________MAIN___________________________________
_________________
INICIO MOVLW
.127
MOVWF
CCPR2L
LOOP MOVLW
0xFF
MOVWF
MASQ
0xFF
CALL DETECTAR
SUBWF
MASQ,1
BTFSS STATUS,Z
GOTO LOOP
CALL CODIFICAR
MOVWF
DATO
puerto C
SUBLW 'A'
BTFSC STATUS,Z
GOTO INC
MOVF DATO,0
SUBLW 'B'
BTFSC STATUS,Z
GOTO DEC
GOTO LOOP
INC
INCFSZ CCPR2L,1
;Incremento Dutty Cicle
GOTO LOOP
GOTO DEC
DEC
DECFSZ CCPR2L,1
;Decremento Dutty Cicle
GOTO LOOP
GOTO INC
;___________________________________PWM__________________________________
______________
INICIA_PWM
BSF
STATUS,RP0
MOVLW
.255
MOVWF
PR2
;Establece periodo del
PWM
BCF
TRISC,1
;Pin C1 como salida
BCF
STATUS,RP0
CLRF CCPR2L
;inicializa Ciclo de Trabajo en cero
MOVLW
0CH
MOVWF
CCP2CON
MOVLW
06H
MOVWF
T2CON
;Habilita Timer 2
RETURN
;__________________________________TECLADO_______________________________
_______________
DETECTAR
CLRF
BTFSS
GOTO
BTFSS
GOTO
BTFSS
GOTO
BTFSS
GOTO
RETLW
PORTB
PORTB,7
REBOTE
PORTB,6
REBOTE
PORTB,5
REBOTE
PORTB,4
REBOTE
0x0
CALL
DELAY_20ms
REBOTE
;pausa de 20 milisegundos
BTFSS
RETLW
BTFSS
RETLW
BTFSS
RETLW
BTFSS
RETLW
RETLW
PORTB,7
0xFF
PORTB,6
0xFF
PORTB,5
0xFF
PORTB,4
0xFF
0x0
CODIFICAR
; Primera columna
MOVLW
0xF7
MOVWF
PORTB
BTFSS PORTB,7
RETLW '1'
BTFSS PORTB,6
RETLW '4'
BTFSS PORTB,5
RETLW '7'
BTFSS PORTB,4
RETLW '*'
; Segunda columna
MOVLW
0xFB
MOVWF
PORTB
BTFSS PORTB,7
RETLW '2'
BTFSS PORTB,6
RETLW '5'
BTFSS PORTB,5
RETLW '8'
BTFSS PORTB,4
RETLW '0'
; Tercera columna
MOVLW
0xFD
MOVWF
PORTB
BTFSS PORTB,7
RETLW '3'
BTFSS PORTB,6
RETLW '6'
BTFSS PORTB,5
RETLW '9'
BTFSS PORTB,4
RETLW '#'
; Cuarta columna
MOVLW
0xFE
MOVWF
PORTB
BTFSS PORTB,7
RETLW 'A'
BTFSS PORTB,6
RETLW 'B'
BTFSS PORTB,5
RETLW 'C'
BTFSS PORTB,4
RETLW 'D'
RETLW 0x00
;Es la tecla #?
;Retorna cdigo del #
;Activa la tercera columna
;y activa la columna 3,6,9,#
;Es la tecla 3?
;retorna cdigo del 3
;Es la tecla 6?
;retorna cdigo del 6
;Es la tecla 9?
;retorna cdigo del 9
;Es la tecla #?
;Retorna cdigo del #
;falsa alarma, no hay tecla presionada
DELAY_20ms
MOVLW
MOVWF
N
CONT1
ciclo externo
REP1 MOVLW
M
;(1) Carga dato M
MOVWF
CONT2
;(1) inicializa contador2
ciclo interno
REP2 DECFSZ
CONT2,1
;(1,2)Decrementa contador2 y escapa si
cero
GOTO REP2
;(2) si no es cero, repite ciclo interno
DECFSZ
CONT1,1
;(1,2)Decrementa contador1 y
escapa si cero
GOTO REP1
;(2) si no es cero repite ciclo externo
RETURN
;(2) regresa de esta subrutina
;_________________________________________________________________________
END
9. Conclusiones y recomendaciones: