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

Thiết kế và thi công mạch đồng hồ điện tử dùng 89c51

105 29 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 105
Dung lượng 3,15 MB

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

Nội dung

Phẩn ĩ : Kiến thức liên quan Chương ĩ: Giđi thiệu vi điều khiển AT89C51PHẨNB: KIẾN THỨC LBÊN QUAN CHƯƠNG l i GIỚI THIỆU VI ĐIÊU K H lỂ N AT89C51 DA 4.: ___ 1 ' X Bộ ñ điều khiển viết tắ

Trang 1

NGUYỄN VIỆT HÙNG NGUYỄN LAM

10101104 01ĐĐT2

r m v m PHÒL-J<TCN

THƯ VIỆN

Trang 2

BỘ GIÁO DỤC & DÀO TẠO

TRƯONG ĐẠI HỌC DL K Ỹ THUẬT CÔNG NGHỆ

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

*********

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc Lập - Tự Do - Hạnh Phúc

— 0O0- —

NHIỆM VỤ LUẬN ÁN TÔT NGHIỆP

Chú í : sv phải đóng bản nhiệm vụ này vào trang thứ nhâ'l của luận án

4 Ngày hoàn thành nhiệm vụ : G /4 / '2006

1/

2 /

AkưVLỊ

Nội dung và yêu cầu LATN đã được thông qua

Ngày ,A?T tháng .lủ năm 20oS”

TRƯỞNG KHOA

( KÝ và ỊỊỈti rò họ tên)

NGƯỜI HƯỚNG DẪN CHÍNH

Ị Kỷ vỉ, /~v< rò hụ tôn)

Trang 3

LUẬN VĂN TỐT NGHIỆP ĐỒNG HỒ ĐIỆN TỬ

Xin cảm ơn quí Thầy Cô khoa Điện - Điện tử và các bạn sinh viên cùng khóa đã đóng góp những ý kiến quí báu để quyển luận văn này hoàn thành đúng thời hạn

Trang 4

LUẬN VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ

MỤC LỤC

PHẦN A: DẪN N H Ậ P

I ĐẶT VẤN Đ E 6

II GIỚI HẠN ĐỀ T À I zzzz.zzzzzzzzzzzzzzz;6 III MỤC ĐÍCH NGHIÊN C Ứ ư Z Z Z Z Z Z Z Z Z Z Z Z Z " ! l 6 IV MỞ RỘNG ĐỀ TÀI 6

PHẦN B: KIẾN THỨC LIÊN QUAN 7

CHƯƠNG I: GIỚI THIỆU AT89C51 Z Z Z Z Z Z Z Z Z Z Z I I Z 7 I ĐỊNH NGHĨA VI ĐIÊU KHIÊN 7

II LỊCH SỬ PHÁT TRIỂN CỦA CÁC BỘ VI ĐIÊU KHIÊN 7

III GIỚI THIỆU S ơ LƯỢC 89C51 8

IV S ơ ĐỒ VÀ CHỨC NĂNG TỪNG CHÂN CỦA 89C51 9

V TỔ CHỨC BỘ NHỚ 12

1 RAM đa dụng 13

2 RAM địa chỉ hóa từng b it 15

3 Các bank thanh g h i 15

VI CÁC THANH GHI CHỨC NĂNG ĐẶC B IỆ T 15

1 Từ trạng thái chương trình 16

2 Thanh ghi B 17

3 Con trỏ ngăn xếp 18

4 Con trỏ dữ liệu 18

5 Các thanh ghi port xuất nhập 18

6 Các thanh ghi tim er 19

7 Các thanh ghi port nổí tiếp 19

8 Các thanh ghi điều khiển n g ắ t 19

9 Thanh ghi điều khiển công suâlt 19

VII BỘ NHỚ NGOÀI 20

L Truy xuất bộ nhớ chương trình ngoài 20

2 Truy xuất bộ nhơ dữ liệu ngoài 22

VIII LỆNH RESET 23

IX pO ẠT ĐỘNG CỦA BỘ ĐỊNH THỜI (T im er) 24

1 Giời thiệu 24

2 Thanh ghi c h ế độ tiiiier (TMOD) 25

3 !Thanh ghi điều khiển timer (TCON) 26

4 ịCác ch ế độ tim er 26

5 Nguồn tạo xung nhịp 27

6.iBắt đầu, dừng và diều khiển các tim er 28

Trang 5

LUẬN Ị VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ

XI.

7 Khởi động và truy xua't các thanh ghi tim er 29

lỉ Các khoảng ngắn và các khoảng d ài 30

X ỊNGẮT (INTERRUPT) Z Z Z Z Z Z Z ! 31 Giới thiệu .32

t Tô’ chức ngắt của 89C51 32

Xử lý n g ắ t Z Z Z Z Z 34 Thiêt kê chương trình dùng các n g ắ t 35

Các ngắt của 89C 51 , 35

1 HOẠT ĐỘNG PORT N ố i T m p Z Z Z Z Z Z Z Z Z Z Z " Z Z Z 37 Giới thiệu 37

!• Thanh ghi điều khiển port nốì tiếp 38

1 Khởi động và truy xuẩìt các thanh ghi cểng nốĩ tiế p 39

XII TẬP LỆNH CỦA 89C51: 1 1 1 ”*42

1 Các chê'độ đánh địa c h ỉ 42

2 Các nhóm lệnh của 89C 51 44

CHƯƠNG II: GIỚI THIỆU MODULE LC d ZZZZZZZZZZZZZZ” 51 LCẤU TRÚC PHẦN CỨNG CỦA MODULE LCD Z Z Z Z Z Z Z Z ! 51 1 Giởi thiệu 53

2, c ấ ủ trúc phần cứng của module L C D 53

3, Câu trúc các thanh ghi bên trong L C D 54

II MÃ LỆNH ĐIỀU KHIỂN CỦA LCD ZZZZZZZZZZZZZ 56 Display C lea r 55

Return H om e 55

Entry Mode S e t 55

Display ON/OFF Control 55

Cursor or Display Shift 57

Function S e t 5g Set CGRAM Address 58

Set DDRAM Address 58

Read Busy Flag & A ddress 58

10 Write Data To RAM Z Z Z Z Z Z Z Z Z Z Z 59 11 Read Data To R A M .59

HI ] ỉộ ĐỊNH THỜI (Timing characteristics) 59

1 Write Operation 59

2 Read O peration 50

CHƯƠNG III: GIỚI THIỆU DS1307 Z 62

