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

ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN

101 779 2
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

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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ngày nay với sự phát triển của công nghiệp vi điện tử, kỹ thuật số các hệ thống điều khiển dần dần được tự động hóa. Với kỹ thuật tiên tiến vi xử lý, vi mạch số….được ứng dụng vào lĩnh vực điều khiển tự động với chương trình thiết lập trước thay thế cho các hệ thống điều khiển cơ khí thô sơ, tốc độ xử lý chậm, ít chính xác. Hiện nay, hầu hết các quy trình sản xuất hàng tiêu dùng quy trình sấy đóng vai trò quan trọng quyết định đến chất lượng sản phẩm. Do đó, việc đo được nhiệt độ, độ ẩm và khống chế các yếu tố này theo đúng yêu cầu mong muốn là điều hết sức quan trọng và cần thiết. Để kiểm soát được nhiệt độ, độ ẩm trong buồng sấy, dùng vi điều khiển 8051 để tự động hoá quá trình là phương pháp tiện lợi, giá thành thích hợp cho những ứng dụng rộng rãi. Được sự đồng ý của Khoa Điện Trường Đại học Bách khoa Đà Nẵng, em tiến hành thực hiện đề tài “Dùng vi điều khiển để đo nhiệt độ, độ ẩm và khống chế độ ẩm trong phòng kớn”.

Trang 1

Hiện nay, hầu hết cỏc quy trỡnh sản xuất hàng tiờu dựng quỏ trỡnh sấy đóngvai trũ quan trọng quyết định đến chất lượng sản phẩm Do đó, việc đo được nhiệt

độ, độ ẩm và khống chế các yếu tố này theo đúng yêu cầu mong muốn là điều hếtsức quan trọng và cần thiết

Để kiểm soát được nhiệt độ, độ ẩm trong buồng sấy, dùng vi điều khiển 8051

để tự động hoá quá trỡnh là phương pháp tiện lợi, giỏ thành thớch hợp cho nhữngứng dụng rộng rói Được sự đồng ý của Khoa Điện - Trường Đại học Bách khoa Đà

Nẵng, em tiến hành thực hiện đề tài “Dùng vi điều khiển để đo nhiệt độ, độ ẩm và

khống chế độ ẩm trong phũng kớn”

II Giới hạn đề tài:

- Đo nhiệt độ và độ ẩm phũng kớn, khống chế độ ẩm trong phũng theo một

giỏ trị đặt trước

- Tính toán hệ số khối lượng hơi nước trong không khí trong phạm vi hoạtđộng của thiết bị đo theo tiêu chuẩn của hơi nước bóo hoà theo nhiệt độ và hiển thịthông số này khi giá trị độ ẩm được thiết lập

III Mục đích nghiên cứu:

Trang 2

Trong các thiết bị điện và điện tử dân dụng, các bộ vi điều khiển, điều khiểnhoạt động của ti vi, máy giặt, đầu đọc laser, điện thọai, lò vi-ba… Trong hệ thốngsản xuất tự động, bộ vi điều khiển được sử dụng trong Robot, dây chuyền tự động.Các hệ thống càng “thông minh” thì vai trò của hệ vi điều khiển càng quan trọng.

II.LịCH Sử PHáT TRIểN CủA CáC Bộ VI ĐIềU KHIểN:

Bộ vi điều khiển được phát triển từ bộ vi xử lí, từ những năm 70 của thế kỷ

XX, do sự phát triển và hoàn thiện về công nghệ vi điện tử dựa trên kỹ thuật MOS(Metal-Oxide-Semiconductor), mức độ tích hợp của các linh kiện bán dẫn trongmột chip ngày càng cao

Năm 1971 xuất hiện bộ vi xử lí 4 bit loại TMS1000 do công ty texasInstruments vừa là nơi phát minh vừa là nhà sản xuất Nhìn tổng thể thì bộ vi xử líchỉ có chứa trên một chip những chức năng cần thiết để xử lí chương trình theo mộttrình tự, còn tất cả bộ phận phụ trợ khác cần thiết như: bộ nhớ dữ liệu, bộ nhớchương trình, bộ chuyển đổi AID, khối điều khiển, khối hiển thị, điều khiển máy in,khối đồng hồ và lịch là những linh kiện nằm ở bên ngoài được nối vào bộ vi xử lí.Đến năm 1976 Công ty INTEL (Interlligen-Electronics) mới cho ra đời bộ viđiều khiển đơn chip đầu tiên trên thế giới với tên gọi 8048, là chip đầu tiên của họ

vi điều khiển MCS 48 Bên cạnh bộ xử lí trung tâm 8048 còn chứa bộ nhớ dữ liệu,

bộ nhớ chương trình, bộ đếm và phát thời gian các cổng vào và ra Digital trên mộtchip

Các công ty khác cũng lần lược cho ra đời các bộ vi điều khiển 8 bit tương tựnhư 8048 và hình thành họ vi điều khiển MCS-48 (Microcontroller-sustem-48).Đến năm 1980 Công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiểnđơn chip với tên gọi 8051

Bộ vi điều khiển đầu tiên của Tập đoàn SIEMENS cung cấp chip SAB 8051,một cải tiến của 8051 có 6 Port xuất/nhập 8 bit, đặc biệt có một bộ biến đổi AD 8bit với 8 kênh ngõ vào

Ngoài ra còn có các công ty khác cũng có những họ vi điều khiển riêng như:

Họ 68HCOS của công ty Motorola

GVHD: ThS Lâm Tăng Đức Trang:- 2 - SVTH: Võ Ngọc Tuyến

Trang 3

Họ pic cuả công ty Microchip

IC vi điều khiển 8051/8031 thuộc họ MCS51 có các đặt điểm sau :

- 4KB ROM (được lập trình bởi nhà sản xuất chỉ có ở 8051)

- 128 byte RAM

- 4port I/0 8 bit

- Hai bộ định thời 16 bit

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

- 64KB không gian bộ nhớ chương trình mở rộng

- 64 KB không gian bộ nhớ dữ liệu mở rộng

- Bộ xử lý Bit (thao tác trên các bit riêng lẻ)

- 210 bit được địa chỉ hóa

ROM 0K:

8031\8032 4K:8951 8K:8052

Trang 4

Hình 2.1 : Sơ Đồ Khối 8051 / 8031

Phần chính của vi điều khiển 8051 / 8031 là bộ xử lí trung tâm (CPU: central processing unit ) bao gồm :

- Thanh ghi tích lũy A

- Thanh ghi tích lũy phụ B, dùng cho phép nhân và phép chia

- Đơn vị logic học (ALU : Arithmetic Logical Unit )

- Từ trạng thái chương trình (PSW : Prorgam Status Word)

- Bốn băng thanh ghi

Hai bộ định thời 16 bit hoạt động như một bộ đếm

Các cổng (port0, port1, port2, port3 ) Sử dụng vào mục đích điều khiển

ở cổng 3 có thêm các đường dẫn điều khiển dùng để trao đổi với một bộ nhớbên ngoài, hoặc để đầu nối giao diện nối tiếp, cũng như các đường ngắt dẫn bênngoài

Giao diện nối tiếp có chứa một bộ truyền và một bộ nhận không đồng bộ, làmviệc độc lập với nhau Tốc độ truyền qua cổng nối tiếp có thể đặt trong vảy rộng vàđược ấn định bằng một bộ định thời

Trong vi điều khiển 8051 / 8031 có hai thành phần quan trọng khác đó là bộnhớ và các thanh ghi :

Bộ nhớ gồm có bộ nhớ Ram và bộ nhớ Rom (chỉ có ở 8031) dùng để lưu trữ

dữ liệu và mã lệnh

Các thanh ghi sử dụng để lưu trữ thông tin trong quá trình xử lí Khi CPU làmviệc nó làm thay đổi nội dung của các thanh ghi

2./ Chức năng các chân vi điều khiển :

a.port0 : là port có 2 chức năng (các chân từ 32 đến 39) trên 8051 trong các

thiết kế cỡ nhỏ dùng làm điện tụ xuất/nhập Đối với các thiết kế cỡ lớn (với bộ nhớ

mở rộng) port0 trở thành bus địa chỉ và bus dữ liệu đa hợp

b.port1 : port1 là một port I/O (các chân 1 đến 8) trên 8051 Các chân được ký

hiệu P1.0, P1.1,…., P1.7 có thể dùng cho các thiết bị ngoài nếu cần Port1 không cóchức năng khác, vì vậy chúng ta chỉ được dùng trong giao tiếp với các thiết bịngoài

GVHD: ThS Lâm Tăng Đức Trang:- 4 - SVTH: Võ Ngọc Tuyến

Trang 5

c.port2 : port2 là một port công dụng kép (các chân 21 đến 28) trên 8051 được

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

d.Port3 : port3 là một port công dụng kép (các chân 10 đến 17) Các chân

port3 có nhiều chức năng riêng (mỗi chân có chức năng riêng liên quan đến các đặctrưng cụ thể của 8051)

Bảng 2.1 : Chức năng của các chân trên port3

e PSEN (Program Store Enable ): 8051/8031 có 4 tín hiệu điều khiển bus

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ộtEPROM để cho phép đọc các bytes mã lệnh

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

f ALE (Address Latch Enable ) :

8051 sử dụng chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE để giải

đa hợp (Demultiplexing) bú dữ liệu và bus địa chỉ Khi Port0 sử dụng đa hợp phânALE xuất đến hiện chốt địa chỉ vào 1 thanh ghi ngoài hay nửa đầu chu kỳ bộ nhớ(Memory cycle) sau đó các thanh ghi bên ngoài trong nửa đầu của chu kỳ bộ nhớ.Sau đó, các chân port 0 dùng để xuất/nhập dữ liệu trong nửa sau chu kỳ của 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 chip và có thể được dùng là nguồn xung nhịp cho các hệ thống Nếu xung trên 8051 là 12MHzthì ALE có tần số 2MHz Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ

Trang 6

bị mất Chân ALE cũng được làm ngõ vào cho xung lập trình cho EPROM trong 8051.

h RST (Reset) :

Ngõ vào RST (chân 9) là ngõ reset của 8051 Khi tín hiệu này được đưa lênmức cao (trong ít nhất 2 chu kỳ máy), các thanh ghi trong 8051 được tải những giátrị thích hợp để khởi động hệ thống

i Các chân XTAL1 và XTA2 :

Như trong hình vẽ, 8051 có một bộ dao động trên chip Nó thường được nối với thạch anh giữa hai chân 18 và 19 Các tụ ổn định cũng cần thiết như đã vẽ Tần

số thạch anh thông thường là 12MHz

ALE EA\

RST

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

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

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

18

19

12 MHz

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

17 16 15 14 13 12 11 10

RD WR T1 T0 INT1 INT0 TXD RXD

8951

29 30 31 9

Trang 7

Hình 2.2: Sơ đồ chân 8051

3 Tổ chức bộ nhớ :

