Tải bản đầy đủ (.pdf) (24 trang)

bài tập vi xử lý họ vi điều khiển 8051 - lê chí công

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (153.86 KB, 24 trang )

Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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ấ
0CS
0000H -
3FFFH
PSEN
1CS
4000H -
7FFFH
PSEN
2CS
6000H -
7FFFH
WR,RD
3CS
8000H -
87FFH
RD
4CS
8800H -
8FFFH
WR


1.2 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ấ
0CS
9800H -
9BFFH
PSEN
1CS
9800H -
9BFFH
WR,RD
2CS
9C00H -
9DFFH
WR,RD
3CS
9E00H -
9EFFH
WR,RD
1.3 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 tín hi u ch n chip /CS t ng ng t m đ a ch F000H-ị ỉ ạ ộ ệ ọ ươ ứ ầ ị ỉ
F3FFH.
2. S D NG T P L NHỬ Ụ Ậ Ệ
Truy xu t RAM n iấ ộ
Trang 1/24

Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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 c ti p và đ nh đ a ch ô nh gián ti p).ớ ự ế ị ị ỉ ớ ế
2.2 Vi t CT xóa ô nh 31H c a RAM n i theo 2 cách (đ nh đ a ch ô nh tr cế ớ ủ ộ ị ị ỉ ớ ự
ti p và đ nh đ a ch ô nh gián ti p).ế ị ị ỉ ớ ế
2.3 Vi t CT ghi n i dung thanh ghi A vào ô nh 32H c a RAM n i theo 2 cáchế ộ ớ ủ ộ
(đ nh đ a ch ô nh tr c ti p và đ nh đ a ch ô nh gián ti p).ị ị ỉ ớ ự ế ị ị ỉ ớ ế
2.4 Vi t CT đ c ô nh 33H c a RAM n i vào thanh ghi A theo 2 cách (đ nhế ọ ớ ủ ộ ị
đ a ch ô nh tr c ti p và đ nh đ a ch ô nh gián ti p).ị ỉ ớ ự ế ị ị ỉ ớ ế
2.5 Vi t CT chuy n d li u ô nh 34H c a RAM n i vào ô nh 35H c aế ể ữ ệ ớ ủ ộ ớ ủ
RAM n i theo 2 cách (đ nh đ a ch ô nh tr c ti p và đ nh đ a ch ô nh giánộ ị ị ỉ ớ ự ế ị ị ỉ ớ
ti p).ế
Truy xu t RAM ngoàiấ
2.6 Vi t CT ghi 40H vào ô nh 0030H c a RAM ngoài.ế ớ ủ
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).ị ỉ ớ ự ế ị ị ỉ ớ ế
Trang 2/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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.ỉ ầ ế ộ ị ỉ ầ
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à:ế ế ằ ạ ệ ố
Trang 3/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
a. 12 MHz
b. 24 MHz
T o xungạ
2.38 Vi t CT t o m t xung d ng (ế ạ ộ ươ ) t i chân P1.0 v i đ r ng xungạ ớ ộ ộ
1ms, bi t r ng xtal là 12 MHz.ế ằ
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.ế ấ ố ứ
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.ờ ế ượ ạ ờ
Trang 4/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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ắ ầ ừ ị ỉ ấ ỗ ầ ọ
Trang 5/24

Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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).
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 25s
Vàng
1
P1.1 3s
Đ 1ỏ P1.2
Xanh
2
P1.3 33s
Vàng
2
P1.4 3s
Đ 2ỏ P1.5
Trang 6/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
Đè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 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)ạ
Trang 7/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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.ắ
ĐÁP ÁN 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ệ ọ ị ỉ ặ ấ
0000H - 3FFFH
4000H - 7FFFH
6000H - 7FFFH
8000H - 87FFH
Trang 8/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
8800H - 8FFFH
1.2 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ệ ọ ị ỉ ặ ấ
9800H - 9BFFH
9800H - 9BFFH

9C00H - 9DFFH
9E00H - 9EFFH
1.3 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 tín hi u ch n chip /CS t ng ng t m đ a ch F000H-ị ỉ ạ ộ ệ ọ ươ ứ ầ ị ỉ
F3FFH.
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 c ti p và đ nh đ a ch ô nh gián ti p).ớ ự ế ị ị ỉ ớ ế
Cách 1: Đ nh đ a ch tr c ti pị ị ỉ ự ế
ORG 0000H
MOV 30H,#40H
END
Cách 2: Đ nh đ a ch gián ti pị ị ỉ ế
ORG 0000H
MOV R0,#30H
MOV @R0,#40H
END
2.2 Vi t CT xóa ô nh 31H c a RAM n i theo 2 cách (đ nh đ a ch ô nh tr cế ớ ủ ộ ị ị ỉ ớ ự
ti p và đ nh đ a ch ô nh gián ti p).ế ị ị ỉ ớ ế
HD: Xóa là ghi giá tr 0.ị
ORG 0000H
MOV 31H,#OOOOH
END.
C2
ORG
Trang 9/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
MOV R0,#31H
MOV @R0,#0000H