I GIỚI TH IỆU ! Z Z Z Z Z Z Z Z Z Z Z Z I Z Z Z Z 62 II C 4C CHAN CỦA DS1307zzzzzzzzzzzzzzzzzzz 64 III I [OẠT ĐỘNG CỦA DS1307ZZZZZZZZZ-ZZZZZZZZ' 64 1 Hạch tạo dao động 55

2 : )ộ chính xác của đổng h ồ 55

1

2.

3

4

5.

6

7,

8

9.

Trang 6

LUẬN VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ

Bus dữ liệu I2C

:: THIẾT KẾ VÀ THI CÔ NG

ƠNGI: THIẾT KẾ VÀ THI CÔNG

PHẦN CỨNG

] Thiết k ế các khối

í I Sơ đồ nguyên lý mạch hoàn chỉnh

2 Nguyên lý hoạt động của m ạch

< Tính toán giá trị các linh kiện của mạch

„73 73 73 7 4 .7 8 .7 8 103

Trang 7

LUẬN VĂN TỐT NGHIỆP ĐỔNG HỔ ĐIỆN TỬ

LỜI NÓI ĐẦU

Trong thời đại ngày nay cùng với sự phát triển của xã hội, khoa hoc kỹ thuật cũng không ngừng tiến bộ để đáp ứng những nhu cầu trong cuộc sống hàng ngày của COE người Những thiết bị tiên tiến như: Tivi, đầu Video, Walkman, đầu VCD

và đầu DVD đã được tạo ra nhằm đáp ứng phần nào những nhu cầu này

Vì trong cuộc sống hiện đại thời gian giữ vai trò rất quan trọng nên những thiết

bị báo thời gian cũng góp phần không nhỏ trong việc định thời gian chính xác cho mọi người trong công việc cũng như trong các hoạt động vui chơi Còn rất nhiều mạch đổng hồ tiên tiên khác nhau nhưng ở quyển luận văn này chỉ khảo sát mạch báo thờ: gian dùng vi điều khiển Qua quyển luận văn này sẽ giúp em hiểu rõ hơn

về bộ vi điều khiển và những kiến thức liên quan đến đề tài

Do tiờ i gian và kiến thức có hạn nên quyển luận văn này sẽ không tránh khỏi những thiếu sót Rât mong sự đóng góp ý kiến của quí Thầy Cô cùng các bạn

Trường Đại Học Dân Lập Kỹ Thuật Công Nghệ

Sinh viên thực hiện luận văn

Nguyễn Lam

Trang 8

Ngày nay cùng với sự phát triển vượt bậc của khoa hoc kỹ thuật, công nghệ

;n tl’f P Í Ì n ơ n h á t t r i ể n r n n r r r ã i t o n r o h ò n n I n o t nViíVnr, cũng phát triển rộng rãi, tạo ra hàng loạt những thiết bi có các đăc điểm U4 „X -».t _

như độ chính xác cao, gọn nhẹ và tiện nghi cho người sử dụng,

trong những ứng dụng rất quan trọng trong công nghệ điện tử là tự động làm việc theo yêu cầu, thời gian định trước của con người đã góp phần nâng cao chất lương cuộc sống của con người Xuất phát từ những ứng dụng trên, em đã thiết kế và thi công mạch đồng hồ điện tử

ĨI GIỎ ĩ HAN ĐỂ TẰT:

Do kiến thức và thời gian có hạn nên trong luận án này chỉ thi công mạch đồng

ô có chức năng hiển thị giờ, báo chuông và ngày-tháng-năm của dương

t l ơ p n riliiV r» n o n r r H i ố r» NTV» 1 1 *n rr tv» A Ẩ r» rr U Ầ • AI 1 _ 1 _ • Ạ7

hồ có

lịch,khổng có chức năng khác Nhưng mạch đồng hồ hiển thị số dùng vi điều khiển

là một dề tài thực tế ứng dụng rất nhiều trong cơ quan, xí nghiệp, nhà máy Hơn nữa với sự phát triển không ngừng của khoa học kĩ thuật trong lĩnh vực vi xử lý vi điều kh ển đồng hồ không chỉ là báo thời gian mà còn có các chức năng đặc biệt khác míing lại sự thoải mái cho con người Với sự ứng dụng của vi điều khiển điều này được thực hiện dễ dàng hơn

ĩ ĩ ĩ MUC Đ ÍC H NGHTÊN CỨU:

Mục đích trước hết khi thực hiện đề tài này là để hoàn tất chương trình môn học để ¿tủ điều kiện ra trường

Cụ thể khi nghiên cứu thực hiện đề tài là em muốín phát huy những thành quả ứng dụng của vi điều khiển nhằm tạo ra những sản phẩm, những thiết bị tiên tiến hơn, và ĩạt hiệu quả sản xuất cao hơn

M ặt khác quyển luận văn này cũng có thể làm tài liệu tham khảo cho những sinh viên khóa sau Giúp họ hiểu rõ hơn về những ứng dụng của vi điều khiển

Ngoẵ i ra quá trình nghiên cứu thực hiện đề tài là một cơ hội để em tự kiểm tra lại những kiến thức đã được học ở trường, đồng thời phát huy tính sáng tạo, khả năng giải quyết một vấn đề theo yêu cầu đặt ra Và đây cũng là dịp đe chúng em

tự khẳng định mình trước khi ra trường để tham gia vào các hoạt động sản xuất của

đề này và năng cao tính hữu dụng của nó ta thiết k ế cho mạch đồng hồ một remote điều k h iln từ xa Hoặc vận dụng các remote tivi đầu máy làm remote cho đồng

hồ Trong trường hợp này ta chỉ thiết k ế bộ phận thu hồng ngoại gắn trực tiếp trên mạch đồng hồ

Trang 9

Phẩn ĩ : Kiến thức liên quan Chương ĩ: Giđi thiệu vi điều khiển AT89C51

PHẨNB: KIẾN THỨC LBÊN QUAN

CHƯƠNG l i GIỚI THIỆU VI ĐIÊU K H lỂ N AT89C51

DA 4.: _ 1 ' X

Bộ ñ điều khiển viết tắt là Micro - controller, là mạch tích hợp trên một chip

có thể i ập trình được, dùng để điều khiển hoạt động của một hệ thống Theo các

tập lệnl I của người lập trình, bộ vi điều khiển tiến hành đọc, lưu trữ thông tin, xử lí thông ti n, đo thời gian và tiến hành đóng mở một cơ cấu nẩo đó

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ển hoạt độịig của ti vi, máy giặt, đầu đọc laser, điện thoại, lò vi b a , Trong hệ thông

Các hệ hông càng thông minh thì vai trò của hệ vi điều khiển càng quan trọng ĨLLỊCĨ1 SỬ PH Á T T R IỂN CỦA CÁC BỐ V ĩ Đ ĩỀ ĩĩ KHTFN-

