;****************************************************************** ; Programm PWM-TEST_886 ; PIC 16F886, f = 4 MHz, SC = 1us ; Dieter Kohtz, April 2022 ;****************************************************************** #include org 0 ; Programmanfang bei PC = 0 goto main ;****************************************************************** init bank0 clrf PORTA clrf PORTB clrf PORTC bank1 movlw b'11111001' movwf TRISC ; RC1/2 = Ausgang (PWM) return ;****************************************************************** setpwm bank1 movlw 0xFF ; frequenzbestimmend movwf PR2 clrf PWM1CON clrf ECCPAS bank0 movlw b'00000101' ; TMR2 on, Prescaler = 4 movwf T2CON movlw b'00001100' ; PWM-Mode mit Standardauflösung 10 bit movwf CCP1CON movwf CCP2CON nop ; Initialwerte für die clrf CCPR1L ; duty cycle-Register clrf CCPR2L return ;********************************************************************* pause1 movlw .16 ; ca. 1 s Pause movwf ZAEHL basis clrwdt btfss INTCON,T0IF goto $-2 bcf INTCON,T0IF decfsz ZAEHL,f goto $-5 return ;************************************************************************ main call init call setpwm blink call pause1 ; Zwei LEDs blinken im Gegentakt clrf CCPR1L movlw .200 movwf CCPR2L ; LED1 an RC1 call pause1 clrf CCPR2L movlw .200 movwf CCPR1L ; LED2 an RC2 goto blink ;************************************************************************ end