END.
2.3 Vi t CT ghi n i dung thanh ghi A vào ô nh 32H c a RAM n i theo 2 cáchế ộ ớ ủ ộ
(đ nh đ a ch ô nh tr c ti p và đ nh đ a ch ô nh gián ti p).ị ị ỉ ớ ự ế ị ị ỉ ớ ế
CÁCH 1:
ORG 0000H
MOV 32H,A
END
CÁCH 2:
ORG 0000H
MOV R0,#32H
MOV @R0,A
END
2.4 Vi t CT đ c ô nh 33H c a RAM n i vào thanh ghi A theo 2 cách (đ nhế ọ ớ ủ ộ ị
đ a ch ô nh tr c ti p và đ nh đ a ch ô nh gián ti p).ị ỉ ớ ự ế ị ị ỉ ớ ế
CÁCH 1:
ORG 0000H
MOV A,33H
END
CÁCH 2:
ORG 0000H
MOV R0,#33H
MOV A,@R0
END
2.5 Vi t CT chuy n d li u ô nh 34H c a RAM n i vào ô nh 35H c aế ể ữ ệ ớ ủ ộ ớ ủ
RAM n i theo 2 cách (đ nh đ a ch ô nh tr c ti p và đ nh đ a ch ô nh giánộ ị ị ỉ ớ ự ế ị ị ỉ ớ
ti p).ế
CÁCH 1:
ORG 0000H
MOV 35H,34H
END

CÁCH 2:
ORG 0000H
MOV R0,#34H
MOV A,@R0
INC R0
MOV @R0,A
END
Truy xu t RAM ngoàiấ
2.6 Vi t CT ghi 40H vào ô nh 0030H c a RAM ngoài.ế ớ ủ
ORG 0000H
MOV A,#40H
Trang 10/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
MOV DPTR,#0030H
MOVX @DPTR,A
END
2.7 Vi t CT xóa ô nh 0031H c a RAM ngoài.ế ớ ủ
ORG 0000H
MOV A,#0000H
MOV DPTR,#0031H
MOVX @DPTR,A
END.
HD: Ghi giá tr 0.ị
2.8 Vi t CT đ c ô nh 0032H c a RAM ngoài vào thanh ghi A.ế ọ ớ ủ
ORG 0000H
MOV DPTR,#0032H
MOVX A,@DPTR
END
2.8 Vi t CT ghi n i dung thanh ghi A vào ô nh 0033H c a RAM ngoài.ế ộ ớ ủ
ORG 0000H

MOV DPTR,#0033H
MOVX @DPTR,A
END
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.ủ
ORG 0000H
MOV DPTR,#0034H
MOVX A,@DPTR
INC DPTR
MOVX @DPTR,A
END
Truy xu t Portấ
2.11 Vi t CT xu t 0FH ra Port 1.ế ấ
ORG 0000H
MOV P1,#0FH
END
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.ế ấ ộ
ORG 0000H
MOV P1,A
END
2.14 Vi t CT nh p t Port 1 vào thanh ghi A.ế ậ ừ
ORG 0000H
MOV A,P1
END
2.15 Vi t CT nh p t Port 1 và xu t ra Port 2. 0FHế ậ ừ ấ
Trang 11/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
ORG 0000H
MOV 0FH,P1

MOV P2,#0FH
END
2.16 Vi t CT xu t 1 (m c logic cao) ra chân P1.0ế ấ ứ
ORG 0000H
SETB P1.0
END
2.17 Vi t CT xu t 0 (m c logic th p) ra chân P1.1ế ấ ứ ấ
ORG 0000H
CLR P1.1
END
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).ế
CÁCH 1:
ORG 0000H
MOV A,40H
MOV DPTR,#2000H
MOVX @DPTR,A
END
CÁCH 2:
ORG 0000H
MOV R0,#40H
MOV DPTR,#2000H
MOV A,@R0
MOVX @DPTR,A
END
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).ế

