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

Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển

86 443 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 86
Dung lượng 1,56 MB

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

Nội dung

Theo các tậplệnh 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 tin, đ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ệ

Trang 1

LỜI NÓI ĐẦU

Trong vấn đề giao thông hiện nay, đèn đường là một thiết bị không thể thiếutrong việc giúp con người đảm bảo an toàn giao thông Tuy nhiên các thiết bị đènđường cao áp hiện nay vẫn còn sử dụng đóng ngắt bằng tay nên rất nguy hiểm khi

rò rỉ điện hay khi thời tiết xấu Nắm được vấn đề này em thực hiện tiến hành nghiêncứu một mạch điện điều khiển việc đóng ngắt các thiết bị điện với mong muốn sẽđảm bảo an toàn hơn cho người sử dụng và lấy đó làm đề tài tốt nghiệp cho mình

Những kiến thức năng lực đạt được trong quá trình học tập ở trường sẽ đánhgiá qua đợt bảo vệ đồ án tốt nghiệp cuối khoá Vì vậy em cố gắng tận dụng tất cảnhững kiến thức đã học được ở trường cùng với sự hướng dẫn của giáo viên hướngdẫn để hoàn thành đồ án này

Mặc dù rất cố gắng để hoàn thành đồ án này đúng thời hạn nên không tránhkhỏi sai sót mong các thầy cô thông cảm và mong được ý kiến đóng góp của thầy

cô Em xin cảm ơn Thầy giáo - KS Đặng Thái Sơn đã tận tình hướng dẫn giúp

em hoàn thành đồ án này

Sinh viên thực hiện:

Nguyễn Thuỳ An

Trang 2

MỤC LỤC

Trang

Lời nói đầu 1

Chương 1 Mở Đầu 4

1.1 Đặt Vấn Đề 4

1.2 Giới Hạn Đề Tài 4

1.3 Mục Đích Nghiên Cứu 4

Chương 2 Giới Thiệu Chung về Vi Điều Khiển 5

2.1 Lịch Sử Phát Triển Của Các Bộ Vi Điều Khiển……… 5

2.2 Khảo Sát Bộ Vi Điều Khiển AT89C51……… 6

2.2.1 Mô Tả……… 6

2.2.2 Sơ đồ khối AT89C51……… 7

2.2.3 Sơ đồ chân của AT89C51 và chức năng……… 8

2.2.4 Tổ chức bộ nhớ của 89C51……… 11

2.2.5 Các thanh ghi có chức năng đặc biệt……… 14

2.2.6 Bộ nhớ ngoài (external memory)……… 18

2.2.7 Hoạt động port nối tiếp……… 24

2.3 Các nhóm lệnh của AT 89C51 ……… 33

2.3.1 Nhóm lệnh xử lý số học……… 33

2.3.2 Nhóm lệnh luận lý……… 34

2.3.3 Nhóm lệnh chuyển dữ liệu……… 35

2.3.4 Nhóm lệnh chuyền điều khiển……… 36

2.3.5 Các lệnh rẽ nhánh……… 37

Chương 3 Giới Thiệu Về IC Thời Gian Thực DS1307……… 38

3.1 Cơ chế hoạt động và chức năng các chân của DS1307……… 38

3.2 Sơ đồ địa chỉ RAM và RTC……… 40

3.3 Chế độ hoạt động DS1307 ……… 43

Chương 4 Giới Thiệu Về Khởi Động Từ……… 45

Trang 3

4.2 Các yêu cầu cơ bản ……… 45

4.3 Độ bền chịu mài mòn về điện và cơ của các tiếp điểm khởi động từ… 45

4.3.1 Độ bền chịu mòn về điện……… 45

4.3.2 Độ bền chịu mòn về cơ ……… 46

4.4 Kết cấu và nguyên lí làm việc……… 47

4.5 Khởi động từ đơn……… 48

4.5.1 Công dụng……… 48

4.5.2 Cấu tạo……… 48

4.5.3 Sơ đồ điều khiển động cơ điện……… 48

4.5.4.Ưu nhược điểm……… 48

Chương 5 Thiết kế phần cứng và xây dựng phần mềm điều khiển…… 49

5.1 Sơ đồ khối của hệ thống……… 49

5.2 Phân tích và thiết kế từng khối……… 49

5.2.1 Khối bàn phím……… 49

5.2.2 Khối hiển thị ……… 50

5.2.3 Khối điều khiển trung tâm……… 51

5.2.4 Sơ đồ mạch tổng quát 52

5.2.5 Sơ đồ toàn bộ hệ thống 53

5.3 Vẽ mạch in và chế tạo mạch in……… 54

5.4.Chương trình xử lý bàn phím……… 54

5.5.Chương trình quét Led hiển thị……… 55

5.6 Chương trình thời gian thực……… 55

5.7 Chương trình giao tiếp với IC DS1307……… 55

5.8 Chương trình chính……… 55

5.9 Lưu đồ giải thuật 55

Kết Luận 84

Tài Liệu Tham Khảo 85

Trang 4

bị điện Để đáp ứng được yêu cầu đó em thấy rằng việc sử dụng vi điều khiển vànhững ứng dụng của nó là phương pháp tối ưu nhất

1.2 Giới Hạn Đề Tài

Với thời gian thực hiện đề tài cùng với trình độ chuyên môn còn hạn chế, em

đã cố gắng hết sức để hoàn thành đề tài, giải quyết được vấn đề đóng ngắt điện theogiờ quy định

1.3 Mục Đích Nghiê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 học

và đủ điều kiện ra trường Cụ thể khi nghiên cứu thực hiện đề tài chúng em muốnphá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 và đạt hiệu quả sử dụng cao hơn

Mặt khác mong rằng đề tài này sẽ là tài liệu tham khảo cho các bạn sinh viênkhoá sau, giúp họ có thể hiểu rõ thêm về ứng dụng của vi điều khiển

Ngoài ra quá trình làm đề tài là cơ hội cho em có thể tổng kết lại kiến thức đã đượchọc ở trường áp dụng vào để giải quyết vấn đề đã đặt ra trong thực tế

Trang 5

Chương 2 GIỚI THIỆU CHUNG VỀ BỘ VI ĐIỀU KHIỂN

Bộ vi điều khiển viết tắt là Micro-controller, là mạch tích hợp trên một chíp cóthể lập trình được dùng để điều khiển hoạt động của một hệ thống Theo các tậplệnh 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 tin, đ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 động của TV, máygiặt, đầu đọc lazer, điện thoại, lò viba Trong hệ thống sản xuất tự động, bộ vi điềukhiển được sử dụng trong Robot, dây chuyền tự đông Các hệ thống càng thôngminh thì vai trò của hệ vi điều khiển càng quan trọng

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

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óichung Bộ vi điều khiển được phát triển từ bộ vi xử lý, từ những năm 70 do sự pháttriển và hoàn thiện về công nghệ vi điện tử dựa trên công nghệ MOS ( Metal-Oxide-Semiconductor), mức độ tích hợp của các linh kiện bán dẫn trong một chip ngàycàng cao

Năm 1971 xuất hiện bộ vi xử lý 4 bit loại TMS 1000 do công ty TexasInstrument 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ả cá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, khối điều khiển, khối hiển thị, và những linh kiệnnằm ở bên ngoài được nối vào bộ vi xử lý

Mãi đến năm 1976 công ty INTEL (Interlligen- Elictronic) 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 là 8048

