1. Trang chủ
  2. » Công Nghệ Thông Tin

Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051

61 360 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 61
Dung lượng 831,5 KB
File đính kèm File code chương trình.zip (2 KB)

Nội dung

Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051Xây dựng Đồng hồ thời gian thực dùng DS 12C887 và vi điều khiển 8051

Trang 1

LỜI NÓI ĐẦU

Kỹ thuật vi xử lý hiện nay rất phát triển, nó được ứng dụng vào rất nhiều lĩnhvực như sản xuất công nghiệp, tự động hoá và còn nhiều lĩnh vực khác So với kỹthuật số thì kỹ thuật vi xử lý nhỏ gọn hơn rất nhiều do nó được tích hợp lại và đượclập trình để điều khiển

Với tính ưu việt của vi xử lý thì trong phạm vi đề tài nhỏ này em chỉ tiến hànhviệc dùng vi điều khiển để xây dựng hệ thống hiển thị và điều khiển thời gian thựcđây chỉ là một ứng dụng nhỏ trong các ứng dụng của nó

Những kiến thức của bản thân kết hợp với tài liệu tham khảo và dưới sựhướng dẫn của thầy giáo đã giúp em hoàn thành đề tài này Mặc dù đã cố gắngnhưng đề tài của em không tránh khỏi sự thiếu sót Kính mong các thầy cô thôngcảm

Em xin chân thành cảm ơn thầy giáo Lê Hùng Linh đã tận tình giúp đỡ emhoàn thành đề tài này

Sinh viên:

Phạm Thị Quang

Trang 2

PHẦN 1

CƠ SỞ LÝ THUYẾT

I Một vài đặc điểm cơ bản của 8051

Trang 3

1.1 Giới thiệu 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ập lệ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 thường làmnhiệm vụ điều khiển hoạt động như trong ti vi, máy giặt, đầu đọc laser, điện thoại,

lò vi ba …Trong hệ thống sản xuất tự động, bộ vi điều khiển được sử dụng trongRobot các dây truyề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

1.2 Khảo sát vi điều khiển họ MCS-51

Vi mạch tổng quát của họ MCS-51 là chip 8051, linh kiện đầu tiên của họnày được đưa ra thị trường, chip 8051 có đặc trưng như sau:

4 kb ROM

128 byte RAM

4 port xuất nhập(I/O port) 8 bit

2 bộ định thời 16 bit

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

Không gian nhớ chương trình (mã) ngoài 64kb

Không gian nhớ dữ liệu ngoài 64kb

Bộ xử lý bít ( thao tác trên các bít riêng rẽ)

210 vị trí nhớ được xác định địa chỉ, mỗi vị trí 1 bít Nhân,chia trong

4 Ms

trên chíp

bộ nhớ dữ liệu trênchíp

Trang 4

Bảng1.2: So sánh các chip hiện thời của MSC -51.

Các thành viên khác của họ MCS-51 có các tổ hợp ROM (EPROM), RAM trên chíp khác nhau hoặc có thêm bộ định thời thứ ba (bảng 1.1) Mỗi một IC của họMCS-51cũng có phiên bản CMOS công suất thấp

1.2.1.Đặc tính kỹ thuật cơ bản của 8051.

-Là vi điều khiển 8 bít

- 4kb ROM dung để lưu trữ chưong trình từ địa chỉ 000H đến 0FFFH

- 128b RAM dùng để lưu trữ dữ liệu địa chỉ 00H đến 7FH

- Bốn port xuất nhập 8 bít song song

- Hai bộ định thời 16 bít

- Có bộ điều khiển ngắt lôgíc có 5 nguồn ngắt

- Có 22 thanh ghi có chức năng riêng biệt SFR(Special Function Registers)

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

- Không gian nhớ chương trình ngoài 64k

- Không gian nhớ dữ liệu ngoài 64k.Bộ vi xử lý (CPU) thao tác được trên cácbít riêng rẽ

- 8051 có hai tín hiệu đọc riêng biệt là: RD và PSEN

- RD: Được kích hoạt khi byte được đọc từ bộ nhớ dữ liệu ngoài

- PSEN: Được kích hoạt khi byte được đọc từ bộ nhớ chương trình bênngoài

-Có hai trăm mười vị trí nhớ được định địa chỉ, mỗi vị trí nhớ là một bít nhớ

từ địa chỉ 20H đến địa chỉ 7FH

-Nhân chia trong µs

- Vi điều khiển 8051 và 8052 là ROM có thể xoá được.Việc phát triển tínhnăng của dòng vi điều khiển này bao gồm: Tăng bộ nhớ, tăng các cổng, chuyển đổiAD… - Tất cả các điều khiển trong họ vi điều khiển này đều có chung bộ lệnh

- Đặc trưng nổi bật của các vi điều khiển phát triển sau này là lập trình vàđiều khiển bằng những SFR được thêm vào sau đó

1.2.1.1 Cấu trúc bên trong của 8051

-Phần chính của vi diều khiển 8051 là bộ xử lý trung tâm (CPU: CentralProcesing Unit) bao gồm:

Trang 5

+ Thanh ghi tích luỹ A.

+Thanh ghi tích luỹ phụ B dung 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 bank thanh ghi

-Ngoài ra, còn có bộ nhớ chương trình, bộ giải mã lệnh, bộ điều khiển thờigian và logic

-Đơn vị xử lý trung tâm trực tiếp nhận xung từ bộ dao động Bên cạnh đó,còn có khả năng đưa tín hiệu giữ nhịp từ bên ngoài vào

- Chương trình đang chạy có thể dừng lại nhờ một khối điều khiển ngắt ở bêntrong Các nguồn 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 bộ định thời 16 bit hoạt động như bộ đếm.Các cổng (từ, port0, port1,port2, port3 ) sử dụng vào mục đích điều khiển ở port3 có thêm các đường dẫn điềukhiển dùng để trao đổi với bộ nhớ bên ngoài hoặc để nối với giao diện nối tiếp cũngnhư các đường ngắt dẫn bên ngoà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àm việc độc lập với nhau Tốc độ truyền qua cổng nối tiếp có thể cài đặt trong dảirộng và được ấn định bằng một bộ định thời

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

+ Bộ nhớ có bộ nhớ RAM và bộ nhớ ROM (chỉ có ở 8031) và dùmg để lưutrữ dữ liệu và mã lệnh

