Hallo, ich sollte zwei Byte an den AT90C51CC03 übertragen. Die Schnittstelle funktioniert soweit auch. Auf alle zu lesenden Parameter kann ich zugreifen. Leider habe ich ein Problem mit den zu schreibenden Werten. Byte 1 = Steuerzeichen Byte 2 = Wert für einen Port Ich empfange einen Wert. In em Fall 0xF8. Danach folgt das nächste Byte dies soll den in dem Fall den PORT0 ansteuern. Mit dem jetztigen Quellcode kann ich derzeit kein zweites Steuerzeichen empfangen. Im Register SUBF steht leider nur das erste Byte. Das Register SBUF kann ich auch nicht zurück setzen. Aus dem Datenblatt werde ich auch nicht so richig schlau. Bei vielen anderen MC-Typen habe ich ein Empfangs- und Senderegister. Gibt es da einen Trick? Grüße Ingo
1 | //*******************************************************************
|
2 | // Header und C-Unterprogramme einbinden
|
3 | //*******************************************************************
|
4 | |
5 | #include <AT89C51CC03.h> |
6 | #include <stdio.h> |
7 | #include "Warten_MS.C" |
8 | #include "USART.C" |
9 | #include "Info.C" |
10 | #include "ADW_Config.C" |
11 | |
12 | //*******************************************************************
|
13 | // Definitionen
|
14 | //*******************************************************************
|
15 | |
16 | #define True 1
|
17 | #define False 0
|
18 | |
19 | //*******************************************************************
|
20 | // Hauptprogramm
|
21 | //*******************************************************************
|
22 | |
23 | void main (void) |
24 | {
|
25 | unsigned char unc_RS232; |
26 | unsigned short int uint_ADW; |
27 | unsigned short int uint_P0; |
28 | unsigned short int uint_P2; |
29 | |
30 | P0 = 0x00; |
31 | P2 = 0x00; |
32 | Init_USART(usi_Baud); |
33 | Init_ADW(); |
34 | |
35 | |
36 | while(1) // Endlosschleife |
37 | {
|
38 | unc_RS232 = Get_Char(); |
39 | |
40 | switch (unc_RS232){ |
41 | |
42 | |
43 | case 0xF8: |
44 | SBUF = 0x00; |
45 | P0 = Get_Char(); |
46 | uint_P0 = P0; |
47 | printf("%.4u", uint_P0); |
48 | break; |
49 | |
50 | case 0xF9: |
51 | uint_P0 = P0; |
52 | printf("%.4u", uint_P0); |
53 | break; |
54 | |
55 | default: printf("NO COMMAND"); |
56 | break; |
57 | }
|
58 | |
59 | printf("\r\n"); |
60 | Warten_MS(1); |
61 | }
|
62 | }
|