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

Bài giảng vi điều khiển

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 (1.5 MB, 42 trang )

Bài giảng: Vi Điều Khiển
Biên soạn: Ths Lê Hoàng Anh


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

CHƯƠNG I : GIỚI THIỆU
I.Lịch sử xuất hiện bộ vi điều khiển 8051:
Năm 1980 tập đoàn Intel giới thiệu chip 8051 bộ vi điều khiển đầu
tiên của họ vi điều khiển MSC-51.
Chip 8051 chứa trên 60000 transistor bao gồm 4K byte ROM , 128
byte RAM , 32 đường xuất nhập , 1 port nối tiếp và 2 bộ định thời 16 bit .
8051 là bộ vi điều khiển 8 bit tức là CPU chỉ có thể làm việc với 8 bit
dữ liệu . Dữ liệu lớn hơn 8 bit được chia thành các dữ liệu 8 bit để xử lý.
8051 đã trở nên phổ biến sau khi Intel cho phép các nhà sản xuất
khác ( Siemens , Atmel , Philips … ) sản xuất và bán bất kỳ dạng biến thể
nào của 8051 mà họ muốn với điều kiện họ phải để mã chương trình tương
thích với 8051 . Từ đó dẫn đến sự ra đời của nhiều phiên bản của 8051 với
các tốc độ và dung lượng ROM trên chip khác nhau .
Tuy nhiên , điều quan trọng là mặc dù có nhiều biến thể của 8051 ,
như khác nhau về tốc độ , dung lượng ROM nhưng tất cả các lệnh đều tương
thích với 8051 ban đầu . Điều này có nghĩa là nếu chương trình được viết
cho một phiên bản 8051 nào đó thì cũng sẽ chạy được với mọi phiên bản
khác không phụ thuộc vào hãng sản xuất .
II. Sơ đồ khối một hệ máy tính và các khái niệm cơ bản :

Address bus ( 16 )

Data bus ( 8)


Control bus ( 6 )

CPU

Interface circuitry

RAM

ROM

1. Bộ nhớ bán dẫn RAM và ROM :

Trang 1

Peripheral devices


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

Các bộ nhớ được truy xuất trực tiếp bởi CPU bao gồm các IC (
integrated circuit ) bán dẫn gọi là ROM và RAM , có hai đặc trưng dùng để
phân biệt ROM và RAM :
 RAM ( Random access memory ) : bộ nhớ có thể đọc / ghi , không
tiếp tục lưu trữ nội dung khi mất nguồn cấp điện .
 ROM ( Read only memory ) : bộ nhớ chỉ đọc ,vẫn tiếp tục lưu trữ
nội dung khi mất nguồn cấp điện .
2. Bus : Bus dữ liệu, Bus địa chỉ, Bus điều khiển
Bus là một tập các dây mang thông tin có cùng một mục đích . Việc
truy xuất tới một mạch xung quanh CPU sử dụng ba loại bus : bus địa chỉ (

Address bus ) , bus dữ liệu ( Data bus ) và bus điều khiển ( Control bus ) .
Với mỗi thao tác đọc hoặc ghi , CPU xác định rõ vị trí của dữ liệu ( hoặc
lệnh ) bằng cách đặt một địa chỉ lên bus địa chỉ ,sau đó tích cực một tín hiệu
trên bus điều khiển để chi ra thao tác đó là đọc hay ghi .
 Bus dữ liệu mang thông tin giữ CPU và bộ nhớ cũng như giữa CPU
và các thiết bị xuất nhập . Bus dữ liệu là bus hai chiều.
 Bus địa chỉ mang thông tin địa chỉ , luôn được cấp bởi CPU và là
bus một chiều.
 Bus điều khiển là một tập hợp các tín hiệu , mỗi tín hiệu mang một
vai trò riêng trong việc điều khiển có trật tự hoạt động của hệ thống . Các tín
hiệu điều khiển là các tín hiệu định thời được cung cấp bởi CPU để đồng bộ
hoá việc di chuyển thông tin trên các bus dữ liệu và địa chỉ . Thông thường
có ba tín hiệu như CLOCK , READ và WRITE đối với việc di chuyển dữ
liệu cơ bản giữa CPU và bộ nhớ .

3. Đơn vị xử lý trung tâm ( CPU ):

Trang 2


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

CPU
Instruction
register

Program
counter


Instruction
decode and
control unit

Registers

Arithmetic
and logic unit

Đơn vị xử lý trung tâm CPU
Instruction register ( IR ) : thanh ghi lệnh IR
Instruction decode and control unit : đơn vị giải mã lệnh và điều khiển
Program counter ( PC ) : bộ đếm chương trình
Registers : các thanh ghi
Arithmetic and logic unit : đơn vị số học logic

CPU quản lý tất cả các hoạt động và thực hiện các thao tác trên dữ
liệu . Hầu hết các CPU chỉ bao gồm một tập các mạch logic thực hiện liên
tục hai thao tác : tìm nạp lệnh và thực thi lệnh .
CPU có khả năng hiểu và thực thi các lệnh dựa trên một tập các mã
nhị phân , mỗi một mã nhị phân biểu thi một thao tác cơ bản .
Các lệnh này thường là các lệnh số học ( như cộng , trừ , nhân , chia ),
các lệnh logic ( như AND,OR,NOT, …) các lệnh di chuyển dữ liệu , các
lệnh rẽ nhánh được biểu thị bởi một tập các mã nhị phân và được gọi là tập
lệnh ( instruction set ).
Bên trong CPU bao gồm một tập các thanh ghi ( Registers ) có nhiệm
vụ lưu trữ tạm thời các thông tin , một đơn vị số học logic ALU (Arithmetic
logic unit ) có nhiệm vụ thực hiện các thao tác trên các thông tin này , một
đơn vị giải mã lệnh và điều khiển ( instruction decode and control unit ) có
nhiệm vụ xác định thao tác cần thực hiện và thiết lập các hoạt động cần thiết