+ Các thanh ghi 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

Timer 2(8032/8052) T2EX* Timer 1

4K-8051

Timer 2 (8032/8052)

128 bytes RAM (8032/8052) INT1*

INT0*

Trang 6

Hình2 1:Sơ đồ khối của 8051

Interrupt control: Điều khiển ngắt

Other registers: Các thanh ghi khác

128 bytes RAM: RAM 128 byte

Timer 2, 1, 0: Bộ định thời 2, 1, 0

CPU: Đơn vị điều khiển trung tâm

Oscillator: Mạch dao động

Bus control: Điều khiển BUS

I/O ports: Các port xuất/nhập

Serial port: Port nối tiếp

Address/data: Địa chỉ dữ liệu

Trang 7

Hình2.2: Sơ đồ chân của chíp 8051

Như sơ đồ trên ta thấy được 8051 có 32 chân trong 40 chân của 8051 cócông dụng xuất/ nhập, tuy nhiên 24 trong 32 chân này có 2 mục đích (côngdụng) [ 26/32 đối với 8032/8051] Mỗi một đường có thể hoạt động xuất/ nhậphoặc hoạt động như một đường điều khiển hoặc hoạt động như một đường địachỉ/dữ liệu của bus địa chỉ/dữ liệu đa hợp

nếu trên hình thành 4 port 8 bit Với các thiết kế yêu cầu một mức tối thiểu bộnhớ ngoài hoặc các thành phần bên ngoài khác, ta có thể sử dụng các port nàylàm nhiện vụ xuất/ nhập 8 đường cho mỗi port có thể được xử lý như một đơn

vị giao tiếp với các thiết bị song song như máy in, bộ biến đổi D-A, vv… hoặcmỗi đường có thể hoạt động độc lập với một thiết bị đơn bít như chuyển mạch,LED, BJT, FET, cuộn dây, động cơ, loa,…

Port 0

Port 0 (các chân từ 32 đến 39 trong 8051) có 2 công dụng Trong đó các thiết

kế có tối thiểu thành phần, port 0 được sử dụng làm nhiệm vụ xuât/ nhập trong cácthiết kế lớn hơn có bộ nhớ ngoài, port 0 trở thành bus địa chỉ và bus dữ liệu đa hợp [byte thấp của bus địa chỉ nếu là địa chỉ ]

Port 1

Trang 8

Port 1 chỉ có công dụng là xuất/ nhập ( các chân từ 1 đến 8 trên 8051) Cácchân của port 1 được ký hiệu là P1.0, P1.1… P1.7 và được dùng để giao tiếp vớicác thiết bị bên ngoài khi có yêu cầu Không có chức năng nào khác nữa gán chocác chân của port 1, nghĩa là chúng chỉ được sử dụng để giao tiếp với các thiết bịngoại vi [ Ngoại lệ: với 9032/ 8051, ta có thể sử dụng P1.0 và P1.1 hoặc làm cácđường xuất/ nhập hoặc làm các ngõ vào cho mạch định thời thứ ba]

Port 2

Port 2 ( các chân từ 21 đến 28 trên 8051 ) có 2 công dụng, hoặc làm nhiệm

vụ xuất/ nhập hoặc là byte địa chỉ cao của bus địa chỉ 16 bit cho các thiết kế có bộnhớ chương trình ngoài hoặc các thiết kế có nhiều hơn 256 byte bộ nhớ dữ liệungoài

Port3

Port 3 ( các chân từ10 đến 17 trên 8051 ) có 2 công dụng Khi không hoạtđộng xuất/ nhập, các chân của port 3 có nhiều chức năng riêng ( mỗi chân có chứcnăng riêng liên quan đến các đặc trưng cụ thể của 8051)

Bit Tên Địa chỉ bit Chức năng

Bảng2.1: Chức năng của các chân của port 3 và port 1

Bảng này cho ta thấy chức năng của các chân của port 3 và 2 chân P1.0, P1.1của port 1

Chân cho phép bộ nhớ chương trình PXEN

8051 cung cấp cho ta 4 tín hiệu điều khiển bus Tín hiệu cho phép bộ nhớchương trình PXEN( program store enable ) là tín hiệu xuất trên chân 29 Đây làtín hiệu điều khiển cho phép ta truy xuất bộ nhớ chương trình ngoài Chân này

Trang 9

thường nối với chân cho phép xuất OE ( output enable ) của EPROM (hoặc ROM)

để cho phép đọc các byte lệnh

Tín hiệu PXEN ở logic 0 trong suốt thời gian tìm -nạp lệnh Các mã nhịphân của chương trình hay opcode ( mã thao tác) được đọc từ EP-ROM, qua bus dữliệu và được chốt vào thanh ghi lệnh IR của 8051 để giải mã

Khi thực thi một chương trình chứa ROM nội, PXEN được duy trì ở logickhông tích cực ( logic 1)

Chân cho phép chốt địa chỉ ALE

8051 sử chân 30, chân xuất tín hiệu cho phép chốt địa chỉ ALE

(address latch enable) để giải đa hợp bus dữ liệu và bus địa chỉ

Khi port 0 làm bus địa chỉ/dữ liệu đa hợp chân ALE xuất tín hiệu để chốtbyte thấp của địa chỉ 16 bit vào một thanh ghi ngoài trong suốt nửa đầu chu kỳ bộnhớ Sau khi điều này được thực hiện, các chân của port 0 sẽ xuất nhập dữ liệutrong suốt nửa chu kỳ thứ hai của bộ nhớ

Tín hiệu ALE có tần số bằng 1/6 tần số của mạch dao động bên trong chip viđiều khiển và có thể được dùng làm xung clock cho phần còn lại của hệ thống.Nếumạch dao dộng có tần số 12MHz, tín hiệu ALE có tần số 2MHz Ngoại hệ duy nhất

là trong thời gian thực thi lệnh MOVX, một xung ALE sẽ bị bỏ qua Chân ALE cònđược dùng để nhận xung ngõ vào lập trình cho EPROM trên chip đối với các phiênbản của 8051có EPROM này

Ngõ vào này ( chân 31) có thể được nồi với 5V ( logic 1) hoặc nối với GND( logic 0) Nếu chân này nối lên 5V, 8051/8052 thực thi chương trình trong ROMnội Nếu chân này nối với GND ( và chân PXEN ở logic 0 ), chương trình thựchiện ở bộ nhớ ngoài

