Hier ein Beispielcode für die Zeichenausgabe über eine 7-Segment Anzeige. Ersteller ist kirby27b.
' http://reaktivlicht.pbworks.com/Reaktivlicht+Programmcode+Beispiel+1+-+0-9+links-rechts+n+E+nord+OSt
$hwstack = 20
$regfile = "ATtiny24.DAT"
$crystal = 128000
Config Adc = Single , Prescaler = Auto
Config Portb = &B00000111
Config Porta = &B10001011
Portb = 0
Porta = 0
Stop Ac
Wdtcsr = &B11010011
Enable Interrupts
Const Schwelle = 150
Const Tagschwelle = 800
Const Zwangsimpuls = 8
Dim A As Byte
Dim Tagzaehler As Byte
Dim Schlafzaehler As Byte
Dim Ldr As Integer
Dim Alt As Integer
Dim Merker As Integer
Dim Zeichen As String * 1
Do
Reset Watchdog
Powerdown
Start Adc
Waitms 250
Ldr = Getadc(2)
Waitms 250
Stop Adc
Merker = Ldr - Alt
Alt = Ldr
If Merker > Schwelle Then
Gosub Morsen
End If
If Ldr > Tagschwelle Then
If Tagzaehler < 255 Then
Tagzaehler = Tagzaehler + 1
End If
Else
Tagzaehler = 0
End If
If Tagzaehler > 200 Then
Gosub Pause
End If
Loop
Pause:
Wdtcsr = &B11110001
Reset Watchdog
Powerdown
Wdtcsr = &B11010011
Schlafzaehler = Schlafzaehler + 1
If Schlafzaehler = Zwangsimpuls Then
Porta = &B10001011
Reset Watchdog
Powerdown
Porta = 0
Schlafzaehler = 0
End If
Return
Morsen:
Restore Daten
Alt = 1023
Do
Read Zeichen
Wdtcsr = &B11010111
If Zeichen = "0" Then Gosub P0
If Zeichen = "1" Then Gosub P1
If Zeichen = "2" Then Gosub P2
If Zeichen = "3" Then Gosub P3
If Zeichen = "4" Then Gosub P4
If Zeichen = "5" Then Gosub P5
If Zeichen = "6" Then Gosub P6
If Zeichen = "7" Then Gosub P7
If Zeichen = "8" Then Gosub P8
If Zeichen = "9" Then Gosub P9
If Zeichen = "n" Then Gosub Pn
If Zeichen = "e" Then Gosub Pe
If Zeichen = "re" Then Gosub Rechts
If Zeichen = "li" Then Gosub Links
If Zeichen = " " Then Gosub Leer
If Zeichen = "ost" Then Gosub East
If Zeichen = "nord" Then Gosub North
Wdtcsr = &B11010011
If Zeichen = "X" Then Return
Loop
Return
P0:
Portb = &B00000101
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P1:
Portb = &B00000100
Porta = &B00001000
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P2:
Portb = &B00000010
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P3:
Portb = &B00000110
Porta = &B00001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P4:
Portb = &B00000111
Porta = &B00001000
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P5:
Portb = &B00000111
Porta = &B00000011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P6:
Portb = &B00000111
Porta = &B10000011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P7:
Portb = &B00000100
Porta = &B00001001
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P8:
Portb = &B00000111
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
P9:
Portb = &B00000111
Porta = &B00001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Pn:
Portb = &B00000101
Porta = &B10001001
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Pe:
Portb = &B00000011
Porta = &B10000011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Rechts:
Wdtcsr = &B11010100
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00000001
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00001000
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000100
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Links:
Wdtcsr = &B11010100
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00000010
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000100
Reset Watchdog
Powerdown
Portb = 0
Porta = &B00001000
Reset Watchdog
Powerdown
Porta = 0
Porta = &B00000001
Reset Watchdog
Powerdown
Porta = 0
Portb = &B00000001
Reset Watchdog
Powerdown
Portb = 0
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
East:
Wdtcsr = &B11010101
Portb = &B00000101
Porta = &B10001011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = &B00000111
Porta = &B00000011
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = &B00000011
Porta = &B10000010
Reset Watchdog
Powerdown
Porta = 0
Portb = 0
Return
North:
Wdtcsr = &B11010101
Portb = &B00000101
Porta = &B10001001
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = &B00000110
Porta = &B10000010
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Portb = &B00000010
Porta = &B10000000
Reset Watchdog
Powerdown
Porta = 0
Portb = 0
Portb = &B00000110
Porta = &B10001010
Reset Watchdog
Powerdown
Portb = 0
Porta = 0
Return
Leer:
Reset Watchdog
Powerdown
Return
End
Daten:
Data "nord"
Data "re"
Data "n" , "1" , "2" , "3" , "4" , "5"
Data " "
Data "li"
Data "ost"
Data " "
Data "e" , "6" , "7" , "8" , "9" , "0"
Data "X"
Hier der obige Code als Bascom Datei zum Download: Reaktivlicht_Programmcode_Beispiel-1_0-9_links-rechts_Nord_Ost.bas
Comments (1)
richie241 said
at 3:43 pm on Jan 19, 2012
Hallo,
beim Flashen in Bascom erhalte ich folgenden Fehler: "bascom chip differs at byte address 00000"
Der Flash wird beschrieben, EEPROM scheinbar nicht... der Tiny zeigt in der Schaltung keine Reaktion.
Woran kann das liegen...?
You don't have permission to comment on this page.