để thực hiện thao tác. Thanh ghi IR ( instruction register ) lưu trữ mã nhị
phân của lệnh . Bộ đếm chương trình PC ( Program counter ) lưu trữ địa chỉ
của lệnh kế tiếp trong bộ nhớ cần được thực thi.

Trang 3


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

Thao tác tìm nạp lệnh của CPU được thực hiện theo các bước sau :
_ Nội dung của PC được đặt lên bus địa chỉ
_ Tín hiệu điều khiển READ được xác lập ( chuyển sang trạng thái tích
cực )
_ Dữ liệu ( hoặc mã lệnh ) được đọc từ RAM và đưa lên bus dữ liệu
_ Mã lệnh ( opcode ) được chốt vào thanh ghi lệnh bên trong CPU
_ PC được tăng lên để chuẩn bị tìm nạp lệnh kế từ bộ nhớ
Giai đoạn thực thi lệnh bao gồm việc giải mã lệnh và tạo ra các tín hiệu
điều khiển , các tín hiệu này điều khiển việc xuất nhập giữa các thanh ghi
nội với ALU và thông báo để ALU thực hiện thao tác đã được xác định .
Hình minh họa luồng thông tin cho việc tìm nạp lệnh
CPU
Addressbus
N

PC

Data bus

Opcode

RAM

IR
Control bus

Clock

Opcode

Read

III. Sự khác nhau giữa bộ vi xử lý và bộ vi điều khiển :

Trang 4

N+2
N+1
N
N-1


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

1. Cấu trúc phần cứng :
Bộ vi xử lý
Là một CPU đơn chip

Bộ vi điều khiển
Là một vi mạch đơn chứa bên trong

một CPU,ROM,RAM,bộ định
thời,mạch giao tiếp …để tạo nên một
hệ máy tính đầy đủ.

2. Ứng dụng :
Bộ vi xử lý
Làm các CPU trong các hệ máy
tính,thích hợp với các ứng dụng xử
lý thông tin.

Bộ vi điều khiển
Thích hợp cho các thiết kế nhỏ với
các thành phần thêm vào tối thiểu
nhằm thực hiện các hoạt động hướng
điều khiển .

3. Đặc trưng của tập lệnh :
Bộ vi xử lý
Các lệnh của bộ vi xử lý hoạt động
trên các lượng dữ liệu lớn ½ byte , 1
byte , 2 byte , 4 byte .

Bộ vi điều khiển
Tập lệnh chủ yếu cung cấp các điều
khiển xuất nhập chỉ sử dụng 1 bit.

Trang 5


Bài giảng Vi điều khiển

Biên soạn: Ths Lê Hoàng Anh

CHƯƠNG II : CẤU TRÚC PHẦN CỨNG
1. Sơ đồ khối chip 8051:

/INT0
/INT1
Ti mer 2
Ti mer 1
Ti mer 0
Seria l po rt

Interrupt control

Orther registers

T2EX
128 bytes RAM

ROM
4K 8051
8K 8052

128 bytes RAM

Timer 2

T2

Timer 1


T1

Timer 0

T0

CPU
Bus control

Oscillator

/EA
RST

Serial port

I/O port

ALE
/PSEN

TXD

P0

P2

P1


Chip 8051 có các đặc trưng như sau :
 4KB ROM
 128 byte RAM
 4 port xuất nhập (I/O port) 8 bit
 2 bộ định thời 16 bit
 Mạch giao tiếp nối tiếp
 Không gian nhớ chương trình ngoài 64K
 Không gian nhớ dữ liệu ngoài 64K
 Bộ xử lý bit
 210 vị trí nhớ được định địa chỉ ,mỗi vị trí 1 bit
 Nhân/chia trong 4µs

Trang 6

P3

RXD


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

2. Sơ đồ và chức năng các chân của chip 8051:

33p

XTAL1

P0.7/AD7
P0.6/AD6

P0.5/AD5
P0.4/AD4
P0.3/AD3
P0.2/AD2
P0.1/AD1
P0.0/AD0

12M

19

VCC

40

VCC

18

XTAL2

32
33
34
35
36
37
38
39


33p

30
29
31

P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0

ALE
PSEN

8
7
6
5
4
3
2
1

EA
8051


9

P3.7/RD
P3.6/WR
P3.5/T1
P3.4/T0
P3.3/INT1
P3.2/INT0
P3.1/TXD
P3.0/RXD

P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15

21
22
23
24
25
26
27
28

20


GND

17
16
15
14
13
12
11
10

RST

Thuật ngữ “8051” được dung để chỉ rộng rãi các chip của họ MSC-51
.Vi mạch tổng quát của họ MSC-51 là chip 8051 ,linh kiện đầu tiên của họ
này được hãng Intel đưa ra thị trường . Hiện hay nhiều nhà sản xuất IC như
Seimens , Advance Micro Devices ( AMD ) , Fujitsu , Philips , Atmel …
được cấp phép làm nhà cung cấp thứ hai cho các chip của họ MSC-51. Ở
Việt Nam các chip và các biến thể họ MSC-51 của hãng Atmel và Philips
được sử dụng rộng rãi như :
AT89C2051,AT89C4051,AT89C51,AT8C52,AT89S52,AT89S8252,AT89S
8253,P89C51RDxx,P89V51RDxx …
Chip 8051 có 32 chân xuất / nhập ,tuy nhiên có 24 chân trong 32 chân
này có 2 mục đích .Mỗi một chân này có thể hoạt động ở chế độ xuất/nhập ,
hoạt động điều khiển hoặc hoạtđộng như một đường địa chỉ / dữ liệu của bus
địa chỉ / dữ liệu đa hợp.
2.1 PORT 0:
Port 0 ( các chân từ 32 - 39 ) được ký hiệu là P0.0 – P0.7 có hai công
dụng. Trong các thiết kế có tối thiểu thành phần , port 0 được sử dụng làm

