Witam,
Na zajęciach z układów cyfrowych mamy wykonać projekt, który poprzez 2 fototranzystory zlicza osoby wchodzące i wychodzące. System obsługujący ma być napisany w assemblerze pod mikrokontroler 8051. Idea działania systemu jest następująca dla zliczania wejść:
- Jeżeli 'aktywny' fototranzystor na porcie P0.1, to przechodzimy dalej;
- Dodajemy do rejestru R1 wartość 1;
- Jeżeli fototranzystor P0.2 'nieaktywny', to przechodzimy dalej;
- Jeżeli rejestr R1 równy 1 to krok 5. , w przeciwnym razie R1 = 0;
- Jeżeli P0.1 'aktywna' to dodaj do akumulatora 1.
Po zapoznaniu się z rozkazami assemblera napisałem program, który niestety nie kompiluje się. Program 8051 Editor nie rozpoznaje komend CMP i JE, więc przepisałem je na JB i JNB i równiez nie kompilują się.
Proszę Was o nakierowanie mnie jak to wykonać. Mile widziany inny algorytm niż mój przedstawiony niżej. A także prosiłbym o wskazanie symulatora 8051. Przeszukiwałem zasoby sieci przez kilka dni bezskutecznie.
$mod51
org 0h
ljmp main
main:
clr a
mov p0, #255
mov r1, #0
mov r2, #0
jb p0.1 d1a
jb p0.2 d2a
; warunek na wchodzenie
d1a:
mov r1, #1
jnb p0.2, d1b
d1b:
jb r1, d1c
jnb r1, d1cn
d1c:
jnb p0.1, d1d
jb p0.1, d1dn
d1cn:
mov r1, #0
d1d:
inc a
; warunek na wychodzenie
d2a:
mov r2, #1
jnb p0.1, d2b
d2b:
jb r2, d2c
jnb r2, d2cn
d2c:
jnb p0.2, d2d
jb p0.2, d2dn
d2cn:
mov r2, #0
d2d:
dec a
jmp main
end
Kompilator zgłasza błędy przy następujących komendach typu:
jb r1, d1c
jnb r1, d1cn
Pozdrawiam