ORG 0000H
MOV DPRT,#2001H
MOV A,41H
MOVX A,@DPRT
END
C2
ORG 0000H
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).ị ỉ ớ ự ế ị ị ỉ ớ ế
Trang 12/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
CÁCH 1:
ORG 0000H
MOV 42H,P1
END
CÁCH 2:
ORG 0000H
MOV R0,#40H
MOV @R0,P1
END
2.21 Vi t CT nh p t Port 1 vào ô nh 2002H (RAM ngoài).ế ậ ừ ớ
ORG 0000H
MOV DPTR,#2002H
MOV A,P1
MOVX @DPTR,A
END
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.ế ớ ộ ị ỉ ắ ầ
ORG 0000H
MOV R0,#30H
MOV R2,#20
laplai:
MOV @R0,#0
INC R0
DJNZ R2,laplai
END
2.25 Vi t CT xóa các ô nh RAM n i t đ a ch 20H đ n 7FH.ế ớ ộ ừ ị ỉ ế
ORG 0000H
MOV R0,#20H
laplai:
MOV @R0,#0
INC R0
CJNE R0,#80H,laplai
END
2.26 Vi t CT xóa 250 ô nh RAM ngoài có đ a ch b t đ u là 4000H.ế ớ ị ỉ ắ ầ
ORG 0000H
MOV DPTR,#4000H
CLR A
MOV R7,#250
lap1: MOVX @DPTR,A
INC DPTR
Trang 13/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
DJNZ R7,lap1
END
2.27 Vi t CT xóa 2500 ô nh RAM ngoài có đ a ch b t đ u là 4000H.ế ớ ị ỉ ắ ầ
ORG 0000H

MOV DPTR,#4000H
CLR A
MOV R6,#10
lap2: MOV R7,#250
lap1: MOVX @DPTR,A
INC DPTR
DJNZ R7,lap1
DJNZ R6,lap2
END
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.ầ
HD: 8KB = 8192Byte
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.ỉ ầ ế ộ ị ỉ ầ
ORG 0000H
MOV R0,#30H
MOV R1,#40H
MOV R2,#10
lap: MOV A,@R0
MOV @R1,A
INC R0
INC R1
DJNZ R2,lap
END
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.ỉ ầ ế ị ỉ ầ
ORG 0000H
MOV R0,#100H
Lap
MOV DPRT,#2000H

MOVX A,@DPRT
MOV DPRT,#4000H
MOVX @DPRT,A
INC DPRT
DJNZ R0,Lap
END.`
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.ỉ ầ ế ị ỉ ầ
ORG 0000H
Trang 14/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
MOV R0,#30H
MOV DPTR,#4000H
MOV R3,#10
lap: MOV A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
DJNZ R3,lap`
END
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.ỉ ầ ế ộ ị ỉ ầ
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.ớ ộ ế ắ ầ ừ ớ
ORG 0000H
MOV R0,#50H
MOV R4,#10

loop: MOV @R0,P1
INC R0
DJNZ R4,loop
END
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
V i th ch anh 12MHz thì chu ký máy TM = 1μs. Do đó, 100 μs = 100 TMớ ạ
(chu ky may)ctcondelay:
MOV R2,#50
DJNZ R2,$
RET
b. 6 MHz
V i th ch anh 6MHz thì chu ký máy TM = 2μs. Do đó, 100 μs = 50 TMớ ạ
ctcondelay:
MOV R2,#25
DJNZ R2,$
RET
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
V i th ch anh 12MHz thì chu ký máy TM = 1μs. Do đó, 100 ms = 100000 TMớ ạ
ctcondelay:
Trang 15/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
MOV R3,#200
lap: MOV R2,#250
DJNZ R2,$ (lenh rong, tao xung 250)
DJNZ R3,#lap

RET
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à:1000ms
a. 12 MHz
b. 24 MHz
T o xungạ
2.38 Vi t CT t o m t xung d ng ( ) t i chân P1.0 v i đ r ng xung 1ms,ế ạ ộ ươ ạ ớ ộ ộ
bi t r ng xtal là 12 MHz.ế ằ
CÁCH 1:
ORG 0000H
CLR P1.0
SETB P1.0
MOV R3,#2
lap: MOV R2,#250
DJNZ R2,$
DJNZ R3,lap
CLR P1.0
END
CÁCH 2:
ORG 0000H
CLR P1.0
SETB P1.0
ACALL delay1ms
CLR P1.0
SJMP ketthuc (la lenh nhay ngan, dieu khien chuong trinh re nhanh
delay1ms: den dia chi duoc tro den)
MOV R3,#2
lap: MOV R2,#250
DJNZ R2,$

DJNZ R3,lap
RET
ketthuc:
NOP
END
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).
ORG 0000H
lap: CPL P1.1
Trang 16/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
NOP
NOP
SJMP lap
END
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).ạ
ORG 0000H
lap: SETB P1.2
NOP
NOP
NOP
CLR P1.2
NOP
NOP
NOP
SJMP lap
END
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).

