PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Als Neuling noch viele Fragen



rogerberglen
04.10.2006, 19: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!

x-ryder
05.10.2006, 08:39
wie sindn die schalter und taster angeschlossen? nach masse oder nach 5V?
und außerdem: was soll der taster bewirken? oder ist der hier noch gar nicht wichtig? die beiden zeilen nach sim sind in jedem falle falsch... die bräuchtest du wenn, dann nach dem input-setzen noch, wenn die taster und schalter nach masse verschaltet sind, damit werden nämlich die internen pullup-rs eingschaltet

Martin

rogerberglen
06.10.2006, 11:26
Habe inzwischen durch Probieren die Probleme lösen können. Danke für die schnelle Antwort.
Ist halt am Anfang nicht so einfach wenn man ndie Bascom-Befehle noch nicht richtig beherrscht.