Bên cạnh bộ xử lý trung tâm 8048 còn chứa bộ nhớ dữ liệu, bộ nhớ chươngtrình, bộ đếm và phát thời gian các cổng vào ra Digital trên một chip

Các công ty khác cũng lần lượt 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 MSC-48

Trang 6

Đến năm 1980 công ty INTEL cho ra đời thế hệ thứ hai của bộ vi điều khiển đơnchip với tên gọi 8051 và sau đó là hàng loạt các vi điều khiển cùng loại với 8051 rađời trong đó có IC AT89C51

2.2 KHẢO SÁT BỘ VI ĐIỀU KHIỂN AT89C51

2.2.1 Mô Tả AT89C51

AT89C51 là một hệ vi tính 8 bít đơn chip CMOS, có hiệu suất cao, công suấtnguồn tiêu thụ thấp và có 4KB bộ nhớ ROM Flash xoá được và lập trình được Chipnày được sản xuất dựa trên công nghệ bộ nhớ không mất nội dung có độ tích hợpcao của Atmel

Chip AT89C51 cũng tương thích với các tập lệnh và các chân ra chuẩn côngnghiệp MSC51 Flash trên chip này cho phép bộ nhớ chương trình được lập trình lạitrên hệ thống hoặc bằng bộ lập trình bộ nhớ không mất nội dung quy ước bằng cáchkết hợp một CPU linh hoạt 8 Bit với Flash trên một chip đơn thể Atmel 89C51 làmột hệ vi tính 8 bit đơn chip mạnh cho ta một giải pháp có hiệu quả về chi phí vàrất linh hoạt đối với các ứng dụng điều khiển

AT89C51 có những đặc trưng sau: 4Kbyte Flash, 128byte RAM, 32 đường

xuất nhập, hai bộ định thời / đếm 16 bit, một cấu trúc ngắt 2 mức ưu tiên và 5nguyên nhân ngắt, một port nối tiếp song công, mạch dao động và tạo xung clocktrên chip

Ngoài ra AT89C51 còn được thiết kế với logic tinh cho hoạt động có tần sốgiảm xuống 0 và hỗ trợ hai chế độ tiết kiệm năng lượng được lựa chọn bằng phầnmềm

Chế độ nghỉ dùng CPU trong khi vẫn cho phép RAM, các bộ định thời/đếm,port nối tiếp và các hệ thống ngắt tiếp tục hoạt động

Chế độ nguồn giảm duy trì nội dung của RAM nhưng không cho mạch daođộng cung cấp xung clock nhằm vô hiệu hoá các hoạt động khác của chip cho đếnkhi có reset cứng tiếp theo

Các đặc điểm của 89C51 được tóm tắt như sau:

- 4KB bộ nhớ có thể lập trình lại nhanh, có khả năng tới 1000 chu kỳ ghi xoá

- Tần số hoạt động từ 0Hz đến 24MHz

Trang 7

- 2 Bộ đếm Timer/ counter 16 Bit

- 128 Byte RAM nội

- 4 Port xuất/nhập I/O 8bit

- Giao tiếp nối tiếp

- 64KB vùng nhớ mã ngoài

- 64KB vùng nhớ dữ liệu ngoài

- Xử lý boolean(hoạt động trên bit đơn)

- 210 Vị trí nhớ có thể định vị bit

- 4µs cho hoạt động nhân hoặc chia

2.2.2 Sơ đồ khối AT89C51

Hình 1:Sơ đồ khối AT89C51

Trang 8

2.2.3 Sơ đồ chân của AT89C51 và chức năng

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

AT89C51 có tất cả 40 chân có chức năng như các đường xuất nhập, trong đó có

21 chân có tác dụng kép (có nghĩa là một chân có hai chức năng), 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ủacác Bus dữ liệu và Bus địa chỉ

- VCC: chân cung cấp điện

- GND:chân nối đất

- Port 0 gồm 8 chân từ 32-39 (P0.0 – P0.7) Port 0 là port có hai chức năng.Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như cácđường I/O Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, nó được kết hợp giữabus địa chỉ và bus dữ liệu

- Port 1: chân 1-8 (P1.0 đến P1.7) Port 1 là port I/O có thể dùng giao tiếp vớicác thiế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ỉ đượcdùng để giao tiếp với các thiết bị ngoài

- Port 2: chân 21 đến 28( P2.0 đến P2.7) port 2 là port có tác dụng kép đượcdùng như các đường xuất nhập hoặc byte cao của bus địa chỉ đối với các thiết bịdùng bộ nhớ mở rộng

Trang 9

- Port 3: chân 10 đến 17 (P3.0 – P3.7) Port 3 là port xuất nhập 8bit hai chiều có cácđiện trở kéo bên trong Các chân của port này có nhiều chức năng, các công dụngchuyển đổi có liên hệ với các đặc tính đặc biệt của 8951 như bảng sau:

Bảng1 Chức năng của các chân của Port 3

P3.0 RXT Ngõ vào dữ liệu nối tiếp

P3.1 TXD Ngõ xuất dữ liệu nối tiếp

P3.2 INT0\ Ngõ vào ngắt cứng thứ 0

P3.3 INT1\ Ngõ vào ngắt cứng thứ 1

P3.4 T0 Ngõ vào củaTIMER/COUNTER thứ 0P3.5 T1 Ngõ vào củaTIMER/COUNTER thứ 1P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ ngoài

P3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài

- Ngõ tín hiệu PSEN (Program store enable):

PSEN là tín hiệu ngõ ra ở chân 29 có tác dụng cho phép đọc bộ nhớ chươngtrình mở rộng thường được nối đến chân OE\ (Output Enable) của Eprom cho phépđọc các byte mã lệnh

PSEN ở mức thấp trong thời gian Microcontroller 8951 lấy lệnh Các mãlệnh của chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanhghi lệnh bên trong AT89C51 để giải mã lệnh Khi 8951 thi hành chương trình trongEPROM nội PSEN sẽ ở mức logic 1

- Ngõ tín hiệu điều khiển ALE (Address Latch Enable):

Khi AT89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địachỉ và bus dữ liệu do đó phải tách các đường dữ liệu và địa chỉ Tín hiệu ra ALE ởchân thứ 30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữliệu khi kết nối chúng với IC chốt

Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò

là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động

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 tín hiệu clock cho các phần khác của hệ thống Chân ALE đượcdùng làm ngõ vào xung lập trình cho EPROM trong AT89C51

Trang 10

- Ngõ tín hiệu EA\(External Access):

Tín hiệu vào EA\ ở chân 31 thường được mắc lên mức 1 hoặc mức 0 Nếu ởmức 1, AT89C51 thi hành chương trình từ EPROM nội trong khoảng địa chỉ thấp 4Kbyte Nếu ở mức 0, 8951 sẽ thi hành chương trình từ bộ nhớ mở rộng Chân EA\được lấy làm chân cấp nguồn 12V khi lập trình cho EPROM trong AT89C51

- Ngõ tín hiệu RST (Reset):

Ngõ vào RST ở chân 9 là ngõ vào Reset của AT89C51 Khi ngõ vào tín hiệunày đưa lên cao ít nhất là 2 chu kỳ máy, các thanh ghi bên trong được nạp nhữnggiá trị thích hợp để khởi động hệ thống Khi cấp điện mạch tự động Reset

RESET VCC

10KR2100

C6

+

10uF C3

