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 dung vi Điều khiển at89c51

95 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 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 95
Dung lượng 8,96 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 ghỉ lệnh của 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 địa

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 VA THI CONG MO HINH DIEU KHIEN PIN MAT TRO! DUNG VI DIEU KHIEN AT89C51

GVHD: NGUYEN THANH HAI SVTH: PHAM HUY THANG

TRAN VAN DU’

1364

TP Hồ Chí Minh, tháng 3/2003

Trang 2

beni

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

Se

LUAN VAN TOT NGHIEP

ĐỀ TÀI:

THIẾT KẾ & THỊ CÔNG

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

GVHD : NGUYEN THANH BAI

TP.HO CHi MINH

Thang 03 nam 2003

ákL 001501

Trang 3

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

TRƯỜNG ĐẠI HỌC SPKT Độc Lập - Tự Do - Hạnh Phúc

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

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

Họ và tên: PHAM HUY THẮNG MSSV : 98101254

4.334

1 Đầ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 VDK AT89CS1

2, Cúc xô liệu bàn đầu : 7

la, các hveug di Aumen moet, dred Ụ 4 ale ab

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

Cán bộ hướng dẫn ký tên Thông qua bộ môn

ye

Ngày tháng năm 2003

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ọ vi đ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í

Tiệ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 báo giờ cạn, Hơn nữa, ở những vùng sâu, vùng xa, vùng núi, nơi hái đáo, những

nơi mà lưới đi đến được thì Pin mặt trời là giải pháp khả thi nhất để cấp

điện I lục để đại ra TÀ làm sao dé thu được nắng lượng bức xạ của mát trời lớn

huge \ Việt nây, 1a 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: Pút này xoày theo sự dị chuyển của mắt trời

Để tim hiểu về vì điển khiển và tì 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:

PUAN H: Khảo vắt vị điểu khiển AT 89C51, các vi mạch giao tiếp ngoại vi

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

AT ROCSI

Chường nì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

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

Nhom thực hiện để tài xin chân thành cẩm ơn Thấy Nguyễn Thanh Hải, các Thấy

Cô trong Khoa Điện - Điện TẾ và bạn hệ đã giúp đỡ và tạo điều kiện để hoán thành tốt

để tài tốt nghiệp hãy,

Sinh viên thực hiện PHẠM HUY THẮNG TRẤN VĂN DƯ

Trang 6

NHAN XET CUA ĐIÁO VIÊN HƯỚNG ĐẪN

ĐHSPKT,Ngày tháng năm 2003

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

Trang 7

NHAN XET CUA GIAO VIEN PHAN BIEN

DHSPKT, Ngay tháng năm 2003

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

Trang 8

NHẬN XÉT CỦA HỘI ĐỒNG CHẤM LUẬN VĂN

ĐHSPKT,Ngày tháng năm 2003

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

Trang 9

MỤC LỤC PHẦN I: CƠ

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

PHAN Hi: TINH TOAN THIET KẾ MÔ INH

CHUONG IV : TINH TOAN VA THIET KE MACH DIEU KHIEN PIN MAT TRỜI

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 INT1

5.1.3 Lưu Đồ 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 Luu Để Chương Trình Phím Tăng

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

5.1.7 Luu Dé Chương Trình Phím Thoát

5.1.8 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àm Đồ Chương Trình Giải Mã Nhị Phân

5.1.12 Liêu Đồ Chương Trình Hiển Thị Led 7 Đoạn

6.1.1 Khối Vì Điều khiển

6.1.2 Khor then Thi

6.1.3 Khối Giáo 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 Lam Mo Hình Điều Khiển Pin Mặt Trời

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

Trang 11

PHẦN I:

CƠ SỞ LÝ THUYẾT

Trang 12

LGN VAN TOT NGHIEP ne GVHD: NGUYEN THANH Hal NE HT

CHƯƠNG [ : CIỚI THỊ ru

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 đặ1)rư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ọ đã sử dụng Pin mặt trời để lấy điện Tuy nhiên người ta chỉ 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: Công Mô Hình Điều Khiến Pin Mật Trời Dùng VĐK AT89CS1®

® Thoa mội đẳng hồ thần gián thực

Cài đại thời pán thực để điều khiển động cơ,

© CAL pian cho ting noi, ting vùng khác nhau,

© Neimp dong eo trong Khong thoi gian không hoạt động của Pín

© CO chen chink te Moi NEU có sự sai lệch

12 GIỚI THIỆU HỆ THÔNG PIN MẶT TRỜI:

1.2.1 Hệ thông nàng lượng Pìn mặt trời:

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

Hé thong 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

“Tấm 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

cho tải tiêu thụ

Tải 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 và hệ 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 mặt 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 ứn, tuang đ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 trờ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 tích trữ điện Ban 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

Trang 13

————

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à boà điện Pin mặt trời chung vào lưới điện, cách thứ hai là dùng bộ tích trữ điện bằng Acquy

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

rưng của nguồn bức xạ mặt trị

ồn bức xạ mặt ườ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 xakhông ở vị trí cố định, chúng di

chuyển theo một quy luật Do đó ta can 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 dé 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

chạy theo chu trình cuả tự nhiền đó là chủ 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 này được sự trợ é thong điện với phần chính

là đầng VÐK AR9CSI

13 PHƯƠNG HƯỚNG GIÁI QUYẾT:

Một hệ thông VDK có được đó là nhờ sự kết hợp chặt chẽ giữa phẩn mềm và phan cứng, Phi m thé hen tính nâng đã năng của hệ thống Khi chương trình phần mềm