nhiệm vụ xuất nhập , với các thiết kế lớn hơn có bộ nhớ ngoài , port 0 trở
thành bus địa chỉ và bus dữ liệu đa hợp ( byte địa chỉ thấp )

Trang 7


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

2.2 PORT 1:
Port 1 (các chân từ 1 - 8 ) chỉ có một công dụng là xuất / nhập được
ký hiệu là P1.0 – P1.7 và dùng để giao tiếp với thiết bị bên ngoài. Với chip
8052 ta có thể sử dụng P1.0 và P1.1 hoặc làm các đường xuất /nhập hoặc
làm các ngõ vào cho mạch định thời thứ ba.
2.3 PORT 2:
Port 2 ( các chân từ 21-28 ) được ký hiệu là P2.0 – P2.7 có hai công
dụng ,hoặc làm nhiệmvụ xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ
16 bit cho các thiết kế có bộ nhớ chương trình ngoài hoặc các thiết kế có
nhiều hơn 256 byte bộ nhớ dữ liệu .
2.4 PORT 3:
Port 3 ( các chân từ 10 - 17 ) được ký hiệu là P3.0 – P3.7 có hai công
dụng. Khi không hoạt động xuất/nhập , các chân của port 3 có nhiều chức
năng riêng .
Chức năng các chân của Port 3 và Port 1
Bit Tên chân
P3.0
RxD
P3.1
TxD
P3.2

/INT0
P3.3
/INT1
P3.4
T0
P3.5
T1
P3.6
/WR
P3.7
/RD
P1.0
T2
P1.1
T2EX

Địa chỉ bit
B0H
B1H
B2H
B3H
B4H
B5H
B6H
B7H
90H
91H

Chức năng
Chân nhận dữ liệu của port nối tiếp

Chân phát dữ liệu của port nối tiếp
Ngõ vào ngắt ngoài 0
Ngõ vào ngắt ngoài 1
Ngõ vào bộ định thời hoặc bộ đếm 0
Ngõ vào bộ định thời hoặc bộ đếm 1
Điều khiển ghi bộ nhớ dữ liệu ngoài
Điều khiển đọc bộ nhớ dữ liệu ngoài
Ngõ vào bộ đinh thời hoặc bộ đếm 2
Nạp lại hoặc thu nhận của bộ định thời 2

2.5 /PSEN :
Chân cho phép bộ nhớ chương trình /PSEN ( Program store enable )
là tín hiệu xuất trên chân 29. Đây là tín hiệu điều khiển cho phép ta truy xuất
bộ nhớ chương trình ngoài .Chân này thường nối với chân cho phép xuất
/OE ( Output enable ) của EPROM hoặc ROM để cho phép đọc các byte
lệnh.Tín hiệu /PSEN ở mức logic 0 trong suốt thời gian tìm nạp lệnh .Các
mã nhị phân của chương trình hay Opcode được đọc từ EPROM qua bus dữ
liệu và được chốt vào thanh ghi lệnh IR của 8051 để được giải mã.Khi thực
thi một chương trình chứa ở ROM nội ,chân /PSEN được duy trỳ ở mức
logic không tích cực ( logic 1 ).

Trang 8


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

2.6 ALE :
Ngõ xuất tín hiệu cho phép chốt địa chỉ ALE ( address latch enable )
dùng để giải đa hợp ( demultiplexing ) bus dữ liệu và bus địa chỉ .Khi port 0

được sử dụng làm bus địa chỉ/dữ liệu đa hợp,chân ALE xuất tín hiệu để chốt
địa chỉ ( byte thấp của địa chỉ 16 bit ) vào một thanh ghi ngoài trong suốt ½
đầu của chu kỳ bộ nhớ ( memory cycle ).Sau khi điều này đã được thực hiện,
các chân của port 0 sẽ xuất/nhập dữ liệu hợp hệ trong suốt ½ thứ hai của chu
kỳ bộ nhớ.Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên
trong chip vi điều khiển .
2.7 /EA :
Ngõ vào /EA có thể được nối với 5V ( logic 1 ) hoặc với GND ( logic
0 ).Nếu chân này nối lên 5V chip 8051 thực thi chương trình trong ROM
nội. Nếu chân này được nối với GND ( và chân /PSEN cũng ở logic 0 ) thì
chương trình cần được thực thi chứa ở bộ nhớ ngoài.
2.8 RESET ( RST ) :
Ngõ vào RST là ngõ vào xóa chính ( master reset ) của 8051 dùng để
thiết lập lại trạng thái ban đầu cho hệ thống hay gọi tắt là reset hệ thống .Khi
ngõ vào này được treo ở mức logic 1 tối thiểu 2 chu kỳ máy, các thanh ghi
bên trong của 8051 được nạp lại các giá trị thích hợp cho việc khởi động lại
hệ thống .
2.9 XTAL1 , XTAL2 :
Mạch dao động trên chip được ghép nối với mạch thạch anh bên ngoài
ở hai chân XTAL1 và XTAL2 , các tụ ổn định cũng đựoc yêu cầu kết nối,
giá tri tụ do nhà sản xuất quy định ( 30p – 40p ).
3. Tổ chức bộ nhớ:
Các chip vi điều được dùng làm thành phần trung tâm trong các thiết kế
hướng điều khiển ,trong đó bộ nhớ có dung lượng giới hạn , không có ổ đĩa
và hệ điều hành . Chương trình điều khiển phải thường trú trong ROM nên
8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu , cả hai bộ nhớ
chương trình và dữ liệu đều đặt trong chip , tuy nhiên ta có thể mở rộng bộ
nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dụng các chip nhớ bên
ngoài với dung lượng tối đa là 64K .
Bộ nhớ nội trong chip bao gồm ROM và RAM . RAM trên chip bao

gồm vùng RAM đa chức năng ( general purpose RAM : 30H-7FH ) , vùng
RAM với từng bit được định địa chỉ ( bit address locations gọi tắt là vùng

Trang 9


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

RAM định địa chỉ bit : 20H-2FH ) , các dãy thanh ghi ( bank : 00H-1FH) và
các thanh ghi chức năng đặc biệt SFR (spectial function register : 80H-FFH )