Hình 3 Mạch Reset hệ thống

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

Bảng 2 Trạng thái các thanh ghi sau khi Reset

Trang 11

đầu ở địa chỉ đầu tiên trong bộ nhớ trong chương trình: địa chỉ 0000H Nội dungcủa RAM trên chip không bị thay đổi bởi lệnh reset.

- Các ngõ vào bộ dao động X1,X2:

Bộ dao động được được tích hợp bên trong AT89C51, khi sử dụngAT89C51 người thiết kế chỉ cần kết nối thêm thạch anh và các tụ Tần số thạch anhthường sử dụng cho AT89C51 là 12Mhz Chân 40 (Vcc) được nối lên nguồn 5V

Hình 4 Cấp nguồn dao động bằng thạch anh.

Tụ gốm có trị số từ 27pF - 33pF để ổn định làm việc cho thạch anh, thườngdùng loại 33pF

2.2.4 Tổ chức bộ nhớ của 89C51.

Hình 5 Tổ chức bộ nhớ của 89C51

Trang 12

Hình 6.Bản đồ bộ nhớ Data trên chip như sau

- Bộ nhớ trong của 89C51 bao gồm ROM và RAM.RAM trong 89C51 bao gồmnhiều thành phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hoá từng bit, các bankthanh ghi và các thanh ghi chức năng đặc biệt

- 8951 Có bộ nhớ theo cấu trúc Harvard: có những vùng bộ nhớ riêng biệt chochương trình và dữ liệu Chương trình và dữ liệu có thể chứa bên trong nhưng vẫn

có thể kết nối với 64K byte dữ liệu

*) Hai đặc tính cần chú ý là:

- Các thanh ghi và các port xuất nhập đã được định vị (xác định) trong bộ nhớ và

có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác

Trang 13

- Ngăn xếp trong RAM nội nhỏ hơn so với RAM ngoại như trong các bộMicrocontroller khác.

*) RAM bên trong 89C51 được phân chia như sau:

- Các bank thanh ghi có địa chỉ từ 00H đến 2FH

- RAM địa chỉ hoá từng bit có địa chỉ từ 20H đến 2FH

- RAM đa dụng từ 30H đến 7FH

- Các thanh ghi chức năng đặc biệt từ 80H đến FFH

*) Vùng RAM đa dụng:

- Trên hình vẽ cho thấy 80 byte đa dụng chiếm các địa chỉ từ 30H đến 7FH,32byte dưới từ 00H đến 1FH cũng có thể dùng với mục đích tương tự (mặc dù cácđịa chỉ này đã có mục đích khác)

- Mọi địa chỉ trong vùng RAM đa dụng đều có thể truy suất tự do cùng kiểuđịa chỉ trực tiếp hoặc gián tiếp

*) RAM có thể truy xuất từng bit:

- 8951 Chứa 210 bit được địa chỉ hoá, trong đó có 128 bit có chứa các bytechứa các địa chỉ từ 20H đến 2FH và các bit còn lại chứa trong nhóm thanh ghi cóchức năng đặc biệt

- Ý tưởng truy xuất từng bit bằng phần mềm là đặc tính mạnh củaMicrocontroller xử lý chung Các bit có thể được đặt, xoá, AND, OR, , với 1 lệnhđơn Đa số các Microcontroller xử lý đòi hỏi một chuỗi lệnh đọc, sửa, ghi để đạtđược mục đích tương tự, ngoài ra các port cũng có thể truy xuất từng bit

- 128 Bit có chứa các byte có địa chỉ từ 00H đến 1FH cũng có thể truy xuấtnhư các byte hoặc các bit phụ thuộc vào lệnh được dùng

*) Các bank thanh ghi:

- 32 Byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh

8951 hỗ trợ 8 thanh ghi có tên là R0 – R7 và theo mặc định sau khi Reset hệ thống,các thanh ghi này có các địa chỉ từ 00H – 07H

- Các lệnh dùng cho thanh ghi R0 – R7 sẽ ngắn hơn và nhanh hơn so với cáclệnh có chức năng tương ứng dùng kiểu địa chỉ trực tiếp Các dữ liệu được dùngthường xuyên nên dùng một trong các thanh ghi này

Trang 14

- Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghiđược truy xuất bới các thanh ghi R0 – R7, để chuyển đổi việc truy xuất các bankthanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái.

2.2.5- Các thanh ghi có chức năng đặc biệt

- Các thanh ghi nội của 8951 được truy xuất ngầm định bởi bộ lệnh

- Các thanh nghi trong AT89C51 được định dạng như một phần của RAMtrên chip vì vậy mỗi thanh ghi sẽ có một địa chỉ ( ngoại trừ thanh ghi bộ đếmchương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bị tác động trực tiếp).Cũng như R0 – R7 8951 có 21 thanh ghi có chức năng đặc biệt (SFR: specialfuncition register) ở vùng trên RAM nội từ địa chỉ 80H đến FFH

Chú ý: Tất cả 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21

thanh ghi có chức năng đặc biệt được định nghĩa sẵn các địa chỉ Ngoại trừ thanhghi A có thể được truy xuất ngầm như đã nói, đa số các thanh ghi có chức năng đặcbiệt SFR có thể địa chỉ hoá từng bit hoặc byte

Bảng3 Thanh ghi trạng thái chương trình (PSW: program status word)

Trang 15

*) Chức năng từng bit trạng thái chương trình:

+) Carry CY ( Carry flag): cờ nhớ có tác dụng kép, thông thường nó đượcdùng cho các lệnh toán học: C=1 nếu phép toán cộng có sự tràn hoặc phép trừ cómượn và ngược lại C=0 nếu phép toán cộng không tràn và phép trừ không có mượn

+) Cờ Carry phụ AC( Auxiliary Carry Flag): khi cộng những giá trị BCD(Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trongphạm vi điều khiển ) 0AH – 0FH, ngược lại AC=0

+) Cờ 0 (Flag 0): cờ 0(F0) là 1 bit cờ đa dụng dùng cho các ứng dụng củangười dùng

*) Những bit chọn bank thanh ghi truy xuất:

- RS1 và RS0 quyết định dãy thanh ghi tích cực Chúng được xoá sau khiReset hệ thống và được thay đổi về phần mềm khi cần thiết

- Tuỳ theo RS1, RS0 = 00,01,10,11 sẽ được chọn bank tích cực tương ứng làbank 0, bank 1, bank 2, bank 3

*) Bit Parity (P): Bit tự động được set sau clear ở mỗi chu kỳ máy để lậpParity chẵn với thanh ghi A Sự đếm các bit 1 trong thanh ghi A cộng với bit Parityluôn luôn chẵn Ví dụ A chứa 10101101B thì bit P set lên một để tổng số bit 1 trong

A và P tạo thành số chẵn

- Bit Parity thường được dùng trong sự kết hợp với những thủ tục của Portnối tiếp để tạo ra bit Parity trước khi phát đi hoặc kiểm tra bit Parity sau khi thu

*) Thanh ghi B:

Trang 16

- Thanh ghi B ở địa chỉ F0H được dùng cùng với thanh ghi A cho các phéptoán nhân chia Lệnh MUL AB ⇐ Sẽ nhận những giá trị không dấu 8 bit trong haithanh ghi A và B, rồi trả về kết quả 16 bit trong A (byte cao) và B(byte thấp) LệnhDIV AB ⇐ Lấy A chia B, kết quả nguyên đặt vào A, số dư đặt vào B.

- Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa mụcđích Nó là những bit định vị thông qua những địa chỉ từ F0H đến F7H

*) Con trỏ Ngăn xếp SP (Stack Pointer) :

- Con trỏ ngăn xếp là một thanh ghi 8 bit ở địa chỉ 81H Nó chứa địa chỉ củabyte dữ liệu hiện hành trên đỉnh ngăn xếp Các lệnh trên ngăn xếp bao gồm cáclệnh cất dữ liệu vào ngăn xếp (PUSH) và lấy dữ liệu ra khỏi Ngăn xếp (POP) Lệnhcất dữ liệu vào ngăn xếp sẽ làm tăng SP trước khi ghi dữ liệu và lệnh lấy ra khỏingăn xếp sẽ làm giảm SP Ngăn xếp của 8031/8051 được giữ trong RAM nội và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 đầucủa 8951

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

- Với lệnh trên thì ngăn xếp của 8951 chỉ có 32 byte vì địa chỉ cao nhất củaRAM trên chip là 7FH Sở dĩ giá trị 5FH được nạp vào SP vì SP tăng lên 60H trướckhi cất byte dữ liệu

- Khi Reset 8951, SP sẽ mang giá trị mặc định là 07H và dữ liệu đầu tiên sẽđược cất vào ô nhớ ngăn xếp có địa chỉ 08H Nếu phần mềm ứng dụng không khởiđộng SP một giá trị mới thì bank thanh ghi1 có thể cả 2 và 3 sẽ không dùng được vìvùng RAM này đã được dùng làm ngăn xếp Ngăn xếp được truy xuất trực tiếpbằng các lệnh PUSH và POP để lưu trữ tạm thời và lấy lại dữ liệu, hoặc truy xuấtngầm bằng lệnh gọi chương trình con ( ACALL, LCALL) và các lệnh trở về (RET,RETI) để lưu trữ giá trị của bộ đếm chương trình khi bắt đầu thực hiện chương trìnhcon và lấy lại khi kết thúc chương trình con

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

Trang 17

- Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanhghi 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 , #55H MOV DPTR, #1000H MOV @DPTR, A

- Lệnh đầu tiên dùng để nạp 55H vào thanh ghi A Lệnh thứ hai dùng để nạpđịa chỉ của ô nhớ cần lưu giá trị 55H vào con trỏ dữ liệu DPTR Lệnh thứ ba sẽ dichuyển nội dung thanh ghi A (là 55H) vào ô nhớ RAM bên ngoài có địa chỉ chứatrong DPTR (là 1000H)

*) Các thanh ghi Port (Port Register):

- Các Port của 8951 bao gồm Port0 ở địa chỉ 80H, Port1 ở địa chỉ 90H, Port2

ở địa chỉ A0H, và Port3 ở địa chỉ B0H Tất cả các Port này đều có thể truy xuấttừng bit nên rất thuận tiện trong khả năng giao tiếp

*) Các thanh ghi Timer (Timer Register):

- 8951 Có chứa hai bộ định thời/ bộ đếm 16 bit được dùng cho việc định thờiĐược đếm sự kiện Timer0 ở địa chỉ 8AH (TLO: byte thấp ) và 8CH (THO:byte cao) Timer1 ở địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao) Việckhởi động timer được SET bởi Timer Mode (TMOD) ở địa chỉ 89H và thanh ghiđiều khiển Timer (TCON) ở địa chỉ 88H Chỉ có TCON được địa chỉ hoá từng bit

*)Các thanh ghi Port nối tiếp (Serial Port Register) :

- 8951 Chứa một Port nối tiếp cho việc trao đổi thông tin với các thiết bị nốitiếp như máy tính, modem hoặc giao tiếp nối tiếp với các IC khác Một thanh ghiđệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và dữ liệunhập Khi truyền dữ liệu ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF Các modevận khác nhau được lập trình qua thanh ghi điều khiển Port nối tiếp (SCON) đượcđịa chỉ hoá từng bit ở địa chỉ 98H

*) Các thanh ghi ngắt (Interrupt Register):

- 8951 Có cấu trúc 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm sau khi bị Reset hệ thống và sẽ được cho phép bằng việc ghi thanh ghi cho phép ngắt(IE) ở địa chỉ A8H Cả hai được địa chỉ hoá từng bit

Trang 18

*) Thanh ghi điều khiển nguồn PCON (Power Control Register):

- Thanh ghi PCON không có bit định vị Nó ở địa chỉ 87H chứa nhiều bit Điều khiển Thanh ghi PCON được tóm tắt như sau:

- Bit 7 (SMOD) : Bit có tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếp khi set

- Bit 6, 5, 4 : Không có địa chỉ √ Bit 3 (GF1) : Bit cờ đa năng 1

- Bit 2 (GF0) : Bit cờ đa năng 2

- Bit 1 (PD) : Set để khởi động mode Power Down và thoát để reset

- Bit 0 (IDL) : Set để khởi động mode Idle và thoát khi ngắt mạch hoặc Reset

Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả các IC

họ MSC-51 nhưng chỉ được thi hành trong sự biên dịch của CMOS

2.2.6 Bộ nhớ ngoài (external memory)

- 8951 Có khả năng mở rộng bộ nhớ lên đến 64K byte bộ nhớ chương trình

và 64k byte bộ nhớ dữ liệu ngoài Do đó có thể dùng thêm RAM và ROM nếu cần

- Khi dùng bộ nhớ ngoài, Port0 không còn chức năng I/O nữa Nó được kếthợp giữa bus địa chỉ (A0-A7) và bus dữ liệu (D0-D7) với tín hiệu ALE để chốt bytecủa bus địa chỉ khi bắt đầu mỗi chu kỳ bộ nhớ Port được cho là byte cao của busđịa chỉ

a.Truy xuất bộ nhớ mã ngoài (Accessing External Code Memory)

- Bộ nhớ chương trình bên ngoài là bộ nhớ ROM được cho phép của tín hiệu PSEN\ Sự kết nối phần cứng của bộ nhớ EPROM như sau:

Hình 7.Truy xuất bộ nhớ mã ngoài

- Trong một chu kỳ máy tiêu biểu, tín hiệu ALE tích 2 lần Lần thứ nhất cho

Trang 19

byte cao của bộ đếm chương trình đều có nhưng EPROM chưa xuất vì PSEN\ chưatích cực, khi tín hiệu lên một trở lại thì Port 0 đã có dữ liệu là Opcode ALE tích cựclần thứ hai được giải thích tương tự và byte 2 được đọc từ bộ nhớ chương trình Nếulệnh đang hiện hành là lệnh 1 byte thì CPU chỉ đọc Opcode, còn byte thứ hai bỏ đi

b.Truy xuất bộ nhớ dữ liệu ngoài (Accessing External Data Memory)

- Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được đọc hoặc ghi khi được chophép của tín hiệu RD\ và WR Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6(WR) Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và dùng một bộđệm dữ liệu 16 bit (DPTR), R0 hoặc R1 như là một thanh ghi địa chỉ

- Các RAM có thể giao tiếp với 8951 tương tự cách thức như EPROM ngoạitrừ chân RD\ của 8951 nối với chân OE\ (Output Enable) của RAM và chân WR\của 8951 nối với chân WE\ của RAM Sự nối các bus địa chỉ và dữ liệu tương tựnhư cách nối của EPROM

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

