| 
  • If you are citizen of an European Union member nation, you may not use this service unless you are at least 16 years old.

  • You already know Dokkio is an AI-powered assistant to organize & manage your digital files & messages. Very soon, Dokkio will support Outlook as well as One Drive. Check it out today!

View
 

Reaktivlicht Programmcode Beispiel 1 - 0-9 links-rechts n E nord OSt

Page history last edited by schnasemann 14 years, 3 months ago

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.