8051 / 8031 có cấu trúc theo bộ nhớ harvard :có những vùng cho bộ nhớ riêng biệt cho chương trình dữ liệu.Cả chương trình và dữ liệu có thể ở bên trong

8051,dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến

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

Bộ nhớ bên trong bao ROM(8051) và RAM trên chip,RAM trên chip bao gồm nhiều phần:các dãy thanh ghi(00H-1FH),phần lưu trữ địa chỉ hoá từng

bit(20H-2FH),phần lưu trữ đa dụng(30H-7FH) và các thanh ghi chức năng đặt biệt(80H-FFH)

MOV A, 5FH

Lệnh này di chuyển một byte dữ liệu bằng cách đánh địa chỉ trực tiếp để xácđịnh “địa chỉ nguồn”(5FH) Đích nhận dữ liệu được ngầm định trông mã lệnh làthanh ghi tích luỹ A

Trang 8

RAM bên trong cũng có thể được truy xuất bằng cách đánh địa chỉ gián tiếpqua RO hay R1 Ví dụ,hai lệnh sau thi hành cùng nhiệm vụ như lệnh trên :

MOV R0, #5FH

MOV A, @R0

Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0 vàlệnh thứ hai dùng địa chỉ trực tiếp để di chuyển dữ liệu “được trỏ bởi R0” vàothanh ghi tích luỹ

địa chỉ byte địa chỉ bit

7F

302F2E2D2C2B2A292827262524232221201F1817100F080700

R0-R7

Bảng tóm tắt bản đồ vùng nhớ trên chip data 8051

GVHD: ThS Lâm Tăng Đức Trang:- 8 - SVTH: Võ Ngọc Tuyến

Trang 9

địa chỉ byte địa chỉ bit

FF F0 E0 D0 B8 B0 A8 A0

99 98 90

8D 8C 8B 8A 89

TL1 TL0 TMOD

Không định địa chỉ bitKhông định địa chỉ bitKhông định địa chỉ bitKhông định địa chỉ bitKhông định địa chỉ bit

88 87

83 82 81

Không định địa chỉ bit PCON

DPH DPL SP

Không định địa chỉ bitKhông định địa chỉ bitKhông định địa chỉ bit

Trang 10

80 87 86 85 84 83 82 81 80 PO

Tĩm tắc bộ nhớ dữ liệu trên chip

b.RAM địa chỉ hố từng bit:

8051 / 8031 chứa 210 vị trí bit được địa chỉ hố,trong đĩ 128 bit là ở các byte20H đến 2FH,và phần cịn lại trong các thanh ghi chức năng đặc biệt.ý tưởng truyxuất từng bit từng bit riêng rẽ bằng phần mềm là một đặt tính của vi điều khiển nĩichung Các bit cĩ thể được đặt, xố, AND, OR bằng một lệnh đơn.Đa số các bộ vi

xử lí địi hỏi một chuổi lệnh đọc sửa ghi để nhận được cùng kết quả

Hơn nữa,các port I/O cũng được địa chỉ từng bit làm đơn giản phần mềm xuất nhậptừng bit

128 bit ở các byte 20H đến 2FH cĩ thể được truy xuất như các byte hay các bit phụthuộc vào lệnh được dùng, ví dụ để đặt bit 67H, ta dùng lệnh sau:

SETB 67H

Chú ý rằng “địa chỉ bit 67H” là bit cĩ trọng số lớn nhất (MSB) ở “địa chỉ byte2CH” lệnh trên sẽ khơng tác động đến các bit khác của địa chỉ này

c.Các dãy thanh ghi:

32 byte thấp của bộ nhớ nội là các dãy thah ghi Bộ nhớ lệnh của

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

và các thanh ghi này ở các địa chỉ 00H-07H Lệnh sau đây sẽ đọc nội dung ở đia chỉ 05H vào thanh ghi tích luỹ

MOV A,R5

ẹãy laứ leọnh moọt byte duứng ủũa chổ thanh ghi Taỏt nhiẽn, thao taựctửụng tửù coự theồ ủửụùc thi haứnh baống leọnh 2 byte duứng ủũa chổ trửùc tieỏpnaốm trong byte thửự hai:

MOV A,05H

Caực leọnh duứng caực thanh ghi R0 ủeỏn R7 thỡ seừ ngaộn vaứ nhanh hụncaực leọnh duứng ủũa chổ trửùc tieỏp Caực giaự trũ dửừ lieọu ủửụùc duứngthửụứng xuyẽn nẽn duứng moọt trong caực thanh ghi naứy

Bank thanh ghi tớch cửùc coự theồ chuyeồn ủoồi baống caựch thay ủoồicaực bit chón bank thanh ghi trong tửứ tráng thaựi chửụng trỡnh (PSW) Giaỷsửỷ raống bank thanh ghi 3 ủửụùc tớch cửùc, leọnh sau seừ ghi noọi dung cuỷathanh ghi tớch luừy vaứo ủũa chổ 18H:

MOV R0,A

Y tưởng dùng các dãy thanh ghi cho phép “chuỷê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 hanh ghi riêng rẽ khơng phụ thuộc vào các phần khác

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

GVHD: ThS Lâm Tăng Đức Trang:- 10 - SVTH: Võ Ngọc Tuyến

Trang 11

Các thanh ghi nội của 8051/8031 được truy xuất ngầm định bởi lệnh Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1 Tác động này được ngầm định trong mã lệnh.

Các thanh ghi trong 8051/8031 được định dạng như một phần của RAM trên chip Vì vậy một thanh ghi sẽ cĩ một địa chỉ (ngoại trừ thanh ghi trực tiếp, sẽ

khơng cĩ lợi khi đặt chúng vào trong RAM trên chip).Đĩ là lý do để 8051/8031 cĩ nhiều thanh ghi Cũng như R0 đến R7, cĩ 21 thanh ghi chức năng đặc biệt (SFR: Special Funtion Register) ở vùng trên của RAM nội, từ địa chỉ 80H đến FFH Chú

ý rằng hầu hết 128 địa chỉ từ 80H đến FFH khơng được định nghĩa Chỉ cĩ 21 địa chỉ SFR là được định nghĩa

Ngoái trửứ tớch luừy (A) coự theồ ủửụùc truy xuaỏt ngầm nhử ủaừ noựi,

ủa soỏ caực SFR ủửụùc truy xuaỏt duứng ủũa chổ trửùc tieỏp chuự yự raống moọtvaứi SFR coự theồ ủửụùc ủũa chổ hoựa bit hoaởc byte Ngửụứi thieỏt keỏ phaỷithaọn tróng khi truy xuaỏt bit vaứ byte Vớ dú leọnh sau:

SETB 0E0H

Seừ Set bit 0 trong thanh ghi tớch luừy, caực bit khaực khõng thay ủoồi Ta thaỏy raống E0H ủồng thụứi laứ ủũa chổ byte cuỷa thanh ghi tớch luừy vaứ laứ ủũa chổ bit coự tróng soỏ nhoỷ nhaỏt trong thanh ghi tớch luừy Vỡ leọnh SETB chổ taực ủoọng trẽn bit, nẽn chổ coự ủũa chổ bit laứ coự hieọu quaỷ

a Từ trạng thái chương trình PSW (Program Status Word):

D2HD1HD0H

Cờ nhớ

Cờ nhớ phụ

Cờ 0Chọn dãy thanh ghi (bit 1)Chọn dãy thanh ghi (bit 0)

00=bank 0;địa chỉ 00H-07H01=bank 1:địa chỉ 08H-0FH10=bank 2:địa chỉ 10H-17H11=bank 3:địa chỉ 18H-1FH

ADD A,#1

Sẽ trả về thanh ghi tích luỹ kết quả 00H và set cờ nhớ trong PSW

Trang 12

Cờ nhớ cũng cĩ thể xem như một thanh ghi 1 bit cho các lệnh thao tác trênbit Ví dụ, lệnh sẽ AND bit 25H với cờ nhớ CY và đặt kết quả trở vể cờ nhớ:

ANL C,25H

 Cờ nhớ phụ:

Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4 bit thấptrong khoảng 0AH đến 0FH Nừu các giá trj cộng được là số BCD, thì sau lệnhcộng cần cĩ DA A( hiệu chỉnh thập phân thanh ghi tích luỹ)để mang kết quả lớnhơn 9 trở về tầm từ 09

 Cờ 0

Cờ 0 (F0)là một bit đa dụng dùng cho các ứng dụng của người dùng

 Các bit chọn dãy thanh ghi

(RSO và RS1) dùng xác định dãy thanh ghi tích cực Chúng được xố sau khireset hệ thống và được thay đổi mức logic bằng phần mềm nếu cần Ví dụ, balệnh sau cho phép dãy thanh ghi 3 và di chuyển nội dung cuả thanh ghi R7 (địa chỉbyte 1FH) đến thanh ghi tích luỹ:

SETB RS1

SETB RSO

MOV A,R7

Khi 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 RS1 sẽ giơng như lệnh SETB 0D4H

 Cờ tràn

Cờ tràn (OV) được set sau phép tốn cộng hoặc trừ nếu cĩ xuất hiện một tràn

số học Khi các số cĩ dấu được cộng hoặc trừ với nhau, phần mềm cĩ thể kiểmtra bit này để xác định xem kết quả của nĩ co nằm trong tầm xác định khơng Khicác số khơng dấu khơng được cộng, bit OV cĩ thể được bỏ qua Các kết quả lớnhơn -127 hoặc nhỏ hơn +128 sẽ set cờ OV bằng 1

b Thanh ghi B:

Thanh ghi B ụỷ ủũa chổ F0H ủửụùc duứng chung vụựi thanh ghi A trong caựcpheựp toaựn nhãn vaứ chia Leọnh MUL AB seừ nhãn 2 giaự trũ khõng daỏu 8bit trong A vaứ B rồi traỷ về keỏt quỷa 16 bit trong A (byte thaỏp) vaứ B (bytecao) Leọnh DIV AB seừ chia A cho B rồi traỷ về keỏt quỷa nguyẽn trong Avaứ phần dử trong B Thanh ghi B cuừng coự theồ ủửụùc xem nhử thanh ghiủeọm ủa dúng Noự ủửụùc ủũa chổ hoựa tửứng bit baống caực ủũa chổ bit FOHủeỏn F7H

c Con trỏ ngăn xếp(stack):

Con troỷ ngaờn xeỏp (Stack Pointer) laứ moọt thanh ghi 8 bit ụỷ ủũa chổ 81H.Noự chửựa ủũa chổ cuỷa byte dửừ lieọu hieọn haứnh trẽn ủổnh cuỷa ngaờn xeỏp.Caực leọnh trẽn ngaờn xeỏp bao gồm caực thao taực caỏt dửừ lieọu vaứo ngaờnxeỏp vaứ laỏy dửừ lieọu ra khoỷi ngaờn xeỏp Leọnh caỏt dửừ lieọu vaứo ngaờnxeỏp seừ laứm taờng SP trửụực khi ghi dửừ lieọu, vaứ leọnh laỏy dửừ lieọu ra

