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 1LỜ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 31.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 4Bả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 6Hì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 7Hì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 8Port 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 9thườ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 10nà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 11MOV 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 12Hầ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 13Cờ 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 14tí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 15Cá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 17DEC 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 18CPL 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 19MOVC 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 20JBC 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 21vớ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 23Sơ đồ 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 24dữ 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 25Intelcho 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 26Việ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 27Hì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 28bỏ 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 29Thanh 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