background image

Đ 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

0

CS

0000H - 
3FFFH

PSEN

1

CS

4000H - 
7FFFH

PSEN

2

CS

6000H - 
7FFFH

WR

,

RD

3

CS

8000H - 
87FFH

RD

4

CS

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

0

CS

9800H - 
9BFFH

PSEN

1

CS

9800H - 
9BFFH

WR

,

RD

2

CS

9C00H - 
9DFFH

WR

,

RD

3

CS

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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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


gian

Xanh 
1

P1.0

25s

Vàng 

P1.1

3s

Đ  1

P1.2

Xanh 

P1.3

33s

Vàng 
2

P1.4

3s

Đ  2

ỏ  

P1.5

Trang 

6/24

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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

background image

Đ 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