Các phiên bản EPROM của 8051 cò sử dụng chân EA làm chân nhận điện

áp cấp điện 21V cho việc lập trình EPROM nội

Chân RESET ( RST)

Ngõ vào RST ( chân 9) là ngõ vào khoá chính

(master reset) của 8051 dùng để thiết lập lại trạng thái ban

đầu cho hệ thống hay gọi tắt là reset hệ thống Khi ngõ vào

Trang 10

này được treo ở logic 1 tối thiểu 2 chu kỳ máy, các thanh ghi bên trong của 8051được nạp các giá trị thích hợp cho việc khởi động lại hệ thống.

Các chân XTAL1 và XTAL2

Chân ALX1 là ngõ vào đến mạch khuyếch đại đảo của mạch dao động vàngõ vào đến mạch tạo xung clock bên trong chip

Chân ALX2 là ngõ ra đến mạch khuyếch đại đảo của mạch dao động

Mạch dao động trên chip 8051 được ghép với thạch anh bên ngoài ở 2 chânALX1 và ALX2 tức là chân 18 và chân 19

1.2.2 Tổ chức bộ nhớ của 8051

Hầu hết các bộ vi xử lý (CPU) đều có không gian nhớ chung cho dữ liệu vàchương trình

Các chip vi điều khiển hiếm khi được sử dụng giống như các CPU trong các

hệ máy tính, thay vào đó chúng được dùng làm thành phần trung tâm trong các thiết

kế hướng điều khiển, trong đó bộ nhớ có dung lượng giới hạn, không có ổ đĩa và hệđiều hành Chương trình điều khiển phải thường trú trong ROM

Bộ nhớ nội trong chip bao gồm ROM ( chỉ có ở 8051/8052) và RAM RAMtrên chip bao vùng RAM đa chức năng ( nhiều công dụng), vùng RAM với tùng bítđược định địa chỉ ( gọi tắt là vùng RAM định địa chỉ bít), các dãy ( bank) thanh ghichức năng đặc biệt SFR ( special function register)

Vùng RAM đa mục đích có 80 byte đặt ở địa chỉ từ 30H đến 7FH, bên dướivùng này từ địa chỉ 00H đến 2FH là vùng nhớ có thể sử dụng tương tự có các mụcđích khác Bất kỳ vị trí nhớ nào trong vùng RAM đa mục đích đều có thể được truysuất tự do bằng cách sử dụng các kiểu định địa chỉ trực tiếp hoặc gián tiếp Thí dụ

để đọc nội dung tại địa chỉ 5FH của RAM nội vào thanh chứa A ta dùng lệnh sau:MOV A 5FH

Lệnh di chuyển một byte dữ liệu bằng cách dùng kiểu địa chỉ trực tiếp để xácđịnh vị trí nguồn (nghĩa là địa 5FH) Đích của dữ liệu được xác định rõ ràng trongopcode của lệnh là thanh chứa A

Vùng RAM đa mục đích còn có thể được truy xuất bằng cách dung kiểu địnhđịa chỉ gián tiếp qua các thanh ghi R0, R1 Thí dụ hai lệnh sau thực hiện cùng côngviệc như lệnh ở thí dụ trên

MOV R0, #5FH

Trang 11

MOV A, @R0

Lệnh đầu tiên dùng kiểu định địa chỉ tức thời di chuyển giá trị 5FH, vàothanh ghi R0, lệnh tiếp theo sử dụng kiểu định địa chỉ gián tiếp di chuyển dữ liệu trỏbởi R0 vào thanh chứa A

1.2.2.1 Vùng RAM định địa chỉ bit

8051 chứa 210 vị trí bit được định địa chỉ trong đó 128 bit chứa trong cácbyte ở địa chỉ từ 20H đến 2FH và phần còn lại chứa trong các thanh ghi chức năngđặc biệt

Hầu hết các bộ xử lý yêu cầu một chuỗi lệnh đọc-sửa-ghi để nhận được cùngmột kết quả Ngoài ra 8051 còn có các port xuất/nhập có thể định từng địa chỉ bit,điều này làm đơn giản việc giao tiếp phần mềm với các thiết bị xuất/ nhập đơn bit

1.2.2.2 Các dãy thanh ghi

32 vị trí thấp nhất của bộ nhớ nội chứa các dãy thanh ghi Các lệnh của 8051

hỗ trợ 8 thanh ghi từ R0-R7 thuộc dãy 0 Đây là dãy mặc định sau khi Reset hệthống Các thanh ghi này ở các địa chỉ từ 00H đến 07H Lệnh sau đây đọc nội dungtại địa chỉ 05H vào thanh chứa

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

Các thanh ghi nội của hầu hết các bộ vi xử lý đều được truy xuất rõ ràng bởimột tập lệnh

Các thanh ghi nội của 8051 được cấu hình thành một phần của RAM trênchip, do vậy mỗi thanh ghi cũng có một địa chỉ Điều này hợp lý với 8051 vì chípnày có rất nhiều thanh ghi

Trang 12

Hầu hết các thanh ghi được chức năng đặc biệt được truy xuất bằng kiểuđịnh địa chỉ trực tiếp.

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

PSW có địa chỉ là D0H chứa các bít trạng thái có chức năng được như sau:

Cờ nhớ : Cờ nhớ CY ( carry flag) có 2 công dụng Công dụng truyền thống trong

các phép toán số học là được set bằng 1 nếu có số nhớ từ phép cộng bít 7 hoặc cómột số mượn mang đến bít 7 Cờ nhớ CY là thanh chứa logic được dùng như mộtthanh ghi 1 bít đối với các lệnh được thao tác trên bít

Cờ nhớ phụ: khi cộng các giá trị BCD, cờ nhớ phụ AC (auxiliary carry flag ) được

set bằng 1 nếu có một số nhớ được tạo ra từ bít 3 chuyển sang bít 4 hoặc nếu kếtquả trong đề-cát thấp nằm trong tầm từ 0AH đến 0FH

Cờ 0: Đây là cờ có nhiều mục đích dành cho các ứng dụng của người lập trình.

Các bít chứa dãy thanh ghi: Các bít chọn thanh ghi RS0, RS1 dùng để xác định dãythanh ghi tích cực Các bít này được xoá sau khi có thao tác reset hệ thống và đổimức logic bởi phần mềm khi cần