ORG 0000H
lap: CPL P1.3
ACALL delay50
SJMP lap
delay50:
MOV R4,#25
DJNZ R4,$
RET
END
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).ạ
ORG 0000H
lap: SETB P1.3
ACALL delay30
CLR P1.3
ACALL delay70
SJMP lap
delay30:
MOV R4,#15
DJNZ R4,$
RET
delay70:
MOV R4,#35
DJNZ R4,$
Trang 17/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
RET
END
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).ả ử ế ả ỏ ơ ặ ằ
ORG 0000H
MOV R0,#30H
CLR A
MOV R2,#10
lap: ADD A,@R0
INC R0
DJNZ R2,lap
MOV 2FH,A
END
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 ).ủ ế ả
ORG 0000H
MOV R0,#30H ;đ a ch b t đ uị ỉ ắ ầ
MOV R2,#10 ;s l n l pố ầ ặ
CLR A ;byte th p c a k t quấ ủ ế ả
MOV 2EH,#0000H ;byte cao c a k t quủ ế ả
CLR C
lap: ADD A,@R0
JNC boqua ; (nhay neu co carry flag nho khong duoc set bang 1)
INC 2EH
boqua:INC R0
DJNZ R2,lap
MOV 2FH,A

END
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.ế ấ ố ứ
Trang 18/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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.ờ ế ượ ạ ờ
ORG 0000H
MOV A,30H
CJNE A,31H,ke hoac CJNE A,31H,$+3
ke: JNC lonhoacbang JNC lonhoacbang
CLR F0
SJMP tiep
lonhoacbang:
SETB F0
tiep: NOP
END
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).ế ằ ủ ự ừ ữ ế ữ
ORG 0000H

MOV R0,#50H
MOV R3,#20
lap: MOV A,@R0
CJNE A,#65,ke hoac CJNE A,#65,$+3
ke: JC boqua JC boqua
CJNE A,#91,ke2 CJNE A,#91,$+3
ke2: JNC boqua JNC boqua
MOV P1,A
boqua:INC R0
DJNZ R3,lap
END
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.ự ả ự
ORG 0000H
MOV DPTR,#0000H
tiep: MOV A,P1
MOVX @DPTR,A
INC DPTR
CJNE A,#0DH,tiep
END
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ế ậ ộ ỗ ự ừ ướ ạ
Trang 19/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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.ự ự
ORG 0000H
MOV DPTR,#0000H
lap: MOV A,P1
CJNE A,#0DH,tiep

SJMP ketthuc
tiep: MOVX @DPTR,A
INC DPTR
SJMP lap
ketthuc:
NOP
END
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.ế ố ươ ố ươ ấ ế ố
ORG 0000H
MOV DPTR,#0100H
MOV R4,#100
lap: MOVX A,@DPTR
JNB ACC.7,duong
MOV P2,A
SJMP tiep
duong:MOV P1,A

tiep: INC DPTR
DJNZ R4,lap
END
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.ỗ ế ố ươ ấ ế ố
ORG 0000H
Trang 20/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
MOV DPTR,#0100H
lap: MOVX A,@DPTR
JNB ACC.7,duong
MOV P2,A
SJMP tiep
duong:MOV P1,A
tiep: INC DPTR
CJNE A,#0,lap
END
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.ố ố ẵ ế ỗ ấ ớ
HD: S ch n có LSB=0ố ẵ
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).

MOV TMOD,#00000010B

delay500:
MOV TL0,#-250
SETB TR0
JNB TF0,$
CLR TR0
CLR TF0
RET
3.2 Vi t CT con mang tên DELAY10 có nhi m v t o tr 10ms dùng Timer.ế ệ ụ ạ ễ
(Xtal 12MHz).

MOV TMOD,#00000001B

delay10:
MOV TH0,#HIGH(-10000)
MOV TL0,#LOW(-10000)
SETB TR0
Trang 21/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
JNB TF0,$
CLR TR0
CLR TF0
RET
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 25s
Vàng 1 P1.1 3s
Đ 1 P1.2 ỏ
Xanh 2 P1.3 33s
Vàng 2 P1.4 3s
Đ 2 P1.5 ỏ
Đè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.ố ế ủ ế ộ
ORG 0000H
MOV TMOD,#00100000B
MOV SCON,#01010010B
MOV TH1,#-12
SETB TR1

MOV R0,#30H
lap: MOV A,@R0
JNB TI,$
CLR TI
MOV SBUF,A
INC R0
CJNE R0,#51H,lap
Trang 22/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
END
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.
ORG 0000H
MOV TMOD,#00100000B
MOV SCON,#01010010B
MOV TH1,#-6
SETB TR1
MOV R0,#40H
MOV R2,#20
lap: JNB RI,$
CLR RI
MOV A,SBUF
MOV @R0,A
INC R0
DJNZ R2,lap
END
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 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).
Trang 23/24
Đ i H c Bách Khoa TP.HCM – Khoa Đi n-Đi n Tạ ọ ệ ệ ử Lê Chí Thông
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.ắ
M y cái này có ích l m đ y pác nào b qua thi l thi vô thì đ ng có mà ti cấ ắ ấ ỏ ỡ ừ ế
nghe:0y34: :01p2: :0y36:
Trang 24/24

×