Hi all. After some experimentation, I've found that it's not the emulator that is causing the PWM problem - the same thing happens on the real chip too. I'm hoping someone can help me here, I'm stumped. What happens is this, on initilisation, the PWM starts off fine, both channels pump it out, correct duty cycle and all. When I go to change the duty cycle however, the output flatlines. But the ICEPIC shows all the registers are correctly set up. Here's the initialisation code : ; Setup PWM registers BANKSEL PR2 movlw 0x3F movwf PR2 BANKSEL TMR2 clrf TMR2 movlw 0x0E BANKSEL CCPR1L movwf CCPR1L ;clrf CCPR1L BANKSEL CCPR2L movwf CCPR2L ;clrf CCPR2L BANKSEL TRISC bcf TRISC,1 bcf TRISC,2 BANKSEL T2CON movlw 0x05 movwf T2CON BANKSEL CCP1CON movlw 0x0F movwf CCP1CON BANKSEL CCP2CON movwf CCP2CON PAGESEL MainLoop call MainLoop And here is the code that changes the duty cycle : BANKSEL PWM_Data movf PWM_Data,W BANKSEL CCPR1L movwf CCPR1L movlw 0x0F BANKSEL CCP1CON clrf CCP1CON movwf CCP1CON BANKSEL CCP2CON clrf CCP2CON movwf CCP2CON PAGESEL MainLoop goto MainLoop Anyone spot anything ? -- Mark Dennehy, B.A., B.A.I. Email : Mark.Dennehy@cs.tcd.ie Research Student, Computer Vision and Robotics Research Group, Computer Science Dept., Trinity College Dublin