Syntax-Highlighting für Sourcecode in den Beiträgen
Ich bin gerade damit beschäftigt, im Forum Syntax-Highlighting für BascomAVR, C und Assembler zu realisieren. Für Bascom und Assembler muß ich noch die AVR-spezifischen Befehle bzw. Instuction-Codes im Highlighter berücksichtigen (hat jemand eine gut zu verarbeitende Liste der Befehle für Bascom oder Assembler und kann mir diese zur Verfügung stellen? Dies würde mir sehr weiterhelfen ).
Syntax-Highlighting funktioniert bereits für allgemeine Basic- und Assembler-Befehle. Die Code-Zeilen werden am linken Rand automatisch fortlaufend nummeriert, so daß man sich leicht in Folgebeiträgen auf eine bestimmte Zeile des Codes beziehen kann, ohne nochmal den Code zitieren zu müssen.
Leider habe ich es noch nicht geschafft, daß man wie gewohnt komfortabel über einen "Code einfügen"-Button des Editors die notwendigen Anweisungen im Edit-Feld einfügen kann . Das werde ich aber noch in Angriff nehmen.
Dirk
Anweisung für Syntax-Highlighting
Beispiele:
CodeBox Bascom
CodeBox C
CodeBox ASM
Ich bin gerade damit beschäftigt, im Forum Syntax-Highlighting für BascomAVR, C und Assembler zu realisieren. Für Bascom und Assembler muß ich noch die AVR-spezifischen Befehle bzw. Instuction-Codes im Highlighter berücksichtigen (hat jemand eine gut zu verarbeitende Liste der Befehle für Bascom oder Assembler und kann mir diese zur Verfügung stellen? Dies würde mir sehr weiterhelfen ).
Syntax-Highlighting funktioniert bereits für allgemeine Basic- und Assembler-Befehle. Die Code-Zeilen werden am linken Rand automatisch fortlaufend nummeriert, so daß man sich leicht in Folgebeiträgen auf eine bestimmte Zeile des Codes beziehen kann, ohne nochmal den Code zitieren zu müssen.
Leider habe ich es noch nicht geschafft, daß man wie gewohnt komfortabel über einen "Code einfügen"-Button des Editors die notwendigen Anweisungen im Edit-Feld einfügen kann . Das werde ich aber noch in Angriff nehmen.
Dirk
Anweisung für Syntax-Highlighting
Code:
[B]Wenn jemand Syntax-Highlighting nutzen möchte, dann bitte vorerst
die Anweisungen wie in folgenden Beispielen manuell eingeben.[/B]
[B][COLOR=RoyalBlue]BascomAVR[/COLOR][/B]
[noparse][highlight=Bascom]
... BascomAVR-Sourcecode ...
[/highlight]
[/noparse]
[B][COLOR=RoyalBlue]
C[/COLOR][/B]
[noparse][highlight=C]
... C-Sourcecode ...
[/highlight]
[/noparse]
[B][COLOR=RoyalBlue]Assembler[/COLOR][/B]
[noparse][highlight=ASM]
... Assembler-Sourcecode ...
[/highlight][/noparse]
CodeBox Bascom
'##############################################################################
' Hauptprogramm
'##############################################################################
'Hier ist die Programmhauptschleife
Do
' Variante 1:
' Detektion der Taste über Interrupt, Signalisierung über globale Variable
' Auswertung der Tastenmatrix ausserhalb Interrupt und übergabe Tastencode
' über globale Variable.
#if Variante1
If Key_keypressed = True Then
' 50ms Zeit soll das Betätigen von zwei Tasten gleichzeitig vereinfachen
' -> wird benötigt für "Beschattung stopp" und "Licht aus"
' Außerdem dient die Zeit zum Entprellen der Tasten!!
Waitms Key_waiting
' Tastenmatrix auslesen (Achtung, gleichzeigiges Betätigen innerhalb Reihe problematisch)
Key_taste = Key_query_matrix() ' Abfrage der Tastaturmatrix
' Auswertung der Tastatur und Ausgabe
If Key_taste <> 0 Then
Print "Taste " ; Key_taste ' Anzeige der gelesenen Taste
End If
' globales Flag für Signalisierung zurücksetzen da Auswertung jetzt durchgeführt
Key_keypressed = False
' Nach Auswertung Tastatur für erneute Eingabe wieder freigeben
Gosub Key_enable_keyinterrupt
End If
#endif
' Variante 2:
' Detektion der Taste über Interrupt, Auswertung der Tastenmatrix innerhalb
' Interrupt, Signalisierung und Übergabe Tastencode über globale Variablen
#if Variante2
' Auswertung der Tastatur und Ausgabe
If Key_keypressed = True Then
If Key_taste <> 0 Then
Print "Taste " ; Key_taste ' Anzeige der gelesenen Taste
End If
' globales Flag für Signalisierung zurücksetzen da Auswertung jetzt durchgeführt
Key_keypressed = False
' Nach Auswertung Tastatur für erneute Eingabe wieder freigeben
Gosub Key_enable_keyinterrupt
End If
#endif
Loop
'## End Hauptprogramm #########################################################
CodeBox C
void uart_init(void) {
// Baudrate einstellen (Normaler Modus)
UBRRH = (uint8_t) (UBRR_BAUD>>8);
UBRRL = (uint8_t) (UBRR_BAUD & 0x0ff);
// Aktivieren von receiver und transmitter
UCSRB = (1<<RXEN)|(1<<TXEN);
// Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
CodeBox ASM
lcdws: ; WS-Befehl senden - Display Startadresse in r16
cbr r17,0b00011000
sbr r17,0b01100000
out portc,r17
out porta,r16
nop
nop
nop
rcall lcdex
rcall wait33u
ret