Einführung Mikrocontroller 89C4051
Transcrição
Einführung Mikrocontroller 89C4051
11. Übung (27.7.06, 13-15h) Elektronikpraktikum für Physiker - Prof. Brunner SS06 (Termin für Nachholer und Interessierte) Einführung Mikrocontroller 89C4051 1. Blinklicht / Frequenzgenerator a) Hausaufgabe: Machen Sie sich mit den Unterlagen zum Mikrocontroller 89C4051 vertraut. Arbeiten Sie vor allem Kap. 11 des Vorlesungsskripts als Übersicht und das für die Übung Wesentliche in den Dateien „atmel_architecture_89Cxx51.pdf“, „atmel_datasheet_89C4051.pdf“ (Pinbelegung) und „atmel_instructions_89Cxx51.pdf“ (Details zu einzelnen Befehlen) durch. Alle Dateien sind auf der CD unter \Vorlesung\Praktikum\Microcontroller\Dokumentation\. Besonders wichtig ist Pinbelegung, Adressierungsarten, interne Register, die Ausführungsgeschwindigkeit (der QuarzOszillator läuft im Praktikum mit 3 MHz) und die Funktion der folgenden 9 Befehle (Instructions): MOV Rn, #byte RR A CPL bit MOV A, #byte RL A DJNZ Rn,adr MOV direct,A JB bit,adr SJMP adr Versuchen Sie damit zuhause (mit etwas Ausdauer) die Funktionsweise der beiden kurzen Assembler-Programme „ph_08_01.s“ (zu Schaltplan A) und „ph_08_02.s“ (zu Schaltplan B) zu verstehen. Am Blattende sind Abdrucke der Programme. Verbleibende offene Fragen werden in der Übung besprochen. b) Beschalten Sie den Microcontroller 89C4051 mit PowerOn-Reset (RC-Glied), Taktgenerator (Quarz + Kondensatoren) und einer Leuchtdiode (Ausgabeeinheit) gemäß Schaltplan A. (Siehe auch Kap. 11.4 des Vorlesungsskripts) +5V +5V + 10µF 100nF 10k 20 10 Vcc GND 30pF 5 XTAL1 4 XTAL2 11 P3.7 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 1 GND +5V RST 3MHz 30pF 9 +5V 8 7 470 6 3 2 12 13 LED 14 15 16 17 18 19 Schaltplan A P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C4051 10µF Bsp. für Steckboard-Realisierung c) Zur Programmierung starten Sie die Entwicklungsumgebung WEPR2051 auf dem PC. Wählen Sie den Dateinamen (ph_08_01.s) und drücken Sie den EDIT-Button. Assemblieren Sie Ihr Programm (assemble) und testen seine Funktionsweise im Menüpunkt software simulation ... bis es zufriedenstellend funktioniert. d) Versorgen Sie das Programmiergerät mit +15V Betriebsspannung (Minilab) und schließen Sie es an den PC an (parallele Schnittstelle). Setzen Sie nun den Microkontroller 89C4051 in den Textool-Sockel (Orientierung beachten!). Kontrollieren Sie im Menüpunkt extended features ... / read signature bytes , dass der Baustein vom Programmiergerät korrekt erkannt wird. Programmieren Sie nun Ihr Programm in den Baustein (program uC) und testen seine Funktionsweise im Menüpunkt hardware simulation ... bis es zufriedenstellend funktioniert. e) Bauen Sie nun die Schaltung auf dem Steckboard auf. Benutzen Sie einen 20-poligen ICSockel für den Microcontroller um ihn einfacher einsetzen und wechseln zu können. Achten Sie auf die Orientierung (Pin 1) beim Einsetzen. Stellen Sie die Versorgungsspannung auf +5V bevor Sie diese anschließen. Bestimmen Sie die Frequenz des Blinklichtes mit mindestens 5% Genauigkeit. 2. Lauflicht mit wählbarer Richtung a) Erweitern Sie die Schaltung von Aufgabe 1 gemäß Schaltplan B auf 8 LEDs an P1.0-P1.7 und einen Taster (Eingabeeinheit), der P3.7 in geschlossenem Zustand an Masse (0V) legt. Verwenden sie für die LED-Vorwiderstände zur einfacheren Realisierung ein Widerstandsnetzwerk. b) Programmieren Sie den Microcontroller mit dem Programm „ph_08_02.s“ und testen Sie die Funktion wie unter 1.c) und d) beschrieben. Setzen sie dann den Controller wieder in die Schaltung ein und viel Spaß mit dem Lauflicht! Probieren Sie auch, die Geschwindigkeit zu verdoppeln, Muster durchlaufen zu lassen (dazu muss man nur 2 Zeichen im Code ändern! Welche?) , und ein „Knight-Rider-Lauflicht“ zu programmieren. +5V +5V + 10µF 100nF 10k 20 10 Vcc GND 30pF +5V 5 1 RST XTAL1 /** PH_08_01.s (Blinklicht) Programm-Code /*********************/ ORG 0 /* "origin", bewirkt, daß der folgende Code beginnend bei Adresse 0 in den Programmspeicher geschrieben wird*/ loop: CPL P1.0 MOV MOV DJNZ DJNZ R1,#0x0F4+1 R0,#0x24 R0,delay R1,delay 3MHz 30pF 4 11 4.7k 9 8 7 6 3 8x 470 8 LEDs 2 12 13 14 15 16 17 18 19 Schaltplan B XTAL2 P3.7 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 **/ AT89C4051 delay: SJMP /* invertiert Port-Bit P1.0 */ /* => LED an -> aus bzw. aus -> an */ loop /* wartet 0.5s */ /* zurueck zum Start */ /***********************************************************/ Berechnung Warteschleife: Osc.Frequenz = 3MHz DJNZ Rn -Befehl = 24t 0.5s: 0.5s * (3MHz / 24t) = 62500 mal DJNZ ausführen 62500 (dezimal) = F424 (hexadezimal) /***********************************************************/ /** PH_08_02.s (Lauflicht) Programm-Code /*********************/ loop: right: skip: delay: **/ ORG 0 /* "origin" setzt akt. Adresse auf 0 */ MOV A,#0xFE /* nur LED an Bit 0 ist an */ JB RL SJMP RR MOV P3.7,right A skip A P1,A /* Abfrage Port-Bit P3.7 */ /* P3.7 = 0: links rotieren */ MOV MOV DJNZ DJNZ R1,#0x0F4+1 R0,#0x24 R0,delay R1,delay SJMP loop /* P3.7 = 1: rechts rotieren */ /* Ausgabe von A auf Port P1 */ /* wartet 0.5s */ /* zurueck zum Start */ /***********************************************************/