Zadanie polega na napisaniu programu w Assemblerze, który będzie zapal i gasił diody w dowolnej sekwencji po naciśnięciu klawisz odpowiadającego za dana diodę (mikro-kontroler 8051)
Napisałem coś takiego, ale nie wiem dlaczego nie działa mi ta instrukcja if.
Są to moje początki z Asemblerem. Z góry dziękuje za wszelkie wskazówki
$INCLUDE (REG51.INC)
POCZATEK:
MOV r0, 0
lampka1 EQU p3.7
lampka2 EQU p3.6
lampka3 EQU p3.5
lampka4 EQU p3.4
KLAWIATURA:
JNB P1.7,ENTER
JNB P1.6,DOWN
JNB P1.5,UP
JNB P1.4,ESCAPE
JMP KLAWIATURA
ENTER:
IF( r0 == 0 )
CLR lampka1
DEC r0
JMP KLAWIATURA
elseIF( r0 == 1 )
SETB lampka1
INC r0
JMP KLAWIATURA
endif
JMP KLAWIATURA
DOWN:
CLR lampka2
JMP KLAWIATURA
UP:
CLR lampka3
JMP KLAWIATURA
ESCAPE:
CLR lampka4
JMP KLAWIATURA
end
Z góry dziękuje za wszelką pomoc i wskazówki.
Instrukcja warunkowa
Czysty assembler '51 nie ma instrukcji if, żaden procesor '51 nie ma takiego rozkazu i żaden standard nie obejmuje takiego zapisu.
Zamiana instrukcji warunkowych if (znanych z języków wysokopoziomowych) na kod maszynowy może być dokonana przez kompilator ale nie musi, wszystko zależy od tego z jakiego kompilatora korzystasz i jakie opcje włączyłeś podczas kompilacji.
Jeśli tak ma wyglądać Twój program, poszukaj jak działa instrukcja JB/JNB, JZ/JNZ lub CJNE. Jedna lub dwie z tych 5 instrukcji umożliwią Ci właściwe rozwiązanie problemu.
Zamiana instrukcji warunkowych if (znanych z języków wysokopoziomowych) na kod maszynowy może być dokonana przez kompilator ale nie musi, wszystko zależy od tego z jakiego kompilatora korzystasz i jakie opcje włączyłeś podczas kompilacji.
Jeśli tak ma wyglądać Twój program, poszukaj jak działa instrukcja JB/JNB, JZ/JNZ lub CJNE. Jedna lub dwie z tych 5 instrukcji umożliwią Ci właściwe rozwiązanie problemu.