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ę

stos w BASCOMIE 8051

pch
-
-
Posty:23
Rejestracja:27 maja 2003, o 06:56
Lokalizacja:Gdańsk
Kontaktowanie:
stos w BASCOMIE 8051

Postautor: pch » 12 sty 2005, o 17:06

Procedura obsługi przerwań w sposób skandaliczny zabezpiecza rejestry odkładając na stos wszystko co się da. W związku z tym postanowiłem samemu zrobić obsługę przerwania i skorzystać z parametru NOSAVE. Macie jakiś pomysł co odkładać na stos? Przecież nie zawsze trzeba zachowywać wszystkie rejestry. Ja mam przerwanie od zewnętrznego sygnału na int0. Zmienia się on od 0 do 1.2kHz. W czasie przerwania startuję lub zatrzymuję timer. Co muszę odłożyc na stosie aby program się nie wyłożył?

PC

Awatar użytkownika
ZbeeGin
-
-
Posty:170
Rejestracja:3 kwie 2003, o 10:10
Lokalizacja:Metropolia Katowice

Postautor: ZbeeGin » 12 sty 2005, o 19:43

Skompiluj bez NOSAVE, użyj disassemblera i zobacz w kodzie jakie rejestry używa Twój ISR (Sorry, czytaj: procedura obsługi przetwania) i wtedy zmodyfikuj program.

Obowiązkowo wrzuć na stos PSW, ACC oraz DPTR!

pch
-
-
Posty:23
Rejestracja:27 maja 2003, o 06:56
Lokalizacja:Gdańsk
Kontaktowanie:

Postautor: pch » 12 sty 2005, o 19:48

Przy okazji co to za rejestr "h"? Gdzieś widziałem zrzut Acc, PSW i h!! Nie było definicji dim h as cos_tam.
Z kolei w innym programie napisanym w Bascomie byly 3 przerwania int0, int1 i timer0. Wszystkie z NOSAVE i nigdzie nie było instrukcji pop ani push. Program coś odbieral i wysyłał po uarcie, obsługiwal lcd i przyciski. Jak to mogło dzialać?

PC

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 11 gości