Experimentierboard STK200
Die ersten Schritte können mit den STK200 Boards getan werden. An PortB sind 8 Leuchtdioden (LED) über jeweils einen Widerstand gegen VCC (5V) angeschlossen. Sie leuchten wenn der jeweilige Pin PB7..PB0 eine logische Null (0V) führt. An PortD sind 8 Taster mit GND (0V) verbunden. Wenn ein Taster gedrückt wird wird der jeweilige Pin PD7..PD0 auf Masse (0V) gezogen. |
Blockschaltbild eines PinsBefehle, die mit Ports zu tun haben
|
Wie I/0 Ports verwendet werden (Präsentation)
(Mit Pfeiltasten steuern) |
Initialisieren, Schreiben und Lesen von Ports
LED 0 und 3 sollen leuchten.include "tn2313def.inc";die spezifischen Konstanten des 2313 ldi R16,0b11110110 ;LED 0 und 3 leuchten out PORTB,R16 ;das Leuchtmuster einstellen ldi R16,0xff ;PortB als Ausgang out DDRB,R16 |
Einlesen der Taster und Ausgeben auf LEDldi R16,0xff out PORTB,R16 ;alle LED aus out DDRB,R16 ;PortB als Ausgang out PORTD,R16 ;bei PortD die Pull-ups anschalten loop: in R16,PIND ;PortD einlesen out PORTB,R16 ;an PortB ausgeben rjmp loop ;immer wieder |
Maskieren von Bits
Nun soll nicht mehr der ganze PortD übertragen werden sondern nur die untersten 4 Bit. .include "tn2313def.inc";die spezifischen Konstanten des 2313 laden .def tmp = R16 ;R16 als temporaeres Register .def tmp2 = R17 ;R17 als tmp Register init: ldi tmp,0x0f out PORTB,tmp ;LED3..0 sollen aus sein out DDRB,tmp ;PB3..0 als Ausgang out PORTD,tmp ;bei PD3..0 die Pull-up an loop: in tmp,PIND ;PortD einlesen andi tmp, 0b00001111 ;nur die 4 untersten Bits nehmen, die oberen sind nun 0 in tmp2,PORTB ;den Ausgang einlesen andi tmp2, 0b11110000 ;die oberen 4 Bits unberührt lassen, untere auf 0 or tmp2,tmp ;verheiraten oberes nibble aus tmp2 unteres nibble aus tmp out PORTB,tmp2 ;an PortB ausgeben rjmp loop ;immer wieder Mit and können Nullen erzeugt werden vermöge 0 and x = 0. Mit or kann gemischt werden vermöge 0 or x = x. |
Einfache Schaltnetze simulieren
Mikro-Controller bzw. Speicher-Programmierbare-Steuerungen (SPS) werden oft auch eingesetzt um Schaltnetze zu realisieren. Eine logische Funktion kann durch geschickte Abfolgen von Assembler-Befehlen simuliert werden.
Hinweis: Bei unserer Mikro-Controller-Beschaltung leuchten die LED bei 0 und gedrückte Taster erzeugen das Signal 0, man spricht hierbei von negativer Logik. Wen das zu sehr verwirren mag, kann die Eingaben leicht invertieren mit dem COM-Befehl (aus null mach eins). Für die Ausgabe empfiehlt es sich hier, die Port-Bit-Befehle SBI,CBI zu erwägen.
Logisches Und simulieren
Entwickeln Sie zwei unterschiedliche Assembler-Programme für die Funktion LED1 = S1 AND S2. Hierbei unberührte Ein- bzw. Ausgänge dürfen nicht tangiert werden! Lösung anzeigen..
Logisches Oder simulieren
Entwickeln Sie eine Lösung für die Funktionen LED1 = S1 AND S2 AND S3, LED2 = S3 OR S4. Hierbei unberührte Ein- bzw. Ausgänge dürfen nicht tangiert werden!
Aufgabe Abstimmanzeige
Eine Abstimmanzeige soll realisiert werden. Wenn ein Taster S gedrückt wird bedeutet das Ja.
- Bei einer Ja-Stimme leuchtet nur LED1
- bei zwei Ja-Stimmen leuchten LED1 und LED2
- bei drei Ja-Stimmen leuchten LED1, LED2, LED3 usw.
Entwickeln Sie ein Programm!