I TP DÀI VI X
H tên: Đặng Đc Công. MSSV:20101181 Lp: KSTN-ĐKTĐ-K55
u 1: Viết CT đếm s âm trong min nh 100 byte t ô nh 123H ti RAM ngoài
Bài làm:
Quy ước bit cao nht(tc là bit 7) là bit du, và s
âm có bit cao nht bng 1.
S các s âm đếm được u tại R1.
Địa ch 123H là địa ch thp nht trong 100 byte k
nhau
Chương trình:
MAIN: MOV R0,#100
MOV DPTR,#123H
MOV R1,#00
LOOP: MOVX A,@DPTR
RLC A
JC NHAY
INC R1
NHAY: INC DPTR
DJNZ R0,LOOP
END
START
R0 #100
DPTR #123H
R1 #00
A @DPTR
RLC A
C = 1?
YES
R1 += 1
DPTR += 1
R0 -= 1
NO
R0 = 0?
END
YES
NO
u 2: Viết CT chuyn 2 mng d liu 10 byte. Biết mảng 1 có địa ch 1000H trong RAM
ngoài và mảng 2 có đa ch 70H trong RAM trong.
Bài làm:
Quy ước 1000H và 70H là các địa ch thp nht ca
mi mng 10 byte trong các RAM.
Chương trình:
MAIN: MOV R2,#10
MOV DPTR,#1000H
MOV R0,#70H
LOOP: MOVX A,@DPTR
XCH A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R2,LOOP
END
START
R2 #10
DPTR #1000H
R0 #70
A @DPTR
XCH A,@R0
@DPTR A
R0 += 1
DPTR += 1
R2 -= 1
R2 = 0?
END
YES
NO
u 3: Viết CT cng hai s BCD 4 ch s trong RAM trong, kết qu ct vào sô th 2 .
Biết s th 1 đặt ti ô nh 70H, và s th 2 đt ti ô nh 60H.
Bài làm:
Quy ước 2 s BCD có byte thp ng với địa ch thp.
Kết qu ct vào s th 2, nếu kết qu có tràn s ct vào
byte 62H.
Chương trình:
MAIN: MOV R0,#70H
MOV R1,#60H
MOV R2,#2
CLR C
LOOP: MOV A,@R0
ADDC A,@R1
DA A
MOV @R1,A
INC R0
INC R1
DJNZ R2,LOOP
JNC EXIT
MOV 62H,#1
EXIT: END
START
R0 #70H
R1 #60H
R2 #2
C #0
A @R0
A += (@R1+C)
DA A
@R1 A
R0 += 1
R1 += 1
R2 -= 1
R2 = 0?
NO
YES
C = 1?
YES
62H #1
END
NO
u 4: Viết CT tính trung bình 10 byte trong Ram ngoài t ô nh 1234H.
Bài làm:
Quy ước: Phép tính trung bình có tơng trong R0, s
dư trong R1. Đa ch 1234H là đa ch thp nht trong 10 byte
k nhau.
Chương trình:
MAIN: MOV DPTR,#1234H
MOV R0,#00
MOV R1,#00
MOV R2,#10
LOOP: MOVX A,@DPTR
MOV B,#10
DIV AB
ADD A,R0
MOV R0,A
MOV A,B
ADD A,R1
MOV R1,A
INC DPTR
DJNZ R2,LOOP
MOV A,R1
MOV B,#10
DIV AB
ADD A,R0
MOV R0,A
MOV R1,B
END
START
DPTR #1234H
R0 #00
R1 #00
R2 #10
A @DPTR
B #10
DIV AB
A += R0
R0 A
A B
A += R1
R1 A
DPTR += 1
R2 -= 1
R2 = 0?
NO
YES
A R1
B #10
DIV AB
A += R0
R0 A
R1 B
END
u 5: Viết CT s dng Timer to xung tn s 1Hz ti chân P1.0. Biết xung nhp thch
anh 12MHz ( Ton =50%, Toff = 50%).
Bài làm:
Tn s 1Hz => T= 1s. Ton=Toff= 500.000us
S dng Timer0 chế độ 16 bit, thi gian
50000 gm 10 ln.
15535D = 3CAFH
Chương trình:
MAIN: MOV TMOD,#00000001B
SETB P1.0
LOOP: MOV R1,#10
LOOP1: MOV TH0,#3CH
MOV TL0,#0AFH
CLR TF0
SETB TR0
JNB TF0,$
CLR TR0
DJNZ R1,LOOP1
CPL P1.0
SJMP LOOP
END
START
TMOD #00000001B
P1.0 = 1
R1 #10
TH0 #3CH
TL0 #0AFH
TF0 = 0
TR0 = 1
TF0 = 0
YES
N O
R1 -= 1
TR0 = 0
R1 = 0
NO
YES
CPL P1.0