1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế và thi công mô hình Điều khiển pin mặt trời dùng vi Điều khiển at89c51

96 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
Tài liệu đã được kiểm tra trùng lặp

Đ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

Tiêu đề Thiết kế và thi công mô hình điều khiển pin mặt trời dùng vi điều khiển AT89C51
Tác giả Phạm Huy Thắng, Trần Văn Dư
Người hướng dẫn ThS. Nguyễn Thanh Hải
Trường học Trường Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh
Chuyên ngành Điện - Điện tử
Thể loại Luận văn tốt nghiệp
Năm xuất bản 2003
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 96
Dung lượng 9,81 MB

Nội dung

Các mã nhị phân của chương trình đọc từ EPROM qua bus địa chỉ và được chốt vào thanh ghi lệnh cla MCS51 để giải mã lệnh.. MCS51 dùng ALE một cách tương tự cho việc giải kênh các bus đị

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRUONG DAI HOC SU’ PHAM KY THUAT

THÀNH PHÓ HÒ CHÍ MINH

HGMUIIE

ĐỎ ÁN TÓT NGHIỆP NGÀNH LUẬN VĂN TÓT NGHIỆP

THIET KE VÀ THI CÔNG MÔ HÌNH ĐIÊU KHIÊN PIN MAT TRO! DUNG VI DIEU KHIEN AT89C51

GVHD: NGUYEN THANH HAI SVTH: PHAM HUY THANG

TRAN VAN DU’

<XL_OO1⁄4OO

TP Hồ Chí Minh, thang 03/2003

Trang 2

Tn-\%t+ EỘ ©IÁO DỤC VÀ ĐÀO TẠO

TPƯỜNG ĐẠI HỌC SƯ PHẠA4 KỸ THUẬT TP.HCM

KHOA ĐIỆN — ĐIỆN TỬ

LUAN VAN TOT NGHIEP

ĐỂ TÀI

THIẾT KẾ & THI CONG

MÔ HÌNH ĐIỀU KHIỂN PIN

GVHD : NGUYEN THANH HAI

TP.HO CHi MINH

Thang 03 năm 2003

4k1 00 #0

Trang 3

BỘ GIÁO DỤC VÀ ĐÀO TẠO CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIỆT NAM

THÀNH PHO HỒ CHÍ MINH BALM

KHOA ĐIỆN - ĐIỆN TỬ

NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP

Họ và tên: PHẠM HUY THẮNG MSSV : 98101254

TRAN VAN DU MSSV : 98101169

Ngành : ĐIỆN TỬ KHOÁ 98

L Đầu để luận vấn : THIẾT KẾ & THỊ CÔNG MÔ HÌNH ĐIỀU

KHIỂN PIN MẶT TRỜI DÙNG VĐK AT89C51

3 Cúc số liệu ban đầu :

4 Thuyết minh và bắn vẽ :

5 Cán bộ hướng dẫn : NGUYEN THANH HAI

6 Ngày giao nhiệm vụ :

.tháng năm 2003

ThS Nguyễn Thanh Hải Chủ nhiệm khoa

Trang 4

LỜI NÓI ĐẦU

Trong quá trình hiện nay máy tính điện tử đã góp phần không nhỏ đối với sự phát

triển xã hội Do yêu cầu của con người ngày càng cao, các thế hệ máy tính đã liên tục

phát triển không ngừng Ngay trong giai đoạn đầu các thế hệ vi xử lý 8 bit được dùng là Z80,8085, sau đó là các hệ vi xử lý 16 bit như 8086, 8088

Các hệ vi xử lý này đã góp phần quan trọng trong việc chương trình hóa các hoạt

động của máy móc trong công nghiệp nhờ vào các phần mềm ứng dụng Một khi trong công nghiệp đã ứng dụng nhiều vào vi xử lý thì các nhà chế tạo không bồ lỡ cơ hội và

đã cho ra đời các họ vị điều khiển ngày càng tiến bộ hơn

Vi điểu khiển được sử dụng nhiễu trong các thiết bị công nghiệp, trong máy giặt,

trong điều khiển đèn giao thông, trong các đô chơi giải trí

Hiện nay, Pin mật trời được sử dụng khá phổ biến vì nó là nguồn năng lượng sạch và

không bao mở cạn Hơn nữa, ở những vung sâu, vùng xa, vùng núi, nơi hải đảo, những

nói mà lưới điện không thể đến được thì Pin mắt trời là giải pháp khả thì nhất để cấp

điên liên tục Vấn dé dat ra 1a lam sao để thu được năng lượng bức xạ của mặt trời lớn nhất Để thực hiện việc này, ta có nhiều phương án khác nhau nhưng hiệu quả và kinh

tế nhất là điểu khiển những tấm Pin này xoay theo sự di chuyển của mặt trời

Để tìm hiểu về vi điều khiển và tìm hiểu một ứng dụng cụ thể của nó nhóm chúng

em xin thực hiện để tài gồm hai phần chính:

PHẦN 1: Khảo sát vi điều khiển AT 89C51, các ví mạch giao tiếp ngoại vi

PHẦN 2: Thiết kế và thi công mô hình điều khiển Pin mặt trời dùng vi điều khiển

AT 89C5I

Chương trình hệ thống và ứng dụng

Nhờ có sự giúp đỡ của quý thầy cô và bạn bè, nhóm chúng em đã cố gắng thực hiện

để tài được giao Nhưng do kiến thức và thời gian có hạn nên để tài không thể tránh

khỏi thiếu sót, rất mong sự đóng góp của quý thầy cô và bạn bè

Sinh viên thực hiện :

Phạm Huy Thắng

Trần Văn Dư

Trang 5

LỜI CẢM ©N

Trong thời gian thực hiện để tài, nhóm đã lĩnh hội được nhiễu kinh nghiệm và kiến thức bổ ích Việc thi công để tài giúp cho tác giả có điều kiện tiếp xúc với thực tiễn, bổ sung những kiến thức thực tế còn thiếu trong nhà trường, tạo nên sự tự tin khi hoà nhập

với xã hội

Để có được kết quả như trên, nhóm thực hiện để tài đã nhận được rất nhiều sự tận

tình hướng dẫn và chỉ bảo của các thÂy cô giáo trong trường nói chung và của khoa Điện - Điền Tử nói tiếng, cùng với sự động viền giúp đỡ của bạn bè, tác giả đã hoàn tất để tài

Nhóm thực biện để tài xin chán thánh cảm ơn Thây Nguyễn Thanh Hải, các Thầy

CO tong Khoa Điện - Điện Tử và bạn bẻ đã giúp đỡ và tạo điều kiện để hoàn thành tốt

đề tài tốt nghiệp nầy

Sinh viên thực hiện

PHẠM HUY THẮNG

‘TRAN VAN DU

Trang 6

NHAN XET CUA 6140 VIEN HUONG DAN

ĐHSPKT,Ngày tháng nam 2003

Giáo viên hướng dẫn

Trang 7

NHẬN XÉT CỦA GIÁO VIÊN PHÁN BIEN

Giáo viên phần biện

Trang 8

NHAN XET CUA HỘI ĐỒNG CHẤM LUẬN VĂN

Hội đồng chấm luận văn

Trang 9

MỤC LỤC

DHAN I: CƠ SỞ LÝ THUYẾT

CHƯƠNG I: GIỚI THIỆU

1.1 Mục Đích Để Tài

1.2 Giới Thiệu Hệ Thống Pin Mặt Trời

1.3 Phương Hướng Giải Quyết

CHƯƠNG II: HỌ VI ĐIỀU KHIỂN MCS51

ĐHẦN lE: TÍNH TOÁN THIẾT KẾ MÔ HÌ

4.1 Sơ Đồ Khối Của Mạch Điều Khiển

4.2 Tính Toán Thiết Kế Cho Từng Khối

4.2.1 Kết Nối VĐK AT 89C51

4.2.2 Mạch Hiển Thị

4.2.3 Mạch Chống Dội

4.2.4 Mạch Tạo Xung Đếm Điều Khiển Động Cơ

4.2.5 Mạch Giao Tiếp Công Suất

Trang 10

CHƯƠNG V : GIẢI THUẬT VÀ HƯỚNG DẪN SỬ DỤNG

5.1 Lưu Đồ Chương Trình Hệ Thống

5.1.1 Lưu Đỗ Đồng Hồ

5.1.2 Lưu Đỗ Chỉnh Giờ ~ Phút ~ Giây Dùng INTI

5.1.3 Lưu Bd Chọn Mode Chỉnh Giờ ~ Phút ~ Giây Dùng INTO

5.1.4 Lưu Đỗ Chương Trình Cài Đặt Thời Gian

5.1.5 Lưu Đỗ Chương Trình Phím Tăng

5.1.6 Lưu Để Chương Trình Phím Giảm

5.1.7 Lưu Đồ Chương Trình Phím Thoát

Lưu Đồ Chương Trình Cài Đặt Thời Gian Điều Khiển Động Cơ

5.1.9 Lưu Đỗ Chương Trình Điều Khiển Động Cơ Theo Giới Hạn Số Lần Xuất Xung

5.1.10 Lưu Đồ Chương Trình Xử L.ý Giờ Phút Giây

5 1.11 Lưu Đồ Chương Trình Giải Mã Nhị Phân

%1 12 Lưu Đề Chương Trình Hiển Thị Led 7 Đoạn

%3 Mọt Sổ Chương Trinh Minh Hoa

6.1.3 Khối Giao Tiếp Công Suất

6.1.4 Khối Cài Đặt Và Chỉnh Giữ

6.1.5 Khối Chốt Và Khống Chế

6.2 Làm Mô Hình Điều Khiển Pin Mát Trời

CHƯƠNG VII : KẾT LUẬN VÀ ĐỂ NGHỊ

7.1 Kết Luận

7.2 Dé Nghị

PHẦN HE: PHỤ LỤC VÀ TÀI KIỆU THÁM KHẢO

