McDevlin [ Centurion ]
VBA w Excelu
Potrzebuję napisać kilka procedur dodatku do excela (*.xla).
Większość tych procedur potrzebuje jako dane wejściowe i wyjściowe tablicy bajtów 256 elementów. Jedyna możliwość jaką widzę by takie dane podawać to string. Problem w tym, że za każdym razem jak w tym stringu znajdzie się znak o kodzie 0 to resztę stringa uwala. Niestety potrzebuję zer w tych tablicach i nie może mi tak danych od 0 do końca wyrąbywać.
Jak to rozwiązać?
Jak znaki w stringu mieszczą się w zakresie ASCII obsługiwanych przez windę - to wszystko jest okej... jak za kod znaku damy 0 to reszta stringa leci.
Potrzebne mi to do zaprezentowania działania mikrokontrolera - procedura inicjalizująca - dająca stan początkowy, i kilka procedur pokazujących jak wpływają na ten stan rozkazy.
Jakieś rady?
Bo już zaczynam wysiadać.
Kod procedury:
Function proc51init()
Dim i As Integer
Dim stan(255) as byte
'wyzerowanie pamięci od 0 bajtu do 127
For i = 0 To 127
stan(i) = 0
Next i
'stan początkowy P0 to FF
stan(128) = 255
'P1
stan(144) = 255
'P2
stan(160) = 255
'P3
stan(176) = 255
'ACC
stan(224) = 0
'B
stan(240) = 0
'SP - stan początkowy wskaźnika stosu to 7 - wskazuje bezpośrednio na zapisywanie danych przy uzyciu stosu od 8 bajtu - żeby korzystać z innych banków rejestrów i pamięci flag i równocześnie ze stosu - należy na początku programu zmienić tę wartość na ostatni bajt albo ostatniego banku rejestrów albo na ostatni bajt pamięci bitowej
stan(129) = 7
'DPL
stan(130) = 0
'DPH
stan(131) = 0
'PCON = 0xxxxxxxb
stan(135) = stan(135) And 127
proc51init = StrConv(stan, vbUnicode)
End Function
Efektem jest niestety string o długości 0 w excelu - mimo, że aż do wyjścia z procedury w VBA wygląda poprawnie.