31

Click here to load reader

c1-Cau Tao Vi Xu Ly 89v51 (20)

  • Upload
    xuan-ta

  • View
    348

  • Download
    1

Embed Size (px)

Citation preview

Page 1: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

CHƯƠNG 1:

CẤU TẠO VI XỬ LÝ 89V51RB2

1.1. Tóm tắt phần cứng

MCS-51 là họ IC vi điều khiển do hãng INTEL sản xuất. Các IC tiêu biểu

cho họ là 8031, 8051, 8951… Những đặc điểm chính và nguyên tắc hoạt động

của các bộ vi điều khiển này khác nhau không nhiều. Khi đã sử dụng thành thạo

một vi điều khiển thì ta có thể nhanh chóng vận dụng kinh nghiệm để làm quen

và làm chủ các ứng dụng của bộ vi điều khiển khác. Vì vậy để có những hiểu biết

cụ thể về các bộ vi điều khiển cũng như để phục vụ cho đề tài này ta bắt đầu tìm

hiểu một bộ vi điều khiển thông dụng nhất, đó là họ MCS-51

1.2. Sơ đồ khối, sơ đồ chân, chức năng các chân:

1.2.1 Sơ đồ khối:

1.2.2. Sơ đồ chân:

1

Page 2: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

1.2.3.Chức năng các chân:

89V51RB2 có 40 chân trong đó 32 chân có công dụng xuất/ nhập. Trong 32 chân đó có 24 chân có tác dụng kép (nghĩa là 1 chân có 2 chức năng), mỗi một đường có thể hoạt động xuất/ nhập, hoạt động như mộ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.

1.2.4. Các port:

Port 0:

- Port 0 (P0.0 – P0.7) có số chân từ 32 – 39.

- Port 0 có chức năng xuất nhập dữ liệu (P0.0 – P0.7) trong các thiết kế cỡ nhỏ không sử dụng bộ nhớ ngoài.

- Port 0 có chức năng là bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) trong các thiết kế cỡ lớn có sử dụng bộ nhớ ngoài.

Port 1:

- Port 1 (P1.0 – P1.7) có số chân từ 1 – 8.

- Port 1 là port xuất nhập dữ liệu (P1.0 – P1.7) khi sử dụng hoặc không sử dụng bộ nhớ ngoài.

Port 2:

- Port 2 (P2.0 – P2.7) có số chân từ 21 – 28.

- Port 2 có chức năng là port xuất nhập dữ liệu (P2.0 – P2.7) khi không sử dụng bộ nhớ ngoài.

- Port 2 có chức năng là bus địa chỉ byte cao (A8 - A15) khi sử dụng bộ nhớ ngoài.

Port 3:

- Port 3 (P3.0 – P3.7) có số chân từ 10 – 17.

- Port 3 có chức năng xuất nhập dữ liệu (P3.0 – P3.7) khi không sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.

- Port 3 có chức năng là các tín hiệu điều khiển khi sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt.

- Chức năng của các chân port 3:

Bit Tên Địa chỉ bit Chức năng

P3.0 RxD B0H Chân nhận dữ liệu của port nối tiếp.

P3.1 TxD B1H Chân phát dữ liệu của port nối tiếp.

P3.2 INT0\ B2H Ngõ vào ngắt ngoài 0.

P3.3 INT1\ B3H Ngõ vào ngắt ngoài 1.

P3.4 T0 B4H Ngõ vào của bộ định thời/ đếm 0 .

2

Page 3: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

P3.5 T1 B5H Ngõ vào của bộ định thời/ đếm 1.

P3.6 WR\ B6H Điều khiển ghi vào RAM ngoài.

P3.7 RD\ B7H Điều khiển đọc từ RAM ngoài.

Bảng tóm tắt chức năng các chân của Port 3

1.2.5. Các chân tín hiệu điều khiển.

Chân PSEN:

- PSEN (Program Store Enable): cho phép bộ nhớ chương trình, chân số 29.

- Chân PSEN\ có chức năng là tín hiệu cho phép truy xuất (đọc) bộ nhớ chương trình (ROM) ngoài hoặc là tín hiệu truy xuất, tích cực mức thấp.

- PSEN ở mức thấp trong thời gian CPU tìm - nạp lệnh từ ROM ngoài. Khi CPU sử dụng ROM trong, PSEN sẽ ở mức cao.

- Khi sử dụng bộ nhớ chương trình bên ngoài, chân PSEN\ thường được nối với chân OE\ của ROM ngoài để cho phép CPU đọc mã lệnh từ ROM ngoài.

Chân ALE:

- ALE (Address Latch Enable): cho phép chốt địa chỉ, chân số 30.

- Chân ALE có chức năng là tín hiệu cho phép chốt địa chỉ để thực hiện việc giải đa hợp cho bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7). Ngoài ra chân ALE còn là tín hiệu xuất, tích cực mức cao.

- Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chíp và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. Chân ALE được dùng làm ngõ vào xung lập trình (PGM\).

