1 | #pragma config OSC = HS // 14,7456 MHz
|
2 | #pragma config PWRT = ON // Power-On-Timer
|
3 | #pragma config WDT = OFF // Watchdog off
|
4 |
|
5 | #include <delays.h>
|
6 | #include <p18f258.h>
|
7 |
|
8 | // Ausgänge initialisieren
|
9 | void Ausgaenge_Init(void)
|
10 | {
|
11 | TRISCbits.RC3 = 0; // C3: LED rot
|
12 | TRISCbits.RC4 = 0; // C4: LED grün
|
13 | }
|
14 |
|
15 | // Eingänge initialisieren
|
16 | void Eingaenge_Init(void)
|
17 | {
|
18 | // A0: Fotowiderstand
|
19 | }
|
20 |
|
21 | // Funktion Pin C3 Ein- oder Ausschalten
|
22 | void Set_LED_rot(char status)
|
23 | {
|
24 | if(status) LATCbits.LATC3 = 1;
|
25 | if(!status) LATCbits.LATC3 = 0;
|
26 | }
|
27 |
|
28 | // Funktion Pin C4 Ein- oder Ausschalten
|
29 | void Set_LED_gruen(char status)
|
30 | {
|
31 | if(status) LATCbits.LATC4 = 1;
|
32 | if(!status) LATCbits.LATC4 = 0;
|
33 | }
|
34 |
|
35 | // UART initialisieren
|
36 | void UART_Init(void)
|
37 | {
|
38 | SPBRG = 3; // Baud Rate Generator Register, 57600 bd
|
39 | TXSTAbits.BRGH = 0; // High Speed Aus
|
40 | TXSTAbits.SYNC = 0; // Asynchroner Modus
|
41 | TXSTAbits.TX9 = 0; // 8-bit-Übertragung
|
42 | TXSTAbits.TXEN = 1; // Transmit Enable
|
43 | RCSTAbits.SPEN = 1; // RX und TX Pins aktivieren
|
44 | }
|
45 |
|
46 | void UART_Zeichen_senden(unsigned char zeichen)
|
47 | {
|
48 | while(!TXSTAbits.TRMT); // Warten, bis TXREG leer ist
|
49 | TXREG = zeichen; // Zeichen senden
|
50 | }
|
51 |
|
52 | void UART_Zeile_senden(char *zeile)
|
53 | {
|
54 | unsigned char c;
|
55 |
|
56 | // Solange senden, bis Stringende erreicht
|
57 | while((c = *zeile++))
|
58 | {
|
59 | // Einzelnes Zeichen senden
|
60 | UART_Zeichen_senden(c);
|
61 | }
|
62 | }
|
63 |
|
64 | int main(void)
|
65 | {
|
66 | // Ausgänge initialisieren
|
67 | Ausgaenge_Init();
|
68 |
|
69 | // Eingänge initialisieren
|
70 | Eingaenge_Init();
|
71 |
|
72 | // UART initialisieren
|
73 | UART_Init();
|
74 |
|
75 | // Ausgang C4 auf High
|
76 | Set_LED_gruen(1);
|
77 |
|
78 | // Hauptschleife
|
79 | while(1)
|
80 | {
|
81 | // Ausgang C3 auf high
|
82 | Set_LED_rot(1);
|
83 |
|
84 | // Warten
|
85 | Delay10KTCYx(64);
|
86 |
|
87 | // Ausgang C3 auf low
|
88 | Set_LED_rot(0);
|
89 |
|
90 | // Warten
|
91 | Delay10KTCYx(255);
|
92 |
|
93 | // UART Test
|
94 | UART_Zeichen_senden('M');
|
95 | UART_Zeichen_senden('I');
|
96 | UART_Zeichen_senden('C');
|
97 | UART_Zeichen_senden('R');
|
98 | UART_Zeichen_senden('O');
|
99 | UART_Zeichen_senden('C');
|
100 | UART_Zeichen_senden('H');
|
101 | UART_Zeichen_senden('I');
|
102 | UART_Zeichen_senden('P');
|
103 | UART_Zeichen_senden('.');
|
104 |
|
105 | UART_Zeile_senden("TECHNOLOGY.");
|
106 | }
|
107 |
|
108 | return 0;
|
109 | }
|