1. Trang chủ
  2. » Luận Văn - Báo Cáo

thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809

84 741 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 84
Dung lượng 1,57 MB

Nội dung

Cờ này được set hoặc clear bởi phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra rằng có 1 số chẵn hoặc số lẻ bit 1 trong thanh chứa II.3.4.2 Thanh ghi B Thanh ghi B ở địa chỉ F0H được dùng

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Độc lập – Tù do – Hạnh phóc

NHIỆM VÔ

THIẾT KẾ TỐT NGHIỆP

Họ và tên Ngô Quốc Toàn

Ngành Điều khiển Tự động

1 ĐÒ tài: Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi : LCD, ADC0809, RTC DS12887 và bàn phím sè HEX

2 Các số liệu ban đầu:

………

………

………

………

………

………

3 Nội dung các phần thuyết minh và tính toán: ………

………

………

………

………

………

………

Trang 2

4 Các bản vẽ đồ thị (ghi rõ các loại bản vẽ và kích thước các bản vẽ):

………

………

………

………

………

………

………

………

5 Cán bộ hướng dẫn: ………… …Vũ Vân Hà … ………

6 Ngày giao nhiệm vụ thiết kế:……… ………

7 Ngày hoàn thành nhiệm vụ: ………

Ngày tháng 04 năm 2006

(Ký, ghi rõ họ tên) (Ký, ghi rõ họ tên)

Sinh viên đã hoàn thành Ngày tháng 04 năm 2006 (Ký, ghi rõ họ tên)

Trang 3

Mục Lục

Lời cảm ơn 7

MỞ ĐẦU 8

Phần I: Tổng quan về VđK 8051 và Các thiết bị ngoại vi 9

CHƯƠNG I: VI ĐIỀU KHIỂN 8051 9

I KHÁI NIỆM CHUNG VỀ VI ĐIỀU KHIỂN 9

I.1 Sù ra đời 9

I.2 Điểm khác biệt giữa VĐK và VXL dùng chung 9

I.3 Tiêu chuẩn lùa chọn 1 bé vi điều khiển 10

II VI ĐIỀU KHIỂN 8051 10

II.1 Sơ đồ khối của 8051 10

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

II.2.1 Sơ đồ các chân 11

II.2.2 Chức năng của các chân 11

II.2.3 Cấu trúc của các cổng xuất/nhập 14

II.3 Tổ chức bộ nhớ 8051 14

II.3.1 Vùng RAM đa mục đích 15

II.3.2 Vùng RAM định địa chỉ bit 15

II.3.3 Các dãy thanh ghi 15

II.3.4 Các thanh ghi chức năng đặc biệt 15

II.3.4.1 Từ trạng thái chương trình PSW 15

Trang 4

II.3.4.2 Thanh ghi B 16

II.3.4.3 Con trá stack 16

II.3.4.4 Con trỏ dữ liệu 17

II.3.4.5 Các thanh ghi port 17

II.3.4.6 Các thanh ghi định thời TMOD và TCON 17

II.3.4.7 Thanh ghi của cổng nối tiếp 19

II.3.4.8 Các thanh ghi ngắt 20

II.3.4.9 Thanh ghi điều khiển nguồn 20

II.4 Bộ nhớ ngoài 21

II.4.1 Truy xuất bộ nhớ chương trình ngoài 21

II.4.2 Truy xuất bé nhớ dữ liệu ngoài 22

II.4.3 Hoạt động Reset 23

III TẬP LỆNH CỦA 8051 24

III.1 Các kiểu định địa chỉ 24

III.1.1 Định địa chỉ thanh ghi 24

III.1.2 Định địa chỉ trực tiếp 24

III.1.3 Định địa chỉ gián tiếp 25

III.1.4 Định địa chỉ tức thời 26

III.1.5 Định địa chỉ tương đối 26

III.1.6 Định địa chỉ tuyệt đối 26

III.1.7 Định địa chỉ dài 27

III.1.8 Định địa chỉ chỉ số 27

III.2 Các loại lệnh 27

III.2.1 Lệnh số học 27

III.2.2 Các lệnh Logic 28

Trang 5

III.2.3 Nhóm lệnh di chuyển dữ

liệu 30

III.2.4 Các lệnh xử lý bit 31

III.2.5 Các lệnh rẽ nhánh 31

III.2.6 Nhóm lệnh dịch, quay 33

III.2.7 Các lệnh làm việc với Stack 33

IV HOẠT ĐỘNG ĐỊNH THỜI 33

IV.1 Các bộ định thời của 8051 33

IV.2 Thanh ghi chế độ bộ định thời 34

IV.2.1 Các chế độ định thời và cờ tràn 34

IV.2.1.1 Chế độ định thời 13-bit 34

IV.2.1.2 Chế độ định thời 16-bit 34

IV.2.1.3 Chế độ tự nạp lại 8-bit 34

IV.2.1.4 Chế độ định thời chia xẻ 35

IV.3 Nguồn xung clock định thời 35

V HOẠT ĐỘNG NGẮT 35

V.1 Tổ chức ngắt của 8051 35

V.1.1 Cho phép và không cho phép ngắt

35

V.1.2 Ưu tiên ngắt 35

V.1.3 Chuỗi vòng 36

Trang 6

V.2 Xử lý ngắt 36

V.3 Các vector ngắt 36

V.4 Các ngắt do port nối tiếp 36

V.5 Các ngắt ngoài 37

VI LẬP TRÌNH HỢP NGỮ 37

VI.1 Trình dịch hợp ngữ 37

VI.2 Khuôn dạng của chương trình hợp ngữ 37

VI.3 Cấu trúc chương trình 38

VI.4 Tổ chức chương trình 38

CHƯƠNG II: CÁC THIẾT BỊ NGOẠI VI 39

I ĐỒNG HỒ THỜI GIAN THỰC DS12887 39

I.1 Hoạt động 40

I.2 Chức năng các chân 41

I.3 Bản đồ địa chỉ

43

I.4 Các thanh ghi điều khiển 46

I.5 Minh họa ghép nối giữa DS12887 với 8051 49

II THIẾT BỊ HIỂN THỊ LCD 49

II.1 LCD 49

II.2 Minh họa ghép nối giữa LCD với 8051 52

Trang 7

III ADC0809 52III.1 Sơ đồ các chân của

8051 56

V GIẢI MÃ ĐỊA CHỈ 74LS138 57

VI CHỐT ĐỊA CHỈ 74HC373 57V.1.Sơ đồ chân của

MỀM 62

I Chuơng trình quét bàn phím HEX 62

II Đọc thời gian từ đồng hồ thời gian thực RTC

DS12887 67

Trang 8

III ĐiÒu khiển ADC0809 để thực hiện chuyển

Trang 9

Để thực hiện việc điều khiển tự động có nhiều phương pháp, cách thức

nh bằng máy tính, vi xử lý hay hệ điều khiển chuyên dụng Tùy vào lĩnh vực mà lùa chọn hệ thống điều khiển thích hợp Với sinh viên học chuyên ngành điều khiển tự động phải nắm bắt được tất cả những kiến thức cơ sở, tổng quát nhất

để từ đó có thể giải quyết các bài toán điều khiển đặt ra trong công việc sau này Một trong những kiến thức cần phải có đó là việc nghiên cứu và thiết kế mạch ứng dụng sử dụng bộ vi điều khiển Do đó chúng em đã chọn đề tài : Thiết kế mạch thí nghiệm dùng Vi điều khiển 80C51 phối ghép với các thiết bị ngoại vi LCD, ADC0809, RTC DS12887 và HEX-keypad

