
Zitat von
Vitis
if then ....
if a>10 then a=10
danke Vitis
code zum begrenzen des Zählers von 10 bis -10
Codeschnippsel
Code:
Sub Count_up:
A = A + 1
If A > 10 Then A = 10 'begrenzt auf 10
Locate 2 , 1
Lcd A
End Sub
Sub Count_down:
A = A - 1
If A < -10 Then A = -10 'gebrenzt auf -10
Locate 2 , 1
Lcd A
End Sub
was jetzt noch probleme macht ist
dass wenn unter 0 gezählt wird,
also -1 bis -10 dann wird bei -10 3stellen im LCD benutzt.
Wenn man dann zurück über 0 Zählt
als 0 bis 10 dann wird die 2. und 3. Stelle im LCD nicht zurückgesetzt.
Klartext schaut es dann so aus:
Von -10 nach 0 per Tastendruck:
-10; -90(sollte aber -9 sein); -80;-70;-60;-50;-40;-30;-20;-10;
dann weiter
von 0 bis 10 per Tastendruck:
010(sollte aber 0 sein);110; 210;310;410;510;610;710;810;910;100
Ich hab das Problem per CLS gelöst, bin aber damit nicht zufrieden.
Kann man die 2. und 3. in der unteren LCD Anzeige auch anderst aktualisieren ohne dass man das Lcd mit CLS löscht?
Wenn jemand Erfahrung gemacht hat mit solchen Sachen wäre ich für
einen Gedankenanstoß sehr erfreut 
hier das ganze Programm mit CLS im Gosub Count_up bzw Count_down
das Ergebnis ist wie gedacht. Ohne CLS ist es dann wie oben beschrieben
Code:
'---------------------------------------------------------------------------
'Titel : LCD-Grundlagen Testen
'Datei : Grundlagen_LCD ansteuern
'---------------------------------------------------------------------------
'Funktion : Textausgabe an LCD
'Schaltung : Erweiterungsplatine "LCD" an Buchsenleiste
' :
' :
'---------------------------------------------------------------------------
'Display- :
'controller : KS0070, HD44100 kompatibel
'---------------------------------------------------------------------------
'Prozessor : ATmega8 3,6864MHz
'Sprache : Bascom-AVR
'Datum : 04.11.2008
'Version : 1.0
'Autor : Stefan Merk
'---------------------------------------------------------------------------
' hier Initialisierung durchführen
'---------------------------------------------------------------------------
$regfile = "m8def.dat"
$crystal = 3686400
$hwstack = 32
$swstack = 10
$framesize = 60
Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , ' Config können
Config Lcdpin = Pin , Db6 = Portd.6 , Db7 = Portd.7 , ' auch in einer
Config Lcdpin = Pin , E = Portd.3 , Rs = Portd.2 ' Zeile stehen
Config Lcd = 16 * 2 ' LCD mit 16Zeichen
' je Zeile, 2 Zeilig
Config Portd = Output
Config Pinb.0 = Input
Config Pinb.1 = Input
'---------------------------------------------------------------------------
'Hier Alias inizialisieren
Taster1 Alias Pinb.0
Taster2 Alias Pinb.1
'---------------------------------------------------------------------------
'Hier PullUp inizialisieren
Portb.0 = 1
Portb.1 = 1
'---------------------------------------------------------------------------
'Hier Variable inizialisieren
Dim A As Integer
Dim B As Integer
A = 0
B = 0
'---------------------------------------------------------------------------
'Hier Unterprogramme Declarieren
Declare Sub Count_up
Declare Sub Count_down
'---------------------------------------------------------------------------
'Tasten entprellen
'---------------------------------------------------------------------------
Cls
Cursor Off
Upperline
Lcd "Counter"
Lowerline
Lcd "T1=Up; T2=Down"
Wait 1
Cls
Upperline
Lcd "T1=Up; T2=Down"
Wait 1
Do
Debounce Taster1 , 0 , Count_up , Sub
Debounce Taster2 , 0 , Count_down , Sub
Loop
End
Sub Count_up:
Cls 'Löscht LCD
A = A + 1 'berechnet variable
If A > 10 Then A = 10 'gebrenzen auf -10
Locate 1 , 1 'positioniert im LCD
Lcd "T1=Up; T2=Down"
Locate 2 , 1 'positioniert im LCD
Lcd A 'schreibt Variable ins LCD
End Sub
Sub Count_down:
Cls 'Löscht LCD
A = A - 1 'berechnet Variable
If A < -10 Then A = -10 'gebrenzt auf -10
Locate 1 , 1 'positioniert im LCD
Lcd "T1=Up; T2=Down"
Locate 2 , 1 'positioniert im LCD
Lcd A 'schreibt Variable ins LCD
End Sub
grüße Nubbidubi
Lesezeichen