Das Zahlenschloss von http://mikrocontroller.heldt.eu/index.php?page=atmega8-zahlenschloss funktioniert auf meinem Steckbrett allerdings nicht. Es leuchtet lediglich die Kontroll-LED.
$regfile = "m8def.dat"
$crystal = 1000000
Config Kbd = Portb , Debounce = 20 , Delay = 50 'Matrixtastatur 3x4 an PortB angeschlossen
Config Portd.0 = Output
Ddrd = &B11111111
Freizeichen Alias Portd.0 'Freizeichen
Verwaehlt Alias Portd.1 'Verwählt
Ansage Alias Portd.7 'Textansage
Dim Eingabe As String * 20
Dim Code As String * 20
'***Hier Initial-Code eingeben ***
Code = "0123456789"
Dim Tastencode As Byte
Eingabe = ""
Freizeichen = 0
Verwaehlt = 1
Ansage = 1
Do
Tastencode = Getkbd()
If Tastencode <> 16 Then
Select Case Tastencode
Case 0 : Eingabe = Eingabe + "1" 'Eingabenstring zusammensetzen
Case 1 : Eingabe = Eingabe + "2"
Case 2 : Eingabe = Eingabe + "3"
Case 4 : Eingabe = Eingabe + "4"
Case 5 : Eingabe = Eingabe + "5"
Case 6 : Eingabe = Eingabe + "6"
Case 8 : Eingabe = Eingabe + "7"
Case 9 : Eingabe = Eingabe + "8"
Case 10 : Eingabe = Eingabe + "9"
Case 12 : Eingabe = Eingabe + "*"
Case 13 : Eingabe = Eingabe + "0"
Case 14 : Eingabe = Eingabe + "#"
End Select
If Len(eingabe) = Len(code) Then Gosub Auswerten
Do
Tastencode = Getkbd()
Loop Until Tastencode = 16
End If
Loop
End
Auswerten:
If Eingabe = Code Then
'code korrekt
Freizeichen = 1 'Freizeichen aus
Ansage = 0 'Textansage auslösen
Wait 3
Ansage = 1
Else
Freizeichen = 1
Verwaehlt = 0 'Verwählt Zeichen
Wait 3
Verwaehlt = 1
End If
Eingabe = ""
End
$regfile = "attiny13.dat"
$crystal = 9600000
$hwstack = 2
$swstack = 5
'Codeabfrage über Wählscheibentelefon
'Ein und Ausgänge konfigurieren
Config Pinb.0 = Input
Config Pinb.1 = Input
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
'Alias Namen zuweisen
Falsch Alias Portb.2 'rufzeichen "kein Anschluss unter dieser Nummer"
Nsi Alias Pinb.1 'Impulsleitung vom Nummernschalter
Nsa Alias Pinb.0 'Nummernschalterkontakt, für Wählscheibe dreht oder steht
Ansage Alias Portb.3 'Ansage der Informationen
Bereit Alias Portb.4 'Wählbereitschaft anzeigen
'Interne pullups zuschalten
Portb.0 = 1
Portb.1 = 1
'Variablen zuweisen
Dim A As Byte 'Anzahl der Impulse pro Wahlvorgang
Dim Nummer As String * 10 'Der String in dem die gewählte Nummer geschrieben wird
' !!genau so gross wie der String "Rufnummer"!!
Dim Rufnummer As String * 10 'Der String in dem die zu wählende Nummer festgelegt wird
'die max länge ist hier auf 10 Nummern beschränkt
'Alle Variablen auf Null setzen
A = 0
Nummer = "" 'Sicherstellen, das String leer
'Alle Ausgänge auf 1 setzen
Falsch = 1
Ansage = 1
Bereit = 1
'Hauptprogrammschleife
Rufnummer = "7634528109" 'Hier die zu wählende Nummer eintragen
'Abfrage des Nummernschalters
Do
Bereit = 0 'Wählbereitschaft anzeige
Debounce Nsi , 1 , Impulse , Sub 'Impulsschalter entprellen und Sprunganweisung
Debounce Nsa , 1 , Auswerten , Sub 'Wählscheibe abgelaufen entprellen und Sprunganweisung
Loop
'Implse hochzählen
Impulse:
Bereit = 0
A = A + 1
Return
Auswerten:
If A = 0 Then 'Verhindern, das beim Start schon etwas in den Sting "Nummer"geschrieben wird
Return
End If
If A = 10 Then 'beim wählen der Nummer 0 werden 10 Impulse erzeugt.
A = 0 'hier durch wird im String eine "0" geschrieben
End If
Nummer = Nummer + Str(a) 'Die ermittelten Impulse der Rufnummer hinzufügen
If Len(nummer) = Len(rufnummer) Then 'Länge der gewählten Nummer mit Länge der zu wählenden Nummer vergleichen
'durch den Längenvergleich der Strings, muss keine extra längen Angabe mehr gemacht werden
Goto Kontrolle 'wenn Länge gleich dann zur Kontrolle
End If
A = 0 'Impulse für nächste Nummer löschen
Return
Kontrolle:
Bereit = 1
If Nummer = Rufnummer Then 'zu wählende Nummer mit gewählter Nummer vergleichen
Ansage = 0 'wenn gleich dann Ansage
Else
Falsch = 0 'wenn ungleich dann "kein Anschluss unter dieser Nummer"
End If
End 'end program
Entweder von Pollin oder so ein Teil (versch. Anbieter) http://www.ebay.de/itm/HD44780-1602-LCD-Module-Display-Anzeigen-2X16-Zeichen-/130843540637?_trksid=p2047675.m1986&_trkparms=aid%3D555001%26algo%3DPW.CURRENT%26ao%3D1%26asc%3D29%26meid%3D5848421186404390122%26pid%3D100013%26prg%3D1013%26rk%3D1%26sd%3D180872317608%26hihatzz schrieb:Wo habt ihr eigentlich das/die Display/s her die man am Steckbrett verwenden kann?
Oder habt ihr da erst vorher Drähte/(Flachband-)Kabel angelötet?
Ja. Aber besser keine Taste drücken während des programmierens .Haenigser schrieb:@all: Kann ich ohne externen Quarz den komplette PortB für meine 4x4 Tastatur nutzen?
If Tastencode <> 16 Then
Select Case Tastencode
Case 0 : Eingabe = Eingabe + "1" 'Eingabenstring zusammensetzen
Case 1 : Eingabe = Eingabe + "4"
Case 2 : Eingabe = Eingabe + "7"
Case 3 : Eingabe = Eingabe + "*"
Case 4 : Eingabe = Eingabe + "2"
Case 5 : Eingabe = Eingabe + "5"
Case 6 : Eingabe = Eingabe + "8"
Case 7 : Eingabe = Eingabe + "0"
Case 8 : Eingabe = Eingabe + "3
Case 9 : Eingabe = Eingabe + "6"
Case 10 : Eingabe = Eingabe + "9"
Case 11 : Eingabe = Eingabe + "#"
Case 12 : Eingabe = Eingabe + "A"
Case 13 : Eingabe = Eingabe + "B"
Case 14 : Eingabe = Eingabe + "C"
Case 15 : Eingabe = Eingabe + "D"
End Select
Haenigser schrieb: