GRUPA IIB
1.Podaj przykłady selektywnego ustawiania, negowania i zerowania bitów 0,2,3,6 w porcie P1.
ORL P1,#01001101 B
XRL P1,#01001101 B
ANL P1,#10110010 B
2. Podaj przykład pośredniego zapisu i odczytu pamięci wewnętrznej danych.
MOV R0,#21H
MOV ACC,@R0 - odczyt z komórki 21H
MOV @R0,#0FF H - zapis do komórki 21H
3. Stosując adresowanie bitowe skopiuj bit 7 portu P1 do bitu 2 rejestru o adresie 20 H
MOV C,P1.7
MOV 1,C
4. Podaj stan rejestrów IE i IP jeżeli uaktywniamy przerwania INT1, T0 i ES. ES ma najwyższy priorytet.
IE=10010110 B IP=10000000 B
5. Napisz procedurę zamiany zmiennej BIN (30H) na kod U2 (31H) dla liczb z zakresu 0-30H.
W tym celu wykorzystaj porównanie arytmetyczne
BIN EQU 30H
U2 EQU 31H
BIN_U2:
PUSH A
CJNE BIN,#30H,DALEJ
DALEJ:
JNC PRZEPISZ
MOV A,BIN
CPL A
INC A
SJMP KONIEC
PRZEPISZ:
MOV A,BIN
KONIEC:
MOV U2,A
POP A
6.Stosując pętlę programową DJNZ oraz indeksując rejestr R1 poprzez adresowanie pośrednie, zaadresuj co drugą komórkę pamięci od adresu 30H do adresu 40H. Do komórek pamięci wpisz ich adresy.
MOV R1,30H
MOV A,#9
PETLA:
MOV @R1,R1
INC R1
INC R1
DJNZ A,PETLA
GRUPA IA
1. Podaj przykładu adresowania bitowego na przykładzie bitu 2 akumulatora.
CLR ACC.2
SETB ACC.2
MOV ACC.2
CPL ACC.2
2. Stosując operację maskowania na rejestrze PSW zamień bank 1 na bank 2
ANL PSW,#11110111 B
ORL PSW,#00001000 B
3. Podaj przykłady odwołań do pamięci programu, oraz zewnętrznej pamięci danych.
MOVC A,@A+DPTR MOVX A,@Ri
4. Napisz dwie przykładowe pętle licznikowe operające się na rozkazach DJNZ oraz CJNE
MOV A,#5
MOV B,#0
LOOP:
INC B
DJNZ A,LOOP
MOV A,#0
CJNE A,#10,LOOP
LOOP:
INC A
RET
5. Napisz procedurę zamiany liczby zapisanrj w BCD na kod U2. Wykorzystaj stos pamięci. Przyjmij przekazywanie danych przez rejestry R6(BCD) i R7(U2)
BCD EQU R6
U2 EQU R7
BCD_U2
MOV A,BCD
ANL A,#11110000 B
SWAP A
MOV B,#10
MUL A,B
PUSH A
MOV A,BCD
ANL A,#00001111 B
MOV U2,A
POP A
ADD A,U2
MOV U2,A
RET
6. Na przykładzie obsługi timera 1 pracującego w trybie 1, odmierzającego czas 50ms napisz stosowne podprogramy i procedurę obsługi przerwania. Wskaż miejsce obu procedur w kodzie programu.
LJMP START
ORG 1BH
CLR TR1
MOV TL1,#0
MOV TH1,#76
RETI
ORG 100H
START:
MOV TMOD,#00010000 B
MOV TL1,#0
MOV TH1,#76
SETB EA1
SETB ET1
CZAS_50_MS:
SETB TR1
ACALL CZAS_50MS
Stosując adresowanie bezpośrednie skopiuj R5 BANKU 2 DO ACC
MOV A,21
Podaj wartość SP jeżeli stos pamięci organizujemy od rejestru R2 BANKU 2. Podaj max. rozmiar stosu dla nowego SP.
SP=11H , 14 bajtów
BCD_BIN:
MOV A,BCD
ANL A,#0FH
SWAP A
MUL AB
MOV B,BCD
ANL B,#0FH
ADD A,B
MOV BIN,A
RET
BIN_BCD
MOV A,BIN
MOV C,#100
DIV AB
MOV BCD,A
MOV A,B
DIV AB
SWAP A
ORL A,B
MOV BCD2,A
RET
3.BCD->U2
MOV A,R6
PUSH ACC
SWAP A
ANL A,0FH
MOV B,0AH
MUL AB
MOV R7,A
POP ACC
ANL A,OFH
ADD A,R7
MOV R7,A