Chân EA\:

- EA ( External Access): truy xuất ngoài, chân số 31.

- Tín hiệu vào EA\ thường được mắc lên mức 1 hoặc mức 0. Nếu ở mức 1, 89V51RB2 thi hành chương trình từ ROM nội. Nếu ở mức 0, 89V51RB2 thi hành chương trình từ ROM ngoài.

- Khi lập trình cho ROM trong chip thì chân EA đóng vai trò là ngõ vào của điện áp lập trình (Vpp = 12V – 12,5V cho 89V51RB2).

Chân RST:

- RST (Reset): thiết lập lại, chân số 9.

- Khi ngõ vào RST đưa lên cao ít nhất 2 chu kỳ máy, 89V51RB2 thiết lập lại trạng thái ban đầu. Khi ngõ vào RST ở mức thấp IC hoạt động bình thuờng.

3

Page 4: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Chân XTAL1, XTAL2:

- XTAL (Crystal): tinh thể thạch anh, chân số 18 – 19.

- XTAL1: ngõ vào mạch tạo xung clock trong chip.

- XTAL2: ngõ ra mạch tạo xung clock trong chip.

- Bộ dao động được tích hợp bên trong 89V51RB2, khi sử dụng 89V51RB2 người thiết kế chỉ cần nối thêm thạch anh (tần số thạch anh thường sử dụng là 12MHZ) và tụ.

Chân Vcc, GND:

- Vcc: chân số 40, cung cấp nguồn điện cho chip hoạt động.

Vcc = 4,5 – 5,5V.

- GND: chân số 20.

GND = 0V.

1.3 Tổ chức bộ nhớ.

Hình: Tóm tắt các vùng nhớ của 89V51RB2

4

SFR80H7FH

00H

Bộ nhớchương

trình(mã)

FFFH

000H

Bộ nhớ trong chip

PSEN\

WR\ RD\

Bộ nhớ chương

trình (mã)

FFFFH

0000H

Bộ nhớ dữ liệu

Bộ nhớ ngoài chip

Page 5: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Bảng tóm tắt bộ nhớ dữ liệu trên chip 89V51 ( Special Function Register:

Thanh ghi chức năng đặc biệt )

1.3.1. Bộ nhớ trong:

Bộ nhớ trong 89V51RB2 bao gồm ROM và RAM. RAM trong

89V51RB2 bao gồm nhiều thành phần: RAM đa chức năng, RAM định địa chỉ

bit và các dãy thanh ghi.

1.3.1.1. Bộ nhớ ROM ( Bộ nhớ chương trình):

Bộ nhớ chương trình dùng để lưu trữ chương trình điều khiển cho chip

hoạt động.

1.3.1.2. Bộ nhớ RAM (Bộ nhớ dữ liệu):

5

Page 6: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Bộ nhớ dữ liệu dùng để lưu trữ các dữ liệu và tham số.

1.3.1.3. RAM đa chức năng:

- Trên hình vẽ cho thấy 80 byte RAM đa chức năng chiếm địa chỉ từ 30H

đến 7FH.

- Mọi địa chỉ trong vùng RAM đa chức năng đều có thể truy xuất tự do

dùng kiểu định địa chỉ trực tiếp hoặc gián tiếp.

1.3.1.4. RAM định địa chỉ bit:

- RAM định địa chỉ bit gồm 128 bit được định địa chỉ chứa các byte có

địa chỉ từ 20H đến 2FH.

- RAM định địa chỉ bit có 3 kiểu truy xuất dữ liệu: trực tiếp, gián tiếp

hoặc theo từng bit.

1.3.1.5. Các dãy thanh ghi:

- 32 vị trí thấp của bộ nhớ nội chứa các dãy thanh ghi. Các lệnh của

89V51RB2 hỗ trợ 8 thanh ghi từ R0 – R7 thuộc dãy 0 và theo mặc định sau khi

Reset hệ thống các thanh ghi này ở các địa chỉ từ 00H đến 07H.

- Các lệnh dùng các thanh ghi R0 đến R7 sẽ ngắn hơn và nhanh hơn so

với các lệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp. Các dữ liệu

được dùng thường xuyên nên dùng một trong các thanh ghi này.

- Do có 4 dãy thanh ghi nên tại một thời điểm chỉ có một 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 bit chọn

dãy trong từ trạng thái chương trình PSW.

1.3.1.6. Các thanh ghi chức năng đặc biệt:

- Các thanh ghi nội của hầu hết các bộ vi xử lý đều được truy xuất rõ

ràng bởi một tập lệnh.

- Các thanh ghi nội của 89V51RB2 được cấu hình thành một phần của

RAM trên chip, vì vậy mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi bộ

đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động

trực tiếp). Cũng như các thanh ghi từ R0 đến R7, ta có 21 thanh ghi chức năng

đặc biệt (SFR: Special Function Register) chiếm phần trên của RAM nội từ địa

chỉ 80H đến FFH.

