Hallo, ich habe hier einen 8-Bit binärzähler. Ich möchte, sobald der
Port auf 255 steht. Also alle Pins von D auf high stehen, die Funktion
zum blinken aufrufen. Doch leider wenn ich das ausgeklammerte (die If
abfrage) einklammere (also nicht auskommentiere), dann dauert es eine
kurze zeit. Ich bekomme die erste LED an PORT D also PIN 1 auf high, und
dann geht garnichts mehr. Wo liegt mein Denkfehler?
Wenn er auf 255 hochgezählt hat, wird er automatisch mit dem nächsten
zähler auf 0 gesetzt. Das klappt auch soweit wennn ich die Ifabfrage
drausen lasse.
lg Tim
PS: Hier mein Code
1 | #include <p18f4550.h> // Pic .h eigebunden
|
2 | #include <delays.h> // delays.h eingebunden
|
3 |
|
4 | #pragma config FOSC = HS //Oscilator Art zwischen 4MHz - 20MHz
|
5 | #pragma config PWRT = ON // AN
|
6 | #pragma config BOR = OFF
|
7 | #pragma config WDT = OFF // Watch Dog AUS
|
8 | #pragma config LVP = OFF
|
9 | #pragma config PBADEN = OFF
|
10 | #pragma config VREGEN = OFF
|
11 | #pragma config MCLRE = ON // Master Reset AN
|
12 |
|
13 | #pragma code //Code soll in den Programmspeicher geschrieben werden
|
14 |
|
15 |
|
16 |
|
17 |
|
18 | unsigned char a=0; // Variable a wird deklariert und auf 0 gestezt
|
19 |
|
20 |
|
21 |
|
22 |
|
23 | void set (void) // Das ist die Funktion, die die neuen Bits an PORT D setzt
|
24 | {
|
25 | LATD=a; //Variable a wir auf den Port geschrieben
|
26 | }
|
27 |
|
28 | void blink (void)
|
29 | {
|
30 | a=0;
|
31 | Delay10KTCYx(50);
|
32 | a=255;
|
33 | Delay10KTCYx(50);
|
34 | a=0;
|
35 | Delay10KTCYx(50);
|
36 | a=255;
|
37 | Delay10KTCYx(50);
|
38 | a=0;
|
39 | Delay10KTCYx(50);
|
40 | a=255;
|
41 | Delay10KTCYx(50);
|
42 | a=0;
|
43 | Delay10KTCYx(100);
|
44 | }
|
45 |
|
46 | void main(void) // Haupt Routine
|
47 | {
|
48 | TRISD = 0; // Port D ist nun ein Ausgang
|
49 | TRISA = 0xFF; // Port A ist ein Eigang
|
50 | ADCON1 = 0x0F; // Alle Port Pins auf digital gesetzt
|
51 | CMCON = 0x07; // Komparatoreinänge deaktivieren
|
52 | LATD = 0x00; // Der PORT D ist von Anfang an auf 0 gesetzt
|
53 |
|
54 |
|
55 | while (1)
|
56 | {
|
57 |
|
58 | /*-----------------------------------------------------------------------------------------------
|
59 | if (a=0xFF) //Wenn der zähler bei 255 angekommen ist, dann wird blink aufgerufen.
|
60 | {
|
61 | blink();
|
62 | }
|
63 | -----------------------------------------------------------------------------------------------*/
|
64 |
|
65 | a++; // a wird hochgezählt
|
66 | set(); // Die Funktion Set wird aufgerufen
|
67 | Delay10KTCYx(100); // ein wenig Pause
|
68 |
|
69 |
|
70 |
|
71 | }
|
72 | }
|