Các công việc thực hiện:

• Tìm hiểu về Vi điều khiển 8051, và các thiết bị ngoại vi

• Thiết kế mạch nguyên lý

• Xây dựng các bài toán điều khiển

Phương pháp thực hiện

Trang 10

• Tìm hiểu các thiết bị

• Vẽ mạch nguyên lý bằng phần mềm Protel

• Viết phần mềm bằng hợp ngữ bằng KeilC

Phần I :tổng quan về Vi đIều khiển 8051 và các thiết bị ngoại vi

CHƯƠNG I: VI ĐIỀU KHIỂN 8051

I KHÁI NIỆM CHUNG VỀ VI ĐIỀU KHIỂN

I.1 Sù ra đời

Vào năm 1971 tập đoàn Intel đã giới thiệu 8080, bé vi xử lí thành công đầu tiên, tiếp đó không lâu Motorola, RCA, MOS Technology và Zilog còng đã giới thiệu các bộ vi xử lí tương tù : 6800, 1801, 6502 và Z80 Bản thân các vi mạch này tuy không có nhiều hiệu quả sử dụng nhưng khi là một phần của một

máy tinh đơn board (Single Board Computer), chóng trở thành thành phần trung

tâm trong các sản phẩm có Ých dùng để nghiên cứu và thiết kế

Năm 1976 Intel giới thiệu bộ vi điều khiển( Micro Controller) 8748, mét chip tương tù nh các bộ vi xử lí và là chip đầu tiên trong họ vi điều khiển MCS-

48 8748 là một vi mạch chứa trên 17000 transistor bao gồm một CPU, 1Kbyte EPROM, 64 byte RAM, 27 chân xuất nhập và một bộ định thời 8 bit Sù ra đời của IC này và các IC khác của họ MCS-48 đã nhanh chóng trở thành chuẩn

công nghiệp trong các ứng dụng hướng điều khiển (Control Oriented Application).

Độ phức tạp, kích thước và khả năng của bộ vi điều khiển được tăng thêm một bậc quan trọng vào năm 1980 khi Intel công bè chip 8051, bé vi điều khiển đầu tiên của họ vi điều khiển MCS-51 So với 8048, chip 8051 chứa trên

60000 transistor bao gồm 4Kbyte ROM, 128 byte RAM, 32 đường xuất nhập, 1 port nối tiếp và 2 bộ định thời 16 bit Vi điều khiển 8051 còng nh họ vi điều khiển MCS-51 là một trong những bộ vi điều khiển 8-bit mạnh và linh hoạt nhất, đã trở thành bộ vi điều khiển hàng đầu trong những năm gần đây

I.2 ĐiÓm khác biệt giữa vi điÒu khiển và vi xử lý dùng chung

Trang 11

Những bé vi xử lý dùng chung thường gặp nh họ Intel x86 (8086, 80286,

80386, 80486, Pentium ) hoặc họ 680x0 của Motorola (6800, 68010, 68020,

68030, 68040…) Những bộ vi xử lý này không có RAM, ROM và không có các port I/O trên chip, do đã khi sử dụng thiết kế hệ thống phải bổ sung thêm

RAM, ROM, I/O và các bộ định thời (Timer/Counter) ngoài để cho chúng hoạt

động được Tuy việc này làm cho hệ thống cồng kềnh, phức tạp và giá thành cao hơn nhưng chúng lại có ưu điÓm là linh hoạt hơn so với vi điều khiển

Trong khi đó với vi điều khiển nó có sẵn : 1 CPU( bé vi xử lý) cùng 1

lượng cố định RAM, ROM, các cổng I/O và Timer/Counter được tích hợp tất cả

trên cùng 1 chip

I.3 Tiêu chuẩn lùa chọn 1 bé vi điều khiển

Hiện nay có nhiều loại vi điều khiển, với loại vi điều khiển 8bit có 4 loại chính sau: 6811 (Motorola), 8051 (Intel), Z8 (Zilog) và PIC16x (Micro Technology) Mỗi loại trên đều có 1 tập lệnh và thanh ghi riêng nên chúng đều không tương thích lẫn nhau Ngoài ra còn có những bộ vi điều khiển 16bit và 32bit, vì thế để lùa chọn bé vi điÒu khiển trong thiết kế cần phải dùa trên những tiêu chuẩn sau:

1 Đáp ứng nhu cầu tính toán của bài toán 1 cách hiệu quả về giá thành và đầy đủ chức năng có thể nhìn thấy được:

a Tốc độ: tốc độ lớn nhất mà bộ vi điều khiển hỗ trợ là bao nhiêu?

b Kiểu đóng vỏ: kiểu DIP (Dual In-line Package) hay QFP (Quadrangle Flat Package) Đây là điÒu quan

trọng đối với yêu cầu về không gian, kiểu lắp ráp và tạo mẫu cho sản phẩm

c Công suất tiêu thụ

d Dung lượng RAM, ROM trên chip.

e Số cổng vào/ra và Timer/Counter trên chip.

f Giá thành trên 1 đơn vị sản phẩm

2 Công cụ phát triển phần mềm

3 Nguồn cung cấp các bộ vi điều khiển: tức khả năng sẵn sàng đáp ứng về số lượng trong hiện tại và tương lai

II VI ĐIỀU KHIỂN 8051

Vi điều khiển 8051 là thành viên đầu tiên của họ MCS-51 của Intel, sau

đố các nhà sản xuất IC khác nh Siemens, Advanded Devices, Phillips …được cấp phép làm nhà cung cấp thứ 2 cho các chip của họ MCS-51

Trang 12

II.1 Sơ đồ khối của 8051

Chip 8051 có các đặc trưng cơ bản sau:

- 4 Kbyte ROM

- 128 Byte RAM

- 4 I/O port 8bit

- 1 bộ điÒu khiển ngắt ( Interrupt Control)

- 1 Mạch dao động nội (Oscillatior)

- 1 bộ điÒu khiển bus (Bus Control)

- 2 Timer 16bit

- Mạch giao tiếp nối tiếp

- Không gian nhớ chương trình (mã) ngoài 64Kbyte

- Không gian nhớ dữ liệu ngoài 64Kbyte

- Bộ xử lý bit

- 210 vị trí nhớ được định địa chỉ

- Nhân/chia trong 4µs

Hình 1: Sơ đồ khối của chip 8051

II.2 SƠ ĐỒ VÀ CHỨC NĂNG CÁC CHÂN CỦA 8051

II.2.1 Sơ đồ các chân : Hình 2: Sơ đồ các chân của 8051

II.2.2 Chức năng của các chân

Trang 13

a Port 0 : Port 0 (các chân từ 32 → 39) có 2 công dụng: có thể được sử dụng làm nhiệm vụ xuất/nhập hoặc trở thành bus địa chỉ và bus dữ liệu

đa hợp

b Port 1: Port 1 (các chân từ 1→ 8) chỉ có 1 công dụng là xuất/nhập

c Port 2: Port 2 (các chân từ 21→ 28) có 2 công dụng: hoặc làm nhiệm vụ

xuất/nhập hoặc là byte địa chỉ cao của bus địa chỉ 16-bit.

d Port 3: Port 3 (các chân 10→ 17) có 2 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

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.4 T0 B4H Ngõ vào của Timer/Counter 0

P3.5 T1 B5H Ngõ vào của Timer/Counter 0