GVHD: ThS Lâm Tăng Đức Trang:- 12 - SVTH: Võ Ngọc Tuyến

Trang 13

khoỷi ngaờn xeỏp seừ laứm giaỷm SP Ngaờn xeỏp cuỷa 8051/8031 ủửụùc giửừtrong RAM noọi vaứ ủửụùc giụựi hán caực ủũa chổ coự theồ truy xuaỏt baốngủũa chổ giaựn tieỏp chuựng laứ 128 byte ủầu cuỷa 8051/8031.

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

Trên 8051/8031 ngăn xếp bị giới hạn 32 byte vì địa chỉ cao nhất của RAM trên chip là 7FH Dùng giá trị 5FH vì SP sẽ tăng lên 60H trước khi cất byte dữ liệu đầu tiên

Người thiết kế cĩ thể chon 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á trj mặc định đĩ là 07H và kết quả là ngăn đầu tiên để cất dữ liệu cĩ địa chỉ 08H Nếu phần mềm ứng dụng khơng khởi động lại SP , dãy thanh ghi 1 (cĩ thể cả 2 và 3) sẽ khơng được dùng vì vùng RAM này đã được dùng làm ngăn xếp

Ngaờn xeỏp ủửụùc truy xuaỏt trửùc tieỏp baống caực leọnh PUSH vaứ POP ủeồ lửu giửừ tám thụứi vaứ laỏy lái dửừ lieọu hoaởc ủửụùc truy xuaỏt ngầm baống caực leọnh gói chửụng trỡnh con (ACALL, LACALL) vaứ caực leọnh trụỷ về (RET,RETI) ủeồ caỏt vaứ laỏy lái boọ ủeỏm chửụng trỡnh

d Con trỏ dữ liệu(DPTR):

DPTR ủửụùc duứng ủeồ truy xuaỏt boọ nhụự ngoaứi laứ moọt thanh ghi 16 bit

ụỷ ủũa chổ 82H(DPL: byte thaỏp) vaứ 83H (DPH:byte cao) Ba leọnh sau seừ ghi55H vaứo RAM ngoaứi ụỷ ủũa chổ 1000H:

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

Caực port cuỷa 8051/8031 bao gồm Port 0 ụỷ ủũa chổ 80H, Port 1 ụỷ ủũachổ 90 H, Port 2 ụỷ ủũa chổ A0H vaứ Port 3 ụỷ ủũa chổ B0H Taỏt caỷ caực Portủều ủửụùc ủũa chổ hoựa tửứng bit ẹiều ủoự cung caỏp moọt khaỷ naờng giaotieỏp thuaọn lụùi

f Các thanh ghi định thời(timer):

8051/8031 chửựa 2 boọ ủũnh thụứi/ủeỏm 16 bit ủửụùc duứng trong vieọcủũnh thụứi hoaởc ủeỏm sửù kieọn Timer 0 ụỷ ủũa chổ 8AH (TL0:byte thaỏp) vaứ8CH (TH0:byte cao).Timer 1 ụỷ ủũa chổ 8BH (TL1:byte thaỏp) vaứ 8DH (TH1:byte cao) Vieọc vaọn haứnh timer ủửụùc set bụỷi thanh ghi Timer Mode (TMOD)

Trang 14

ụỷ ủũa chổ 89H vaứ thanh ghi ủiều khieồn timer (TCON) ụỷ ủũa chổ 88H Chổcoự TCON ủửụùc ủũa chổ hoựa tửứng bit.

g Các thanh ghi port nối tiếp:

8051/8031 chửực moọt port noỏi tieỏp trẽn chip daứnh cho vieọc trao ủoồithõng tin vụựi caực thieỏt bũ noỏi tieỏp nhử maựy tớnh, modem hoaởc cho vieọcgiao tieỏp vụựi caực IC khaực coự giao tieỏp noỏi tieỏp (coự boọ chuyeồn ủoồi A/

D, caực thanh ghi dũch ) Moọt thanh ghi gói laứ boọ ủeọm dửừ lieọu noỏi tieỏp(SBUF) ụỷ ủũa chổ 99H seừ giửừ caỷ hai giửừ lieọu truyền vaứ nhaọn Khitruyền dửừ lieọu thỡ ghi lẽn SBUf, khi nhaọn dửừ lieọu thỡ ủóc SBUF Caựcmode vaọn haứnh khaực nhau ủửụùc laọp trỡnh qua thanh ghi ủiều khieồn portnoỏi tieỏp (SCON) (ủửụùc ủũa chổ hoựa tửứng bit) ụỷ ủũa chổ 98H

h Các thanh ghi ngắt:

8051/8031 coự caỏu truực 5 nguồn ngaột, 2 mửực ửu tiẽn Caực ngaột bũcaỏm sau khi reset heọ thoỏng vaứ seừ ủửụùc cho pheựp baống vieọc ghi thanh ghicho pheựp ngaột (IE) ụỷ ủũa chổ A8H mức ưu tiên ngắt được thiết lập qua thanhghi ưu tiên ngắt IP cĩ địa chỉ B8H.Cả hai thanh ghi ủửụùc ủũa chổ hoựa tửứng bit

i Các thanh ghi điều khiển nguồn:

Thanh ghi ủiều khieồn nguồn (PCON) ụỷ ủũa chổ 87H chửựa nhiều bitủiều khieồn Chuựng ủửụùc toựm taột trong baỷng sau:

Bit gaỏp ủõi toỏc ủoọ baud, neỏu ủửụùc set thỡ toỏc ủoọ baud seừ taờng gaỏp ủõi trong caực mode 1,2 vaứ 3 cuỷa port noỏi tieỏp

Khõng ủũnh nghúaKhõng ủũnh nghúaKhõng ủũnh nghúaBit cụứ ủa mục đích 1Bit cụứ ủa mục đích 2Nguồn giảm, được set để tích cực chế độ nguồn giảm,chỉ thốt khi reset hệ thốngMode nghĩ set ủeồ kớch hoát mode nghĩ chổ thoaựt khi coự ngaột hoaởc reset heọ thoỏng

Baỷng 2.3 :Thanh ghi ủiều khieồn nguồn (PCON)

5/ Bộ nhớ ngồi:

8051/8031 coự khaỷ naờng mụỷ roọng boọ nhụự ủeỏn 64K boọ nhụựchửụng trỡnh vaứ 64K boọ nhụự dửừ lieọu bẽn ngoaứi Do ủoự coự theồ duứngthẽm ROM vaứ RAM neỏu cần

GVHD: ThS Lâm Tăng Đức Trang:- 14 - SVTH: Võ Ngọc Tuyến

Trang 15

Khi duứng boọ nhụự ngoaứi, port 0 khõng coứn laứ moọt port I/O thuầntuựy nửừa Noự ủửụùc hụùp kẽnh giửừa bus ủũa chổ (A0-A7) vaứ bus dửừ lieọu(D0-D7) vụựi tớn hieọu ALE ủeồ choỏt byte thaỏp cuỷa ủũa chổ khi baột ủầumoĩi chu kyứ boọ nhụự Port 2 thõng thửụứng ủửụùc duứng cho byte cao cuỷabus ủũa chổ.

Trong nửỷa ủầu cuỷa moĩi chu kyứ boọ nhụự, byte thaỏp cuỷa ủũa chổủửụùc caỏp trong port 0 vaứ ủửụùc choỏt baống xung ALE Moọt IC choỏt74HC373 (hoaởc tửụng ủửụng) seừ giửừ byte ủũa chổ thaỏp trong phần coứn láicuỷa chu kyứ boọ nhụự Trong nửỷa sau cuỷa chu kyứ boọ nhụự port 0 ủửụùcduứng nhử bus dửừ lieọu vaứ ủửụùc ủóc hoaởc ghi tuứy theo leọnh

a/ Truy xuất bộ nhớ chương trình ngồi :

Boọ nhụự chửụng trỡnh ngoaứi laứ một IC ROM ủửụùc pheựp bụỷi tớnhieọu PSEN

Moọt chu kyứ maựy cuỷa 8051/8031 coự 12 chu kyứ xung nhũp Neỏu boọdao ủoọng trẽn chip ủửụùc laựi bụỷi moọt thách anh 12MHz thỡ chu kyứ maựykeựo daứi 1s Trong moọt chu kyứ maựy seừ coự 2 xung ALE vaứ 2 byte ủửụùcủóc tửứ boọ nhụự chửụng trỡnh (neỏu leọnh chỉ cĩ 1 byte thỡ byte thửự 2ừ ủửụùcloái boỷ) Giaỷn ủồ thụứi gian cuỷa moọt lần laỏy leọnh ủửụùc veừ ụỷ hỡnh2.5:

Hình 2.4:Giao tiếp giữa 8051 và EPROM

Port 0

EA 8051 ALE

Port 2 PSEN

D0-D7 A0-A7 EPROM

A8-A15 OE

D Q 74HC373 G

Trang 16

Hình 2.5:Giản đồ thời gian đọc bộ nhớ chương trình ngồi.

b/ Truy xuất bộ nhớ dữ liệu ngồi :

Boọ nhụự dửừ lieọu ngoaứi laứ moọt boọ nhụự RAM ủửụùc cho pheựpghi/ủóc baống caực tớn heọu WR vaứ RD (caực chãn P3.6 vaứ P3.7).Chổ coựmoọt caựch truy xuaỏt boọ nhụự dửừ lieọu ngoaứi laứ vụựi leọnh MOVX duứngcon troỷ dửừ lieọu (DPTR) 16 bit hoaởc R0 vaứ R1 xem nhử thanh ghi ủũa chổ

Keỏt noỏi bus ủũa chổ vaứ bus dửừ lieọu giửừa RAM vaứ 8051/8031 cuừnggioỏng EPROM vaứ do ủoự cuừng coự theồ lẽn ủeỏn 64 byte boọ nhụự RAM.Ngoaứi ra, chãn RD cuỷa 8051/8031 ủửụùc noỏi tụựi chãn cho pheựp xuaỏt(OE) cuỷa RAM vaứ chãn WR ủửụùc noỏi tụựi chãn ghi (WR) cuỷa RAM

Hình2.6: Giao tiếp giữa 8051/8031 và RAM

Gian đồ thời gian cho lệnh đọc bộ nhớ dữ liệu ngồi được vẽ trên hình sau đối với lệnh MOVX A,@DPTR:

GVHD: ThS Lâm Tăng Đức Trang:- 16 - SVTH: Võ Ngọc Tuyến

Port 0

8051 EA

ALE

Port 2

RD WR

Trang 17

Hình 2.7:Giản đồ thời gian của lệnh MOVX

Giaỷn ủoà thụứi gian cho leọnh ghi (MOVX @DPTR, A) cuừng tửụng tửùchổ khaực ủửụứng WR seừ thay vaứo ủửụứng RD vaứ dửừ lieọu ủửụùc xuaỏt ratreõn port 0 (RD vaón giửừ mửực cao)

c/ Giải mã địa chỉ:

