Gast
#1018995
Hallo, ich (Anfänger) gehe gerade das o.g. Tutorial durch und habe eine Verständnisfrage. Funktionieren wird der Code wohl, sonst stünde er hier ja nicht, also verzweifle ich gerade mit meinem C-Büchlein. Also:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
temp1 = temp1 >> 4; Soweit klar: Soll ein unsigned char um 4 Stellen nach rechts shiften; dadurch kommen von links Nullen nach und das höherwertige Nibble befindet sich nun im niederwertigen Nibble, da PD0 bis PD3 im höherwertigen Nibble DB4 bis PD7 des LCD entsprechen und zuerst übertragen werden. temp1 = temp1 & 0x0F; Verstehe ich inhaltlich schon nicht mehr, denn nach meinem bisherigen Verständnis kann sich der Inhalt von temp1 dadurch überhaupt nicht verändern (höherwertiges Nibble ist ja schon Null und niederwertiges Nibble wird mit 1111 verUNDet; ergibt das, was vorher schon im niederwertigen Nibble da war). LCD_PORT &= 0xF0; Hier wird DB0 bis DB3 auf Null gesetzt. Warum? Mit dem nächsten Befehl LCD_PORT |= temp1; wird doch sowieso das ins Register geschrieben, was in temp1 steht? Und hier hör ich lieber auf, denn wenn ich 2 Schritte hintereinander schon nicht verstehe, frage ich lieber nach. Danke und Gruß Lutz