SJMP PĘTLA ; pętla powrotu na początek programu
JMP $
END
Ad 2
$NOMOD51
$INCLUDE(REG517 INC) CSEGATO
MOV R2,m MOV R3,#4 MOV P5,#0EFH MOV A,P7
RRCA
JNC WYJŚCIE INCR2 DJNZ R3,etyl
; numer sprawdzanego klawisza ; licznik pętli, przesyłanie do R3 liczby 4 ; wysterowanie portu P5 ; wysłanie stanu z portu P7 do akumulatora
; przesuniecie bitowe w prawo ; skok na koniec, gdy flaga C=0
; R3=R3-1, jeśli R3!=0to skok do etyl
MOV R3,#4
MOVP5,#ODFH
MOVAJ>7
SETB C ; ustawienie C= 1
CPL C ; zmiana stanu C (wyzerowanie)
ety2:
RRCA
JNC WYJŚCIE INCR2 DJNZ R3,ety2
; przesuniecie bitowe w prawo ; skok na koniec, gdy flaga C=0 ; skok na koniec, gdy flaga C=0 ; R3=R3-1, jeśli R3!=0to skok do ety2
MOV R3,#4 MOV P5,#0BFH MOV A,P7 SETBC CPLC
RRCA
JNC WYJŚCIE INCR2 DJNZ R3,ety3
; przesuniecie bitowe w prawo ; skok na koniec, gdy flaga C=0 ; skok na koniec, gdy flaga C=0 ; R3=R3-1, jeśli R3!=0to skok do ety3
MOVR3,#4
MOVP5,#07FH
MOVAJ>7
SETBC
CPLC