PTI Flashcards
Eigenschaften von PIC12F675 Mikrocontroller
- Kleiner Befehlssatz mit 35 Assemblerbefehlen
- Minimaler Komponentenbedarf
- Günstig
- Für kleine Anwendungen geeignet
- Einfache RISC Architektur
- Gute verfügbarkeit
- kostenlose IDE
Was sind die grundlegenden Komponenten eines Von-Neumann-Rechners?
- Steuerwerk
- Rechenwerk
- Hauptspeicher
- Ein-/Ausgabe-Einheit, die über ein Bussystem verbunden sind.
Was ist ein Adress-orientierter Speicher?
- Speicher, in dem Daten durch eine Adresse abgelegt und wiedergefunden werden können
- Zugriff auf Daten erfordert immer die Adresse.
Wo können Informationen in einem Rechnersystem abgelegt werden?
- RAM (Hauptspeicher)
- CPU
- ROM (Read-Only Memory)
- EEPROM (Electrically Erasable Programmable Read Only Memory)
- Cache
- Sekundärspeicher (HDD oder SSD)
Was ist ein Register und welche Typen gibt es?
- Speicherstruktur zur Speicherung binärer Informationen
- Es gibt Allgemeine-Register (zur Berechnung)
- Steuer-Register (zur Kontrolle von Befehlen).
- Adress-Register (Speichert Adressen)
- Status-Register (Zeigt Status von z.B. CPU)
- Daten-Register (Speichert Daten)
- Stackpointer (Zeig auf oberstes Element von Stack)
- Base Register (Für Addressierung in großen Datenstrukturen)
Welche Befehlsgruppen gibt es im Maschinenbefehlssatz?
- Transportbefehle
- arithmetische Befehle
- logische Befehle
- Bit-Manipulationsbefehle
- Schiebe- und Rotationsbefehle
- Programmsteuerbefehle.
Welche Informationen hat ein Maschinenbefehl
- den Opcode (Art der Operation)
- Operanden (Daten)
- Adressformat (Ort der Daten)
Welche Schritte umfasst der Von-Neumannsche Befehlszyklus?
„Fetch“ (Befehl holen), „Decode“ (Befehl decodieren), und „Execute“ (Befehl ausführen).
Wie unterscheidet sich ein Mikroprozessor von einem Mikrocontroller in der Informationsspeicherung?
Mikroprozessoren:
- verwenden RAM für alle Programmbefehle & Variablen
Mikrocontroller:
- Programmcode oft im unveränderlichen Flash-ROM gespeichert
Welche Registertypen sind im PIC12F675 verfügbar?
- W-Register (allgemeines Arbeitsregister)
- Statusregister
- Program Counter
- GPIO
- TRISIO-Register
Was sind Mnemonics in der Assemblersprache?
Symbolische Abkürzungen für Maschinenbefehle, z. B. movlw (move literal to W), addwf (add W and f), goto
Welche Adressierungsarten werden in der PIC-Assembler-Programmierung verwendet?
Direkte/absolute Adressierung und unmittelbare (Immediate-) Adressierung.
Wie wird ein Wert an eine Speicher-Variable zugewiesen?
- Wert wird zuerst ins W-Register geladen
- dann in die Speicher-Variable übertragen (z.B. f)
Wie funktioniert ein unbedingter Sprungbefehl im Assembler?
- Mit goto-Befehl
- Setzt PC auf Adresse des Sprungziels
Wie wird eine if-else-Struktur in Assembler realisiert?
- Mit Kombination von Prüf-Befehlen und Sprüngen, um bedingte Abläufe zu steuern
Was ist ein Unterprogramm und wie wird es im Assembler aufgerufen?
- Ist eine wiederverwendbare Befehlssequenz
- Wird mit call-Befehl aufgerufen und mit return beendet
Welche Debugging-Anzeigen sind in der MPLAB IDE nützlich?
- File Registers (SRAM-Speicher)
- IO-View
- Logic-Analyzer.
Wie kann man Speicherplatz für Variablen reservieren?
- Mit RES-Direktive
- Reserviert Speicher im RAM
- Weist Variable keinen Wert zu!
Welche GPIO-Pins des PIC12F675 werden für den I2C-Bus genutzt?
Pin GP5 für SDA (Serial Data) und Pin GP4 für SCL (Serial Clock).
Was muss bei der Nutzung der GPIO-Pins für den I2C-Bus beachtet werden?
- GPIO-Leitungen müssen als Ein- oder Ausgang konfiguriert werden,
- Es ist wichtig, die richtige Speicherbank zu wählen.
Transportbefehle (Daten verschieben)
- movlw k
- movwf f
- movf f, d
- movlw k
Funktion: Überträgt einen unmittelbaren Wert k (Literal) in das W-Register.
Beispiel: movlw D’10’ – Überträgt den Wert 10 ins W-Register. - movwf f
Funktion: Überträgt den Inhalt des W-Registers in das RAM-Register an der Adresse f.
Beispiel: movwf 0x20 – Überträgt den Wert aus dem W-Register ins RAM an Adresse 0x20. - movf f, d
Funktion: Überträgt den Wert aus dem RAM-Register f ins W-Register (d=0) oder in sich selbst (d=1).
Beispiel: movf 0x20, 0 – Überträgt den Wert an Adresse 0x20 ins W-Register.
Arithmetische Befehle (Rechenoperationen)
- addlw k
- addwf f, d
- sublw k
addlw k
Funktion: Addiert den unmittelbaren Wert k zum W-Register.
Beispiel: addlw D’5’ – Addiert 5 zum aktuellen Wert im W-Register.
addwf f, d
Funktion: Addiert den Wert im W-Register zum RAM-Register f und speichert das Ergebnis in f (d=1) oder W (d=0).
Beispiel: addwf 0x20, 0 – Addiert den Wert an Adresse 0x20 zum W-Register und speichert das Ergebnis in W.
sublw k
Funktion: Subtrahiert den W-Register-Wert vom Literal k und speichert das Ergebnis in W.
Beispiel: sublw D’10’ – Subtrahiert den W-Register-Wert von 10 und speichert das Ergebnis in W.
Logische Befehle
- andlw k
- iorlw k
- xorlw k
- andlw k
Funktion: Führt eine bitweise UND-Operation zwischen k und dem W-Register durch und speichert das Ergebnis in W.
Beispiel: andlw B’11110000’ – Führt eine UND-Operation zwischen W und 11110000 durch. - iorlw k
Funktion: Führt eine bitweise ODER-Operation zwischen k und dem W-Register durch.
Beispiel: iorlw B’00001111’ – Führt eine ODER-Operation zwischen W und 00001111 durch. - xorlw k
Funktion: Führt eine bitweise XOR-Operation zwischen k und dem W-Register durch.
Beispiel: xorlw B’10101010’ – XOR zwischen W und 10101010.
Bit-Manipulationsbefehle
- bsf f, b
- bcf f, b
- btfsc f, b
- btfss f, b
- bsf f, b
Funktion: Setzt das Bit b im Register bei Adresse f auf 1.
Beispiel: bsf 0x15, 3 – Setzt das vierte Bit (Bit 3) des Registers an Adresse 0x15 auf 1 - bcf f, b
Funktion: Löscht das Bit b im Register bei Adresse f, setzt es auf 0.
Beispiel: bcf 0x10, 1 – Löscht das zweite Bit (Bit 1) des Registers an Adresse 0x10. - btfsc f, b
Funktion: Prüft, ob Bit b im Register f 0 ist. Wenn ja, wird der nächste Befehl übersprungen.
Beispiel: btfsc 0x22, 5 – Überspringt den nächsten Befehl, wenn das sechste Bit (Bit 5) des Registers an Adresse 0x22 0 ist. - btfss f, b
Funktion: Prüft, ob Bit b im Register f 1 ist. Wenn ja, wird der nächste Befehl übersprungen.
Beispiel: btfss 0x18, 4 – Überspringt den nächsten Befehl, wenn das fünfte Bit (Bit 4) des Registers an Adresse 0x18 1 ist.
Schiebe- und Rotationsbefehle
- rlf f, d
- rrf f, d
- rlf f, d
Funktion: Verschiebt den Inhalt von f um ein Bit nach links. Speichert das Ergebnis in f oder W.
Beispiel: rlf 0x15, 1 – Verschiebt den Wert in 0x15 nach links und speichert das Ergebnis in 0x15. - rrf f, d
Funktion: Verschiebt den Inhalt von f um ein Bit nach rechts. Speichert das Ergebnis in f oder W.
Beispiel: rrf 0x10, 0 – Verschiebt den Wert in 0x10 nach rechts und speichert das Ergebnis in W.
Steuerbefehle (Programmfluss)
- goto label
- call label
- return
- retlw k
- goto label
Funktion: Unbedingter Sprung zu einer bestimmten Adresse oder einem Label.
Beispiel: goto START – Springt zur Speicheradresse des Labels START. - call label
Funktion: Springt zu einem Unterprogramm bei label und speichert die Rücksprungadresse im Stack.
Beispiel: call SUB_ROUTINE – Ruft das Unterprogramm SUB_ROUTINE auf. - return
Funktion: Beendet ein Unterprogramm und springt zur zuletzt gespeicherten Rücksprungadresse.
Beispiel: return – Beendet das aktuelle Unterprogramm. - retlw k
Funktion: Return from subroutine with literal in W. Speichert den Literal-Wert k in W und kehrt zum aufrufenden Programm zurück.
Beispiel: retlw D’5’ – Setzt W auf 5 und kehrt zum Hauptprogramm zurück.
Schleifen und Bedingungen
- decfsz f, d
- incf f, d
- decfsz f, d:
- Dekrementiert f. Wenn Ergebnis 0, wird nächster Befehl übersprungen. Ergebnis in f (d=1) oder W (d=0)
- incf f, d: Inkrementiert f. Ergebnis in f (d=1) oder W (d=0). (Wird nur 1 mal ausgeführt und stoppt)
Frage: Was ist der Ruhezustand auf dem I2C-Bus?
Im Ruhezustand sind sowohl die SDA- (Serial Data) als auch die SCL-Leitung (Serial Clock) auf HIGH.
“Wie wird das START-Signal im I2C-Protokoll erzeugt?”
Das START-Signal wird erzeugt, indem die SDA-Leitung von HIGH auf LOW wechselt, während die SCL-Leitung auf HIGH bleibt.
Wie funktioniert die Datenübertragung auf dem I2C-Bus?
Der Master gibt zuerst den SDA-Wert aus und erzeugt danach einen Impuls auf SCL, um die Daten zu senden.
Was ist ein ACK/NACK-Signal, und wie wird es erzeugt?
- ACK-Signal wird gesendet, wenn Empfänger (Master oder Slave) bestätigt, dass ein Byte korrekt empfangen wurde (SDA 1, SCL 0)
- NACK-Signal wird gesendet, wenn Empfänger das Byte nicht anerkennt oder die Kommunikation beendet (SDA 1, SCL 1)
- Wichtig: Signale werden nicht durch SCL-Impuls erzeugt, sondern durch Zustand der SDA-Leitung während des 9. SCL-Pulses
Welche I2C-Adressen hat der LM92 und wann werden sie verwendet?
0x97 für das Lesen (LM92_SLV_ADDR_RD) und 0x96 für das Schreiben (LM92_SLV_ADDR_WR) an den Sensor.
Welche Pins des PIC12F675 sind für SDA und SCL beim I2C-Bus zuständig?
SDA ist auf Pin 5 und SCL auf Pin 4 konfiguriert.
Wie werden SDA und SCL im Code angesprochen?
Konstanten wie SDA_PIN equ 05h und SCL_PIN equ 04h ermöglichen eine benutzerfreundliche Adressierung der Pins.
Welchen Temperaturbereich kann der LM92 messen und in welcher Auflösung?
Der LM92 kann Temperaturen von -55°C bis 150°C mit einer Auflösung von 0,0625°C pro Bit messen.