Cờ tràn: Cờ tràn được xét bằng 1 sau phép toá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ộng hoặc trừ, phần mềm có thể kiểm tra bit tràn đểxác định xem kết quả có nằm trong tầm tay hay không

Trang 13

Cờ chẵn lẻ: Bit chẵn lẻ P tự động được xếp bằng 1 hay xoá bằng 0 ở mỗi chu kì

máy để thiết lập kiểm tra chẵn cho thanh chứa A Số các bit 1 trong thanh chứacộng với bit P luôn là thanh chẵn Bit chẵn lẻ được sử dụng nhiều để kết hợp vớicác chương trình xuất nhập nối tiếp trước khi truyền dữ liệu hoặc kiểm tra chẵn lẻsau khi nhận dữ liệu

Thanh ghi B

Thanh ghi B ở địa chỉ F0H được dụng chung với thanh chứa A trong cácphép toán nhân, chia Lệnh MUL AB nhân hai số 8bit không dấu chứa trong A và Bchứa kết quả 16bit vào cặp thanh ghi B:A (Thanh chứa A cất byte thấp và thanh ghi

B vất byte cao)

Lệnh DIV AB chia A bởi B, thương số cất trong thanh chứa A và dư số cấttrong thanh ghi B Thanh ghi B còn được xử lý như 1 thanh ghi nháp Các bit đượcchỉ định địa chỉ của thanh ghi B có địa chỉ từ F0H đến F7H

Con trỏ stack

Con trỏ stack SP ( stack pointer ) là một thanh ghi 8 bít ở địa chỉ 81H SP

chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack Các lệnh liên quan đến stackbao gồm lệnh cất dữ liệu vào stack và lệnh lấy dữ liệu ra khỏi stack việc cất vàostack làm tăng SP trước khi ghi dữ liệu và việc lấy dữ liệu ra khỏi stack sẽ làm giảm

SP Vùng stack của 8051 được giữ trong RAM nội và được giới hạn đến các địa chỉtruy xuất được bởi kiểu định địa chỉ gián tiếp Vùng Ram nội có 128 byte trên8031/8051 hoặc 256 byte trên 8031/8052

Nếu ta không khởi động SP, nội dung mặc định của thanh ghi này là 07Hnhằm duy trì sự tương thích với 8048, bộ vi điều khiển tiền nhiệm của 8051

Con trỏ dữ liệu DPTR

Con trỏ dữ liệu được dung để truy xuất bộ nhớ chương trình ngoài hoặc bộnhớ dữ liệu ngoài DPTR là một thanh ghi 16 bít có địa chỉ 82H ( DPL, byte thấp )

và 83H ( DPH, byte cao)

Các thanh ghi port

Các port xuất/nhập của 8051 bao gồm port 0 tại địa chỉ 80H, port 1 tại địachỉ 90H, port 2 tại địa chỉ A0H và port 3 tại địa chỉ B0H Các port 0, 2, và 3 khôngđược dung để xuất/nhập nếu ta sử dụng thêm bộ nhớ ngoài hoặc nếu có một số đặc

Trang 14

tính đặc biệt của 8051 được sử dụng ( như là ngắt, port nối tiếp,…) Tất cả các portđều được định địa chỉ từng bit nhằm cung cấp khả năng giao tiếp mạch.

Các thanh ghi định thời

8051 có 2 bộ đếm/định thời (time/ counter) 16 bít để định các khoảng thờigian hoặc để đếm các sự kiện Bộ định thời 0 có địa chỉ 8AH ( TL0, byte thấp ) và8CH ( TH0, byte cao ); bộ định thời 1 địa chỉ 8BH ( TL1, byte thấp) và 8BH ( TH1,byte cao)

Hoạt động của bộ định thời được thiết lập bởi thanh ghi chế độ định thờiTMOD ( timer mode register) ở địa chỉ 89H và thanh ghi diều khiển định thờiTCON ( timer control register ) ở địa chỉ 88H Chỉ có TCON được định địa chỉ từngbít

Các thanh ghi của port nối tiếp

Bên trong 8051có một port nối tiếp để truyền thông với các thiết bị nối tiếpnhư các thiết bị đầu cuối hoặc modem, hoặc để giao tiếp với các IC khác có mạchgiao tiếp nối tiếp Một thanh ghi được gọi là bộ đệm dữ liệu nối tiếp SBU ( serialdata buffer) ở địa chỉ 99H lưu giữ dữ liệu nhận về Việc ghi lên SBUF sẽ lấy dữ liệu

đẫ nhận được

Các chế độ hoạt động khác nhau được lập trình thông qua thanh ghi điềukhiển port nối tiếp SCON ( serial port control register) ở địa chỉ 98H, thanh ghi nàyđược định địa chỉ ở từng bit

Thanh ghi ngắt

8051 có một cấu trúc ngắt với 2 mức ưu tiên và 5 nguyên nhân ngắt Cácngắt bị vô hiệu hoá sau khi reset hệ thống và sau đó được cho phép bằng cách ghivào thanh ghi cho phép ngắt IE ( interrupt enable structure) ở địa chỉ A8H Mức ưutiên ngắt được thiết lập qua thanh ghi ưu tiên ngắt IP (interrupt priority register) ởđịa chỉ B8H Cả hai thanh ghi này đều được định địa chỉ từng bit

Thanh ghi điều khiển nguồn

Thanh ghi điều khiển nguồn PCON (Power control register) có địa chỉ 87Hchứa các bit điều khiển

Bit SMOD tăng gấp đôi tốc độ baud của port nối tiếp khi port này hoạt động

ở chế độ 1, 2, hoặc 3 Các bit 4, 5 và 6 của PCON không được định nghĩa Các bit 2

và 3 là các bit cờ đa mục đích dành cho ứng dụng của người sử dụng

Trang 15

Các bit điều khiển nguồn, nguồn giảm PD và nghỉ IDL, hợp lệ trong tất cảchip thuộc họ MCS-51, nhưng chỉ được thực hiện trong các phiên bản CMOS của

họ MCS-51 PCON không được địa chỉ bit