6

Page 7: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

- Ngoại trừ thanh ghi A có thể được truy xuất rõ ràng còn lại hầu hết các

thanh ghi chức năng đặc biệt được truy xuất bằng kiểu định địa chỉ trực tiếp.

Thanh ghi từ PSW ( Program Status Word ):

Bit Ký hiệu Địa chỉ Mô tả bit

PSW.7 CY D7H Cờ nhớ

PSW.6 AC D6H Cờ nhớ phụ

PSW.5 F0 D5H Cờ 0

PSW.4 RS1 D4H Chọn dãy thanh ghi (bit 1)

PSW.3 RS0 D3H Chọn dãy thanh ghi (bit 0):

00 = dãy 0: địa chỉ từ 00H đến 07H

01 = dãy 1: địa chỉ từ 08H đến 0FH

10 = dãy 2: địa chỉ từ 10H đến 17H

11 = dãy 2: địa chỉ từ 18H đến 1FH

PSW.2 OV D2H Cờ tràn

PSW.1 - D1H Dự trữ

PSW.0 P D0H Cờ kiểm tra chẵn lẻ

Thanh ghi PSW

Thanh ghi A:

- Thanh ghi A là thanh ghi tích lũy có công dụng chứa dữ liệu của các

phép toán mà vi điều khiển xử lý. Ví dụ lệnh MUL AB sẽ nhân những giá trị

không dấu 8 bit có trong hai thanh ghi A và B, rồi trả về kết quả 16 bit trong A

(byte thấp) và B (byte cao). Lệnh DIV AB sẽ lấy A chia B, kết quả số nguyên đặt

vào A, số dư đặt vào B.

- Thanh ghi A có địa chỉ byte là E0H và địa chỉ bit từ E0H – E7H.

Thanh ghi B:

- Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho các

phép toán nhân chia.

- Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa

mục đích. Nó là những bit định vị thông qua những địa chỉ từ F0H – F7H.

7

Page 8: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Thanh ghi SP:

- Con trỏ ngăn xếp (SP: Stack Pointer) là một thanh ghi 8 bit ở địa chỉ

byte là 81H, dùng để lưu trữ tạm thời các dữ liệu. Đây là thanh ghi không định

địa chỉ bit. Thanh ghi này chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh ngăn

xếp. Các lệnh trên ngăn xếp bao gồm lệnh cất dữ liệu vào ngăn xếp (PUSH) và

lệnh lấy dữ liệu ra khỏi ngăn xếp (POP). Lệnh cất dữ liệu vào ngăn xếp sẽ làm

tăng SP trước khi ghi dữ liệu và lệnh lấy ra khỏi ngăn xếp sẽ làm giảm SP. Đối

với chip 8051 thì vùng nhớ được dùng để làm ngăn xếp được lưu giữ trong RAM

nội.

- Để sử dụng ngăn xếp thì ta phải khởi động thanh ghi SP (nghĩa là nạp

giá trị cho thanh ghi SP) => vùng nhớ của ngăn xếp có địa chỉ bắt đầu là (SP) +1

và địa chỉ kết thúc là 7FH.

- Sau khi reset IC, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên

sẽ được cất vào ô nhớ ngăn xếp có địa chỉ 08H. Nếu phần mềm ứng dụng không

khởi động SP một giá trị mới thì dãy thanh ghi 1, có thể cả 2 và 3 sẽ không dùng

được vì vùng RAM này đã được dùng làm ngăn xếp. Ngăn xếp được truy xuất

trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc

truy xuất ngầm bằng lệnh gọi chương trình con (ACALL, LCALL) và các lệnh

trở về (RET, RETI) để lưu trữ giá trị của bộ đếm chương trình khi bắt đầu thực

hiện chương trình con và lấy lại khi kết thúc chương trình con.

Thanh ghi DPTR:

- Con trỏ dữ liệu (DPTR: Data Pointer Register) là thanh ghi 16 bit chứa

địa chỉ của ô nhớ cần truy xuất thuộc ROM trong hoặc ngoài và RAM ngoài

- Thanh ghi DPTR có địa chỉ byte là 82H (DPL: byte thấp) và 83H

(DPH: byte cao). Thanh ghi này không định địa chỉ bit.

Thanh ghi port xuất nhập:

- Các Port của 89V51RB2 bao gồm Port 0 ở địa chỉ 80H, Port 1 ở địa chỉ

90H, Port 2 ở địa chỉ A0H, Port 3 ở địa chỉ B0H. Tất cả các Port này đều có thể

truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp.

Thanh ghi port nối tiếp:

8

Page 9: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

- 89V51RB2 chứa một port nối tiếp cho việc trao đổi thông tin với các

thiết bị nối tiếp như máy tính hoặc giao tiếp nối tiếp với các IC khác. Một thanh

ghi đệm dữ liệu nối tiếp (SBUF: Serial Buffer) ở địa chỉ 99H sẽ giữ cả dữ liệu

