Chương trình MAIN sẽ khởi động hệ thống và thực hiện chức năng tự động báo hiệu.. Quá trình tự động báo hiệu được bắt đầu ngay sau khi khởi động hệ thống, quá trình này do một vòng lặp t
Trang 1Hệ thống báo giờ tự động
3.2.7- Phân chia vùng nhớ :
Trong không gian 6KB gồm 4KB ROM và 2KB RAM bộ nhớ của Hệ Thống được phân chia như sau:
17FEh
103Dh
1027h
1007h
1004h
0FFFh
0F9Fh
Hình 25: BẢNG PHÂN CHIA BỘ NHỚ 3.3- Các chương trình
3.3.1-Chương trình MAIN:
Mô tả chương trình:
Chương trình MAIN được đặt vào vùng nhớ bắt đầu từ địa chỉ 0000h Nó được thực hiện ngay khi hệ thống vừa được cấp điện Chương trình MAIN sẽ khởi động hệ thống và thực hiện chức năng tự động báo hiệu Lưu đồ tổng quát như sau:
.
Trang 2BẮT ĐẦU
CHỜ 1 PHÚT KHỞI ĐỘNG HỆ THỐNG
N THỜI GIAN
THỰC BẰNG THỜI ĐIỂM
BÁO HIỆU ?
Y
CÓ BÁO HIỆU Y
KHÔNG ?
N
N
PHẢI HOTTIME
KHÔNG?
Y
XÓA HOTTIME
Trang 3
Hệ thống báo giờ tự động
Hình 26 : LƯU ĐỒ TỔNG QUÁT CHƯƠNG TRÌNH MAIN
Khởi động hệ thống như sau:
giá trị 0FEh
Tự động báo hiệu
Quá trình tự động báo hiệu được bắt đầu ngay sau khi khởi động hệ thống, quá trình này do một vòng lặp thực hiện, mỗi phút một lần
_ 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 có thời điểm trùng với thời gian thực, chương trình sẽ duyệt bảng Skiptime 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) Nếu có Skiptime bằng với thời gian thực, nghĩa là thời điểm đó bị cấm báo hiệu, chương trình sẽ không báo hiệu và xóa Skiptime đó
_ 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
_ Khi nhận quyết định báo hiệu, chương trình sẽ lấy mã chuông của thời điểm cần báo hiệu Mỗi giây 1 bit trong byte mã chuông sẽ được truyền cho mạch báo hiệu theo thứ tự từ D7 đến D0, mức cao làm chuông reo Sau cùng xuất cho mạch mức 0 để reset Sau 9 giây chương trình hoàn tất việc báo hiệu Để phân biệt thời điểm báo hiệu là Restime hay Hottime, ta dùng một mã định hướng Mã định hướng này nằm trong thanh ghi C:
Khi C = 0 ; định hướng Restime, C = 1; định hướng Hottime
Vấn đề xóa Hottime và Skiptime:
Để 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
.
Trang 4BẮT ĐẦU
LẤY GIỜ BÁO HIỆU KẾ
LẤY GIỜ, PHÚT THỰC
ĐỊA CHỈ ĐẦU BẢNG
KHỞI ĐỘNG HỆ THỐNG
PHẢI EOFHT?
LẤY PHÚT BÁO HIỆU
PHẢI EOFRT?
BẰNG GIỜ THỰC?
BẰNG PHÚT THỰC ?
CẤM NGẮT INT
LẤY ĐỊA CHỈ ĐẦU
PHÚT THAY ĐỔI ?
LẤY PHÚT THỰC
LẤY ĐỊA CHỈ ĐẦU BẢNG RESTIME TRỪ 3
trong bảng kể từ sau khi Hottime (Skiptime) cần xóa đến địa chỉ của Hottime (Skiptime ) cần xóa
Lưu đồ chi tiết chương trình MAIN
Y
MINWT
Y
N
Y
N
N
Y
N
Y
N
Trang 5Hệ thống báo giờ tự động
CÒN SKIPTIME ? N
N PHẢI T7 HAY CN ?
Y
Y
LẤY GIỜ SKIPTIME
PHẢI HOTTIME / N
N BẰNG GIỜ THỰC ? LẤY MÃ CHUÔNG
Y
LẤY PHÚT SKIPTIME
LẤY GIÂY THỰC
N BẰNG PHÚT THỰC ?
Y N CÓ THAY ĐỔI ?
CẶP NHẬT SỐ SKIPTIME
XUẤT RA MẠCH BÁO HIỆU DỊCH TRÁI MÃ CHUÔNG
N DỊCH ĐỦ 9 BIT
CHƯA ?
PHẢI HOTTIME ? N
Y
XÓA HOTTIME CAP NHẬT SỐ HOTTIME
HÌnh 27 : LƯU ĐỒ CHI TIẾT CHƯƠNG TRÌNH MAIN
.
Trang 63.3.2- Chương trình RTP (Realtime program)
Mô tả chương trình
Chương trình được đặt ở địa chỉ 0066h đáp ứng cho ngắt NMI Tần số gọi ngắt là 1Hz Khi được gọi, chương trình RTP thực hiện như sau:
Tăng giây thêm 1 Khi giây = 60 phải tăng phút thêm 1 và cho giây bằng 0 Khi phút = 60 phải tăng giờ thêm 1 và cho phút bằng 0
Khi giờ = 24 phải tăng thứ thêm 1 và gán giờ bằng 0
Khi thứ = 8 phải gán thứ = 2
Khi giây thực có sự thay đổi, phải tham khảo DPMASK để quyết định việc hiển thị thời gian thực:
Nếu DPMASK = 0 ; Hiển thị
DPMASK = 1 ; Không hiển thị
Lưu đồ chi tiết chương trình RTP
Trang 7Hệ thống báo giờ tự động
BẮT ĐẦU
CẤT AF, BC, DE, HL VÀO STACK
GIÂY + 1
GIÂY = 60 ? N
Y
GIÂY = 0, PHÚT + 1
PHÚT = 60 ? N
Y
PHÚT = 0, GIỜ + 1
GIỜ = 24 ? N
Y
GIỜ = 0, THỨ + 1
THỨ = 9 ? N
Y
THỨ = 2
Y CÓ CHE HIỂN THỊ ?
N
HIỂN THỊ THỜI GIAN THỰC
HỒI PHỤC AF, BC, DE, HL
KẾT THÚC Hình 28 : LƯU ĐỒ CHƯƠNG TRÌNH RTP
.
Trang 83.3.3-Chương trình Settime
Mô tả chương trình:
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 Do đóù, chương trình Settime được đặt ở địa chỉ 08h trong vùng nhớ
Chương trình Settime sẽ gọi chương trình Keypro để xử lý 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 Trước khi gọi Keypro, Settime cần chuẩn bị các dữ liệu cần thiết cho Keypro như:
Trước khi thoát, Settime phải hiển thị lại thời gian thực
Người sử dụng phải theo qui định của chương trình Keypro để điều chỉnh thời gian thực
Lưu đồ chi tiết
Trang 9Hệ thống báo giờ tự động
BẮT ĐẦU
CẤT AF, BC,DE, HL VÀO STACK
LẤY THỨ GIỜ PHÚT HIỆN TẠI ĐẶT GIÂY THỤC = 0
KEYPRO HIỂN THỊ THỨ GIỜ PHÚT THỰC
PHỤC HỒI AF,BC,DE,HL TỪ STACK
KẾT THÚC
Hình 29 : LƯU ĐỒ CHƯƠNG TRÌNH SETTIME
.
Trang 103.3.4-Chương trình Hottime
Mô tả chương trình
Đâ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) Lưu đồ tổng quát như sau: