Hallo
Ich habe hier einen ATMega8 der über die UART Daten von einem anderen µC
bekommt. Die Daten sind Text (und Zahlen).
Ich zeige die empfangenen Daten in einem 16*2 Display an.
Ich will das in Bascom so programmieren, dass ich merke, wenn die
Zeichenanzahl>16 ist, damit ich in der zweiten Zeile des LCD
weiterschrieben kann, bzw wenn die Zeichenanzahl>32 ist gibt er eine
Rückmeldung, dass die Datenmenge zu groß ist.
Dazu müsste ich aber die Bytes einzeln empfangen. Wie ght das?
Mein derzeitiger Code ist folgender:
1 | $regfile = "m8def.dat" 'ATMEga8
|
2 | $crystal = 4000000 '4Mhz
|
3 | $baud = 9600
|
4 |
|
5 | Dim I As String * 32
|
6 | Dim P As Byte
|
7 | Dim X As Byte
|
8 |
|
9 | Config Serialin = Buffered , Size = 32 'RS232 mit 32 Zeichen Empfangspuffer
|
10 |
|
11 | Config Lcd = 16 * 2 'LCD 2 Zeilen, 16 Zeichen
|
12 | Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portd.7 , Rs = Portb.0 'LCD Pin-Config
|
13 | Config Lcdbus = 4
|
14 |
|
15 | Config Portc.5 = Output
|
16 | Portc.5 = 1
|
17 |
|
18 | Enable Interrupts
|
19 |
|
20 | Cls 'Lösche Display
|
21 |
|
22 | Do
|
23 | X = Ischarwaiting() 'Zeichen im Buffer?
|
24 | If X <> 0 Then
|
25 | Input I 'Lesen eines Zeichens
|
26 | Cls 'Lösche Display
|
27 | Locate 1 , 1 'Cursors setzten
|
28 | Lcd I 'Ausgabe auf Lcd
|
29 | End If
|
30 | Loop
|
31 |
|
32 | End
|
Ich hoffe mir kann jemand helfen.
Gruß Nils