Inhaltsverzeichnis
Bascom Inside-Code
Für den allgemein Interessierten und für Power-User, die ihr Bascom-Programm mit etwas Assembler-Code aufpeppen möchten, stelle ich recht zwanglos einige Assembler-Codeschnipsel zusammen mit den zugehörigen Bascom-Statements zur Verfügung.
Die meisten Beispiele könnte man mit Inline-Assemler direkt ersetzen, wenn man mal probieren wollte, man muß natürlich auf Daten- und Labeladressen aufpassen
Die meisten Bascom-Funktionen ergeben im Code dann folgende Teile:
- Der Aufruf
- die Vorbereitung, also das Laden von Registern mit den konkreten Argumenten,
- einen Call auf den eigentliche Funktions-code
- das Abliefern des Ergebnisses
- Die Funktion selbst
Config ADC
CONFIG Adc = Single , Prescaler = Auto
LDI r24,0x06 OUT ADCSR,r24
Start ADC
START ADC
SBI ADCSR,ADEN
Getadc()
- Aufruf
DIM X AS WORD laut "prog.RPT" an der Adresse 0x0063 X = GETADC(0)
ergibt folgenden Code:
LDI r24,0x00 ADC-Kanal-Nummer nach Register 24 OUT ADMUX,r24 in den ADC-Multiplexer CALL L_0x00F6 Aufruf der getadc-funktion LDI XL,0x63 laden der Ergebnisadresse (DIM X AS WORD) LDI XH,0x00 ST X+,r24 Speichern ergebnis (R24:r25) in "X" ST X,r25
- Funktion
L_0x00F6: SBI ADCSR,ADSC Starten der 1. Konversion L_0x00F8: SBIC ADCSR,ADSC Fertig ? RJMP L_0x00F8 nein, Loop1 SBI ADCSR,ADSC Starten der 2. Konversion L_0x00FE: SBIC ADCSR,ADSC Fertig ? RJMP L_0x00FE nein, Loop2 IN r24,ADCL Ergebnis auslesen r24:r25 IN r25,ADCH RET fertig