Witam.
Mam mały problem przy pisaniu programu w Assembler i nie mogę sobie poradzić.
Sprawa jest następująca.
Mam instrukcję sprawdzającą czy na wejsciu jest 1 i jezeli jest to pomija nastepną instrukcję:
sbis PORTB,SET1
Gdy nie jest jedynką to ma wykonać kolejną instrukcję i tutaj mam zagwostkę. Potrzebuję przestawic dwa różne bity w danym porcie (jeden ma byc 0 drugi ma byc 1)
Potrafie albo jeden ustawic albo drugi wyzerowac, niepotrafie za pomoca jednej instrukcji tego zrobic, a wlasnie potrzebuje mjiec to w jedenej instrukcji, zeby ewentualnego skoka zrobil do tego, do czego potrzeba.
Ktoś ma pomysł jak zrobić, by za pomocą jednej instrukcji ustawić jeden port na o a drugi na 1?
Pozdrawiam.
Dodano po 21 [minuty]:
Wyjaśniam dokładniej:
Numery po lewej stronie to linijki kodu w ASM
1.Sprawdzam konkretny bit (gdy jest równy 1 to skok do linijki 3)
2. Ustawienie jednego bitu na np. 1 i tym samym zanegowanie innego bitu
3. Tutaj skok
Miałem pewną koncepcję, ale wtedy musiałbym ingerować w cały port, co nie jest dozwolone. Poprostu potrafie albo jakis bit ustawić albo wyzerować, niepotrafie jednego wyzerować a drugiego ustawić na raz.
Jak widać, musi to zostać zrealizowane w jednej linijce, w tym problem.
Dziękuję za zainteresowanie.
Pozdrawiam.
Mam mały problem przy pisaniu programu w Assembler i nie mogę sobie poradzić.
Sprawa jest następująca.
Mam instrukcję sprawdzającą czy na wejsciu jest 1 i jezeli jest to pomija nastepną instrukcję:
sbis PORTB,SET1
Gdy nie jest jedynką to ma wykonać kolejną instrukcję i tutaj mam zagwostkę. Potrzebuję przestawic dwa różne bity w danym porcie (jeden ma byc 0 drugi ma byc 1)
Potrafie albo jeden ustawic albo drugi wyzerowac, niepotrafie za pomoca jednej instrukcji tego zrobic, a wlasnie potrzebuje mjiec to w jedenej instrukcji, zeby ewentualnego skoka zrobil do tego, do czego potrzeba.
Ktoś ma pomysł jak zrobić, by za pomocą jednej instrukcji ustawić jeden port na o a drugi na 1?
Pozdrawiam.
Dodano po 21 [minuty]:
Wyjaśniam dokładniej:
Numery po lewej stronie to linijki kodu w ASM
1.Sprawdzam konkretny bit (gdy jest równy 1 to skok do linijki 3)
2. Ustawienie jednego bitu na np. 1 i tym samym zanegowanie innego bitu
3. Tutaj skok
Miałem pewną koncepcję, ale wtedy musiałbym ingerować w cały port, co nie jest dozwolone. Poprostu potrafie albo jakis bit ustawić albo wyzerować, niepotrafie jednego wyzerować a drugiego ustawić na raz.
Jak widać, musi to zostać zrealizowane w jednej linijce, w tym problem.
Dziękuję za zainteresowanie.
Pozdrawiam.