P3.6 B6H ĐiÒu khiển ghi bé nhớ dữ liệu ngoàiP3.7 B7H ĐiÒu khiển đọc bộ nhớ dữ liệu ngoài

Trang 14

Hình 2: Sơ đồ các chân của 8051

e Chân (Program Store Enable) : (chân 29) đây là tín hiệu điÒu

khiển cho phép truy xuất bộ nhớ chương trình ngoài Chân này thường

được 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 ở mức logic 0 trong suốt thời gian tìm và nạp lệnh Khi thực thi chương trình ở ROM nội ,

được duy trì ở mức logic 1 (logic không tích cực)

f Chân ALE (chân 30): chân xuất tín hiệu cho phép chốt địa chỉ (Address

Latch Enable) để giải đa hợp (Demultiplexing) bus dữ liệu và bus địa chỉ

Tín hiệu ALE có tần số f=1/6 fosc (fosc: tần số của bộ dao động bên trong

8051) và có thể được dùng làm xung clock cho các phần còn lại của hệ

thống Chân ALE còn được dùng để nhận xung ngõ vào lập trình cho EPROM

g Chân truy xuất ngoài (chân 31) : ngõ vào này có thể được nối +5V

(mức logic 1) hoặc nối đất (mức logic 0) Nếu chân này có mức logic 1:

8051 thực thi chương trình trong ROM nội, còn khi ở mức logic 0 thì

8051 thực thi chương trình chứa ở bộ nhớ ngoài Các phiên bản EPROM

Trang 15

của 8051 còn sử dụng chân làm chân nhận điện áp cấp điện 21V cho việc lập trình EPROM nội.

h Chân RESET (chân 9): đây 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 là 2 chu kỳ máy, các thanh ghi bên trong 8051 được nạp các giá trị thích hợp cho việc khởi động lại hệ thống

i XTAL1 và XTAL2 ( chân 18 và 19): Mạch dao động bên trong chip

8051 được ghép với thạch anh bên ngoài ở hai chân XTAL1 và XTAL2 (chân 18 và 19) Tần số danh định của thạch anh là 12 MHz cho hầu hết các chip của họ MCS-51 XTAL1: Ngõ vào đến mạch khuếch đại đảo của mạch dao động XTAL2: Ngõ ra từ mạch khuếch đại đảo của mạch dao động

j Chân Vcc (chân 40) lấy nguồn nuôi +5V để cấp cho chip.

k Chân Vss ( chân 20) chân nối đất.

II.2.3 Cấu trúc của các cổng xuất/nhập.

Việc ghi đến một chân của port sẽ nạp dữ liệu bộ chốt điều khiển của

port, ngõ ra Q của bộ chốt điều khiển của mét transistor trường và transistor này nối với chân của port Khả năng fanout của port 1,2,3 là 4 tải vi mạch TTL

loại schottky công suất thấp còn của port 0 là 8 tải loại LS

Lưu ý: khi điện trở kéo lên sẽ không có ở port 0 (trừ khi port làm nhiệm

vô của bus địa chỉ/dữ liệu đa hợp) Do vậy một điện trở kéo lên bên ngoài phải được cần đến Giá trị của điện trở này phụ thuộc vào đặc tính ngõ vào của thành phần ghép nối với chân của port

Trang 16

II.3 Tổ chức bộ nhớ 8051

8051 có không gian bộ nhớ riêng cho chương trình và dữ liệu: cả 2 bộ nhớ chương trình và dữ liệu đều đặt bên trong chip, tuy nhiên vẫn có thể mở rộng bộ nhớ chương trình và bộ nhớ dữ liệu bằng cách sử dông chip nhí bên ngoài với dung lượng tối đa 64Kbyte cho bộ nhớ chương trình và bộ nhớ dữ liệu

Bộ nhớ nội trong chip bao gồm cả RAM và ROM RAM trên chip bao gồm vùng RAM đa chức năng, vùng RAM với từng bit được định địa chỉ, dãy thanh

ghi (bank register) và các thanh ghi chức năng đặc biệt SFR (special function register) Hai đặc tính đáng lưu ý là :

a các thanh ghi và các port xuất/nhập được định địa chỉ theo kiểu

ánh xạ bộ nhí (memory mapped) và được truy xuất nh mét vị trí

nhớ trong bộ nhớ

b vùng stack thường trú trong RAM trên chip (RAM nội) thay vì

ở trong RAM ngoài nh các bộ vi xử lý

Trang 17

II.3.1 Vùng RAM đa mục đích

Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dưới vùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể được sử dụng tương

tự 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

II.3.2 Vùng RAM định địa chỉ bit

8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong các

byte ở địa chỉ từ 20H đến 2FH (16 byte x 8 bit = 128 bit) và phần còn lại chứa trong các thanh ghi đặc biệt Ngoài ra 8051 còn có các port xuất/nhập có thể

định địa chỉ từng bit, điều này làm đơn giản việc giao tiếp bằng phần mềm với các thiết bị xuất/nhập đơn bit

II.3.3 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 đến 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 đến 07H

Lệnh sử dụng các thanh ghi từ R0 đến 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ị

dữ liệu thường được sử dụng nên chứa trong các thanh ghi này Dãy thanh ghi đang được sử dụng gọi là dãy thanh ghi tích cực

II.3.4 Các thanh ghi chức năng đặc biệt (SFR)

Cũng như các thanh ghi từ R0 đến 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 đến FFH Ta cần lưu ý

là không phải tất cả 128 địa chỉ từ 80H đến FFH đều được định nghĩa mà chỉ có

21 địa chỉ được định nghĩa

II.3.4.1 Từ trạng thái chương trình PSW ( Program Status Word)

Địa chỉ byte: D0H

PSW.7 CY D7H Cờ nhí (carry flag) Cờ này được set nếu có bit

nhí từ bit 7 trong phép cộng hoặc được set nếu có bit mượn cho bit 7 trong phép trừ

PSW.6 AC D6H Cờ nhí phụ Cờ này được set trong phép cộng

nếu có bit nhí từ bit 3 sang bit 4 hoặc nếu kết quả trong 4 bit thấp nằm trong khoảng từ 0AH →

0FH

Trang 18

PSW.5 F0 D5H Cờ O, cờ này dành cho người sử dụng

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 = bank 0 : địa chỉ từ 00H → 07H

01 = bank 1 : địa chỉ từ 08H → 0FH

10 = bank 2 : địa chỉ từ 10H → 17H

11 = bank3 : địa chỉ từ 18H → 1FHPSW.2 OV D2H Cờ tràn (Overflow flag), cờ này được set sau khi

cộng hoặc trừ nếu có 1 số tràn số học (nghĩa là tràn trên các phép toán số có dấu: kết quả của phép toán lớn hơn +127 hoặc nhỏ hơn -128)

PSW.0 P D0H Cờ kiểm tra chẵn/lẻ Cờ này được set hoặc clear

bởi phần cứng sau mỗi 1 chu kỳ lệnh, để chỉ ra

rằng có 1 số chẵn hoặc số lẻ bit 1 trong thanh

chứa

II.3.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, chia Lệnh MUL AB nhân 2 sè 8 bit không dấu chứa trong A

và B và chứa kết quả 16 bit vào cặp thanh ghi B, A (thanh chứa A cất byte thấp

và thanh ghi B cất byte cao)

Lệnh chia DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cất trong thanh ghi B Thanh ghi B còn được xử lý nh mét thanh ghi nháp Các bit được định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H

