Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Bascom8051 i podprogramy

awojcick
-
-
Posty:3
Rejestracja:1 cze 2004, o 09:34
Bascom8051 i podprogramy

Postautor: awojcick » 1 cze 2004, o 09:35

Witam szanownych grupowiczów, czy ktoś mógłby podzielić się ze mną
doświadczeniami na temat obsługi podprogramów w Bascom-ie. Czy są jakieś
ograniczenia jeżeli chodzi o ilość użytych podprogramów. Ograniczenia w
poziomach zagnieżdzenia np. z jednego wyskakuje do drugiego z drugiego do
trzeciego itd następnie następują powroty i wszystko jest ok. Czy kompilator
w procesie kompilacji rezerwuje zasoby na stos, czy jest on przydzielany
dynamicznie. Do zadania tych pytań skłoniły mnie oczywiście problemy przy
optymalizacji programu, dodam, że program kompiluje się i wykonuje
prawidłowo. Jest to kalendarz cyfrowy, może przytoczę kawałek kodu gdzie
występuje problem:
'----------------------------------------------------------'
'-----------'
'Podprogramy'
'-----------'
'----------------------------------------------------------'
Wybor:
Incr Funkcja
Return
'----------------------------------------------------------'
Sub Zmien(zm As Byte)
While P1.0 = 0
Wend
Waitms 250
Incr Zm
End Sub
'----------------------------------------------------------'
Sub Ustaw
Do
Debounce P1.1 , 0 , Wybor , Sub
If P1.0 = 0 Then
Select Case Funkcja
'****************************'
Case 0 : Call Zmien Rok_st ' Przy tym wywołaniu
nie incrementuje '
'****************************'
Case 1 : Call Zmien ' Dalej działa
prawidłowo '
Incr Rok_jd
Case 2 : Call Zmien
Incr Miesiac
Case 3 : Call Zmien
Incr Dzien
Case 4 : Call Zmien
Incr Godzina
Case 5 : Call Zmien
Incr Minuta
Case 6 : Call Zmien
Incr Sekunda
End Select
End If
Loop Until Funkcja = 7
Funkcja = 0
End Sub

Pozdrawim

rejestr007
-
-
Posty:35
Rejestracja:20 mar 2004, o 14:16
Lokalizacja:Lublin
Kontaktowanie:

Postautor: rejestr007 » 1 cze 2004, o 11:45

Witam!
Moja przygoda z Bascomem była krótka i to głównie z powodu problemów z podprogramami i stosem, który rozrastał się do olbrzymich rozmiarów pochłaniając pamięć RAM. Podczas testowania programu należy ciągle zwracać uwagę czy wskaźnik stosu nie przekracza rozmiaru pamięci RAM :!: . Niektóre procedury Bascoma (o ile pamiętam np. GetRC5) po wywołaniu dopisują do stosu po dziesięć pozycji!!! Zapisując na nim bardzo dużo rejestrów!
Pozdrawiam.

GasM
-
-
Posty:92
Rejestracja:4 lut 2004, o 11:57

Postautor: GasM » 2 cze 2004, o 09:30

niestety dużo nerwów mnie kosztowało pisanie programów w BASCOM (pisze dla urządzeń przemysłowych). to do czego m.in. doszedłem:
- przerwania pisać tylko w ASM, a "rejestrować je" z parametrem NOSAVE
tzn ON INT1 przerwanie1 NOSAVE, procedury kończyć przez RETI
- używać jak najmniej poleceń typu GOSUB, CALL, gdyż zmniejszamy sobie pamięć RAM a i prawie nigdy się nie dowiemy czy stos został przekroczony jeżeli używamy wielu przerwań (używać GOTO).
- starać się jak najmniej używać podprogramów z zmienną tzn
Sub Zmien(zm As Byte), chyba że stać nas na rozrzutność RAM'u
- no i doświadczenie którego nie da się w pełni przekazać, chyba że poruszysz jakiś problem na forum

powodzenia

Wróć do „Projektowanie PCB, programy EDA, CAD, narzędziowe”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 24 gości