Nếu có nhiều EPROM hoặc có nhiều RAM hoặc cả hai giao tiếp với 8051 ta

cần giãi mã địa chỉ Thí dụ, nếu các RAM và ROM 8 bit được sử dụng, địa chỉ phảiđược giãi mã để chọn IC nhớ này trên các giới hạn 8K: 0000H-1FFFH, 2000H –3FFFH,…Một IC giải mã điển hình là 74HC138 với các ngõ ra được nối với ngõvào chọn chip CS của IC nhớ (như hình) cho bộ nhớ có nhiều EPROM 2764(8K)

và RAM 6264 (8K) Do đường cho phép riêng rẽ (PSEN cho bộ nhớ chương trình,

RD và WR cho bộ nhớ dữ liệu), 8051 có thể quản lý bộ nhớ đến 64K với EPROM

và 64 K cho RAM

Trang 18

Hình 2.8:Giãi mã địa chỉ (Address Decording)

6/ Lệnh reset:

8051/8031 ủửụùc reset baống caựch giửừ chãn RST ụỷ mửực cao tối thiểu

2 chu kyứ maựy vaứ traỷ noự về mức thaỏp RST coự theồ ủửụùc kớch khi caỏpủieọn duứng moọt mách R-C

EPROM 8KBytes

Select another EPROM/RAM

Trang 19

Trạng thái của tất cả các thanh ghi của 8051/8031 sau khi reset hệ thống được tĩm tắt trong bảng sau:

Đếm chương trìnhThanh chứa A Thanh ghi B

PSWSPDPTRPort 0-3IPIECác thanh ghi định thời

SCONSBUFPCON(HMOS)PCON(CMOS)

0000H00H00H00H07H0000HFFHxxx00000B0xx00000B00H00H00H0xxxxxxB0xxx0000B

Bảng 2.3 trạng thái các thanh ghi sau khi reset

Quan tróng nhaỏt trong caực thanh ghi trẽn laứ thanh ghi ủeỏm chửụngtrỡnh, noự ủửụùc ủaởt lái 0000H Khi RST trụỷ lái mửực thaỏp, vieọc thi haứnhchửụng trỡnh luõn baột ủầu ụỷ ủũa chổ ủầu tiẽn trong boọ nhụự trong chửụngtrỡnh: ủũa chổ 0000H Noọi dung cuỷa RAM trẽn chip khõng bũ thay ủoồi bụỷileọnh reset

7 Hoạt động của bộ định thời (timer)

7.1 Giới thiệu:

Moọt ủũnh nghúa ủụn giaỷn cuỷa timer laứ moọt chuoĩi caực flip-flop chiaủõi tần soỏ noỏi tieỏp vụựi nhau, chuựng nhaọn tớn hieọu vaứo laứm nguồnxung nhũp Ngoừ ra cuỷa tần soỏ cuoỏi laứm nguồn xung nhũp cho flip-flopbaựo traứn cuỷa timer (flip-flop cụứ) Giaự trũ nhũ phãn trong caực flip-flop cuỷatimer coự theồ xem nhử soỏ ủeỏm soỏ xung nhũp (hoaởc caực sửù kieọn) tửứ khikhụỷi ủoọng timer Vớ dú timer 16 bit seừ ủeỏm lẽn tửứ 0000H ủeỏn FFFFH.Cụứ baựo traứn seừ lẽn 1 khi soỏ ủeỏm traứn tửứ FFFFH ủeỏn 0000H

8051/8031 cú 2 timer 16 bit, mỗi timer cú bốn cỏch làm việc Người ta sử dụng cỏctimer để : a) định khoảng thời gian, b) đếm sự kiện c) tạo tốc độ baund cho port nối tiếp trong 8051/8031

Trong caực ửựng dúng ủũnh khoaỷng thụứi gian, ngửụứi ta laọp trỡnh timer

ụỷ moọt khoaỷng ủều ủaởn vaứ ủaởt cụứ traứn timer Cụứ ủửụùc duứng ủeồủồng boọ hoựa chửụng trỡnh ủeồ thửùc hieọn moọt taực ủoọng nhử kieồm tra

Trang 20

tráng thaựi cuỷa caực cửỷa ngoừ vaứo hoaởc gửỷi caực sửù kieọn ra caực ngoừ ra.Caực ửựng dúng khaực coự theồ sửỷ dúng vieọc táo xung nhũp ủều ủaởn cuỷatimer ủeồ ủo thụứi gian trõi qua giửừa hai sửù kieọn (vớ dú : ủo ủoọ roọngxung).

ẹeỏm sửù kieọn duứng ủeồ xaực ủũnh soỏ lần xaồy ra cuỷa moọt sửù kieọn.Moọt “sửù kieọn” laứ baỏt cửự taực ủoọng ngoaứi naứo coự theồ cung caỏp moọtchuyeồn tráng thaựi trẽn moọt chãn cuỷa 8051/8031 Caực timer cuừng coựtheồ cung caỏp xung nhũp toỏc ủoọ baud cho port noỏi tieỏp trong 8051/8031

Truy xuaỏt timer cuỷa 8051/8031 duứng 6 thanh ghi chửực naờng ủaởc bieọtcho trong baỷng sau:

bitTCON

Byte thaỏp cuỷa timer1

Byte cao cuỷa timer 0Byte cao cuỷa timer 1

88H89H8AH8BH8CH8DH

Coự Khõng Khõng Khõng Khõng Khõng

Bảng 2.4: Thanh ghi chức năng đặc biệt dùng timer.

7.2 Thanh ghi chế độ timer (TMOD)

Thanh ghi TMOD chửựa hai nhoựm 4 bit duứng ủeồ ủaởt cheỏ ủoọ laứm vieọc cho timer 0 vaứ timer 1

Bit Tẽn Timer Mõ taỷ

11

0000

Bit (Mụỷ) coồng, khi lẽn 1 timer chổ cháy khi INT1

ụỷ mửực cao.Bit Bit chọn chế độ counter/timer

1 bộ đếm sự kiện

0 bộ định khoảng thời gianBit 1 của chế độ (mode)Bit 0 của chế độ

00:chế độ 0 : timer 13 bit01: chế độ 1 :timer 16 bit10: chế độ 2 :tự động nạp lại 8255A bit11: chế độ 3 :tỏch timer

Bit mở cổng Bit chọn counter/timerBit 1 của chế độ

GVHD: ThS Lâm Tăng Đức Trang:- 20 - SVTH: Võ Ngọc Tuyến

Trang 21

Bit 0 của chế độ

Bảng 2.5: Túm tắt thanh ghi TMOD

7.3 Thanh ghi ủiều khieồn timer (TCON)

Thanh ghi TCON chửựa caực bit tráng thaựi vaứ caực bit ủiều khieồn cho timer 0 vaứ timer 1

89H88H

Cụứ baựo traứn timer 1 ẹaởt bụỷi phần cửựng

khi traứn, ủửụùc xoựa bụỷi phần mềm hoaởc phần

cửựng khi boọ xửỷ lyự chổ ủeỏn chửụng trỡnh phúc vú

ẹaởt/xoựa baống phần mềm ủề ngaột ngoaứi tớch cửùc cánh xuoỏng/mửực thaỏp

Cụứ cánh ngaột 0 bẽn ngoaứi

Cụứ kieồu ngaột 0 bẽn ngoaứi

Baỷng 2.6: Toựm taột thanh ghi TCON

7 4 Caực cheỏ ủoọ timer.

a/ Cheỏ ủoọ 0, cheỏ ủoọ timer 13 bit.

ẹeồ tửụng thớch vụựi 8048 (coự trửựụực 8051)

Ba bit cao cuỷa TLX (TL0 / TL1) khõng duứng

Xung nhũp

Timer Cụứ baựo traứn

b/ Cheỏ ủoọ 1- cheỏ ủoọ timer 16 bit :

Hoát ủoọng nhử timer 16 bit ủầy ủuỷ

(5 bit) (8 bit)

TFx

Trang 22

Cụứ baựo traứn laứ bit TFx trong TCON coự theồ ủóc hoaởc ghi baống phầm mềm.

MSB cuỷa giaự trũ trong caực thanh ghi timer laứ bit 7 cuỷa THx vaứ LBS laứ bit 0 cuỷa TLx Caực thanh ghi timer (TLx/THx) coự theồ ủửụùc ủóc hoaởc ghi baỏt cửự luực naứo baống phầm mềm

Xung nhũp

Timer Cụứ baựo traứn

c/ Cheỏ ủoọ 0- cheỏ ủoọ tửù ủoọng náp lái 8 bit.

TLx hoát ủoọng nhử moọt timer 8 bit, trong khi ủoự THx vaĩn giửừ

nguyẽn giaự trũ ủửụùc náp Khi soỏ ủeỏm traứn tửự FFH ủeỏn 00H, khõng nhửừng cụứ timer ủửụùc set maứ giaự trũ trong THx ủồng thụứi ủửụùc náp vaứo TLx Vieọc ủeỏm tieỏp túc tửứ giaự trũ naứy lẽn ủeỏn FFH xuoỏng 00H vaứ náp lái cheỏ ủoọ naứy raỏt thõng dúng vỡ sửù traứn timer xaỷy ra trong nhửừng khoaỷng thụứi gian nhaỏt ủũnh vaứ tuần hoaứn moọt khi ủaừ khụỷi ủoọngTMOD vaứ THx

Xung nhũp

timer Cụỷ baựo traứn

Náp lái

d/ Cheỏ ủoọ 3- cheỏ ủoọ taựch timer:

Timer 0 taựch thaứnh hai timer 8 bit (TL0 vaứ TH0), TL0 coự cụứ baựo traứn laứ TF0 vaứ TH0 coự cụứ baựo traứn laứ TF1

Timer 1 ngửng ụỷ cheỏ ủoọ3, nhửng coự theồ ủửụùc khụỷi ủoọng baống caựch chuyeồn sang cheỏ ủoọ khaực Giụựi hán duy nhaỏt laứ cụứ baựo traứn TF1 khõng coứn bũ taực ủoọng khi timer 1 bũ traứn vỡ noự ủaừ ủửụùc noỏi tụựi TH0

Khi timer 0 ụỷ cheỏ ủoọ 3, coự theồ cho timer 1 cháy vaứ ngửng baống caựch chuyeồn noự ra ngoaứi vaứ vaứo cheỏ ủoọ 3 Noự vaĩn coự theồ ủửụùc sửỷ dúng bụỷi port noỏi tieỏp nhử boọ táo toỏc ủoọ baund hoaởc noự coự theồ ủửụùc sửỷ dúng baống baỏt cửự caựch naứo khõng cần ngaột (vỡ noự khõng coứn ủửụùc noỏi vụựi TF1)

GVHD: ThS Lâm Tăng Đức Trang:- 22 - SVTH: Võ Ngọc Tuyến

TL1 TH1

Trang 23

7.5 Nguồn táo xung nhũp.