Chế độ nguồn giảm: Lệnh thiết lập từ bit PD bằng 1 sẽ là lệnh sau cùng được thực thi trước khi đi vào chế độ nguồn giảm Trong suốt thời gian ở chế độ nguồn giảm Vcc có điện áp là 2V Cần phải giữ cho Vcc không thấp hơn khi đạt được chế độ nguồn giảm và cần phục hồi Vcc = 5V tối thiểu 10 chu kì giao động trước khi chân RST đạt mức thấp lần nữa.

độ baud tăng gấp 2 ở các chế độ 1, 2 và 3 của port nốitiếp

Các chi tiết của tập lệnh

Rn: Các thanh ghi từ R0 đến R7 của bank thanh ghi được lưạ chọn

Data : Đây là 8 bít đị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ứa chức năng đặc biệt

Trang 16

@Ri: Định địa chỉ gián tiếp sử dụng thanh ghi R0 hoặc R1.

#data : Hằng 8 bít chứa trong câu lệnh

#data 16: Hằng 16 bít địa chỉ được dùng trong câu lệnh

Addr 16: 16 bít địa chỉ được dung trong câu lệnh LCALL và LJMP

Addr 11: 11 bít địa chỉ được dung trong lệnh LCALLvà LJMP

Rel: Byte offset 8 bit có dấu được dung 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 ghichức năng đặc biệt

Nhóm lệnh số học

ADD A,Rn (1 byte, 1 chu kỳ máy): Cộng nội dung 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ỉ đượckhai báo trong thanh ghi Ri vào thanh ghi A

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

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

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

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

ADDC A, #data (2, 1): Cộng dữ liệu tức thời từ 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 thanh ghi A cho một số và cờ nhớ

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

SUBB A, #data (2, 1):Trừ nội dung thanh ghi 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 @R (1, 1): Tăng nội dung vùng RAM lên 1

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

DEC A (1, 1): Giảm nội dung thanh ghi A lên 1

DEC Rn (2, 1): Giảm dữ liệu trực tiếp thang ghi Rn lên 1

Trang 17

DEC data (2, 1): Giảm dữ liệu trực tiếp lên 1.

DEC @Rn (1, 1): Giảm trực tiếp nội dung vùng RAM lên 1

DEC DPTR (1, 1): Giảm nội dung thanh 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 A, #data (2, 1): AND nội dung thanh ghi A với dữ liệu tức thời

ANL data, A(2, 1): AND 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 1 dữ liệu tức thời.ANL C, bit (2, 2): AND cờ nhớ với một bít dữ liệu trực tiếp

ORL A Rn (1, 1) : OR nội dung thanh ghi A với nội dung thanh ghi Rn.ORL A, data (2, 1): OR nội dung thanh ghi A với dữ liệu gián tiếp trong RM.ORL A, # data (2, 1): OR nội dung thanh ghi A với dữ liệu tức thời

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

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

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

XRL A, Rn (1, 1): XOR nội dung thanh ghi A với một nội dung thanh ghiRn

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

XRL A, @Ri (1, 1):XORnội dung thanhghi A với dữ liệu gián tiếp trongRAM

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

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

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

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

CLR C (1, 1):Xoá cờ nhớ

Trang 18

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

CPL bit (1, 1): Bù một bít 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 ( ½ byte)

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

MOV A,Rn (1, 1): Chuyển nội dung lệnh 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, 1): 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 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ựctiế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ựctiếp

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

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

MOV DPTR, data 16 (3, 2): Chuyển hằng 16 bit vào một 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 bít trực tiếp

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

là @A + DPTR vào thanh ghi A

Trang 19

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

@A + PC vào thanh ghi A

MOV A, @Ri (1, 2): Chuyển dữ liệu ngoài (8 bit địa chỉ) vào thanh ghi A.MOV A, @ DPTR (1, 2): Chuyển dữ liệu ngoài(16 bit địa chỉ)vào thanh ghiA

MOV @Ri, A (1, 2): Chuyển nội dung A ra dữ liệu bên ngoài ( 8 bít địa chỉ).MOV @DPTR, A (1, 2): Chuyển nội dung A ra dữ liệu bên ngoài ( 16 bit địachỉ )

MOV @Ri, A (1, 2): Chuyển nội dung A ra dữ liệu bên ngoài (8 bit địa chỉ ).MOV @DPTR, A (1, 2): Chuyển nội dung A ra dữ liệu bên ngoài ( 16 bít địachỉ )

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

XCHD A, @Ri (1, 1): Trao đổi dữ liệu giữa nibble thấp thanh ghi A với nộidung nửa thấp của byte trong RAM nội, byte này được định địa chỉ gián tiếp bởithanh ghi được chỉ ra trong lệnh

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 dung địa chỉ dài

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