c Sự giải mã địa chỉ (Address Decoding): WR\

- Sự giải mã địa chỉ là một yêu cầu tất yếu để chọn EPROM, RAM, 8279, …

- Sự giải mã địa chỉ đối với 8951 để chọn các vùng nhớ ngoài như các vi điềukhiển Nếu các con EPROM hoặc RAM 8K được dùng thì các bus địa chỉ phải đượcgiải mã để chọn các IC nhớ nằm trong phạm vi giới hạn 8K: 0000H÷1FFFH,2000H÷3FFFH,

- Một cách cụ thể, IC giải mã 74HC138 được dùng với những ngõ ra của nóđược nối với những ngõ vào chọn Chip CS (Chip Select) trên những IC nhớEPROM, RAM, … Hình sau đây cho phép kết nối nhiều EPROM và RAM

Trang 20

Hình 9 Sự kết nối các EPROM và RAM

d Sự đè lên nhau của các vùng nhớ dữ liệu ngoài

- Vì bộ nhớ chương trình là ROM, nên nảy sinh một vấn đề bất tiện khi pháttriển phần mềm cho vi điều khiển Một nhược điểm chung của 8951 là các vùng nhớ

dữ liệu ngoài nằm đè lên nhau, vì tín hiệu PSEN\ được dùng để đọc bộ nhớ mãngoài và tín hiệu RD\ được dùng để đọc bộ nhớ dữ liệu, nên một bộ nhớ RAM cóthể chứa cả chương trình và dữ liệu bằng cách nối đường OE\ của RAM đến ngõ ramột cổng AND có hai ngõ vào PSEN\ và RD\ Sơ đồ mạch như hình sau cho phépcho phép bộ nhớ RAM có hai chức năng vừa là bộ nhớ chương trình vừa là bộ nhớ

dữ liệu:

- Vậy một chương trình có thể được tải vào RAM bằng cách xem nó như

Bộ nhớ dữ liệu và thi hành chương trình bằng cách xem nó như bộ nhớ chươngtrình

e Hoạt động Reset

Trang 21

- 8951 Có ngõ vào reset RST tác động ở mức cao trong khoảng thời gian 2 chu

kỳ xung máy, sau đó xuống mức thấp để 8951 bắt đầu làm việc RST có thể kíchbằng tay bằng một phím nhấn thường hở, sơ đồ mạch reset như sau:

Hình 10 Sơ đồ mạch Reset

Trạng thái của tất cả các thanh ghi trong 8951 sau khi reset hệ thống được tóm tắt như sau

Bảng 4: Trạng thái của các thanh ghi trong 8951 sau khi reset

Đếm chương trình PCThanh ghi tích luỹ AThanh ghi BThanh ghi thái PSW

SPDPRTPort 0 đến port 3

IP IECác thanh ghi định thờiSCON SBUFPCON (MHOS) PCON

(CMOS)

0000H00H 00H00H 07H0000HFFHXXX0 0000 B0X0X 0000 B00H 00H0XXX XXXXH0XXX 0000 B

- Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được resettại địa chỉ 0000H Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tạiđịa chỉ 0000H của bộ nhớ chương trình Nội dung của RAM trên chip không bị thayđổi bởi tác động của ngõ vào reset

Trang 22

Thanh ghi chế độ timer (TMOD)

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

Bảng 5 Tóm tắt thanh ghi TMOD

M1M0

GATEC/TM1M0

11

11

0000

Bit (Mở) cổng, khi lên 1 timer chỉ chạy khi INT1 ở mức caoBit chọn chế độ counter/timer1=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 bit

11: chế độ 3 : tách timerBit (mở) cổng

Bit chọn counter/timerBit 1 của chế độBit 0 của chế độTruy xuất timer của 8951 dùng 6 thanh ghi chức năng đặc biệt cho trong bảng sau

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

SFR MỤC ĐÍCH ĐỊA CHỈ Địa chỉ hoá từng bit

Có Không

Trang 23

Không Không Không Không

Thanh ghi TCON chứa các bit trạng thái và các bit điều khiển cho timer 0 và timer

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

Thông thường các thanh ghi được khởi động một lần ở đầu chương trình để đặtchế độ làm việc cho đúng Sau đó trong thân chương trình các timer được cho chạy,dừng , các bit cờ được kiểm tra và xoá, các thanh ghi timer được đọc và cập nhật theo đòi hỏi của các ứng dụng

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

MOV TMOD,#00010000B

Lệnh này sẽ đặt M1=0 vả M0=1 cho chế độ 1, C/T=0 và GATE=0 cho xungnhịp nội và xóa các bit chế độ timer 0 Dĩ nhiên timer thật sự không bắt đầu địnhthời cho đến khi bit điều khiển chạy TR1 được đặt lên 1

Nếu cần số đếm ban đầu, các thanh ghi timer TL1/TH1 cũng phải được khởiđộng Nhớ lại là các timer đếm lên và đặt cờ báo tràn khi có sự truyển tiếp

FFFFH sang 0000H

- Đọc timer đang chạy

Trong một số ứng dụng cần đọc giá trị trong các thanh ghi timer đang chạy

Vì phải đọc 2 thanh ghi timer “sai pha” có thể xẩy ra nếu byte thấp tràn vào bytecao giữa hai lần đọc Giá trị có thể đọc được không đúng Giải pháp là đọc byte caotrước, kế đó đọc byte thấp rồi đọc byte cao lại một lần nữa Nếu byte cao đã thayđổi thì lập lại các hoạt động đọc các khoảng ngắn và các khoảng dài

Dãy các khoảng thời gian có thể định thời là bao nhiêu ? vấn đề này đượckhảo sát với 8951 hoạt động với tần số 12MHz như vậy xung nhịp của các timer

có tần số là 1 MHz

Trang 24

Khoảng thời gian ngắn nhất có thể có bị giới hạn không chỉ bởi tần số xungnhịp của timer mà còn bởi phần mềm Do ảnh hưởng của thời khoảng thực hiện mộtlệnh Lệnh ngắn nhất 8951 là một chu kỳ máy hay 1µs Sau đây là bảng tóm tắt các

kỹ thuật để tạo những khoảng thời gian có chiều dài khác nhau (với giả sử xungnhịp cho 8951 có tần số 12 MHz)

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

2.2.7 Hoạt động port nối tiếp

a Giới thiệu:

8951 có một port nối tiếp trong chip có thể hoạt động ở nhiều chế độ kháctrên một dãy tần số rộng Chức năng chủ yếu của một port nối tiếp là thực hiệnchuyển đổi song song sang nối tiếp với dữ liệu xuất và chuyển đổi nối tiếp sangsong song với dữ liệu nhập

Truy xuất phần cứng đến port nối tiếp qua các chân TXD và RXD Các chânnày có các chức năng khác với hai bit của port 3 P3 ở chân 11 (TXD) và P3.0 ởchân 10 (RXD)

Port nối tiếp cho hoạt động song công (full duplex : thu và phát đồng thời) vàđệm lúc thu (receiver buffering) cho phép một ký tự sẽ được thu và được giữ trongkhi ký tự thứ hai được nhận Nếu CPU đọc ký tự thứ nhất trước khi ký tự thứ haiđược thu đầy đủ thì dữ liệu sẽ không bị mất

Hai thanh ghi chức năng đặc biệt cho phép phần mềm truy xuất đến port nốitiếp là : SBUF và SCON Bộ đếm port nối tiếp (SBUF) ở đại chỉ 99H thật sự là hai

