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        &#59;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

[0] Índice de Mensajes

Ir a la versión completa