Khi chương trình được gọi, mặc nhiên sẽ là chế độ thực hiện chức năng Review và Delete, các phím ấn như sau: “-“ : Hiển thị Hottime kế trước không hiển thị quay vòng Nếu trong bảng c
Trang 1BẮT ĐẦU
CẤT AF,BC,DE,HL VÀO STACK
DPMASK =1
HIỂN THỊ HOTTIME
Y ĐỊA CHỈ
KẾ SAU
N
Y ĐỊA CHỈ
KẾ TRƯỚC
N
Y
HOTTIME
N
Y
PHẢI PHÍM “OK”
N
Y ĐẶT 1
MỚI
HỒI PHỤC CÁC THANH GHI
Trang 2
Khi chương trình được gọi, mặc nhiên sẽ là chế độ thực hiện chức năng Review và Delete, các phím ấn như sau:
“-“ : Hiển thị Hottime kế trước (không hiển thị quay vòng)
Nếu trong bảng có Hottime thì Hottime đầu tiên sẽ được hiển thị khi chương trình được gọi 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ị vẫn tắ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 Khi xóa Hottime xong, chương trình sẽ hiển thị lại Hottime đầu tiên trong bảng
Khi đặt 1 Hottime mới:
Nếu trong bảng đã đủ 10 Hottime chương trình sẽ dùng chương trình con Error để báo lỗi, ấn “OK” để bỏ lỗi
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 Trước khi gọi Keypro, chương trình Hottime phải xác định địa chỉ đặt Hottime mới để truyền cho Keypro Người sử dụng dùng bàn phím theo quy định của chương trình Keypro để đặt Hottime mới
Khi thoát khỏi Keypro chương trình tiếp tục ghi mã chuông cho Hottime (0B7h) và trở về chức năng preview và hiển thị Hottime vừa cài đặt
Để tránh việc hiển thị thời gian thực do chương trình RTP thực hiện, phải đặt mặt nạ DPMASK=1 để che hiển thị ở đầu chương trình Hottime và bỏ mặt nạ DPMASK = 0 ở cuối chương trình Hottime để cho phép RTP hiển thị thời gian thực trở lại
Lưu đồ chi tiết
Lưu đồ tiết chương trình Hottime vẽ ở hình sau:
Trang 3BẮT ĐẦU
CẤT AF, BC, DE, HL VÀO STACK
DPMASK = 1
ĐỊA CHỈ ĐẦU BẢNG HOTTIME
HIỂN THỊ HOTTIME (HT) READKEY
ĐỌC BÀN PHÍM
Y
N Y
ĐỊA CHỈ HT CUỐI ? PHẢI PHÍM “+”?
HT SAU
N
N Y
Đ/C HT HT ĐẦU ? PHẢI “-“ ? XÓA HT
TRƯỚC
N Y
Y Y N
PHÍM “DEL” ? CÓ HT ? BÁO LỖI
N
Y
PHÍM “OK” ?
N READKEY N DPMASK = 0
PHÍM “Ins” ?
Y
Y
BÁO LỖI ĐỦ 10 HT ? H IỂN THỊ THỜI GIAN THỰC
N
PHỤC HỒI CÁC THANH GHI ĐỊA CHỈ HT MỚI
KEYPRO KẾT THÚC
GHI MÃ CHUÔNG
Hình 31 : LƯU ĐỒ CHI TIẾT CHƯƠNG TRÌNH HOTTIME
Trang 4Chương trình Skiptime tương tự như Hottime phục vụ 3 chức năng về Skiptime : Xem Skiptime có trong bảng, xóa Skiptime và đặt Skiptime
Chương trình sẽ được đặt tại địa chỉ 0028h trong vùng nhớ để phục vụ cho ngắt INT mode 0
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
Lưu đồ tổng quát hoàn toàn giống như lưu đồ tổng quát của chương trình Hottime
Lưu đồ chi tiết:
Lưu đồ chi tiết chương trình Skiptime giống như của Hottime, được vẽ ở hình sau:
Trang 5BẮT ĐẦU
CẤT AF, BC, DE, HL VÀO STACK
DPMASK = 1
ĐỊA CHỈ ĐẦU BẢNG SKIPTIME (ST)
HIỂN THỊ SKIPTIME READKEY
Y ĐỌC BÀN PHÍM
N Y
ĐỊA CHỈ ST CUỐI ? PHẢI PHÍM “+”?
ST SAU
N
N Y
Đ/C ST ST ĐẦU ? PHẢI “-“ ? XÓA ST
TRƯỚC
N Y
Y Y N
PHÍM “DEL” ? CÓ ST ? BÁO LỖI
N
Y
PHÍM “OK” ?
N READKEY N DPMASK = 0
PHÍM “Ins” ?
Y
Y
BÁO LỖI ĐỦ 10 ST ? H IỂN THỊ GIỜ PHÚT THỰC
N PHỤC HỒI CÁC THANH GHI ĐỊA CHỈ ST MỚI
KEYPRO KẾT THÚC
Hình 32 : LƯU ĐỒ CHI TIẾT CHƯƠNG TRÌNH SKIPTIME
Trang 6Để có thể hiển thị Thứ – Giờ – Phút - Giây trên led 7 đoạn ở dạng số thập phân, ta cần biến đổi dữ liệu thời gian ở dạng số HEX sang BCD Mục đích của việc biến đổi này là để chỉ cần thực hiện việc so sánh thời gian thực tạo ra từ 0 đến 9 thay vì phải so sánh từ 0 đến 59
Dữ liệu thời gian thực nằm trong 4 byte 1004h, 1005h, 1006h,1007h được viết sang vùng đệm gồm 4 byte 1050h, 1051h,1052h,1053h tương ứng trước khi biến đổi từ HEX sang BCD để hiển thị
Qua khảo sát cụ thể 60 giá trị đầu của số HEX từ 0h đến 3Bh, tương ứng với số BCD có giá trị từ 0 đến 59 người viết thấy có qui luật biến đổi như sau:
00
01
02
03
04
05
06
07
08
09
+ 00h
00
01
02
03
04
05
06
07
08
09
1E 1F
20
21
22
23
24
25
26
27
+ 12h
30
31
32
33
34
35
36
37
38
39
0A
0B
0C
0D
0E
0F
10
+ 06h
10
11
12
13
14
15
16
28
29 2A 2B 2C 2D 2E
+ 18h
40
41
42
43
44
45
46
Trang 711
12
13
17
18
19
2F
30
31
47
48
49
14
15
16
17
18
19
1A
1B
1C
1D
+ 0Ch
20
21
22
23
24
25
26
27
28
29
32
33
34
35
36
37
38
39 3A 3B
+ 1Eh
50
51
52
53
54
55
56
57
58
59
Cách khởi tạo 8279:
số 3 cho 5
Lưu đồ chương trình hiển thị
Trang 8CẤT AF, BC, DE, HL VÀO STACK
ĐỊA CHỈ LED THỨ - 1
INC HL
ĐỊA CHỈ LED GIÂY +1 ?
LD A,(HL) HỒI PHỤC AF, BC, DE,HL
A < 0Ah ?
HIỂN THỊ Hình 33 : LƯU ĐỒ CHƯƠNG TRÌNH DISPLAY
Trang 93.3.7- Chương trình con KEYPRO:
Mô tả chương trình :
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 Chương trình con KEYPRO nhằm phục vụ yêu cầu chung đó
KEYPRO sẽ xử lý các tổ hợp phím “Ins_+”, “Ins_ -“ ,“Del/Date _ +”,
“Del/Date _ -“ và các phím “+”, “-“,”OK” Mỗi phím khi ấn sẽ tạo ra 1 giá trị và thực hiện 1 chức năng cho trong bảng sau:
Bảng 8: CHỨC NĂNG VÀ GIÁ TRỊ CÁC PHÍM
Lưu ý: Các tổ hợp phím: ”Date_+” và “Date_-“, “Ins_+” và “Ins_-“ được
tạo ra do ấn phím “+” hay ”-“ trong khi ấn và giữ phím “Ins”, “Date” 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 Khoảng thời gian đó là đủ để chống dội cho phím được ấn đồng thời để quan sát được Giờ Phút đang thay đổi liên tục khi người sử dụng ấn và giữ phím
“+” hay “-“ Mỗi khi có phím được ấn (ngoại trừ phím” OK”) nghĩa là thứ, giờ, phút đã có sự thay đổi, KEYPRO sẽ nhờ chương trình con DISPLAY hiển thị giờ phút đã thay đổi
Chương trình triệu gọi KEYPRO phải truyền cho KEYPRO địa chỉ bộ nhớ để ghi giờ phút đã thay đổi, địa chỉ này phải đặt trong thanh ghi HL
Lưu đồ chi tiết:
Trang 10CẤT BC VÀO STACK
HIỂN THỊ THỚI GIAN ĐANG THAY ĐỔI
ĐỌC BÀN PHÍM
LẤY BC TỪ STACK
Y Y
Y Y
GIẢM THỨ ? THỨ – 1 THỨ = 1 ? THỨ = 8
Y Y
Y Y
Y Y TĂNG PHÚT ? PHúTù + 1 PhùúT = 60 ? PhúT = 0
Y Y GIẢM PHÚT ? PhúT –1 PhúT = -1 ? PhúT = 59
N
PHẢI OK ?
Y GHI THỜI GIAN THỰC VÀO BỘ NHỚÙ
KẾT THÚC
Hình 34 : LƯU ĐỒ CHI TẾT CHƯƠNG TRÌNH KEYPRO