Coự hai nguồn táo xung nhũp coự theồ coự,ủượcù chón baống caựch ghi vaứo bit C/T (counter/timer) trong TMOD khi khụỷi ủoọng timer Moọt nguồn táo xung nhũp duứng cho ủũnh khoaỷng thụứi gian, caựi khaực cho ủeỏm sửù kieọn

Crytal

Timer Clock T0 or T1

pin

0=Up (Internal Timing)1=Down (Event Counting)

Nguồn xung táo nhũp

- ẹũnh khoaỷng thụứi gian (interval timing)

Neỏu C/T =0 hoát ủoọng timer liẽn túc ủửụùc chón vaứ timer ủửụùcduứng cho vieọc ủũnh khoaỷng thụứi gian Luực ủoự, timer laỏy xung nhũp tửứboọ dao ủoọng trẽn chip Boọ chia 12 ủửụùc thẽm vaứo ủeồ giaỷm tần soỏ xungnhũp ủeỏn giaự trũ thớch hụùp cho phần lụựn caực ửựng dúng Nhử vaọy tháchanh 12 MHz seừ cho toỏc ủoọ xung nhũp timer 1 MHz.Bao traứn timer xaỷy ra saumoọt soỏ (coỏ ủũnh) xung nhũp, phú thuoọc vaứo giaự trũ ban ủầu ủửụùc nápvaứo caực thanh ghi timer TLx/THx

- ẹeỏm sửù kieọn (Event counting)

- Neỏu C/T=1, timer laỏy xung nhũp tửứ nguồn bẽn ngoaứi Trong hầuheỏt caực ửựng dúng nguồn bẽn ngoaứi naứy cung caỏp cho timer moọtxung khi xaỷy ra moọt “sửù kieọn “, timer duứng ủeỏm sửù kieọn ủửụùc xaựcủũnh baống phần mềm baống caựch ủóc caực thanh ghi TLx/THx vỡ giaựtrũ 16 bit trong caực thanh ghi naứy taờng thẽm 1 cho moĩi sửù kieọn

On chip Osillator

12

T

C /

Trang 24

Nguồn xung nhũp ngoaứi coự tửứ thay ủoồi chức naờng cuỷa caực chãnport 3 Bit 4 cuỷa port 3 (P3.4) duứng laứm ngoừ vaứo táo xung nhũp bẽn trongtimer 0 vaứ ủửụùc gói laứ “T0” Vaứ P3.5 hay “T1” laứ ngoừ vaứo táo xungnhũp cho timer 1.

7.6.

Baột ủầu dửứng vaứ ủiều khieồn caực timer.

Phửụng phaựp mụựi ủụn giaỷn nhaỏt ủeồ baột ủầu (cho cháy) vaứ dửứngcaực timer laứ duứng caực bit ủiều khieồn cháy :TRx trong TCON, TRx bũ xoựasau khi reset heọ thoỏng Nhử vaọy, caực timer theo maởc nhiẽn laứ bũ caỏm (bũdửứng) TRx ủửụùc ủaởt lẽn 1 baống phần mềm ủeồ cho caực timer cháy

Xung nhũp

0=lẽn : timer dửứng1=xuoỏng : timer cháy

Cho cháy vaứ dửứng timer

Vỡ TRx ụỷ trong thanh ghi TCON coự ủũa chổ bit, nẽn deĩ daứng cho vieọc

ủiều khieồn caực timer trong chửụng trỡnh.Vớ dú: cho timer 0 cháy baống

leọnh : SETB TR0 vaứ dửứng baống leọnh SETB TR0.

Trỡnh biẽn dũch seừ thửùc hieọn vieọc chuyeồn ủoồi kyự hieọu cần thieỏt tửứ

“TR0” sang ủũa chổ bit ủuựng SETB TR0 chớnh xaực gioỏng nhử SETB 8CH 7.7.

Khụỷi ủoọng vaứ truy xuaỏt caực thanh ghi timer.

Thõng thửụứng caực thanh ghi ủửụùc khụỷi ủoọng moọt lần ụỷ ủầuchửụng trỡnh ủeồ ủaởt cheỏ ủoọ laứm vieọc cho ủuựng Sau ủoự trong thãnchửụng trỡnh caực timer ủửụùc cho cháy, dửứng, caực bit cụứ ủửụùc kieồm travaứ xoựa, caực thanh ghi timer ủửụùc ủóc vaứ cập nhaọt theo ủoứi hoỷi cuỷacaực ửựng dúng

TMOD laứ thanh ghi thửự nhaỏt ủửụùc khụỷi ủoọng vỡ noự ủaởt cheỏ ủoọ

hoát ủoọng Vớ dú caực leọnh sau khi khụỷi ủoọng timer 1 nhử timer 16 bit(cheỏ ủoọ 1) coự xung nhũp tửứ boọ dao ủoọng trẽn chớp cho vieọc ủũnhkhoaỷng thụứi gian

MOV TMOD,#00010000B

Leọnh naứy seừ ủaởt M1=0 vaứ M0=1 cho cheỏ ủoọ 1, C/T=0 vaứ GATE=0

cho xung nhũp noọi vaứ xoựa caực bit cheỏ ủoọ timer 0 Dú nhiẽn timer thaọt sửù

khõng baột ủầu ủũnh thụứi cho ủeỏn khi bit ủiều khieồn cháy TR1 ủửụùc ủaởt

lẽn 1

Neỏu cần soỏ ủeỏm ban ủầu, caực thanh ghi timer TL1/TH1 cuừng phaỷi ủửụùc

khụỷi ủoọng Nhụự lái laứ caực timer ủeỏm lẽn vaứ ủaởt cụứ baựo traứn khi coựsửù chuyeồn tieỏp

GVHD: ThS Lâm Tăng Đức Trang:- 24 - SVTH: Võ Ngọc Tuyến

TRx

Trang 25

FFFFH sang 0000H.

- ẹóc timer ủang cháy

Trong moọt soỏ ửựng dúng cần ủóc giaự trũ trong caực thanh ghi timerủang cháy Vỡ phaỷi ủóc 2 thanh ghi timer “sai pha” coự theồ xaồy ra neỏu bytethaỏp traứn vaứo byte cao giửừa hai lần ủóc Giaự trũ coự theồ ủóc ủửụùckhõng ủuựng Giaỷi phaựp laứ ủóc byte cao trửụực, keỏ ủoự ủóc byte thaỏprồi ủóc byte cao lái moọt lần nửừa Neỏu byte cao ủaừ thay ủoồi thỡ laọp láicaực hoát ủoọng ủóc

7.8 Caực khoaỷng ngaộn vaứ caực khoaỷng daứi.

Daừy caực khoaỷng thụứi gian coự theồ ủũnh thụứi laứ bao nhiẽu ? vaỏnủề naứy ủửụùc khaỷo saựt vụựi 8051/8031 hoát ủoọng vụựi tần soỏ12MHz.Nhử vaọy xung nhũp cuỷa caực timer coự tần soỏ laự 1 MHz

Khoaỷng thụứi gian ngaộn nhaỏt coự theồ coự bũ giụựi hán khõng chổ bụỷi tầnsoỏ xung nhũp cuỷa timer maứ coứn bụỷi phần mềm Do aỷnh hửụỷng cuỷathụứi khoaỷng thửùc hieọn moọt leọnh Leọng ngaộn nhaỏt 8051/8031 laứ moọtchu kyứ maựy hay 1s Sau ủãy laứ baỷng toựm taột caực kyừ thuaọt ủeồ táonhửừng khoaỷng thụứi gian coự chiều daứi khaực nhau (vụựi giaỷ sửỷ xung nhũpcho 8051/8031 coự tần soỏ 12 MHz)

Khoaỷng thụứi gian toỏi ủa Kyừ thuaọt

10

256

65535

Khõng giụựi hán

- Baống phần mềm

- Timer 8 bit vụựi tửù ủoọng náp lái

- Timer 16 bit

- Timer 16 bit coọng vụựi caực voứng laọp phần mềm

Caực kyừ thuaọt ủeồ laọp trỡnh caực khoaỷng thụứi gian (FOSC=12 MHz)

8 Hoát ủoọng port noỏi tieỏp.

8.1 Giụựi thieọu.

8051/8031 coự moọt port noỏi tieỏp trong chip coự theồ hoát ủoọng ụỷnhiều cheỏ ủoọ khaực trẽn moọt daừy tần soỏ roọng Chửực naờng chuỷ yeỏucuỷa moọt port noỏi tieỏp laứ thửùc hieọn chuyeồn ủoồi song song sang noỏi tieỏpvụựi dửừ lieọu xuaỏt vaứ chuyeồn ủồi noỏi tieỏp sang song song vụựi dửừ lieọunhaọp

Truy xuaỏt phần cửựng ủeỏn port noỏi tieỏp qua caực chãn TxD vaứRxD Caực chãn naứy coự caực chửực naờng khaực vụựi hai bit cuỷa port 3 P3

ụỷ chãn 11 (TxD) vaứ P3.0 ụỷ chãn 10 (RxD)

Port noỏi tieỏp cho hoát ủoọng song cõng (full duplex : thu vaứ phaựtủồng thụứi) vaứ ủeọm luực thu (receiver buffering) cho pheựp moọt kyự tửù seừủửụùc thu vaứ ủửụùc giửừ trong khi kyự tửù thửự hai ủửụùc nhaọn Neỏu CPU

Trang 26

ủóc kyự tửù thửự nhaỏt trửụực khi kyự tửù thửự hai ủửụùc thu ủầy ủuỷ thỡ dửừlieọu seừ khõng bũ maỏt.

Hai thanh ghi chửực naờng ủaởc bieọt cho pheựp phần mềm truy xuaỏtủeỏn port noỏi tieỏp laứ : SBUF vaứ SCON Boọ ủeỏm port noỏi tieỏp (SBUF) ụỷủịa chổ 99H thaọt sự laứ hai boọ ủeỏm.Vieỏt vaứo SBUF ủeồ truy xuaỏt dửừ lieọuthu ủửụùc ẹãy laứ hai thanh ghi riẽng bieọt thanh ghi chổ ghi ủeồ phaựt vaứthanh ghi ủeồ thu

TxD (P3.1) RxD (P3.0)

CLK

Q D

CLKXung nhũp toỏc ẹoọ baud (thu)Xung nhũp toỏc

ẹoọ baud (thu)

Hỡnh 2.10: Sụ ủồ port noỏi tieỏp.

Thanh ghi ủiều khieồn port noỏi tieỏp (SCON) ụỷ ủũa chổ 98H laứ thanhghi coự ủũa chổ bit chửựa caực bit tráng thaựi vaứ caực bit ủiều khieồn Caực bitủiều khieồn ủaởt cheỏ ủoọ hoát ủoọng cho port noỏi tieỏp, vaứ caực bit trángthaựi baựo caựo keỏt thuực vieọc phaựt hoaởc thu kyự tửù Caực bit tráng thaựicoự theồ ủửụùc kieồm tra baống phần mềm hoaởc coự theồ ủửụùc laọp trỡnh ủeồtáo ngaột

