使用 CCP4 在 PIC18 上进行 PWM

PWM on a PIC18 using CCP4

我在 PIC18F45K22 上设置 PWM 时遇到问题。我可以使用 timer2 在 CCP1 上运行它,但我想使用 CCP4 和 timer4,因为我计划在其他地方使用 CCP1 和 timer2。

我正在用汇编代码 (mpasm v5.87)。我不确定为什么它不会在带有 timer4 的 CCP4 上使用,即使相同的代码适用于带有 timer2 的 CCP1。以下是我的代码,希望 PIC 天才能够发现我的错误。

    ; Set oscillator speed at 4 MHz
    bsf     OSCCON, IRCF0
    bcf     OSCCON, IRCF1
    bsf     OSCCON, IRCF2

    ; Initialize Port D
    clrf    PORTD
    clrf    LATD
    bsf     TRISD, CCP4

    ; Set up Timer 4
    clrf    T4CON
    clrf    TMR4

    ; Select timer4 for PWM
    bcf     CCPTMRS1, C4TSEL1
    bsf     CCPTMRS1, C4TSEL0

    ; Setup period of PWM
    movlw   .10
    movwf   PR4

    ; Configure CCP4CON for PWM
    ; CCP4M<3:0> = 11XX for PWM
    movlw   b'00001100'
    movwf   CCP4CON

    ; Set duty cycle at 50%
    movlw   .5
    movwf   CCPR4L

    ; Clear timer4 interrupt flag
    bcf     PIR5, TMR4IF

    ; Start timer4
    bsf     T4CON, TMR4ON

    ; RD1 as output
    bcf     TRISD, CCP4

我已经解决了这个问题。

我意识到 T4CON、TMR4、CCPTMRS1、PR4 和 CCPR4L 不在访问库中,而定时器 2 和 CCP1 的相应寄存器在访问库中。

我需要做的就是 select bank 15 和 MOVLB 0x0F