Trang 11

PHẦN I:

CO SO LY THUYET

Trang 12

LúệN VĂN TỐT NGHIỆP GVHD: NGQYEN THANH HAl

ES

1.1 MỤC ĐÍCH ĐỀ TÀI:

Nguồn năng lượng tự nhiên ngày một góp phần rất quan trọng trong việc tiết kiệm

nguồn năng lượng nhân tạo Mặt khác nó cũng là một nguồn năng lượng sạch không gây

bất cứ một sự ô nhiễm nào Chính những đặt trưng nổi bật của nó mà con người đưa vào sử

dụng ngày một càng nhiễu trong mọi lĩnh vực đời sống và sản xuất Ở những nơi vùng cao, hãi đảo lưới điện chưa được kéo đến, sinh hoạt của con người gặp rất nhiều khó khăn

Thực tế họ dã sử dụng Pin mặt trời để lấy điện Tuy nhiên người ta chi lắp đặt cố định các

tấm pin để thu năng lượng Điều này không tạo ra được hiệu suất cao vì một tấm Pin chỉ

thu năng lượng tốt nhất ở một góc cố định Nếu đặt nhiều tấm Pin cùng một lúc với những

góc khác nhau thì rất là tốn kém, không hiệu quả kinh tế

'từ thực tế đó, nhóm được sự hướng dẫn của Thầy Nguyễn Thanh Hải đã thực hiện để tài:

*'Thiết Kế Và Thí Công Mô Hình Điêu Khiển Pin Mặt Trời Ding VDK AT89C51”

Trái đất luôn quay xung quanh mật trời, nhưng Pin mặt trời nhận năng lượng tốt nhất khi

được ảnh sáng chiếu vào với mật đó mạnh nhất Để thực hiện việc điều khiển này thì có nhiều phương án, Ở đầy nhóm chọn phương án dung thời gian thực để điều khiển tấm Pin

xoay theo thời gian trong ngày, Nên nội dung để tái gồm có các phần chính sau :

© Tyo ra một đồng hồ thời gian thực

©- Cài đặt thời gian thực để điều khiển động cơ

« Cài thời gian cho từng nơi, từng vùng khác nhau,

© _ Ngưng động cơ trong khoảng thời gian không hoạt động của Pin

© _ Có điều chỉnh tức thời nếu có sự sai lệch

1.2 GIỚI THIỆU HỆ THỐNG PIN MÁT TRỜI:

1.2.1 Hệ thống năng lượng Pin mắt trời:

a Hệ thống Pin mặt trời tổng quát:

Hệ thống Pin mặt trời là một tổ hợp gồm nhiều tấm Pin thu năng lượng, bộ tích trữ năng,

lượng, các thiết bị biến đổi điện tạo cân bằng và cuối cùng là tải tiêu thụ của hệ thống

Tam Pin mặt trời gồm một số modun Pin ghép lại với nhau Mục đích của việc ghép

chúng lại là tạo ra một công suất và một hiệu điện thế nhất định phù hợp với tải Pin mặt

trời chuyển đổi quang năng thành điện năng, thực chất là tạo ra nguồn một chiểu cung cấp

Tai hoạt động cân dòng điện liên tục mà Pin mặt trời chỉ cho ta được điện khi nhận được

ánh sáng mặt trời Do đó trong hệ thống cần có bộ tích trữ điện ‘va he thống nạp điện cho

bộ tích trữ Đôi khi cũng cẩn có bộ biến đổi điện cho phù hợp với từng tải tiêu thụ

b Giới thiệu Pin mặt trời: - -

Pin mat trời thực ra là một tiếp giáp PN có khả năng biến đổi trực tiếp năng lượng mặt trời bức xạ thành điện năng nhờ hiệu ứng nội quang điện gọi là Pin mặt trời.Ta có thể

xem Pin mặt trời tương ứng như một nguồn dòng Vậy tấm Pin mặt trời là các modun Pin

mặt ưrời có công suất và hiệu điện thế nhất định được ghép lại với nhau hình thành Pin có

công suất và hiệu điện thế mong, muốn

/

Mặt dù có một số ít lĩnh vực có thể dùng trực tiếp nguồn điện ngay sau khi được chuyển

đổi Nhưng hầu hết các hệ thống Pin mặt trời được sử dụng đều tôn tại phân ích nữ điện

Bạn ngày khi có ánh nắng mặt trời hệ thống này có nhiệm vụ thu, nạp điện và cung cấp

cho hệ thống Khi không còn ánh sáng thì nhờ phân tích trữ này sẽ là nguồn cung cấp điện cho hệ thống

Trang ï

Trang 13

LúẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAl

————=—ễ

Có 2 phương pháp tích trữ điện trong hệ thống pin mặt trời : cách thứ nhất là hoà điện

Pin mặt trời chung vào lưới điện, cách thứ hai là dùng bộ tí à én, g bộ tích trữ điện bằng Acquy i

1.2.2 Hệ thống điều khiển Pin mặt trời:

a Dat trưng của nguồn bức xạ mặt trời:

Nguồn bức xạ mặt trời là nguồn có sự chuyển động tương đối của quả đất và mặt trời Chính sự chuyển động này mà nguồn năng lượng bức xạkhông ở vị trí cố định, chúng di

chuyển theo một quy luật Do đó ta cần tạo ra một hệ thống điều khiển tấm Pin theo đúng

sự di chuyển này, Khi đó nó sẽ thu được nguồn bức xạ tốt nhất trong mọi thời điểm Đây

là mục đích của để tài này

b Tổng quan hệ thống điều khiển Pin mặt trời:

Vậy hệ thống điểu khiển Pin mặt trời thực chất là hệ thống cơ dùng để xoay tấm Pin

chay theo chủ tình cuấ tự nhiên đó là chu trình quay của trái đất đối với mặt trời Việc

điểu khiến chạy một cách tự động nay được sự trợ giúp của hệ thống điện với phần chính

là dùng VĐK AT R9CSI

LÀ PHƯƠNG HƯỚNG GIẢI QUYẾT:

Một hệ thông VDOK có được đó lá nhớ sự kết hợp chặt chẽ giữa phần mềm và phần vứng Phần mềm thể biện tính năng đa náng của hệ thống Khi chương trình phần mém dược thiết lập thì hệ thống sẽ hoàn toàn tự động Tuy nhiên những phẩn giao tiếp với các thiết bị khác thì phần mềm không đâm nhận được Do đó cần có sự trợ giúp của phẩn cứng Chính vì thế chương trình đó là sự kết hợp chặt chẽ giữa phần cứng và phân mềm

1.3.1 Giải Pháp phần mềm:

Xuất phát từ yêu cầu của để tài nên chương trình phần mềm có các nội dung chính được

xử lý trong VĐK AT 89C51 như sau:

X Chương trình đồng hồ thực

— Chương trình cài đặt thời gian thực