Bit addressable
locations

Byte
address
7FH

Bit address

80 byte

General purpose RAM

30H
2FH

7F


7E

7D

7C

7B

7A

79

78

2EH

77

76

75

74

73

72

71


70

2DH

6F

6E

6D

6C

6B

6A

69

68

2CH

67

66

65

64


63

62

61

60

2BH

5F

5E

5D

5C

5B

5A

59

58

2AH

57


56

55

54

53

52

51

50

29H

4F

4E

4D

4C

4B

4A

49


48

28H

47

46

45

44

43

42

41

40

27H

3F

3E

3D

3C


3B

3A

39

38

26H

37

36

35

34

33

32

31

30

25H

2F


2E

2D

2C

2B

2A

29

28

24H

27

26

25

24

23

22

21


20

23H

1F

1E

1D

1C

1B

1A

19

18

22H

17

16

15

14


13

12

11

10

21H

0F

0E

0D

0C

0B

0A

09

08

20H

07


06

05

04

03

02

01

00

1F
BANK 3

18
17

BANK 2

10
0F

BANK 1

08
07
00


Default register bank for R0-R7
BANK 0

RAM

Trang 10


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh
Byte
address
FF
F0

F7

F6

F5

F4

F3

F2

F1


F0

B

E0

E7

E6

E5

E4

E3

E2

E1

E0

ACC

D0

D7

D6


D5

D4

D3

D2

D1

D0

PSW

B8

-

-

-

BC

BB

BA

B9


B8

IP

B0

B7

B6

B5

B4

B3

B2

B1

B0

P3

A8

AF

-


-

AC

AB

AA

A9

A8

IE

A0

A7

A6

A5

A4

A3

A2

A1


A0

P2

99

98

SBUF
SCON

91

90

P1

88

TH1
TH0
TL1
TL0
TMOD
TCON

Bit address

99
98


9F

9E

Not bit addressable
9D
9C
9B
9A

90

97

96

95

8E

Not bit addressable
Not bit addressable
Not bit addressable
Not bit addressable
Not bit addressable
8D
8C
8B
8A


8D
8C
8B
8A
89
88

8F

94

93

92

89

87

Not bit addressable

PCON

83
82
81
80

Not bit addressable

Not bit addressable
Not bit addressable
85
84
83
82

DPH
DPL
SP
P0

87

86

81

80

SPECIAL FUNCTION REGISTERS

Trang 11


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

Vùng RAM đa mục đích :
Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H – 7FH . Bất

kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truy xuất tự
do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp .
Ex: MOV A,5FH
MOV R0,5FH
MOV A,@R0
Vùng RAM định địa chỉ bit :
8051 có 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong
các byte ở địa chỉ từ 20H - 2FH và phần còn lại chứa trong các thanh ghi
chức năng đặc biệt .
Các dãy thanh ghi :
32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi . Các lệnh
của 8051 hỗ trợ 8 thanh ghi từ R0 – R7 thuộc dãy 0 ( bank 0 ) . Đây là dãy
mặc định sau khi reset hệ thống . Các thanh ghi này ở các địa chỉ từ 00H –
07H .
Ex : MOV A,R5
=
MOV A,05H
Các lệnh sử dụng các thanh ghi từ R0 – R7 là các lệnh ngắn và thực hiện
nhanh hơn so với các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp.
Các giá trị thường được sử dụng nên chứa ở một trong các thanh ghi này .
Dãy thanh ghi đang được sử dụng được gọi là dãy thanh ghi tích cực . Dãy
thanh ghi tích cực có thể được thay đổi bằng cách thay đổi các bit chọn dãy
trong thanh ghi PSW .
4. Các thanh ghi chức năng đặc biệt (SFR):
Các thanh ghi nội của 8051 được cấu hình thành một phần của RAM
trên chip , do vậy mỗi thanh ghi cũng có một địa chỉ . Cũng như các thanh
ghi từ R0 – R7 ta có 21 thanh ghi chức năng đặc biệt SFR chiếm phần trên
của RAM nội từ địa chỉ 80H – FFH . Lưu ý không phải tất cả 128 địa chỉ từ
80H – FFH đều được định nghĩa mà chỉ có 21 địa chỉ được định nghĩa .


Trang 12


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

4.1 Từ trạng thái chương trình PSW ( program status word ) :
Thanh ghi PSW có địa chỉ là D0H chứa các bit trang thái có chức
năng được tóm tắt trong bảng sau:
Bit
PSW.7
PSW.6
PSW.5
PSW.4
PSW.3

Ký hiệu
CY
AC
F0
RS1
RS0

Địa chỉ
D7H
D6H
D5H
D4H
D3H


PSW.2
PSW.1
PSW.0

OV
P

D2H
D1H
D0H

Mô tả bit
Cờ nhớ
Cờ nhớ phụ
Cờ 0
Chọn dãy thanh ghi ( bit 1)
Chọn dãy thanh ghi ( bit 0 )
00 = bank 0 địa chỉ từ 00H – 07H
01 = bank 1 địa chỉ từ 08H – 0FH
10 = bank 2 địa chỉ từ 10H – 17H
11 = bank 3 địa chỉ từ 18H – 1FH
Cờ tràn
Dự trữ
Cờ kiểm tra chẵn lẻ

4.2 Thanh ghi B :
Thanh ghi B ở địa chỉ F0H được dùng chung với thanh chứa A trong
các phép toán nhân (MUL) , chia (DIV) .Các bit của thanh ghi B được định
địa chỉ từ F0H-F7H.
4.3 Con trỏ Stack :

