rogerberglen
04.10.2006, 20:32
Ich habe schon ein paar mal gepostet. Nun das nächste Problem. Mein Attiny2313 reagiert auf keine Tastendrücke die ich an einzelnen Port Pins angeschlossen habe. Die beschriebenen Wege Pins abzufragen die ich bisher gefunden habe führten leider nicht zum Erfolg.
Im Folgenden mal der Quellcode, sieht ziemlich wurschtelig aus aber ich probiere noch:
regfile = "attiny2313.dat" 'ATtiny2313 Prozessor
$crystal = 8000000 '8MHz int. Taktquelle
'$sim
Portd.0 = 1 'Pin2 (Taster) auf Eingabe
Portd.1 = 1 'Pin3 (Schalter) auf Eingabe
Config Portd.0 = Input 'Pin2 auf Eingabe
Config Portd.1 = Input 'Pin3 auf Eingabe
Config Lcd = 16 * 1a 'Displayart festlegen.
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 _
, Db6 = Portb.2 , Db7 = Portb.3 _
, E = Portb.4 , Rs = Portb.5 'Anschluss LCD Display
Dim T As Byte 'Zeitvorgabe
Dim Text1 As String * 8 'Variable für LCD Texte
Dim Text2 As String * 8
Dim Xx As Byte
Dim P As Bit 'Betriebsart
Dim X As Bit
Dim Ta As Bit 'Tasterstatus
Dim Tas As Bit
' ********** Version anzeigen für 3 Sekunden **********
' ************************************************** ***
' * Es gibt 16*1 Displays die aber im 8*2 Betrieb ar- *
' * beiten!! Dann muss nach 8 Zeichen eine neue Zeile *
' * begonnen werden!! *
' ************************************************** ***
Cursor Off 'Cursor abschalten.
Cls 'LCD Display löschen
Locate 1 , 4
Lcd "Timer" 'und Text ausgeben. Diesen
Locate 2 , 2
Lcd "V1.0"
Wait 3 '3 Sek. anzeigen
Cls 'LCD Display löschen
' ****** Schalterstellungsauswertung ******
Anfang:
If Pind.1 = 0 Then 'Je nach Schalterstellung wird auf dem
Text1 = " 1 Pe" 'Display die jeweilige Betriebsart an-
Text2 = "rson"
P = 0 'gezeigt. Diese wird auch zur weiteren
Ta = Pind.0 'Verarbeitung verwendet.
T = 15 '15Min. vorgeben
Elseif Pind.1 = 1 Then
Text1 = " 2 Per"
Text2 = "sonen" 'Dazwischen wird der Status des Tas-
P = 1 'ters mehrfach zur weiteren Verarbei-
Ta = Pind.0 'tung abgefragt.
T = 10 '10Min. vorgeben
End If
If P = X Then 'Der Display wird dabei nur neu aufge-
Ta = Pind.0 'baut wenn sich die Schalterstellung
Cls 'ändert.
Wait 1
Locate 1 , 3
Lcd Text1
Locate 2 , 1
Lcd Text2
X = Not X
End If
' ****** Tasterauswertung ******
'If Taster = 0 And Tas = 0 Then 'Taster abfragen und Schleife starten.
' Tas = 1 'Nach dem Start den Taster verriegeln
' Goto Schleife 'und erst nach erneutem drücken wieder
'Elseif Taster = 1 Then 'freigeben.
' Tas = 0
'End If
Goto Anfang
End
Edit: Code-Tags verwenden ! (PicNick, Mod. )
Der weitere Programmteil ist noch gar nicht geschrieben. Eigentlich sollte auf dem Display nach der Versionsnummer entweder "1 Person" oder "2 Personen" erscheinen, abbhängig von PinD.1.
Aber nach der Anzeige der Versionsnummer wird der Display gelöscht und dann tut sich nichts mehr!
Im Folgenden mal der Quellcode, sieht ziemlich wurschtelig aus aber ich probiere noch:
regfile = "attiny2313.dat" 'ATtiny2313 Prozessor
$crystal = 8000000 '8MHz int. Taktquelle
'$sim
Portd.0 = 1 'Pin2 (Taster) auf Eingabe
Portd.1 = 1 'Pin3 (Schalter) auf Eingabe
Config Portd.0 = Input 'Pin2 auf Eingabe
Config Portd.1 = Input 'Pin3 auf Eingabe
Config Lcd = 16 * 1a 'Displayart festlegen.
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 _
, Db6 = Portb.2 , Db7 = Portb.3 _
, E = Portb.4 , Rs = Portb.5 'Anschluss LCD Display
Dim T As Byte 'Zeitvorgabe
Dim Text1 As String * 8 'Variable für LCD Texte
Dim Text2 As String * 8
Dim Xx As Byte
Dim P As Bit 'Betriebsart
Dim X As Bit
Dim Ta As Bit 'Tasterstatus
Dim Tas As Bit
' ********** Version anzeigen für 3 Sekunden **********
' ************************************************** ***
' * Es gibt 16*1 Displays die aber im 8*2 Betrieb ar- *
' * beiten!! Dann muss nach 8 Zeichen eine neue Zeile *
' * begonnen werden!! *
' ************************************************** ***
Cursor Off 'Cursor abschalten.
Cls 'LCD Display löschen
Locate 1 , 4
Lcd "Timer" 'und Text ausgeben. Diesen
Locate 2 , 2
Lcd "V1.0"
Wait 3 '3 Sek. anzeigen
Cls 'LCD Display löschen
' ****** Schalterstellungsauswertung ******
Anfang:
If Pind.1 = 0 Then 'Je nach Schalterstellung wird auf dem
Text1 = " 1 Pe" 'Display die jeweilige Betriebsart an-
Text2 = "rson"
P = 0 'gezeigt. Diese wird auch zur weiteren
Ta = Pind.0 'Verarbeitung verwendet.
T = 15 '15Min. vorgeben
Elseif Pind.1 = 1 Then
Text1 = " 2 Per"
Text2 = "sonen" 'Dazwischen wird der Status des Tas-
P = 1 'ters mehrfach zur weiteren Verarbei-
Ta = Pind.0 'tung abgefragt.
T = 10 '10Min. vorgeben
End If
If P = X Then 'Der Display wird dabei nur neu aufge-
Ta = Pind.0 'baut wenn sich die Schalterstellung
Cls 'ändert.
Wait 1
Locate 1 , 3
Lcd Text1
Locate 2 , 1
Lcd Text2
X = Not X
End If
' ****** Tasterauswertung ******
'If Taster = 0 And Tas = 0 Then 'Taster abfragen und Schleife starten.
' Tas = 1 'Nach dem Start den Taster verriegeln
' Goto Schleife 'und erst nach erneutem drücken wieder
'Elseif Taster = 1 Then 'freigeben.
' Tas = 0
'End If
Goto Anfang
End
Edit: Code-Tags verwenden ! (PicNick, Mod. )
Der weitere Programmteil ist noch gar nicht geschrieben. Eigentlich sollte auf dem Display nach der Versionsnummer entweder "1 Person" oder "2 Personen" erscheinen, abbhängig von PinD.1.
Aber nach der Anzeige der Versionsnummer wird der Display gelöscht und dann tut sich nichts mehr!