II.3.4.3 Con trá stack (Stack pointer)

Con trá stack SP (stack pointer) là 1 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 và lệnh lấy dữ liệu ra khái stack Việc cất vào stack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra khái stack sẽ giảm

SP Vùng stack của 8051 được giữ trong RAM nội và được giới hạn đến các địa chỉ truy xuất được bởi kiểu định địa chỉ gián tiếp 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).

Trang 19

II.3.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à một thanh ghi 16 bit có địa chỉ là 82H (DPL, byte thấp) và 83H (DPH, byte cao)

II 3.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ỉ B0H 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

II.3.4.6 Các thanh ghi định thời TMOD (Timer Mode Register) và TCON

(Timer/Counter Control Register)

8051 có 2 bộ đếm/định thời (counter/timer) 16 bit để định các khoảng

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) Hoạt độ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ỉ 88H Chỉ có TCON được định địa chỉ

khiển mềm)

: bit chọn chức năng đếm (counter) hay định thời (timer) Khi

= 0 bé Timer/Counter hoạt động định thời (dùng xung clock nội của hệ thống)

Khi = 1, Timer/Counter hoạt động đếm (dùng xung clock nhận từ ngõ vào

Tx)

M1, M0 : Bit chọn chế độ

Trang 20

M1 M0 Chế độ

0 0 0 Bộ định thời 13 bit

0 1 1 Bộ định thời/đếm 16 bit

1 0 2 Bộ định thời/đếm 8 bit tù động nạp lại

1 1 3 Bộ định thời 0: TL0 là bộ định thời/đếm 8 bit được

điều khiển bởi các bit điều khiển bộ định thời 0 TH0 là

bộ định thời 8 bit được điều khiển bởi các bit điều

khiển bộ định thời 1

Bộ định thời/đếm 1 ngưng hoạt động

• TCON : có chức năng điều khiển bộ định thời/đếm Địa chỉ byte là 88H, có định địa chỉ bit

7

8FH Cờ tràn bộ định thời 1 : được set bởi phần cứng

khi bộ định thời/đếm bị tràn, xóa bằng phần mềm hoặc bởi phần cứng khi trình phục vụ ngắt được trỏ đến

8BH Cờ ngắt ngoài 1, tác động cạnh Được set bởi

phần cứng khi phát hiện có ngắt ngoài tác động cạnh, được xóa bởi phần cóng khi ngắt đã được

xử lý

2

8AH Bit điều khiển chọn loại ngắt, được set/xóa để xác

định ngắt ngoài thuộc loại tác động cạnh âm (xuống) hay tác động mức thấp

Trang 21

II.3.4.7 Thanh ghi của cổng nối tiếp (Serial Port)

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 modem, hoặc để giao tiếp với các IC khác có mạch giao tiếp nối tiếp (như các thanh ghi dịch chẳng hạn) Chế độ hoạt động của cổng nối tiếp được thiết lập bằng cách ghi từ điều khiển lên thanh ghi chọn

chế độ SCON( Serial Port Control Register) SCON có địa chỉ byte là 98H, định địa chỉ bit.

SM0 SCON.7 9FH Bit chọn chế độ

SM1 SCON.6 9EH Bit chọn chế độ

SM2 SCON.5 9DH Bit này cho phép truyền thông đa xử lý ở các

chế độ 2 & 3 Trong chế độ 2 hoặc 3 nếu SM2 = 1, RT sẽ không được tích cực nếu bit nhận được thứ 9 (RB8) bằng = 0 Trong chế

độ 1, nếu SM2 = 1, RI sẽ không được tích

cực nếu ta không nhân được bit stop hợp lệ.

REN SCON.4 9CH Cho phép thu Việc set hoặc xóa bit này bởi

phần mềm sẽ cho phép hoặc không cho phép hoạt động thu

TB8 SCON.3 9BH Bit phát 8, bit thứ 9 được phát ở các chế độ 2

& 3 Bit này được set hoặc xóa bằng phần

mềm

RB8 SCON.2 9AH Bit thu 8 Trong các chế độ 2 & 3, RB8 là bit

dữ liệu thứ 9 thu được Trong chế độ 1, nếu

SM2 = 0, RB8 là bit stop thu được Trong

chế độ 0, RB8 không được sử dụng

TI SCON.1 99H Cờ ngắt phát, cờ này được set bởi phần cứng

ở cuối thời gian phát bit thứ trong chế độ 0

hoặc ở giữa thời gian của bit stop trong các

chế độ khác Cờ TI phải được xóa bằng phần mềm

Trang 22

RI SCON.0 98H Cờ ngắt thu, cờ này được set bởi phần cứng ở

cuối thời gian thu bit thứ 8 trong chế độ 0

hoặc ở giữa thời gian của bit stop trong các

chế độ khác Cê RI phải được xóa bởi phần mềm

1 0 2 9-bit UART fosc÷ 64 hoặc fosc ÷ 32

II.3.4.8 Các thanh ghi ngắt

8051 có cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt (5 source, 2 priority level interrupt structure) Các ngắt bị vô hiệu hóa sau khi reset hệ thống và sau đó được cho phép 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ả

2 thanh ghi này đều được định địa chỉ từng bit

II.3.4.9 Thanh ghi điều khiển nguồn

Thanh ghi điều khiển nguồn PCON (Power Control Register) có địa chỉ

87H chứa các bit điều khiển được tóm tắt trong bảng sau đây

7 SMOD Tăng gấp đôi tốc độ baud Nếu bộ định thời 1 được dùng

để tạo ra tốc độ baud và SMOD = 1, tốc độ baud được

tăng gấp đôi khi Port nối tiếp được sử dụng ở các chế độ 1,

1 PD Bit chế độ nguồn giảm Việc set bit này bằng 1 tác động

đến thao tác nguồn giảm trong các phiên bản CMOS của 8051

0 IDL Bit chế độ nghỉ Việc set bit này bằng 1 tác động đến chế

độ nghỉ trong các phiên bản CMOS của 8051

Trang 23

Chế độ nguồn giảm

Lệnh thiết lập bit PD bằng 1 sẽ là lệnh sau cùng được thực thi trước khi

đi vào chế độ nguồn giảm Ở chế độ nguồn giảm :

(1) mạch dao động trên chip ngõng hoạt động

(2) mọi chức năng ngừng hoạt động

(3) nội dung của RAM trên chip được duy trì

(4) các chân port duy trì mức logic của chúng

(5) ALE và PSEN được giữ ở mức thấp Chỉ ra khỏi chế độ này bằng

cách reset hệ thống.

Trong suốt thời gian ở chế độ nguồm giảm, Vcc có điện áp là 2V Cần phải giữ cho Vcc không thấp hơn sau khi đạt được chế độ nguồn giảm và cần phục hồi Vcc = 5V tối thiểu 10 chu kỳ dao động trước khi chân RST đạt mức thấp lần nữa

Chế độ nghỉ

Lệnh thiết lập bit IDL bằng 1 sẽ là lệnh sau cùng được thực thi trước khi

đi vào chế độ nghỉ ở chế độ nghỉ, tín hiệu clock nội được khóa không cho đến

CPU nhưng không khóa đối với các chức năng ngắt, định thời và port nối tiếp Trạng thái của CPU được duy trì và nội dung của tất cả các thanh ghi cũng được giữ không đổi Các chân port còng được duy trì các mức logic của chúng ALE và PSEN được giữ ở mức cao Chế độ nghỉ kết thúc bằng cách cho phép