Con trỏ Stack SP ( stack pointer ) là một thanh ghi 8 bit ở địa chỉ 81H.
SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của Stack . Các lệnh liên quan
đến Stack bao gồm lệnh cất dữ liệu vào Stack ( PUSH ) và lệnh lấy dữ liệu
ra khỏi Stack ( POP ). Việc cất dữ liệu vào Satck làm tăng thanh ghi SP
trước khi ghi dữ liệu và việc lấy dữ liệu ra Stack sẽ làm giảm thanh ghi SP.
Nếu ta không khởi động SP , nội dung mặc định của thanh ghi này là 07H
.Các lệnh PUSH và POP sẽ cất dữ liệu vào stack và lấy dữ liệu từ stack , các
lệnh gọi chương trình con ( ACALL , LCALL ) và lệnh trở về ( RET , RETI
) cũng cất và phục hồi nội dung của bộ đếm chương trình PC ( program
counter ) .
4.4 Con trỏ dữ liệu DPTR :
Con trỏ dữ liệu DPTR ( data pointer ) được dùng để truy xuất bộ nhớ
chương trình ngoài hoặc bộ nhớ dữ liệu ngoài . DPTR là thanh ghi 16 bit có
địa chỉ là 82H ( DPL , byte thấp ) và 83H ( DPH , byte cao ) .
Ex: MOV A,#55H
MOV DPTR,#1000H
MOV @DPTR,A

Trang 13


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

4.5 Các thanh ghi Port :
Các port xuất nhập của 8051 bao gồm port 0 tại địa chỉ 80H , port 1
tại địa chỉ 90H , port 2 tại địa chỉ A0H và port 3 tại địa chỉ 0BH. Các port 0 ,
2 và 3 không được dùng để xuất/nhập nếu ta sử dụng thêm bộ nhớ ngoài
hoặc nếu có một số đặc tính của 8051 được sử dụng ( như là ngắt , port nối
tiếp ) .

Tất cả các port đều được định địa chỉ từng bit nhằm cung cấp các khả năng
giao tiếp mạnh .
4.6 Các thanh ghi định thời :
8051 có hai bộ đếm/định thời ( timer/counter ) 16 bit để định các
khỏang thời gian hoặc để đếm các sự kiện .Bộ định thời 0 có địa chỉ 8AH
( TL0,byte thấp ) và 8CH ( TH0,byte cao ) , bộ định thời 1 có địa chỉ 8BH
( TL1 ,byte thấp ) và 8DH (TH1,byte cao ) .
Họat động của bộ định thời được thiết lập bởi thanh ghi chế độ định thời
TMOD ( timer mode register ) ở địa chỉ 89H và thanh ghi điều khiển định
thời TCON ( timer control regsiter ) ở địa chỉ 88H.
4.7 Các thanh ghi port nối tiếp :
Bên trong 8051 có một port nối tiếp để truyền thông với các thiết bị
nối tiếp như các thiết bị đầu cuối hoặc moderm , hoặc để giao tiếp với các IC
khác. Một thanh ghi đựơc gọi là bộ đệm dữ liệu nối tiếp SBUF ( serial data
buffer ) ở địa chỉ 99H lưu trữ dữ liệu truyền đi và dữ liệu nhận về .Việc ghi
lên SBUF sẽ nạp dữ liệu để truyền và việc đọc SBUF sẽ lấy dữ liệu đã nhận
được .
Các chế độ hoạt động khác nhau được lập trình thông qua thanh ghi điều
khiển port nối tiếp SCON ( serial port control register ) ở địa chỉ 98H .
4.8 Các thanh ghi ngắt :
8051 có một cấu trúc ngắt với hai mức ưu tiên và năm nguyên nhân
ngắt . Các ngắt bị vô hiệu hóa sau khi reset hệ thống và sau đó được cho
phép ngắt bằng cách ghi vào thanh ghi cho phép ngắt IE ( interrupt enable
register ) ở địa chỉ A8H. Mức ưu tiên ngắt được thiết lập qua thanh ghi ưu
tiên ngắt IP ( interrupt priority register ) ở địa chỉ B8H.Cả hai thanh ghi này
đều được định địa chỉ từng bit.

Trang 14



Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

5. Các cải tiến của 8052:
Các vi mạch 8052 ( và các phiên bản CMOS ) có hai cải tiến so với
8051. Một là có thêm 128 byte RAM trên chip từ địa chỉ 80H-FFH . Điều
này không xung đột với các thanh ghi chức năng đặc biệt (có cùng địa chỉ)
vì 128 byte Ram thêm vào chỉ có thể truy xuất bằng cách dùng kiểu định địa
chỉ gián tiếp .
Ex: MOV A,#100
MOV R0,#0F0H ( Trùng với địa chỉ của thanh ghi B )
MOV A,@R0
Cải tiến thứ hai là có thêm bộ định thời 16 bit Timer 2
6. Hoạt động Reset:
8051 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ
máy và sau đó chuyển về mức thấp. RST có thể được tác động tay hoặc
đựơc tác động khi cấp nguồn bằng cách dùng một mạch RC.
Trạng thái của các thanh ghi sau khi reset như sau :
Nội dung

Thanh ghi
Bộ đếm chương trình
Thanh chứa A
Thanh ghi B
PSW
SP
DPTR
Port 0-3
IP


0000H
00H
00H
00H
07H
0000H
FFH
xxx00000B (8051)
xx000000B (8052)
0xx00000B (8051)
0x000000B (8052)
00H
00H
00H
0xxxxxxxB
0xxx0000B

IE
Các thanh ghi định thời
SCON
SBUF
PCON (HMOS)
PCON (CMOS)

Trang 15


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh


