.. ich versuche mich mal am Assembler Teil: ..
Danke für Deine Mühe, das hilft mir schon mal etwas weiter. Die eigentlichen Assemblerbefehle hatte ich schon aus dem Studio4 rausgelesen; die hatte ich zwar nicht parat, aber in meinen AVR-Anfangszeiten hatte ich wenige, einfache Aufgaben (z.B. Servotester mit Potiabfrage etc) in Assembler programmiert. Daher sagten mir zB sbiw oder brne schon etwas. (Es gibt auch noch Rudimente zu 8086- oder Z80-Assembler . . . aus der Studienzeit).
Code:
;Auszug aus Servotester; beispielhaft
mc_init: ;=== Initialisiere Mikrocontroller
; PB0 (servo1) + PB3 (servo2) = Ausgang, PB4 (poti1) = ADC-Eingang
ldi r16,0b00001000 ;Ausgang (1) auf PB3, Eingang (0) auf PB4
out ddrb,r16 ;Datenrichtungsbits setzen, Port ist Ausgang
ldi r16,0b11100111 ;Datenrichtungsbits setzen
out portb,r16 ; und initialisieren
ret ;=====----->>>>>
Unverständlich sind mir noch Zahlendarstellung dieser Art : rjmp .+8 , brne .-4 , brne .-12.
Ebenso unverständlich ist mir noch der Zusammenhang zwischen Assemblercode und Kommentar wie hier :
........rjmp .+8 ; 0x40 <__SREG__+0x1>
........brne .-4 ; 0x3a <__CCP__+0x6>
........brne .-12 ; 0x38 <__CCP__+0x4>
SREG hatte ich in der Studio4-Assemblerhilfe gefunden, ist klar. CCP dagegen gibts weder im Instruction Set Summary der Controllerdokumentation noch in der Studio4-Hilfe.
Lücken über Lücken - auch die Zeilen
........sbiw %0,1
........\n\t
........brne 1b
........: "=w" (__c) : "0" (__c)
sind geheimnisvoll.
Ich sehe, dass ich sehr umfassende Wissenslücken zu Assembler habe. Daher sollte ich die Titelfrage ändern in: Wo kann man diese Fragen - und alle sonstigen Feinheiten - zu Assembler lernen? Buch? (www-)Tutorial? oder . . .
Danke für die Aufmerksamkeit
Lesezeichen