Witajcie !
Wiem, że temat był wałkowany na Elektrodzie wielokrotnie, czytałem chyba wszystkie, nie znalazłem jednak rozwiązania mojego problemu.
Może na początek schemat :
(tablica ma faktycznie 5 rejestrów i 40 kolumn, nie chciało mi sie jednak całości rysować.)
teraz banalny kod :
Acha, może ktoś wytknąć, że sterowanie rejestrami jest z oddzielnych portów, ale wymyśliłem sobie, że szybciej będzie obsłużyć 5 rejestrów, niż szeregowo wysyłać przez jedno wyjście - może się myle.
Problem w tym, że diodki świecą za ciemno.
Sądzę, że jest za to odpowiedzialny ten kawałek kodu :
poprostu czas wpisywania do rejestrów jest za długi wiec wiecej są zgaszone niż zapalone...
Proszę o jakieś sugestie, ktoś pisał, że można rejestrami sterować niejako sprzętowo przez SPI - ale jak konkretnie ?
Pozdrawiam !
Pomogłem? Kup mi kawę.
Wiem, że temat był wałkowany na Elektrodzie wielokrotnie, czytałem chyba wszystkie, nie znalazłem jednak rozwiązania mojego problemu.
Może na początek schemat :
(tablica ma faktycznie 5 rejestrów i 40 kolumn, nie chciało mi sie jednak całości rysować.)
teraz banalny kod :
$regfile = "m8def.dat"
$crystal = 8000000
Config Pind.0 = Output
Config Pind.1 = Output
Config Pind.2 = Output
Config Pind.3 = Output
Config Pind.4 = Output
Config Pind.5 = Output
Config Pind.6 = Output
Config Pind.7 = Output
Config Pinc.4 = Output
Config Pinc.5 = Output
Config Pinb.0 = Output
Config Pinb.1 = Output
Config Pinb.2 = Output
Config Pinb.3 = Output
Config Pinb.4 = Output
Config Pinb.5 = Output
Config Pinb.6 = Output
Config Pinb.7 = Output
Config Timer0 = Timer , Prescale = 94
On Timer0 Mult_wysw_matr
Dim W1(8) As Byte
Dim W2(8) As Byte
Dim W3(8) As Byte
Dim W4(8) As Byte
Dim W5(8) As Byte
Dim K As Byte
W1(1) = 15
W2(1) = 0
W3(1) = 0
W4(1) = 1
W5(1) = 0
W1(2) = 8
W2(2) = 128
W3(2) = 0
W4(2) = 1
W5(2) = 0
W1(3) = 72
W2(3) = 156
W3(3) = 119
W4(3) = 153
W5(3) = 34
W1(4) = 175
W2(4) = 36
W3(4) = 128
W4(4) = 165
W5(4) = 69
W1(5) = 72
W2(5) = 36
W3(5) = 131
W4(5) = 57
W5(5) = 194
W1(6) = 8
W2(6) = 36
W3(6) = 132
W4(6) = 33
W5(6) = 32
W1(7) = 8
W2(7) = 28
W3(7) = 119
W4(7) = 153
W5(7) = 32
W1(8) = 0
W2(8) = 2
W3(8) = 0
W4(8) = 0
W5(8) = 0
Dim X As Byte
X = 1
K = 1
Enable Interrupts
Enable Timer0
Load Timer0 , 255
'poczatek
Do
Loop
End
Mult_wysw_matr:
Load Timer0 , 255
Portb = 0 'zgaszenie kolumn
Shiftout Portd.0 , Portd.1 , W5(k) , 0 'wyslanie wierszy
Shiftout Portd.2 , Portd.3 , W4(k) , 0
Shiftout Portd.4 , Portd.5 , W3(k) , 0
Shiftout Portd.6 , Portd.7 , W2(k) , 0
Shiftout Portc.4 , Portc.5 , W1(k) , 0
Portb = X 'zapalenie kolumn
X = X * 2
Incr K
If K = 9 Then
K = 1
X = 1
End If
ReturnAcha, może ktoś wytknąć, że sterowanie rejestrami jest z oddzielnych portów, ale wymyśliłem sobie, że szybciej będzie obsłużyć 5 rejestrów, niż szeregowo wysyłać przez jedno wyjście - może się myle.
Problem w tym, że diodki świecą za ciemno.
Sądzę, że jest za to odpowiedzialny ten kawałek kodu :
Portb = 0 'zgaszenie kolumn
Shiftout Portd.0 , Portd.1 , W5(k) , 0 'wyslanie wierszy
Shiftout Portd.2 , Portd.3 , W4(k) , 0
Shiftout Portd.4 , Portd.5 , W3(k) , 0
Shiftout Portd.6 , Portd.7 , W2(k) , 0
Shiftout Portc.4 , Portc.5 , W1(k) , 0
Portb = X 'zapalenie kolumn
poprostu czas wpisywania do rejestrów jest za długi wiec wiecej są zgaszone niż zapalone...
Proszę o jakieś sugestie, ktoś pisał, że można rejestrami sterować niejako sprzętowo przez SPI - ale jak konkretnie ?
Pozdrawiam !

