Hallo zusammen ich finde den Fehler oder die Fehler nicht. Es soll das getan werden was jeder machen will mit einer PWM eine LED dimmen per Tastedruck. LED RB0 Taster RA4
1 | void main( void ) |
2 | {
|
3 | char richtung=0; |
4 | char x=0; |
5 | char null=0; |
6 | |
7 | |
8 | PR2=0xFF; // Frequenz der PWM jetzt maximal |
9 | CCPR1L=PR2>>1; // Setzen Duty Cycle 50:50 |
10 | TRISB=0b00000001; // Port B0 = PWM Ausgang |
11 | T2CON=0b01111111; // Bit 7 immer 0 ,Postscale Bit 6-3, Timer 2 an aus Bit 2 |
12 | // ,Prescale Bit 1-0
|
13 | CCP1CON = 0b1100; // Erweiterung auf 10bit Mode PWM mode; |
14 | // P1A, P1C active-high; P1B, P1D active-high
|
15 | |
16 | while(1) |
17 | {
|
18 | if(PORTAbits.RA4) // Taste RA4 gedrückt |
19 | {
|
20 | if(richtung) // Richtung |
21 | {
|
22 | if( ++CCPR1L == 0xFF) // Ist die niedrigste PW ereicht |
23 | {
|
24 | richtung=0; // wenn ja dann Richtungsänderung |
25 | }
|
26 | }
|
27 | else
|
28 | {
|
29 | if( --CCPR1L == 0x00 ) // Ist die oberste Erreicht PW erreicht? |
30 | {
|
31 | richtung=1; // wenn ja dann Richtungsänderung |
32 | }
|
33 | }
|
34 | }
|
35 | for( x=0; x<MAX_DELAY; x++) // MAX_DEL * 65 ms warten, |
36 | {
|
37 | null = 0; |
38 | while( ! null ); // endlos |
39 | }
|
40 | }
|
41 | }
|