ngắt hoặc bằng cách reset hệ thống Cả hai cách vừa nêu đều xóa bit IDL.

II.4 Bộ nhớ ngoài

Các bé vi điều khiển cần có khả năng mở rộng các tài nguyên trên chip, cấu trúc của MCS-51 cho ta khả năng mở rộng không gian bộ nhớ chương trình đến 64K và không gian bộ nhớ dữ liệu đến 64K ROM và RAM ngoài được thêm vào khi cần Các IC giao tiếp ngoại vi cũng có thể được thêm vào để mở rộng khả năng xuất / nhập Chúng trở thành một phần của không gian bộ nhớ dữ liệu ngoài bằng cách sử dụng cách định địa chỉ kiểu I/O ánh xạ bộ nhớ Khi bộ nhớ ngoài được sử dông, port 0 không làm nhiệm vụ của port xuất /nhập, port này trở thành bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) đa hợp Ngõ ra ALE chốt byte thấp của địa chỉ ở thời điểm bắt đầu mỗi một chu kỳ bộ nhớ ngoài Port 2 thường làm byte cao của bus địa chỉ

II.4.1 Truy xuất bộ nhớ chương trình ngoài

Trang 24

Bộ nhớ chương trình ngoài là bộ nhớ chỉ đọc được cho phép bởi tín hiệu

Khi có 1 EROM ngoài được sử dông thì port 0 và port 2 đều không còn

là các port xuất/ nhập.

Mét chu kỳ máy của 8051 có 12 chu kỳ dao động Nếu một dao động trên chip

có tần số 12 MHz, mét chu kỳ dài 1µs trong mét chu kỳ máy điển hình, ALE

có hai xung và 2 byte của lệnh được đọc từ bộ nhớ chương trình

II.4.2 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

và ở 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 hoặc con trỏ dữ liệu 16 bit DPTR hoặc R0, R1 làm

thanh ghi chứa địa chỉ

RAM có thể giao tiếp với 8051 theo cùng cách nh EPROM nhưng khác là đường nối với đường cho phép xuất của RAM và nối với đường

Trang 25

ghi của RAM Các kết nối với bus dữ liệu và bus địa chỉ giống EPROM, và

dung lượng RAM ngoài lên đến 64K được kết nối với 8051

Nếu có nhiều EPROM hoặc nhiều RAM hoặc cả 2 giao tiếp với 8051 ta cần phải có thêm bộ giải mã địa chỉ Một IC giải mã điển hình là 74HC138

được dùng với các ngõ ra được nối với các ngõ chọn chip của các IC nhí

II.4.3 Hoạt động Reset

8501 đượ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ể tác động bằng tay hoặc được tác động khi cần nguồn bằng cách dùng một mạch RC Quan trọng nhất trong các thanh ghi này có lẽ là thanh ghi PC được nạp 0000H Khi RST trở lại mức thấp, việc thực hiện chương trình luôn luôn bắt đầu ở vị trí đầu tiên trong bộ nhớ chương trình: địa chỉ 0000H Nội dung của RAM trên chip không bị ảnh hưởng bởi hoạt động của Reset

Hai mạch dùng reset hệ thống :

a)Reset bằng tay b) Reset khi cấp nguồn

Trang 26

III TẬP LỆNH CỦA 8051

Tập lệnh của MCS-51 được tối ưu hóa cho các ứng dụng điều khiển 8 bit

Nhiều kiểu định địa chỉ cô đọng và nhanh chóng để truy xuất RAM nội được dùng đến nhằm tạo thuận lợi cho các thao tác trên các cấu trúc dữ liệu nhỏ Tập lệnh cũng hỗ trợ các biến 1 bit cho phép quản lý bit trực tiếp trong các hệ logic

và điều khiển có yêu cầu xử lý 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

III.1 CÁC KIỂU ĐỊNH ĐỊA CHỈ

Vi điều khiển 8051 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è (Indexed)

III.1.1 Định địa chỉ thanh ghi (Register Addressing)

Trang 27

8051 cho phép truy xuất 8 thanh ghi “làm việc”, được đánh số từ R0 → R7 Các lệnh sử dụng kiểu định địa chỉ thanh ghi được mã hóa bằng các dùng 3

bit thấp nhất của opcode( của lệnh) để chỉ ra 1 thanh ghi bên trong không gian

địa chỉ logic này Vậy : 1 mã chức năng + địa chỉ toán hạng → 1 lệnh ngắn 1 byte

III.1.2 Định địa chỉ trực tiếp (Direct addressing)

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 Mét byte thêm vào tiếp theo opcode dùng để xác định

địa chỉ Trong 8051 có 128 byte bộ nhớ RAM Bộ nhớ RAM được gán địa chỉ

từ 00H đến FFH và được phân chia nh sau:

- Các ngăn nhớ từ 00H đến 1FH được gán cho các dãy thanh ghi và ngăn xếp

- Các ngăn nhớ từ 20H đến 2FH được dành cho không gian định địa chỉ bit để lưu dữ liệu theo từng bit

- Các ngăn nhớ từ 30H đến 7FH là không gian để lưu dữ liệu có kích thước 1 byte

Chế độ định địa chỉ trực tiếp có thể truy cập toàn bộ không gian của bộ nhớ RAM Tuy nhiên, chế độ này thường được dùng để truy cập các ngăn nhớ RAM từ 30H đến 7FH, vì thực tế đối với không gian nhớ dành cho dãy thanh ghi thì đã được truy cập bằng tên thanh ghi nh R0- R7 Ở chế độ định địa chỉ trực tiếp , địa chỉ ngăn nhớ RAM chứa dữ liệu là toán hạng của lệnh

Ví dô :

MOV R0, 40 ; sao nội dung ngăn nhớ 40H của RAM vào R0

MOV R4, 7FH ; chuyển nội dung ngăn nhớ 7FH vào R4

Một ứng dụng quan trọng của chế độ định địa chỉ trực tiếp là ngăn xếp Trong

họ 8051, chỉ có chế độ định địa chỉ trực tiếp là được phép cất và lấy dữ liệu từ ngăn xếp

III.1.3 Định địa chỉ gián tiếp (Indirect addressing)

Ở chế độ này, thanh ghi được dùng để trỏ đến dữ liệu có trong bộ nhớ Nếu

dữ liệu có trên chip CPU thì chỉ các thanh ghi R0 và R1 mới được sử dụng, và

Trang 28

như vậy cũng có nghĩa là không thể dùng các thanh ghi R2-R7 để trỏ đến địa chỉ của toán hạng ở chế độ định địa chỉ này Nếu R0 và R1 được dùng làm con trỏ, nghĩa là chúng lưu địa chỉ của ngăn nhớ RAM thì trước các thanh ghi cần đặt dấu "@" như các ví dụ sau:

MOV A, @R0 ; chuyển ngăn nhớ RAM có địa chỉ ở R0 vào A MOV @R1, B ; chuyển B vào ngăn nhớ RAM có địa chỉ ở R1Chó ý: ở đây R0 còng nh R1 đều có dấu "@" đứng trước Nếu không có dấu