3 ` Chương thình so sánh giờ điều khiển động cơ

% Chương trình chỉnh các thông số thời gian

3 Chương trình điểu khiển động cơ

1.3.2 Giải pháp phần cứng: -

'VĐK sử dụng nguồn cung cấp với hiệu điện thế nhỏ, công suất nhỏ không đủ giao tiếp với thiết bị công suất lớn Do đó hệ thống VĐK cần phải có phần giao tiếp công suất Ngoài ra hệ thống cần phẩi có phần cứng để hổ trợ cho chương trình Vì chương trình

không lớn lắm chỉ dùng trong phạm vi ROM nội và RAM nội của VĐK Nên phần cứng

của hệ thống không có mở rộng dung lượng và nó gồm có những phần chính sau:

* Bộhiển thị thời gian

% Phần giao tiếp công suất

* Khối khống chế

+ Mạch chốt chạy thuận — nghịch có định thời gian

+ Mạch điều khiển chạy thuận ~ nghịch tức thời có định thời gian

Trang 14

LOAN VAN TỐT NGHIỆP GVHD: NGUYEN THANH HA

CHƯƠNG HH: HỘ VI ĐIỀU KHIỂN A4CS51

21 GIỚI THIỆU HỌ MCSã1:

MCS51 là một họ IC vi điều khiển ( mierocontroller) do hãng Intel sản xuất Các IC

tiêu biểu cho họ MCS 51 là 8031, 8051,8751,8951 chúng có đặc điểm chung như sau :

ROM nội : tùy từng mã hiệu mà có sự khác nhau :

+ 8031: 0KROM

+ 8051: 4K ROM + 8751: 4K EPROM + 8951; 4K EEPROM

Trang 15

LOAN VAN TỐT NGHIỆP —————_—_ GVHD: NGUYEN THANH HAI

- 64K byte khong gian bộ nhớ dữ liệu mở rộng

- .210 bit được địa chỉ hoá ( nằm trong vùng RAM nội )

nhập hoặc một đường diéu khiển hoặc là thành phân của bus dữ liệu và bus địa chỉ

Sơ đỗ chân của 8051/ A'T9CS5I:

ATH9V.E1

F27-^15 P26-A14 F25-213 ATALZ P24-A12

Trang 16

LOAN VAN TOT NGHIEP GVHD: NGUYEN THANH HAI

2.2.1.1 Port 0:

Port 0 là một port có hai chức năng trên các chân 32 - 39 “Trong các thiết kế cỡ nhỏ

không dùng bộ nhớ mở rộng nó có chức năng giống như các port VO Đối với các thiết kế

lớn với bộ nhớ mở rộng, nó vừa có chức năng là byte thấp bus địa chỉ và là bus đữ liệu 8 bit

2.2.1.2 Port 1:

Port 1 là một port L/O trên các chân 1 — 8, Céc chin này được ký hiéu Pio, Pi.1, c6 thé

dùng cho giao tiếp với các thiết bị ngoại vi nếu cần Port 1 không dùng chức năng khác, vì

vậy chúng có thể chỉ dùng để giao tiếp với các thiết bị ngoai vi hoặc trao đổi dữ liệu với

các hệ thống khác

2.1,1,3 Port 2:

Port là một port có công dung kép trên các chân 21 — 28 được dùng như các đường xuất

nhập hoặc là byte của bus địa chỉ đối với các thiết bị dùng bộ nhớ mở rộng

2.2.1.4 Port 3:

Port $A mot port c6 công dụng kép trên các chân 10 - 17 Mỗi chân của port này vừa

có chức năng trao đối dữ liệu vừa có chức náng đác biệt như ở bảng sau:

| Bit Tén Chức náng chhuyển đổi

Đạo RXD Dữ liệu nhận cho port nối tiếp

Đại TXD Dữ liệu phát cho port nối tiếp

P32 INT, Ngdt 0 bén ngoai

P33 INTo Ngắt l bến ngoài

P34 To Ngõ vào của timer/counter 0

P35 T¡ Ngõ vào của timer/counter Ì

P35 |WR | Xung ghi bộ nhớ dữ liệu ngoài

P37 RD Xung đọc bộ nhớ dữ liệu ngoài

2.2.1.5 PSEN: (Program Store Enable)

PSEN là tín hiệu ra trên chân 29 Nó là tín hiệu điều khiển để cho phép bộ nhớ chương,

trình mở rộng và thường được nối đến chân OE (Output Enable) của một EPROM để cho

phép đọc các byte mã lệnh

PSEN ở mức thấp trong thời gian lấy lệnh Các mã nhị phân của chương trình đọc từ EPROM qua bus địa chỉ và được chốt vào thanh ghi lệnh cla MCS51 để giải mã lệnh Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức thụ động (mức cao)

2.2.1.6 ALE: (Address Latch Enable)

Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các VXL 8080,

8085, 8088, 8086 MCS51 dùng ALE một cách tương tự cho việc giải kênh các bus địa chỉ

và dữ liệu, khi port 0 được dùng trong chế độ chuyển đổi của nó: vừa là bus dữ liệu vừa là byte thấp của bus địa chỉ ALE là tín hiệu để chốt địa chỉ vào một lành, ghi bên ngoài

trong nửa đầu của chu kỳ bộ nhớ, sau đó các đường port 0 dùng để xuất hoặc nhập dữ liệu

trong nửa sau của chu kỳ bộ nhớ

Các xung tín hiệu ALE có tốc độ bằng 1/6 lin tan số dao động trên chip và có thể được

dùng làm xung nhịp cho các phan khác của hệ thống Chỉ ngoại trừ khi thi hành lệnh

MOVX, một xung ALE sẽ bị mất Chân này cũng được làm cho xung lập trình cho EPROM trong các loaj c6 ROM nội

———

Trang 5

Trang 17

LOAN VAN TOT NGHIEP _ GVHD; NGUYEN THANH HAL

2.2.1.7 EA: (External Access)

Tín hiệu ngõ vào trên chân 31 thường được mắc lên mức cao (+5V) hoặc mức thấp

(GND) Nếu ở mức cao, MCS51 thi hành chương trình từ ROM nội trong khoảng địa chỉ

thấp 4K Nếu ở mức thấp, chương tình thì hành từ bộ nhớ mổ rộng Khi đồng 8031, EA

luôn được nối mức thấp vì không có bộ nhớ chương trình trên chip Nếu EA được nối mức

thấp bộ nhớ bên trong chương trình sẽ cấm và thi hành từ chương trình từ EPROM mở

rộng, người ta còn ding chan EA làm chân cấp điện áp Vạ khi lập trình cho ROM bên

2.2.1.8 RST: (Reset)

Ngõ vào RST trên chân 9 là ngõ vào Reset của 8051/8951 Khi tin hiệu này được đưa

lên mức cao (rong íL nhất 2 chu kỳ máy), các thanh ghi bên trong MCS51 được tải những

giá trị thích hợp để khởi động hệ thống

2.1.9 Các ngõ vào bộ dao ding tren chip +

Nhự đã thấy trong hình trên, MCS5I có một bộ dao động trên chip Nó thường được nối với các thạch anh giữa 2 chân }8 vá }9 Các tụ giữa cũng, cần thiết như đã vẽ.Tần số thạch

anh thông thường là 12 Mhz

chúng có thể được mở rộng bằng các thành phần bên ngoài lên tối đa 64 Kbyte bộ nhớ

chương trình và 64 Kbyte bộ nhớ đữ liệu

Bộ nhớ bên trong bao gém ROM ni va RAM trén chip, RAM trén chip bao gồm nhiều

phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hoá từng bit, các bank thanh ghi và các

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

Trang 18

LúẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

Hai đặc tính cần lưu ý là:

* Các thanh ghi và các port xuất nhập TH p đã được đã xếp trong bộ nhớ và có thể được truy xuất

ae xếp bên trong RAM nội nhỏ hơn so với RAM ngoài như trong các bộ vi xử lý

c

Chỉ tiết về bộ nhớ RAM trên chip:

Như tá đã thấy trên hình sau, RAM bên trong MCS51 được phân chia giữa các bank

thanh ghi (00H ~ IFH), RAM địa chỉ hoá từng bit (20H - 2FH), RAM đa dụng (30H - 7FH)

và các thanh ghi chức năng đặc biệt (80H - FFH)

nt [ro [rs [ra [F3 [F2 [ri [ro |b

RAM da dung | [eo Ter Tee [es [E4 [E3 [E2 [E1 |Eo | Acc +

28 147146 | 45 | 44 | 43 | 42 | 41] 40] [99 | Khong duoc địa chỉ hod theo bit SBUE

27 |3F | 3E | 3D | 3C |38 |3A |39 |38| |25 9F |9E |9D |9C | 9B [9A [9 [98 | SCON

26 | 37 | 36 | 35 | 34 | 33 | 32 | 31 | 30

25 | 2F | 2E | 2D | 2c | 2B | 2A | 29 | 28] | 90 | 97 [96 195 194 193 [92 [91 90 | Pi

24 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20

33 Tir Lie [ip [ic | 1B] 1A | 19 | 18 | | 8D | Không được địa chỉ hoá theo bị THỊ

2 [1716 [15 | 14 | 13 |12 |1 |10| | 8C | Không được địa chỉ hoá theo bit THO 2i Lor | oF [op [oc | op | oa | 09 | 08 | | 8B | Không được địa chỉ hoá theo bit TLI

20 107 106 [os [04 [03 | o2 | 01] 00| | 8A | Khong được địa chi hod theo bit TLO

18 38 |SE | 8E |8D | 8C |8B | 8A [89 | 88 | TCON

10

07 Bank thanh ghỉ 0 81 | Không được địa chỉ hoá theo bit SP

00 (mặc định cho R0~ R7) 80 [87 |86 |85 |84 |83 |82 |81 |80 |P0

Hình 2.4 Tóm tắt bộ nhớ dữ liệu trên chip

——

Trang 7

Trang 19

LOAN VAN TOT NGHIEP

2.2.2.1 Ram da dung:

GVHD: NGUYEN THANH HA

Mặc dù trên hình cho thấy 80 byte Ram da dung chiếm các địa chỉ từ 30H ~ 7FH, 32

byte dưới cũng có thể được dùng với mục đích tương tự (mặc dù các địa chỉ này đã có mục

Lệnh này di chuyén 1 byte dif ligu ding cách đánh địa chỉ trực tiếp để xác định “địa chỉ

nguồn” (5EH) Đích nhận dữ liệu được ngầm định trong mã lệnh là thanh ghỉ tích lũy A

RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay

RL Ví dụ, hai lệnh sau thị hành cùng nhiệm vụ như lệnh đơn trên:

MOV R0, #5

MOV A, @RO

Lệnh đầu dàng địa chỉ tức thời để di chuyển giá tri SFH vao thanh ghi R0, và lệnh thứ hai

dùng địa chỉ gián tiếp để dí chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy

2.2.2.2 Ram: định địa chỉ hoá từng bít:

MUS51 chifa 210 bit duge dia chi hoa, trong đó có 128 bịt là ở các dia chi byte 20H đến 2EH, và phân còn lại là trong thanh ghi chức náng đác biệt

Ý tưởng truy xuất từng bít riêng rẽ bằng phan mém là một đặc tính tiện lợi của vi điều

khiển nói chung Các bít có thể được đặt, xoa, AND, OR, với một lệnh đơn Đa số các vi

xử lý đòi hỏi một chuỗi lệnh đọc - sữa - ghi để đạt được hiệu quả tương tự Hơn nữa các

port /O cũng được địa chỉ hoá từng bít làm đơn giản phần mềm xuất nhập từng bít

Có 128 bit được địa chỉ hod da dụng ở các byte 20H đến 2FH Các địa chi này được truy

xuất như các byte hoặc như các bít phụ thuộc vào lệnh được dùng Ví dụ, để đặt bit 67H,

MOV A, 2CH ; doc ca byte

ORL A,#10000000B ; set MSB

MOV 2CH, A ; ghi lai cd byte

8031 hổ trợ 8 thanh ghỉ (R0 đến R7) và theo mặc định (sau khi reset hệ thống) các thanh

ghỉ này ở các địa chỉ 00H — 07H Lệnh sau đây sẽ đọc nội dung ở địa chỉ 05H vào thanh ghỉ tích lũy:

Các lệnh dùng thanh ghỉ R0 đến R7 thì sẽ ngắn hơn và nhanh hơn các lệnh tương ứng

dùng địa chỉ trực tiếp Các giá trị dữ liệu được dùng thường xuyên nên dùng

một trong các thanh ghi này

Trang 20

LÄẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

a tae = ae có thể chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghỉ

rong, AE tang: me chicas, trình (PSW) Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghỉ nội dung của thanh ghi tích lũy vào địa chỉ 18H:

MOV R0,A :

Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng” chương trình nhanh và hiệu

quả từng phần riêng rẽ của phần mềm sẽ có một bộ thanh ghi riêng không phụ thuộc vào

các phần khác)

2.2.3 CÁC THANH GHI CHỨC NANG ĐẶC BIỆT:

Các thanh ghi trong MCS5I được định dạng như một phần của RAM trên chip.Vi vậy

mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghỉ đếm chương trình và thanh ghỉ lệnh vì các thanh ghỉ này hiếm khi bị tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào RÀM trên chịp) Cũng như R0 đến R7 có 21 thanh ghi chức năng đặc biệt (SER: Special Eunenon Rigister) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú ý rằng hầu hết

128 dha chi từ RUN đến FEH không được định nghĩa Chỉ có 21 địa chỉ SFR là được định

nel

Nyoat Ui thành ghi tích lũy A có thể truy xuất ngẫm như đã nói, đa số cic SFR được

truy xuất dùng địa chỉ trực tiếp Chú ý rằng mớt vái SFR có thể được địa chỉ hoá bit hoặc

yte, Người thiết kế phải thận wong khi tuy xuất bít và byte Ví dụ lệnh sau:

B OEOH

§ẽ set bít 0 trong thanh ghi ch lũy, các bịt khác khống thay đổi Ta thấy rằng E0H đồng

thời là địa chỉ byte của cả thanh ghi tích lũy và là địa chỉ bít của bịt có trọng số nhỏ nhất

trong thanh ghỉ tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là cố hiệu quả

2.2.3.1 Từ trạng thái chương trình:

Từ trạng thái chương trình (PSW : Program Startus Word) ở địa chỉ D0H chứa các bit

trạng thái như bảng tóm tắt sau:

PSW.4 | RS1 D4H Bit 1 chon bank thanh ghi

PSW.3 | RSO D3H Bit 0 chon bank thanh ghi

= bank 0: dia chi 00h — 07h bank 1 : địa chỉ 08h - 0Fh

Trang 21

LOAN VAN TOT NGHIEP GVHD: NGOYEN THANH HAI

sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSW 2

Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lý thi hành trên bit Vi

dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ:

SETB RSI

SELB RSO

MOV A,R7

hủ chương trình được hợp dịch, các địa chỉ bit đúng được thay thế cho các ký hiệu “RS1”

và "RS0” Vậy lệnh SETB RSI sẽ giống như lệnh SETB 0D4H

* Cờ tràn:

Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có một phép toán bị tràn Khi

các số có dấu được cộng hoặc trừ với nhau, phẩn mễm có thể kiểm tra bít này để xác định

xem kết quả có nằm trong tẩm xác định hay không Khi các số không dấu được cộng, bit

OV có thể được bỏ qua Các kết quả lớn hơn +12? hoặc nhỏ hon — 128 sé set bit OV Ví

dụ, phép cộng sau bj tran va bit OV duge set:

quả nguyên trong A và phẩn dư trong B Thanh ghi B cũng có thể xem như thanh ghi đệm

đã dụng Nó được địa chỉ hoá từng bit bằng các địa chỉ bit F0h đến F7H

2.2.3.3 Con trỏ ngăn xếp:

Con trổ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81H.NÓ chứa địa chỉ của byte dữ

liệu hiện hành trên đỉnh của ngăn xếp Các lệnh trên ngăn xếp bao gồm các thao tác cất

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

làm tăng SP trước khi ghỉ dữ liệu, và lệnh lấy đữ liệu ra khổi ngăn xếp sẽ đọc dữ liệu và giảm SP Ngăn xếp của 8051/8951 được lưu giữ trong RAM nội và được giới hạn địa chỉcó

thể truy xuất bằng địa chỉ gián tiếp Chúng là 128 byte đầu của MCS51

Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây được dùng:

MOV SP, #5FH

———_-

Trang 10

Trang 22

LUẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

Trên MSC51 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trên chip là

TEH Sở đĩ dùng giá trị 5FH vì SP sẽ tăng lênh 60H trước khi cất byte dữ liệu đầu tiên

Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn xếp mà để nó lấy giá

trị mặc định khi reset hệ thống Giá trị đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có địa chỉ là 08H Nếu phẫn mềm ứng dụng không khởi động lại SP, bank thanh ghỉ 1(có thể cả 2 va 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 được truy xuất ngầm bằng các lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về (RET, RETJ) để cất và lấy lại bộ đếm chương trình

Lệnh thứ ba dùng địa chỉ gián tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở

địa chỉ được chứa trong DPTR (109H)

2.2.3.5 Các thanh ghi port xuất nhập:

Các port của MCS51 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 đều được địa chỉ hoá từng bit Điểu đó cung

cấp một khả năng giao tiếp thuận lợi Ví du, nếu một motor được nối qua một cuộn dây có transistor lái đến bit 7 của port 1, nó có thể bật và tắt bằng một lệnh đơn:

WAIT: JP P1.5,WAIT

Lệnh này có nghĩa là "nếu bit PI.5 được set thì nhẩy tới nhãn WAIT” Nói cách khác

“nhấy trở lại và kiểm tra lần nữa”

2.2.3.6 Các thanh ghỉ timer:

MCS5I chứa hai bộ định thời / đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiên Timer 0 ở dia chỉ 8AH (TL0: byte thé) va 8CH (THO: byte cao), Timer 1 ở địa chỉ 8BH (TLI: byte thấp) và 8DH (THỊ: byte cao) Việc vận hành tỉmer được set bổi thanh ghi 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

2.2.3.7 Các thanh ghỉ port nối tiếp:

'MCS5I chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối

Trang 11

Trang 23

LOAN VAN TOT NGHIEP GVHD: NGUYEN THANH HAI

tiếp (các bộ chuyển đổi A/D, các thanh ghi dịch ) Một thanh ghỉ gọi là bộ đệm dữ liệu

nối tiếp (SBUP) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và nhận Khi truyền dữ liệu thì ghỉ lên SBUF, khi nhận dữ liệu thì đọc SBUE Các mode van hành khác nhau được lập

trình qua thanh ghi điều khiển port nối tiếp (SCON) (được địa chỉ hoá từng bi) ở địa chỉ 98H

2.2.3.8 Thanh ghi điều khiển ngắt:

MCS5I có cấu trúc 5 nguôn ngắt, 2 mức ưu tiên Các ngắt bị cấm sau khi reset hệ thống

và sẽ đuợc cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H Cả hai thành ghí được địa chỉ hoá từng bit,

2.2.3.9 Thanh ghi điểu khiển công suất:

Thanh ghỉ điều khiển công suất (PCON) ở địa chỉ 87H chứa nhiều bit điều khiển Chúng

được tóm tắt trong bảng sau:

Bi [Kyhiệu |Ý nghĩa — —_

(7 | SMOI | Bit gap doi tốc đó baud, nếu được set thì sẽ tăng tốc độ

baud gấp đói trong các mode 1,2 và 3 của port nối tiếp

1 |PD Giảm công suất, được set để kích hoạt mode giảm công

suất, chỉ thoát khi rest

0 |IDL Mođe chỡ, set để kích hoạt mode chờ, chỉ thoát khi có

ngắt hoặt reset hệ thống

2.2.4 BỘ NHỚ NGOÀI:

MCS51 có khả năng mở rộng bộ nhớ lên đến 64 K bộ nhớ chương trình và 64 K bộ nhớ

dữ liệu bên ngoài Do đó, có thể dùng thêm ROM và RAM nếu cần thiết

Khi đùng bộ nhớ ngoài, port 0 không còn là một port VO thuần túy nữa Nó được hợp kênh giữa bus địa chỉ (A0 — A?) và bus dữ liệu (D0 ~ D?) với tín hiệu ALE để chốt byte

thấp của địa chỉ khi bất đầu mỗi chu kỳ bộ nhớ Port 2 thông thường được làm byte cao

của bus địa chỉ TU

Trong nữa đầu của mỗi chủ kỳ bộ nhớ, byte thấp của địa chỉ được cấp trong port 0 và

được chốt bằng xung ALE Một 1C chốt 74HC373 (hoặc tương đương) sẽ giữ byte

địa chỉ

thấp trong phần còn lại của chủ kỳ bộ nhớ Trong nữa sau của chu kỳ bộ nhớ port 0 được

dùng như bus dữ liệu và được đọc hoặc ghỉ tuỳ theo lệnh

2.2.4.1 Truy xuất bộ nhớ chương trình ngoài: /

;

Bộ nhớ chương trình ngoài là một IC ROM được cho phép bởi tín hiệu PSEN Hình sau

mô tả cách nối một EPROM vào 8051/8951:

Trang 12

Trang 24

LOGIN VAN TOT NGHIEP GVHD: NGUYEN THANH HAI

Hình 2.5 Giao tiếp giữa 8051/8951 và EPROM

Mot chu ky may của 8051 / 8951 có 12 chu khỹ xung nhịp Nếu bộ dao động trên chip

được lái bởi một thạch anh 12 MHz thì một chu kỳ máy kéo dai Ips Trong một chu ky múy, sẽ có hai xung ALE và hai byte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành

là lệnh hai byte thì byte thứ hai được loại bỏ) Giản đồ thời gian của một lần lấy lệnh được

Trang 25

LOAN VAN TOT NGHIEP

2.2.4.2 Truy xuất bộ nhớ dữ liệu ngoài:

A8 AIS5

OE

WR

Ƒ 18

Hình 2.7 Giao tiếp giữa 8051 / 8951 và RAM

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

và RD ( các chân P3.6 và P3.7 thay đổi chức náng) Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh MOVX dùng con trỏ dữ liệu (DPTR) 16 bit hoặc R0 và R1 xem như thanh ghi địa chỉ

Port 0

Hình 2.8 Giân đồ thời gian của lệnh MOVX

Kết nối bus địa chỉ và bus dữ liệu giữa RAM và 8051 / 8951 cũng giống nhu EPROM va

do đó cũng có thể liên kết 64 Kbyte bộ nhớ RAM Ngoài ra, chân RD của 8051 /8951

a

Trang 14

Trang 26

LúẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

được nối tới chân cho phép xuất (OB) cia RAM và chân WR được nối tới chân ghi (WR)

của RAM

Giản đỗ thời gian cho lệnh đọc bộ nhớ dữ liệu ngoài được vẽ trên hình trên đối với lệnh MOVX A, @DPTR

Giản đổ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự chỉ khác đường WR

sẽ thay đường RD và dữ liệu được xuất ra trên port 0 (RD vẫn giữ ở mức cao)

2.2.4.3 Xếp chồng các vùng bộ nhớ chương trình và dữ liệu bên ngoài:

Vì bộ nhớ chương trình là ROM, nên nảy sinh một vấn để bất tiện khi phát triển phần mềm cho 8051 / 8951, Đó là làm cách nào phần mềm có thể sửa đổi chương trình và ghi

trở lại khi nó được chứa trong bộ nhớ “chỉ đọc” Cách duy nhất là xếp chồng các vùng nhớ chương trình và dữ liệu Một IC RAM có thể chứa cả chương trình và đữ liệu bằng cách nối đường OE của RAM vào một mạch logic AND của PSEN và RD Mạch trên hình sau

Vậy một chương trình có thể được tải vào RAM (bằng cách ghỉ nó như bộ nhớ dữ liệu )

và thi hành (bằng cách truy xuất nó như bộ nhổ chương trình)

2.2.4.4 Lệnh reset : -

MCS51 được reset bằng cách giữ chán RST ở mức cao ít nhất trong hai chu kỳ máy và

trả nó về mức thấp RST có thể kích bằng tay dùng một nút bấm hoặc có thể được kích khi cấp điện bằng một mạch RC

Trang 27

LOAN VAN TỐT NGHIỆP

GVHD: NGUYEN THANH HAI

Thanh ghi Nội dung

MCS5I có bốn bank thanh ghi, mỗi bank có 8 thanh ghí đánh số từ R0 đến R7 Tại mỗi

thời điểm chỉ có một thanh ghi tích cực Muốn chọn bank thanh ghi nào ta chỉ cần gần các

bit nhị phân thích hợp vào RS1 (PSW.4) và RSO (PSW.3) trong thanh ghí trạng thái chương,

tích lũy được ký hiệu là “A”, con trỏ dữ liệu là “DPTR”, thanh ghi đếm chương trình

làPC”, cờ nhớ là “C”, cặp thanh ghỉ tích lũy - B là “AB”

hép gọi tên các thanh ghỉ chức năng đặc biệt (có địa chỉ

P0 cho port 0, TMOD cho thanh ghỉ chế độ timer,

dấu @ trước R0 hoặc R1

địa chỉ ô nhớ mà lệnh tác động đến Người ta qui ước dùng

Trang 28

LUẬN VN TỐT NGHIỆP GVHD: NGUYEN THANH Hải!

5⁄7 ——— —

——————ễ-._——— ==—=—==

2.2.5.4 Địa chỉ tức thời:

Người ta dùng dấu # trước các toán hạng tức thời Các toán hạng đó có thể là một hằng

số, một ký tự số hay một biểu thức toán học ; | = 2 a 191 ee Trình nh hgp hợp dịch sẽ tự động tính toán dich i loán và và thay tha,

2.2.5.5 Địa chỉ Lương đối:

Địa chỉ tương đối dùng trong các lệnh nhảy 8051 / 8951 dùng giá trị 8 bit có dấu để cộng thêm vào thanh ghi đếm chương trình (PC) Tầm nhảy của lệnh này trong khoảng từ

~128 đến 127 ô nhớ Trước khi cộng, thanh ghỉ PC sẽ tăng đến giá trị theo sau lệnh nhảy

tối tính toán địa chỉ offset cẩn thiết để nhây đến địa chỉ yêu cầu Như vậy, địa chỉ mới là

ương đối so với lệnh kế tiếp chứ không phải bản thân lệnh nhảy Thường lệnh này

án đến nhân được định nghĩa trước

2125.6 Địa chỉ tuyệt đối:

Địa chỉ tuyệt đối chỉ dùng trong các lệnh ACALL và AJIMP Các lệnh 2 byte này dùng

dể rẽ nhánh vào một trang 2 Kbyte của bộ nhớ chương trình bằng cách cấp 11 bit địa chỉ

thấp (A0 — A10) để xác định địa chỉ đích wong tang ma Còn 5 bit cao của địa chỉ đích (A11— A15) chính là 5 bit cao hiện hành trong thanh ghi đếm chương trình Vì vậy, địa chỉ

của lệnh theo sau lệnh rẽ nhánh và địa chỉ đích của lệnh rẽ nhánh cần phải dùng trang mã

2 Kbyte (có cùng 5 bit địa chỉ cao)

Xác định trang mã Xác định địa chỉ trong trang mã

A10 Mã lệnh Offset tương đối

Địa chỉ tuyệt đối

2.2.5.7 Địa chỉ dài: ”

Địa chi dai ding cho lệnh LCALL và LIIMP Các lệnh này chiếm 3 byte và dùng 2 byte

sau (byte 2 và byte 3) để định địa chỉ đích của lệnh 16 bit Ưu điểm của lệnh này là có thể

sử dụng trong toàn bộ vùng nhớ 64 Kbyte Tuy nhiên, lệnh này chiếm nhiều byte và lệ

2.2.5.8 Địa chỉ tham chiếu: -

Địa ot tham chiếu dùng một thanh ghi cơ bản ( hoặc thanh ghi đếm chương trình PC

hoặc thanh ghi con trỏ dữ liệu DPTR) và địa chỉ offset (trong thanh ghỉ tích lũy A) để tạo

địa chỉ được tác động cho các lệnh JMP hoặc 'MOVC Các bảng nhây và bảng tìm kiếm

dễ

đàng được tạo ra để sử dụng địa chỉ tham chiếu

Trang 17 4‡L0000

Trang 29

Rn Thanh ghi RO đến R7 của bank thanh ghỉ được chọn

Đata ¿8 bịt địa chỉ vùng dữ liệu bên trong Nó có thể là vùng RAM dữ liệu trong

(0127) hoặc các thanh ghi chức náng đặc biệt

@Ri 8 bil ving RAM dif liéu trong (0 ~ 255) được đánh địa chỉ gián tiếp qua

thanh ghí R0 hoặc R1,

#datu — ;hằng 8 bịt chứa trong c&u lệnh

#data 16 : hằng 16 bịt chứa trong cấu lệnh

Addr 16: 16 bit dia chi đích được dùng trong cáu lệnh ACALL và LIMP

‘Addr 11:11 bit dia chi đích được dùng trong vâu lệnh ACALL và AJMP

Rel : byte 8 bịt có dấu được dùng trong lệnh SJUMP và những lệnh nhảy có điều

ADD A,@Ri (1byte, 1 chủ kỳ máy): cộng gián tiếp nội dung RAM chứa tại địa chỉ

được khai báo trong Ri vào thanh ghi A

ADD A, #data (2 byte, 1 chu ky máy): cộng dữ liệu tức thời vào thanh ghi A

ADDC A,Rn_ (1 byte, 1 chu kỳ máy): cộng thanh ghi và cờ nhớ vào A

ADDC A, data (2 byte, 1 chu ky may): cOng trực tiếp byte dữ liệu va cờ nhớ vào A

ADDC A, @Ri (1 byte, 1 chu ky may): cong gián tiếp nội dung RAM và cờ nhớ vào A

ADDC A, #data (2 byte, 1 chu ky máy): cộng dữ liệu tức thời = cờ nhớ vào A

/

SUBB A,Rn (1 byte, 1 chuky máy): trừ nội dung thanh ghi Rn va cờ nhớ A cho nội dung thanh ghỉ

máy): trừ trựctiếp A cho một số và cờ nhớ

máy): trừ gián tiếp A cho một số và cờ nhớ

áy): trừ nội dung thanh ghi A cho một số tức thời và

cờ nhổ

kỳ máy): tăng, nội dung thanh ghỉ A lên 1

kỳ máy): tăng nội dung thanh ghi Rn lên 1

kỳ máy): tăng dữ liệu trực tiếp lên 1

INC @Ri (1 byte, 1 chu kỳ máy):tăng gián tiếp nội dung vùng RAM lên 1

DEC A (1 byte, 1 chu ky máy): giảm nội dung thanh ghi A xuống 1

SUBB A,data (2 byte, 1 chu ky

SUBB A, @Ri (1 byte, 1 chu ky

SUBB A, #data (2 byte, 1 chu ky mi

INC A (1 byte, 1 chu

INC Rn ' (2byte,lchu

INC data’ (2byte,lchủ

Trang 30

GVHD: NGUYEN THANH Hải!

DEC Rn (1 byte, 1 chu kỳ máy); giảm nội dung thanh ghi Rn xuống 1

DEC data (2 byte, 1 chu ky máy) gị § : ==

DEC @Ri y): gidm dit ligu trực tiếp xuống 1

DIV AB (1 byte, 4 chủ kỳ máy): chia nội dung thanh ghỉ A cho nội dung thanh ghỉ B

2.2.6.2 Nhóm lệnh luận lý:

ANL A, Rn (1 byte, I chủ kỳ máy):AND nội dung thanh ghi A với nội dung thanh ghi Rn

ANL A, data (2,1) : AND nội dụng thanh A với dữ liệ trực tiếp

ANL A, @Ri (1,1): AND noi dung thanh ghi A với dữ liệu gián tiếp trong Ram

ANL A, #data (2,1) : AND nội dung thanh phủ A với dữ liệu tức thời,

ANL, data, A— @Ø,1): AND một dữ liệu trực tiếp với A

ANL data, Wdata (3,2): AND một dữ liệu trực tiếp với một dữ liệu tức thời

ANI, C, bú (2,3) : AND cờ nhđ với mộ bịt trực tiếp

ANL ©, /bit (2,2): AND cờ nhớ với bú của một bít trực tiếp

ORL A, Rn (1,1): OR thanh ghi A v6i thanh ghi Ra

ORL A, data (2,1) : OR thanh ghi A với một dữ liệu trực tiếp

ORL A, @Ri (1,1) : OR thanh ghi A với một dữ liệu gián tiếp

ORL A, #data (2,1) : OR thanh ghí A với một dữ liệu tức thời

ORL data, A (2,1) : OR một dữ liệu trực tiếp với thanh ghí A

ORL data, #data (3,2) : OR một dữ liệu trực tiếp với một dữ liệu tức thời

ORL C, bit (2,2) : OR cờ nhớ với một bít trực tiếp

ORL C, /biL(2,2) : OR cờ nhớ với bù cũa một bít trực tiếp

XRL A, Rn (1,1) : XOR thanh ghi A với thanh ghỉ Rn

XRL A, data (2,1) : XOR thanh ghi A với một dữ liệu trực tiếp

XRL A, @Ri (1,1) : XOR thanh ghi A với một dữ liệu gián tiếp

XRL A, #data (2,1) ; XOR thanh ghi A với một dữ liệu tức thời

XRL data, A (2,1) : XOR một dữ liệu trực tiếp với thanh ghi A

XRL data, #data (3,2) : XOR một dữ liệu trực tiếp với một dữ liệu tức thời

SETB C(1,1) : đặt cờ nhớ

SETB bit (2,1) : đặt một bit trực tiếp

CLR A (1,1): xoá thanh ghi A

CLR C (1,1) : xoá od nhớ

PL A (1,1) : bù nội đung thanh ghỉ Â-

CPL C (1,1): bù cờ nhớ

CPL bit (2,1) : bù một bit trực lộ) aiid

RLC Ð\ An: aay trái nội dung thank a 2 qua cờ nhớ

i Í ni i A

RR A (1,1): quay phải nội dung, Tế: hi Aqua cB nhỏ

RRC A (1,1) : quay phải nội đunẽ i A 1 nibble (1/2 byte)

MOV A, data (2,1) chuyển dữ gu ue iế Tào har B/S

MOV A, @Ri (1,1): chuyển dữ liệu gián Hiếp vào Hanh BA

Trang 31

LúẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAl

MOV A, #data (2,1) : chuyển dữ liệu tức thời vào thanh $ 2 4+ ghi A

bị

MOV Ra, A (1,1): chuyén ngi dung thanh ghi A vao thanh ghi Rn

MOV Rn, data (2,2) : chuyển dữ liệu trực iếp vào thanh ghỉ Ra

MOV Rn, #data (2,1): chuyển dữ liệu tức thời vào thanh ghỉ Rn

MOV data, À (2,1) : chuyển nội dung thanh ghỉ A vào một dữ liệu trực tiếp

MOV data, Rn (2,2) : chuyển nội dung thanh ghi Rn vào một đữ liệu trực tiếp

MOV data, data (3,2) ; chuyén mét dữ liệu trực tiếp vào một dữ liệu trực tiếp

MOV data, @Ri (2,2) : chuyển một dữ liệu gián tiếp vào một dữ liệu trực tiếp

MOV data, #data (3,2) : chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp

MOV @Ri, A (1,1) : chuyển nội dung thanh ghỉ a vào một dữ liệu gián tiếp

MOV @Ri, data (2,2) : chuyển một dữ liệu trực tiếp vào một dữ liệu gián tiếp

MOV @Ri, #data (2,1) : chuyển một dữ liệu tức thời vào một dữ liệu gián tiếp

MOV DPRT, #data l6 (3,2) : chuyển một hằng 16 bịt vào thanh ghỉ con trổ dữ liệu

MOV €, bít (2,1) : chuyển một bít trực tiếp vào cờ nhớ

MOV bit, (2/2) : chuyển cỡ nhớ vào một bịt trực tiếp

MOV A,@0A +DIPTR (12) (chuyển byte bộ nhớ chương trình có địa chỉ ®A+DPTR vao A

MOVC A, @A + PC (1,2): chuyén byte bộ nhớ chương trình có địa chỉ ®A+PC vào A

MOVX A, @Ri (1,2): chuyén dữ liệu ngoài (E bít địa chỉ ) vào thanh ghi A

MOVX A, @DPTR (1,2) : chuyển dữ liệu ngoài (16 bit địa chỉ ) vào thanh ghi A

MOVX @Ri, A (1,2) : chuyển nội dung thanh ghi A ra dữ liệu ngoài(8 bit địa chỉ)

MOVX @DPTR, A (1,2) : chuyển nội dung thanh ghí A ra dữ liệu ngoài (16 bit địa chỉ)

PUSH data (2,2) : chuyển dữ liệu trực tiếp vào ngăn xếp và tăng SP

POP data (2,2) : lấy dữ liệu trực tiếp ra khỏi ngăn xếp và giảm SP

XCH A,Rn)1,1): trao đổi dữ liệu giữa thanh ghi Rn và thanh ghi A

XCH A, data (2,1): trao đổi giữa thanh ghí A và một dữ liệu trực tiếp

XCH A, @Ri (1,1) : trao đổi dữ liệu thanh ghi A và một dữ liệu gián tiếp

XCHD A, @Ri (1,1) : trao đổi giữa nibble thấp (LSN) của thanh ghỉ A và LÊN của dữ

liệu gián tiếp

2.2.6.4 Nhóm lệnh chuyển điều khiển: /

ACALL addr11 (2,2) : gọi chương trình con dùng địa chi tuyệt đối

LCALL addrl6 (3,2) : gọi chương trình con dùng địa chỉ dài

RET (1,2) : trở về từ lệnh gọi chương trình con

AIMP addrll (2,2): nhảy tuyệt đối

LIMP addrl6 (3,2): nhảy An

SIMP rel 2,2) : nhảy ngắn :

IMP Aer hy : nhảy gián tiếp từ con trổ đữ liệu

JZ rel (2,2) : nhảy nếu A bằng 0

JNZ rel (2,2): nhảy nếu A không bằng 0

JC rel (2,2) : nhảy nếu cờ nhớ được đặt

ết đặt

INC rel (2,2) : nhảy nếu cờ nhớ không được đã

JB bit, rel (3,2) : nhảy tương đối nếu bít trực 1” one ki "

JNB biyrel — ,2):nhấy tương đối nếu bịt trực tiếp oat về -

ali, : so sánh dữ liệu trực tiếp với A và nhảy nếu không rel bằng

Si tư „ #data, an “nh dữ liệu tứ thời với A và nhảy nếu không rei bằng

Trang Z0

Trang 32

LÊN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

CINE Rn, đảng, (3,2) :so sánh dữ liệu tức thời với Rn và nhầy nếu không rel bằng

CINE @Ri, #data, rel (3,2) : so sánh dữ liệu tức thời với dữ liệu gián tiếp và nhảy nếu

không bằng

DINZ Rn,rel (2,2): giảm thanh ghi Rn và nhảy nếu không bằng

DJNZ data,rel (3,2) : gidm dữ liệu trực tiếp và nhẩy nếu không bằng

2.2.7 HOẠT ĐỘNG CỦA BỘ ĐỊNH THỜI:

2.2.7.1 Giới thiệu:

Một định nghĩa đơn giản của tứmer là một thanh ghỉ có khả năng tự động tăng giá trị lên

1 sau mỗi xung nhịp, Ngõ ra của tầng cuối cùng làm xung nhịp cho flip-flop báo tràn của

timer (flip-flop c&) Gié trị nhị phân trong các flip-flop của tmer có thể xem như số đếm

xố xung nhịp (hoặc các sự kiện) từ khi khởi động timer Ví dụ, timer 16 bit sẽ đếm lên từ OOOOH đến FEFIH Cờ báo tran sẽ lên | khi số đếm tràn từ FFFFH đến 0000H

MCSSI 6 hai Umer J6 bil, mdi Umer c6 bon cách làm việc Người ta sit dung cdc timer

để

4 Đánh khoảng thời gián,

+ Hem sy kign

© Tạo tốc độ baud cho port nối tiếp

Trong các ứng dụng định khoảng thời gian, người ta lập trình timer ở một khoảng đều

đặn và đặt cờ tràn timer Cờ được dùng để đồng bộ hoá chương trình để thực hiện một tác động như kiểm tra trạng thái của các ngỡ vào hoặc gửi sự kiện ra các ngõ ra Các ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của tímer để đo thời gian trôi qua

giữa hai sự kiện (ví dụ :đo độ rộng xung)

Đếm sự kiện dùng để xác định số lẳn xây ra của một sự kiện Một “sự kiện” là bất cứ

tác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của MCS5I các tủmer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếp

Truy xuất cá timer của 8051 / 8951 dùng sáu thanh ghỉ chức năng đặc biệt cho trong

bảng sau:

SFR Mục đích Địa chỉ | Địa chỉ hoá

TMOD | Chế độ timer 89H | Không TL0 Byte thấp của imer0 |8AH | Không TLI Byte thấp của timerl |8BH | Không

THO Byte cao cua timer 0 8CH Không

THI Byte cao củatimerl |8DH | không

2.2.1.2 Thanh ghi chế độ timer (TMOD): _

Thanh ghi TMODE chứa hai nhóm 4 bit ding để đặt chế độ làm việc cho timer 0 và

timer 1

sằễ———”

Trang ZI

Trang 33

LOAN VAN TOT NGHIEP GVHD: NGUYEN THANH HAI

7 |GATE |1 Bit (mở) cổng, khi lên 1, timer chỉ chạy khi INT1 ở mức cao

6 |CT 1 Bit chon ché độ counter/ timer

1= bộ đếm sự kiện

0= bộ định khoảng thời gian

5 |MI 1 Bit 1 của chế độ (mode)

4 |M0 1 Bit 0 cia ché độ

00: chế 46 0: timer 13 bit 01: chế độ 1: timer 16 bi

10: chế độ 2: tự động nạp lại 8 bit

|3 | GATE | 0 Bit (md) cong

j2 jor Jo Bit chon counter/ timer

li |MI 0 Bit] cia cl

0 [Mo |0 | BiL0 của c¡

Hinh 2.10 Tám tắt thanh ghi TMOD

2.2.7.3 Thanh ghi điều khién timer (TCON):

Thanh ghỉ TCON chứa các bịt điều khiển cho Timer 0 và Timer 1

TCON.7 | TF1 8FH Cỡ báo tran timer 1 Đặt bởi phần cứng khi tràn,

được xoá bởi phần mềm hoặc phần cứng khi bộ xử

lý chỉ đến chương trình phục vụ ngắt

TCON.6 | TRI 8EH Bit diéu khién timer 1 chạy Đặt / xoá bằng phần

mềm dé cho timer chạy / ngưng

TCON.S | TFO 8DH Cờ báo tràn tỉimer 0

TCON.4 | TRO 8CH | Bit diéu khién timer 0 chay

TCON.3 | IE1 8BH Cờ cạnh ngắt 1 bên ngoài Đặt bởi phần cứng khi

phát hiện một cạnh xuống ở INTI; xoá bằng phần mmhoặc bằng phần cứng khi CPU chỉ đến chương trình phục vụ ngắt

TCON.1 | E0 89H Cờ cạnh ngắt 0 bên ngoài

TCON.0 | ITO 88H Cờ kiểu ngắt 0 bên ngoài

Hình 2.11 Tóm tắt thanh ghỉ TCON

2.2.7.4 Các chế độ timer:

a Chế độ 0 — chế độ timer 13 bít :

- Để tương thích với 8048, 8080 (có trước 8031)

~3 bit cao của TLx (TL0 và/ hoặc 'TL1) không dùng

Trang 2Z

Trang 34

LÊN VĂN TỐT NGHIỆP GVHD: NGUYÊN THANH Hải!

- Hoạt động như timer 16 bịt đây đủ

- C6 bdo tran 1a bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm

- MSB của giá tị trong thanh ghỉ timer là bit 7 của THx và LSB là bit 0 của TLx Các

thanh ghi timer (TLx / THx) có thể được đọc hoặc ghi bất cứ lúc nào bằng phần mềm

‘TEx hoạt đồng như một timer # bit, trong khi đó THx vẫn giữ nguyên giá trị được nạp

Khi xế đem trần từ FEH đến 00H, không những cờ tỉmer được set mà giá trị trong THx

đồng thời được nạp vào TLx, việc đếm tiếp tục tử giá trị này lên đến FFH xuống 00H và

nap lạt v.v Chế độ này rất thông dụng vi suf wan timer xảy ra trong những khoảng thời

gian nhất định và tuần hoàn một khi đã khải động TMOD và TH+

d Chế độ 3 — chế độ tách timer: -

~ Timer 0 tách thành hai timer 8 bit (TLO và TH0),TL0 có cờ báo tràn là TFO va THO c6

cờ báo trần là TF1

~ Timer 1 ngưng ở chế độ 3, nhưng có thể được khởi động bằng cách chuyển sang chế độ

khác Giới hạn duy nhất là cờ báo tràn TF1 không còn bị tác động khi timer 1 bị tràn vì nó

đã được nối tới TH0

- Khi timer 0 ở chế độ 3, có thể cho timer 1 chạy và ngưng bằng cách chuyển nó ra

ngoài và vào chế độ 3 Nó vẫn có thể sử dụng bởi port nối tiếp như tạo tốc độ baud hoặc

nó có thể được sử dụng bằng bất cứ cách nào không cần ngắt (vì nó không còn được nối

với với TF1)

Cờ báo tràn

Trang 23

Trang 35

LOAN VAN TOT NGHIỆP GVHD: NGUYEN THANH HAI

Íp có thể có, được chọn bằng cách ghi vào bi

timer) trong thanh ghỉ TMOD khi khởi động timer Một nguồn tạo xung nhịp dùng cho

định thời gian, cái khác cho đếm sự kiện, :

Hình 2.12 Ngudn tạo xung nhịp

+ Định khoảng thời gian (Interval Timing):

Nếu € /T = 0, hoạt động tỉmer liền tục được chọn và tímer được dùng cho việc định

khoảng thời gian Lúc đó, timer lấy xung nhịp từ bộ dao động trên chip Bộ chia12 được

thêm vào để giảm tần số xung nhịp đến giá trị thích hợp cho phần lớn các ứng dụng Như

vậy, thạch anh 12 MHz sé cho tốc độ xung nhịp timer 1 MHz Báo trần timer xảy ra sau

một số (cố định) xung nhịp, phụ thuộc vào g4 trị ban đầu được nạp vào các thanh ghi

timer TLx / THx

1% Đếm sự kiện (Event Counting):

Nếu C/T = 1, tỉmer lấy xung nhịp từ nguồn bên ngoài Trong hầu hết các ứng dụng,

nguồn bên ngoài này cung cấp cho timer một xung khi xẩy ra một “sự kiện” — timer dùng,

đếm sự kiện Số sự kiện được xác định bằng phẩn mềm bằng cách đọc các thanh ghỉ TLx

/THx vi gid tri 16 bit trong các thanh ghi này tăng thêm 1 cho mỗi sự kiện

Nguồn xung nhịp ngoài có từ thay đổi chức năng các chân Port 3 Bit 4 của port 3 (P3.4)

dùng làm ngõ vào tạo xung nhịp bên ngoài cho timer 0 và được gọi là “ TO” Và P3.5 hay

“T1” là ngõ vào tạo xung nhịp cho timer 1

“Trong các ứng dụng bộ đếm, các thanh ghi timer được tang thêm 1 tương ứng chuyển từ

1 xuống 0 ở ngõ vào bên ngoài: Tx Ngõ vào bên ngoài được lấy mẫu trong S5P2 của mọi

chu kỳ máy Như vậy, khi ngõ vào cao trong một chu kỳ và thấp trong một chu kỳ kế thì

số đếm được tăng thêm 1 Giá trị mới xuất hiện trong các thanh ghi S3P1 của chu kỳ theo sau chu kỳ trong đó phát hiện sự chuyển tiếp Do đó, mất 2 chu kỳ máy (2 is) để ghi nhận

một sự chuyển 1 sang 0, tần số ngoài tối đa là 500KHZ (giả sử hoạt động ở 12 MHz)

2.2.7.6 Bắt đầu, dừng và điều khiển các timer :

Phương pháp đơn giản nhất để bắt đầu (cho chạy) và dừng các timer là dùng các bit điều khiển chạy: TRx trong TCON TRx bị xoá sau khi reset hệ thống, Như vậy, các timer theo mặc nhiên là bị cấm (bị dừng) TRx được đặt lên 1 bằng phân mềm để cho các timer

chạy

i

Trang Z4

Trang 36

túẬN VĂN TỐT NGHIỆP đi VHD: NGUYEN THANH HAI

TRxỊ

Hình 2.13 Cho chạy và dừng các timer

Vì TRx ở trong thanh ghi TCON có địa chỉ bit, nên dễ dàng cho việc điều khiển các timer trong chương trình Ví dụ, cho timer 0 chạy bằng lệnh:

SETB TRO

và dừng bằng lệnh :

CLR TRO

Trình biên dịch sẽ thực hiện việc chuyển đổi ký hiệu cần thiết từ “TRO” sang địa chỉ bit

đúng SHTH "TRO chính xác giống như SETB 8CH,

Một phương pháp khác để điều khiển các timer là dùng bit GATE trong TMOD và ngõ

vầu bên ngoài TNTX, Đật GATE =1 cho phép timer sẽ được điều khiển bằng INTx Việc này hữu dụng cho việc đo độ rộng xung như sau: Giả sử INT0 ở mức thấp nhưng các xung

ở mức cao trong khoáng thới gian đo, Khởi động tỉmer 0 ở chế độ 2 (chế độ timer 16 bit), với TL0/TH0 = 000H, GATE = 1 và TRO = 1 khi INTO ở mức cao, tìmer được “mở cổng”

và được cấp xung nhịp 1 MH¿ (hoạt động ở tân số 12 MH2) Khi INT0 xuống thấp, timer

bị “đóng cổng" và thời khoảng của xung tính bằng ps là số đếm được trong TL0/TH0 (có thể lập trình INT0 để tạo ra một ngất khí nó xuống thấp)

Hình sau minh họa timer 1 hoạt động ở chế độ 1 như một timer 16 bit Các thanh ghi

tỉmer TL1/TH1 và cờ báo tràn TF] trong so đổ chỉ các khả năng có thể có của nguồn tạo

xung nhịp và để cho chạy, dừng và điểu khiển timer

Trang 37

2.2.7.7 Khởi động và truy xuất các thanh ghi timer:

Thông thường các thanh ghi được khởi động một lần ở đầu chương trình để đặt chế độ

làm việc đúng Sau đó, trong thân chương trình, céc timer được cho chạy, dừng, các bit cờ

được kiểm tra và xoá, các thanh ghỉ timer duge doc va cập nhật, v.v theo đòi hỏi của các

khi bịt điểu khiển chay TRỊ được đát lên 1

Nếu cẩn số đếm ban đầu, các thanh ghi tìmer TLI / THỊ cũng phải được khởi động

Nhớ lại là các timer đếm lên và đát cỡ báo tràn khi có sự chuển tiếp FFFFH sang 0000H

Một khoáng T00 s có thể được định thøi bằng cách khởi động giá trị cho TL1 / THỊ là

FESCH

MOV TL1,#9CH MOV THỊ, #0FFH

Rồi timer được cho chạy bằng cách đặt bít điều khiển chạy như sau:

CLR TRI CLR TFI

* Đọc timer đang chạy: Trong một số ứng dung cân đọc giá trị trong các thanh ghỉ timer đang chạy vu phải đọc

hai thanh ghi timer, “sai pha” có thể xảy ra nếu byte thấp tràn vào byte cao giữa hai lần

đọc Giá trị có thể đọc được không đúng Giải pháp là đọc byte cao trước, kế đó đọc byte

thấp rồi đọc byte cao lại mộ lần nữa Nếu byte cao đã thay đổi thì lập lại các hoạt động

đọc Các lệnh dưới đây đọc nội dung thanh ghỉ timer TL1 / THỊ vào thanh ghỉ R6 / R7: AGAIN: MOV A,THI

MOV R6,TLI

CINZ A,THI,AGAIN MOV R7,A

2.2.7.8 Các khoảng ngắn và các khoảng dài: - -

Dãy sức khoáng tồi gian có thể định thời là bao nhiêu ? Vấn để này được khảo sát

với 8051 / 8951 hoạt động với tần số 12 MHz Như vậy xung nhịp của các timer có tần số

Khoảng thời gian ngắn nhất có thể bị giới hạn không chỉ bởi tần số xung nhịp của tỉmer mà còn bởi phần mềm Do ảnh hưởng của thời gian thực hiện một lệnh, lệnh ngắn

nhất của 8051 / 8951 là 1 chu kỳ máy hay 1 Hs Sau đây là bảng tóm tất các kỹ thuật để

tạo những khoảng thời gian có chiều dài khác nhau (với giả sử xung nhịp cho 8051 / 8951

Trang 38

LúẬN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

Một ngất là sự xảy ra một điểu kiện ~ một sự kiện - mà nó gây ra treo tạm thời

chương trình trong khi điểu kiện đó được phục vụ bởi một chương trình khác

Các ngất đóng vai trò quan trọng trong thiết kế và cài đặt các ứng dụng vi điều khiển

Chúng cho phép hệ thống đáp ứng bất đồng bộ với một sự kiện và giải quyết sự kiện đó

trong khí thột chương trình khác đang thực thi

Mot hé thong được điều khiển báng ngất cho ảo giác là làm nhiều việc đồng thời Dĩ

nhiền CPU mỗi lẩn không thể thực thí hơn 1 lệnh Nhưng nó có thể tạm thời treo việc thực

thỉ một chương trình để thực thí một chương trình khác, rồi quay về chương trình thứ nhất

'Theo cách này, nó giống như một chương trình con, nhưng có sự khác biệt nhưng cố sự khác biệt trong hệ thống được điều khiển bằng ngắt là sự ngắt quãng không xảy ra như

kết quả của một lệnh (lệnh CALL subroutine), mà là đáp ứng với một “sự kiện” xẩy ra

bất đồng bộ với chương trình chính Người ta không biết khi nào và ở đâu chương trình chính sẽ bị ngắt quãng

Chương trình giải quyết ngắt được gọi là chương trình phục vụ ngắt (ISR: Interrupt

Service Routine) hoặc bộ xử lý ngắt ISR thực thi khi đáp ứng ngắt và thông thường thực

hiện tác vụ nhập hay xuất với một thiết bị Khi ngắt xảy ra, chươnh trình chính tạm thời bị treo và rẻ nhánh đến ISR: ISR thực thí và kết thúc bằng lệnh trở về từ ngắt, chương trình

chính tiếp tục thực thi ở chỗ mà nó tạm dừng Thường người ta xem chương trình chính như

thực thì ở mức nên (cơ sở) (base - level) va cdc ISR thy thi ở mức ngắt (interrupt — level)

Người ta cũng dùng các thuật ngữ foreground chỉ mức nên và background chỉ mức ngắt

Hình ảnh của các ngắt được mô tả trong hình sau:

Trang 39

LúệN VĂN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

2.2.8.2 Tổ chức ngắt của MCSSI;

Có 5 nguồn ngắt ở MCS5I : 2 ngắt nụ

các ngắt theo mặc nhiên đều bị cấm sa

bằng phần mềm

Khi có hai hoặc nhiều ngất đồng thời, hoặc một ngất xảy ra trong khi một ngất khác

đang được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đổ ưu tiên hai mức dùng để thực

hiện các ngất Việc hỏi vòng tuần tự thì cố định nhưng ưu tiên ngắt thì có thể lập trình

được

a, Cho phép và cấm các ngắt: :

Mỗi nguồn ngất được cho phép hoặc cấm từng ngắt một qua thanh ghi chức năng đặc

biệt có dinh dia chi bit JE (Interrupt Bnable: cho phép ngắt) ở địa chỉ A8H Cũng như các

bịt cho phép riêng biệt cho mỗi nguồn ngắt, có một bit cho phép/ cấm toàn bộ được xoá để

goài, 2 ngất từ timer và 1 ngắt port nối tiếp Tất cả 1u khi reset hệ thống và được cho phép từng cái một

cấm tất cá các ngất hoặc được đát lên 1 để cho phép tất cầ các ngắt

[b2 |EA AFH Cho phép/ cấm toàn bộ,

IE6 |- AEH Không được định nghĩa

IE5S |ET2 | ADH Cho phép ngắt từ timer 2 (8052)

IE4 |ES ACH Cho phép ngắt port nối tiếp

IE3 |ETI | ABH Cho phép ngắt từ tímer 1

IE2 |BEXI |AAH Cho phép ngắt ngoài

IEI |ET0 |A9H | Cho phép ngất từ timer 0

IE0 |Exo |A8H Cho phép ngắt ngoài 0

Hình 2.17 Tóm tắt thanh ghỉ IE

Hai bịt phẩi được đặt lên 1 để cho phép bất kỳ ngất nào: bit cho phép riêng và bit cho

phép toàn bộ Ví dụ các ngắt từ timer 1 được cho phép như sau:

SETB ETI ; cho phép ngắt từ timer 1

SETB EA ; đặt bit cho phép toàn bộ

Cũng có thể sử dụng lệnh sau:

Mặc dù hai cách này có cùng hiệu quả sau khi reset hệ thống, nhưng hiệu quả sẽ khác

nhau nếu IE được ghỉ ở giữa chương tình Cách thứ nhất không ảnh hưởng đến 5 bit khác

trong thanh ghi IB, trái lại cách thứ hai sẽ xoá các bit khác Nên khởi trị IE theo cách thứ

hai ở đầu chương trình (nghĩa là sau khi mở máy hoặc reset hệ thống), nhưng cho phép và

cấm các ngắt ngay trong chương trình nên dùng cách thứ nhất để tránh ảnh hưởng đến các

bịt khác trong thanh ghỉ IB

Mỗi ao được lập trình riêng vào một trong hai mức ưu tiên qua thanh ghỉ chức

P iority: ưu tiên ngắt) ở địa chỉ B8H

= bi ee bạ reset hệ thống để (mặc nhiên) tất cả các ngắt ở mức ưu tiên thấp hơn

Ý tưởng “ưu tiên” cho phép một ISR sẽ bị ngắt bởi một ngắt nếu ngắt có độ ưu tiên cao

hơn ngất đang phục vụ Điều này thì rõ ràng trên 8051./ 8951, vì chỉ có hai mức ưu tiên

Nếu một ISR có ưu tiên thấp đang thực thi khi một ngắt có ưu tiên cao xảy ra đồng thời thì

ngất có độ ưu tiên cao hơn sẽ được phục VỤ trước

Trang Z8

Trang 40

LUẬN VẬN TỐT NGHIỆP GVHD: NGUYEN THANH HẢI

Chương trình chính thực thi ở mức nền và khơng liên hệ với bất cứ ngắt nào, cĩ thể luơn

luơn bị ngắt quãng bất chấp ưu tiên của ngắt Nếu hai ngắt cĩ độ ưu tiên khác nhau xảy ra

đồng thời thì ngắt nào cĩ độ ưu tiên cao hơn sẽ được phục vụ trước

Bit_| Ky higu_| Dia chi bit | Mơ tả (1= mức cao hơn, 0= mức thấp hơn)

IP.7 | - - khơng được định nghĩa

IP6 |- - khơng được định nghĩa

IP.5 | PT2 BDH tu tiên cho ngắt từ timer 2 (8052)

1P.4 | Ps BCH ưu tiên cho ngắt port nối tiếp

1P.3 | PTI BBH ưu tiên cho ngắt từ timer 1

|IP2 |pxi BAH ưu tiên cho ngắt ngồi

|P.1 | PTO BOH ưu tiên cho ngắt từ timer 0

‘ipo | Pxo BAH ưu tiên cho ngắt ngồi 0

Hinh 2.1% Tám tất thanh ghi IP

© Nĩi vịng tuần tự :

Nếu hai ngất cùng độ ưu tiên xảy ra đĩng thời, sự hồi vịng tuần tự sẽ xác định cái nào

được phục vụ trước tiên Hỏi vịng tuần tự là bên ngội 0, timer 0, bên ngồi 1, timer 1,

port nối tiếp và timer 2

Hình sau minh hoạ 5 nguồn ngắt, cơ chế riềng biệt và tồn bộ, hồi vịng tuần tự và các mức ưu tiên Trạng thái của tất cả các nguồn ngất khả dụng qua các bit cờ tương ứng trong

các SER Dĩ nhiên, nếu cĩ bất kỳ ngất nào bị cấm, ngất khơng xây ra nhưng phần mềm

vẫn cĩ thể kiểm ta cờ ngắt Các ví dụ timer và port nối tiếp trong các mục trước đã sử dụng các cờ ngắt một cách mở rộng mà thật sự khơng dùng ngất

Trang 29

Ngày đăng: 19/11/2024, 11:52

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

TÀI LIỆU LIÊN QUAN

w