RET 1 (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 đến địa chỉ offset chỉ ra bởi rel

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

JZ rel (2, 2): Nhảy đến địa chỉ offset rel nếu A = 0

JNZ rel (2, 2): Nhảy đến địa chỉ offset rel nếu A không bằng 0

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

JNC rel (2, 2): Nhảy đến rel nếu cờ nhớ được không được cài đặt

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

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

Trang 20

JBC bit, rel (3, 2): Nhảy tương đối đến rel nếu bít trực tiếp không được càiđặt bằng 1 và xoá bít.

CJNE A, #data, rel (3, 2): So sánh dữ liệu tức thời với A và nhảy đến rel nếukhô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 rel 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 rel nếu không bằng

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

1.3 Vi điều khiển AT89C51

AT 89C51 là phiên bản 8051 có ROM trên chip là bộ nhớ Flash Phiên bảnnày rất thích hợp cho các ứng dụng nhanh vì bộ nhớ Flash có thể được xoá trongvài giây ( chứ không phải 20 phút như 8751) Dĩ nhiên là để dùng AT 89C51 cầnphải có bộ đốt ROM hỗ trợ bộ nhớ Flash, xong lại không cần bộ xoá ROM vì bộnhớ Flash vì bộ nhớ Flash được xoá bằng bộ đốt PROM Để tiện sử dụng, hiện nayhãng Atmel đang nghiên cứu một phiên bản của AT89C51 có thể được lập trìnhqua cổng COM của máy tính IBM PC và như vậy sẽ không cần bộ đốt PROM

Bảng 3.1: Các phiên bản của 8051 của Atmel

Thông số về kiểu đóng vỏ và tốc độ của bộ vi điều khiển cũng đươc thể hiện

ở kí hiệu Ví dụ, từ bảng 2, chữ “C” đứng trước số 51 ở kí hiệu AT 89C51-12PC là

để chỉ công nghệ CMOS( tiêu thụ năng lượng thấp) “12” để chỉ tốc độ 12MHZ và

“P” là kiểu đóng vỏ DIP, và chữ “C” cuối cùng là kí hiệu cho thương mại(Ngược

Trang 21

với chữ “M” là quân sự), AT 89C51-12PC rất thích hợp cho các thử nghiệm củahọc sinh, sinh viên

Bảng2.3: Các phiên bản 8051 với tốc độ khác nhau của Atmel

II DS 12C887

2.1 Đặc trưng / tính năng:

- Thay thế về thời gian và lịch cho dòng máy tính IBM

- Nguồn pin tương thích là MC146818B và DS 12C87

- Nếu nguồn cung cấp bị mất(mất điện) thì hệ thống vẫn hoạt động trongkhoảng thời gian là trên 10 năm

- Hệ thốngcònchứa đựng các thành phần : Pin lithium, thạch anh và các mạch

hỗ trợ

- Bộ đếm giờ, phút, giây, ngày, tháng, năm cho tới năm 2100

- Mã nhị phân hay mã BCD(mã chuyển đổi giữa nhị phân và thập phân) diễn

tả về thời gian, lịch và báo giờ(chuông báo)

- Trong chế độ 12h thì có giờ sáng(AM) và giờ chiều (PM)

- Tuỳ chọn cài đặt thời gian

- Bus thời gian có thể tuỳ chọn giữa Motorola và Intel

- Có một chân để chọn các Bus khác nhau

Giao tiếp với phần mền gồm 128 byte nội bộ trong đó có

+ 15 byte – dùng cho thời gian và các tín hiệu điều khiển

+ 113 byte RAM đa mục đích

- Cho phép lập trình tần số của sóng vuông

- Tín hiệu ngắt phải tương thích với Bus(IRQ)

- Có 3 ngắt mền khác nhau cho phép kiểm tra và điều khiển

+ Đặt thời gian báo thức(chuông báo) 1 hoặc2 lần trong 1 ngày

+ Tỷ lệ về thời gian là từ 122-500 ms

+Cập nhật thời gian theo chu kỳ

- Thanh ghi thế kỷ

2.2.Mô tả về các chân.

Trang 22

- AD0 – AD7:8 đường dữ liệu và địa chỉ

- Reset: Chân reset

- IRQ: xuất ra yêu cầu ngắt

Cung cấp 16 các ứng dụng khác nhau như chức năng không thay đổi thời giantrong ngày, giờ báo(chuông báo), năm Chương trình cho phép ngắt, máy phát sóngvuông và 113 byte RAM tĩnh Đồng hồ thời gian thực là để nhớ chính xác thời giantrong ngày và duy trì nó nếu như nguồn cung cấp bị hỏng(mất điện)

2.4 Nguyên tắc hoạt động

Trang 23

Sơ đồ trong hình 1 đã diễn tả về việc kết nối chân với các khối chức năng bêntrong DS 12C887 Dưới đây là sự diễn tả về chức năng của mỗi nguồn Pin.

kỳ một nguồn pin nào nhập vào

- MOT(lựa chọn chế độ):

Chân MOT cho phép lựa chọn giữa 2 kiểu Bus:

+ Khi kết nối với Vcc thì Bus Motorola được chọn

+ Khi kết nối với chân Gnd hoặc ngắt dòng điện trái thì Bus Intel được lựachọn

- SQW(xuất ra sóng vuông):

ChânSQW có thể xuất ra tín hiệu từ 1 trong 13 nhánh được cung cấp bởi 15trạm bên trong của đồng hồ thời gian thực Tần suất của chân nguồn SQW có thể bịthay đổi bởi chương trình của thanh ghi A trong bảng 1 Tín hiệu SQW có thể bậthoặc tắt bằng cách sử dụng bit SQWE trong thanh ghi B Tín hiệu SQW không chophép nguồn Vcc nhỏ hơn 4,25v

- DA0 – AD7(địa chỉ trực tiếp đa chức năng hay bus địa chỉ):

Bus đa thành phần được ghi lại vào chân bởi vì thông tin về địa chỉ thời gian và

dữ liệu được chia sẻ như nhau Địa chỉ hiện tại thì ở phần thứ nhất (phần 1) của chu

kỳ bus và phần 2 của chu kỳ bus giành cho đường dẫn tín hiệu sử dụng cho dữ liệu Địa chỉ , dữ liệu đa thành phần không chậm hơn thời gian truy cập của DS 12C887

kể từ khi bus chuyển đổi từ địa chỉ đến dữ liệu Dữ liệu xuất hiện trong suốt thờigian RAM truy cập Địa chỉ phải có giá trị trước khi chân AS/ ALE rời ra Chốt địachỉ của DS 12C887 là từ AD0 – AD6 Dữ liệu nhập vào phải hợp lí và thật ở trongsuốt phần sau của xung nhịp DS hoặc RD Một chu kỳ của DS 12C887 xuất ra 8 bit

Trang 24

dữ liệu luôn luôn ở phần sau cùng của xung nhịp đọc/ ghi Chu kỳ đọc là thiết bịđầu cuối và bus quay về ở mức trở kháng cao như là trong trường hợp về sự chuyểnđổi định giờ ở Motorola là mức thấp còn ở Intel là mức cao.

- AS:Chân chốt địa chỉ

Xung nhịp nhấp nháy chủ yếu ở trên bus đa thành phần Cạnh của chân AS/ALE tách ra là do địa chỉ chốt với DS12C887 Chân tiếp theo xuất hiện trên bus ASkhông để ý địa chỉ bị mất, chân CS được xác nhận Lệnh truy cập thì nên gửi theotừng cặp

- DS: Chân dữ liệu

Chân đọc ghi có hai chế độ của hệ điều hành phụ thuộc vào mức độ của chânMOT Khi chân MOT kết nối tới Vcc thì bus thời gian của Motorola được chọn.Trong chế độ DS chắc chắn là xung nhịp ở cuối của mỗi chu kỳ bus thì được gọi làtrường hợp đọc dữ liệu Trong suốt quá trình chu kỳ đọc thì DS 12C887 là bus 2chiều Có xuất hiện 1 vệt dài của DS trong quá trình chu kỳ viết bởi vì DS 12C887chốt dữ liệu được viết Khi chân MOT kết nối tới chân Gnd thì bus thời gian củaIntel được chọn.Trong chế độ chân DS được gọi là đọc (RD) nó xác nhận mộtkhoảng thời gian khi thiết bị DS 12C887 đọc dữ liệu Tín hiệu RD được định nghĩagiống như tín hiệu cho phép xuất (OE) trên bộ nhớ

- R/W: Chân R/W có hai chế độ của hệ điều hành:

+ Chân MOT kết nối với Vcc – Motorola Timming(chế độ thời gian củaMotorola) R/W ở cùng một mức thay thế chu kỳ hiện thời gọi là đọc/viết

A đọc chu kỳ là sự thay thế cùng với mức cao trên R/W trong khi DS

ở mức cao

A viết chu kỳ là sự thay thế trong khi R/W ở mức thấp với DS

+Chân MOT kết nối với chân Gnd – Intel Timming ( chế độ thời gian củaIntel) Tín hiệu R/W hoạt động ở mức thấp gọi là WR Trong chế độ R/W có cùngnghĩa giống như tín hiệu cho phép viết trên những RAM có đặc điểm chung giốngnhau

- CS:

Lựa chọn tín hiệu chip phải xác nhận ở mức thấp của chu kỳ bus trong DS12C887 CS phải giữ trạng thái hoạt động trong suốt qúa trình DS và AS cho chế độthời gian của Motorola Và trong suốt quá trình RD và WR cho chế độ thời gian của

Trang 25

Intelcho phép nhưng không có sự truy cập nào được cập nhật khi Vcc nhỏ hơn4.25v DS 12c887 ngăn chặn sự truy xuất chu kỳ bên trong và làm vô hiệu hoá việcnhập CS Hoạt động bảo vệ dữ liệu thời gian thực và dữ liệu RAM trong suốt quátrình nguồn bị mất.

- Reset:

Chân reset không có ảnh hưởng nào tới thời gian, lịch hoặc RAM, khi nguồncung cấp tăng thì chân reset cho phép thay thời gian tăng hoặc giảm theo bảng dữliệu quy định sẵn Bộ đếm thời gian điều khiển xuống mức thấp phụ thuộc vào ứngdụng Tuy nhiên, nếu reset sử dụng nguồn ở mức thấp thì không nên vượt quá mức200ms để chắc chắn Reset địa chỉ của DS12C887 khi nguồn mất Khi chân reset ởmức thấp và Vcc lớn hơn 4,25v thì xuất hiện các trường hợp sau:

a.Bit cho phép ngắt chu kỳ(PEI) bị trở về 0

b.Bit cho phép báo giờ(đặt chuông- ALE) bị trở về 0

c.Bit cập nhật cờ ngắt(UIF) bị trở về 0

d.yêu cầu ngắt cờ trạng thái(IRQF) bị trở về 0

e.Bit cờ ngắt trong (PE) bị quay về mức 0

f.Thiết bị không thể sử dụng được khi chân reset trở về mức cao

g.Bit cờ ngắt báo giờ (AF) về mức 0

h.Pin IRQ ở trạng thái trở kháng cao

i.Bit cho phép xuất ra sóng vuông về mức 0

j.cho phép cập nhật ngắt (UIE) về mức 0

Trong các kiểu ứng dụng của chân reset có thể kết nối với Vcc Kết nối này

sẽ cho phép DS12C887 kết nối vào/ ra với nguồn lỗi mà không có bất kỳ một sựảnh hưởng nào tới thanh ghi điều khiển

2.4.2.Biểu đồ của DS12C887

Trang 26

Việc tính toán tăng / giảm nguồn

Hàm thời gian thực tiếp tục hoạt động, tất cả RAM, thời gian,lịch, chuông báovẫn giữ nguyên bộ nhớ mà không có bất kì một sự ảnh hưởng nào của nguồn Vcckhi được nhập vào

Khi Vcc áp dụng cho DS12C887 ở mức lớn hơn 4.25v thì thiết bị trở thành đườngcho phép truy xuất Sau 200ms thì bộ tạo dao động sẽ chạy và chuỗi xuất phátkhông ở trong reset(nhìn vào thanh ghi A) cho phép hệ thống thời gian trước ổnđịnh sau khi nguồn cung cấp được áp dụng

Khi Vcc nhỏ hơn 4,25v chip được nhập vào không quan tâm đến nguồn ,chân

CS được nhập DS 12C887 đã được bảo vệ trước đó Khi DS12C887 ở trạng thái đãđược bảo vệ thì tất cả các nguồn nhập vào hoặc xuất ra đều ở mức cao.Khi Vcc ởmức dưới khoảng chừng 3v thì ngoài nguồn cung cấp Vcc không cập nhật gì hết.Nguồn năng lượng Pin cung cấp năng lượng cho chip thời gian thực và bộ nhớRAM

RTC(Bản đồ địa chỉ của RTC)

Bản đồ địa chỉ của DS12c887 được diễn tả ở hình 2 Bản đồ địa chỉ chứa đựng :

Trang 27

Hình 2

113 byte sử dụng trong RAM

11 byte RAM chứa đựng RTC dữ liệu về thời gian, lịch, chuông báo

4 byte sử dụng cho việc điều khiển và trạng thái

Tất cả 128 byte có thể được viết trực tiếp hoặc đọc theo các cách sau:

- Thanh ghi C và D chỉ đọc

- Bit 7 của thanh ghi A chỉ đọc

- Byte thứ 2 trong dãy bit cao chỉ đọc

Vị trí của thời gian, lịch , chuông báo(đặt giờ)

Thông tin về thời gian, lịch có được là do việc đọc các byte nhớ thích hợp Cácbyte về thời gian,lịch, chuông báo chứa đựng sự định dạng ở dạng nhị phân hoặcBCD Trước khi các thanh ghi về thời gian, lịch, chuông báo được viết vào thì bitSET trong thanh ghi B nên có một sự ngăn cản cập nhật trong khi việc truy xuất dữliệu đang hoạt động Định dạng lại việc lựa chọn là việc viết vào 10 thanh ghi vềthời gian, lịch, chuông báo ở dạng nhị phân hay BCD Chế độ bit dữ liệu của thanhghi B phải được cài đặt thích hợp với mức logic 10 byte về thời gian, lịch, chuôngbáo phải sử dụng đúng ở chế độ dữ liệu Bit cài đặt trong thanh ghi B nên được xoá

Trang 28

bỏ khi mà chế độ bit dữ liệu đã được viết cho phép các byte thời gian thực cập nhật

về thời gian và lịch

Bắt đầu chip thời gian thực cập nhật tất cả trong chế độ được lựa chọn, chế độ

dữ liệu sẽ không thay đổi được nếu không có cùng sự thay đổi của 10 byte dữ liệu.Bảng 2 diễn tả sự định dạng nhị phân hoặc BCD về vị trí của thanh ghi lịch,chuông báo Bit 24- 12 không thể thay đổi vị trí của giờ Khi 12h được lựa chọn vớimức logic là 1 thì giờ chiều( PM) được diễn tả Byte thời gian,lich, chuông báo luônluôn cho phép truy xuất vì chúng là bộ đệm đôi Byte thứ 11 ở vị trí 1 hoặc 2 đượcnâng cấp nên thành byte thứ 2 và kiểm tra điều kiện của chuông báo

Nếu đọc dữ liệu về thời gian, lịch trong suốt quá trình cập nhật thì vấn đề tồn tại

ở đây là giây, phút, giờ có thể không tương quan với nhau về dữ liệu và khi ở mứcthấp có thể đọc không đúng Phương pháp riêng tránh việc đọc không chính xác vềthời gian, lịch là sự chuyển đổi chậm hơn của các kí tự

3 byte cài chuông (đặt giờ) có thể sử dụng theo 2 cách sau:

Cách 1: Khi thời gian đặt được viết một cách chính xác về vị trí đặt giờ,

phút, giây thì ngắt thời gian sẽ được khởi tạo một cách chính xác thời gian trongngày nếu bit đặt giờ cho phép ở mức cao

Cách 2: Sử dụng điều kiện là chèn trạng thái “ không quan tâm” ở 1 hoặc

nhiều hơn 3 byte đặt giờ Mã “không quan tâm ”là bất kì mã hecxa nào có giá trị từC0h – FFh

2 bit có ý nghĩa nhất của mỗi byte được cài đặt ở điều kiện “không quan tâm”khimức logic ở mức 1.Mỗi một giờ chuông báo sẽ phát khi bit”không quan tâm” đượccài đặt ở byte giờ Đối với phút và giây thì cũng tương tự như thế

Trang 29

Thanh ghi điều khiển

DS 12c887có 4 thanh ghi điều khiển, nó cho phép truy nhập tới tất cả thời gian kể

cả trong khi chu kỳ đang cập nhật

- UIP (tiến trình cập nhật) :Là cờ trạng thái có thể giám sát được.

Khi bit UIP ở mức 1 thì quá trình cập nhật chuyển đổi sẽ xảy ra ngay lập tức Khibit UIP ở mức 0 thì quá trình cập nhật sẽ không xảy ra ít nhất là trong vòng 244μs.s.Các thông tin đầy đủ về thời gian, lịch, báo giờ sẵn có ở trong RAM được truy xuấtkhi UIP ở mức 0 UIP là bit chỉ đọc mà không bị ảnh hưởng bởi chân reset Bit SETtrong thanh ghi B ở mức 1 nó sẽ ngăn cản quá trình cập nhật và xoá bỏ bit trạng tháiUIP

-DV2, DV1, DV0: Những bit này thường được dùng để bật hoặc tắt máy tạo

dao động và cài đặt lại chuỗi giảm

+ Khi các bit kết hợp dưới dạng 010: Bật máy tạo dao động và cho phépRTC(Read Time Clock) giữ thời gian

+ Khi ở dưới dạng 11X: cho phép máy tạo dao động hoạt động nhưng phảigiữ chuỗi giảm khi khởi động lại

Lần cập nhật tiếp theo sẽ xảy ra trong vòng 500ms sau khi các bit DV0, DV1, DV2

ở dưới dạng 010

Trang 30

-RS3, RS2, RS1, RS0: Tỷ lệ chọn của 4 bit là được chọn 1 trong 13 nhánh

trong tổng số 15 nhánh Nhánh được chọn có thể được dùng để phát ra sóng vuông(chân SQW) hoặc ngắt trước Người sử dụng có thể làm bằng một trong các cáchdưới đây:

1.Cho phép ngắt cùng với bit PIE2.Cho phép pin SQW xuất ra cùng với bit SQWE3.Cho phép cả hai có cùng thời gian và cùng tỷ lệ4.Cùng không cho phép

Trong bảng 1:tỷ lệ ngắt trước và tần xuất của sóng vuông có thể được chọn với bit

RS 4 bit này đọc/ viết không bị ảnh hưởng bởi chân RESET

b Thanh ghi B

- SET: Khi bit SET ở mức 0 hàm cập nhật chuyển đổi một cách bình thường

bằng cách nâng cấp hàm đếm Khi bit SET ở mức 1 thì bất kỳ hàm chuyển đổicập nhật nào đều bị ngăn cản và chương trình có thể khởi động lại các byte vềthời gian, lịch mà không cần cập nhật ở giữa quá trình khởi động Chu kỳ đọc cóthể thực hiện một cách tương tự SET là bit đọc/ ghi nó không bị ảnh hưởng bởichân RESET hoặc là hàm bên trong của DS12C887

- PIE: Bit cho phép ngắt trước là bit đọc/ghi nó cho phép cờ ngắt trước trong

thanh ghi B hoạt động khi chân IRQ ở mức thấp Bit PIE khởi tạo ở mức 1những ngắt trước được phát ra bởi chân IRQ ở mức thấp cùng với tỷ lệ chỉ định

là các bit RS3 – RS0 của thanh ghi A PIE không sửa đổi bất kỳ hàm nào trongDS12C887 và ở mức 0 trên chân RESET

- AIE: Bit cho phép ngắt chuông báo là bit đọc /ghi ở mức 1 cờ báo chuông(AF)

trong thanh ghi C được xác nhận bởi chân IRQ Mỗi một ngắt chuông báo chomỗi giây của 3 byte thời gian tương ứng với 3 byte chuông báo được nhập vàovới mã nhị phân 11XXXXXX Bit AIE cài đặt ở mức 0 thì bit AF không khởitạo tín hiệu IRQ Hàm bên trong của DS12C887 không ảnh hưởng tới bit AIE

Ngày đăng: 16/12/2017, 21:15

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w