"@" đứng trước thì đó là lệnh chuyển nội dung thanh ghi R0 và R1 chứ không phải dữ liệu ngăn nhớ có địa chỉ trong R0 và R1 Mét trong những ưu điểm của chế độ định địa chỉ gián tiếp là cho phép truy cập dữ liệu linh hoạt hơn so với chế độ định địa chỉ trực tiếp Tuy nhiên R0 và R1 là các thanh ghi 8 bit, nên chúng chỉ được phép truy cập đến các ngăn nhớ RAM trong, từ địa chỉ 30H đến 7FH và các thanh ghi SFR Trong thực tế, có nhiều trường hợp cần truy cập dữ liệu được cất ở RAM ngoài hoặc không gian ROM trên chip Trong những trường hợp đó chúng ta cần sử dụng thanh ghi 16 bit DPTR

III.1.4 Định địa chỉ tức thời (Immediate addressing)

Khi toán hạng 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.

Trong hợp ngữ, 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ố, các ký hiệu và các toán tử Trình dịch hợp ngữ tính giá trị và thay thế dữ liệu tức thời vào trong lệnh

Ví dụ lệnh : MOV A, #12 ; ;Nạp giá trị 12(OCH) vào thanh chứa A

Tất cả các lệnh sử dụng kiểu định địa chỉ tức thời đều sử dụng hằng dữ liệu 8

bit làm dữ liệu tức thời Có một ngoại lệ khi ta khởi động con trỏ dữ liệu 16-bit

DPTR, hằng địa chỉ 16 bit được cần đến

III.1.5 Định địa chỉ tương đối (Relative addressing)

Trang 29

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 là một giá trị 8 bit có dấu Giá trị này được cộng với một bộ đếm

chương trình để tạo ra địa chỉ của lệnh tiếp theo cần thực thi Định địa chỉ tương đối có điểm lợi là cung cấp cho 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

III.1.6 Định địa chỉ tuyệt đối (Absolute addressing)

Kiểu định địa chỉ này đượ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 bằng cách cung cấp 11 bit thấp của địa chỉ đích Trong đó

có 3 bit cao (A8-A10) và 8 bit thấp (A0-A7) thành lập byte thứ 2 của lệnh

III.1.7 Định địa chỉ dài (Long addressing)

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 kiểu định địa chỉ 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 và phụ thuộc vào vị trí

III.1.8 Định địa chỉ chỉ sè (Indexed addressing)

Chế độ định địa chỉ chỉ số được sử dụng rộng rãi khi truy cập các phần tử

dữ liệu của bảng trong không gian ROM chương trình của 8051 Lệnh được dùng cho mục đích này là "MOVC A, @A+DPTR" Thanh ghi 16 bit DPTR và thanh ghi A được dùng để tạo ra địa chỉ của phần tử dữ liệu được lưu trong ROM trên chip Ở lệnh này, nội dung của A được cộng với nội dung thanh ghi

16- bit DPTR để tạo ra địa chỉ 16 bit.

Trang 30

III.2 CÁC LOẠI LỆNH

III.2.1 Lệnh số học

ADD A, source Cộng toán hạng A với nguồn

A, Rn (A)← (A) + (Rn)

A, Direct (A)← (A) + (Direct)

A, @Ri (A)← (A) + ((Ri))

A, #data (A)← (A) + #data

ADDC A, source Cộng có cờ nhí (add with carry)

A, Rn (A)← (A) + (C)+ (Rn)

A, Direct (A)← (A) + (C)+ (Direct)

A, @Ri (A)← (A) + (C)+ ((Ri))

A, #data (A)← (A) + (C)+ #data

SUBB A, source Trừ số có mượn

A, Rn (A)← (A) - (C) - (Rn)

A, Direct (A)← (A) - (C) - (Direct)

A, @Ri (A)← (A) - (C) - ((Ri))

A, #data (A)← (A) - (C) - #data

A (A) ← (A) + 1

Rn (Rn) ← (Rn) + 1Direct (Direct) ← (Direct) + 1

@Ri ((Ri)) ← ((Ri)) + 1

A (A) ← (A) - 1

Rn (Rn) ← (Rn) - 1Direct (Direct) ← (Direct) - 1

@Ri ((Ri)) ← ((Ri)) – 1

(B) ← High byte of (A) x (B) : byte cao của kết

Trang 31

quả phép nhân được chứa trong thanh ghi B(A) ← Low byte of (A) x (B) : byte thấp của kết quả nhân được chứa trong thanh ghi A.

C, /bit (C) ← (C) AND NOT(bit)

Trang 32

A, RnDirect , A (Direct) ← (Direct) XOR (A)Direct, #data (Direct) ← (Direct) XOR #data

SWAP A (A3 - A0) ←→ (A7 - A4)

III.2.3 Nhóm lệnh di chuyển dữ liệu

MOV

MOV A, #data (A) ← #data

A, Direct (A) ← (Direct)

A, @Ri (A) ← ((Ri))

MOV Rn, #data (Rn) ← #data

Rn, Direct (Rn) ← (Direct)

Rn, A (Rn) ← (Rn)MOV Direct, #data (Direct) ← #data

Direct, Direct (Direct) ← (Direct)Direct, @Ri (Direct) ← ((Ri))Direct, Rn (Direct) ← (Rn)MOV @Ri, A ((Ri)) ← (A)

@Ri, Direct ((Ri)) ← (Direct)

@Ri, #data ((Ri)) ← #data

Bit, C (bit) ← (C)MOV DPTR, #data16 (DPTR) ← #data 16

Trang 33

A, Direct (A) ←→ (Direct)

A, @Ri (A) ←→ ((Ri))XCHD A, @Ri (A3 - A0) ←→ (R3 - R0)

JC Label Nhảy nếu cờ nhớ được set bằng 1

JNC Label Nhảy nếu cờ nhớ không được set bằng 1

JB Bit, label Nhảy nếu bit được set bằng 1

Trang 34

JBC Bit, label Nhảy nếu bit được set bằng 1 và xóa bit

JNB Bit, label Nhảy nếu bit không được set bằng 1

JMP @A + DPTR Nhảy gián tiếp

(PC) ← (PC) + (A) + (DPTR)

JNZ Label Nhảy nếu nội dung thanh chứa khác 0

(PC) ← (PC) + 2

IF (A) < > 0 THEN (PC) ← (PC) +byte_2

JZ Label Nhảy nếu nội dung thanh chứa bằng 0

(PC) ← (PC) + 2

IF (A) = 0 THEN (PC) ← (PC) +byte_2

SJMP Label Nhảy ngắn (short jump)

(PC) ← (PC) +2(PC) ← (PC) + byte_2

LJMP Addr16 Nhảy dài (Long jump - 16 bits (64K))

(PC) ← addr15 ÷ addr0

So sánh và nhảy ( Compare and Jump)

CJNE A, Direct, label

A, #data, label Compare 1 st op to 2 st and jump to label if

not equal

Trang 35

Rn, #data, label

@Ri, #data, label So sánh giá trị của 2 toán hạng và rẽ

nhánh nếu các giá trị của 2 toán hạng không bằng nhau

Giảm và nhảy (Decrement and Jump)

DJNZ Direct, label Giảm và nhảy nếu khác 0

(PC) ← (PC) +2

Rn, label (Rn) ← (Rn) -1

(Direct) ← (Direct) -1

Jump if not zero

• Lệnh điều khiển chương trình con

ACALL Addr11 Gọi đến địa chỉ tuyệt đối (absolute call -

11bit).

LCALL Addr16 Gọi chương trình con (Long call - 16bits)