Tần soỏ laứm vieọc cuỷa port noỏi tieỏp coứn gói laứ toỏc ủoọ baund coựtheồ coỏ ủũnh (laỏy tửứ boọ giao ủoọng cuỷa chip) Neỏu sửỷ dúng toỏc ủoọbaund thay ủoồi, timer 1 seừ cung caỏp xung nhũp toỏc ủoọ baund vaứ phaỷiủửụùc laọp trỡnh

8.2 Thanh ghi ủiều khieồn port noỏi tieỏp.

Cheỏ ủoọ hoát ủoọng cuỷa port noỏi tieỏp ủửụùc ủaởt baống caựch ghivaứo thanh ghi cheỏ ủoọ port noỏi tieỏp (SCON) ụỷ ủũa chổ 98H Sau ủãy caựcbaỷng toựm taột thanh ghi SCON vaứ caực cheỏ ủoọ cuỷa port noỏi tieỏp :

Bit Kyự hieọu ẹũa chổ Mõ taỷ

SCON.7 SM0 9FH Bit 0 cuỷa cheỏ ủoọ port noỏi tieỏpSCON.6 SM1 9EH Bit 1 cuỷa cheỏ ủoọ port noỏi tieỏpSCON.5 SM2 9DH Bit 2 cuỷa cheỏ ủoọ 2 noỏi tieỏp

GVHD: ThS Lâm Tăng Đức Trang:- 26 - SVTH: Võ Ngọc Tuyến

SUBF

SBUF (chỉ đọc)

BUS nội 8051/8031

SBUF (chỉ đọc)

Trang 27

cho pheựp truền thõng ủaừ xửỷlyự

trong caực cheỏ ủoọ 2 vaứ 3 ;RIseừ

khõng bũ taực ủoọng neỏu bitthửự

9 thu ủửụùc laứ 0

1 ủeồ thu (nhaọn) caực kyự tửùSCON.3 TB8 9BH Bit 8 phaựt, bit thửự 9 ủửụùc phaựt

caực cheỏ ủoọ 2 vaứ 3; ủửụùc ủaởtvaứ xoựa baống phần mềmSCON.2 RB8 9AH Bit 8 thu, bit thửự 9 thu ủửụùcSCON.1 TI 99H Cụứ ngaột phaựt ẹaởt lẽn 1 khi

keỏt thuực phaựt kyự tửù; ủửụùcxoựa

phần mềm

Keỏt thuực thu kyự tửù; ủửụùcxoựa

Baống phần mềm

Baỷng 2.7:Toựm taột thanh ghi cheỏ ủoọ port noỏi tieỏp SCON.

SM0 SM1 Cheỏ ủoọ Mõ taỷ Toỏc ủoọ baud

0 0 0 Thanh ghi dũch Coỏ ủũnh (Fosc/12)

0 1 1 UART 8 bit Thay ủoồi (ủaởt baống timer)

1 0 2 UART 9 bit Coỏ ủũnh (Fosc/12 hoaởc Fosc/64)

1 1 3 UART 9 bit Thay ủoồi (ủaởt baống timer)

Baỷng 2.8: Caực cheỏ ủoọ port noỏi tieỏp.

Trửụực khi sửỷ dúng port noỏi tieỏp, phaỷi khụỷi ủoọng SCON cho ủuựngcheỏ ủoọ Vớ dú, leọnh sau:

MOV SCON,#01010010B

Khụỷi ủoọng port noỏi tieỏp cho cheỏ ủoọ 1 (SM0/SM1=0/1), cho pheựpboọ thu (REN=1) vaứ ủaởt cụứ ngaột phaựt (TP=1) ủeồ chổ boọ phaựt saỹn saứnghoát ủoọng

8.3 Khụỷi ủoọng vaứ truy xuaỏt caực thanh ghi coồng noỏi tieỏp.

a Cho pheựp thu:

Bit cho pheựp boọ thu (REN = Receiver Enable) trong SCON phaỷi ủửụùcủaởt lẽn 1 baống phần mềm ủeồ cho pheựp thu caực kyự tửù Thõng thửụứng

Trang 28

thửùc hieọn vieọc naứy ụỷ ủầu chửụng trỡnh khi khụỷi ủoọng coồng noỏi tieỏp,timer Coự theồ thửùc hieọn vieọc naứy theo hai caựch Leọnh :

c Thẽm 1 bit parity:

Thửụứng sửỷ dúng bit dửừ lieọu thửự 9 ủeồ thẽm parity vaứo kyự tửù.Nhử ủaừ xeựt ụỷ caực chửụng trửụực, bit P trong tửứ tráng thaựi chửụng trỡnh(PSW) ủửụùc ủaởt lẽn 1 hoaởc bũ xoựa bụỷi chu kyứ maựy ủeồ thieỏt laọp kieồmtra chaỹn vụựi 8 bit trong thanh tớch luừy

d Caực cụứ ngaột:

Hai cụứ ngaột thu vaứ phaựt (RI vaứ TI) trong SCON ủoựng moọt vai troứquan tróng truyền thõng noỏi tieỏp duứng 8051/8031 Caỷ hai bit ủửụùc ủaởtlẽn 1 baống phần cửựng, nhửng phaỷi ủửụùc xoựa baống phần mềm

8.4 Toỏc ủoọ baud port noỏi tieỏp.

Nhử ủaừ noựi, toỏc ủoọ baund coỏ ủũnh ụỷ caực cheỏ ủoọ 0 vaứ 2 Trongcheỏ ủoọ 0 noự luõn luõn laứ tần soỏ dao ủoọng trẽn chip ủửụùc chia cho 12 Thõng thửụứng thách anh aỏn ủũnh tần soỏ dao ủoọng trẽn chip cuỷa8051/8031 nhửng cuừng coự theồ sửỷ dúng nguồn xung nhũp khaực Giaỷ sửỷvụựi tần soỏ dao ủoọng danh ủũnh laứ 12 MHz, tỡm toỏc ủoọ baud cheỏ ủoọ 0 laứ

1 MHz

Maởc nhiẽn, sau khi reset heọ thoỏng, toỏc ủoọ baud cheỏ ủoọ laứ 2 tần soỏ boọ dao ủoọng chia cho 64 Toỏc ủoọ baud cuừng aỷnh hửụỷng bụỷi 1 bit trong thanh ghi ủiều khieồn nguồn cung caỏp (PCON) Bit 7 cuỷa PCON laứ bit SMOD ẹaởt bit SMOD lẽn moọt laứm gaỏp ủõi toỏc ủoọ baud trong cheỏ ủoọ 1,2 vaứ 3 Trong cheỏ ủoọ 2, toỏc ủoọ baud coự theồ bũ gaỏp ủõi tửứ giaự trũ maởc nhiẽn cuỷa 1/64 tần soỏ dao ủoọng (SMOD=0) ủeỏn 1/32 tần soỏ dao ủoọng (SMOD=1).

Trang 29

SMOD=0

SMOD=1

b Cheỏ ủoọ 2

SMOD=0

SMOD=1

c Cheỏ ủoọ 1 vaứ 3

Hỡnh 2.12 Caực nguồn táo xung nhũp cho port noỏi tieỏp.

Vỡ PCON khõng ủửụùc ủũnh ủũa chổ theo bit, nẽn ủeồ ủaởt bit SMODlẽn 1 cần phaỷi theo caực leọnh sau:

MOV A,PCON laỏy giaự trũ hieọn thụứi cuỷa PCON

SETB ACC.7 ủaởt bit 7 (SMOD) lẽn 1

MOV PCON,A ghi giaự trũ ngửụùc về PCON

Caực toỏc ủoọ baud trong caực cheỏ ủoọ 1 vaứ 3 ủửụùc xaực ủũnh baốngtoỏc ủoọ traứn cuỷa timer 1 Vỡ timer hoát ủoọng ụỷ tần soỏ tửụng ủoỏi cao,traứn timer ủửụùc chia thẽm cho 32 (hay 16 neỏu SMOD=1) trửụực khi cung caỏpxung nhũp toỏc ủoọ baud cho port noỏi tieỏp

9 Hoát ủoọng ngaột:

Ngaột laứ hoát ủoọng ngửứng tám thụứi moọt chửụng trỡnh naứy ủeồ thihaứnh moọt chửụng trỡnh khaực Caực ngaột coự moọt vai troứ quan tróng trongthieỏt keỏ vaứ khaỷ naờng thửùc thi cuỷa vi ủiều khieồn Chuựng cho pheựp heọthoỏng ủaựp ửựng khõng cuứng luực tụựi moọt cõng vieọc vaứ giaỷi quyeỏtmoọt cõng vieọc ủoự trong khi moọt chửụng trỡnh khaực ủang thửùc thi

Moọt heọ thoỏng ủửụùc ủiều khieồn baống ngaột cho aỷo giaực laứ laứmnhiều vieọc ủồng thụứi Dú nhiẽn CPU moĩi lần khõng theồ thửùc thi moọtchửụng trỡnh ủeồ thửùc thi moọt chửụng trỡnh khaực, rồi quay về chửụng trỡnhủầu khi coự yẽu cầu ngaột Chửụng trỡnh giaỷi quyeỏt ngaột ủửụùc gói laứchửụng trỡnh phúc vú ngaột (ISR : Interrupt Sevice Reutine)

9.1 Toồ chửực ngaột.

ễỷ 8051 coự 5 nguồn ngaột:

- 2 ngaột ngoaứi

- 2 ngaột tửứ timer

- 1 ngaột port noỏi tieỏp

Taỏt caỷ caực ngaột seừ khõng ủửụùc ủaởt sau khi reset heọ thoỏng vaứcho pheựp ngaột riẽng reừ bụỷi phần mềm

32

16

Trang 30

a Cho pheựp vaứ khõng cho pheựp ngaột.

Moĩi nguồn ngaột ủửụùc cho pheựp hoaởc khõng cho pheựp tửứng ngaộtmoọt qua thanh ghi chửực naờng ủaởc bieọt coỏ ủũnh ủũa chổ bit IE (InterruptEnable : cho pheựp ngaột) ụỷ ủũa chổ A8H Cuừng nhử caực bit cho pheựp moĩinguồn ngaột, coự moọt bit cho pheựp hoaởc caỏm toaứn boọ ủửụùc xoựa ủeồcaỏm taỏt caỷ caực ngaột hoaởc ủửụùc ủaởt lẽn 1 ủeồ cho pheựp taỏt caỷ caựcngaột

Bit Kyự hieọu ẹũa chổ bit Mõ taỷ (1=cho pheựp,0=caỏm)

AFHAEHADHACHABHAAHA9H

A8H

Cho pheựp hoaởc caỏm toaứn boọ

Khõng ủửụùc ủũnh nghúaCho pheựp ngaột tửứ timer 2 (8052)

