Hi robert,
sorry, habe gar nicht gemerkt das ich nicht eingelogged war...
So, hier nun der Code.
Die Merkerversion funktioniert komischer weise auch nicht.
Die Einstellungen in meinem Bascom (1.11.7.7 Vollversion) sind: 4 Bit, Atmega8 und ich Takte mit 4MHz.
Code:
Config Lcdpin = Pin , E = Portd.1 , Rs = Portd.3 , Db7 = Portd.7 , Db6 = Portd.6 ,
Config Lcdpin = Pin , Db5 = Portd.5 , Db4 = Portd.4
Config Lcd = 16 * 4
Config Portc = Output
Dim ___lcdno As Bit
Dim Mbit As Bit
Initlcd
Cls
Lcd "Eins"
Haupt:
Debounce Pinb.1 , 0 , Zwei , Sub
Debounce Pinb.2 , 0 , Merker , Sub
If Mbit = 1 Then Gosub Drei
Goto Haupt
Zwei:
Locate 2 , 1
Lcd "Zwei"
Portc.0 = Not Portc.0
Return
Merker:
Mbit = 1
Return
Drei:
Locate 3 , 1
Lcd "Drei"
Mbit = 0
Portc.1 = Not Portc.1
Return
End
Die Routine "Drei" wird über einen Merker angesprungen. Funktioniert aber auch nicht. Ich habe es weiter oben missverständlich ausgedrückt. Mit "das funktioniert" meinte ich das Prinzip. Die Routine hatte ich zu dem Zeitpunkt noch nicht im AVR getestet.
Wie Du siehst schalte ich in den Unterroutinen "Zwei" und "Drei" je einen Portpin um. Das mache ich zur Kontrolle ob auch wirklich in die Unterroutine gesprungen wird.
Es wird hineingesprungen (die LEDs schalten brav um), aber auf dem LCD wird nichts ausgegeben.
Im Bascom Simulator genau das gleiche.
Ich hoffe Du findest was!
Gruß Bernd
Lesezeichen