Bascom Befehle für den
Atmega Mikrokontroller
|
Q | W | E | R | T | Z | U | I | O | P | Ü |
H
|
J
|
Ö
|
Ä
|
|||||||
Y
|
X
|
|
N
|
|
|
|
|
A | |
ABS | |
ADCSR Register zuständig für Analogeingänge |
|
ADMUX Register |
|
Analogeingang Testprogramm |
|
B | Baud |
C |
Call |
CHR |
|
Config
DCF77 |
|
Crystal |
|
D |
Data Direction Register |
Debounce | |
Deflcdchar | |
DECR |
|
E | Exit |
F |
Format |
For
next |
|
Fusing |
|
G |
Get RC5 |
GICR |
|
GIFR | |
Gosub | |
Goto |
|
I |
IF THEN |
INCR |
|
Input |
|
InputBin |
|
Interrupt |
|
K |
Kommentar |
L |
Lcd |
Left |
|
Len |
|
Load |
|
M |
MCUR Register |
MID |
|
P |
Ports |
Print |
|
Pulsein |
|
Q |
Quarz |
R |
Regfile |
Register ACSR |
|
Register ADCSR |
|
Register ADMUX |
|
Register GICR |
|
Register GIFR |
|
Register MCUR |
|
Register SREG |
|
Register TCCR1A |
|
Register TCCR1B |
|
Register TIMSK |
|
S |
Sfior |
Sim |
|
Sound |
|
String Variable |
|
Spc | |
T | Timer |
TIMSK |
|
Toggle | |
V | Val |
Variable | |
Version |
|
W |
Wait |
Waitkey | |
While....Wend |
Befehl
|
Syntax
|
Beispiel
|
Beschreibung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Arithmetische Operationen | +, -, *, /, ^ | Volt = Adcd * 0.00085190 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Logische Operationen | =, <, >, <=, >=, <>, NOT, AND, OR, XOR | |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bit-Operationen | NOT,
AND, OR, XOR, ROTATE, SHIFT |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$ | Syntax | Beispiel | Beschreibung | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$Baud | $Baud = 9600 | Die
Baudrate für RS232 ( Seriell- Schnittstelle )wird hier angegeben,
sie ist in der Hauptsache abhängig von der Taktfrequenz des Prozessors. Sie muss auch im Terminalprogramm angegeben sein, damit eine Synchrone Kommunikation über die Serielle Schnittstelle stattfinden kann. Wenn diese Anweisung benutzt wird werden automatisch die Digitalen Pin's als TXD und RDX eingestellt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$Crystal | $Crystal=16000000 | Die
Frequenz des externen Quarz wird hier angegeben, sie ist wichtig
für die internen Zeitabläufe und alle zeitkritischen Abläufe , wie Timer usw. In dem hier angegebenen Beispiel wird ein Quarz von 16 Mhz benutzt. Die Quarzgeschwindigkeit ist in der Hauptsache vom verwendeten Prozessor abhängig. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$Regfile | $regfile = "m32def.dat" | Die Anweisung bestimmt
Controllertyp,hier (AVR) Mega 32Damit wird eine Atmega
Spezifische Datei aufgerufen die sich im Verzeichnis " Bascom " befindet. In der unter anderem die Anzahl der Ports, usw angegeben ist. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
$SIM | $SIM | Mit dieser Anweisung werden während der Simulation
alle Pausen ignoriert also alle Anweisungen der Befehle Wait, bzw Waitms werden durch diese Anweisung missachtet um eine höhere
Simulationsgeschwindigkeit zu erreichen. Nicht vergessen anschließend das Programm neu zu Compilieren. Sollte nach der Simulation allerdings vergessen werden diese Direktive zu entfernen, kommt es zu sehr eigenartigen Effekte, weil dann ja im Programm Code keine Pausen mehr enthalten sind. Möglicherweise ist auf dem Display keine Anzeige mehr dargestellt, oder angeschlossene Leds leuchten nicht mehr , oder aber leuchten immer usw. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
A
|
Syntax
|
Beispiel
|
Beschreibung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ABS() | Var= ABS(variable2) | var : Eine Variable ( Integer , Long, oder Single), die den Absoluten Wert der Variable2 übernim |
Dim A as integer |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Analogeingang |
Testprogramm für Analogeingang am Atmega 8 Es wird am ADC.4 ein Spannung zwischen 0 und 5 Volt gemessen. Allerdings kann der Analogeingang ADC4 nur 256 Bit ausgeben, hingegen die anderen Eingänge 1024 Bit |
$regfile "m8def.dat" 'Definiert den Atmega als Atmega 8 $crystal = 3579545 'Gibt die Quarzfrequenz an in Herz '---------------------- I/O Konfig -------------------------------------------- Ddrd.5 = 1 ' Ausgang für Led setzen '------------------------------------------------------------------------------- $baud = 9600 ' für Funkempfang über UART Schnittstelle '------------------------------------------------------------------------------- Dim A As Word Dim Ad As Word ' Analogeingang '---------------------------- Konfuguration für Analogeingan ------------------- Portc.1 = 1 Admux = &B01110100 Adcsra = &B11100100 Do Wait 1 Toggle Portd.5 Print Adch Loop |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beispiel
|
Beschreibung
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bits | Dim Name As Bit | Ein Bit kann entweder 0 oder 1 sein und ist somit die Variable mit dem kleinsten Wertebereich. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Byte | Dim Name As Byte | Wertebereich: 0 bis 255 und alle Buchstaben des Alphabets (ausgenommen Umlaute + das ß) Name = 100 'setzt die Variable auf
100 Diese Bitfolge (Bitmuster) stellt die Zahl 100 dar. Ist das Bit unter
der entsprechenden Zahl gleich 1, wird die Zahl |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Call |
Call Test (Variable, Variable) |
Ruft eine Unterroutine
(Subroutine) Test auf mit der möglichkeit Variable zu
übergeben, wobei der Aufruf der Rountine vorher deklariert werden
muss. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
CHR() |
Print CHR (var) S= CHR (var) |
Wandelt eine Nummerische bzw. eine Konstante
Variable in einen String mit einer Länge von einem Zeichen. Bei
diesem Zeichen handelt sich um einen nummerischen Wert, der zwischen 0
und 255 liegt und einen ASKII Zeichen Code repräsentiert
Var ( Eine Nummerische Varable einer Nummerischen Konstante. s ( Eine String Variable) Wird eine Zeichen auf dem Bildschirm bzw. dem Lcd ausgegeben,
muß dieses zuvor mit der Funktion CHR() umgewandelt werden |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Cls | Cls | Löscht
das Display |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config ADC | CONFIG
ADC=single,prescaler=Auto,Reference=opt oder Config ADC=Single,Prescaler=Auto,Reference=Internal |
ADC: Ausführungsmodus
kann SINGLE bzw. FREE sein PRESCALER: Eine Nummerische Konstante für den CLOCK Teiler.Wählen Sie AUTO, damit der Compiler den besten Wert, abhängig vom (XTAL)Quarz erzeugt. REFERENCE: Einige Chips wie der M163 haben zusätzliche Rferenz Optionen.Der Wert kann auf OFF,AVCC bsw. INTERNAL gesetzt werden.Schauen Sie im Datenblatt nach den unterschiedlichen Zuständen. Siehe auch GETADC |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config DCF77 |
CONFIG DCF77 = pin , timer = timer Beispiel:Config Dcf77 = Pind.2 , Inverted = 1 , Timer = 1 , Debug = 0 , Check = 1 , Gosub = Sectic |
Dient
zum Empfang des Radio Funksignals (Funkuhr). Pin ist der Eingangspin an dem das Funksignal ankommt. Als Timer kann nur Timer 1 benutzt werden. Inverted=0 ist Standardwert und steht für ein nicht invertiertes Eingangssignal, somit steht 1 für ein invertiertes Eingangsignal. Debug Optional value to fill 2 variables with debug info. DEBUG is on when a value of 1 is specified. By default, DEBUG is off. This has nothing to do with other DEBUG options of the compiler, it is only for the DCF77 code! When 1 is specified the compiler will create 2 internal
variable named : bDCF_Pause and bDCF_Impuls. These values contain the
DCF pulse length of the pause and the impulse. In the sample these
values are printed. Check is 1 by default. The possible values are : 0 - The DCF-77 parity bits are checked. No other checks are performed. Use it when you have exceptional signal strength 1 - The received minutes are compared with the previous received minutes. And the difference must be 1. 2 - All received values(minutes, hours, etc. ) are compared with their previous received values. Only the minutes must differ with 1, the other values must be exactly the same. This value uses more internal ram but it gives the best check.
Use this when you have bad signal reception. Gosub The Sectic option will call a label in the main program every second. You have to insert this label yourself. You must also end it with a RETURN. The option is the same as used with |
Optionen [ INVERTED=inv, CHECK=check, UPDATE=upd, UPDATETIME=updtime , TIMER1SEC=tmr1sec, SWITCHPOWER=swpwr, POWERPIN=pin, POWERLEVEL = pwrlvl , SECONDTICKS=sectick ,DEBUG=dbg , GOSUB = Sectic ] |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config Keyboard | Config
Keyboard=PinX.Y,Data.Y, Keydata=Table |
Konfiguriert die GETATKBD() Funktion und
zeigt den genutzten Port Pin Die AT Tastatur kann mit nur 4 Leitungen angeschlossen werden:Clock,Data,GND,VCC. KeyBoard: Der Pin,der als Clock dient Data: Der Pin der als Data Input dient Keydata: Das Zeichen,das der Tastencode gefunden hat. Die AT Tastatur gibt den sogenannten Scasn-Code aus statt den üblichen ASCII Code, aus diesn Grund ist eine Übersetzungstabelle mit der Umsetzung erforderlich. Bascom berücksichtigt auch die Nutzung der gedrückten Tasten. Spezialtasten wie die Funktionstasten werden nicht unterstützt.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config Lcd | Config LCD = LcdType | Config LCD=16*2 LCD"Hallo" ' zeigt Hallo Konfiguriert das Lcd Display und überschreibt die Kompilereinstellungen, die z.B. in Bascom hinterlegt sind LCD Type gibt den Type des genutztenLCD's an z.B. 16*2 für 16Zeichen mal 2 Zeilen oder auch 40*4 oder 20*4 usw Wird diese Einstellung nicht vorgenommen, wird als Standarwert der Typ 16*2 angenommen.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DDR |
Data Direction Register |
Ddrd.5 = 1 |
Konfiguriert Pin d.5 als Ausgang |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Debounce | Entprellt
Tasteneingaben indem eine kleine Wartezeit integriert wird |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DECR |
Decr X |
Subtrahiert den Wert 1 aus der Variable X ( siehe auch INCR ) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Deflcdchar |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DIM | DIM var As {XRAM/SRAM/ERAM} type [AT location] [OVERLAY] |
DIM A as Byte |
Dimensioniert
A
als
eine
Variable
mit
einem
Speicherplatz
von
256 Byte. Eine Stringvariable benötigt zusätzlich noch eine Längenangabe DIM A as String * 10 In diesem Fall kann der String maximal 10 Zeichen lang sein. Bits können allerdings nur in den internen Speicher geladen werden.Die Optionale AT Angabe definiert wo die Variable im Speicher abgelegt werden soll. Wenn der Speicher schon belegt ist, wird der nächste freie Speicherplatz genutzt. Die OVERLAY Angabe benutzt keinen Variablen Platz Sie erzeugt einen Pointer ( Zeiger) . |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Do ......Loop |
Do .....Anweisung Loop (Until Bedingung) |
Do Print A ( gibt Variable A aus ) incr A ( erhöht Variable A um 1 ) Loop Until A=10 ( wenn Variable 10 erreicht hat verlasse Schleife) Alles was zwischen diesen beiden Anweisungen steht, wird immer wieder ausgeführt. Im Prinzip also unendlich. Daher kann auch die 'Stop'-Anweisung entfallen, da der AVR aus dieser Schleife nie heraus kommt. Die Schleife geht so lang zwischen DO und Loop, bis die Bedingung die hinter Until kommt richtig ist. Die Schleife kann vorzeitig mit dem Befehl "Exit Do " verlassen werden DO ..Loop Scleifen können auch ineinander verschachtelt sein. Es wird also erst eine Anweisung ausgeführt, dann wird überprüft ob diese Anweisung noch einmal ausgeführt werden soll. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
E |
Syntax
|
Beschreibung
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Echo | Die Einstellung ECHO ON gibt an, dass vom Befehl INPUT sofort nach dem Empfang eines Zeichens, dieses Zeichen zurück geschickt werden soll. Das ist die Standardeinstellung! Die Einstellung ECHO OFF gibt an, dass nichts zurück geschickt werden soll. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Exit | Exit For Exit Do Exit While Exit Sub Exit Function |
Mit EXIT kann eine Schleife jederzeit verlassen werden | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
F |
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Format | target=Format (source,"mask") | Formatiert einen Nummerischen String target=Eine Variable (String), die den formatierten String enthält. source= Der Ursprungsstring mask = Die Formatmaske für die Strinvarable. Wenn Leerzeichen in der Maske vorkommen, werden auch die Leerzeichen dem String hinzugefügt. |
DIM S as string *20 Dim I as Integer S="1234565" S=Format(s,"+") Print S S="123" S=Format(s,"00000") Print S S="12345" S=Format(s,"000.00") Print S S="12345" S=Format(s,"+000.00") Print S End |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
For
Next Schleife |
For A = 1 To 20 Portd.3 = 1 Waitms 8 Portd.3 = 0 Waitms 280 Next A |
Schleife wird 20 mal
durchlaufen,dann wird die Schleife verlassen A muss als Variable deklariert werden |
For T = -30 To 0 Locate 1 , 1 Lcd T Locate 1 , 7 Lcd "Sekunden" Locate 2 , 7 Lcd "Wartezeit" Locate 2 , 1 Lcd "V.2A" Waitms 1000 Cls Next T |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fusing |
Formatiert einen String, Byte oder Single Variable , damit
ist es möglich Zeichen oder Zahlen auf eine bestimmte Menge an Zeichen hinter dem Komma anzeigen zu lassen. Diese Anweisung kann auch in Verbindung mit dem "Print" Befehl verwendet werden |
Dim Variable 1 as Single Dim Variable 2 as String * 10 -------------------------------- Variable1 = 12345,1234 Variable2=fusing(variable1,"#.##") LCD Variable 2 ------------------------ zeigt das Ergebnis 12345,12 an oder als Ausgabe auf dem Display: Lcd Fusing(varable , "#.###") |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
oder einfach |
Lcd "A=" ; Fusing(analog1_strom , "#.###") |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GET RC5 |
' Pin für IR Empfänger angeben Config Rc5 = Pinc.4 Portc.4 = 1 ' PullUp aktivieren Enable Interrupts ' Globale Interrupts freigeben Dim Address As Byte , Command As Byte Dim Flag As Bit Flag = 1 Do '---------Infrarot Abfrage--- Getrc5(address , Command) If Flag = 1 Then Cls Locate 1 , 1 Lcd "Warte auf Signal" Flag = 0 End If If Address <> 255 Then Reset Command.7 ' Toggle bit zurück setzen Cls Locate 1 , 1 Lcd "Adress:" , Adress " Locate 2 , 1 Lcd "command:" ; Command Flag = 1 End If Loop |
Hiermit kann eine Digitaler IR Empfänger abgefragt werden. Der Atmega ist in der Lage das Signal direkt zu entschlüsseln. Allerdings muss dazu die Fernbedienung das RC5 Protokoll verwenden |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Goto |
Goto Test |
Springt zur Angegebenen Marke mit dem Namen
"Test" |
Goto Test ............ .......... Test: Hier wird hin gesprungen und das Programm weiter fortgeführt. |
Die Marke zu der gesprungen werden soll muss ein
Goto vorgesetzt werden z.B. Goto Test oder einfach durch ein Doppelpunkt gekennzeichnet werden Test: außerdem dürfen die Marken bis zu 32 Zeichen lang sein |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Gosub | Gosub label | Verzweigt in eine Unterroutine innerhalb einer Prozedur und kehrt zum Ausgangspunkt zurück. |
Goto Fortsetzen Routine: |
Label ist der Name der Sprungmarke, an dem das Programm fortgeführt werden soll .Die Gosub und Return Routine sind an jeder Stelle im Programm zulässig Die sprungmarken können bis zu 32 Zeichen lang sein und müssen wenn kein Gosub davor gesetzt wird mit einem Doppelpunkt abgeschlossen werden. (Variable die innerhalb einer Gosub Routine gesetzt werden, werden beim verlassen durch Return wieder auf Null gesetzt) ms |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if.......then
Else |
if Bedingung then else if bedingung then else end if |
Wenn die "if then" Anweisung in eine Zeile geht, dann kann man es so übernehmen, man kann auch hinter dem "then" mehrere Anweisungen schreiben. Die müssen dann allerdings durch einen Doppelpunkt von einander getrennt werden, und immer noch in einme zeile passen. |
if A = 10 then A=20 (Wenn A gleich 10 entspricht dann weise A den Wert 20 zu) oder Hier kann man unter "then" mehrere Anweisungen schreiben, muss diese dann aber mit "End if" abschließen. hier ist es etwas übersichtlicher gestaltet |
Immer
wenn die IF ...Then Anweisung mehr als eine Zeile umfasst, muss diese
Anweisung mit der Zeil " end if" beendet werde. So wird sichergestellt das der Interpreter das ende der Anweisung auch sicher erkennt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel: |
If Pind.2 = 0 And Pind.3 = 0 Then Toggle Portc.5 End If |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel: |
If Pinb.7 = 0 And Durschmesser > 0 Or Durschmesser < 0 Then Exit Do |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel: |
If Pind.2 = 0 Then Waitms 50 If Pind.2 = 0 Then Incr Stunde If Pind.2 = 0 Then Portd.7 = 1 Else Portd.7 = 0 End If End If |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel: |
If Porta.7 = 1 And
Porta.0 = 1 Then Takt1 = Takt1 + 1 Else Takt1 = Takt1 + 0 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel: |
If Pulszeit < 3 And Pulszeit > 1 Then Antwort = 1 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
INCR |
Incr X |
In der Variable X wird immer eine Increment also der Wert 1 hinzuadiert |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Input |
Der
Befehl INPUT erwartet eine Zeichenfolge aus dem UART und schreibt diese
in eine Variable. INPUT wartet so lange auf die Zeichenfolge bis CARRIAGE RETURN (CR) übermittelt wurde. Das Programm bleibt also stehen, bis CR über die UART rein kommt. Das ist ideal, wenn das Programm in der Hauptschleife nur kommuniziert. Es ist nicht ideal, wenn in der Hauptschleife auch noch andere Dinge erledigt werden sollen. Dafür gibt es andere Befehle wie INKEY oder ISCHARWAITING. Außerdem gibt es sogar die Möglichkeit einen Interrupt auslösen zu lassen wenn eine Zeichenfolge angekommen ist. Dieses Beispiel wartet bis eine mit CR abgeschlossene Zeichenfolge übermittelt wurde und schickt diese über die UART zurück: Dim Empfangen As String * 20 Do Input Empfangen Print "Empfangen: " ; Empfangen Loop End Mit CONFIG INPUT kann man einstellen welches unsichtbare Zeichen oder welche unsichtbare Zeichenfolge einen Empfang abschließt. Und mit ECHO OFF kann man einstellen, dass in ein Terminal eingegebene Zeichen nicht sofort wieder zurück geschickt werden. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
( Beispiel ) Input zum Einlesen über die RS232 Schnittstelle
$Baud 4800 ( Ermöglicht erst das einlesen über die Serielle Schnittstelle und gibt die Baudrate an)Dim Rs232_empfang As String * 255 ( Deklariert die Variable in der die Zeichen emfpangen werden sollen als Variable mit einer Größe von 255 Bit) Rs232_empfang = "" (stellt sicher das die Variable leer ist) Input Rs232_empfang (Emfangene Zeichen werden in Variable RS232 gespeichert ,aber nur wenn am PC auch Return gedrückt wurde) Select Case Rs232_empfang (Anfang der Auswerteschleife) Case "0" ( wenn Zeichen Null emfangen dann) Portd.5 = 0 ( Portd.5 aus schalten ) Print " Gelbe Led ausschalten" (Meldung an den PC (Terminalprogramm ) senden ) Case "1" ( Wenn Zeichen Eins empfangen wird dann ) Portd.5 = 1 ( Portd.5 einschalten) Print "Gelbe Led eingeschaltet" ( Meldung an den PC) End Select ( Ende der Auswertung) Beim Befehl INPUT wartet der Prozessor bis die Eingabe mit Return bestätigt wurde und läuft dann erst im Programmcode weiter, wenn das nicht gewünscht ist sollte mann anstatt INPUT den Befehl INKEY verwenden, damit wird die Variable in der Programmschleife abgerufen: Beispiel: Rs232_emfang = Inkey() (Sieht nach einem Zeichen) If Rs232_emfang > 0 Then Print Rs232_emfang (Wird irgend ein Zeichen empfangen dann soll Zeichen an PC übergeben werden) If Rs232_emfang = 50 Then Toggle Portd.6 ( 50 ist der Scancode der Taste 2) If Rs232_emfang = 51 Then Toggle Portd.7 (51 ist Der Scancode Der Taste 3) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Inputbin |
Dim My_word_var As Word Do Inputbin My_word_var Printbin My_word_var Loop End |
Bei
diesem Befehl wartet Bascom auf Binärdaten. Es wartet also nicht
auf Text, wie es INPUT macht, sondern auf reine Daten. An diesen Befehl
wird als Argument eine Variable übergeben. INPUTBIN stoppt das
Programm so lange, bis diese Variable befüllt wurde. Wird also
eine BYTE-Variable übergeben, dann genügt ein Byte und das
Programm läuft weiter. Wird eine WORD-Variable übergeben,
dann wartet INPUTBIN bis zwei Byte (=WORD) übergeben wurden.
Beispiel:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interrupt | GICR = General
Interrupt Control Register bei einigen Atmegas auch unter der
Bezeichnung GIMSK zu finden , hier können die Interrupt's
eingeschaltet und natürlich bei Bedarf auch ausgeschaltet werden. Beispiel: Portd.2 = 1(PullUp setzen) Portd.3 = 1( PullUp setzen) Gicr = &B11000000 (Interrupt 0 und 1 einschalten, Bit 6 setzt Interrupt 0- Bit 7 setzt Interrupt 1) Sreg.7 = 1 ( Interrupts Global freigeben) On Int0 Routine0 ( Namen der Routine festlegen) On Int1 Routine1 ( Name für Routine 1 festlegen) (Routine 0) Routine0: Portd.5 = 1 Waitms 100 Portd.5 = 0 Return ( Routine 1) Routine1: Portd.6 = 1 Waitms 100 Portd.6 = 0 Return |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Interrupt | SREG.7=1 | Interrupts
Global
freigeben als Direkte Registereingabe |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Enable Timer0 | Interrupt für Timer 0 freigeben | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
TIMSK.TOIE0=1 | Interrupt
für Timer 0 freigeben als direkte Registereingabe |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Inkey () |
Var=Inkey () Var=Inkey (#channe) |
Liefert einen ASKII Wert des ersten Zeichens im Seriellen Inputbuffer |
Dim A as Byte |
Var ( Byte,Integer,Word,Long,String) Channel (Eine Konstante Zahl, die den offenen Kanal im Software UART Modus identifiziert) Diese Funktion wartet nicht auf das Zeichen. Es wird eine Null zurück geliefert wenn kein Zeichen empfangen wurde. Nutzen die ISCharWaiting() Funktion , um zu prüfen, ob
ein Byte wartet. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ischarwaiting |
ISCHARWAITING gibt 1 zurück, wenn im UART-Buffer ein Zeichen wartet. ISCHARWAITING gibt 0 zurück, wenn kein Zeichen im UART-Buffer wartet. Beispiel: siehe INKEY |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Kommentar |
Wer sein Programm auch später noch richtig lesen und verstehen möchte, sollte seinen Quelltext exakt dokumentieren.Die Dokumentation kann man übersichtlich im Quellcode selbst erstellen. Dazu gibt es unterschiedliche Kommentarzeichen, die man dazu verwenden kann, normale Texte auszuklammern. In den Standardeinstellungen von BASCOM erscheint ein auskommentierter Text in Grün. Beispiel: ' Ich bin ein einzeiliger Kommentar REM Auch ich bin ein einzeiliger Kommentar ' ( Ich bin ein mehrzeiliger Kommentar, der immer länger und länger wird … ' ) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
LCD |
LCD "Test" | gibt "Test" im Display aus | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mann kann auch Variableninhalte im Display darstellen | Gibt Die Variable A aus dem Display aus incl deren Inhalt | Lcd "A=" ; A | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ebenso kann man auch die Werte der einzelnen Ports im Display anzeigen lassen | Lcd Pinb.0 ; Pind.7 ; Pind.6 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Cursor Off Noblink |
Schaltet den Cursor aus |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Mögliche
Fehler beim Anschluss eines Display: Fehlende Spannungsversorgung,
Datenleitungen vertauscht, oder im Programm nicht richtig zugeordnet. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Left |
Z = Left(textmenge , 2) |
Mit LEFT können Zeichen aus einer Variablen ausgelesen werden | Es werden hier aus der Variable "Textmenge" beginnen von LInks zwei Zeichen ausgelsen und in die Variable Z abgelegt |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Len |
Len |
Mit Len wird die Anzahl der Zeichen einer String Variablen ausgegeben |
Dim Textmenge As String * 10 Dim Textlaenge As Byte Textlaenge = Len(textmenge) LCD textmenge ( zeigt die Anzahl der Zeichen aus der Variable Textmenge an) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Load |
Load Timer , Value |
Lädt den angegebenen Timer mit einem Wert |
Load Timer0, 100 |
Der Timer kann nachdem er geladen wurde, nicht
erneut geladen werden. Wenn der Timer nach 10 Takte einen Interrupt
erzeugen soll kann die Funktion "Reload" verwendet werden. Ein 8 Bit
Timer kann mit dem Wert 0 bis 256 geladen werden. Soll also nach 10
Takte ein Interrupt erfolgen müssen wir von den möglichen 256
Takte 10 abziehen = 246 , und den Timer mit diesen 246 laden. Beim
Timer1 der ein 16 Bit Timer ist haben wir mögliche 65536 Takte. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Left() | Var= Left (String,length) | Liefert einen Wert Typ String,der eine bestimmte Anzahl von Zeichen ab dem ersten (linken) Zeichen einer Zeichenfolge enthält. |
Dim S as String * 30 S= ABCDEF SS= left(S,5) Print SS |
Var :
Der zugeordnete String lenght: Die Anzahl der Zeichen, die aus der linken Seite des Strings gelesen werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax | Beschreibung | Beispiel | Bemerkung | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
MID |
Z = Mid(textmenge , 2 , 1) |
List aus
einer Zeichenkette"Textmenge"ab den 2. Zeichen, ein Zeichen aus und
speichert das ausgelesene Zeichen in der Variable "Z" |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Ports & Pin's
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Port |
Beim Atmega
gibt
es
diverse
Ein/Ausgänge.
Diese
sind
jeweils
zu
8
Bit
zueinem
Port
zusammengefasst. Der Atmega 8 besitzt 3 dieser Ports. Die Ports hat man nach dem Alphabet benannt. Der AVR besitzt Ports mit den Namen PortB ,PortC und PortD. Beim Port C hat man die 8.Leitung nicht herausgeführt. Jeden Anschluss kann man entweder als Einzel Eingang oder Ausgang definieren oder man kann auch den gesamten Port als ganzes verwenden. Da jeder Pin noch eine Zweitfunktion besitzt,ist die Definition als Einzelpin sehr sinnvoll. Sobald die Direktive $Baud im Programm eingesetzt wird, hat sie Vorrang vor den Funktionen als normalen Ein oder Ausgängen und wandelt die normalen EIN/Ausgänge in einer Modem Schnittstelle mit den Anschlüssen TXD und RXD um. Beim Atmega 8 äußert es sich beispielsweise so, dass beim Einsatz der Direktive $Baud , obwohl Pin D.0 beispielsweise ein mit einer LED angeschlossenen und als Ausgang gesetzt Pin, dieser Ausgang zwar in seiner Funktion vorhanden ist, er aber nicht sauber schaltet, bei einer Betriebsspannung von 2,5 Volt schaltet Pin D.0 nur zwischen 1 und 2,5 hin und her. Sollte ein Display angeschlossen sein, kann man sich den jeweiligen Status der Ports mit folgendem Befehl (Lcd Portd.4) Anzeigen lassen. Es wird dann der jeweilige Zustand als 0 oder 1 angezeigt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DDRD = 1 | Hier wird der gesamte Port D als Ausgang definiert , die 1 gibt an das es sich um einen Ausgang handelt | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DDRD=&HFF oder DDRD=255 DDRD=&B11111111 |
Hier wird der gesamte Port D als Ausgang angegeben allerdings als Hexwert dargestellt als FF . sind gleich Dezimal 255 oder Binär 11111111 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config Portd = Output | Konfiguriert den gesamten Port als Ausgang . Im AVR wird dabei ein Register gesetzt,der Steuerelektronik des Ports wird damit gesagt,das es als Ausgang arbeiten soll. Das Register nennt man Datenrichtungsgegister (DDR = Data Direction Register) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Config Portb.1 = Output |
Konfiguriert nur den Port b.1 als Ausgang |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
PortC.0 = 1 oder PortC=255 oder PortC=&B11111111 |
Pin C.0 wird auf High geschaltet | Also der Interne PullUp Widerstand wird aktiviert | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Led Alias Portc.0 | Port C.0 wird als Variable Led abgeleg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
DDRC = &B00000001 | PortC.0 wird als Ausgang definiert , alle anderen , also Port C.1 bis C7 bleiben als Eingänge definiert | &B
Bezeichnet das der folgende Wert im Binärformat angegeben ist,
anschließend werden die 8 Bits des Ports angegeben, , die
Zählweise ist von rechts nach links gelesen , als rechts das Bit 0
, und das linke Bit ist das Bit 7 Mann solte alle POrts die als Eingang definiert sind , auf einen festen Bezugspunkt legen,auch wenn sie nicht benutzt werden, also entweder durch den internen PullUp Widerstand auf Plus legen, oder eben extern auf Masse legen . Weil diese Eingänge sonst einen undefinierten Wert annehmen können, und dadurch das Programm durcheinander bringen können. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Print var; "constant" | Sendet eine Ausgabe auf dem RS232 Port. Schreibt einen String in eine Datei. |
Dim a as Byte A=1 Print Hex (A)' Ausgabe in Hexformat
|
var:
Die Variable bzw. Konstante die ausgegeben werden soll. Um mehr als eine Variable in einer Zeile auszugeben darf ein Semikolon (;) benutzt werden. Wird die Zeile mit einem Semikolon beendet, wird der Zeile kein Wagenrücklauf hinzugefügt. Ist ein RS232 Gerät angeschlossen, kann die Print Anweisung genutzt werden..Das Rs232 kann mit dem Seriellen Port ihres PC's verbunden werden, auf diese Weise kann man ein Terminal Programm als Ausgabegerät benutzen. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Um beim Übertragen die Zeichen für LF
Zeielnsprung und Return zu ünterdrücken muss ein Strichpunkt ";" hinter
der Zahl angegeben werden Also nicht Print 1 sondern Print 1; |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beim Empfang der gesendeten Zahl 1 wird bei Lcd "Empfange=" ; Chr(x) die 1 angezeigt und bei und bei Locate 2 , 1 Lcd "Empfange=" ; X der Askii Wert 049 angezeigt. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Es wird vom Sender ein Signal mit folgenden Text übetragen "PIR" Beim Empfänger aber kommt es nicht als zusammenhängender Text an sondern Buchstabe für Buchstabe Also nicht als "PIR" sondern als "P" dann "I" dann "R" Offensichtlich wird immer nur ein Byte übetragen, und das bedeutet auch immer nur ein Zeichen, wenn dem so ist wird immer nur Zeichen nach Zeichen übetragen, und die müssen dann im Empfänger wieder zusammengesetzt werden. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pulsein |
Pulsein misst die Länge eines anstehenden Signal Pulsein Pulszeit , Pind , 5 , 1 wartet bis zur nächsten aufsteigender Flanke an Pin d.5 und stoppt bei der nächsten abfallende Flanke die Zeit wird mit einem 16 Bit Zähler erfasst und benötigt keinen Timer. Es wird die Zeit in 10us Schritte ausgegeben. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pulsein var,PINx,Pin,Status |
Pinx=Pinregister z.B. Pind Pin= Pin Nummer zB. 1 bis 7 Status= 1 für Messung von ansteigender Flanke zur nächsten Abfallende oder 0 für Abfallende Flanke zu nächsten Aufsteigende |
Dim Pulszeit As Byte Pulsein Pulszeit , Pind , 5 , 1 Lcd "Pulszeit=" ; Pulszeit |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Im ERR Flag wird eine 1 abgelegt wenn kein Signal eingeht |
Somit kann durch auslesen des Flags festgestellt werden ob ein Signal angekommen ist. Beispiel: if err=1 then lcd"kein Signal" |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Quarz |
Wie kann ich feststellen ob mein Quarz auch schwingt ? Am einfachsten , ich lass den Atmega mit seinen Stadardeisntellungen laufen, das wäre beim Atmega 8 z.B 1 Mhz dabei schreibe ich ein kleines Programm das nur eine Led ungefähr im Sekundentakt blinkt. Dann erst aktiviere ich den externen Quarz in dem ich die Fuse Bits einstelle. Habe ich beispielsweise ein 8 Mhz Quarz angeschlossen , sollte ab dann die Led mit 8 facher Geschwindigkeit blinken. Damit ist sichergestellt das der Atmega auch den Quarz erkannt hat und dieser auch schwingt Anschließend ändere ich die Christal Anweisung im Programm von $crystal = 1000000 ( Standardwert , muss nicht zwingend angegeben sein) auf $crystal = 8000000 Danach sollte die Led wieder im Sekundentakt arbeiten |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Register |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Register ADCSR |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Register ADMUX |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Register SREG regelt die Funktionen des Interrupt's |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Register GICR |
GICR = General
Interrupt Control Register bei einigen Atmegas auch unter der
Bezeichnung GIMSK zu finden , hier können die Interrupt's eingeschaltet und natürlich bei Bedarf auch ausgeschaltet werden. Es ist auch möglich die Externen Interrupts über die Software intern zu steuern, dazu muss der INT Pin als Ausgang deklariert sein, dann kann man den Pin über die Software auf High setzen mit Portd2=1 damit ist der Interrupt Flag gesetzt und wenn man ihn denn auswerten möchte wird er freigegeben mit Enable Int0 und ausgewertet. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Dieses Register ist zuständig um bei einem Interrupteingang fest zu legen ob der Interrupteingang bei aufsteigender oder abfallender Flanke reagieren soll. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SFIOR | SFIOR.PUD=1 | schaltet PullUps aller Pins ab | SFIOR=SpecialFunctionIORegister | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
SPC | SPC() oder PRINT SPC(x) oder LCD SPC(x) |
Wird zusammen mit der Print-Anweisung oder der Print-Methode verwendet um die Ausgabeposition
festzulegen
Syntax |
Dim S As String * 15 , Z As String * 15
Print "{" ; Spc(5) ; "}" '{ } Lcd "{" ; Spc(5) ; "}" '{ } |
Bemerkung: X: Die Anzahl der Blanks, die ausgegeben werden sollen Die Nutzung einer 0 für X ergibt einen String von 255 Bytes.Es findet keine Überprüfung für eine Länge der = Zuordnung statt. Die SPC Anweisung kann zusammen mit der LCD Ausgabe genutzt werden. Der Unterschied zur Space Anweisung ist der, daß Space eine Anzahl von Blancks zurückgibt, während SPC() nur für die Ausgabe genutzt werden kann. Die Nutzung von Space() mit einer Ausgabe ist ebenfalls möglich.Dabei wird allerdings der temporäre Buffer genutzt.Die SPC() Anweisung nutzt den tämporären Buffer nicht. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sound |
Sound Pin,Duration , Pulse Sound Portd.5 , 1004 , 83 Mit dem Sound Befehl kann man ganz leicht einen Ton an jeden X beliebigen Ausgangspin erzeugen. Dazu gibt man den Ausgangspin ,und die beiden Parameter für die Tonlänge (Duration)und Tönhöhe (Pulse) ein. Achtung der Sound ist abhängig von der verwendeten Taktfrequenz des Atmega's. außerdem werden die beiden Parameter abhängig voneinander, es ist also zuerst der Parameter "Puls" und abhängig von dessen Ergebnis der Parameter " Duration " aus zu rechnen. Die beiden Parameter müssen also wie folgt erst Berechnet werden.
Bei einer Frequenz von 1 MHz und pulse von 57 ergibt einer Tönhöhe von 1,4 KHz |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Eine weitere Möglichkeit der Tonausgabe besteht darin mit Hilfe des Timer1 die benötigte Frequenz zu erzeugen und diese dann an zwei mögliche dafür vorgesehene Ausgänge des Atmegas aus zu geben. Die dafür vorgesehenen Ausgänge sind am Atmega 8 , Pin15 (OC1A) und Pin 16 ( OC1B) folgende Anweisungen sind dafür nötig: TCCR1A=&B01000000. ' Toggelt OC1A also Atmega Pin15 TCCR1B=&B00001010 ' Timer resetten bei Compare , Clock/8 Compare1A=200 ' Vergleichswert angeben damit wird der Vergleichswert 200 mit dem Wert verglichen der sich aus der Taktfrequenz geteilt durch 8 ergibt. Die dann ausgegebene Frequenz berechnet sich bei einer Taktfrequenz von 1 000 000 Hz wie folgt: ((Taktfrequenz / Teilerfaktor) / 16 Bit) * Vergleichswert = (( 1 000 000 HZ / 8 )/ 65535)* 200 Ergebnis ca. 381 Hz |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
String Variable |
Der
Inhalt einer String Variablen kann nicht direkt für Rechen Operationen
verwendet werden, es ist also erforderlich das eine Stringvariable erst
in eine Variable einens anderen Typen umgewandelt werden muss. Ist z.B. folgender String vorhanden Dim S as String * 10 Dim T as Integer S= 123456 so muss dieser String folgendermaßen gewandelt werden um damit zu rechnen. T = Val(S) Print T |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax
|
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Timer |
Enable Timer1 | startet Timer 0 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel für Timer 0 wo bei folgende Vorgabewerte für folgenden Takt
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Toggle | Toggle Portb.0 | Invertiert den Zustand |
Dim a as word A = A + 1 If A = 60000 Then Toggle Portb.0 |
Wechselt den Zustand des Ausgangs jeweils beim Durchlauf von 0 auf 1 oder von 1 auf 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
V | Syntax | Beschreibung | Beispiel | Bemerkung | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Val |
B= Val(a) |
Wandelt eine Stringvariable in eine Zahl um |
Dim a as String*10 Dim B as byte A="42" B=Val(a) Print B |
String kann Buchstaben oder Zeichen enthalten |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variable |
Variablen-Namen In BASCOM-Basic-Variablen-Namen wird nicht zwischen Groß- und Kleinschreibung unterschieden. Außerdem ist der Unterstrich _ zugelassen. Dieser wird oft benutzt, um lange Variablen-Namen lesbarer zu machen. Schlüsselwörter wie If, While usw. dürfen als Variablen-Namen nicht verwendet werden. Globale Variablen und Funktionen dürfen nicht denselben Namen besitzen. Außerdem können Funktionen innerhalb des Bezugsrahmens einer lokalen Variablen nicht benutzt werden, wenn sie denselben Namen wie die Variablen besitzen. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Bit | 0 und 1 | Benötigt 1 Bit an Speicherplatz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Byte | 8 Bit = 256 Dezimal | Benötigt 1 Byte an Speicherplatz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Word | 0-65535 | Benötigt
2 Byte an Speicherplatz |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Integer | -32768 bis 32767 | Benötigt 2 Byte an Speicherplatz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Long |
-2147483648 bis
2147483647 |
Benötigt
4 Byte an Speicherplatz |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Single | 1,5*10 hoch
minus 45 |
Benötigt 4 Byte an Speicherplatz | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Double | Benötigt 8 Byte an Speicherplatz | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
String * n |
1 bis 153
Zeichen |
Benötigt
min. 2 Byte bis max. 254 Byte |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variable2=Variable1 |
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Single Variable kann man formatiert darstellen mit folgender Zeile: 'Lcd "U_min=" ; Fusing(spannung_min , "#.###") |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Pseudo Variable: Wenn 16 Bit Daten oder Adressen in Byte Variable abgespeicher werden soll oder muss kann man soegannnte Pseudo Variable erzeugen und so 16 Bit Daten in 2 Stück Byte Variable Speicher ablegen Dim Volt As Single At $95 Dim Volt_low As Byte At $95 Overlay Dim Volt_high As Byte At $96 Overlay Damit wird beispielsweise eine 16 Bit Variable ab Adresse 95 abgelegt , und belegt so Adresse 95 und 96. Oder auch umgekehrt kann ich aus beiden 8 Byte Overlay Variable eine 16 Bit Variable erzeugen |
Wird z.B. benötigt um Daten im Byte orientierten EEprom auch eine 2 Byte lange Variable abzulegen. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Version |
Version (1) |
Zeigt das Datum und die Uhrzeit der letzten Compilierung an: z. B Print Version (1) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Syntax |
Beschreibung
|
Beispiel
|
Bemerkung
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Waitkey() |
Var=Waitkey() Var=Waitkey (#channel) |
DIM A as Byte A= Waitkey() ' Wartet auf ein Zeichen Print A |
var:
Eine Variable,die den ASCII Wert vom Seriellen Buffer empfangen
hat.Kann eine nummerische bzw. String Variable sein. #channel: Der Kanal,der für die Software UART genutzt wird. |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Waitkey | Dim My_byte As Byte Dim My_string As String * 1 Do My_byte = Waitkey() Print "Empfangen: " ; My_byte 'Gibt den ASCII-Code des Zeichens zurück My_string = Waitkey() Print "Empfangen: " ; My_string 'Gibt den Text zurück Loop End |
Dieser Befehl wartet bis ein Zeichen über die UART zum µC übertragen wurde und gibt dieses zurück. WAITKEY blockiert so lange bis ein Zeichen übermittelt wurde. Wird eine BYTE-Variable damit befüllt, dann steht in der BYTE-Variable der ASCII-Code des übermittelten Zeichens. Wird eine STRING-Variable befüllt, dann weiß Bascom, dass der übermittelte ASCII-CODE ein Textzeichen ist und gibt dieses bei PRINT als solches zurück. Beispiel: | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Wait X | Wartet
eine gewissen Anzahl von Sekunden, wobei X durch die Anzahl der
Sekunden ersetzt wird ( 0-65535) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Waitms | Waitms 50 | Pause
von 50 Millisekunden -
"Waitms" lässt den Controller die angegebene Zahl an Millisekunden warten. In unserem Beispiel 50 = 0,05s. (0-65535) |
Fügt eine Pause ein | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
While ...Wend |
While Bedingung ...Anweisung Wen |
Wenn die Bedingung hinter "While" richtig ist dann springe in die Schleife sonst überspringe die Schleife. Schleifen können ineinander verschachtelt sein. Schleife wird erst ausgeführt wenn die Bedingung richtig ist |
While A< 10 ( Wenn A kleiner als 10 dann springe in die Schleife ) Print A ( Varable A ausgeben ) Incr A ( Variable A um 1 erhöhen ) Wend ( zurück zu While |
While Pind.4 <> 1 Gosub Anzeige Wend |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Beispiel: Ledtimer = Ledtimer + 1 While Ledtimer > 10 Portc.1 = 1 Waitms 10 Portc.1 = 0 Ledtimer = 0 Wend Die Ledtimer Variable wird bei jedem Durchlauf um den Wert von 1 erhöht Wen die Variable den Wert größer als 10 annimmt wird in die Schleife gesprungen un diese dann abgearbeitet. Die in der Schleife befindlichen Pausenzeiten werden somit nur bei jeden 10. Durchgang eine Verzögerung der Programmschleife verursachen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Hier einige Mathematischen Beispiele |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Aktualisierung 18.12.2022 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Copyright by Ms 2009 |