Programación Específica > Microcontroladores
Usando El Pwm En El 16f876
(1/1)
Kain589:
Estoy intentando realizar este programa que usa el modulo pwm para encender un led aplicando una potencia creciente, cuando llegue a esta esperar 5 segundos y decremental hasta que la potencia se nula, esperando otros 5 segundos; es mas que todo para familiarizarme con el modulo pwm. El problema es que al ejecutarlo, pues no tiene el efecto deseado simplemente se enciende el led con poca potencia, ¿alguien sabe en que puedo estar fallando? gracias de antemano
--- Código: Text ---LIST P=16F876 #INCLUDE <P16F876.INC> PERIODO EQU 0ffh TEMPORAL EQU 020H TEMPORAL1 EQU 021H DELAY_CONT EQU 022H ORG 00H GOTO INICIO ORG 05H;USA PWM DESDE NULO A MAXIMO Y DECREMENTA HASTA NULADELAY MOVLW 4EH;(~.78) MOVWF TMR0DELAY_1 BTFSS INTCON,T0IF GOTO DELAY_1 BCF INTCON,T0IF DECFSZ DELAY_CONT,F GOTO DELAY RETURN INICIO CLRF PORTA CLRF PORTB CLRF PORTC BSF STATUS,RP0 BCF STATUS,RP1;BANCO1 MOVLW 06H;(00000110) MOVWF ADCON1 CLRF TRISA CLRF TRISB CLRF TRISC MOVLW 0C7H;(11000111) MOVWF OPTION_REG;TMR0 A 256 MOVLW PERIODO-1;CARGA PERIODO MOVWF PR2 BCF STATUS,RP0;BANCO 0 BSF PORTB,1;PRUEBABUCLE MOVLW 0CH MOVWF CCP2CON;CONFIGURA CCP2 EN PWM MOVLW 0ffh;MAXIMA POTENCIA DESEADA MOVWF TEMPORAL MOVWF TEMPORAL1 CLRF CCPR2L MOVLW 07H MOVWF T2CON;HABILITA Y PREDIVISOR A 16AUMENTA MOVLW 05H MOVLW DELAY_CONT CALL DELAY INCF CCPR2L,F DECFSZ TEMPORAL,F GOTO AUMENTA CALL ESPERADECREMENTA MOVLW 05H MOVWF DELAY_CONT CALL DELAY DECF CCPR2L,F DECFSZ TEMPORAL1,F GOTO DECREMENTA CALL ESPERADESACTIVAPWM CLRF CCP2CON GOTO BUCLE ESPERA ;RETARDO 5 S MOVLW 0fah MOVWF DELAY_CONT CALL DELAY RETURN END
Alternative:
Saludos
He trabajado con el modulo PWM en el PIC16F877, pero en el 876 la verdad no, no he checado el dataSheet, pero teoricamente no debe cambiar, te doy el codigo ASM de un programita sencillo, ya funcionandote ya puedes incrementar y decrementar la frecuencia.
Espero te sirva, si te sirve ahi me habisas
bye
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
LIST p=16f874
ESTADO EQU 0x03
PUERTOC EQU 0x07
T2CON EQU 0x12 ;control de timer2
PR2 EQU 0x12 ;periodo del timer2 (banco1)
CCP1CON EQU 0x17 ;modulo Captura/Comparación/PWM
CCPR1L EQU 0x15 ;parte alta del duty cycle
org 0
goto inicio
org 5
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
inicio bsf ESTADO,5
bcf PUERTOC,2 ;C.2 sale la señal PWM
movlw 0x18 ;Frecuencia de 33 Khz=0x1D
movwf PR2 ;periodo del PWM
bcf ESTADO,5
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
movlw 0x2C ;Empieza en el bit4 y bit5 para el ciclo de trabajo,bit0-bit3 modo de funciponamiento
movwf CCP1CON ;duty cycle, PWM off ciclo de trabajo
movlw 0x0C ;0x0F
movwf CCPR1L ;duty cycle
movlw 0x04 ;(bit2) on timer2, (bit0, bit1)prescaler
movwf T2CON
espera goto espera
end
Alternative:
Saludos
te adjunte el archivo, lo que pasa que queda muy desodenado y es poco entendible
bye :hola:
Kain589:
Pues muchas gracias, habia dejado un poco de lado el tema por los examenes y ahora que los acabo ya puedo ponerme con las pruebas
Navegación
Ir a la versión completa