Cho pheựp ngaột Port noỏi tieỏp Cho pheựp ngaột tửứ timer 1Cho pheựp ngaột ngoaứi 1Cho pheựp ngaột tửứ timer 0Cho pheựp ngaột ngoaứi 0 Toựm taột thanh ghi IE

b ệu tiẽn ngaột:

Moĩi nguồn ngaột ủuụùc laọp trỡnh riẽng vaứo moọt trong hai mửực ửu tiẽn qua thanh ghi chửực naờng ủaởc bieọt ủửụùc ủũa chổ bit Ip (Interrupt priority: ửu tiẽn ngaột) ụỷ ủũa chổ B8H

hieọu

ẹũa chổ bit Mõ taỷ (1=mửực cao hụn,0=mửực

thaỏp)IP.7

BDHBCHBBHBAHB9H B8H

Khõng ủửụùc ủũnh nghúaKhõng ủửụùc ủũnh nghúa

ệu tiẽn cho ngaột tửứ timer 2 (8052)

ệu tiẽn cho ngaột Port noỏi tieỏp

ệu tiẽn cho ngaột tửứ timer 1

ệu tiẽn cho ngaột ngoaứi

ệu tiẽn cho ngaột tửứ timer 0

ệu tiẽn cho ngaột ngoaứi 0 Toựm taột thanh ghi IP

Caực ngaột ửu tiẽn ủửụùc xoựa sau khi reset heọ thoỏng ủeồ ủaởt taỏt caỷcaực ngaột ụỷ mửực ửu tiẽn thaỏp hụn

9.2 Xửỷ lyự ngaột.

GVHD: ThS Lâm Tăng Đức Trang:- 30 - SVTH: Võ Ngọc Tuyến

Trang 31

Khi coự moọt ngaột xaồy ra vaứ ủửụùc CPU chaỏp nhaọn, chửụng trỡnhchớnh bũ ngaột quaừng Nhửừng hoát ủoọng sau xaồy ra:

- Thi haứnh hoaứn chổnh leọnh ủang hieọn haứnh

- Cất DC vaứo ngaột xeỏp

- Tráng thaựi ngaột hieọn haứnh ủửụùc caỏt bẽn trong

- Caực ngaột ủửụùc chaởn tái mửực cuỷa ngaột

- Nap vaứp DC ủũa chổ Vector cuỷa ISR

- ISR thửùc thi

ISR thửùc thi vaứ ủaựp ửựng ngaột, ISR hoaứn taỏt baống leọnh RET1 ẹiềunaứy laứm laỏy lái giaự trũ cuừ cuỷa PC tửứ ngaờn xeỏp vaứ laỏy lái trángthaựi ngaột cuừ Chửụng trỡnh lái tieỏp túc thi haứnh tái nụi maứ noự dửứng

 Caực Vector ngaột

Khi chaỏp nhaọn ngaột, giaự trũ ủửụùc náp vaứo PC ủửụùc gói laứ Vectorngaột Noự laứ ủũa chổ baột ủầu cuỷa ISR cho nguồn táo ngaột Caực Vectorngaột ủửụùc cho ụỷ baỷng sau:

Reset heọ thoỏngBẽn ngoaứi 0Timer 0

Bẽn ngoaứi 1Timer 1

Port noỏi tieỏp

RSTIE0TF0IE1TF1

TI hoaởc RI

0000H0003H000BH0013H001BH

0023H

Caực Vector ngaột

Vector reset heọ thoỏng (RST ụỷ ủũa chổ 0000H) noự gioỏng nhử moọtngaột Noự ngaột chửụng trỡnh chớnh vaứ taỷi vaứo PC moọt giaự trũ mụựi

Khi chổ ủeỏn moọt ngaột cụứ gãy ngaột tửù ủoọng bũ xoựa bụỷi phầncửựng, trửứ ra R1, T1 cho caực ngaột coồng noỏi tieỏp Vỡ coự hai nguồn coựtheồ coự cho ngaột naứy, khõng thửùc teỏ ủeồ CPU xoựa cụứ ngaột naứy Caựcbit phaỷi ủửụùc kieồm tra trong ISR ủeồ xaực ủũnh nguồn ngaột vaứ cụứ táongaột seừ ủửụùc xoựa baống phần mềm

9.3 Caực ngaột cuỷa 8051:

a Caực ngaột timer:

Caực ngaột timer coự ủũa chổ Vector ngaột laứ 000BH (timer 0) vaứ 001BH(timer 1) Ngaột timer xaồy ra khi caực thanh ghi timer (TLx ITHx) traứn vaứ setcụứ baựo traứn (TFx) lẽn 1 Caực cụứ timer (TFx) khõng bũ xoựa baống phầnmềm Khi cho pheựp caực ngaột, TFx tửù ủoọng bũ xoựa baống phần cửựng khiCPU chuyeồn ủeỏn ngaột

b Caực ngaột coồng noỏi tieỏp:

Trang 32

Ngaột coồng noỏi tieỏp xaồy ra khi hoaởc cụứ phaựt (TI) hoaởc cụứ ngaộtthu (KI) ủửụùc ủaởt lẽn 1 Ngaột phaựt xaồy ra khi moọt kyự tửù ủaừ ủửụùcnhaọn xong vaứ ủang ủụùi trong SBUP ủeồ ủửụùc ủóc.

Caực ngaột coồng noỏi tieỏp khaực vụựi caực ngaột timer Cụứ gãy rangaột coồng noỏi tieỏp khõng bũ xoựa baống phần cửựng khi CPU chuyeồn tụựingaột Do coự hai nguồn ngaột coồng noỏi tieỏp Ti vaứ RI Nguồn ngaột phaỷiủửụùc xaực ủũnh trong ISR vaứ cụứ táo ngaột seừ ủửụùc xoựa baống phầnmềm Caực ngaột timer cụứ ngaột ủửụùc xoựa baống phần cửựng khi CPUhửụựng tụựi ISR

c Caực ngaột ngoaứi :

- Caực ngaột ngoaứi xaồy ra khi coự moọt mửực thaỏp hoaởc cánh xuoỏngtrẽn chãn INT0 hoaởc INT1 cuỷa vi ủiều khieồn ẹãy laứ chửực naờngchuyeồn ủoồi cuỷa caực bit Port 3.(Port 3.2 vaứ Port 3.3)

Caực cụứ táo ngaột naứy laứ caực bit IE0 vaự IE1 trong TCON Khi quyền ủiềukhieồn ủaừ chuyeồn ủeỏn ISR, cụứ táo ra ngaột chổ ủửụùc xoựa neỏu ngaộtủửụùc tớch cửùc baống cánh xuoỏng Neỏu ngaột ủửụùc tớch cửùc theo mửực,thỡ nguồn yẽu cầu ngaột bẽn ngoaứi seừ ủiều khieồn mửực cuỷa cụứ thay chophần cửựng

Sửù lửùa chón ngaột tớch cửùc mửực thaỏp hay tớch cửùc cánh xuoỏngủửụùc laọp trỡnh qua caực bit IT0 vaứ IT1 trong TCON Neỏu IT1 = 0, ngaộtngoaứi 1 ủửụùc taực ủoọng baống mưực thaỏp ụỷ chãn IT1 Neỏu IT1 = 1 ngaộtngoaứi 1 seừ ủửụùc taực ủoọng baống cánh xuoỏng Trong cheỏ ủoọ naứy, neỏucaực maĩu liẽn tieỏp trẽn chãn INT1 chổ mửực cao trong moọt chu kyứ vaứchổ mửực thaỏp trong chu kyứ keỏ, cụứ yẽu cầu ngaột IE1 trong TCON ủửụùcủaởt lẽn 1, rồi bit IE yẽu cầu ngaột

Neỏu ngaột ngoaứi ủửụùc taực ủoọng baống cánh xuoỏng thỡ nguồn bẽnngoaứi phaỷi giửừ chãn taực ủoọng ụỷ mửực cao toỏi thieồu moọt chu kyứ vaứgiửừ noự ụỷ mửực thaỏp thẽm moọt chu kyứ nửừa ủeồ ủaỷm baỷo phaựt hieọnủửụùc cánh xuoỏng Neỏu ngaột ngoaứi ủửụùc taực ủoọng theo mửực thỡ nguồnbẽn ngoaứi phaỷi giửừ tớn hieọu yẽu cầu taực ủoọng cho ủeỏn khi ngaột ủửụùcyẽu cầu ủửụùc thaọt sửù táo ra vaứ khõng taực ủoọng yẽu cầu ngaột trửụựckhi ISR ủửụùc hoaứn taỏt Neỏu khõng moọt ngaột khaực seừ ủửụùc laởp lái.

a/ Định địa chỉ thanh ghi:

8051/8031 cĩ 4 dãy thanh ghi mỗi dãy cĩ 8 thanh ghi đánh số từ R0 đến R7

GVHD: ThS Lâm Tăng Đức Trang:- 32 - SVTH: Võ Ngọc Tuyến

Trang 33

Tại mỗi thời đỉêm chỉ có một dãy thanh ghi được tích cực Muốn chọn dãy thanhghi nào ta chỉ cần gán bit nhị phân thích hợp vào RS1 (PSW.4) và RS0(PSW.3)trong thanh ghi trạng thái chương trình (PSW).

Mã lệnh n n n

Địa thỉ thanh ghi

Ngoài ra một số thanh ghi đặc biệt như thanh ghi tích luỹ con trỏ giữ 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ệnhnày các thanh ghi tích luỹ được xác định 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 ghi tích luỹ B là AB

c/ Địa chỉ 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 quy ước dùng dấu @ trước R0 hoặc R1

Địa chỉ gián tiếp

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

Người ta dùng # 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 tham số hay biểu thức toán học Trường hợp dịch sẽ tự động tính toánvà thay thế dữ liệu trực tiếp vao mã lệnh

Địa chỉ tức thời

e/ Địa chỉ tương đối :

Địa chỉ tương đối chỉ dùng trong các lệnh nhảy 8051/8031 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

Trang 34

chỉ 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 là bản thân lệnh nhảy Thường lệnh này có liên quan đến nhãn được định nghĩa trước

địa chỉ tương đối

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

Địa chỉ tuyệt đối chỉ dùng trong các lệnh ACALL và AJMP Các lệnh 2 byte nàydùng để rẽ nhánh vào một trang 2 Kbyte cuả bộ nhớ chương trình bằng cách cấp 11bit địa chỉ thấp (A0-A10) để xác định địa chỉ bit trong mã.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ỉ của lệnh rẽ nhánh và địa chỉđích của lệnh rẽ nhánh phỉa cùng trang mã 2 Kbyte (có cùng 5 bit địa chỉ cao)

Xác định trang mã xác định điạ chỉ trong trang mã

địa chỉ tuyệt đối

h/ Địa chỉ tham chiếu :

