ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN
ĐIỆN TỬ
-
-
-
-
--
BÀI
TẬP DÀI MÔN VI
XỬ LÝ
Giảng
viên hướng
dẫn:
Nguyễn Tuấn Ninh
Sinh viên thực hiện:
Việt Hải
MSSV:
20222262
Lớp
:
Tự Động Hóa 12
K67
Hà Nội
1
/
2025
lOMoARcPSD| 59421307
Downloaded by Quoc Khai (quockhai36@gmail.com)
Câu 1: CT tính checksum 1byte (theo cách của lệnh XOR) của 1 frame dữ
liệu 10 byte trong vùng nhớ trong địa chỉ đầu từ 40H. Kết quả cất vào
thanh ghi R1 Bank thanh ghi số 3
50H
RS1
RS0
R0 , #40H
A , @R0
R5, #9B
R0
A , @R0
R5 , Loop1
R1 , A
Viết CT con nhận 7 byte qua cổng nối tiếp và cất 5 byte dữ liệu vào
bộ nhớ ngoài có địa chỉ đầu là 123H (7byte bao gồm: #SOT, Data1,
Data2,…., Data5, #EOT). Biết cổng nối tiếp đã được khởi tạo, cổng nhận
xong 1byte sẽ báo cờ RI =1, và phải tự xóa cờ RI trước khi nhận 1byte.
Lưu đồ:
Code:
Org
Main:
Setb
Setb
Mov
Mov
Mov
Loop 1:
Inc
Anl
Djnz
Mov
End
lOMoARcPSD| 59421307
Downloaded by Quoc Khai (quockhai36@gmail.com)
DPTR , #123H
RI , Loop1
A , SBUF
RI
A , #SOT , Label1
Loop1
A , #EOT , Label2
A , @DPTR
DPTR
Loop1
Lưu đồ:
Code:
Sub_prog:
Mov
Loop 1:
JN
B
Mov
Clr
CJNE
Ljmp
Label1:
CJNE
Ret
Label2:
Movx
Inc
Ljmp
lOMoARcPSD| 59421307
Câu 3:
Viết CT con đổi n ký tự thành chữ hoa (nếu đang là chữ thường).
Biết chuỗi ký tự trong bộ nhớ có địa chỉ đầu trong R0, độ dài trong R7.
A , @R0
A , #21H
@R0 , A
R0
R7 , Loop1
RI
Lưu đồ:
Code:
Sub_prog:
Loop 1:
Mov
Add
Mov
Inc
DJNZ
Ret
lOMoARcPSD| 59421307
Câu 4:
Viết CT đếm số dương trong miền nhớ 15 byte từ ô nhớ 70H tại
RAM trong.
50H
R0 , #70H
R1 , #0
R5, #15B
A , @R0
R0
A.7 , Label1
R1
R2 , Loop1
Lưu đồ:
Code:
Org
Main:
Mov
Mov
Mov
Loop 1:
Mov
Inc
JB
Inc
Label1:
DJNZ
End
lOMoARcPSD| 59421307
Câu 5:
Viết CT sử dụng Timer tạo 20 xung tần số 2 Hz tại chân P1.7. Biết
xung nhịp thạch anh 12MHz (Ton =50%, Toff = 50%).
50H
TMOD , #1B
R5 , #40B
TR0
R2 , #10B
TL0 , #AFH
TH0 , #3CH
TF0 , Loop2
R2 , Loop2
P1.7
R5 , Loop1
Lưu đồ:
Code:
Org
Main:
Mov
Mov
Loop 1:
SetB
Mov
Mov
Mov
Loop2
:
JNB
DJNZ
CPL
DJNZ
End
lOMoARcPSD| 59421307
Câu 6:
Viết CT chuyển 2 mảng dữ liệu. Biết mảng 1 có địa chỉ từ 1234H -
1243H trong RAM ngoài và mảng 2 có địa chỉ từ 70H đến 7FH trong
RAM trong
lOMoARcPSD| 59421307
Câu 7:
50H
DPTR , #1234H
R0 , #70H
R5 , #15B
R1 , @ R0
A , @DPTR
R0 , A
A , R1
@DPTR , A
R0
DPTR
R5, Loop1
Viết CT hiển thị
giá trị trong thanh ghi
R5 lên Led 7 thanh AC theo sơ đồ mạch hình sau. Biết giá trị trong thanh
ghi R5 <= 9
Lưu đồ:
Code:
Org
Main:
Mov
Mov
Mov
Loop 1:
Mov
Movx
Mov
Mov
Movx
Inc
Inc
DJNZ
End
lOMoARcPSD| 59421307
Câu 8:
C0H, F9H, A4H,
B0H, 99H, 92H,
82H, 8FH, 80H,90H
50H
DPTR, #8000H
A, R5
A, @A+DPTR
A, P1
Viết CT hiển thị số
lần bấm phím PB1
Lưu đồ:
Code:
Org 8000H
Table1:
DB
Org
Main:
Mov
Mov
Movc
Mov
End
lOMoARcPSD| 59421307
Câu 9:
lên Led 7 thanh theo sơ đồ
mạch hình sau. Biết số lần bấm phím từ 0-9.
Lưu đồ:
lOMoARcPSD| 59421307
Câu 10:
8000H
C0H, F9H,
A4H, B0H,
99H, 92H, 82H, 8FH,
80H, 90H
50H
DPTR , #8000H
R0 , #0B
P1 , #C0H
P3.2
R0
A, R0
A , @A + DPTR
P1 , A
R0 , #10B , Loop1
lOMoARcPSD| 59421307
Câu 9: Viết CT đọc giá trị điện áp U1 (0-1.5Vdc) và hiển thị lên Led 7
thanh theo sơ đồ mạch hình sau. Biết số hiển thị 0-F tương ứng với 0
1.5Vdc (SoC -Start of Convert; EoC- End of Convert).
8000H
C0H, F9H, A4H,
B0H, 99H, 92H,
82H, 8FH, 80H,
90H, 1H, 2H,
3H, 4H, 5H, 6H
50H
P3.6
P3.6
P3.7 , Loop1
DPTR , #8000H
A , P0
A , #OFH
A , @A+DPTR
P1 , A
Câu 10: Viết CT
chuyển 1 số BCD 2 chữ
Lưu đồ:
Code:
Org
Table1:
DB
Org
Main:
Setb
Nop
Clr
Loop
1
:
JNB
Mov
Mov
Anl
Movc
Mov
End
lOMoARcPSD| 59421307
số tại vùng nhớ RAM trong địa đầu 6EH thành 2 byte ASCII lưu
vào vùng nhớ RAM trong có địa đầu là 40H.
50H
R0 , #6EH
R1 , #40H
R0
A, #30H
@R1, A
A, @R0
R1
A, #30H @R1, A Tài
liệu tham khảo
1. Slide bài giảng vi
xử lý EE3480 –
Thầy Nguyễn Tuấn
Ninh.
2. MSC51
microcontroller
family users
manual.
Lưu đồ:
Code:
Org
Main:
Mov
Mov
Mov
Inc
Add
Mov
Mov
Inc
Add
Mov
End

Preview text:


ĐẠI HỌC BÁCH KHOA HÀ NỘI
TRƯỜNG ĐIỆN – ĐIỆN TỬ - - -- -- - - -- BÀI TẬP DÀI MÔN VI XỬ LÝ
Giảng viên hướng dẫn: Nguyễn Tuấn Ninh
Sinh viên thực hiện: Lê Việt Hải MSSV: 20222262
Lớp : Tự Động Hóa 12 – K67 Hà Nội 1 / 2025 lOMoAR cPSD| 59421307
Câu 1: CT tính checksum 1byte (theo cách của lệnh XOR) của 1 frame dữ
liệu 10 byte trong vùng nhớ trong có địa chỉ đầu từ 40H. Kết quả cất vào
thanh ghi R1 Bank thanh ghi số 3 Lưu đồ: Code: Org 50H Main: Setb RS1 Setb RS0 Mov R0 , #40H Mov A , @R0 Mov R5, #9B Loop 1: Inc R0 Anl A , @R0 Djnz R5 , Loop1 Mov R1 , A End
Viết CT con nhận 7 byte qua cổng nối tiếp và cất 5 byte dữ liệu vào
bộ nhớ ngoài có địa chỉ đầu là 123H (7byte bao gồm: #SOT, Data1,
Data2,…., Data5, #EOT). Biết cổng nối tiếp đã được khởi tạo, cổng nhận
xong 1byte sẽ báo cờ RI =1, và phải tự xóa cờ RI trước khi nhận 1byte.
Downloaded by Quoc Khai (quockhai36@gmail.com) lOMoAR cPSD| 59421307 Lưu đồ: Code: DPTR , #123H Sub_prog: Mov RI , Loop1 Loop 1: A , SBUF JN B RI Mov A , #SOT , Label1 Clr Loop1 CJNE Ljmp A , #EOT , Label2 Label1: CJNE Ret A , @DPTR Label2: DPTR Movx Loop1 Inc Ljmp
Downloaded by Quoc Khai (quockhai36@gmail.com) lOMoAR cPSD| 59421307 Câu 3:
Viết CT con đổi n ký tự thành chữ hoa (nếu đang là chữ thường).
Biết chuỗi ký tự trong bộ nhớ có địa chỉ đầu trong R0, độ dài trong R7. Lưu đồ: Code: Sub_prog: Loop 1: Mov A , @R0 Add A , #21H Mov @R0 , A Inc R0 DJNZ R7 , Loop1 Ret RI lOMoAR cPSD| 59421307 Câu 4:
Viết CT đếm số dương trong miền nhớ 15 byte từ ô nhớ 70H tại RAM trong. Lưu đồ: Code: Org 50H Main: Mov R0 , #70H Mov R1 , #0 Mov R5, #15B Loop 1: Mov A , @R0 Inc R0 JB A.7 , Label1 Inc R1 Label1: DJNZ R2 , Loop1 End lOMoAR cPSD| 59421307 Câu 5:
Viết CT sử dụng Timer tạo 20 xung tần số 2 Hz tại chân P1.7. Biết
xung nhịp thạch anh 12MHz (Ton =50%, Toff = 50%). Lưu đồ: Code: Org 50H Main: Mov TMOD , #1B Mov R5 , #40B Loop 1: SetB TR0 Mov R2 , #10B Mov TL0 , #AFH Mov TH0 , #3CH Loop2 : JNB TF0 , Loop2 DJNZ R2 , Loop2 CPL P1.7 DJNZ R5 , Loop1 End lOMoAR cPSD| 59421307 Câu 6:
Viết CT chuyển 2 mảng dữ liệu. Biết mảng 1 có địa chỉ từ 1234H -
1243H trong RAM ngoài và mảng 2 có địa chỉ từ 70H đến 7FH trong RAM trong lOMoAR cPSD| 59421307 Câu 7: Lưu đồ: Code: 50H Org DPTR , #1234H Main: R0 , #70H Mov R5 , #15B Mov Mov R1 , @ R0 Loop 1: A , @DPTR Mov R0 , A Movx A , R1 Mov @DPTR , A Mov R0 Movx DPTR Inc R5, Loop1 Inc DJNZ End Viết CT hiển thị giá trị trong thanh ghi
R5 lên Led 7 thanh AC theo sơ đồ mạch hình sau. Biết giá trị trong thanh ghi R5 <= 9 lOMoAR cPSD| 59421307 Câu 8: Lưu đồ: Code: Org 8000H C0H, F9H, A4H, Table1: B0H, 99H, 92H, DB 82H, 8FH, 80H,90H 50H Org DPTR, #8000H A, R5 Main: Mov A, @A+DPTR A, P1 Mov Movc Mov End Viết CT hiển thị số lần bấm phím PB1 lOMoAR cPSD| 59421307 Câu 9:
lên Led 7 thanh theo sơ đồ
mạch hình sau. Biết số lần bấm phím từ 0-9. Lưu đồ: lOMoAR cPSD| 59421307 Câu 10: 8000H C0H, F9H, A4H, B0H, 99H, 92H, 82H, 8FH, 80H, 90H 50H DPTR , #8000H R0 , #0B P1 , #C0H P3.2 R0 A, R0 A , @A + DPTR P1 , A R0 , #10B , Loop1 lOMoAR cPSD| 59421307
Câu 9: Viết CT đọc giá trị điện áp U1 (0-1.5Vdc) và hiển thị lên Led 7
thanh theo sơ đồ mạch hình sau. Biết số hiển thị 0-F tương ứng với 0
1.5Vdc (SoC -Start of Convert; EoC- End of Convert). Lưu đồ: Code: Org 8000H Table1: DB C0H, F9H, A4H, B0H, 99H, 92H, 82H, 8FH, 80H, 90H, 1H, 2H, 3H, 4H, 5H, 6H Org 50H Main: Setb P3.6 Nop Clr P3.6 Loop 1 : JNB P3.7 , Loop1 Mov DPTR , #8000H Mov A , P0 Anl A , #OFH Movc A , @A+DPTR Mov P1 , A End Câu 10: Viết CT chuyển 1 số BCD 2 chữ lOMoAR cPSD| 59421307
số tại vùng nhớ RAM trong có địa đầu là 6EH thành 2 byte ASCII lưu
vào vùng nhớ RAM trong có địa đầu là 40H. Lưu đồ: Code: Org 50H Main: Mov R0 , #6EH Mov R1 , #40H Mov Inc R0 Add A, #30H Mov @R1, A Mov A, @R0 Inc R1 Add A, #30H @R1, A Tài Mov liệu tham khảo
End 1. Slide bài giảng vi xử lý EE3480 – Thầy Nguyễn Tuấn Ninh. 2. MSC51 microcontroller family user’s manual.