được thiết lập thì hệ thông sẽ hoàn toàn tự động,

uy nhiên những phần giao tiếp với các ‘9

thiét by Khde thi phan mém khong dam abdn dige, Do đó cẩn có sự trợ giúp của phần

cứng, Chính vi 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 'j 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 VDK AT R9CST như sau:

Chupng tinh déng hồ thực

ài đặt thời gian thực

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

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

ự2*„ Khối khống chế

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

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

Trang 14

LUGN VAN TOT NGHIỆP — ——~ GVHD: NGUYÊN THANH Hải!

CHƯƠNG H: HỘ VI ĐIỀU KHIỂN 4CSð1

21 GIỚI THIỆU HỌ MCSSI:

MCS5I là một họ IC vi điều khiển ( microcontroller) 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 :

Interupt Others 128bytes

Control! | registers RAM 8K-8052 | —T9 CPU Timer

Trang 15

LUẬN VĂN TỐT NGHIỆP $$$ GVHD: NGUYEN THANH Hải! — ằ- ~-

~ 64 K byte không gian bộ nhớ dữ liệu mở rộng

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

-_ Bộ nhân /chia 4 us

Nhìn sơ đổ khối ta thấy một bộ VXL và các thiết bị tối thiểu cần thiết để có thể lập trình

điều khiển

2.2 VIDIEU KHIEN AT 89C51:

2.2.1 CAU TRUC PHAN CUNG:

Ho MCSS1 là một vi mạch có 40 chân mỗi chân có mỗi chức năng đặt biệt khác nhau

“Trong đó có 24 chân có công dụng kép, mỗi đường có thể hoạt động như một đường xuất

nhập hoặc một đường điề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'TR9CSI:

PÙ7-AD7 P10-T2 POB-ADB P11-T2EH POS-ADS P12 POd-ADA

42 Í pa2iMT0 49 43) p3g.inti P37-RD

Trang 16

LUẬN VĂN TỐT NGHIỆP GVHD: NGUYỄN TH/INH Hải!

2.2.1.3 Port 2:

Port là một port có công dụng kép trên các chin 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

Port 3 là một pon có công dụng kếp trên các chân 10 ~ ]7 Mỗi chân của port này vừa

cổ chức nãng trao đốt dí hện vừa có chức năng đặc biệt như ở bằng sau :

Pro RAD | Dữ liệu nhân cho por nối tiếp |

Pa PND | Dir isu phat cho port noi tiếp |

Pu Ty | ö vào của timer/counter 0

Đụ Ty) Í Ngõ vào của timer/counter 1

Pio WR Xung ghỉ bộ nhớ dữ liệu ngoài

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

PSEN: (Program Store Enable)

N 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 ghỉ lệnh của 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 thanh 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 lần tần số dao động trên chịp và có thể được dùng làm xung nhịp cho các phẩn 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 loai có ROM nội

——-ễễ

Trang 5

Trang 17

LUAN VAN TOT NGHIỆP —— cama 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 trình thỉ hành từ bộ nhớ mở rộng Khi dù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 dùng chân EA làm chân cấp điện áp V, khi lập trình cho ROM bên

trong,

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 tín hiệu này được đưa lên mức cao (trong ít 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.2.1.9 Cúc ngõ vào bộ dao động trên chíp :

Như đã thầy trong hình trên, MCSS1 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 ̧ và 19 Các tụ giữa cũng cần thiết như đã vẽ.Tần số thạch

anh thong 1a 1? Mhy

2.2.1.10 Cite chan ngudn :

R05/RO%T vận hành với nguân đọa + SV Vụ, được nối vào chân 4) vá V„ được nối vào

chan 20

2.2.2 TỔ CHỨC HỘ NHỚ:

MCSSI có bộ nhớ theo câu wae Harvard: có những vùng nhớ riêng biết cho chương

i chung trình và dữ liệu có thể ở bền trong, dù vậy chủng có thể được nuổ 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ớ dữ liệu

Bộ nhờ bên trong bào gồm ROM nội và RAM wén chip, RAM trén chịp 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 thành ghí chức năng đặc biệt

FF

chọn chọn qua qua PSEN WR va

Trang 18

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

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

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

trực tiếp giống như các địa chỉ bộ nhớ khác

* Ngăn 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ý khác

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

Như ta đã thấy trên hình sau, RAM bên trong MCS51 được phân chia giữa các bank thanh ghi (00H - 1FH), RAM địa chỉ hoá từng bit (20H - 2FH), RAM da dung (30H - 7FH)

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

