Bài tập vi xử lý (họ vi điều khiển 8051) - Lê Chí Thông
Đại Học Bách Khoa TP.HCM – Khoa Điện-Điện Tử
Lê Chí Thông – chithong@gmail.com
BÀI TẬP VI XỬ LÝ (HỌ VI ĐIỀU KHIỂN 8051)
1. CẤU TRÚC PHẦN CỨNG - GIẢI MÃ ĐỊA CHỈ
1.1 Sꢀ dꢁng 1 vi mꢂch 74138 và các cꢃng cꢄn thiꢅt ꢆꢇ thiꢅt kꢅ mꢂch giꢈi mã ꢆꢉa chꢊ tꢂo ra các tín
hiꢋu chꢌn chip tưꢍng ꢎng các vùng ꢆꢉa chꢊ sau:
Tín hiꢋu chꢌn chip
Vùng ꢆꢉa chꢊ
ꢏꢐc tính truy xuꢑt
PSEN
0000H - 3FFFH
CS0
CS1
CS2
4000H - 7FFFH
6000H - 7FFFH
PSEN
RD,WR
8000H - 87FFH
8800H - 8FFFH
CS3
CS4
RD
WR
1.2
hiꢋu ch
S
ꢀ
d
ꢁ
ng 1 vi m
ꢂ
ch 74138 và các c
ꢎ
ꢃ
ng cꢄ
sau:
n thi
ꢅ
t
ꢆꢇ thiꢅt kꢅ mꢂch giꢈi mã ꢆꢉa chꢊ tꢂo ra các tín
ꢌ
n chip tưꢍng
ng các vùng ꢆꢉa chꢊ
Tín hi
ꢋ
u ch n chip Vùng ꢆꢉa ch
ꢌ
ꢊ
ꢏꢐc tính truy xu
PSEN
ꢑt
9800H - 9BFFH
9800H - 9BFFH
CS0
CS1
RD,WR
9C00H - 9DFFH
9E00H - 9EFFH
CS2
CS3
RD,WR
RD,WR
1.3 Ch
ꢊ
tín hi u ch
dùng m
ꢌ
ꢒ
t vi m
ꢂ
ch 74138 (không dùng thêm c
ꢎ
ꢃng), thiꢅt kꢅ mꢂch giꢈi mã ꢆꢉa chꢊ tꢂo ra mꢒt
ng t ꢆꢉa ch F000H-F3FFH.
ꢋ
n chip /CS tưꢍng
ꢄ
m
ꢊ
2. SỬ DỤNG TẬP LỆNH
Truy xuất RAM nội
2.1 Vi
ꢅ
t CT ghi 40H vào ô nh
ꢓ
ꢓ
30H c
ꢔ
a RAM n
ꢒ
i theo 2 cách (ꢆꢉnh ꢆꢉa ch
ô nh tr
i theo 2 cách (ꢆꢉnh ꢆꢉa ch
ô nh tr
a RAM n i theo 2 cách
ꢊ
ô nh
ꢓ trꢕc tiꢅp và ꢆꢉnh
ꢆꢉa ch
ꢊ
ô nh gián tiꢅp).
2.2 Vi
ꢅ
t CT xóa ô nh 31H c
p).
t CT ghi n
p và ꢆꢉnh ꢆꢉa ch
t CT ꢆꢌc ô nh
và ꢆꢉnh ꢆꢉa ch ô nh
2.5 Vi t CT chuy n d
ꢆꢉnh ꢆꢉa ch ô nh tr c ti
Truy xuất RAM ngoài
2.6 Vi t CT ghi 40H vào ô nh
ꢓ
ꢔ
a RAM n
ꢒi theo 2 cách (ꢆꢉnh ꢆꢉa ch
ꢊ
ꢓ
ꢕ
c ti p và ꢆꢉnh ꢆꢉa ch
ꢅ
ꢊ
ô
nh
2.3 Vi
tr c ti
2.4 Vi
ꢓ
gián ti
ꢅ
ꢅ
ꢒ
i dung thanh ghi A vào ô nh
ô nh gián ti p).
ꢓ
32H c
ꢔ
a RAM n
ꢒ
ꢊ
ô nhꢓ
ꢕ
ꢅ
ꢊ
ꢓ
ꢅ
ꢅ
ꢓ
33H c a RAM n
gián ti p).
li u ô nh
p và ꢆꢉnh ꢆꢉa ch
ꢔ
ꢒ
i vào thanh ghi A theo 2 cách (ꢆꢉnh ꢆꢉa ch
ꢊ
ꢓ ꢕc tiꢅp
ꢊ
ꢓ
ꢅ
ꢅ
ꢇ
ꢖ
ꢋ
ꢅ
ꢓ
34H c
ꢔ
a RAM n
ꢒ
i vào ô nh
p).
ꢓ
35H c
ꢔ
ꢒ
(
ꢊ
ꢓ
ꢕ
ꢊ
ô nh gián tiꢅ
ꢓ
ꢅ
ꢓ 0030H cꢔa RAM ngoài.
Bài tập Vi Xử Lý 8051- Trang 1/6
Đại Học Bách Khoa TP.HCM – Khoa Điện-Điện Tử
Lê Chí Thông – chithong@gmail.com
2.7 Viꢅt CT xóa ô nhꢓ 0031H cꢔa RAM ngoài.
2.8 Viꢅt CT ꢆꢌc ô nhꢓ 0032H cꢔa RAM ngoài vào thanh ghi A.
2.8 Viꢅt CT ghi nꢒi dung thanh ghi A vào ô nhꢓ 0033H cꢔa RAM ngoài.
2.10 Viꢅt CT chuyꢇn dꢖ liꢋu ô nhꢓ 0034H cꢔa RAM ngoài vào ô nhꢓ 0035H cꢔa RAM ngoài.
Truy xuất Port
2.11 Viꢅt CT xuꢑt 0FH ra Port 1.
2.12 Viꢅt CT xuꢑt F0H ra Port 2.
2.13 Viꢅt CT xuꢑt nꢒi dung thanh ghi A ra Port 1.
2.14 Viꢅt CT nhꢗp tꢘ Port 1 vào thanh ghi A.
2.15 Viꢅt CT nhꢗp tꢘ Port 1 và xuꢑt ra Port 2.
2.16 Viꢅt CT xuꢑt 1 (mꢎc logic cao) ra chân P1.0
2.17 Viꢅt CT xuꢑt 0 (mꢎc logic thꢑp) ra chân P1.1
Truy xuất RAM nội, RAM ngoài và Port
2.18 Viꢅt CT chuyꢇn dꢖ liꢋu ô nhꢓ 40H (RAM nꢒi) ꢆꢅn ô nhꢓ 2000H (RAM ngoài). Làm theo 2
cách (ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ trꢕc tiꢅp và ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ gián tiꢅp).
2.19 Viꢅt CT chuyꢇn dꢖ liꢋu ô nhꢓ 2001H (RAM ngoài) vào ô nhꢓ 41H (RAM nꢒi). Làm theo 2
cách (ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ trꢕc tiꢅp và ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ gián tiꢅp).
2.20 Viꢅt CT nhꢗp tꢘ Port 1 vào ô nhꢓ 42H (RAM nꢒi). Làm theo 2 cách (ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ trꢕc
tiꢅp và ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ gián tiꢅp).
2.21 Viꢅt CT nhꢗp tꢘ Port 1 vào ô nhꢓ 2002H (RAM ngoài).
2.22 Viꢅt CT lꢑy ô nhꢓ 43H (RAM nꢒi) xuꢑt ra Port 1. Làm theo 2 cách (ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ trꢕc
tiꢅp và ꢆꢉnh ꢆꢉa chꢊ ô nhꢓ gián tiꢅp).
2.23 Viꢅt CT lꢑy ô nhꢓ 2003H (RAM ngoài) xuꢑt ra Port 1.
Sử dụng vòng lặp
2.24 Viꢅt CT xóa 20 ô nhꢓ RAM nꢒi có ꢆꢉa chꢊ bꢙt ꢆꢄu là 30H.
2.25 Viꢅt CT xóa các ô nhꢓ RAM nꢒi tꢘ ꢆꢉa chꢊ 20H ꢆꢅn 7FH.
2.26 Viꢅt CT xóa 250 ô nhꢓ RAM ngoài có ꢆꢉa chꢊ bꢙt ꢆꢄu là 4000H.
2.27 Viꢅt CT xóa 2500 ô nhꢓ RAM ngoài có ꢆꢉa chꢊ bꢙt ꢆꢄu là 4000H.
2.28 Viꢅt CT xóa toàn bꢒ RAM ngoài có dung lưꢚng 8KB, biꢅt rꢛng ꢆꢉa chꢊ ꢆꢄu là 2000H.
2.29 Viꢅt CT chuyꢇn mꢒt chuꢜi dꢖ liꢋu gꢝm 10 byte trong RAM nꢒi có ꢆꢉa chꢊ ꢆꢄu là 30H ꢆꢅn vùng
RAM nꢒi có ꢆꢉa chꢊ ꢆꢄu là 40H.
2.30 Viꢅt CT chuyꢇn mꢒt chuꢜi dꢖ liꢋu gꢝm 100 byte trong RAM ngoài có ꢆꢉa chꢊ ꢆꢄu là 2000H
ꢆꢅn vùng RAM ngoài có ꢆꢉa chꢊ ꢆꢄu là 4000H.
2.31 Viꢅt CT chuyꢇn mꢒt chuꢜi dꢖ liꢋu gꢝm 10 byte trong RAM nꢒi có ꢆꢉa chꢊ ꢆꢄu là 30H ꢆꢅn vùng
RAM ngoài có ꢆꢉa chꢊ ꢆꢄu là 4000H.
2.32 Viꢅt CT chuyꢇn mꢒt chuꢜi dꢖ liꢋu gꢝm 10 byte trong RAM ngoài có ꢆꢉa chꢊ ꢆꢄu là 5F00H ꢆꢅn
vùng RAM nꢒi có ꢆꢉa chꢊ ꢆꢄu là 40H.
Bài tập Vi Xử Lý 8051- Trang 2/6
Đại Học Bách Khoa TP.HCM – Khoa Điện-Điện Tử
Lê Chí Thông – chithong@gmail.com
2.33 Cho mꢒt chuꢜi dꢖ liꢋu gꢝm 20 byte liên tiꢅp trong RAM nꢒi, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 20H. Hãy viꢅt
CT lꢄn lưꢚt xuꢑt các dꢖ kiꢋu này ra Port 1.
2.34 Giꢈ sꢀ Port 1 ꢆưꢚc nꢞi ꢆꢅn mꢒt thiꢅt bꢉ phát dꢖ liꢋu (ví dꢁ như 8 nút nhꢑn). Hãy viꢅt CT nhꢗn
liên tiꢅp 10 byte dꢖ liꢋu tꢘ thiꢅt bꢉ phát này và ghi vào 10 ô nhꢓ (RAM nꢒi) liên tiꢅp bꢙt ꢆꢄu tꢘ ô
nhꢓ 50H.
Tạo trễ (delay)
2.35 Viꢅt CT con delay 100ꢟs, biꢅt rꢛng thꢂch anh (xtal) dùng trong hꢋ thꢞng là:
a. 12 MHz
b. 6 MHz
2.36 Viꢅt CT con delay 100ms, biꢅt rꢛng thꢂch anh (xtal) dùng trong hꢋ thꢞng là:
a. 12 MHz
b. 11,0592 MHz
2.37 Viꢅt CT con delay 1s, biꢅt rꢛng thꢂch anh (xtal) dùng trong hꢋ thꢞng là:
a. 12 MHz
b. 24 MHz
Tạo xung
2.38 Viꢅt CT tꢂo mꢒt xung dưꢍng (
là 12 MHz.
) tꢂi chân P1.0 vꢓi ꢆꢒ rꢒng xung 1ms, biꢅt rꢛng xtal
2.39 Viꢅt CT tꢂo chuꢜi xung vuông có f = 100 KHz tꢂi chân P1.1 (Xtal 12 MHz).
2.40 Viꢅt CT tꢂo chuꢜi xung vuông có f = 100 KHz và có chu kꢠ làm viꢋc D = 40% tꢂi chân P1.2
(Xtal 12 MHz).
2.41 Viꢅt CT tꢂo chuꢜi xung vuông có f = 10 KHz tꢂi chân P1.3 (Xtal 24 MHz).
2.42 Viꢅt CT tꢂo chuꢜi xung vuông có f = 10 KHz và có chu kꢠ làm viꢋc D = 30% tꢂi chân P1.3
(Xtal 24 MHz).
2.43 Viꢅt CT tꢂo chuꢜi xung vuông có f = 10 Hz tꢂi chân P1.4 (Xtal 12 MHz).
2.44 Viꢅt CT tꢂo chuꢜi xung vuông có f = 10 Hz và có chu kꢠ làm viꢋc D = 25% tꢂi chân P1.5 (Xtal
12 MHz).
Các phép toán
2.45 Cho mꢒt chuꢜi sꢞ 8 bit không dꢑu trong RAM nꢒi gꢝm 10 sꢞ bꢙt ꢆꢄu tꢘ ô nhꢓ 30H. Hãy viꢅt
CT con cꢒng chuꢜi sꢞ này và ghi kꢅt quꢈ vào ô nhꢓ 2FH (giꢈ sꢀ kꢅt quꢈ nhꢡ hꢍn hoꢐc bꢛng 255).
2.46 Cho mꢒt chuꢜi sꢞ 8 bit không dꢑu trong RAM nꢒi gꢝm 10 sꢞ bꢙt ꢆꢄu tꢘ ô nhꢓ 30H. Hãy viꢅt
CT con cꢒng chuꢜi sꢞ này và ghi kꢅt quꢈ vào ô nhꢓ 2EH:2FH (ô nhꢓ 2EH chꢎa byte cao cꢔa kꢅt
quꢈ và ô nhꢓ 2FH chꢎa byte thꢑp cꢔa kꢅt quꢈ).
2.47 Cho mꢒt chuꢜi sꢞ 16 bit không dꢑu trong RAM nꢒi gꢝm 10 sꢞ bꢙt ꢆꢄu tꢘ ô nhꢓ 30H theo
nguyên tꢙc ô nhꢓ có ꢆꢉa chꢊ nhꢡ hꢍn chꢎa byte cao và ô nhꢓ có ꢆꢉa chꢊ lꢓn hꢍn chꢎa byte thꢑp. (Ví
dꢁ: byte cao cꢔa sꢞ 16 bit ꢆꢄu tiên ꢆưꢚc cꢑt tꢂi ô nhꢓ 30H và byte thꢑp cꢔa sꢞ 16 bit ꢆꢄu tiên ꢆưꢚc
cꢑt tꢂi ô nhꢓ 31H). Hãy viꢅt CT con cꢒng chuꢜi sꢞ này và cꢑt kꢅt quꢈ vào ô nhꢓ 2EH:2FH.
2.48 Viꢅt CT con lꢑy bù 2 sꢞ 16 bit chꢎa trong R2:R3.
Bài tập Vi Xử Lý 8051- Trang 3/6
Đại Học Bách Khoa TP.HCM – Khoa Điện-Điện Tử
Lê Chí Thông – chithong@gmail.com
So sánh
2.49 Cho hai sꢞ 8 bit, sꢞ thꢎ 1 chꢎa trong (30H), sꢞ thꢎ 2 chꢎa trong (31H). Viꢅt CT con so sánh
hai sꢞ này. Nꢅu sꢞ thꢎ 1 lꢓn hꢍn hoꢐc bꢛng sꢞ thꢎ 2 thì set cꢢ F0, nꢅu ngưꢚc lꢂi thì xóa cꢢ F0.
2.50 Cho hai sꢞ 16 bit, sꢞ thꢎ 1 chꢎa trong (30H):(31H), sꢞ thꢎ 2 chꢎa trong (32H):(33H). Viꢅt CT
con so sánh hai sꢞ này. Nꢅu sꢞ thꢎ 1 lꢓn hꢍn hoꢐc bꢛng sꢞ thꢎ 2 thì set cꢢ F0, nꢅu ngưꢚc lꢂi thì xóa
cꢢ F0.
2.51 Cho mꢒt chuꢜi ký tꢕ dưꢓi dꢂng mã ASCII trong RAM nꢒi, dài 20 byte, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 50H.
Viꢅt CT xuꢑt các ký tꢕ in hoa có trong chuꢜi này ra Port 1. Biꢅt rꢛng mã ASCII cꢔa ký tꢕ in hoa là
tꢘ 65 (chꢖ A) ꢆꢅn 90 (chꢖ Z).
2.52 Viꢅt CT nhꢗp mꢒt chuꢜi ký tꢕ tꢘ Port 1 dưꢓi dꢂng mã ASCII và ghi vào RAM ngoài, bꢙt ꢆꢄu
tꢘ ꢆꢉa chꢊ 0000H. Biꢅt rꢛng chuꢜi này kꢅt thúc bꢛng ký tꢕ CR (có mã ASCII là 0DH) và ghi cꢈ ký
tꢕ này vào RAM.
2.53 Viꢅt CT nhꢗp mꢒt chuꢜi ký tꢕ tꢘ Port 1 dưꢓi dꢂng mã ASCII và ghi vào RAM ngoài, bꢙt ꢆꢄu
tꢘ ꢆꢉa chꢊ 0000H. Biꢅt rꢛng chuꢜi này kꢅt thúc bꢛng ký tꢕ CR (có mã ASCII là 0DH) và không ghi
ký tꢕ này vào RAM.
2.54 Viꢅt CT nhꢗp mꢒt chuꢜi ký tꢕ tꢘ Port 1 dưꢓi dꢂng mã ASCII và ghi vào RAM ngoài, bꢙt ꢆꢄu
tꢘ ꢆꢉa chꢊ 0000H. Biꢅt rꢛng chuꢜi này kꢅt thúc bꢛng ký tꢕ CR (có mã ASCII là 0DH) và không ghi
ký tꢕ này vào RAM mà thay bꢛng ký tꢕ null (có mã ASCII là 00H).
2.55 Cho mꢒt chuꢜi ký tꢕ dưꢓi dꢂng mã ASCII trong RAM nꢒi, dài 20 byte, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 50H.
Viꢅt CT ꢆꢃi các ký tꢕ in hoa có trong chuꢜi này thành ký tꢕ thưꢢng. Biꢅt rꢛng mã ASCII cꢔa ký tꢕ
thưꢢng bꢛng mã ASCII cꢔa ký tꢕ in hoa cꢒng thêm 32.
2.56 Cho mꢒt chuꢜi ký tꢕ sꢞ dưꢓi dꢂng mã ASCII trong RAM nꢒi, dài 20 byte, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ
50H. Viꢅt CT ꢆꢃi các ký tꢕ sꢞ này thành mã BCD. Biꢅt rꢛng mã ASCII cꢔa các ký tꢕ sꢞ là tꢘ 30H
(sꢞ 0) ꢆꢅn 39H (sꢞ 9).
Sử dụng lệnh nhảy có điều kiện
2.57 Cho mꢒt chuꢜi dꢖ liꢋu dưꢓi dꢂng sꢞ có dꢑu trong RAM ngoài, dài 100 byte, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ
0100H. Viꢅt CT lꢄn lưꢚt xuꢑt các dꢖ liꢋu trong chuꢜi ra Port 1 nꢅu là sꢞ dưꢍng (xem sꢞ 0 là dưꢍng)
và xuꢑt ra Port 2 nꢅu là sꢞ âm.
2.58 Cho mꢒt chuꢜi dꢖ liꢋu dưꢓi dꢂng sꢞ có dꢑu trong RAM ngoài, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 0100H và kꢅt
thúc bꢛng sꢞ 0. Viꢅt CT lꢄn lưꢚt xuꢑt các dꢖ liꢋu trong chuꢜi ra Port 1 nꢅu là sꢞ dưꢍng và xuꢑt ra
Port 2 nꢅu là sꢞ âm.
2.59 Cho mꢒt chuꢜi dꢖ liꢋu dưꢓi dꢂng sꢞ không dꢑu trong RAM ngoài, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 0100H và
ꢆꢒ dài chuꢜi là nꢒi dung ô nhꢓ 00FFH. Viꢅt CT ꢆꢅm sꢞ sꢞ chꢣn (chia hꢅt cho 2) có trong chuꢜi và
cꢑt vào ô nhꢓ 00FEH.
2.60 Cho mꢒt chuꢜi dꢖ liꢋu dưꢓi dꢂng sꢞ không dꢑu trong RAM ngoài, bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 0100H và
ꢆꢒ dài chuꢜi là nꢒi dung ô nhꢓ 00FFH. Viꢅt CT ghi các sꢞ chꢣn (xem sꢞ 0 là sꢞ chꢣn) có trong
chuꢜi vào RAM nꢒi bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 30H cho ꢆꢅn khi gꢐp sꢞ lꢤ thì dꢘng.
2.61 Viꢅt CT con có nhiꢋm vꢁ lꢑy 1 byte tꢘ 1 chuꢜi data gꢝm 20 byte cꢑt trong Ram ngoài bꢙt ꢆꢄu
tꢘ ꢆꢉa chꢊ 2000H và xuꢑt ra Port1. Mꢜi lꢄn gꢌi CT con chꢊ xuꢑt 1 byte, lꢄn gꢌi kꢅ thì xuꢑt byte kꢅ
tiꢅp, lꢄn gꢌi thꢎ 21 thì lꢂi xuꢑt byte ꢆꢄu, ...
3. TIMER
3.1 Viꢅt CT con mang tên DELAY500 có nhiꢋm vꢁ tꢂo trꢥ 0,5ms dùng Timer. (Xtal 6MHz).
Bài tập Vi Xử Lý 8051- Trang 4/6
Đại Học Bách Khoa TP.HCM – Khoa Điện-Điện Tử
Lê Chí Thông – chithong@gmail.com
3.2 Viꢅt CT con mang tên DELAY10 có nhiꢋm vꢁ tꢂo trꢥ 10ms dùng Timer. (Xtal 12MHz).
3.3 Dùng CT con DELAY500 (bài 3.1) ꢆꢇ viꢅt CT tꢂo sóng vuông f=1KHz tꢂi P1.0.
3.4 Dùng CT con DELAY10 (bài 3.2) ꢆꢇ viꢅt CT tꢂo sóng vuông f=50Hz tꢂi P1.1.
3.5 Dùng CT con DELAY500 (bài 3.1) ꢆꢇ viꢅt CT tꢂo sóng vuông f=500Hz (D=25%) tꢂi P1.2.
3.6 Dùng CT con DELAY10 (bài 3.2) ꢆꢇ viꢅt CT tꢂo sóng vuông f=20Hz (D=20%) tꢂi P1.3.
3.7 Viꢅt CT dùng Timer tꢂo sóng vuông f=500Hz tꢂi P1.4. (Xtal 12MHz).
3.8 Viꢅt CT dùng Timer tꢂo sóng vuông f=20KHz tꢂi P1.5. (Xtal 24MHz).
3.9 Viꢅt CT dùng Timer tꢂo 2 sóng vuông có cùng f= 1KHz tꢂi P1.6 và P1.7. Biꢅt rꢛng sóng vuông
tꢂi P1.7 chꢗm pha hꢍn sóng vuông tꢂi P1.6 100(s. (Xtal 12MHz).
3.10 Viꢅt CT dùng Timer ꢆiꢦu khiꢇn ꢆèn giao thông tꢂi mꢒt giao lꢒ. Cho biꢅt rꢛng:
Đèn
Bit điều khiển Thời gian
Xanh 1
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
25s
3s
Vàng 1
ꢏꢡ 1
Xanh 2
33s
3s
Vàng 2
ꢏꢡ 2
ꢏèn sáng khi bit ꢆiꢦu khiꢇn bꢛng 0.
4. SERIAL PORT
4.1 Viꢅt CT ꢆꢌc 1 chuꢜi data chꢎa trong RAM nꢒi tꢘ ꢆꢉa chꢊ 30H ꢆꢅn 50H và xuꢑt ra 1 thiꢅt bꢉ (ví
dꢁ như màn hình tinh thꢇ lꢡng LCD) ꢆưꢚc nꢞi vꢓi port nꢞi tiꢅp cꢔa 8051 (chꢅ ꢆꢒ UART 8 bit, 2400
baud). Cho Xtal 11,059 MHz.
4.2 Viꢅt CT nhꢗn 1 chuꢜi data tꢘ 1 thiꢅt bꢉ ngoài (ví dꢁ như máy ꢆꢌc mã vꢂch) nꢞi vꢓi 8051 qua
port nꢞi tiꢅp (chꢅ ꢆꢒ UART 8 bit, 4800 baud) và ghi data vào RAM nꢒi tꢘ ꢆꢉa chꢊ 40H. Biꢅt rꢛng
chuꢜi data gꢝm 20 byte và Xtal 11,059MHz.
4.3 Viꢅt CT lꢑy 1 chuꢜi data chꢎa trong RAM ngoài bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 2000H và xuꢑt ra 1 thiꢅt bꢉ
ꢆưꢚc nꢞi vꢓi port nꢞi tiꢅp cꢔa 8051 (chꢅ ꢆꢒ UART 8 bit, 1200 baud). Chuꢜi kꢅt thúc bꢧi ký tꢕ EOT
(có mã ASCII là 04H) và ký tꢕ này cꢨng ꢆưꢚc xuꢑt ra (Xtal 11,059 MHz).
4.4 Làm lꢂi bài 4.3 nhưng không xuꢑt ký tꢕ EOT.
4.5 Viꢅt CT nhꢗn 1 chuꢜi data tꢘ 1 thiꢅt bꢉ ngoài nꢞi vꢓi 8051 qua port nꢞi tiꢅp (chꢅ ꢆꢒ UART 8 bit,
9600 baud) và ghi data vào RAM ngoài bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 4000H. Chuꢜi data bꢙt ꢆꢄu bꢛng ký tꢕ
STX (02H) và kꢅt thúc bꢛng ký tꢕ ETX (03H). Không ghi 2 ký tꢕ này vào RAM. Cho Xtal
11,059MHz.
4.6 Viꢅt CT con mang tên XUAT có nhiꢋm vꢁ lꢑy 1 chuꢜi data chꢎa trong RAM ngoài xuꢑt ra port
nꢞi tiꢅp ꢧ chꢅ ꢆꢒ UART 9 bit. Bit thꢎ 9 là bit parity chꢣn. Chuꢜi data kꢅt thúc bꢛng ký tꢕ null
(00H). CT gꢌi CT con XUAT sꢩ ꢆꢐt ꢆꢉa chꢊ bꢙt ꢆꢄu cꢔa chuꢜi vào DPTR trưꢓc khi gꢌi CT con
XUAT. Giꢈ sꢀ port nꢞi tiꢅp ꢆã ꢆưꢚc khꢧi ꢆꢒng.
4.7 Viꢅt CT con mang tên NHAP có nhiꢋm vꢁ nhꢗp 1 chuꢜi data gꢝm 30 byte tꢘ port nꢞi tiꢅp ꢧ chꢅ
ꢆꢒ UART 9 bit, bit thꢎ 9 là bit parity lꢤ. Nꢅu data nhꢗn ꢆưꢚc không bꢉ lꢜi thì ghi vào 1 vùng nhꢓ
Bài tập Vi Xử Lý 8051- Trang 5/6
Đại Học Bách Khoa TP.HCM – Khoa Điện-Điện Tử
Lê Chí Thông – chithong@gmail.com
cꢔa RAM nꢒi, nꢅu bꢉ lꢜi thì không ghi. CT gꢌi CT con NHAP sꢩ ꢆꢐt ꢆꢉa chꢊ ꢆꢄu cꢔa vùng nhꢓ vào
thanh ghi R0 trưꢓc khi gꢌi CT con NHAP. Giꢈ sꢀ port nꢞi tiꢅp ꢆã ꢆưꢚc khꢧi ꢆꢒng.
5. INTERRUPT
5.1 Viꢅt CT dùng ngꢙt Timer ꢆꢇ tꢂo sóng vuông f=2KHz tꢂi P1.7. (Xtal 12MHz).
5.2 Viꢅt CT dùng ngꢙt Timer ꢆꢇ tꢂo sóng vuông f=200Hz tꢂi P1.6. (Xtal 12MHz).
5.3 Viꢅt CT dùng ngꢙt Timer ꢆꢇ tꢂo ꢆꢝng thꢢi 2 sóng vuông 1KHz và 50Hz tꢂi P1.0 và P1.1. (Xtal
6MHz)
5.4 Viꢅt CT lꢑy 1 chuꢜi data chꢎa trong Ram ngoài bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 6200H ꢆꢅn ꢆꢉa chꢊ 62FFH và
xuꢑt ra Port1, mꢜi lꢄn xuꢑt cách nhau 50ms. Sꢀ dꢁng ngꢙt Timer. Xtal 12MHz.
5.5 Viꢅt CT nhꢗp data tꢘ thiꢅt bꢉ ngoài kꢅt nꢞi vꢓi 8051 qua Port1, mꢜi lꢄn nhꢗp cách nhau 5s, data
nhꢗp vꢦ ꢆưꢚc ghi vào vùng Ram nꢒi bꢙt ꢆꢄu tꢘ ꢆꢉa chꢊ 50H ꢆꢅn ꢆꢉa chꢊ 5FH. Biꢅt rꢛng sau khi ghi
vào ô nhꢓ cuꢞi cùng thì trꢧ lꢂi ghi vào ô nhꢓ ꢆꢄu. Sꢀ dꢁng ngꢙt Timer. Xtal 12MHz.
5.6 Viꢅt CT phát liên tꢁc chuꢜi sꢞ tꢘ 0 ꢆꢅn 9 ra port nꢞi tiꢅp theo chꢅ ꢆꢒ UART 8 bit, 2400 baud. Sꢀ
dꢁng ngꢙt serial. Xtal 12MHz.
5.7 Viꢅt CT chꢢ nhꢗn data tꢘ 1 thiꢅt bꢉ ngoài gꢧi ꢆꢅn 8051 qua port nꢞi tiꢅp (chꢅ ꢆꢒ UART 8 bit,
19200 baud). Nꢅu nhꢗn ꢆưꢚc ký tꢕ STX (02H) thì bꢗt sáng LED, nꢅu nhꢗn ꢆưꢚc ký tꢕ ETX (03H)
thì tꢙt LED, biꢅt rꢛng LED ꢆưꢚc ꢆiꢦu khiꢇn bꢛng ngõ P1.3 (LED sáng khi bit ꢆiꢦu khiꢇn bꢛng 1).
Sꢀ dꢁng ngꢙt serial. Xtal 11,059MHz.
5.8 Viꢅt CT chꢢ nhꢗn 1 xung cꢂnh xuꢞng ꢆưa vào chân /INT0 (P3.2), khi có xung thì nhꢗp data tꢘ
Port1 và phát ra port nꢞi tiꢅp ꢧ chꢅ ꢆꢒ UART 9 bit 4800 baud, bit thꢎ 9 là bit parity lꢤ. Xtal 6MHz.
5.9 Viꢅt CT ꢆꢅm sꢞ xung ꢆưa vào chân /INT1 (P3.3) và ꢆiꢦu khiꢇn relay thông qua chân P3.0 (relay
ꢆóng khi P3.0 bꢛng 1), cꢑt sꢞ ꢆꢅm vào ô nhꢓ 40H cꢔa Ram nꢒi, nꢅu sꢞ ꢆꢅm chưa ꢆꢅn 100 thì ꢆóng
relay, nꢅu sꢞ ꢆꢅm ꢆꢂt 100 thì ngꢙt relay.
Bài tập Vi Xử Lý 8051- Trang 6/6
Bạn đang xem tài liệu "Bài tập vi xử lý (họ vi điều khiển 8051) - Lê Chí Thông", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
- bai_tap_vi_xu_ly_ho_vi_dieu_khien_8051_le_chi_thong.pdf