bộ đếm Viết vào SBUF để truy xuất dữ liệu thu được Đây là hai thanh ghi riêngbiệt thanh ghi chỉ ghi để phát và thanh ghi để thu

TXD (P3.1) RXD (P3.0)

Trang 25

Hình 11 Sơ đồ port nối tiếp.

Thanh ghi điều khiển port nối tiếp (SCON) ở địa chỉ 98H là thanh ghi có địachỉ bit chứa các bit trạng thái và các bit điều khiển Các bit điều khiển đặt chế độhoạt động cho port nối tiếp, và các bit trạng thái báo cáo kết thúc việc phát hoặc thu

ký tự Các bit trạng thái có thể được kiểm tra bằng phần mềm hoặc có thể được lậptrình để tạo ngắt

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

b Thanh ghi điều khiển port nối tiếp.

Chế độ hoạt động của port nối tiếp được đặt bằng cách ghi vào thanh ghi chế

độ port nối tiếp (SCON) ở địa chỉ 98H Sau đây các bảng tóm tắt thanh ghi SCON

và các chế độ của port nối tiếp :

Trang 26

Bảng 7 Tóm tắt thanh ghi chế độ port nối tiếp SCON

9FH9EH9DH

9CH9BH

9AH99H98H

Bit 0 của chế độ port nối tiếpBit 1 của chế độ port nối tiếpBit 2 của chế độ port nối tiếp cho phép truyền thông 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

Cho phép bộ thu giải mã được đặt lên1 để thu các

Cờ ngắt thu Đặt lên 1 khi kết thúc thu ký tự, được xóa bằng phần mềm

Bảng 8 Các chế độ port nối tiếp

0123

Thanh ghi dịchUART 8 bitUART 9 bitUART 9 bit

Cố địnhThay đổi( đặt bằng timer)

Cố địnhThay đổi( đặt bằng timer)Trước khi sử dụng port nối tiếp, phải khởi động SCON cho đúng chế độ Ví

dụ, lệnh sau: MOV SCON,#01010010B

Khởi động port nối tiếp cho chế độ 1 (SM0/SM1=0/1), cho phép bộ thu(REN=1) và đặt cờ ngắt phát (TP=1) để chỉ bộ phát sẵn sàng hoạt động

Trang 27

c Khởi động và truy xuất các thanh ghi cổng nối tiếp.

*) Cho phép thu:

Bit cho phép bộ thu (REN = Receiver Enable) trong SCON phải được đặt lên 1bằng phần mềm để cho phép thu các ký tự Thông thường thực hiện việc này ở đầuchương trình khi khởi động cổng nối tiếp, timer Có thể thực hiện việc này theo haicách Lệnh : SETB REN

Sẽ đặt REN lên 1, hoặc lệnh : MOV SCON,#xxx1xxxxB

Sẽ đặt REN 1 và đặc hoặc xóa đi các bit khác trên SCON khi cần (các x phải là 0 hoặc 2 để đặc chế độ làm việc)

*) Bit dữ liệu thứ 9:

Bit dữ liệu thứ 9 cần phát trong các chế độ 2 và 3, phải được nạp vào trong TB8bằng phần mềm Bit dữ liệu thứ 9 thu được đặt ở RBS Phần mềm có thể cần hoặckhông cần bit dữ liệu thứ 9, phụ thuộc vào các đặc tính kỹ thuật của thiết bị nối tiếp

sử dụng (bit dữ liệu thứ 9 cũng đóng vai một trò quan trọng trong truyền thông đa

xử lý)

*) Thêm 1 bit parity:

Thường sử dụng bit dữ liệu thứ 9 để thêm parity vào ký tự Như đã xét ở cácchương trước, bit P trong từ trạng thái chương trình (PSW) được đặt lên 1 hoặc bịxóa bởi chu kỳ máy để thiết lập kiểm tra chẵn với 8 bit trong thanh tích lũy

*) Các cờ ngắt:

Hai cờ ngắt thu và phát (RI và TI) trong SCON đóng một vai trò quan trọng truyền thông nối tiếp dùng 8951 Cả hai bit được đặt lên 1 bằng phần cứng, nhưng phải được xóa bằng phần mềm

d Tốc độ baud port nối tiếp.

Như đã nói, tốc độ baud cố định ở các chế độ 0 và 2 Trong chế độ 0 nó luônluôn là tần số dao động trên chip được chia cho 12 Thông thường thạch anh ấnđịnh tần số dao động trên chip của 8951 nhưng cũng có thể sử dụng nguồn xungnhịp khác Giả sử với tần số dao động danh định là 12 MHz, tìm tốc độ baud chế độ

0 là 1 MHz

Trang 28

Hình 12 Các nguồn tạo xung nhịp cho port nối tiếp

Mặc nhiên, sau khi reset hệ thống, tốc độ baud chế độ là 2 tần số bộ daođộng chia cho 64 Tốc độ baud cũng ảnh hưởng bởi 1 bit trong thanh ghi điều khiểnnguồn cung cấp (PCON) Bit 7 của PCON là bit SMOD Đặt bit SMOD lên một làmgấp đôi tốc độ baud trong chế độ 1,2 và 3 Trong chế độ 2, tốc độ baud có thể bị gấpđôi từ giá trị mặc nhiên của 1/64 tần số dao động (SMOD=0) đến 1/32 tần số daođộng (SMOD=1)

Vì PCON không được định địa chỉ theo bit, nên để đặt bit SMOD lên 1 cầnphải theo các lệnh sau: MOV A,PCON lấy giá trị hiện thời của PCON SETB ACC.7đặt bit 7 (SMOD) lên 1MOV PCON, A ghi giá trị ngược về PCON

Các tốc độ baud trong các chế độ 1 và 3 được xác định bằng tốc độ tràn củatimer 1 Vì timer hoạt động ở tần số tương đối cao, tràn timer được chia thêm cho

32 (hay 16 nếu SMOD=1) trước khi cung cấp xung nhịp tốc độ baud cho port nốitiếp

Trang 29

e Hoạt động ngắt

Ngắt là hoạt động ngừng tạm thời một chương trình này để thi hành mộtchương trình khác Các ngắt có một vai trò quan trọng trong thiết kế và khả năngthực thi của vi điều khiển Chúng cho phép hệ thống đáp ứng không cùng lúc tớimột công việc và giải quyết một công việc đó trong khi một chương trình khác đangthực thi

Một hệ thống được điều khiển bằng ngắt cho ảo giác là làm nhiều việc đồngthời Dĩ nhiên CPU mỗi lần không thể thực thi một chương trình để thực thi mộtchương trình khác, rồi quay về chương trình đầu khi có yêu cầu ngắt Chương trìnhgiải quyết ngắt được gọi là chương trình phục vụ ngắt (ISR : Interrupt SeviceReutine)

*)Tổ chức ngắt

AT 8951 có 5 nguồn ngắt:

- 2 ngắt ngoài

- 2 ngắt từ timer

- 1 ngắt port nối tiếp

Tất cả các ngắt sẽ không được đặt sau khi reset hệ thống và cho phép ngắt riêng

rẽ bởi phần mềm

*) Cho phép và không cho phép ngắt

