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 – [email protected]  
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 – [email protected]  
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 – [email protected]  
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 – [email protected]  
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 – [email protected]  
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 – [email protected]  
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  
pdf 6 trang baolam 21280 Free
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:

  • pdfbai_tap_vi_xu_ly_ho_vi_dieu_khien_8051_le_chi_thong.pdf