Đia chỉ tham chiếu dùng một thanh ghi cơ bản (hoặc thanh ghi đếm chươngtrình PC hoặc thanh ghi con trỏ dữ liệu DPTR) và địa chỉ offset (trong thanh ghi 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ễ dàng được tạo ra để sử dụng địa chỉ tham chiếu

GVHD: ThS Lâm Tăng Đức Trang:- 34 - SVTH: Võ Ngọc Tuyến

Trang 35

Địa chỉ tham chiếu

Các chi tiết thiết lập lệnh:

Rn :Thanh ghi R0 đến R7 của dãy thanh ghi được chọn

Data : 8 bit địa chỉ vùng dữ liệu 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

@Ri : 8 bit vùng RAM dữ liệu trong (0-125) được đánh giá địa chỉ gián tiếp

qua thanh ghi R0 hoặc R1

#data : Hằng 8 bit chức trong câu lệnh

#data 16 : Hằng 16 bit chức trong câu lệnh

Addr16 : 16 bit địa chỉ được dùng trong LCALL và LJMP

Addr11 : 11 bit địa chỉ được dùng trong lệnh ACALL và AJMP

Rel : Byte offset 8 bit có dấu được dùng trong lệnh SJMP và những lệnh

nhảy có điều kiện

Bit : Bit được định địa chỉ trực tiếp trong RAM dữ liệu nội hoậc các thanh

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

a Nhóm lệnh sử lý số học:

ADD A,Rn (1byte, 1 chu kỳ máy) :cộng nội dung thanh ghi Rn vào thanh ghi A.ADD A,data (2,1): Cộng trực tiếp 1 byte vào thanh ghi A

ADD A,@Ri (1,1): 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,1):Cộng dữ liệu tức thời vào A

ADD A,Rn (1,1): Cộng thanh ghi và cờ nhớ vào A

ADD A,data (2,1): Cộng trực tiếp byte dữ liệu và cờ nhớ vào A

ADDC A,@Ri (1,1): Cộng gián tiếp nội dung RAM và cờ nhớ vào A

ADDC A,#data (2,1): Cộng dữ liệu tức thời và cờ nhớ vào A

SUBB A,Rn (1,1): Trừ nội dung thanh ghi A cho nội dung thanh ghi Rn và

cờ nhớ

SUBB A,data (2,1): Trừ trực tiếp A cho một số và cờ nhớ

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

SUBB A,#data (2,1): Trừ nội dung A cho một số tức thời và cờ nhớ

INC A (1,1): Tăng nội dung thanh ghi A lên 1

INC Rn (1,1): Tăng nội dung thanh ghi Rn lên 1

Trang 36

INC data (2,1): Tăng dữ liệu trực tiếp lên 1.

INC @Ri (1,1): Tăng gián tiếp nội dung vùng RAM lên 1

DEC A (1,1): Giảm nội dung thanh ghi A xuống 1

DEC Rn (1,1): Giảm nội dung thanh ghi Rn xuống 1

DEC data (2,1): Giảm dữ liệu trực tiếp xuống 1

DEC @Ri (1,1): Giảm gián tiếp nội dung vùng RAM xuống 1

INC DPTR (1,2): Tăng nội dung con trỏ dữ liệu lên 1

MUL AB (1,4): Nhân nội dung thanh ghi A và nội dung thanh ghi B.DIV AB (1,4): Chia nội dung thanh ghi A cho nội dung thanh ghi B

DA A (1,1,): hiệu chỉnh thập phân thanh ghi A

ANL A,#data (2,1): AND nội dung thanh ghi 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

ANL data,#data (3,2): AND một dữ liệu trực tiếp A với một dữ liệu tức thời.ANL C,bit (2,2):AND cờ nhớ với 1 bit trực tiếp

ANL C,/bit (2,2): AND cờ nhớ với bù 1 bit trực tiếp

ORL A,Rn (1,1): OR thanh ghi A với thanh ghi Rn

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 ghi 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 ghi A

ORL data,#data (3,1):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 bit trực tiếp

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

XRL A,Rn (1,1): XOR thanh ghi A với thanh ghi 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 dara,#data (3,1): XOR một dữ liệu trực tiếp với 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

Trang 37

CPL bit (2,1): Bù một bit trực tiếp

RL A (1,1): Quay trái nội dung thanh ghi A

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 (1,1): Quay trái nội dung thanh ghi A 1 nibble (1/2byte)

c/ 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 ghi A

MOV A,data (2,1): Chuyển dữ liệu trực tiếp vào thanh ghi A

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

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

MOV Rn,data (2,2): Chuyển dữ liệu trực tiếp vào thanh ghi Rn

MOV Rn,#data (2,1): Chuyển dữ liệu trực tiếp vào thanh ghi Rn

MOV data,A (2,1): Chuyển nội dung thanh ghi 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 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 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 gián tiếpMOV 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 ghi 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 DPTR,#data6 (3,2): Chuyển một hằng 16 bit vào thanh ghi con trỏ dữ liệu.MOV C,bit (2,1): Chuyển một bit trực tiếp vào cờ nhớ

MOV bit,C (2,2): Chuyển cờ nhớ vào một bit trực tiếp

MOV A,@A+DPTR (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ

@A+DPRT vào thanh ghi A

MOVC A,@A+PC (1,2): Chuyển byte bộ nhớ chương trình có địa chỉ @A+PC vàothanh ghi A

MOV A,@Ri (1,2): Chuyển dữ liệu ngoài (8 bit đị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 A ra dữ liệu ngoài (8 bit địa chỉ)

MOVX @DPTR,A (1,2): Chuyển nội dung 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) : Chuyển dữ liệu trực tiếp vào 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 ghi A và một dữ liệu trực tiếp

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

XCHD A,@R (1,1): Trao đổi giữa nibble thấp (LSN) của thanh ghi A với LSN của

dữ liệu gián tiếp

d/ Nhóm lệnh xử lý bit:

Trang 38

ACALL addr11 (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

RET1 (1,2): Trở về từ lệnh gọi ngắt

AJMP addr11 (2,2): Nhảy tuyệt đối

LJMP addr16 (3,2): Nhảy dài

SJMP 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=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

JNC 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á bit.CJNE A,data,rel (3,2): So sánh dữ liệu trực tiếp với A và nhảy nếu không bằng.CJNE A,#data,rel (3,2): So sánh dữ liệu tức thời với A và nhảy nếu không bằng.CJNE Rn,#data,rel (3,2): So sánh dữ liệu tức thời với nội dung thanh ghi Rn và

nhảy nếu không bằng

CJNE @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

DJNZ Rn,rel (2,2): Giảm thanh ghi Rn và giảm 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

Tóm tắt hoạt động của các lệnh

JC rel (2,2) : Nhảy đến rel nếu cờ Carry C được set bằng 1

JNC rel (2,2) : Nhảy nếu cờ nhớ không được set bằng 1 (C=0)

JB bit,rel (3,2) : Nhảy nếu bit được set bằng 1

JNB bit,rel (3,2) : Nhảy nếu bit không được set bằng 1

JBC bit,rel (3,2) : Nhảy nếu bit được set bằng 1 và xoá bit

ACALL addr11 (2,2) : Lệnh gọi chương trình con (gọi tuyệt đối trong 2K) LCALL addr16 (2,2) : Lệnh gọi dài chương trìnhcon trong 64K

RET (1,2) : Kết thúc chương trình con trở về chương trình chính

RETI (1,2) : Kết thúc thủ tục phục vụ ngắt quay về chương trình

chính,hoạt

GVHD: ThS Lâm Tăng Đức Trang:- 38 - SVTH: Võ Ngọc Tuyến

Trang 39

động tương tự như RET.

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

LJMP Addr16 (2,2) : Nhảy dài không điều kiển trong 64K (hoạt động tương tự như lệnh LCALL)

SJMP rel (2,2) : Nhảy ngắn không điều kiện

JMP @A+DPTR (1,2) : Nhảy không điều kiện đến địa chỉ A + DPTR

JZ rel (2,2) : Nhảy nếu A=0

JNZ rel (2,2) : Nhảy nếu A khác 0

CJNE A.direct,rel (3,2) : So sánh và nhảy đến rel nếu khụng bằng

CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel

CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel

CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel

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

DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel

4 5 6 7

3 7

3 6

3 3 3

Trang 40

Hỡnh 3.1: Sơ đồ chân và sơ đồ logic 8255A.

Tên các chân 8255A:

D7-D0 Data bus (Bi-Direction)

RESET Reset input

Ngày đăng: 28/07/2014, 19:37

HÌNH ẢNH LIÊN QUAN

Bảng 2.1 : Chức năng của các chân trên port3 - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Bảng 2.1 Chức năng của các chân trên port3 (Trang 5)
Hình 2.2: Sơ đồ chân 8051 - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Hình 2.2 Sơ đồ chân 8051 (Trang 7)
Bảng 2.2: Thanh ghi PSW - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Bảng 2.2 Thanh ghi PSW (Trang 11)
Hình 2.4:Giao tiếp giữa 8051 và EPROM - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Hình 2.4 Giao tiếp giữa 8051 và EPROM (Trang 15)
Hình 2.9:Mạch reset hệ thống - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Hình 2.9 Mạch reset hệ thống (Trang 18)
Bảng 2.3 trạng thái các thanh ghi sau khi reset - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Bảng 2.3 trạng thái các thanh ghi sau khi reset (Trang 19)
Bảng 2.4: Thanh ghi chức năng đặc biệt dùng timer. - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Bảng 2.4 Thanh ghi chức năng đặc biệt dùng timer (Trang 20)
Sơ đồ Logic - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
ogic (Trang 39)
Hỡnh 6.2 Sụ ủồ nguyẽn lyự cụ baỷn cuỷa mách chuyeồn ủoồi AD duứng - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
nh 6.2 Sụ ủồ nguyẽn lyự cụ baỷn cuỷa mách chuyeồn ủoồi AD duứng (Trang 51)
Hỡnh  6.4: Sụ ủồ khoỏi mách chuyeồn ủoồi AD duứng phửụng phaựp song song - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
nh 6.4: Sụ ủồ khoỏi mách chuyeồn ủoồi AD duứng phửụng phaựp song song (Trang 54)
Hỡnh 6.1 :Sụ ủoà khoỏi cuỷa heọ thoỏng ủo lửụứng soỏ b.   Nguyẽn lyự hoát ủoọng: - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
nh 6.1 :Sụ ủoà khoỏi cuỷa heọ thoỏng ủo lửụứng soỏ b. Nguyẽn lyự hoát ủoọng: (Trang 55)
Sơ đồ thuật toỏn :                                                                                                                                                                         Start - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Sơ đồ thu ật toỏn : Start (Trang 73)
Sơ đồ chừn của 7474A: - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Sơ đồ ch ừn của 7474A: (Trang 82)
Sơ đồ cụ thể như sau: - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
Sơ đồ c ụ thể như sau: (Trang 84)
1. Sơ đồ nguyên lý: - ỨNG DỤNG VI ĐIỀU KHIỂN AT89C51 ĐO ĐỘ ẨM VÀ KHỐNG CHẾ ĐỘ ẨM TRONG PHÒNG KÍN
1. Sơ đồ nguyên lý: (Trang 87)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w