Mỗi nguồn ngắt được cho phép hoặc không cho phép từng ngắt một qua thanhghi chức năng đặt biệt cố định địa chỉ bit IE (Interrupt Enable : cho phép ngắt) ở địachỉ A8H Cũng như các bit cho phép mỗi nguồn ngắt, có một bit cho phép hoặc cấmtoàn bộ được xóa để cấm tất cả các ngắt hoặc được đặt lên 1 để cho phép tất cả cácngắt

Trang 30

Bảng 9.Cho phép và không cho phép ngắt

Bit Ký hiệu Địa chỉ bit Mô tả

ET0Ẽ0

AFHAEHADHACHABHAAHA9HA8H

Cho phép/không cho phépKhông được định nghĩaCho phép ngắt timer2Cho phép ngắt cổng nối tiếpCho phép ngắt timer1Cho phép ngắt ngoài 1Cho phép ngắt timer 0Cho phép ngắt ngoài 2

BDHBCHBBHBAHB9HB8H

Không được định nghĩaKhông được định nghĩa

Ưu tiên cho ngắt từ Timer2(8052)

Ưu tiên cho ngắt Port nối tiếp

Ưu tiên cho ngắt từ Timer 1

Ưu tiên cho ngắt ngoài

Ưu tiên cho ngắt từ Timer 0

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

Các ngắt ưu tiên được xóa sau khi reset hệ thống để đặt tất cả các ngắt ở mức

ưu tiên thấp hơn

*) Xử lý ngắt.

Khi có một ngắt xẩy ra và được CPU chấp nhận, chương trình chính bị ngắtquãng Những hoạt động sau xẩy ra:

Trang 31

- Thi hành hoàn chỉnh lệnh đang hiện hành.

- Các DC vào ngắt xếp

- Trạng thái ngắt hiện hành được cất bên trong

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

- Nạp vào DC địa chỉ Vector của ISR

- ISR thực thi

ISR thực thi và đáp ứng ngắt ISR hoàn tất bằng lệnh RET1 Điều này làm lấylại giá trị cũ của PC từ ngăn xếp và lấy lại trạng thái ngắt cũ Chương trình lại tiếptục thi hành tại nơi mà nó dừng

Timer 2

RSTIE0TF0IE1TF1

RI OR TITF2 OR EXF2

0000H0003H000BH0013H001BH0023H002BH

Vector reset hệ thống (RST ở địa chỉ 0000H) nó giống như một ngắt Nóngắt chương trình chính và tải vào PC một giá trị mới

Khi chỉ đến một ngắt “cờ gây ngắt tự động bị xóa bởi phần cứng, trừ ra R1,T1 cho các ngắt cổng nối tiếp Vì có hai nguồn có thể có cho ngắt này, không thực

tế để CPU xóa cờ ngắt này Các bit phải được kiểm tra trong ISR để xác định nguồnngắt và cờ tạo ngắt sẽ được xóa bằng phần mềm

Trang 32

Các ngắt của 8951

*) Các ngắt timer

Các ngắt timer có địa chỉ Vector ngắt là 000BH (timer 0) và 001BH (timer 1).Ngắt timer xẩy ra khi các thanh ghi timer (TLx ITHx) tràn và set cờ báo tràn (TFx)lên 1 Các cờ timer (TFx) không bị xóa bằng phần mềm Khi cho phép các ngắt,TFx tự động bị xóa bằng phần cứng khi CPU chuyển đến ngắt

*) Các ngắt ngoài

Các 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 INT0hoặc INT1 của vi điều khiển Đây là chức năng chuyển đổi của các bit Port 3.(Port3.2 và Port 3.3)

Các cờ tạo ngắt này là các bit IE0 vá IE1 trong TCON Khi quyền điều khiển đã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 cạnhxuống Nếu ngắt được tích cực theo mức, thì nguồn yêu cầu ngắt bên ngoài sẽ điềukhiển mức của cờ thay cho phần cứng

Sự lựa 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 quacác bit IT0 và IT1 trong TCON Nếu IT1 = 0, ngắt ngoài 1 được tác động bằng mứcthấp ở chân IT1 Nếu IT1 = 1 ngắt ngoài 1 sẽ được tác động bằng cạnh xuống trongchế độ này, nếu các mẫu liên tiếp trên chân INT1 chỉ mức cao trong một chu kỳ vàchỉ mức thấp trong chu kỳ kế, cờ yêu cầu ngắt IE1 trong TCON được đặt lên 1, rồibit IE yêu cầu ngắt

Trang 33

Nếu ngắt ngoài được tác động bằng cạnh xuống thì nguồn bên ngoài phải giữchân tác động ở mức cao tối thiểu một chu kỳ và giữ nó ở mức thấp thêm một chu

kỳ nữa để đảm bảo phát hiện được cạnh xuống Nếu ngắt ngoài được tác động theomức thì nguồn bên ngoài phải giữ tín hiệu yêu cầu tác động cho đến khi ngắt đượcyêu cầu được thật sự tạo ra và không tác động yêu cầu ngắt trước khi ISR đượchoàn tất Nếu không một ngắt khác sẽ được lặp lại

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

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

Trang 34

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 dng con trỏ dữ liệu lên 1

MUL AB (1,4): Nhân nội dung thanh ghi A với 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 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 với A 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ù của 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ộ 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ộ 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

Trang 35

XRL dara,#data (3,1): XOR một dữ liệu trực tiếp với một dữ liệu tức thời.SETB C (1,1): Đặt cờ nhớ.

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

CLR A (1,1): Xóa thanh ghi A

CLR C (1,1): Xóa cờ nhớ

CPL A (1,1): Bù nội dung thanh ghi A

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

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)

2.3.3.Nhóm lệnh chuyển dữ liệu

MOV A,Rn (1,1):Chuyển nội dung thanh ghi Rn vào thanh 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 tức thời 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ếp.MOV data,#data (3,2): Chuyển một dữ liệu tức thời vào một dữ liệu trực tiếp.MOV @Ri,A (1,1): Chuyển nội dung thanh 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 dữ liệu tức thời vào dữ liệu gián tiếp

MOV DPTR,#data (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ớ

Trang 36

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ỉ là

@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ỉ là @A+PCvào thanh ghi A

MOVX 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 bên 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 v2 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à LSNcủa dữ liệu gián tiếp

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

ACALL addr11 (2,2): Gọi chương trình con dùng địa 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

Trang 37

JBC bit,rel (3,2): Nhảy tương đối nếu bit trực tiếp được đặt , rồi xóa 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ảynếu không bằng

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

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

Trang 38

Chương 3 GIỚI THIỆU VỀ IC THỜI GIAN THỰC DS1307

3.1 Cơ chế hoạt động và chức năng các chân của DS1307

Hình 13.Cơ chế hoạt động và chức năng các chân của DS1307

Vcc: nối với nguồn

X1,X2: nối với thạch anh 32,768 kHz

Vbat: đầu vào pin 3V

GND: đất

SDA: chuỗi data

SCL: dãy xung clock

SQW/OUT: xung vuông/đầu ra driver

- DS1307 là một IC thời gian thực với nguồn cung cấp nhỏ, dùng để cập nhậtthời gian và ngày tháng với 56 bytes SRAM Địa chỉ và dữ liệu được truyền nối tiếpqua 2 đường bus 2 chiều Nó cung cấp thông tin về giờ, phút, giây, thứ, ngày,tháng, năm Ngày cuối tháng sẽ tự động được điều chỉnh với các tháng nhỏ hơn 31ngày,bao gồm cả việc tự động nhảy năm Đồng hồ có thể hoạt động ở dạng 24hhoặc 12h với chỉ thị AM/PM DS1307 có một mạch cảm biến điện áp dùng để dòcác điện áp lỗi và tự động đóng ngắt với nguồn pin cung cấp