truyền và dữ liệu nhận. Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì

đọc SBUF. Ngoài ra còn có thanh ghi điều khiển port nối tiếp (SCON: Serial

Control) có địa chỉ byte 98H dùng để báo trạng thái và điều khiển quá trình hoạt

động của port nối tiếp.

Thanh ghi định thời:

- 89V51RB2 có chứa hai bộ định thời/ bộ đếm 16 bit được dùng cho việc

định thời hoặc đếm sự kiện. Timer 0 ở địa chỉ 8AH (TL0: byte thấp) và 8CH

(TH0: byte cao). Timer 1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte

cao). Việc khởi động Timer được SET bởi Timer Mode (TMOD) ở địa chỉ 89H

và thanh ghi điều khiển Timer (TCON) ở địa chỉ 88H. Chỉ có TCON được địa

chỉ hoá từng bit.

Thanh ghi ngắt:

- Thanh ghi IE (Interrupt Enable: cho phép ngắt) có địa chỉ byte A8H và

địa chỉ bit A8H – AFH có công dụng cho phép hoặc không cho phép các ngắt

hoạt động (có thể từng ngắt riêng rẽ hoặc tất cả các ngắt)

- Thanh ghi IP (Interrup Priority: ưu tiên ngắt) có địa chỉ byte B8H và

địa chỉ bit B8H – BCH có công dụng thiết lập mức ưu tiên cho các ngắt (ưu tiên

thấp hoặc ưu tiên cao)

Thanh ghi điều khiển nguồn:

- Thanh ghi PCON (Power Control: điều khiển nguồn) không có bit định

vị. Nó ở địa chỉ 87H chứa nhiều bit điều khiển. Thanh ghi PCON được tóm tắt

như sau:

Bit 7 (SMOD) => cho phép tăng gấp đôi tốc độ truyền

dữ liệu nối tiếp (tốc độ baud) khi SMOD = 1.

Bit 6, 5, 4 => không có địa chỉ.

Bit 3, 2 (GF1, GF0) => cho phép người lập trình dùng

với mục đích riêng.

Bit 1 (PD) => dùng để quy định chế độ nguồn giảm.

9

Page 10: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Bit 0 (IDL) => dùng để quy định chế độ nghỉ.

Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả

các IC họ MCS – 51 nhưng chỉ được thi hành trong sự biên dịch của CMOD.

1.3.2. Bộ nhớ ngoài:

- 89V51RB2 có khả năng mở rộng không gian bộ nhớ chương trình lên

đến 64KB và không gian bộ nhớ dữ liệu lên đến 64KB.

- Khi dùng bộ nhớ ngoài, Port 0 không còn chức năng I/O nữa mà đó là

bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7). Port 2 là bus địa chỉ

