Witam wszystkich.
Robię sterownik silnika na podczerwień i mam problem z kodem. napisałem kod do sterowania silnikiem który po każdym obrocie silnika zwiększa wartość zmiennej "obroty" o jeden lub zmniejsza zależnie od kierunku obrotów. Wartosć tej zmiennej chcę wyświetlic na wyświetlaczu led trzy cyfry i jeden jako znak jeżeli wartość będzie ponizej zera. Korzystam z książki M. Wiązani i tam znalazłem kod obsługi wyświetlaczy ale nie wiem jak go powiązać z moim programem.
oto kod sterowania silnikiem
A tu kod do wyświetlaczy z usuniętymi zbednymi instrukcjami (np kropki) z tym ze nie wiem jak go uzyc aby wyswietlic wartosć mojej zmiennej
Robię sterownik silnika na podczerwień i mam problem z kodem. napisałem kod do sterowania silnikiem który po każdym obrocie silnika zwiększa wartość zmiennej "obroty" o jeden lub zmniejsza zależnie od kierunku obrotów. Wartosć tej zmiennej chcę wyświetlic na wyświetlaczu led trzy cyfry i jeden jako znak jeżeli wartość będzie ponizej zera. Korzystam z książki M. Wiązani i tam znalazłem kod obsługi wyświetlaczy ale nie wiem jak go powiązać z moim programem.
oto kod sterowania silnikiem
$regfile = "m8def.dat"
$crystal = 8000000
Config Rc5 = Pind.0
Config Pind.5 = Output
Config Pind.6 = Output
Config Pind.7 = Input
Set Portd.7
Enable Interrupts
Dim Address As Byte , Command As Byte
Dim Obroty As Integer
Do
Getrc5(address , Command)
Command = Command And &B01111111
If Command = 19 Then
Gosub Lewo
Elseif Command = 18 Then
Gosub Prawo
End If
Loop
End
Prawo:
Portd.6 = 1
Portd.5 = 0
Waitms 10
Portd.6 = 0
If Pind.7 = 0 Then
Incr Obroty
End If
Return
Lewo:
Portd.5 = 1
Portd.6 = 0
Waitms 10
Portd.5 = 0
If Pind.7 = 0 Then
Decr Obroty
End If
Return
A tu kod do wyświetlaczy z usuniętymi zbednymi instrukcjami (np kropki) z tym ze nie wiem jak go uzyc aby wyswietlic wartosć mojej zmiennej
$regfile = "m8def.dat"
$crystal = 8000000
Config Portd = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Timer0 = Timer , Prescale = 256
Declare Sub Pobr_znaku(cyfra As Byte)
On Timer0 Mult_wysw
Dim A As Byte , B As Byte , C As Byte , D As Byte
Dim Nr_wysw As Byte
Dim Wart As Byte
W4 Alias Portb.1
W3 Alias Portb.2
W2 Alias Portb.3
W1 Alias Portb.4
Enable Interrupts
Enable Timer0
Load Timer0 , 125
Do
A = 1
B = 2
C = 8
D = 9
Wait 2
D = 10
C = 10
Wait 2
Wart = 56
Wart = Makebcd(wart)
A = Wart And &B00001111
Shift Wart , Right , 4
B = Wart
Wait 2
Loop
End
Sub Pobr_znaku(cyfra As Byte)
If Cyfra < 10 Then
Portd = Lookup(cyfra , Kody7seg)
Else
Portd = &B11111111
End If
End Sub
Mult_wysw:
Load Timer0 , 125
Set W1
Set W2
Set W3
Set W4
Select Case Nr_wysw
Case 0:
Call Pobr_znaku(a)
Reset W1
Case 1:
Call Pobr_znaku(b)
Reset W2
Case 2:
Call Pobr_znaku(c)
Reset W3
Case 3:
Call Pobr_znaku(d)
Reset W4
End Select
Incr Nr_wysw
If Nr_wysw = 4 Then
Nr_wysw = 0
End If
Return
Kody7seg:
Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144