Hier der Code:
Bitte berücksichtigen, dass es mein erstes Programm mit Bascom und auch mit einem µC ist
LG
Karl
Bitte berücksichtigen, dass es mein erstes Programm mit Bascom und auch mit einem µC ist
Code:
'---------------------------------------
'DAS IST MEIN ERSTES TESTPROGRAMM MIT BASCOM
'Autor: Karl Weber
'Titel: Testprogramm.bas
'Datum: 12. Mai 2008
'---------------------------------------
$regfile = "m8def.dat"
$crystal = 8000000 'Oszillator 8 MHz
Config Lcd = 16 * 2 'LCD Display mit 2x 16 Zeichen
Config Pinb.0 = Input 'Portpin B 0 = Start
Config Pinb.1 = Input 'Portpin B 1 = Stop
Config Pinb.2 = Input 'Portpin B 2 = Reset
Config Pinb.3 = Input
Portb = 255 'Pullup
'Variablendeklaration
Const Reload = 78 'Preload-Wert für Timer0 (10ms Interrupt)
Dim Hs As Word 'Variable für Hundertstel Sekunden
Dim S As Integer 'Variable für Sekunden
Dim Go As Integer
Dim Loopcnt As Integer 'Variable zum Zähler der Haupt-Schleifen-Durchläufe
'Initialisierung
Hs = 0
S = 0
Go = 0
Loopcnt = 0
Config Timer0 = Timer , Prescale = 1024 'Timer 0 mit Prescaler 1024 (32,768ms)
Stop Timer0 'Timer0 wird standardmäßig gestoppt
On Timer0 Timer0_isr 'Sprung Timer0 Interrupt Serviceroutine
Enable Timer0 'Timer aktivieren
Enable Interrupts 'Interrupts aktivieren
'LCD Löschen
Cls 'Cursor verbergen
Cursor Off Noblink 'Ausgabe auf obere Zeile LCD
Upperline 'Statischer Text
Lcd " FEUERWEHR" 'Ausgabe auf untere Zeile
Lowerline 'Statischer Text
Lcd "GR.HARTMANNSDORF" '1 Sekunde warten
Waitms 2000
Cls 'LCD löschen
Upperline 'Ausgabe auf obere Zeile
Lcd " Kuppelcup" 'Statischer Text
Lowerline 'Ausgabe auf untere Zeile
Lcd " Stop-System" 'Statischer Text
Waitms 2000 '1 Sekunde warten
Cls 'LCD löschen
Do 'Beginn Main-Loop
Upperline 'Ausgabe obere Zeile
If Pinb.0 = 0 Then 'Starte Timer0 (Taste Start)
Start Timer0
End If
If Pinb.1 = 0 Then 'Stoppe Timer0 (Taste Stop)
Stop Timer0
End If
If Pinb.2 = 0 Then 'Reset Stoppe Timer, falls nicht gestoppt und 00:00 ausgeben
Stop Timer0 'Timer stoppen
Tcnt0 = 0 'Timer auf 0-setzten
S = 0
Hs = 0
End If
If Pinb.3 = 0 Then 'Lösche LCD.... (nur für Tests)
Cls
Tcnt0 = 0
End If
Lcd Hs
Incr Loopcnt 'Inkrementierung des Main-Loop Zählers
Lowerline
Lcd Timer0
Locate 1 , 10
Lcd Loopcnt
Loop 'Ende Main-Loop
End
Timer0_isr: 'Interrupt Routine
Load Timer0 , Reload 'Timer0 mit Preload-Wert laden
Incr Hs 'Hundertstel incrementieren
Loopcnt = 0 'Mainloop-Zähler wieder zurücksetzen
Return 'Rücksprung ins Main-Programm
LG
Karl