Bộ vi điều khiển thực ra là một loại vi xử lí trong tập hợp các bộ vi xử lí nói chung 1 ỉộ vi điều khiển được phát ữiển từ bộ vi xử lí, từ những năm 70 do sự phát triển và hoàn thiện về công nghệ vi điện tử dựa ưên kỹ thuật MOS (Metal - Oxide

- Semic onductor), mức độ tích hợp của các linh kiện bán dẫn trong mộ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 Texas Instruments 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ột trì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ớ

in, khôi lồ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ử

Mãi nên năm 1976, cồng ty INTEL (Interlligen - Elictronics) 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 Bên cạnh bộ vi xử lí trung tâ n , 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ột chip

như 8041Î và hình thành họ vi điều khiển MCS - 48 (Microcontroller - system - 48)

với tên gọi 8051 Và sau đó hàng loạt các vi điều khiển cùng loại với

lay họ vi điều khiển 8 bit MCS-51 đã có đến 250 thành viên và hầu hết

ty đều là những công ty hàng đầu th ế giới về chế tạo Đứng đầu là công

- và rất nhiều công ty khác nhứ: AMD, SIEMENS, PHILIPS, DALLAS,

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ư:

Trang 10

Phần ĩ : Kiến thức liên quan Chương L Giđi thiệu vi điều khiển AT89C51

II GIC

89C

các đặc

Họ ST62 của công ty SGS - THOMSON

Họ H8 của công ty Hitachi

Họ PIC của công ty Microchip

64 KByte không gian bộ nhớ chương ữình mở rộng

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

Trang 11

Phần ĩ Ị: Kiến thức liên quan Chương I: Giời thiệu vi điều khiển AT89C51

Phần chính của vi điều khiển 89C51 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 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: Program Status Word)

Bốn băng thanh ghi

Chương trình đang chạy có thể cho dừng lại nhờ một khôi điều khiển ngắt ở

bên ngqài Các nguồn ngắt có thể là: các biến cố ở bên ngoài, sự tràn bộ đếm định

thời hoặịc cũng có thể là giao diện nối tiếp

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

Các cổng (port 0, port 1, port 2, port 3) sử dụng vào mục đích điều khiển

Ở CC 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ôì giao diện nối tiếp, cũng như các đường ngắt dẫn bên ngoài.

Giad 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àm việ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à đươclân định bằng một bộ định thời

Đơn

Trong vi điều khiển 89C51 có hai thành phần quan trọng khác đó là bộ nhớ và

• Bộ nhớ gồm có bộ nhớ RAM và ROM 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àm việc nó làm thay đổi nội dung của các thanh ghi

IV- S ơ ĩ 'Ổ VẢ CHỨC NĂNG TỪNG CHẮN CỦA 89C51:

