DDR gibt die Datenrichtung vor. DDRA dann für Port A. Eine 1 ist gleich Ausgang und eine 0 gleich Eingang.
Du kannst mit X=PINA den Zustand eines gesamten Ports gleich der Variable X zuweisen. Ungenutzte PINs liegen in der Luft und können (machen sie auch...) mal eine 1 und mal eine 0 annehmen. Daher die UND Verknüpfung. X=X AND &B00011111. So wird sichergestellt, dass die oberen 3 Bits nicht gesetzt sind. Sonst könnten unerwartete / ungewollte Werte auftreten.
Den "Kopf" von Searcher brauchst Du dann nicht übernehmen. Ein Byte besteht aus 8 Bits. Wird X (oder z.B. Programmwahl) als Byte deklariert, dann hat es automatisch 8 Bits. Ein Port hat auch (bis zu) 8 Bits. Weniger evtl. bei kleineren Atmels oder wo die PINs eine alternative bieten, wie z.B. Anschlüsse für den Quarz. Das trifft bei den DIL 40 Atmels, wie in Deinem Fall hier, nicht zu. Also nicht verwirren lassen. Liest Du als den Port ein, werden alle 8 PINs in ein Byte gelesen und dessen Wert X zugewiesen.
Lesezeichen