byte cao (A8 - A15). Port 3 là các tín hiệu điều khiển (WR\, RD\

Kết nối và truy xuất bộ nhớ dữ liệu ngoài:

Sơ đồ kết nối và truy xuất bộ nhớ dữ liệu ngoài

Bộ nhớ dữ liệu ngoài là bộ nhớ đọc/ ghi được cho phép bởi các tín hiệu

RD\ và WR\ ở các chân P3.7 và P3.6. Lệnh dùng để truy xuất bộ nhớ dữ liệu

ngoài là MOVX, sử dụng con trỏ dữ liệu 16 bit DPTR hoặc R0, R1 làm thanh ghi

chứa địa chỉ.

Giải mã địa chỉ:

Nếu trường hợp ROM và RAM được kết hợp từ nhiều bộ nhớ có dung

lượng nhỏ hoặc cả hai giao tiếp với chip 89V51 thì cần phải giải mã địa chỉ. Việc

giải mã này cần cho hầu hết các bộ vi xử lý.

10

D0 – D7

A0 – A7

CS\

A8– A15

OE\

RAM 64KB

WR\

D Q

G

74373

AD0 – AD7

EA\

ALE

A8 – A15

RD\

8951

WR\

Page 11: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Ví dụ nếu các ROM và RAM có dung lượng 8KB được sử dụng thì tầm

địa chỉ mà chip 89V51 quản lý (0000H – FFFFH) cần phải được giải mã thành

từng đoạn 8KB để chip có thể chọn từng IC nhớ trên các giới hạn 8KB tương

ứng: IC1: 0000H – 1FFFH, IC2: 2000H – 3FFFH,…

IC chuyên dùng cho việc tạo tín hiệu giải mã là 74HC138, các ngõ ra

của IC này lần lượt nối với các ngõ vào chọn chip CS\ tương ứng của các IC nhớ

để cho các IC nhớ hoạt động (tại một thời điểm chỉ có một IC nhớ được phép

hoạt động). Cần lưu ý là do các đường cho phép IC nhớ hoạt động riêng lẻ cho

từng loại (PSEN\ cho bộ nhớ chương trình, RD\ và WR\ cho bộ nhớ dữ liệu) nên

89V51 có thể quản lý không gian nhớ lên đến 64KB cho ROM và 64KB cho

RAM.

Các không gian nhớ chương trình và dữ liệu gối nhau:

Vì bộ nhớ chương trình là bộ nhớ chỉ đọc, một tình huống khó xử được

phát sinh trong quá trình phát triển phần mềm cho 8951. Làm thế nào phần mềm

được viết cho một hệ thống đích để gỡ rối nếu phần mềm chỉ có thể được thực thi

từ không gian bộ nhớ chương trình chỉ đọc.

Giải pháp tổng quát là cho các bộ nhớ chương trình và dữ liệu ngoài gối

lên nhau. Vì PSEN\ được dùng để đọc chương trình và RD\ được dùng để đọc bộ

nhớ dữ liệu, một RAM có thể chiếm không gian nhớ chương trình và dữ liệu

bằng cách nối chân OE\ tới ngõ ra cổng AND có các ngõ vào là PSEN\ và RD\.

1.3.3. Hoạt động Reset:

89V51RB2 có ngõ vào Reset tác động ở mức cao trong khoảng thời gian

2 chu kỳ xung máy, sau đó xuống mức thấp để 89V51RB2 bắt đầu làm việc. RST

có thể kích bằng tay bởi một nút nhấn thường hở hoặc RST khi cấp nguồn, sơ đồ

mạch Reset tổng hợp như sau:

11

Page 12: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Trạng thái của các thanh ghi sau khi Reset hệ thống:

Bộ đếm chương trình (PC) 0000H

Thanh ghi A 00H

Thanh ghi B 00H

Thanh ghi PSW 00H

Thanh ghi SP 07H

Thanh ghi DPTR 0000H

Port 0 – Port3 FFH

Thanh ghi IP xxx00000B

Thanh ghi IE 0xx00000B

Các thanh ghi định thời 00H

Thanh ghi SCON 00H

Thanh ghi SBUF 00H

Thanh ghi PCON (HMOS) 0xxxxxxxB

Thanh ghi PCON (CMOS) 0xxx0000B

1.3.4. Các lệnh số học

ADD A, <src,byte>

SUBB A, <src, byte>

INC <byte>

DEC <byte>

MUL AB : (A) LOW [(A) x (B)]; có ảnh hưởng cờ OV

: (B) HIGH [(A) x (B)]; cờ Carry được xoá

DIV AB : (A) Integer result of [(A) / (B)]; cờ OV

: (B) Remainder of [(A) / (B)]; cờ Carry xoá

1.3.5. Các lệnh logic

Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toán hạng

thực thi một chu kì máy, ngoài A mất 2 chu kì máy. Những hoạt động logic có

thể được thực hiện trên bất kì byte nào trong vị trí nhớ dữ liệu nội mà không

thông qua thanh ghi A.

Các hoạt động logic được tóm tắt như sau:

ANL <dest-byte>,<src-byte>

ORL <dest-byte><src-byte>

12

Page 13: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

XRL <dest-byte>,<src-byte>

RL A : Quay thanh ghi A qua trái 1 bit

RLC A : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry

RR A : Quay thanh A ghi sang phải 1 bit

1.3.6. Các lệnh rẽ nhánh

JC Rel : Nhảy đến “Rel” nếu cờ carry C =1.

JNC Rel : Nhảy đến “Rel” nếu cờ Carry C =0

JB bit,rel : Nhảy đến “Rel” nếu (bit) =1

JNB bit,rel : Nhảy đến “rel” nếu (bit) =0

JBC bit, rel : Nhảy đến “rel” nếu (bit) =1 và xoá bit.

ACALL addr 11 : Lệnh gọi tuyệt đối trong Page 2K

LCAL Addr 16 :Lệnh gọi dài chương trình con trong 64 K

RET : Kết thúc chương trình con trở về chương trình chính.

RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính

AJMP addr11 : Nhảy tuyệt đối không điều kiện trong 2 K

LJMP addr16 : Nhảy dài không điều kiện trong 64 K

SJMP rel : Nhảy ngắn không điều kiện trong (-128 127) byte

CJNE A, direct, rel : so sánh và nhảy đến A nếu A direct

DJNE Rn,rel : Giảm Rn và nhảy nếu Rn 0

DJNZ direct, rel : Giảm và nhảy nếu direct 0

1.3.7. Các lệnh dịch chuyển dữ liệu

Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu

kỳ máy. Mẫu lệnh MOV <destination>, <source> cho phép di chuyển dữ liệu bất

kỳ 2 vùng nhớ nào của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng

đặc biệt mà không thông qua thanh ghi A. Vùng Stack của 8051 chỉ chứa 128

byte RAM nội, nếu con trỏ Stack SP được tăng quá địa chỉ 7FH thì các byte được

PUSH vào sẽ mất đi vào các byte POP ra thì không biết rõ.

Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp.

Địa chỉ gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@

DPTR). Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ nhớ ngoài thực thi

trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạng DESTINATION.

13

