ITG-ABI 03/04 |
28.4.2004 |
Korrekturhinweise |
Oliver Mezger GBS Schwäb. Hall |
---|
An der GBS-SHA verwenden wir den MC von ATMEL AT90S2313. Infos dazu unter: http://mezmedia.de/avr/04-03-31_schnelleinstieg/index.html
Der MC hat 32 Register, d.h. kein Akku! Hier meine Musterlösung:
anfang: in R16,PINB ;Einlesen von PortB andi R16,0b001 1111 ;maskieren, ausblenden rcall umcodieren ;Unterprogrammaufruf rcall anzeigen ;Unterprogrammaufruf sbis PINB,7 ;Lese PortB,Bit7: Skip if Bit set, überspringen des nächsten Befehls wenn Bit=1 rjmp anfang ;somit Sprung wenn Bit=0 rcall speichern ;Unterprogrammaufruf rcall ruecksetzen ;Unterprogrammaufruf rjmp anfang ;unbedingter Sprung
Wichtiger Hinweis: Im Unterricht wurde Verzögerungsschleife behandelt, dabei wurden Register mit dem Wert 255 gesetzt, nicht mit 0!
Daher ist Lösung mit "ldi R.. ,255" auch OK! Hintergrund, die Lösungen wurden aus C abgeleitet und die Besonderheit 0-1=255 bei 8Bit war hierbei kein Lernziel.
|
1 + 1 + 2 + 3 * 256 * 256 + 3 * 256 + 2 + 4 = 197386 * 1µS &Mac197; 197 mS &Mac197; 0,2 S als Lösungsraum..
Hinweis: Als Risc-MC verarbeitet der AVR-Controller ca. 1 Befehl pro Takt! Somit gilt Zeit für 1MHz.
Vorab: Indirekte Adressierung wurde im Unterricht nicht deutlich behandelt. Wenn ein Schüler auf Lösungen mit X+ als Operand kommt,
könnte das schon als besondere Leistung betrachtet werden.
AVR ist 8 Bit Risc Controller. Es gibt 3 Indirect Address Register: X,Y,Z
Hier sei X (R27 & R26) verwendet:
.equ speicher = 0x60 ;Anfang des Ram ldi R26,low(speicher) ;low byte in R26 laden ldi R27,high(speicher) ;high byte in R27 laden ldi R16,13 ;Ergebnis 13 soll in den Speicherbereich geschrieben werden ldi R17,100 ;Anzahl der Datensätze schleife: st x+,R16 ;store indirect mit post-inkrement dec R17 ;R17-1 brne schleife ;solange >0 ret