zacząłem się bawić w programowaie na atmelach (dokładnie na ATMega). zapalanie, gaszenie, zmiany portów to mi wychodzi, ale pojedyncze bo kilka zmian na wyjścach nie jestem w stanie zauważyć przez brak opóźnienia. Czy ktoś mógłby mi pomóc jak zrobić jakąś przerwe czasową ok. 1-10ms oraz w granicach 1-2s.kwarc zastosowany w mikrokontrolerze to 11MHz. krąże myślami obok procedury
wait:
ldi temp, 255 ; załaduje do temp 255
dec temp ; zmniejszam o 1 temp
cpi temp, 0 ; porównuje czy jest równe 0
brne wait ; jeśli tak to koniec podprogramu jeśli nie to powrót do wait
ret
; i powinno to iść 255 razy jak sie skończy to powrót z podprogramu; zakładając że każda instrukcja zajmuje 1 do 2 cykli to przy 11MHz zajmie to ok 4*255*1/11M to wychodzi ok. 90mikrosekund
ale nie wiem czy dobrze kombinuje.w każdym razie wydaje mi się że dojście do 1s wymagałoby ok 11000 takich odwołań a na pewno jest prostszy sposób. Wszędzie gdzie nie poszukam znajduje tylko programowanie w C albo Bascomie i obszerne do tego opisy ale nigdzie nie potrafie znaleźć coś na temat asemblera (jest coś ale to dotyczy programowania mikroprocesorów w komputerach-a to stanowczo za wysoko dla mnie i inna obsługa, a do mikrokontrolerów znalezione opisy to już poważne programy zajmujące po kilka stron), a to co sie w mojej główce narodziło powyżej to jest na podstawie tych nielicznych na temat asemblera. nie moge znaleźć tych "podstawowych" podstaw. kto może pomóżcie. dzieki
Przeniesiono z Programowanie Ogólne. - arnoldziq
wait:
ldi temp, 255 ; załaduje do temp 255
dec temp ; zmniejszam o 1 temp
cpi temp, 0 ; porównuje czy jest równe 0
brne wait ; jeśli tak to koniec podprogramu jeśli nie to powrót do wait
ret
; i powinno to iść 255 razy jak sie skończy to powrót z podprogramu; zakładając że każda instrukcja zajmuje 1 do 2 cykli to przy 11MHz zajmie to ok 4*255*1/11M to wychodzi ok. 90mikrosekund
ale nie wiem czy dobrze kombinuje.w każdym razie wydaje mi się że dojście do 1s wymagałoby ok 11000 takich odwołań a na pewno jest prostszy sposób. Wszędzie gdzie nie poszukam znajduje tylko programowanie w C albo Bascomie i obszerne do tego opisy ale nigdzie nie potrafie znaleźć coś na temat asemblera (jest coś ale to dotyczy programowania mikroprocesorów w komputerach-a to stanowczo za wysoko dla mnie i inna obsługa, a do mikrokontrolerów znalezione opisy to już poważne programy zajmujące po kilka stron), a to co sie w mojej główce narodziło powyżej to jest na podstawie tych nielicznych na temat asemblera. nie moge znaleźć tych "podstawowych" podstaw. kto może pomóżcie. dzieki
Przeniesiono z Programowanie Ogólne. - arnoldziq