Page 14: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình

thực thi của lệnh MOVX, còn bình thường RD và WR không tích cực (mức 1).

1.3.8.Các lệnh luận lý

CLR C : Xoá cờ Carry xuống 0. Có ảnh hưởng cờ Carry.

CLR BIT : Xoá bit xuống 0. Không ảnh hưởng cờ Carry.

SET C : Set cờ Carry lên 1. Có ảnh hưởng cờ Carry.

SET BIT : Set bit lên 1. Không ảnh hưởng cờ Carry.

CPL C : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry.

CPL BIT : Đảo bit. Không ảnh hưởng cờ Carry.

ANL C, BIT : Có ảnh hưởng cờ Carry.

ANL C, : Không ảnh hưởng cờ Carry.

ORL C, BIT : Tác động cờ Carry.

ORL C, : Tác động cờ Carry.

MOV C, BIT : Cờ Carry bị tác động.

MOV BIT, C : Không ảnh hưởng cờ Carry.

1.4. Hoạt động của các Port nối tiếp.

Phần cứng truy xuất tới Port nối tiếp qua các chân TxD (P3.1) và RxD

(P3.0). Port nối tiếp tham dự hoạt động đầy đủ (sự phát và thu cùng lúc), và thu

vào bộ đệm mà nó cho phép 1 ký tự nhận vào và được cất ở bộ đệm trong khi ký

tự thứ hai được nhận vào. Nếu CPU đọc ký tự thứ nhất trước khi ký tự thứ hai

được nhận vào hoàn toàn thì dữ liệu không bị mất.

Hai thanh ghi chức năng đặc biệt cung cấp cho phần mềm truy xuất đến

Port nối tiếp là SBUF và SCON. Sự đệm Port nối tiếp (SBUF) ở địa chỉ 99H là 2

sự đệm thật sự: Ghi lên SBUF (nạp dữ liệu phát) và đọc SBUF (truy xuất dữ liệu

đã nhận). Đây là hai thanh ghi riêng biệt và rõ rệt, và thanh ghi phát chỉ ghi còn

thanh ghi thu chỉ đọc

1.4.1. Thanh ghi điều khiển Port nối tiếp SCON

Mode hoạt động của Port nối tiếp được set bởi việc ghi lên thanh ghi mode

của Port nối tiếp SCON ở địa chỉ 99H. Bảng tóm tắt thanh ghi điều khiển Port

nối tiếp SCON như sau:

14

Page 15: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Bit Ký hiệu Địa chỉ Mô tả hoạt động

SCON.7 SM0 9FH Bit 0 của mode Port nối tiếp

SCON.6 SM1 9EH Bit 1 của mode Port nối tiếp

SCON.5 SM2 9DH Bit 2 của mode Port nối tiếp. cho phép sự

truyền của bộ xử lý đa kênh ở mode 2 và 3; RI

sẽ không tích cực nếu bit thứ 9 đã thu vào là 0.

SCON.4 REN 9CH REN = 1 sẽ cho phép thu ký tự

SCON.3 TB8 9BH Phát bit 8. Bit 9 phát trong mode 2 và 3, được

set và xóa bởi phần mềm

SCON.2 RB8 9AH Thu bit 8. Bit thứ 9 nhận được

SCON.1 TI 99H Cờ ngắt phát. Cờ này được set ngay khi kết

thúc việc phát một ký tự; được xóa bởi phần

mềm

SCON.0 RI 98H Cờ ngắt thu. Cờ này được set ngay khi kết thúc

việc thu một ký tự; được xóa bởi phần mềm

SM0 SM1 MODE MÔ TẢ TỐC ĐỘ BAUD

0 0 0 Thanh ghi dịch Cố định (tần số dao động/12)

0 1 1 UART 8 bit Thay đổi (thiết lập bởi bộ định thời)

1 0 2 UART 9 bit Cố định (tần số dao động /12 hoặc /64)

1 1 3 UART 9 bit Thay đổi (thiết lập bởi bộ định thời)

Trước khi dùng Port nối tiếp, SCON phải được định đúng chế độ. VD: Để

khởi tạo Port nối tiếp chế độ 1 (SM0/SM1 = 0/1), cho phép thu (REN = 1), và set

cờ ngắt của việc phát sẵn sàng hoạt động (TI = 1), ta dùng lệnh sau :

MOV SCON, #01010010H.

Port nối tiếp của 8051 có 4 mode hoạt động tùy thuộc theo trạng thái của

SM0/SM1.

15Bảng Chức năng của thanh ghi SCON

Các chế độ hoạt động của port nối tiếp

Page 16: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Ba trong 4 mode cho phép truyền động bộ với mỗi ký tự thu hoặc phát sẽ

được bố trí bởi bit Start hoặc bit Stop.

1.4.2. Khởi động và truy xuất các thanh ghi Port nối tiếp

1.4.2.1. Cho phép thu

Bit cho phép thu REN trong thanh ghi SCON phải được set bởi phần mềm