Trong đ(

89C^1 là 1 vi mạch có 40 chân mỗi chân có 1 chức năng đặc biệt khác nhau,

ng đ(' có 24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuât nhậ p hoặc như đường điều khiển hoặc là thành phần của bus dữ liệu và bus địa chỉ

Trang 12

Phần ĩ : Kiến thức liên quan Chương I: Giời thiệu vi điều khiển AT89C51

6

7,

8

_9 19 18

23 24 25 26 27 28 39 38 37 36 35 34 33 32 31 30 29

là bus dữ liệu 8 bit

2 P a rt 1: Port 1 là một port I/O trên chân 1 - 8 Các chân được ký hiệu P l.o

P l l cp thể dùng cho giao tiếp với các thết bị ngoài nếu cần Port 1 không có chức năng khác, và vậy chúng chỉ dùng cho giao tiếp với các thiết bị ngoài hoặc trao đổi ilữ liệu với các hệ thống khác

3 P o rt 2: Port 2 là một port công dụng kép ưên các chân 21- 28 được dùng như

g xuât nhập hoặc là byte cao của bus địa chỉ với các thiết k ế dùng bộ nhớ

4 Poit_3: Port 3 là một porkcông dụng kép trên các chân 10 -17 Mỗi chân của

* f n ồ v t n V o r * r \ n n r t Ỷ T t y-x A Ẫ ì y l í ĩ » K A , , SJ « „ X ~ x „ — S í i y _ 1 _ ■ A M 1 9

vừa có chức năng trao đổi dữ liệu vừa có các chức năng đặc biệt như ở

Trang 13

Phẩn B ; Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51

P3.6

5 PSEN (Program Store Enable): PSEN là tín hiệu ra trên chân 29 Nó là tín

hiệu điệu khiển để cho phép bộ nhớ chương trình mở rộng và thường được nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh.PSEịịN sẽ ở mức thấp trong thời gian lây lệnh Các mã nhị phân của chương trình đtỊợc đọc từ EPROM qua bus dữ liệu và được chốt vào thành ghi lệnh của 89C51 ậể giải mã lệnh Khi thi hành chương trình trong ROM nội PSEN sẽ ở mức thụ độnậ (mức cao)

6 AỊLE (Address Latch Enable): Tín hiệu ra ALE trên chân 30 tương hơp với

các thiêậ bị làm việc với vi xử lý 8080, 8085, 8088, 8086 89C51 dùng ALE một

trong clỊế độ chuyển đổi của nó: vừa là bus dữ liệu vừa là byte thấp của bus địa chỉ, ALÉ 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 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 chip và có thể được dùng làm nguồn 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 ngõ vào cho (xung lập trình cho EPROM trong các loại có ROM nội

Í

7 EA (External Access):Tín hiệu vào EA 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, 89C51 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 chỉ

được thi hành từ bộ nhớ mở rộng Nêu EA được nối mức thấp bộ nhớ bên trong chương {rình 89C51 sẽ bị cấm và chương trình thi hành từ EEPROM mở rộng Người taịcòn dùng EA làm chân cấp điện áp Vp khi lập trình cho ROM trong

i (Reset):Ngõ vào RST trên chân 9 là ngõ reset của 89C51 Khi tín hiệu

này đượệ đưa lên mức cao (trong ít nhất 2 chu kì máy), các thanh ghi bên trong 89C51 được tải những giá trị thích hợp để khội động hệ thống

9 C^c ngõ vào bô dao đỏng tr ẽ n chip: 89C51 có một bộ dao động trên chip

Nó thườiịg được nối với một thạch anh giữa hai chân 18 và 19 Các tụ giữ cũng cần

Trang 14

10 |Các chân nguồn: 89C51 sử dụng nguồn đơn +5V Vcc được nói vào chân

40 và Ỹss (GND) được nối vào chân 20

V TỔ CHỨC BỎ NHỚ:

89C|51 có bộ nhớ theo câu trúc Harvart: có những vùng bộ nhớ riêng biệt cho chương trình và dữ liệu Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong; 4ù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối

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

Bộ ịihđ bên trong bao gồm ROM nội và RAM trên chip, RAM trên chip bao gồm nh|ều phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh gỊii và các thanh ghi chức năng đặc biệt

Trang 15

Phẩn lị: Kiến thức liên quan Chương ĩ: Giđi thiệu vi điều khiển AT89C51

1 B AM đa dunff:

RAM ĐA DỤNG 0

Trang 16

Phần 11: Kiến thức liên quan Chương ĩ: Giời thiệu vi điều khiển AT89C51

Địa chỉ bit

EOD

B8BOA8AO

999890

8

8C8B8A89

88

87

83828180

k h ô n g đ ư ợ c đ ịa chỉ h óa bit

k h ô n g đ ư ợ c đ ịa chỉ hóa bit

k h ô n g đ ư ợ c đ ịa chỉ h óa bit

không được địa chỉ hóa bit

k h ô n g đ ư ợ c đ ịa chỉ hóa bit 8E 8D 8C 8B 00 > 00 05

k h ô n g đ ư ợ c đ ịa chỉ h óa bit

khô n g đ ư ợ c đ ịa chi hóa bit không đ ư ợ c đ ịa chỉ h óa bit khô n g đ ư ợ c đ ịa chỉ hóa bit

87 86 85 1 84 83 1 82 81 80

EACCPSW

IPP3IE

P2

SBUFSCONP1

THITHOTL1TLOTMODTCONPCON

DPHDPLSPPOTóm tắt bộ nhớ dữ liệu trên chip của Các thanh ghi chức năng đặc biệt

dù trên hình cho thây 80 byte RAM đa dụng chiếm các địa chỉ từ 30H- Dyte dưới cùng từ OOH đến 1FH cũng có thể được dùng với mục đích tương

Ậù các địa chỉ này đã có mục đích khác)

Trang 17

Phẩn ĩ : Kiến thức liên quan Chương I: Giởi thiệu vi điều khiển AT89C51

MOV A, 5FHLệnh này di chuyển một bit dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “đia chỉ nguồn” (5FH) Đích nhận dữ liệu được ngầm xác định ữong mã lệnh

là thanh ghi 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 RO hay R l Ví dụ, sau khi thi hành cùng nhiệm vụ như lệnh đơn ở trên:

MOV RO, #5FHMOV A, @R0

thanh ghi tích lũy

2 RAM đia chỉ hóa từng bit;

89C 51 chứa 210 bit được địa chỉ hóa, trong đó 128 bit là ở các địa chỉ byte 20H đên 2FÍ [ và phần còn lại là trong các thanh ghi chức năng đặc biệt

Ý tư ẳng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của

vi điều khiển nói chung Các bit có thể được đặt, xóa, AND, OR, với một lệnh đơn Đa sô" các vi xử lý đòi hỏi một chuỗi lệnh đọc - sửa - ghi để đạt được hiệu ủatương tự Hơn nữa, các port I/O cũng được địa chỉ hóa từng bit làm đơn giản phần mé m xuất nhập từng bit

Có 128 bit được địa chỉ hóa đa dụng ở các byte 20H đến 2FH Các địa chỉ này được truv xuất như các byte hoặc như các bit phụ thuộc vào lệnh được dừng

3 dác bank thanh ghi:

32 bvte thấp nhất của bộ nhớ nội là dành cho các bank thanh hi Bộ lệnh của 8051/80B1 hỗ trợ 8 thanh ghi (RO đến R7) và theo mặc định (sau khi Reset hệ thông) cac thanh ghi này ở các địa chỉ 00H-07H

Bank thanh ghi tích cực có thể chuyển đổi bằng cách thay đổi các bit chọn bank thanh ghi trong từ trạng thái chương trình (PSW)

Ý 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)

Vĩ CẮC THANH GHI CHỨC NẤNG ĐẢC BĨỂT:

Các Ihanh ghi trong MCS51 được định dạng như một phần của RAM trên chip

Trang 18

Phẩn ĩ : Kiến thức liên quan _ Chương ĩ: Giđi thiệu vi điều khiển AT89C51

thanh ghi lệnh và các thanh ghi bày hiếm khi bị tác động trực tiếp, nên không có lợi khi lìặc chúng trong RAM trên chip) Cũng như RO đến R7 có 21 thanh ghi chức năng đầc biệt (SFR: Special Function Register) ở vùng trên 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, ¿ h ỉ có 21 địa chỉ SFR là được định nghĩa

Ngoại trừ thanh ghi tích lũy (A) có thể được truy xuất ngầm như đã nói, đa số các SFR được truy xuất dùng địa chỉ trực tiếp Chú ý rằng một vài SFR có thể được địa chỉ hóa bit hoặc byte Người thiết k ế phải thận trọng trong truy xuất bit và

SETB OEOH

sẽ set b It 0 trong thanh ghi tích lũy, các bit khác không thay đổi Ta thấy rằng EOH

đồng thpi là địa chỉ byte của thanh ghi tích lũy và là địa chỉ bit có trọng số nhỏ nhất trong thanh ghi tích lũy Vì lệnh SETB chỉ tác động trên bit, nên chỉ có địa chỉ bit là ca hiệu quả

1 T if trang thái chương trình:

Từ trạng thái chương trình (PSW: Program Status Word) ở địa chỉ DOH chứa các bit t ang thái như bảng tóm tắt sau:

ov

Địa chỉD7HD6HD5HD4HD3H

D2HD1HDOH

Ý nghĩa

Cờ nhớ

Cờ nhớ phụ CỜOBit 1 chọn bank thanh ghi Bit 0 chọn bank thanh ghi

00 = bank 0: địa chỉ OOH - 07H

01 = bank 1: địa chỉ 08H - OFH

Trang 19

Phần ĩ : Kiến thức liên quan Chương I: Giổi thiệu vi điều khiển AT89C51

Cờ ihớ (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 FFH, thì lệnh sau:

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 bit cho các lệnh luận lý thi hành trên bit Ví dụ, lệnh sau sẽ AND bit 25 với cờ nhớ và đặt kết quả trở vào cờ nhớ:

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

* Cá c bit chon bank thanh ghi:

Các bit chọn bank thanh ghi (RSO và RS1) xác định bank thanh ghi được tích cực Chiing được xóa sau khi reset hệ thông và được thay đổi bằng phần mềm nếu cần Ví ỉụ, ba lệnh sau cho phép bank thanh ghi 3 và di chuyển nội dung của thanh ghi R7 ( ỉịa chỉ byte 1FH) đến thanh ghi tích lũy:

SETB RS1SETB RSOMOV A, R7Khi 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à “RSO ” Vậy, lẹnh SETB RS1 sẽ giống như lệnh SETB 0D4H

* Cờ tràn:

này để xác định xem kết quả có nằm trong tầm xác định không Khi các số không dâu được cộng, bit ov có thể được bỏ qua Các kết quả lớn hơn ( +127 ) hoặc nhỏ

Trang 20

Phẩn BỊ: Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51

jon trỏ ngăn xếp:

Cod trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở địa chỉ 81h Nó chứa địa chỉ của byte dũi liệu hiện hành trên đỉnh của ngăn xêp Các lệnh trên ngăn xếp bao gồm các tha® tác cât dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp Lệnh cất dữ liệu vàổ ngăn xếp sẽ làm tang SP trước khi ghi dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn x rp sẽ đọc dữ liệu và giảm SP Ngăn xếp của 8051/8031 được giữ trong RAM n )i và được giới hạn các địa chỉ có thể truy xuất bằng địa chỉ gián tiếp Chúng là 128 byte đầu của 89C51

MOV SP,#5FH

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

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

vùng R / M này đã được dùng làm ngăn xếp

Ngări 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à lay 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 tịình

Ị trỏ dữ liêu:

Con jrỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi

16 bit ở ẩịa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao) Ba lệnh sau sẽ ghi 55H vàoỊRAM ngoài ở địa chỉ 1000H:

MOV A, #55HMOV DPTR, #1000H

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

5 Cái: thanh ghi port xuất nhâp;

Các p:>rt của 89C51 bao gồm pòrt 0 ở địa chỉ 80H, Port 1 ở địa chỉ 90H, Port 2

Trang 21

Phần ĩ : Kiến thức liên quan _ Chương ĩ; Giời thiệu vi điều khiển AT89C51

ở địa chỉ 8BH (TL1: byte thấp) và 8DH (THI: byte cao) Việc vận hành

er được set bởi thanh ghi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghi

n timer (TCON) ở địa chỉ 88H Chỉ có TCON được địa chỉ hóa từng bit

c thanh ghi port nốì tiếp:

51 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với

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 iếp nối tiếp (các bộ chuyển đổi A/D, các thanh ghi dịch ) Một thanh ghi đệm dự liệu nối tiếp (SBƯF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBƯF Các

n hành khác nhau được lập trình qua thanh ghi điều khiển port nối tiếp (được địa chỉ hóa từng bit) ở địa chỉ 98H

c thanh ghi điều khiến ngắt;

9 Thanh ghi điểu khiển công suất;

khiển

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

Trang 22

Phần I : Kiến thức liên quan Chương I: Giời thiệu vi điểu khiển AT89C51

set thì tốc độ baud sẽ tăng gấp đôi trong các mode 1, 2 và 3 của port nối tiếp

hoạt mode giảm công suất, chỉ thoát khi reset

chờ, chỉ thoát khi có ngắt hoặc reset hệ thống

VĨL BC NHỚ NGOẢI:

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

nửa đầu của mỗi chu kỳ của bộ nhớ, byte thấp của địa chỉ được cấp trong được chốt bằng xung ALE Một IC chốt 74HC373 (hoặc tương đương) sẽ địa chỉ thấp trong phần còn lại của chu kỳ bộ nhớ Trong nửa sau của chu port 0 được dùng như bus dữ liệu và được đọc hoặc ghi tùy theo lệnh

1 Ti uv xuất bô nhờ chương trình ngoài;

Bộ n

Hình sai

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

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

Trang 23

Phân ĩ : Kiến thức liên quan Chương ĩ: Giời thiệu vi điều khiển AT89C51

Một

được lái

:hu kỳ máy của 89C51 có 12 chu kỳ xung nhịp Nếu bộ dao động trên chip bởi một thạch anh 12Mhz thì một chu kỳ máy kéo dài 1 micro giây Trongmột chu

Trang 24

ần ỉ : Kiê

Phần ĩ : K iến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51

2 T ruv xuất bỏ nhđ dữ liêu ngoài:

và RI xem như thanh ghi địa chỉ

[STATE 4.1STATE a ISTATE 6 [STATE 1 1 STATE 2 [STATE 3 [STATE 4 | STATE 5 |

|p 1 | P 2 | p 1 | P 2 | P I |P 2 |p 1 | P 2 |p 1 | f >2 | p i I P 2 1 P í | P 2 | p l | P 2 | XTAL:

ALE:

RD:

Pũ:

PCLOUTiF PROGRAM MEMORY DATA SAMPLED — © EXTERNAL

D PLORRI OUT

Trang 25

IS EXTERNAL

OPLGRRI OUT

r * i DATA OUT o u r

lối bus địa chỉ và bus dữ liệu giữa RAM và 89C51 cũng giống như

và do đó cũng có thể lên đến 64Kbyte bộ nhớ RAM Ngoài ra, chân RD

1 đưỢc nối tới chân cho phép xuất (OE) của RAM và chân WR đươc nối

được kích khi cấp điện dùng mạch RC

Mach reset hê thốnọ

hái của tất cả các thanh ghi của 89C51 sau khi reset hệ thông được tóm

Trang 26

1 Thanh ghi Nôi dung

RAM trê ỉì chip không bị thay đổi bởi lệnh reset.

ĨX HOA T ĐÔNG CỦA BỐ ĐINH THỜĨ.-rTimerì

1 Gii ti 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

báo tràn ;ủa timer (flip-flop cờ) Giá trị nhị phân trong các flip-flop của timer có

như số đếm số xung nhịp (hoặc các sự kiện) từ khi khởi động timer Ví dụ

àếm lên từ 0000H đến FFFFH Cờ báo tràn sẽ lên 1 khi số đếm tràn

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

à đặt cờ tràn timer Cờ được dùng để đồng bộ hoá chương trình để thực

ác động như kiểm tra trạng thái của các ngõ vào hoặc gửi sự kiện ra các

c ứng dụng khác có thể sử dụng việc tạo xung nhịp đều đặn của timer để troi qua giữa hai sự kiện (ví dụ: đo độ rộng xung)

í n

Trang 27

Phần B : Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51

Đên I sự kiện dùng để xác định sô" lần xảy ra của một sự kiện Một sự kiện là bâ"t cứ ác động ngoài nào có thể cung cấp một chuyển trạng thái trên một chân của 89C51 Các timer cũng có thể cung cấp xung nhịp tốc độ baud cho port nối tiếp

Truy XI ât các timer của 89C51 dùng sáu thanh ghi chức năng đặc biệt cho trong

2 T tanh ghi chê" đô timer (TMOD):

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

mức cao

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

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

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

Trang 28

Phần B : Kiến thức liên quan Chương Ĩĩ Giđi thiệu vi điểu khiến AT89C51

3 T lanh ghi điều khiển timer (TCON):

Thanh í hi TCON chứa các bit trạng thái và các bit điều khiển Timer 0 và Timer 1

tràn, được xóa bởi phầm mềm hoặc phần cứng khi bộ xử lý chỉ đến chương trình phục vụ ngắt

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

khi phát hiện một cạnh xuống ở INT1; xóa bằng phần mềm hoặc bằng phần cứng khi CPU chỉ đến chương trình phục vụ ngắt

mềm để ngắt ngoài tích cực cạnh xuống/mức thấp

a Cỉ ế đô 0 - chế đô timer 13 bit:

này tương thích với các họ vi điều khiển thế hể cũ

b.Cht 'đô 1 - ch ế đô timer 16 bit:

ng như timer 16 bit đầy đủ

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

ỉa giá trị trong các thanh ghi timer là bit 7 của THx và LSB là bit 0 của thanh ghi timer (TLx/THx) có thể được đọc hoặc ghi bất cứ lúc nào bằng

Trang 29

Phần B : Kiến thức liên quan Chương ĩ: Giời thiệu vi điểu khiển AT89C51

c c xế đô 2 - ch ế đô tư đông nạp lai 8 bit:

t động như một timer 8 bit, trong khi đó THx vẫn giữ nguyên giá trị được

i sô" đếm tràn từ FFH đến 00H, không những cờ timer được set mà giá trị

ix đồng thời được nạp vào TLx, việc đếm tiếp tục từ giá trị này lên đến

ng 00H và nạp lại v.v C hế độ này rất thông dụng vì sự tràn timer xảy ra

1 ững khoảng thời gian nhất định và tuần hoàn một khi đã khởi động TMOD

Xung nhịp timer

d C h í đô 3 - ch ế đô tách timer:

er 0 ở chế độ 3, có thể cho timer 1 chạy và nguhg bằng cách chuyển nó ra vào chế độ 3 Nó vẫn có thể được sử dụng bởi port nối tiếp như bộ tạo tốc 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ó

n được nối với TF1)

Xung nhòp timer

Xung nhịp timer

Trang 30

Phần I : Kiến thức liên quan Chương I: Giđi thiệu vi điều khiển AT89C51

Nguồn tạo xung nhịp

Đi ìh khoáng thời gian ('interval timingl:

C/T = 0, hoạt động timer liên tục được chọn và timer được dùng cho việc

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

ỉượ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

dụng Như vậy, thạch anh 12 MHz sẽ cho tốc độ xung nhịp timer 1 MHz

timer xảy ra sau một số (cố định) xung nhịp, phụ thuộc vào giá trị ban

nạp vào các thanh ghi timer TLx/THx

sự kiên (event counting):

n xung nhịp ngoài có từ thay đổi chức năng của các chân Port 3 Bit 4 của 4) dùng làm ngõ vào tạo xung nhịp bên ngoài cho timer 0 và được gọi là

à P3.5 hay “ TI ” là ngõ vào tạo xung nhịp cho timer 1

các ứng dụng bộ đếm, các thanh ghi timer được tăng thêm 1 tương ứng

n từ 1 xuống 0 ở ngõ vào bên ngoài: Tx Ngõ vào bên ngoài được lấy

g S5P2 của mọi chu kỳ máy Như vậy, khi ngõ vào cao trong một chu kỳ rong một chu kỳ k ế thì sô" đếm được tăng thêm 1 giá trị mới xuất hiện thanh ghi S3P1 của chu kỳ theo sau chu kỳ trong đó phát hiện sự chuyển

ĩó, mât 2 chu kỳ máy (2 micro giây) để ghi nhận một sự chuyển 1 sang 0,

ài tôi đa là 500 KHz (giả sử hoạt động ở 12 MHz)

£0

đầu, dừng và điểu khiển cấc timer:

g pháp đơn giản nhât để bắt đầu ( cho chạy) và dừng các timer là dùng

:ho các timer chạy

Trang 31

1 = xuốíng: timer chạy

Cho chạy và dừng các timer

ở trong thanh ghi TCON có địa chỉ bit, nên dễ dàng cho việc điều khiển

;r trong chương trình Ví dụ, cho timer 0 chạy bằng lệng:

SETB TRO

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

SETB TRObiên dịch sẽ thực hiện việc chuyển đổi ký hiệu cần thiết từ “ TRO” sang

t đúng SETB TRO chính xác giông như SETB 8CH

ìhương pháp khác để điều khiển các timer là dùng bit GATE trong TMOD 'ào bên ngoài INTx Đặt GATE = 1 cho phép timer sẽ được điều khiển

Tx Việc này hữu dụng cho việc đo độ rộng xung như sau: giả sử INTO ở nhưhg các xung ở mức cao trong khoảng thời gian đo Khởi động timer ở (chế độ timer 16 bit), với TLO/THO = 0000H, GATE = 1 và TRO = 1 Khi

n ứ c cao, timer được “ mở cổng” và được cấp xung nhịp 1 MHz Khi INTO

ấp, timer bị “đóng cổng” và thời khoảng của xung tính bằng micro giây là ìược trong TLO/THO (Có thể lập trình INTO để tạo ra mọt ngắt khi no

"p)

Timer 1 hoạt động ở ch ế độ 0

U n li đông và truv xuất các thanh phi timer:

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

n việc đúng Sau đó, trong thân chương trình, các timer được cho chạy bit cờ được kiểm tra và xóa, các thanh ghi timer đươ£ đọc và cậo theo đòi hỏi của các ứng dụng.TMOD là thanh ghi thứ nhất được khởi

I đặt chê độ hoạt động Ví dụ, các lệnh sau khởi động timer 1 như timer

Trang 32

Phần I : Kiến thức liên quan Chương I: Giởi thiệu vi điều khiển AT89C51

3 nội và xóa các bit chế độ timer 0 Dĩ nhiên, timer thật sự không bắt đầu

i cho đến khi bit điều khiển chạy TRI được đặt lên 1

cần số đếm ban đầu, các thanh ghi timer TL1/TH1 cũng phải được khởi

hớ lại là các timer đếm lên và đặt cờ báo tràn khi có sự chuyển tiếp sang 0000H Một khoảng 100 micro giây có thể được định thời bằng cách

g trị cho TL1/TH1 là FF9CH:

MOV TL1, #9CH MOV THI, #0FFH imer được cho chạy bằng cách đặt bit điều khiển chạy như sau:

SETB TRItràn được tự động đặt lên 1 sau 100 micro giây,

mềm có thể đợi trong 100 micro giây bằng cách dùng lệnh rẽ nhánh có nhảy đến chính nó trong khi cờ báo tràn chưa được đặt lên 1:

WAIT: JNB TF1, WAIT imer tràn, cần dừng timer và xóa cờ báo ưàn trong phần mềm:

CLR TRI CLRTF1timer dang chav:

;, k ế đó đọc byte thấp rồi đọc byte cao lại một lần nữa Nếu byte cao đã thì lặp lại các hoạt động đọc Các lệnh dưới đây đọc nội dung của các timer TL1/TH1 vào các thanh ghi R6/R7:

AGAIN: MOV A, THI MOV R6, TL1 CJNZ A, THI, AGAIN MOV R7, A

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

Ig thời gian ngắn nhất có thể có bị giới hạn không chỉ bởi tần sô' xung timer mà còn bởi phần mềm Do ảnh hưởng của khoảng thời gian thực lệnh, lệnh ngắn nhâ't của 89C51 là 1 chu kỳ máy hay 1 micro giây Sau

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

rriả ci V T lirvr nVlir nkrv OOPC1 „X _ _ _íT n i Í IT _ \.

(micro giây)

Trang 33

P h ần I : K iến thức liên quan Chương I: Giởi thiệu vi điều khiển AT89C51

gần = 10

256 65535Không giới hạn

-Bằng phần mềm-Timer 8 bit với tự động nạp lại-Timer 16 bit

-Timer 16 bit cộng với các vòng lặp phần mềm

hệ thông được điều khiển bằng ngắt cho ảo giác là làm nhiều đồng thời CPU mỗi lần không thể thực thi hơn một lệnh Nhưng nó có thể tạm treo

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

nhât Theo cách này, nó giống như một chương trình con, nhưng có sự trong hệ thông được điều khiển bằng ngắt là sự ngắt quãng không xảy ra quả của một lệnh (lệnh CALL subroutine), mà là đáp ứng với một “ sự

y ra bâ't đồng bộ với chương trình chính Người ta không biết khi nào và ở

ng trình chính sẽ bị ngắt quãng

ưupt Service Routine) hoặc bộ xử lý ngắt ISR thực thi khi đáp ứng ngắt thường thực hiện tác vụ mhập hay xuất với một thiết bị Khi ngắt xay ra

•ình chính tạm thời bị treo và rẻ nhánh đến ISR: ISR thực thi và kết thúc trở về từ ngặt, chương ữình chính tiếp tục thực thi ở chỗ mà nó tạm ường người ta xẻm chương trình chính như thực thi ở mức nền (cơ sở) el) và các ISR thực thi ở mức ngắt (interrupt-level) Người ta cũng dùng ngữ foreground chỉ mức nền và background chỉ mức ngắt Hình ảnh khái :ác ngắt được mô tả trong hình sau:

Thời g ỉap

I Chươi Ig trình chính

a.Thực thi chương trình không có ngắt

Trang 34

Phẩn B : Kiến thức liên quan Chương I: Giời thiệu vi điểu khiến AT89C51

ó hai hoặc nhiều ngắt đồng thời, hoặc một ngắt vảy ra trong khi một ngắt

tg được phục vụ, có cả hai sự tuần tự hỏi vòng và sơ đồ ưu tiên hai mức xác định việc thực hiện các ngắt Việc hỏi vòng tuần tự thì cố định nhưng

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

MOV IE, #10001000B

lù hai cách này có cùng hiệu quả sau khi reset hệ thống, nhưhg hiệu quả lếu IE được ghi ở giữa chương trình Cách thứ nhất không ảnh hưởng đến : trong thanh ghi IE, trái lại cách thứ hai sẽ xóa các bit khác Nên khởi trị ( ách thứ hai ở đầu chương trình (nghĩa là sau khi mở máy hoặc reset hệ

Trang 35

Phần I : Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51

Tóm tắt thanh ghi IP

xóa sau khi reset hệ thống để (mặc nhiên) đặt tất cả các ngắt ở mức ưu 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

độ ưu tiên cao hơn ngắt đang phục vụ Nếu một ISR có ưu tiên thấp đang khi một ngắt có ưu tiên cao xảy ra thì ISR bị ngắt ISR có ưu tiên cao

sau minh họa 5 nguồn ngắt, cơ chế riêng biệt và toàn bộ, hỏi vòng tuần tự

ức ưu tiên Trạng thái của tất cả các nguồn ngắt khả dụng qua các bit cờ trong các SFR Dĩ nhiên, nếu có bât kỳ ngắt nào bị cấm, ngắt không xảy phần mềm vẫn có thể kiểm ưa cờ ngắt

m

Trang 36

Phần ỉ : Kiến thức liên quan Chương ĩ: Giời thiệu vi điều khiển AT89C51

ector ngắt:

Trang 37

Phần I : Kiến thức liên quan Chương ĩ: Giđi thiệu vi điểu khiển AT89C51

‘chỉ đến một n g ắt”, cờ gây ngắt tự động bị xóa bởi phần cứng Các ngoại

và TI với các ngắt port nối tiếp Vì có hai nguồn có thể có cho ngắt này, tỊiực tế để CPU xóa cờ ngắt này Các bit phải được kiểm tra trong ISR để nguồn ngắt và cờ tạo ngắt sẽ được xóa bằng phần mềm Thông thường hánh xảy ra với một phản ứng thích hợp, phụ thuộc vào nguồn ngắt,

íc vector ngắt ở phần đầu của bộ nhớ chương trình, lệnh thứ nhất của rình chính thường là lệnh nhảy qua vùng nhớ này, ví dụ như LJMP 0030h

or reset hệ thống (RST ở địa chỉ 0000H) được để trong bảng này vì theo

ĩa này, nó giông ngắt: nó ngắt chương trình chính và nạp cho PC giá trị

:hương trình phục vụ ngắt phải bắt đầu ở gần phần đầu của bộ nhớ chương

< ác địa chỉ trong bảng Các vector ngắt Mặc dù chỉ có 8 byte ở giữa các

; điểm vào timer 0

; ISR cho timer 0 bắt đầu

; quay về chương trình chính

; chương trình chính

ử dụng nhiều ngắt, phải cẩn thận, bảo đảm là chúng bắt đầu ở vị trí đúng : chạy quá sang ISR kế Vì chỉ có một ngắt được sử dụng trong ví dụ trên,

t ình chính có thể bắt đầu ngay sau lệnh RETI

1 chươns trình vhuc vu nsắt có kích thước lớn:

Nếu SR dài hơn 8 byte, có thể cần chuyển nó tới nơi nào đó trong bộ nhớ

Trang 38

P h ầ ^ : Kiến thức liên quan Chương ĩ: Giời thiệu vi điểu khiển AT89C51

bắt đầi

dụ lúc

với lệnh nhảy đến vùng nhớ khác ở đó có thể mở rộng chiều dài ISR Ví

I ày chỉ xét timer 0, có thể sử dụng khung sau:

; điểm vào timer 0

; các vector ngắt tiếp theo

; ISR cho timer 0

; quay về chương trình chínhgian, chương trình của chúng ta sẽ chỉ làm một việc lúc đầu Chương 'i động timer, port nối tiếp và các thanh ghi ngắt cho thích hợp và rồi

m gì cả Công việc hoàn toàn được làm trong ISR Sau các lệnh khởi íơng trình chính chứa lệnh sau:

các lệnh thực hiện các công việc khác cần trong ứng dụng

n g ắt của 89C51:

a Cái • ngắt timer:

;ắt timer có địa chỉ vector ngắt là 000BH (timer 0) và 001BH (timer 1)

T xảy ra khi các thanh ghi timer (TLx/THx) tràn và set cờ báo ưàn (TFx)

rằng các cờ timer (TFx) không bị xóa bằng phần mềm Khi cho phép các

tự động xóa bằng phần cứng khi CPU chuyển đến ngắt

ngắt cổng nối tiếp:

t ổng nối tiếp xảy ra khi hoặc cờ ngắt phát (TI) hoặc cờ ngắt thu (RI) được Ngắt phát xảy ra khi truyền một ký tự vừa được ghi vào SBUF Ngắt thu

một ký tự đã được nhận xong và đang đợi trong SBUF để được đọc

ong nôi tiêp hơi khác với nhắt timer Cờ gây ra ngắt cổng nối tiếp không

Ịg phần cứng khi CPU chuyển tới ngắt Nguyên do là có hai nguon ngắt

liêp: TI và RI Nguồn ngắt phải được xác định trọng ISR và cờ ngắt sẽ

1 >ằng phần mềm

ngắt ngoài:

Trang 39

ngăt ngoài xảy ra khi có một mức thâp hoặc cạnh xuống trên chân INTO

TI của 89C51 Đây là các chức năng chuyển đổi của các bit Port 3: P3 2 ỉ) và P3.3 (chân 13)

cờ tạo các ngắt này là các bit IEO và IE1 trong TCON Khi quyền điều

í chuyển đên ISR, cờ tạo ra ngắt chỉ được xóa nếu ngắt được tích cực bằng ống Nếu ngắt được tích cực theo mức, thì nguồn yeu cầu ngắt bên ngoai khien mức của cờ thay cho phần cứng

chọn ngắt tích cực mức thấp hay tích cực cạnh xuống được lập trình qua

TO và IT1 trong TCON Ví dụ, nếu IT1 = 0, ngắt ngoài 1 được ¿ c h khởi

"c thâp ở chân INT1 Nếu IT1 = 1, ngắt ngoài 1 sẽ được kích khởi bằng

■ong ch ế độ này, nếu các mẫu liên tiếp của trên chân INT1 chỉ mức cao

ỷ t chu kỳ và thấp trong chu kỳ kế, cờ yêu cầu ngắt IE1 trong TCON đươc Rồi bit cờ IE1 yêu cầu ngắt

c chân ngắt ngoài được lấy mẫu một lần ở mỗi chu kỳ máy, ngõ vào nên trong tối thiểu 12 chu kỳ dao động để bảo đảm lây mẫu đúng Nếu ngắt

Ợc tác động theo cạnh xuông, nguồn bên ngoài phải giữ chân yêu cầu cao một chu kỳ và giữ nó ỏ mức thấp thêm một chu kỳ nữa để bảo đảm phát

c cạnh xuống IEO và IE1 tự động được xóa khi CPU chuyển tới ngắt

Ìgắt ngoài được tác động theo mức, nguồn bên ngoài phải giữ yêu cầu tác đến khi ngắt được yêu cầu thật sự được tạo ra Rồi nó phải không tác câu trước khi ISR được hoàn tât, nêu không một ngắt khác sẽ được lặp thường khi vào ISR người ta làm nguồn yêu cầu đưa tín hiệu tạo ngắt vềkhông tác động

r ĐÔNG PO RT NỐI TTF.P;

1 Gi< i thiêu:

có một port nối tiếp trong chip có thể hoạt động ở nhiều ch ế độ trên một rọng Chức năng chủ yêu của port nối tiêp là thực hiện chuyển đổi song noi tiep đoi VỚI dữ liệu xuât, và chuyển đổi nôi tiêp sang song song với lập

:uất phần cứng đến port nối tiếp qua các chân TXD và RXD Các chân năng khác với hai bit của port 3: P3.1 ở chân 11 (TXD) và P3.0 ở chânhức

5Ì tiếp cho hoạt động song công (full duplex: thu và phát đồng thời) và

thứ hai được nhận Nếu CPU đọc kí tự thứ nhất trước khi kí tự thứ hai được thì dữ liệu sẽ không bị mất

inh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nối

UF và SCON Bộ đệm port nối tiếp (SBUF) ở địa chỉ 99H thật sự là hai iêt vào SBUF để nạp dữ liệu sẽ được phát, và đọc SBUF để truy xuâ't dữ JỢc Đây là hai thanh ghi riêng biệt: thanh ghi chỉ ghi để phát và thanh

để thu

Trang 40

Phần I : Kiến thức liên quan Chương I: Giới thiệu vi điều khiển AT89C51

DThanh ghi dịchCLK

Xung nhịp tốc độ baud (thu)

5^2.

SBUF (chỉ đọc)

li > port nối tiếp, và các bit trạng thái báo kết thúc việc phát hoặc thu kí tự

t rạng thái có thể được kiểm tra bằng phần mềm hoặc có thể được lập trình '■¡ắt

ố làm việc của port nối tiếp còn gọi là tốc độ baud có thể cố định (lây từ ( ộng trên chip) Nếu sử dụng tốc độ baud thay đổi, timer 1 sẽ cung cấp tốc độ baud và phải được lập trình

nh ghi điều khiển p o rt nối tiếp:

( ọ

n3

)i tiếp (SCON) ở địa chỉ 98H Sau đây là bảng tóm tắt thanh ghi SCON và

ộ của port nôi tiếp:

thông đa xử lí trong các chế độ 2 và 3; RI sẽ không bị tác động nếu bit thứ 9 thu được là 0

(nhận) các kí tự

và 3, được đặt và xóa bằng phần mềm

được xóa bằng phần mềm

Ngày đăng: 04/03/2021, 22:20

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w