RET Trở về từ chương trình con (Return from

III.2.7 Các lệnh làm việc với Stack.

PUSH Direct Cất dữ liệu vào stack

(SP) ← (SP) -1

Trang 36

((SP)) ← (Direct)

POP Direct Lấy dữ liệu ra từ stack.

(Direct) ← ((SP)) (SP) ← (SP) -1

IV.HOẠT ĐỘNG ĐỊNH THỜI

8051 cú hai bộ định thời/đếm Chỳng cú thể được dựng làm bộ định thời

để tạo trễ thời gian hoặc làm cỏc bộ đếm để đếm cỏc sự kiện xảy ra bờn ngoài

bộ vi điều khiển

IV.1 Cỏc bộ định thời của 8051

8051 cú hai bộ định thời là 8051 có hai bộ định thời là Timer 0 và Timer

1 Cả hai bộ định thời Timer0 và Timer1 đều cú độ dài 16 bit Do 8051 cú cấu trỳc 8 bit, nờn mỗi bộ định thời được truy cập dưới dạng hai thanh ghi độc lập là byte thấp và byte cao

Thanh ghi của bộ Timer 0: Thanh ghi 16 bit của bộ Timer 0 được truy

cập theo hai byte là byte cao và byte thấp Thanh ghi byte thấp được gọi

là TL0 và thanh ghi byte cao là TH0 Cỏc thanh ghi này cú thể được truy cập nh là mọi thanh ghi khỏc Vớ dụ, lệnh "MOV TL0, #4FH" là chuyển giỏ trị 4FH vào TL0 - byte thấp của bộ định thời 0

Thanh ghi của bộ Timer 1: Bộ định thời Timer 1 cũng dài 16 bit và

thanh ghi 16 bit cũng được chia ra thành hai byte là TL1 và TH1 Cỏc thanh ghi này được truy cập và được đọc giống nh cỏc thanh ghi của bộ

Timer 0 ở trờn.

IV.2 Thanh ghi chế độ bộ định thời TMOD

Cả hai bộ định thời Timer 0 và Timer 1 đều dựng chung 1 thanh ghi được

gọi là TMOD để thiết lập cỏc chế độ làm việc khỏc nhau của bộ định thời Thanh ghi TMOD là thanh ghi 8 bit gồm cú 4 bit thấp dành cho bộ Timer 0 và

4 bit cao dành cho bộ Timer 1 Trong đú 2 bit thấp của chỳng dựng để thiết lập chế độ của bộ định thời, cũn 2 bit cao dựng để xỏc định phộp toỏn

Trang 37

IV.2.1 Cỏc chế độ định thời và cờ tràn

Do ta cú hai bộ định thời trờn chip 8051, ta dựng ký hiệu “x” để chỉ bộ định thời 0 hoặc bộ định thời 1 Vớ dụ : THx cú nghĩa là TH0 hoặc TH1 tuỳ theo bộ định thời 0 hay 1

IV.2.1.1 Chế độ định thời 13-bit (chế độ 0)

Chế độ 0 là chế độ định thời 13- Chế độ 0 là chế độ định thời 13-bit cung cấp khả năng tương thớch với bộ vi điều khiển tiền nhiệm 8048 Byte cao

của bộ định thời THx được ghộp cascade với 5-bit thấp của byte thấp của bộ

định thời TLx để tạo thành một bộ định thời 13-bit Ba bit cao của TLx khụng

sử dụng

IV.2.1.2.Chế độ định thời 16-bit (chế độ 1)

Chế độ 1 là chế độ định thời 16- Chế độ 1 là chế độ định thời 16-bit

và cú cấu hỡnh giống chế độ định thời 13-bit Xung clock đặt vào cỏc thanh ghi định thời cao và thấp kết hợp (TLx/THx) Khi cú xung clock đến, bộ định thời

đếm lờn: 0000H, 0001H một tràn sẽ xuất hiện khi cú sự chuyển số đếm từ

FFFFH xuống 0000H, sự kiện này sẽ set cờ tràn bằng 1 và bộ định thời tiếp tục

đếm

IV.2.1.3 Chế độ tự nạp lại 8-bit (chế độ 2)

Chế độ 2 là chế độ tự nạp lại 8-bit Byte thấp của bộ định thời (TLx) hoạt động định thời 8-bit trong khi byte cao của bộ định thời lưu giữ giỏ trị nạp lại Khi số đếm tràn từ FFH xuống 00H, khụng chỉ cờ tràn của bộ định thời được

set lờn 1 mà giỏ trị trong THx cũn được nạp vào TLx Việc đếm sẽ tiếp tục từ

giỏ trị này cho đến khi xảy ra một tràn (FFH xuống 00H)

IV.2.1.4 Chế độ định thời chia xẻ (chế độ 3)

Chế độ 3 là chế độ định thời chia xẻ và cú hoạt động khỏc nhau cho từng

bộ định thời Bộ định thời 0 ở chế độ 3 được chia thành 2 bộ định thời 8-bit

hoạt động riờng rẽ TL0 và TH0, mỗi bộ định thời sẽ set cỏc cờ tràn tương ứng

TF0 và TF1 khi xảy ra một tràn

IV.3 NGUỒN XUNG CLOCK ĐỊNH THỜI

Bộ định thời luụn cần cú xung đồng hồ để giữ nhịp Nếu C/T = 0 thỡ tần số thạch anh trờn chip 8051 được làm nguồn cho đồng hồ của bộ định thời Điều

đú cú nghĩa là giỏ trị của tần số thạch anh của 8051 quyết định tốc độ đồng hồ của cỏc bộ định thời 8051 Tần số của bộ định thời luụn bằng 1/12 tần số của thạch anh trờn chip 8051 Nếu C/T=1 bộ định thời bõy giờ đếm sự kiện, số cỏc

Trang 38

sự kiện được xác định trong phần mềm bằng cách đọc các thanh ghi định thời (TLx/THx), giá trị 16-bit trong các thanh ghi này tăng theo mỗi sự kiện Hai

chân của port 3 ( P3.4 và P3.5) bây giê trở thành ngõ vào xung clock cho các bộ định thời Chân P3.4 là ngõ vào xung clock cho bộ định thời, chân P3.5 là ngõ vào xung clock cho bộ định thời 1 Nếu C/T =0 bộ định thời dùng để định thời

một khoảng thời gian

V HOẠT ĐỘNG NGẮT

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

Có 5 nguyên nhân tạo ra ngắt đối với 8051: hai ngắt do bên ngoài, hai ngắt

do bộ định thời và một ngắt do port nối tiếp Khi ta thiết lập trạng thái ban đầu

cho hệ thống (gọi là reset hệ thống), tất cả các ngắt đều bị vô hiệu hoá và sau đó

chúng được cho phép riêng rẽ bằng phần mềm

V.1.1 Cho phép và không cho phép ngắt

Mỗi một nguyên nhân ngắt được cho phép hoặc không cho phép riêng rẽ thông qua thanh ghi chức năng đặc biệt định địa chỉ bit Thanh ghi cho phép ngắt IE có địa chỉ byte là 0A8H Mỗi mét bit của thanh ghi này cho phép hoặc không cho phép từng nguyên nhân ngắt riêng rẽ, thanh ghi IE đồng thời còn có mét bit toàn cục cho phép hoặc không cho phép ngắt

V.1.2 Ưu tiên ngắt

Mỗi một nguyên nhân ngắt được lập trình riêng rẽ để có một trong hai mức

ưu tiên thông qua thanh ghi chức năng đặc biệt được định địa chỉ bit, thanh ghi

ưu tiên ngắt IP, thanh ghi này có địa chỉ là 0B8H

Khi hệ thống được thiết lập lại trạng thái ban đầu, thanh ghi IP sẽ mặc định đặt tất cả các ngắt ở mức ưu tiên thấp ý tưởng “ các mức ưu tiên” cho phép một trình phục vụ ngắt được tạm dừng bởi một ngắt khác nếu ngắt mới này có mức ưu tiên cao hơn mức ưu tiên của ngắt hiện đang được phục vụ Nếu

có ngắt với mức ưu tiên cao xuất hiện, trình phục vụ ngắt cho ngắt có mức ưu tiên thấp phải tạm dừng Ta không thể tạm dừng một chương trình phục vụ ngắt

có mức ưu tiên cao

Trang 39

tiếp Ngắt do port nối tiếp là kết quả OR của cờ ngắt khi thu RI (cờ ngắt thu) với cờ ngắt khi phát (cờ ngắt phát)

V.2 Xử lý ngắt

Khi có một ngắt xuất hiện và được CPU chấp nhận, chương trình chính bị ngắt Các thao tác sau đây xảy ra:

- Hoàn tất việc thực thi lệnh hiện hành

- Bé đếm chương trình PC được cất vào stack.

- Trạng thái của ngắt hiện hành được lưu giữ

- Các ngắt được chặn lại ở mức ngắt

- Bé đếm chương trình PC được nạp địa chỉ vector của trình phục vụ ngắt

ISR (Interrupt Service Routine)

- ISR được thực thi

ISR được thực thi để đáp ứng công việc của ngắt Việc thực thi ISR kết thúc khi gặp lệnh RETI Lệnh này lấy giá trị cũ của bộ đếm chương trình PC từ

stack và phục hồi trạng thái của ngắt cũ Việc thực thi chương trình chính được

tiếp tục ở nơi bị tạm ngừng

V.3 Các vector ngắt

Khi một ngắt được chấp nhận, giá trị được nạp cho bộ đếm chương trình

PC được gọi là vector ngắt Vector ngắt là địa chỉ bắt đầu của trình phục vụ ngắt của nguyên nhân ngắt tương ứng Khi một trình phục vụ ngắt được trỏ tới,

cờ gây ra ngắt sẽ tự động được xoá về 0 bởi phần cứng Các ngoại lệ bao gồm các cờ RI và TI đối với các ngắt trong port nối tiếp

V.4 Các ngắt do port nối tiếp

Các ngắt do port nối tiếp xuất hiện khi cờ ngắt được phát TI hoặc cờ ngắt

được thu RI được set bằng 1 Một ngắt phát xuất hiện khi việc phát một ký tự

đã ghi vào SBUF hoàn tất Một ngắt thu xuất hiện nh mét ký tự được thu nhận đầy đủ và đang ở trong SBUF để chờ được đọc Nh vậy ngắt phát xảy ra khi bộ đệm phát SBUF rỗng, còn ngắt thu xảy ra khi bộ đệm thu SBUF đầy

V.5 Các ngắt ngoài

Ngắt ngoài xảy ra khi có mức thấp hoặc có cạnh âm trên chân INT0 hoặc INT1 của 8051 Thực tế các cờ tạo ra các ngắt này là các bit IE0 và IE1 của thanh ghi TCON Khi một ngắt ngoài được tạo ra, cờ tạo ra ngắt được xoá bởi phần cứng khi CPU trỏ đến trình phục vụ ngắt chỉ nếu ngắt thuộc loại tác động cạnh Nếu ngắt thuộc loại tác động mức, nguyên nhân ngắt ngoài sẽ điều khiển mức của thay vì là phần cứng trên chip

Trang 40

VI LẬP TRÌNH HỢP NGỮ (ASSEMBLY LANGUAGE PROGRAMMING)

CPU chỉ có thể tính toán trên các số nhị phân và với tốc độ rất cao Tuy nhiên đối với con người, nếu phải lập trình với các số nhị phân thì thật nhàm chán và chậm chạp Chương trình chỉ gồm các số 0 và 1 là trình ngôn ngữ máy 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 chúng ta dễ nhớ và dễ lập trình hơn

Một chương trình viết bằng hợp ngữ không thể được thực thi trực tiếp bởi máy tính Sau khi được viết xong, chương trình này phải được trải qua quá trình dịch thành ngôn ngữ máy Trình dịch hợp ngữ là chương trình dùng để dịch một chương trình hợp ngữ thành chương trình ngôn ngữ máy

VI.1 Trình dịch hợp ngữ

Có nhiều trình dịch hợp ngữ và nhiều chương trình hỗ trợ khác cho phép ta

dễ dàng phát triển các ứng dụng trên chip vi điều khiển 8051 ví dụ như ASM51 (của Intel) hay Keil C51…

Trình dịch hợp ngữ họ MCS-51 của Intel (ASM51) được dùng làm chuẩn

để so sánh với các trình dịch hợp ngữ khác ASM51 là trình dịch hợp ngữ mạnh, hoạt động tốt trên các hệ thống của Intel và trên các họ máy tính của IBM-PC

Keil C51 là một công cụ phát triển có nhiều ưu điểm cho việc xây dựng các phần mềm ứng dụng cho vi điều khiển Keil C51 cho phép viết chương trình bằng hợp ngữ hoặc ngôn ngữ C, nó có nhiều thư viện tài nguyên có sẵn giúp việc lập trình được đơn giản hơn

VI.2 Khuôn dạng của chương trình hợp ngữ

Các chương trình hợp ngữ bao gồm một chuỗi các dòng lệnh hợp ngữ

- Các lệnh (instruction) của bộ vi điều khiển, vi xử lý.

- Các chỉ dẫn (directive) của trình dịch hợp ngữ.

- Các điều khiển (control) của trình dịch hợp ngữ.

- Các chú thích (comment)

Khuôn dạng tổng quát của mỗi dòng lệnh nh sau:

[label:] mnemonic [operand][,operand][…][;comment]

Ngày đăng: 04/02/2015, 11:27

HÌNH ẢNH LIÊN QUAN

Hình 1: Sơ đồ khối của chip 8051 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 1 Sơ đồ khối của chip 8051 (Trang 12)
Hình 2: Sơ đồ các chân của 8051 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 2 Sơ đồ các chân của 8051 (Trang 14)
Hình 6 : Sơ đồ chân DS12887 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 6 Sơ đồ chân DS12887 (Trang 42)
Hình 7: Sơ đồ khối của DS12887 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 7 Sơ đồ khối của DS12887 (Trang 43)
Hình 8: Bản đồ địa chỉ của DS12887 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 8 Bản đồ địa chỉ của DS12887 (Trang 47)
Hình 9: Các chân của LCD - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 9 Các chân của LCD (Trang 53)
Bảng 4: Các mã lệnh LCD. - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Bảng 4 Các mã lệnh LCD (Trang 55)
Hình 10 : Sơ đồ chân của ADC0809 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 10 Sơ đồ chân của ADC0809 (Trang 56)
Bảng 5: Chọn kênh đầu vào - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Bảng 5 Chọn kênh đầu vào (Trang 57)
Hình 11: Bàn phím số Hex - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 11 Bàn phím số Hex (Trang 59)
Hình 12 : Sơ đồ chân 74LS373 - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Hình 12 Sơ đồ chân 74LS373 (Trang 61)
Sơ đồ mạch nguyên lý bao gồm: - thiết kế mạch thí nghiệm dùng vi điều khiển 80c51 phối ghép với các thiết bị ngoại vi - lcd, adc0809
Sơ đồ m ạch nguyên lý bao gồm: (Trang 62)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w