để cho phép sự thu các ký tự. Điều này thường được dùng làm ở đầu chương

trình khi các Port nối tiếp và các timer được khởi động.

Ta có thể tác động bằng lệnh:

SETB REN

hoặc:

MOV SCON, # xxx1xxxxB

1.4.2.2. Dùng timer tạo tốc độ Baud cho port nối tiếp

Muốn tạo ra tốc độ Baud, ta khởi tạo TMOD ở chế độ tự nạp lại 8 bit (mode 2

của timer) và đặt trước giá trị nạp lại đúng vào byte cao của thanh ghi timer 1

(TH1) để tạo ra tốc độ tràn chính xác. Có những tốc độ Baud rất chậm ta dùng

chế độ 16 bit là chế độ 1 của timer, nhưng ta phải khởi tạo lại sau mỗi lần tràn

cho TL1/TH1.

Hoạt động khác được đếm giờ bởi việc dùng timer 1 ngoài là T1 (P3.5). Công

thức chung để xác định tốc độ Baud trong mode 1 và mode 3 là:

Ví dụ một hoạt động 1200 Baud đòi hỏi một tốc độ tràn là 1200/32 = 38,4

KHz. Nếu thạch anh 12MHz lái dao động trên Chip, thì timer 1 được đếm giờ ở

tốc độ của tần số 1 MHz. Bởi vì timer phải tràn ở tốc độ tần số 38,4 KHz và

Timer đếm giờ ở tốc độ của tần số 1 MHz, nên một sự tràn được yêu cầu với

1000/38,4 = 26,04 clock (làm tròn 26). Bởi vì các timer đếm lên và tràn khi có sự

chuyển đổi từ FFH 00H của bộ đếm, nên 26 là giá trị cần nạp cho TH1 (giá

trị đúng là -26). Ta dùng lệnh: MOV TH1, #26

Ví dụ sau khi khởi động Port nối tiếp hoạt động giống như một UART 8 bit

ở tốc độ 2400 Baud, dùng timer 1 để cung cấp tốc độ Baud:

MOV SCON, #01010010B ; Port nối tiêp mode 1

16

BAUD RATE = TIMER 1 OVERFLOW RATE 32

Page 17: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

MOV TMOD, #20 ; Timer 1 mode 2

MOV TH1, #-13 ; Nạp vào bộ đếm tốc độ

2400Baud

SETB TR1 ;Start timer 1

Trong SCON có SM0/SM1 để vào mode UART 8 bit, REN = 1 cho phép

Port nối tiếp thu các ký tự và TI = 1 cho phép phát ký tự đầu tiên bởi việc cho

biết thanh ghi đếm rỗng. TMOD có M1/M0 = 1/0 để đặt timer 1 vào mode tự

động nạp lại 8 bit. Việc set bit TR1 để mở máy chạy timer. Tốc độ Baud 2400 sẽ

cho ta tốc độ tràn timer 1 là 2400/32 = 76,8 KHz (ứng với thạch anh 12 MHz) sẽ

cho số xung clock sau mỗi sự tràn là 1000/76,8 = 13,02 (lấy tròn là 13). Vậy -13

là giá trị cần nạp vào TH1 để có tốc độ Baud là 2400 Baud.

1.5. Hoạt động ngắt của 89V51RB2

Trong nhiều ứng dụng đòi hỏi ta phải dùng ngắt (Interrupt) mà không dùng

timer bởi vì nếu dùng timer ta phải mất thời gian để chờ cờ tràn timer TFx set

mới xử lý tiếp chương trình. Do đó ta không có thời gian để làm các việc khác

mà ứng dụng đòi hỏi. Đây là chương trình rất quan trọng của 8051 nói riêng và

họ MSC – 51 nói chung.

Ngắt là một sự cố có điều kiện mà nó gây ra sự ngưng lại tạm thời của

chương trình để phục vụ một chương trình khác. Các ngắt đóng vai trò quan

trọng trong việc thiết kế và hiện thực các ứng dụng của bộ vi điều khiển. các ngắt

cho phép hệ thống đáp ứng một sự kiện theo cách không đồng bộ và xử lý sự

kiện trong khi một chương trình khác đang thực thi. Một hệ thống được điều

khiển bởi ngắt cho ta ảo tưởng đang làm nhiều công việc đồng thời. Tất nhiên

CPU không thể thực thi nhiều lệnh tại một thời điểm, nhưng nó có thể tạm thời

treo việc thực thi của chương trình chính để thực thi chương trình khác và sau đó

quay lại chương trình chính.

Khi chương trình chính đang thực thi mà có một sự ngắt xảy đến thì chương

trình chính ngưng thực thi và rẽ nhánh đến thủ tục phục vụ ngắt ISP (Interrupt

Service Routine). ISR thực thi để thực hiện hoạt động và kết thúc với lệnh RETI:

chương trình tiếp tục nơi mà nó dừng lại.

17

