Gast
#29556
Hallo Ich habe ein Verständnisproblem bei der Zuweisung von Flags in General Purpose Registern, also im frei verfügbaren Datenbreich des PIC. Normalerweise wird mit dem "equ"-Befehl eine Variable (z.B. "Std") einem General Purpose Register wie z.B. 0x0D zugewiesen. --> Std equ 0x0D Soweit ok. Die Register mit noch kleinereren Adressen sind dann den Special Funktion Registern zugeordnet, z.B. FSR auf 0x04, STATUS auf 0x03. Jetzt habe ich aber schon oft gesehen, dass eigene Flags , also einzelne "1-Bit-Variablen" definiert werden. Das sieht dann so aus: minf equ 0x02 ; minute flag hourf equ 0x03 ; hour flag dayf equ 0x04 ; day flag Zugegriffen wird darauf so: bsf timef,hourf timef ist vorher als Register für die Flags definiert worden.. Also ist "hourf" ein neu definiertes Flag, und wie ein Bit im Register anzsprechen. Mein Problem: Wie kann man mit dem "equ"-Befehl eine Variable (z.B. Std) einem File-Register (z.B. 0x0D) zuordnen und gleichzeitig demselben Befehl ein Flag definieren? "dayf" wurde so z.B. auf Adresse 0x04 im File-Register "gelegt". FSR liegt aber auch auf 0x04 im File-Register. Wie kann das gehen? Woher weiss der PIC, dass ich mit z.B. "msecf equ 0x03" ein Flag definieren will und nicht das Status-Register meine? Woher weiss der PIC, dass ich ein Register und nicht ein Flag definieren will? oder umgekehrt. Kann mir jemand mal das Sytem erklären? Einen Quellcode von einer Uhr habe ich mal angehängt. Dort wird diese Art von Variablen bzw. Flag-Zuweisung verwendet. mfg Wolfram Hildebrandt