CHƯƠNG III : LẬP TRÌNH HỢP NGỮ VÀ TÓM TẮT TẬP LỆNH
I. LẬP TRÌNH HỢP NGỮ :
Hợp ngữ ( assembly language ) là ngôn ngữ của máy tính có vị trí ở
giữa ngôn ngữ máy và ngôn ngữ cấp cao.Các ngôn ngữ cấp cao như
Pascal,C sử dụng các từ và các phát biểu dễ hiểu hơn. Ngôn ngữ máy (
machine language ) là ngôn ngữ ở dạng số nhị phân của máy tính. Một
chương trình viết bằng ngôn ngữ máy là một chuỗi các byte nhị phân biểu
diễn các lệnh mà máy tính thực thi được.
Hợp ngữ thay thế các mã nhị phân của ngôn ngữ máy bằng các mã gợi
nhớ giúp ta dễ nhớ và dễ lập trình hơn.
Ex : lệnh cộng có mã nhị phân là “10110011” được hợp ngữ thay thế
bằng mã gợi nhớ ADD
Một chương trình viết bằng hợp ngữ không thể được thực thi trực tiếp
.Sau khi được viết xong chương trình này phải được dịch thành ngôn ngữ
máy.
Một chương trình viết bằng hợp ngữ là chương trình viết dưới dạng
các ký hiệu, các mã gợi nhớ … trong đó mỗi phát biểu tương ứng với một
lệnh của ngôn ngữ máy.
Mỗi dòng lệnh được chia thành các trường cách biệt nhau bởi khoãng
trắng hoặc Tab. Khuôn dạng tổng quát của mỗi dòng lệnh như sau:
[ label : ] mnemonic [ operand ][,operand ][, … ] [;comment]
Label: nhãn
Mnemonic : mã gợi nhớ
Operand : toán hạng
Comment : chú thích
a. Trường nhãn :
Nhãn là một loại ký hiệu và được nhận dạng bằng dấu “:” ( kết
thúc nhãn). Nhãn phải được bắt đầu bằng một ký tự chữ, dấu hỏi “?”,dấu
nối dưới “_” và tiếp theo phải là các ký tự chữ,các số, dấu “?”,dấu “_”.
Nhãn có thể dài tối đa là 31 ký tự ở dạng chữ thường hoặc chữ in. Nhãn

không được trùng với các từ khóa ( các mã gợi nhớ, các chỉ dẫn, các toán
tử hoặc các ký hiệu tiền định nghĩa ).
b. Trường mã gợi nhớ :
Mã gợi nhớ là các ký hiệu biểu diễn cho các lệnh . Trường mã
gợi nhớ của lệnh theo sau trường nhãn .
Ex : MOV,ANL,SETB ….

Trang 16


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

c. Trường toán hạng :
Trường toán hạng theo sau trường mã gợi nhớ. Trường này
chứa địa chỉ hoặc dữ liệu mà lệnh sẽ sử dụng. Một nhãn có thể được dùng
để biểu thị địa chỉ của dữ liệu .Các khả năng của trường toán hạng phụ
thuộc vào thao tác. Có thao tác không có toán hạng (ex: lệnh RET,NOP..)
trong khi các thao tác khác cho phép nhiều toán hạng cách nhau bởi dấu
phẩy.
d. Trường chú thích :
Các ghi chú dùng để làm rõ chương trình được đặt trong trường
chú thích ở cuối dòng lệnh. Các chú thích được bắt đầu bằng dấu “ ; ”.
Các chú thích có thể chiếm nhiều dòng riêng và cũng phải bắt đầu bằng
dấu “ ; “ . Các chương trình con và các phần có kích thước lớn của
chương trình thường bắt đầu bởi một khối chú thích bao gồm nhiều dòng
chú thích để giải thích các đặt trưng của chương trình.
II. TÓM TẮT TẬP LỆNH :
Cũng như các bộ vi xử lý 8 bit các lệnh của 8051 có các opcode 8 bit ,
do vậy số lệnh có thể lên đến 256 lệnh ( thực tế có 255 lệnh ,1 lệnh không

được định nghĩa ). Ngoài opcode một số lệnh còn có thêm 1 hoặc 2 byte nữa
cho dữ liệu hoặc địa chỉ . Tập lệnh có 139 lệnh 1 byte , 92 lệnh 2 byte và 24
lệnh 3 byte .
1. CÁC KIỂU ĐỊNH ĐỊA CHỈ :
Các kiểu định địa chỉ là phần cần thiết cho toàn bộ tập lệnh của mỗi
một bộ vi xử lý , bộ vi điều khiển . Các kiểu định địa chỉ cho phép ta xác
định rõ nguồn và đích của dữ liệu theo nhiều cách khác nhau phụ thuộc vào
tình huống lập trình ,có 8 kiểu định địa chỉ :
 Thanh ghi ( register )
 Trực tiếp (direct )
 Gián tiếp ( indirect )
 Tức thời ( immediate )
 Tương đối ( relative )
 Tuyệt đối ( absolute )
 Dài ( long )
 Chỉ số ( index )
1.1. ĐỊNH ĐỊA CHỈ THANH GHI :
Kiểu định địa chỉ thanh ghi đựơc ký hiệu là Rn, trong đó n có giá trị từ
0-7, A, DPTR, PC, C và cặp thanh ghi AB.
Ex : ADD A,R7

Trang 17


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

Có 4 dãy thanh ghi nhưng ở một thời điểm chỉ có một dãy tích cực. Các dãy
thanh ghi chiếm 32 byte đầu tiên của RAM dữ liệu trên chip ( 00H-1FH ).
Để chọn dãy thanh ghi tích cực ta tác động lên các bit RS1,RS0 của từ trạng

