Hallo Leute,
ich habe mir eine 7-Segmentanzeige mit 4 Stellen gebaut. Dazu habe ich vier Segmente mit CA jeweils an PNP-Transistoren geschaltet, und die einzelnen Pins an einen ULN2803A. Die Anzeige funktioniert nach vielen Tests soweit auch, doch habe ich ein enormes Zeitproblem. Damit meine ich, dass wenn ich eine 4stellige Zahl im Terminal von Bascom eingebe, es erst einmal eine Sekunde braucht, bis mir diese überhaupt im PC angezeigt wird, und wenn ich Enter gedrückt habe es noch einmal ca. 1 Sekunde braucht bis das Display am MC umschlägt... . Woran liegt das und wie kann ich das ändern/verbessern ?
Der Einsteiger
Und hier noch das Programm :
Code:
$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600
$hwstack = 200
$swstack = 200
$framesize = 400
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Stringinput As String * 10
Dim A As Byte
Dim Var1 As Byte
Dim Var2 As Byte
Dim Var3 As Byte
Dim Var4 As Byte
Dim Stelle1 As String * 2
Dim Stelle2 As String * 2
Dim Stelle3 As String * 2
Dim Stelle4 As String * 2
Dim Dis(11) As Byte
Dim Cnt As Byte
Cnt = 0
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Config Serialin = Buffered , Size = 20
'Summer:
Config Portd.7 = Output
'einzelne Elemente
Config Portd.3 = Output
Config Portd.4 = Output
Config Portd.5 = Output
Config Portd.6 = Output
Portd.3 = 1
Portd.4 = 1
Portd.5 = 1
Portd.6 = 1
Config Portc = Output
Config Timer1 = Timer , Prescale = 8
On Timer1 Timer_irq
Const Timervorgabe = 25536
' Pins
Dis(1) = &B00111111
Dis(2) = &B00000110
Dis(3) = &B01011011
Dis(4) = &B01001111
Dis(5) = &B01100110
Dis(6) = &B01101101
Dis(7) = &B01111101
Dis(8) = &B00000111
Dis(9) = &B01111111
Dis(10) = &B01101111
Dis(11) = &B00000000
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sound Portd.7 , 400 , 450
Sound Portd.7 , 400 , 250
Sound Portd.7 , 400 , 450
Wait 2
Enable Timer1
Enable Interrupts
Do
A = Ischarwaiting()
If A = 1 Then
Input Stringinput
End If
Disable Interrupts
Stelle1 = Left(stringinput , 1)
Stelle2 = Mid(stringinput , 2 , 1 )
Stelle3 = Mid(stringinput , 3 , 1 )
Stelle4 = Right(stringinput , 1)
Var1 = Val(stelle1)
Var2 = Val(stelle2)
Var3 = Val(stelle3)
Var4 = Val(stelle4)
Enable Interrupts
Wait 1
Loop
End
Timer_irq:
Timer1 = Timervorgabe
Cnt = Var1 + 1
Portd.3 = 0
Portc = Dis(cnt)
Waitus 3333
Portc = Dis(11)
Portd.3 = 1
Cnt = Var2 + 1
Portd.4 = 0
Portc = Dis(cnt)
Waitus 3333
Portc = Dis(11)
Portd.4 = 1
Cnt = Var3 + 1
Portd.5 = 0
Portc = Dis(cnt)
Waitus 3333
Portc = Dis(11)
Portd.5 = 1
Cnt = Var4 + 1
Portd.6 = 0
Portc = Dis(cnt)
Waitus 3333
Portc = Dis(11)
Portd.6 = 1
Return
Lesezeichen