Pwm bombilla

Solo disponible en BuenasTareas
  • Páginas : 5 (1003 palabras )
  • Descarga(s) : 0
  • Publicado : 16 de junio de 2011
Leer documento completo
Vista previa del texto
;
; ===================================================================
;
; ===================================================================
;
; ZONA DE DATOS **********************************************************************

LIST P=16F887
INCLUDE

CBLOCK 0x0C
GuardaOffset
ENDC

; ZONA DE CÓDIGOS ********************************************************************; REGISTROS DE TIEMPO Y FRECUENCIAS **************************************************

CTL EQU 0x23
CT EQU 0X24
CONT1 EQU 0X25
CONT2 EQU 0X27
PRESC EQU 0X28
FREC EQU 0X29
CONT EQU 0X26
CONTC EQU 0X30
REG1 EQU 0X31
REG2 EQU 0X32
REG3 EQU 0X33

org 0x0000
GOTO inic
org 0x0004 ;vector de interrupción
GOTO interr ;salta a la rutina de atención a la interrupción
inicCLRF FREC
CLRF PRESC
MOVLW 0X20 ;le doy un valor cualquiera a CONT1 para cuando decremente al inicio no de cero
MOVWF CONT1
BSF STATUS,RP0 ;Banco
BSF STATUS,RP1 ; 3
movlw 0x00
movwf ANSELH
BCF STATUS,RP1 ;Banco 1
movlw 0xF0
movwf IOCB ;Configura los 4 bits altos como interrupción

movlw 0xFF
movwf TRISB ;Configura puerto B como entrada
movlw 0x00
movwf TRISC;Configura puerto C como salida
movlw 0x00
movwf TRISD ;Configura puerto D como salida

movlw b'11000000'
movwf OPTION_REG ; Interrupción INT se activa por flanco de SUBIDA y pull-up puertoB

inint
MOVF FREC,W ;carga periodo
BSF STATUS,RP0 ;Banco1
MOVWF PR2 ;lo establece para el PWM
BCF STATUS,RP0 ;Banco0
CLRF CCPR2L ;inicializa Ciclo de trabajo en cero
CLRF CTL;inicializa CTL de 8 bits en cero
movlw 0x0B
movwf CONTC ;inicializa CONTC a la cantidad inicial
call tabla ;pongo el display con el valor O
movwf PORTD
MOVF PRESC,W ;configura Timer 2
MOVWF T2CON ;carga preescalador, habilita Timer 2
DECFSZ CONT1 ;pregunto si es el inicio del programa o si hemos cargado los parametro de un modo
GOTO seguir ;seguimos el inicio del programaGOTO finint ;finalizamos el cargado de los parametros
seguir movlw b'10011000' ; Habilita la interrupción INT y la general.
movwf INTCON
BSF CCP2CON,CCP2M3 ;Configura el modulo CCP2 para operación PWM
BSF CCP2CON,CCP2M2 ;en este punto la salida PWM tiene un Ciclo de trabajo CT=0
;**** a continuación actualiza la parte alta del CT real
espero
goto espero;************************************************************************************

;*************************************************************************
interr BTFSS INTCON,0 ; salta si la interrup. es por RB4-RB7
GOTO sub ; sino, es por RB0 y lo atiende
GOTO rutpb ;se va a la rutina RB4-RB7 de cual es y los atiende
sub goto esmax
sigsub movf CONTC,W ; actualiza
call tabla ; el
movwf PORTD ;display
MOVF CT,W
ADDWF CTL,1;incrementa parte baja de la copia de CTL
MOVF CTL,W ;si no se ha presionado obtiene copia de CTL parte baja
MOVWF CCPR2L ;actualiza parte baja del CCPR2L
sig2sub BCF INTCON,INTF
RETFIE
rutpb BTFSS PORTB,4
GOTO b5
goto esmin
sigbaj movf CONTC,W ; actualiza
call tabla ; el
movwf PORTD ; display
MOVF CT,W
SUBWF CTL,1 ;decrementa parte bajade la copia de CTL
MOVF CTL,W ;si no se ha presionado obtiene copia de CTL parte baja
MOVWF CCPR2L ;actualiza parte baja del CCPR2L
sig2baj GOTO finint
b5 BTFSS PORTB,5
GOTO b6
bcf PORTC,4
bcf PORTC,5
bsf PORTC,3 ;enciende el LED del modo1
MOVLW 0X96 ;cargo los parametros del modo 1
MOVWF FREC
MOVLW 0X06
MOVWF PRESC
MOVLW 0X0F
MOVWF CT
MOVLW 0X01
MOVWF CONT1goto inint
b6 BTFSS PORTB,6
GOTO b7
bcf PORTC,3
bcf PORTC,5
bsf PORTC,4 ;enciende el LED del modo2
MOVLW 0XFA ;cargo los parametros del modo 2
MOVWF FREC
MOVLW 0X04
MOVWF PRESC
MOVLW 0X19
MOVWF CT
MOVLW 0X01
MOVWF CONT1
goto inint
b7 BTFSS PORTB,7
GOTO finint
bcf PORTC,3
bcf PORTC,4
bsf PORTC,5 ;enciende el LED del modo3
MOVLW 0X32 ;cargo los parametros del...
tracking img