thái chương trình PSW. Khi hệ thống được reset thì dãy thanh ghi 0 mặc
định được tích cực.
1.2. ĐỊNH ĐỊA CHỈ TRỰC TIẾP :
Kiểu định địa chỉ trực tiếp được sử dụng để truy xuất các biến nhớ
hoặc các thanh ghi trên chip.
Ex : MOV A,55H
MOV P1,A
( P1 có địa chỉ 90H )
1.3. ĐỊNH ĐỊA CHỈ GIÁN TIẾP :
Kiểu định địa chỉ gián tiếp được nhận biết nhờ vào ký tự @ đặt trước
R0 hoặc R1. Các thanh ghi R0 và R1 có thể hoạt động như là các con trỏ và
nội dung của chúng chỉ ra địa chỉ trong RAM nơi mà dữ liệu được đọc hay
ghi.Ta cần đến kiểu định địa chỉ gián tiếp khi ta duyệt các vị trí liên tiếp
trong bộ nhớ.
Ex : Thực hiện việc xóa tuần tự RAM nội từ địa chỉ 60H-7FH
MOV R0,#60H
LOOP:
MOV @R0,#0
INC R0
CJNE R0,#80H,LOOP
( tiếp tục )
1.4. ĐỊNH ĐỊA CHỈ TỨC THỜI :
Khi toán hạng nguồn là một hằng số thay vì là một biến ,hằng số này
có thể đưa vào lệnh và đây là byte dữ liệu tức thời. Các toán hạng tức thời
được nhận biết nhờ vào ký tự # đặt trước chúng. Toán hạng này có thể là
một hằng số học,một biến hoặc một biểu thức số học sử dụng các hằng số .
Ex : MOV A,#12
MOV DPTR,#8000H
1.5. ĐỊNH ĐỊA CHỈ TƯƠNG ĐỐI :
Kiểu định địa chỉ tương đối chỉ được sử dụng cho các lệnh nhảy .Một

địa chỉ tương đối( còn được gọi là offset ) là một giá trị 8 bit có dấu .Giá trị
này được cộng với bộ đếm chương trình để tạo ra địa chỉ của lệnh tiếp theo
cần được thực thi.
Ex : SJMP THERE
DJNE …
CJNE …
Trang 18


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

Định địa chỉ tương đối có điểm lợi là cung cấp cho chúng ta mã không phụ
thuộc vào vị trí , nhưng lại có điểm bất lợi là các đích nhảy bị giới hạn trong
tầm -128 byte đến 127 byte.
1.6. ĐỊNH ĐỊA CHỈ TUYỆT ĐỐI :
Kiểu định địa chỉ tuyệt đối chỉ được sử dụng với các lệnh ACALL và
AJMP. Đây là các lệnh 2 byte cho phép rẽ nhánh chương trình trong trang
2K hiện hành của bộ nhớ chương trình . Để không bị giới hạn ta có thể sử
dụng lệnh LCALL, LJMP.
Ex : LOOP:
LCALL GIAI_MA
LJMP LOOP
1.7. ĐỊNH ĐỊA CHỈ DÀI :
Kiểu định địa chỉ dài chỉ được dùng cho các lệnh LCALL và LJMP
các lệnh 3 byte này chứa địa chỉ đích 16 bit . Lợi ích của lệnh này là sử dụng
hết toàn bộ không gian nhớ chương trình 64K, nhưng lại có điểm bất lợi là
lệnh dài đến 3 byte.
1.8. ĐỊNH ĐỊA CHỈ CHỈ SỐ :
Kiểu định địa chỉ chỉ số sử dụng một thanh ghi nền ( hoặc bộ đếm

chương trình hoặc con trỏ dữ liệu ) và một offset ( thanh chứa A ) tạo thành
dạng địa chỉ hiệu dụng cho lệnh JMP hoặc lệnh MOVC.
Ex: MOVC A,@A+<base reg>
JMP @A+DPTR
2. CÁC LOẠI LỆNH :
Các lệnh của 8051 được chia làm 5 nhóm:
 Nhóm lệnh số học
 Nhóm lệnh logic
 Nhóm lệnh di chuyển dữ liệu
 Nhóm lệnh xử lý bit
 Nhóm lệnh rẽ nhánh
Ghi chú :
Rn
direct
@Ri
source
destination
#data

: địa chỉ thanh ghi R0-R7
: địa chỉ 8 bit trong RAM nội ( 00H-0FH )
: địa chỉ gián tiếp sử dụng thanh ghi R0 hoặc R1
: toán hạng nguồn - có thể là Rn,direct hoặc @Ri
: toán hạng đích – có thể là Rn,direct hoặc @Ri
: hằng số 8 bit ( Binary,Decimal,Hexa)

Trang 19


Bài giảng Vi điều khiển

Biên soạn: Ths Lê Hoàng Anh

#data 16
bit
rel
addr11
addr16

: hằng số 16 bit
: địa chỉ trực tiếp của một bit
: địa chỉ tương đối ( offset ) 8 bit ex : nhãn
: địa chỉ 11 bit trong trang hiện hành
: địa chỉ 16 bit

2.1. CÁC LỆNH SỐ HỌC :
ADD A,source
: cộng toán hạng nguồn với A
ADD A,#data
ADDC A,source : cộng toán hạng nguồn với A và cờ nhớ
ADDC A,#data
SUBB A,source : trừ bớt A bởi toán hạng nguồn và số mượn ( cờ
nhớ )
SUBB A,#data
INC A
: tăng thanh ghi A một đơn vị
INC source
DEC A
: giảm thanh ghi A một đơn vị
INC DPTR
: tăng thanh ghi DPTR một đơn vị

MUL AB
: nhân A với B
DIV AB
: chia A bởi B ( A chứa thương số,B chứa số dư )
DA A
: hiệu chỉnh thập phân thanh ghi A
2.2. CÁC LỆNH LOGIC :
ANL A,source
: AND
ANL A,#data
ANL direct,A
ANL direct,#data
ORL A,source
: OR
ORL A,#data
ORL direct,A
ORL direct,#data
XRL A,source
: XOR
XRL A,#data
XRL direct,A
XRL direct,#data
CLR A
: xóa thanh ghi A
CPL A
: lấy bù A
RL A
: quay trái A (MSB=>LSB)
RLC A
: quay trái A với cờ C

RR A
: quay phải A ( LSB=>MSB)
Trang 20


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

RRC A
SWAP A

: quay phải A với cờ C
: hoán đổi hai nibble ( hai nữa 4 bit )

