Aus RN-Wissen.de
Wechseln zu: Navigation, Suche
Laderegler Test Tueftler Seite

 
Zeile 12: Zeile 12:
 
*Die Funktion selbst
 
*Die Funktion selbst
  
===Getadc()===
 
  
 +
===Config ADC===
 +
CONFIG Adc = Single , Prescaler = Auto
 +
<pre>
 +
LDI r24,0x06
 +
OUT ADCSR,r24
 +
</pre>
 +
===Start ADC===
 +
START ADC
 +
<pre>
 +
SBI ADCSR,ADEN
 +
</pre>
 +
 +
 +
===Getadc()===
 
*Aufruf
 
*Aufruf
 
  DIM X AS WORD                  laut "''prog''.RPT"  an der Adresse 0x0063
 
  DIM X AS WORD                  laut "''prog''.RPT"  an der Adresse 0x0063

Version vom 8. Juni 2006, 09:00 Uhr

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


Autor

Benutzer:PicNick

Siehe auch


LiFePO4 Speicher Test