[es [rs [rs [ro [mi [ro |e

bọ | D7 [D6 [Ds [b4 [D3 [b2 |- [D2 | PSW

[eo [ace

+ | | 99 | Khong dude địa chỉ hod theo bit SBUF

ap [ac] 98 | 9F |9E |9D |9C |9B |9A ]99 198 | SCON

sa [2p [2c 90 | 97 [96 [95 [94 [93 [92 [91 [90 | Pr

25 | 24

1D [1C 3D | Không được địa chỉ hoá theo bit THỊ

15 J14 8C | Không được địa chỉ hoá theo bit THO 0D | 0C 8B | Không được địa chỉ hod theo bit TLI

05 | 04 8A | Không được địa chi hod theo bit TLO Bank 3 39 | Không được địa chỉ hoá theo bit TMOD

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

10

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

Trang 19

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

2.2.2.1 Ram da dung:

Mặc dù trên hình cho thấy 80 byte Ram đa dụng 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

đích khác)

Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp Ví du, để đọc nội dung ô nhớ ở địa chỉ 5FH của RAM nội vào thanh ghỉ tích lũy, lệnh sau sẽ được dùng:

MOV A,5FH

Lệnh này di chuyển 1 byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (SEH) Đí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 R1 Ví dụ, hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn trên:

MOV RO, #5FII

dùng dia chi grin nép dé dh chuyén dit héu “dude tỏ bd; RO" vao thanh ghi tích lũy

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

MCSAI chữa 210 bít được địa chỉ hoa, trong đó có 12 bịt là ở các địa chỉ byte 20H đến

2EH, và phần còn lại là trong thanh gì chức nâng đặc biệt,

Ý tường truy xuất từng bú riêng rễ bằng phần mềm là một đặc tính tiện lợi của vi dié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 ví

Xử lý đồi hỏi một chuồi lệnh đọc + sữa/- ghỉ để đạt được hiệu quả tương tự Hơn nữa các port VO cing dude dia chi hea ting bit Lam đơn giản phần mềm xuất nhập từng bit

Có L2N bít được địa chỉ hoá đa dụng ở các byte 20H đến 2FH Các địa chỉ 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,

ORL Aj#10000000B ;setMSB

MOV 2CH,A ; phỉ lại cả byte

2.2.2.3 Các bank thanh ghi:

32 byte thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi Bộ lệnh của 8051/

8031 hổ trợ 8 thanh ghi (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

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 &

Trang 20

LOGN VAN TOT NGHIỆP GVHD: NGUYEN THANH HA

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 NĂNG ĐẶC BIỆT:

Các thanh ghỉ trong MCS51 được định dạng như một phần của RAM trén chip.Vi vay mỗi thanh ghi sẽ có một địa chỉ (ngoại trừ thanh ghi đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào RAM trên chịp) Cũng như R0 dến R7 có 21 thanh phí chức năng đặc biệt (SFR: Special

Function Rigister) ở vùng trên của RAM nội, từ địa chỉ 01 đến FI:H Chú ý rằng hầu hết

128 địa chỉ từ ROH đến EEH không được định nghĩa Chỉ có 21 địa chỉ SER là được định nghĩa

Ngoại trừ thành phí tích lũy A có thể truy xuất ngẫm như đã nói, đa số các SFR được

truy xuất dùng địa chí tafe hep Chú ý tầng một vái SER có thể được địa chỉ hoá bịt hoặc

byte, Người tiết kế phẩu thận trong khi ruy xuất bắt và byte, Ví dụ lệnh sau:

Từ trạng thai chường trình (PSW : Program Startus Word) ở địa chỉ DOH chifa cdc bit

trạng thai nh’ bing tom tắt sau:

PSW.4 D4H _ | Bit1 chọn bank thanh ghỉ

PSW.3 D3H | Bit0 chọn bank thanh ghỉ

: địa chỉ 08h — 0Fh

10 = bank 2 : địa chỉ 10h 17h

11 =bank 3 : địa chỉ 18h ~ 1Fh PSW.2 | OV D2H | Cðờtrần

PSW.I | - DIH |Dựưữ

PSW.0|P D0H — | Cờ parity chấn

* Cờ nhớ:

Cờ nhớ (CY) có công dụng kép Thông thường nó được dùng cho các lệnh toán học: nó

sẽ được set nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ

Ví dụ, nếu thanh ghi tích lũy chứa FEH, thì lệnh sau:

ADD A, #1

Trang 9

Trang 21

LúỆN VĂN TỐT NGHIỆP GVHD: NGUYỄN THANH HẢI

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

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

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

Cỡ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người dùng

Cae bit chon bank thanh ghi (RSO và RSI) xác định bank thanh ghi được tích cực Chúng được xoá sau khi reset hệ thống và được thay đổi bằng phẫn mềm nếu cần Ví dụ, ba lệnh

wi cho phep bank thank ghi 3 và dĩ chuyển nội dung của thanh ghỉ R7 (địa chỉ byte IEH)

thành phì tích lũy

SIPH RSI

SETH RSO

MOV AR?

Khi chuô0ng tình được họp dịch, các địa chỉ bít đúng được thay thế cho các ký hiệu “RS1”

và “R80”, Vậy lệnh SETB RSI sé gidng nhu lénh SETB OD4H

* Cỡ tràn:

Cờ trăn (V3 đượ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 bit 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 đấu được cộng, bit

OV co thé được bỏ qua Các kết quả lớn hơn +127 hoặc nhỏ hơn — 128 sẽ set bịt OV Ví

dụ, phép công sau bị trần và bit OV được set:

TF 127 8E 142

Kết quả là một số có đấu 8EH được xem như ~116, không là kết quả đúng(142), vì vậy bit

OV được set

2.2.3.2 Thanh ghi B:

Thanh ghỉ B ở địa chỉ F0H được dùng cùng với thanh ghi tích lãy A cho các phép toán nhân và chia Lệnh MUL AB sẽ nhân các giá trị không dấu 8 bit trong A và B rồi trả về kết quả 16 bịt trong A (byte thấp) và B (byte cao) Lénh DIV AB sẽ chia A cho B rồi kết quả nguyên trong A và phân dư trong B Thanh ghi B cũng có thể xem như thanh ghi đệm

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

Để 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

— 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 chỉp là TTH Sỡ đĩ dùng giá trị SFH 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 ghi 1(c6 thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm ngăn xếp

Ngăn xếp được truy xuất trực tiếp bằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc đượ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, RETI) để cất và lấy lại bộ đếm chương trình

Lệnh đầu tiên dùng địa chỉ tức thời để tải dữ liệu 55H vào thanh ghi tich lũy Lệnh thứ

hai cũng dùng địa chỉ tức thời, lần này để tải dữ liệu 16 bịt ]000H vào con trở dữ liệu Lệnh thứ ba dong dia chi pian tiếp để dị chuyển dữ liệu trong A (55H) đến RAM ngoài ở địa chỉ được chứa trong, DETR (LOOK)

Các lệnh trên dùng dấu chấm để xác định một bit trong một byte Trình hợp dịch sẽ thi

hành sự chuyển đổi cần thiết, vì vậy hai lệnh sau đây là như nhau:

CLR PI.7

CLR 97H

Trong một ví dụ khác, xem giao tiếp đến một thiết bị với một bit trạng thái gọi là BUSY,

được set khi thiết bị đang bận và được xoá khi thiết bị đã sẵn sàng Nếu BUSY được nối

tới P1.5, vòng lặp sau sẽ được dùng để chờ thiết bị trổ lại trạng thái sẵn sàng:

WAIT: JP P1.5,WAIT

Lệnh này có nghĩa là “nếu bit P1.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:

MCS51 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 ở địa chỉ 8AH (TL0: byte thấp) và 8CH (THO: byte cao) Timer 1 6 dja chi 8BH (TLI: byte thấp) và 8DH (THI: byte cao) Việc vận hành timer đượ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 17

Trang 23

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

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

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

i qua thanh ghi diéu khiển port nối tiếp (SCON) (được địa chỉ hoá từng bit) ở địa chỉ 2.2.3.8 Thanh ghi điều khiển ngắt:

MCS51 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ẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt (IE) ở địa chỉ A8H Cả hai thanh ghi đượ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

SMOD Bắt gấp đội tốc độ baud, nếu được set thì sẽ táng tốc độ

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

Go Bit cd da dung 0

pp Giảm công suất, được set để kích hoạt mode gidm cong

suất, chỉ thoát khi reset

IDL Mode chờ, set để kích hoat mode chờ, chỉ thoát khi có |

2.2.4 BỘ NHỚ NGOÀ

MCS5I 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 dùng bộ nhớ ngoài, port 0 không còn là một port ƯO thuần túy nữa Nó được hợp kênh giữa bus địa chỉ (A0 — A7) và bus dữ liệu (D0 - D7) 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ỉ

Trong nữa đầu của mỗi chu 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 IC chốt 74HC373 (hoặc tương đương) sẽ giữ byte địa chỉ

thấp trong phần còn lại của chu 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:

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

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

Trang 1Z

Trang 24

LOAN VAN TOT NGHIEP GVHD: NGQYEN THANH HAI

Hình 3.5 Giao tiếp giữa 8051/8951 va EPROM

Một ehú kỳ máy của RÔS] / R9ŠI có 12 chu khy xung nhịp Nếu bộ dao động trên chip

được lài bi một thạch anh 13 MH¿ tủ một chủ kỳ máy kéo dai lps Trong mot chu ky máy, xế có hài xung ALE và hài Bụte được đọc từ bộ nhớ chương trình (nếu lệnh hiện hành

lÀ lệnh hài byte thi byte thứ hát được loại bỏ), Giản đồ thời gian của một lắn lấy lệnh được

Port 2 PCH (byte cao của bộ đếm chương trình) PCH

Trang 25

LưẬN V/šN TỐT NGHIỆP GVHD: NGUYEN THANH HAI

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

Hình 2 * Grae tiép gitta 8081 / 8951 va RAM

Bộ nhớ dữ liệu ngoài là mật bệ nhấ RAM duye cho phép ghi / doc bang cdc tin higu WR

va RD Cede chan 24.6 va PA? thay déi chức năng), Chỉ có một cách truy xuất bộ nhớ dữ Hiệu ngoài là với lệnh MOVN dùng con trổ dữ liệu (DPTR) 16 bít hoặc R0 và RI xem như than phi dja chỉ

| s | se sa | s« | ss | so | s1 | se | 59 | s | ss so |

ALE

Hinh 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 như EPROM và

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

Trang 14

Trang 26

Ldn VAN TOT NGHIEP GVHD: NGUYEN THANH HAl

Giản đồ thời gian cho lénh ghi (MOVX @DPTR, A) ciing twong 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à đữ 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à dữ 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 cho phép một IC RAM được đùng làm bộ nhớ chương trình và dữ liệu:

WR

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

và thí hành (hàng cách túy xuất nó như bộ nhớ chương trình)

MCSSI được rexet 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

a

|C1

70 uF chan reset @)

Ne

ZS GND"

Trang 27

LÊN VĂN TỐT NGHIỆP

GVHD: NGUYEN THANK HAI

là thanh ghí đếm chương trình, nó được đặt tại

OOOOH Kin RST trổ lại mức thấp, việc thì hành chương trình luôn bắt đầu ở địa chỉ địa đầu tiên trong bộ nhĩ chương trình: địa chỉ 00001 Nội dung của RAM trên chip khong bi thay

đổi bởi lệnh Reset

[ Mãlenh [n|n[n]

Địa chỉ thanh ghỉ

Ngoài ra, một số thanh ghi đặc biệt như là thanh ghi tích lũy, con trỏ dữ liệu, cũng

được xác định trong các lệnh nên không cân các bit địa chỉ Trong các lệnh này thanh ghi

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

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

2.2.5.2 Địa chỉ trực tiếp:

Trong chế độ này, các thanh ghi bén trong MCS51 được đánh địa chỉ trực tiếp bằng 8 bit

địa chỉ nằm trong byte thứ hai của mã lệnh

Địa chỉ trực tiếp

Dù vậy, trình hợp địch cho phép gọi tên các thanh ghỉ chức năng đặc biệt (có địa chỉ trực tiếp từ 80H đến FEH) Vi du, PO cho port 0, TMOD cho thanh ghi chế độ tỉmer, 2.2.5.3 Dia chi gián tiếp:

R0 và R1 được dùng để chứa địa chỉ ô nhớ mà lệnh tác động đến Người ta qui ước dùng dấu @ trước R0 hoặc RI

ng CÁC thành phì tệ

Trang 28

LUGN VAN TỐT NGHIỆP —_—_—_— GVHD: NGUYEN THANH Hal

ee 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 Trình hợp dịch sẽ tự động tính toán và thay

thế dữ liệu trực tiếp vào mã lệnh

Dữ liệu tức tời

Địa chỉ tức thời

2.2.5.5 Địa chỉ tươ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 ghỉ đế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 phi PC sẽ tăng đến giá trị theo sau lệnh nhầy

rồ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à

địa chỉ tướng đối so với lệnh kê tiếp chứ không phải bản thin lệnh nhảy Thường lệnh này

có liên quan đến nhân được đình nghĩa trước,

[ Milệnh | [ OeLiương đối |

Dia chi tomy doi

2.2.5.6 Din chỉ tuyệt đổi:

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

để tê nhành vào miột trang 2 Kbate của bộ nhớ chương trình bằng cách cấp 11 bịt địa chỉ

thấp (A0 = AI) để xác định địa chi dich tong trang mã Còn 5 bịt cao của địa chi đích

(ATL ~ ADS) chink là 5 bắt cao hiện hành trong thanh ghỉ đếm chương trình Vì vậy, địa chỉ

của lệnh theo xau 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 Khyte (eó vùng 5 bút địa chỉ cao),

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

Al0 _ |Mã lệnh [[_ Ofsettương đối ]

Địa chỉ tuyệt đối

2.2.5.7 Địa chỉ dài:

Địa chỉ dài dùng cho lệnh LCALL và LJIMP 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ệ

thuộc vào vị trí vùng nhớ

Mã lệnh ]- LL_ Al5-As i ƒ AT- A0

Địa chỉ đài

2.2.5.8 Địa chỉ tham chiếu:

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

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

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

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

SKL 004364

Trang 17

Trang 29

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

Ro ¡ Thanh phì R0 đến R7 của bank thanh ghí được chọn

Data: 8 bit dia chi ving dif ligu bén trong, Nó có thể là vùng RAM dữ liệu trong

(0-127) hoặc các thanh ghi chức năng đặc biệt

40 § hà văng RAM đữ liệu rong (0 — 255) được đánh địa chỉ gián tiếp qua

thank phi RO hoa KL data hàng R bút chứa tràng cầu lệnh

Wdata 16 - hàng 16 bít chữa trong vầu lệnh

Adhlr l6 ¡16 bút địa chỉ địch được dùng trong cầu lệnh ACALL va LIMP

Adir TT: ¿11 bú địa chỉ địch được dùng trong vu lệnh ACALL và AJMP

Rel Đyte Ñ bịt có dầu được dùng trong lệnh SIUMP và những lệnh nhãy có diéu

ADD A, @Ri - (1 byte, 1 chu 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 kỳ 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 kỳ máy): cộng trực tiếp byte dữ liệu và cờ nhớ vào A ADDC A, @Ri (1 byte, 1 chu kỳ máy): cộng gián tiếp nội dung RAM và cờ nhớ vào A

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

SUBB A,Rn (1 byte, 1 chu kỳ máy): trừ nội dung thanh ghi A cho nội dung thanh ghi

Rn và cờ nhớ

SUBB A,data (2 byte, 1 chu kỳ máy): trừ trựctiếp A cho một số và cờ nhớ

SUBB A, @Ri (1 byte, 1 chu kỳ máy): trừ gián tiếp A cho một số và cờ nhớ

SUBB A, #data (2 byte, 1 chu kỳ máy): trừ nội dung thanh ghỉ A cho một

cờ nhớ

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

INC Rn (2byte, 1 chu kỳ máy): tăng nội đung thanh ghỉ Rn lên 1

INC data (2 byte, 1 chu ky máy): tăng dữ liệu trực tí ấp lên 1

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

DEC A (1 byte, 1 chu kỳ máy): giảm nội dung thanh ghỉ A xuống 1

íc thời và

Trang 18

Trang 30

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

DEC Rn (1 byte, 1 chủ kỳ máy): giảm nội dung thanh ghỉ Rn xuống 1

DEC data (2byte, 1 chu kỳ máy): giảm dữ liệu trực tiếp xuống 1

DEC @Ri (1 byte, 1 chủ kỳ máy): giảm gián tiếp nội dung vùng RAM xuống 1

INC DPTR (1 byte, 2 chu ky may): tang con tré di liệu lên 1

MUL AB (1 byte, 4 chu kỳ máy): nhân nội dung thanh ghỉ A với nội dung thanh ghi B

DIV AB (1 byte,4 chu kỳ máy): chia nội dung thanh ghi A cho nội dung thanh ghi B

DA AB (1 byte, 1 chu ky máy): hiệu chỉnh thập phân thanh ghi A

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

ANL A, Rn (1 byte, 1 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 dung thanh A với dữ liệ trực tiếp

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

ANL A, #data (2.1): AND nội dụng thanh ghỉ A với dữ liệu tức thời

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

ANH, dat, Wdata (3,33: AND một dữ liệu trực tiếp với một dữ liệu tức thời

ANL, 13,2) AND cỡ nhữ với mộ bịt trực tiếp,

ANH, ©, /bi (2.2) AND cỡ nhữ với hù của một bịt trực tiếp,

ORI, A, 6Rí (1,1) OR thành ghí A với một dữ liệu gián tiếp

ORL A, flat (2,1) OR thành phí À với một dữ liệu tức thời

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

ORL data, Hata C13) : OR mật dữ liệu trực tiếp với một dữ liệu tức thời

ORL €,biL(2,2) : OR cờ nhớ với một bịt trực tiếp

ORL C,/b (2,33: OÑ cờ nhớ với bù của một bít trực tiếp

XRL A, Rn (1.1): NOR thanh ghỉ A với thanh ghi Rn

XRL A, data 2,1): NOR thanh ghi A v6i m6t dữ liệu trực tiếp

XRL A, @Ri (1,1): XOR thanh ghỉ 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

RLC A (1,1) : quay trái nội dung thanh ghi A qua cờ nhớ

RR A (1,1): quay phải nội dung thanh ghi A

RRC A (1,1) : quay phải nội dung thanh ghi A qua cờ nhớ

SWAP A (1,1): quay trái nội dung thanh ghi A 1 nibble (1/2 byte)

2.2.6.3 Nhóm lệnh chuyển dữ liệu:

MOV A, Rn (1,1) : chuyển nội dung thanh ghi Rn vào thanh ghí A

MOY A, data (2,1) : chuyển dữ liệu trựic tiếp vào thanh ghỉ A

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

Trang 31

LũẬN VĂN TỐT NGHIỆP GVHD: NGOYEN THANH HAI TN HT

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

MOV Ra, A (1,1) : chuyển nội dung thanh ghi A vao thanh ghi Rn

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

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

MOV data, A (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 ghỉ Rn vào một dữ 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 đữ 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 phí a vào một dữ liệu gián t

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 #datx16 (3,2) : chuyển một hằng 16 bịt vào thanh ghỉ con trỏ dữ liệu,

MOV CC, bịt (3,1): chuyến một bịt trực tiếp vào cờ nhớ,

MOV bit, C (3,21 chuyển cờ nhớ vào một bịt trực tiếp,

MOVC A ADE TR (1,2) chuyến bytc bộ nhớ chương trình có địa chỉ ®A+IDPTR vào A

MOVC A, 0A + PC (1,31 chuyển byte bộ nhớ chương trình có địa chỉ ®A+PC vào A

MOVN À, 0Á (122) chuyển dữ liệu ngoài (R bát địa chỉ ) vào thanh ghỉ A

MOVX A, 00DPER (1/23 chuyển dữ liệu ngoài (16 bịt địa chỉ ) vào thanh ghỉ A

MOVN 66Ñ, À (1,2) chuyển nội dụng thành ghí A ra dữ liệu ngoa¡(8 bịt địa chỉ),

MOVN 6DITER, A (1,2) : chuyển nội dụng thanh ghi A ra dữ liệu ngoài (16 bít đi

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

PÓP datu (2,3) - lìy dữ Hiệu trực tiếp ra khỏi ngăn xếp và giải

NCH A, Ra 31,11: rao đổi dữ liệu giữa thanh ghỉ Rn và thanh ghỉ A

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

XCH_ A, @Ñ¡ (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 ghi A và LSN của dữ

liệu gián tiếp

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

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

LCALL addr16 (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

RETI (1,2) : trở về từ lệnh gọi ngất

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

LIMP addrl6 (3,2): nhảy dài

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

JMP @A+DPTR (1,2) : nhảy gián tiếp từ con trổ dữ liệu

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

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

Jc rel (2,2) : nhay néu cd nhé duge dat

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

JB bit, rel (3,2) : nhảy tương đối nếu bit trực tiếp được đặt

JNB bit,rel (3,2): nhảy tương đối nếu bit trực tiếp không được đặt

JBC bit,rel (3,2): nhảy tương đối nếu bit trực tiếp được đặt, rồi xoá

CINE A, data, (3,2): so sánh dữ liệu trực tiếp với A và nhầy nếu

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

Trang 32

CINE Ra, #data, (3,2) :so sánh dữ liệu tức thời véi Rn va nhay 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): giảm 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 timer là một thanh ghi 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 [lip-Ilop của timcr có thể xem như số đếm

số xung nhịp (hoặc các sự kiện) từ khi khởi động imer, Ví dụ, timer 16 bit sẽ đếm lên từ 0000H 1 Cờ bảo trần sẽ lên 1 khi số đếm tràn từ FFI'H đến 0000H

MCSS1 66 hai timer 16 bit, mdi tiuer có bốn cách làm việc, Người ta sử dụng các timer dé:

4 Định khoảng thời gian

#4 Đền xử kiện

34L Tạo tác dd band che port nds nep

‘Tromp các (ng dụng định khoảng thối giản, người ta lap tinh timer & mot khoang déu dan va dated tin timer Cờ dược dùng để đồng bộ hoá chương trình để thực hiện một tác

động như kiểm tra tang 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 cla timer để đo thời gian trôi qua

giữa hai sự kiến (vì đụ xo độ rộng xung),

Đếm sự kiến đà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 nẹ š cung cấp một chuyển trạng thái trên một chân của MCS5I các timer cing & 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 ghi chức năng đác biệt cho trong

2.2.7.2 Thanh ghi chế độ timer (TMOD): -

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

Trang 21

Trang 33

LOGIN VĂN TỐT NGHIỆP GVHD: NGOYEN THANH HAI

Bit | Tén Timer Mô tả

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

6 jor fi Bit chon ché a6 counter/ timer

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

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

5 |MI 1 Bit 1 cla ché độ (mode)

4 |M0 1 Bịt 0 của chế độ

00: chế độ 0: timer 13 bit

01: chế độ 1: timer 16 bi 10: chế độ 2: tự động nạp lại 8 bit 11: chế độ 3; tách timer

3 |GATE |0 Bit unở) cổng

2 Jer fo Bit chon counter/ timer

1 [MI 0 Bit Letia ché dd

Hình 3.10 Tóm tắt thanh ghi TMOD,

2.2.7.3 Thành phí điểu khiển timer (ECON):

ảnh phí CON chứa các bú điều khiển cho Timer 0 và Tímer I

Wit ky nu | Địa chỉ | Mô tả

đượ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 §EH Bit điều khiển timer 1 chạy Đặt / xoá bằng phần

mềm để cho timer chạy / ngưng

TCON.5 | TF0 8DH | Cờ báo tràn timer 0

TCON.4 | TRO §CH | Bitđiều khiển timer 0 chạy

TCON.3 | IEI 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 ở TNTI; xoá bằng phần mêmhoặc bằng phần cứng khi CPU chỉ đến chương

TCON.1 | IEO 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 bit :

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

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

Trang 22

Trang 34

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

~ Hoạt động như timer 16 bit đầy đủ

~ Cờ báo tràn là bit TFx trong TCON có thể đọc hoặc ghi bằng phần mềm

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

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

TH hoạt động nhữ một net 8 bít, trong khi đó TH vẫn giữ nguyên giá trị được nạp

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

nạp lại VV Chế độ này rất thông dụng vì sự trần tImer xảy ra trong những khoảng thời

giản nhất định và tuần hoàn mật khí đã khỏi động 'TMOD và TH

d Che dg 3 - ché dg tach timer:

- ‘Timer 0 tich thanh hai timer 8 bit (TLO va THO),TLO 6 c& bdo tran la TFO va THO c6

cờ báo win 1 TFL

~ 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 tỉmer 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 TF])

THO TFL

Cờ báo tràn

Trang 23

Trang 35

LGN VEN TOT NGHIEP GVHD: NGOYEN THANH HA

2.2.7.5 Nguôn tạo xung nhịp:

Có hai nguồn tạo xung nhịp có thể có, được chọn bằng cách ghỉ vào bit C/T (counter/ timer) trong thanh ghi TMOD khi khổi động tỉmer 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 3.12 Nguồn tạo xung nhịp

4 Định khoảng thời gian (Đnterval Tuuinp):

Nếu € /P « Ú, hoại đồng tiếc hiến tục được chọn và timer được dụng cho

định Khoảng thời puín Lúc đồ, tuyệt lây xung nhịp từ bộ dao động trên chịp, Bộ chía12 đượ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 13 MNN¿ xế cho tốc độ xung nhịp tỉmer 1 MHZ Báo tran timer xdy ra sau

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

timer TA /THN

+ Đềm sự kiện (Event Counting):

Neu C/T = 1, timer ly xung nhip ti nguồn bên ngoài Trong hau hết các ứng dụng, nguồn bên ngoài này cung cấp cho tỉimer 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 ghi TLx

/†Hx vì giá trị 16 bit trong các thanh ghỉ 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 Bít 4 của port 3 (P3.4) dùng làm ngõ vào tạo xung nhịp bên ngoài cho tỉmer 0 và được gọi là “ T0” 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 ghỉ timer được tăng 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 ns) để 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 MH?) 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 tỉimer 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

Trang 36

LOAN VAN TOT NGHIEP GVHD: NGQYEN THANH HAI

Hinh 2.13 Cho chay va ditng cdc timer

Vi TRx 6 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 tỉmer 0 chạy bằng lệnh:

Môi phương pháp khác để điều khiển các timer Ja ding bit GATE tron

vio ben ngoat INTY Dat GATE =

này hữu dụng cho việc đo dd ong xi

TMOD và ngõ

ng [NTx Việc

Ở mf€ cao trong Khoảng thời pian Khới động timer 0 ở chế đồ 2 (chế er 16 hit), vdi TLO/PHO = OOOH, GATE = Lva TRO = 1, kin INTO G mie ¢ mở cổng"

VÀ được cấp xung nhịp MĂN thoạt động ở tấn số 12 MH¿), Khi [T0 x

bị "đong cống” và thời khoảng của xung tinh bang ps ta số,

cho phép timer sẽ được điều khiển

thể lập tình IÄTU để tạo rà một ngặt Khi nó xuống thấp),

Minh su minh hoa timer 1 hoạt động ở chế độ 1 như

timer TLI/THT va cd bao tran TEL trong sơ đổ chỉ các khả năng ©

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

Trang 37

LOGIN VĂN TỐT NGHIỆP ——===—————— GVHD: NGUYEN THANH HAI

——

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 bịt cờ được kiểm tra và xoá, các thanh ghi timer được đọc và cập nhật, v.v theo đòi hồi của các ứng dụng

TMOD là thanh ghi thứ nhất được khởi động vì nó đặt chế độ hoạt động Ví dụ, các lệnh sau khởi động timer 1 như timer 16 bit (chế độ 1) có xung nhịp từ bộ dao động trên chip cho việc định khoảng thời gian:

MOV TMOD, #00010000B

Lệnh này sẽ đặt MI = 0 và M0 = 1 cho chế độ 1, C/T = 0 và GATE = 0 cho xung nhịp nội và xoá các bit chế độ timer 0 Dĩ nhiên, timer thật sự không bắt đầu định thời cho đến khi bịt điều khiển chay TRI được đặt lên 1,

Nếu cần số đếm ban đầu, các thanh ghí thner THỊ / THỊ cũng phải được khối động Nhớ lại là các Hmet đếm lên và đặt cờ báo trần khi có sự chuổn tiếp FFFFFH sang 0000H Một khoảng 100 je có thể được định thời bằng cách khởi động giá trị cho TLI / THỊ là FE9CH

MOV "TEL, HOCH

MOV THỊ, ,ÓEEH

Rồi thiet được chủ chạy bằng cách đặt bít điểu khiển chạy như sau

LTB TRÍ

Cỡ bảo tràn được tự động đật lên 1 sau 100 ws Phẩn mềm có thể đợi trong 100 ps bing

cách dùng lệnh rẻ nhành có điều Kiện nhảy đến chính nó trong khi cờ báo tràn chưa được đặt lên Ì

WALK JNB TFL, WAIT

Khi timer tin, eiin ditng timer va xoá cờ báo tràn trong phan mém:

CLR TRI

CLR TFL

* Doe timer dang cl

“Trong một số ứng dụng cần đọc giá trị trong các thanh ghi timer đang chạy Vì 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 đưới đây đọc nội dung thanh ghi tỉmer TL1 / THỊ vào thanh ghi R6 / R7:

AGAIN: MOV A,THI

MOV R6,TLI

CINZ A, THI, AGAIN MOV R7,A

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

Dãy các khoảng thờ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ố

là 1 MHz

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 timer mà còn bởi phan 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 us 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: NGUYỄN THANH Hi!

Hình 2.15 Các kỹ thuật để lập trình các khoảng thời gian (Fosc = 12 MHz)

2.2.8 HOAT BONG NGAT (INTERRUP'

22.81 Giới thiệu:

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 vat 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 khi một chương Hình khác đang thực thi

Một hệ thông được điển 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ợ treo việc thực

thí một chường tì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 trang 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 hộ với chương minh chính, Người ta không biết khi nào và ở đầu chương trình chinh sẽ bị ngắt quảng,

Chung 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: 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 1SR: ISR thực thi 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 thi ở mức nên (cơ sở) (base - level) và các ISR thực 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

LIÊN VĂN TỐT NGHIỆP GVHD: NGUYÊN TH/INH Hỏi!

2.2.8.2 Tổ chức ngắt của MCSS1:

Có 5 nguồn ngất ở MCS5I : 2 ngắt ngoài, 2 ngắt từ timer và 1 ngắt port nối tiếp Tất cả các ngắt theo mặc nhiên đều bị cấm sau khi reset hệ thống và được cho phép từng cái một 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ó định địa chỉ bit IE (Intetrupt Enable: 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 bít cho phép/ cấm toàn bộ được xoá để

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

Bu [ky men | Dy chi de | Mat C= cho p

Wo J ba ADH | Cho phep/ cdi toan bd

He Abi Không được định nghĩa |

t5 |EE2 ADH Cho phép ngất từ timer 2 (8052),

H4 {UY ACH Cho phép ngắt port nối tiếp

Wes PRET JABH Cho phép ngắt từ timer 1 |

Wed PENG | AAH Cho phép ngắt ngoài |

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à bít cho

phép toàn bộ Ví du cdc ngat tir timer 1 được cho phép như sau:

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

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

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

MOV IE,#10001000B

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 ghi ở giữa chương trình Cách thứ nhất không ảnh hưởng đến 5 bit khác trong thanh ghi IE, 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 bit khác trong thanh ghỉ IE

b Ưù tiên ngất:

Mỗi nguồn ngắt được lập trình riêng vào một trong hai mức ưu tiên qua thanh ghỉ chức năng đặc biệt được địa chỉ bit IP (Interrupt Priority: ưu tiên ngắt) ở địa chỉ B8H,

TP bị xoá sau khi 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ó tru 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

LOAN VAN TOT NGHIỆP GVHD: NGGYEN THANH Hal

Bịt | Ký hiệu | Địa chỉ bit | Mô tả (1= mức cao hơn, 0= mức thấp hơn)

TP.6 |- i không được định nghĩa

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

IP.4 |PS BCH ưu tiên cho ngắt port nối tiếp

IP.3 | PTI BBH tu tiên cho ngất ty timer 1

IP.2 | PXI BAH ưu tiên cho ngất ngoài

IP.I | PTO BOH uu tién cho ngất từ timer 0

IP.0 |PXo BSH ưu tiên cho ngất ngoài 0

Hình 2 18 Tóm tắt thanh ghi IP

e Hỏi vòng tuần tụ

Nếu hài ngất cũng độ thì tiền váy rả đồng thời, sự hỏi vòng tuần tự sẽ xác định cái nào được phục vụ tết tiến, Hồi vàng tuần tự là bên ngoài 0, timer 0, bền ngoài 1, timer 1,

porl nổi tiếp và timer 2

Hình sau mình họa S nguồn ngất

nave my tiên, Trang thái của tất cá c¡

tự chế riêng biệt và toán bộ, hỏi vòng tuân tự và các

nguồn ngắt khả dụng qua các bịt cờ tương ứng trong

vỏ bắt Kỳ ngắt nào bị cấm, ngắt không xảy ra nhưng phân mềm

4 Các ví dụ timer và port nối tiếp trong các mục trước đã sử

tich 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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w