2.3. CÁC LỆNH DI CHUYỂN DỮ LIỆU :
MOV A,source
: di chuyển toán hạng nguồn đến toán hạng
đích
MOV A,#data
MOV dest,A
MOV dest,source
MOV dest,#data
MOV DPTR,#data16
MOVC A,@A+DPTR : di chuyển từ bộ nhớ chương trình
MOVC A,@A+PC
MOVX A,@Ri
: di chuyển từ bộ nhớ dữ liệu
MOVX A,@DPTR
MOVX @Ri,A
MOVX @DPTR,A

PUSH direct
: cất vào stack
POP direct
: lấy ra từ stack
XCH A,source
: trao đổi các byte
XCHD A,@Ri
: trao đổi các digit thấp
2.4. CÁC LỆNH THAO TÁC TRÊN BIT :
CLR C
: xóa bit
CLR bit
: set bit bằng 1
SETB C
SETB bit
CPL C
: lấy bù bit
CPL bit
ANL C,bit
: AND bit với C
ANL C,/bit
: AND NOT bit với C
ORL C,bit
: OR bit với C
ORL C,/bit
: OR NOT bit với C
MOV C,bit
: di chuyển bit đến bit
MOV bit,C
JC rel

: nhảy nếu C bằng 1
JNC rel
: nhảy nếu C bằng 0
JB bit,rel
: nhảy nếu bit bằng 1
JNB bit,rel
: nhảy nếu bit bằng 0
JBC bit,rel
: nhảy nếu bit bằng 1 rồi xóa bit
Trang 21


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

2.5. CÁC LỆNH RẼ NHÁNH :
ACALL addr11
: gọi chương trình con
LCALL addr16
RET
: quay về từ chương trình con
RETI
: quay về từ trình phục vụ ngắt
AJMP addr11
: nhảy
LJMP addr16
SJMP rel
JMP @A+DPTR
JZ rel
: nhảy nếu A bằng 0

JNZ rel
: nhảy nếu A khác 0
CJNE A,direct,rel
: so sánh và nhảy
CJNE A,#data,rel
CJNE Rn,#data,rel
DJNZ Rn,rel
: giảm và nhảy nếu khác không
DJNZ direct,rel
NOP
: không làm gì
III. CẤU TRÚC CHƯƠNG TRÌNH :
1. TỔ CHỨC CHƯƠNG TRÌNH :
Các phần của chương trình được sắp xếp theo trình tự sau :
 Các phép gán
 Các lệnh khởi động ( thiết lập timer, ngắt , nạp các giá trị ban
đầu … )
 Thân chính của chương trình
 Các chương trình con
 Các định nghĩa hằng dữ liệu ( DB và DW )
Gán :
Việc định nghĩa các hằng số bằng phát biểu gán làm cho
chương trình dễ đọc và bảo trì hơn. Các hằng số được dùng trong suốt
chương trình bằng cách thay thế các giá trị bằng các ký hiệu đã được gán.
Khi chương trình được dịch thì các giá trị tương ứng được thay thế cho
các ký hiệu.
Chương trình con :
Khi các chương trình trở nên lớn, ta phải chia nhỏ các thao tác
lớn và phức tạp thành các thao nhỏ và đơn giản. Các thao tác nhỏ và đơn
giản này được lập trình thành các chương trình con. Các chương trình

con được bắt đầu bằng một nhãn và kết thúc bằng lệnh RET hoặc RETI.

Trang 22


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

Các chỉ dẫn :
Các chỉ dẫn là các lệnh đối với trình dịch hợp ngữ.
 ORG : chỉ dẫn ORG dùng để thiết lập một gốc mới của chương
trình cho các phát biểu theo sau.
Ex : ORG 0000H
ORG 0030H
 END : là chỉ dẫn thông báo cho trình dịch hợp ngữ biết đã kết thúc
chương trình nguồn. END là phát biểu cuối cùng của chương trình.
 EQU ( equate ) : chỉ dẫn EQU gán giá trị số cho tên của ký hiệu
được định nghĩa.
Ex : N27
EQU
27
HERE
EQU
$
DATA
EQU
50H
 BIT : chỉ dẫn BIT gán giá trị bit vào tên của ký hiệu.
Ex : MOTOR
BIT

P0.0
 DB : chỉ dẫn DB dùng để gán một hằng số vào bộ nhớ chương
trình, các biểu thức theo sau có thể là một chuỗi của một hay nhiều
giá trị byte. Chỉ dẫn DB cho phép chuỗi ký tự (đặt trong hai dấu
nháy đơn ) dài hơn hai ký tự, mỗi ký tự trong chuỗi được biến đổi
thành mã ASCII . Nếu có một nhãn được nhãn được dùng, nhãn
được gán địa chỉ của byte đầu tiên.
Ex : SQUARES:
DB 0,1,4,9,16,25
MESSAGE:
‘ LAC HONG UNIVERSITY ‘,0
; chuỗi ký tự kế thúc bởi 0
2. LƯU ĐỒ THUẬT GIẢI :
Lưu đồ thuật giải là các cộng cụ thường dùng cho các giai đoạn khởi
đầu của lập trình hợp ngữ. Lưu đồ thuật giải là công cụ trực quan giúp ta dễ
dàng trình bày và hiểu chương trình hợp ngữ một cách hệ thống. Lưu đồ
thuật giải cho phép một yêu cầu được mô tả dưới dạng “điều gì phải được
thực hiện “ hơn là “thực hiện điều đó bằng cách nào”. Các ký hiệu thường
dùng nhất cho việc lập lưu đồ bao gồm :

Trang 23


Bài giảng Vi điều khiển
Biên soạn: Ths Lê Hoàng Anh

: khối quyết định ,khối này thường đặt ra các câu hỏi cho
các câu trả lời có ( Yes ) hay không ( No ).

: mũi tên chỉ đường đi của chương trình


: khối xử lý

: khối xuất/nhập

: điểm bắt đầu hoặc kết thúc chương trình

: chương trình con

: kết nối qua trang

Trang 24


Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×