- DS 1307 hoạt động với vai trò slave trên đường bus nối tiếp Việc truy cậpđược thi hành với chỉ thị START và một mã thiết bị nhất định được cung cấp bởiđịa chỉ các thanh ghi

Trang 39

Tiếp theo đó các thanh ghi sẽ được truy cập liên tục đến khi chỉ thị STOPđược thực thi

Hình 14.Sơ đồ khối của DS1307

Mô tả hoạt động của các chân:

• Vcc,GND: nguồn một chiều được cung cấp tới các chân này Vcc là đầuvào 5V Khi 5 V được cung cấp thì thiết bị có thể truy cập hoàn chỉnh và dữ liệu

có thể đọc và viết Khi pin 3 V được nối tới thiết bị này và Vcc nhỏ hơn 1,25Vbatthì quá trình đọc và viết không được thực thi, tuy nhiên chức năng timekeepingkhông bị ảnh hưởng bởi điện áp vào thấp Khi Vcc nhỏ hơn Vbat thì RAM vàtimekeeper sẽ được ngắt tới nguồn cung cấp trong (thường là nguồn 1 chiều 3V)

• Vbat: Đầu vào pin cho bất kỳ một chuẩn pin 3V Điện áp pin phảiđược giữ trong khoảng từ 2,5 đến 3V để đảm bảo cho sự hoạt động của thiết bị

• SCL (serial clock input): SCL được sử dụng để đồng bộ sự chuyển dữliệu trên đường dây nối tiếp

• SDA(serial data input/out): là chân vào ra cho 2 đường dây nối tiếp ChânSDA thiết kế theo kiểu cực máng hở , đòi hỏi phải có một điện trở kéo trong khihoạt động

• SQW/OUT(square wave/output driver)- khi được kích hoạt thì bit SQWEđược thiết lập1,Chân SQW/OUT phát đi 1trong 4 tần số(1Hz,4kHz,8kHz,32kHz)

Trang 40

Chân này cũng được thiết kế theo kiểu cực máng hở vì vậy nó cũng cần có một điệntrở kéo trong Chân này sẽ hoạt động khi cả Vcc và Vbat được cấp

• X1,X2: được nối với một thạch anh tần số 32,768kHz.Là một mạch tạodao động ngoài, để hoạt động ổn định thì phải nối thêm 2 tụ 33pF

Hình 15 mắc mạch tạo dao động

• Cũng có DS1307 với bộ tạo dao động trong tần số 32,768kHz, với cấu hìnhnày thì chân X1 sẽ được nối vào tín hiệu dao động trong còn chân X2 thì để hở

3.2 Sơ đồ địa chỉ RAM và RTC.

Hình 16.Sơ đồ địa chỉ RAM và RTC

• Thông tin về thời gian và ngày tháng được lấy ra bằng cách đọc các bytethanh ghi thích hợp Thời gian và ngày tháng được thiết lập cũng thông qua các bytethanh ghi này bằng cách viết vào đó những giá trị thích hợp nội dung của các thanhghi dưới dạng mã BCD (binary coded decreaseimal) Bit 7 của thanh ghi seconds là

Ngày đăng: 15/12/2015, 12:31

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Tống Văn On “Họ Vi Điều Khiển 8051” Nhà Xuất Bản Lao Động Xã Hội, xuất bản năm 2001 Sách, tạp chí
Tiêu đề: Họ Vi Điều Khiển 8051”
Nhà XB: Nhà Xuất Bản Lao Động Xã Hội
[2] Phạm Văn Chới “Giáo Trình Khí Cụ Điện” Nhà Xuất Bản Khoa Học Và Kỹ Thuật, xuất bản năm 2008 Sách, tạp chí
Tiêu đề: Giáo Trình Khí Cụ Điện”
Nhà XB: Nhà Xuất Bản Khoa Học Và KỹThuật
[4] Văn Thế Minh “Kỹ Thuật Vi Xử Lý” Nhà xuất Bản Giáo Dục, xuất bản năm 1997 Sách, tạp chí
Tiêu đề: Kỹ Thuật Vi Xử Lý”
Nhà XB: Nhà xuất Bản Giáo Dục
[6] Phạm Minh Hà “Kỹ Thuật Mạch Điện Tử”Nhà Xuất Bản Khoa Học Và Kỹ Thuật, xuất bản năm 2007 Sách, tạp chí
Tiêu đề: Kỹ Thuật Mạch Điện Tử
Nhà XB: Nhà Xuất Bản Khoa Học Và KỹThuật
[3] Một số tài liệu trên trang web http://www.ebook.edu.vnwww. ant7 .comhttp://tailieu.vn/ Link
[5] Giáo Trình Cấu Kiện Điện Tửhttp://www.ebook.edu.vn/?page=1.6&view=2131 Link

HÌNH ẢNH LIÊN QUAN

Hình 1:Sơ đồ khối AT89C51 - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 1 Sơ đồ khối AT89C51 (Trang 7)
2.2.3. Sơ đồ chân của AT89C51 và chức năng - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
2.2.3. Sơ đồ chân của AT89C51 và chức năng (Trang 8)
Hình 3. Mạch Reset hệ thống - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 3. Mạch Reset hệ thống (Trang 10)
Hình 5. Tổ chức bộ nhớ của 89C51 - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 5. Tổ chức bộ nhớ của 89C51 (Trang 11)
Hình 6.Bản đồ bộ nhớ Data trên chip như sau - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 6. Bản đồ bộ nhớ Data trên chip như sau (Trang 12)
Hình 7.Truy xuất bộ nhớ mã ngoài - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 7. Truy xuất bộ nhớ mã ngoài (Trang 18)
Hình 8:Truy xuất bộ nhớ dữ liệu ngoài - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 8 Truy xuất bộ nhớ dữ liệu ngoài (Trang 19)
Hình 9. Sự kết nối các EPROM và RAM  d. Sự đè lên nhau của các vùng nhớ dữ liệu ngoài - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 9. Sự kết nối các EPROM và RAM d. Sự đè lên nhau của các vùng nhớ dữ liệu ngoài (Trang 20)
Bảng 4: Trạng thái của các thanh ghi trong 8951 sau khi reset - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Bảng 4 Trạng thái của các thanh ghi trong 8951 sau khi reset (Trang 21)
Hình 10. Sơ đồ mạch Reset - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 10. Sơ đồ mạch Reset (Trang 21)
Bảng 5. Tóm tắt thanh ghi TMOD - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Bảng 5. Tóm tắt thanh ghi TMOD (Trang 22)
Hình 11. Sơ đồ port nối tiếp. - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 11. Sơ đồ port nối tiếp (Trang 25)
Hình 12. Các nguồn tạo xung nhịp cho port nối tiếp - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Hình 12. Các nguồn tạo xung nhịp cho port nối tiếp (Trang 28)
Bảng 10. ưu tiên ngắt - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Bảng 10. ưu tiên ngắt (Trang 30)
Bảng 9.Cho phép và không cho phép ngắt - Mạch điều khiển đóng ngắt điện sử dụng vi điều khiển
Bảng 9. Cho phép và không cho phép ngắt (Trang 30)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

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

w