Thiết kế và thực hiện hệ thống báo giờ tự động sử dụng CPU Z80

MỤC LỤC

NGUYÊN LÝ CHUNG CỦA HỆ THỐNG BÁO GIỜ TỰ ĐỘNG

Trong quá trình hoạt động của Hệ Thống, cứ mỗi giây tín hiệu định thời tác động vào ngắt NMI để gọi chương trình tạo thời gian thực và mỗi giây thời gian thực được hiển thị trên đèn led 7 đoạn. Chương trình phần mềm thường xuyên thực hiện quá trình so sánh thời gian thực với từng Restime, Hottime, Skiptime và thứ trong tuần để ra quyết định báo hiệu. Xem_Xóa_Đặt Hottime, Xem_Xóa_Đặt Skiptime và Settime sẽ được chương trình tương ứng phục vụ.

Khi đó, thông qua bàn phím và đèn hiển thị người sử dụng sẽ thực hiện các chức năng đã chọn. Người viết thấy yêu cầu phần cứng ngoài bộ vi xử lí và bộ nhớ (ROM và RAM) cần phải có mạch hiển thị, bàn phím, mạch kiểm soát ngắt mode 0, mạch điều khiển báo hiệu, mạch tạo xung đồng hồ và định thời. Vêà phần mềm, ngoài việc khởi động Hệ Thống cần phải thực hiện các nhiệm vụ sau: tạo thời gian thực, quyết định việc báo hiệu và điều khiển báo hiệu.

Phục vụ người sử dụng điều chỉnh thời gian thực, thực hiện các chức năng về Hottime và Skiptime. Điều khiển mạch hiển thị để hiển thị các thông tin cần thiết như thời gian thực, các Hottime và Skiptime, tạo thông báo lỗi.

NỘI DUNG

GIỚI THIỆU CÁC DẠNG MẠCH ĐÃ Cể TRONG NƯỚC

Dữ liệu này không xuất trực tiếp ra led 7 đoạn để hiển thị mà chúng có nhiệm vụ tạo ra xung clock cho mạch đếm BCD và xung reset cho mạch đếm sau 60 phút và sau 24 giờ. Cứ mỗi phỳt ở ngừ ra của IC ROM sẽ xuất hai 2 byte, ở bit D0 của byte thứ nhất cú giá trị là 0 và byte thứ 2 có giá trị là 1, IC ROM cứ tuần hoàn xuất ra dữ liệu như thế nên ở bit D0 ngừ ra sẽ tạo thành một chuỗi xung liờn tục cú tần số là 1/60 Hz hay 1 phỳt (dạng chuỗi xung có được mô tả ở hình phía dưới) kích cho mạch đếm BCD để mạch đếm này cứ đếm tăng lên, sau đó số đếm BCD này sẽ được giải mã từ BCD ra led 7 đoạn để hiển thị. Sử dụng bit D4 để phát tín hiệu điều khiển chuông cho đầu tiết học và bit D5 để phát tín hiệu điều khiển chuông ở cuối tiết học, phải dùng 2 bit để điều khiển chuông là do phải sử dụng 2 mạch dao động đơn ổn, một mạch định thời gian dài cho đầu tiết và một.

Dữ liệu này sẽ được xuất ra led 7 đoạn và mạch điều khiển báo chuông chỉ qua bộ đệm mà không cần giải mã, mỗi phút sẽ có 4 byte dữ liệu gồm 2 byte cho giờ và 2 byte cho phút xuất lần lượt ra 2 led giờ và 2 led phút, chúng sẽ vẫn cứ xuất ra lần lượt như thế (quét) với tần số khá cao để người quan sát không còn thấy được sự chớp tắt của nó nữa. Dữ liệu xuất ra ở bộ đệm có 32 đường, trong đó 28 đường cung cấp cho hiển thị giờ, phút, một đường cấp cho hiển thị AM/PM thông qua 1 FF-T, một đường cấp cho mạch điều khiển chuông để báo giờ. _ Điều chỉnh thời gian thực, cách điều chỉnh là điều chỉnh với tốc độ nhanh và chậm nhưng không có khả năng điều chỉnh giờ, phút độc lập với nhau cũng như không có khả năng điều chỉnh theo hướng giảm giờ, phút.

Các bộ phận bổ trợ như mạch tạo xung đồng hồ và định thời (Clock generator và Timer), mạch bàn phím (Keyboard), mạch hiển thị (Display), mạch kiểm soát ngắt INT (Interrupt controller) và mạch điều khiển báo hiệu (Bell Driver). Mạch tạo xung đồng hồ và định thời sẽ phát ra xung nhịp cho hoạt động của Hệ Thống và tớn hiệu định thời tần số 1Hz tỏc động vào ngắt NMI của àP phục vụ việc tạo thời gian thực.

SƠ ĐỒ MẠCH ĐẾM BCD CHO PHÚT, GIỜ
SƠ ĐỒ MẠCH ĐẾM BCD CHO PHÚT, GIỜ

VXL Z80

THIEÁT KEÁ PHAÀN MEÀM

Do đó, phần mềm Hệ Thống gồm 5 chương trình thực hiện 5 chức năng chính của Hệ Thống và 3 chương trình con phục vụ chung cho các chương trình. Điều kiện để báo hiệu: khi có 1 Restime hay Hottime bằng với thời gian thực và không có Skiptime nào bằng với thời gian thực thì tiến hành việc báo hieọu. Sau đó, 1 vòng lặp sẽ thực hiện quá trình so sánh thời gian thực với các thời điểm báo hiệu (Restime, Hottime), các thời điểm cấm báo hiệu (Skiptime) và thứ trong tuần để quyết định việc báo hiệu hay không đối với từng thời điểm hiện tại.

Tín hiệu định thời gọi ngắt NMI có tần số 1Hz, nên thời gian thực được tạo ra bởi chương trình phục vụ ngắt NMI đặt tại địa chỉ 0066h có tên là RTP (Real Time Program). _ Chương trình bắt đầu duyệt bảng Hottime và Restime để tìm một thời điểm báo hiệu bằng với thời gian thực, nếu không có chương trình quay về chờ thực hiện quá trình mới. Nếu không có Skiptime bằng với thời gian thực và thứ là thứ 2 – 6 thì chương trình ra quyết định báo hiệu (nếu thời điểm báo hiệu đó là Restime).

_ Sau khi báo hiệu hay xóa Skiptime xong chương trình sẽ xóa Hottime (nếu thời điểm báo hiệu là (Hottime) rồi trở về thực hiện quá trình mới. Để bảng Hottime (Skiptime) vẫn giữ được cấu trúc là danh sách tuần tự sau khi xóa Hottime (Skiptime), phải thực hiện theo cách sau: dời những byte còn lại trong bảng kể từ sau khi Hottime (Skiptime) cần xóa đến địa chỉ của Hottime (Skiptime ) cần xóa. Chương trình Settime phục vụ người sử dụng trong việc điều chỉnh thời gian thực thông qua bàn phím nhằm giúp người sử dụng điều chỉnh thời gian thực bằng bàn phím.

Đây là chương trình phục vụ ngắt mode 0 ở địa chỉ 018h đảm nhiệm chức năng về Hottime: Xem những Hottime đã có trong bảng (gọi là preview), xóa những Hottime đã có trong bảng (gọi là delete), đặt một Hottime mới (gọi là Insert). Còn bảng Hottime rỗng thì mạch hiển thị sẽ tắt (các Led 7 đoạn hiển thị giờ, phút ở trạng thái Blank) và khi ấn phím “+” hay “-“ mạch hiển thị vaãn taét. Nếu không có Hottime nào trong bảng (các Led 7 đoạn hiển thị giờ, phút ở trạng thái Blank), khi ấn phím “Del” thì xuất hiện thông báo lỗi do chương con Error thực hiện.

Nếu trong bảng còn Hottime rỗng, chương trình Hottime sẽ gọi chương trình con Keypro để người sử dụng dùng bàn phím chọn giờ, phút cho Hottime mới. Về hoạt động hoàn toàn giống chương trình Hottime nhưng Skiptime không cần đặt mã chuông , địa chỉ đầu bảng Skiptime là 1028h và mỗi Skiptime có 2 byte. Các chức năng Settime, đặt Hottime/Skiptime cần sử dụng bàn phím để thay đổi giờ, phút đến giá trị mong muốn và quan sát Giờ Phút đang thay đổi trên màn hình.

Vì bàn phím được thiết kế như là vùng nhớ có địa chỉ từ 4000h đến 4FFFh nên khi đọc bàn phím, chương trình con KEYPRO thực hiện lệnh đọc bộ nhớ tại địa chỉ 4000h hay lớn hơn (giới hạn trong vùng nhớ cho phép) với chu kỳ khoảng 175mS. • Chương trình MAIN để khởi động hệ thống, so sánh thời gian thực với các Restime, Hotime, Skiptime và thứ trong tuần để ra quyết định báo hiệu và điều khiển báo hiệu.

Bảng sau đây trình bày tóm tắt tên và địa chỉ các chương trình phần meàm.
Bảng sau đây trình bày tóm tắt tên và địa chỉ các chương trình phần meàm.