Page 18: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Ta có thể tóm tắt sự thực thi của 1 chương trình trong trường hợp có ngắt và

không có ngắt như sau:

Sơ đồ ngắt của 8051

Trong đó ký hiệu * cho biết ngắt chương trình chính để thực thi chương

trình con trong thủ tục phục vụ ngắt ISR. Còn ký hiệu ** cho biết việc quay lại

chương trình chính thực thi tiếp sau khi kết thúc chương trình con trong ISR.

1.5.1. Tổ chức ngắt của 8051

8051 cung cấp 5 nguồn ngắt, 2 ngắt ngoài, 3 ngắt timer và một ngắt Port

nối tiếp. tất cả các ngắt bị mất tác dụng bởi sự mặc định sau khi reset hệ thống và

được cho phép cá biệt bởi phần mềm.

Trong trường hợp có hai hoặc nhiều hơn sự ngắt xảy ra đồng thời hoặc

một sự ngắt đang được phục vụ mà xuất hiện một sự ngắt khác, thì sẽ có hai cách

thực hiện sự ngắt là sự kiểm tra liên tiếp và sự ưu tiên cấp 2.

1.5.2. Sự cho phép ngắt và sự cấm ngắt

Mỗi nguồn ngắt được cho phép riêng biệt hoặc sự cấm riêng biệt qua

thanh ghi chức năng đặc biệt có bit định vị IE (Interrupt Enable) tại địa chỉ

0A8H. Cũng như sự cá biệt cho phép các bit của mỗi nguồn ngắt có 1 bit cho

phép (hoặc cấm) chung mà nó có được xóa để cấm tất cả các ngắt hoặc được set

để cho phép chung các ngắt.

Hoạt động của từng bit trong thanh ghi cho phép ngắt IE được tóm tắt

trong bảng sau:

18

Timer

Thục thi chương trình không có ngắt

******

Main Program

Main Main Main Main

ISRISR ISR ISR

* **

TimerThục thi chương trình có ngắt

Page 19: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Hoạt động của từng bit trong thanh ghi cho phép ngắt IE

Hai bit phải set để cho phép 1 sự ngắt nào đó: là bit cho phép riêng và bit

cho phép chung. Ví dụ để cho phép ngắt timer 1 ta có thể thực hiện trên bit:

SETB ET1 và SETB EA

hoặc sự thực hiện trên byte:

MOV IE, #10001000B

Cả hai phương pháp này có kết quả chính xác sau khi reset hệ thống,

nhưng kết quả khác nhau nếu thanh ghi IE được ghi trên tuyến ở giữa chương

trình.

Giải pháp thứ nhất không có tác dụng trên các bit còn lại trong thanh ghi

IE, còn giải pháp thứ hai xóa các bit còn lại trong thanh ghi IE. Ở đầu chương

trình ta nên khởi tạo IE với lệnh MOV BYTE, nhưng sự cho phép ngắt và cấm

ngắt trên tuyến trong một chương trình sẽ dùng các lệnh SETB bit và CLR bit để

tránh kết quả phụ với các bit khác trong thanh ghi IE.

1.5.3. Xử lý các ngắt

Khi một ngắt xuất hiện và được chấp nhận bởi CPU thì chương trình

chính bị ngắt. Các hoạt động sau đây xuất hiện:

Lệnh hiện hành và kết thúc thực thi.

Bộ đếm chương trình PC được cất giữ vào Stack.

Trạng thái ngắt hiện hành được cất giữ vào bên trong.

19

Bit Symbol Bit Address Sự mô tả (Enable=1; Disable)

IE.7 EA AFH Cho phép ngắt toàn cục

IE.6 - AEH Không định nghĩa

IE.5 ET2 ADH Cho phép ngắt timer 2 (8052)

IE.4 ES ACH Cho phép ngắt Port nối tiếp

IE.3 ET1 ABH Cho phép ngắt timer 1

IE.2 EX1 AAH Cho phép ngắt ngoài External 1

IE.1 ET0 A9H Cho phép ngắt timer 0

IE.0 EX0 A8H Cho phép ngắt ngoài External 0

Page 20: c1-Cau Tao Vi Xu Ly 89v51 (20)

CHƯƠNG 1: CẤU TẠO VI XỬ LÝ 89V51RB2

Những sự ngắt bị ngăn lại tại mức ngắt.

Bộ đếm chương trình PC được LOAD với địa chỉ vectơ của thủ tục

phục vụ ngắt ISR.

Thủ tục phục vụ ngắt ISR được thực thi.

Thủ tục phục vụ ngắt ISR thực thi và đưa hoạt động vào đáp ứng ngắt, thủ

tục phục vụ ngắt ISR kết thúc với lệnh RETI (quay trở về chương trình chính từ

Stack). Điều này khôi phục lại giá trị của bộ đếm chương trình từ Stack và hoàn

toàn dừng lại trạng thái cũ. Sự thực thi của chương trình chính tiếp tục ở nơi mà

nó ngừng lại.

20