Bảng chứa các thời điểm báo hiệu thường trực.
Trang 1PUSH HL
LD HL,1000H
LD (HL),01H
LD A,10010000B
LD (2001H),A
LD HL,2000H
LD (HL),01101101B
LD (HL),00000110B
LD (HL),01110011B
LD (HL),01111000B
LD (HL),00000110B
LD (HL),01010100B
LD (HL),01111001B
LD BC,0FFFFH
REPT: XOR A
DEC BC
CP B
JR NZ,REPT
VIEW0: LD IY,1028H
LD D,01H
VIEW: XOR A
LD (1050H),A
LD (1053H),A
LD A,(IY+0)
LD (1051H),A
LD B,(IY+1)
LD HL,1052H
LD (HL),B CALL DISPLAY
WT: LD BC,0D07H
WAIT: XOR A
DEC BC
CP B
JR NZ,WAIT
LD A,(4000H)
KEY1: CP 0FDH
JR NZ,KEY2
LD A,(1002H)
CP 0H
JR Z,WT
CP D
JR Z,WT
INC D
INC IY
INC IY
JR VIEW
KEY2: CP 0FBH
JR NZ,KEY3
LD A,01H
CP D
JR Z,WT
DEC D
Trang 2DEC IY
DEC IY
JR VIEW
KEY3: CP 0EFH
JR NZ,KEY4
LD HL,1002H
LD A,(HL)
CP 0H
JP NZ,DEL
CALL ERROR
JP VIEW0
DEL: DEC (HL)
SUB D
ADD A,A
INC A
INC A
LD C,A
LD B,00H
PUSH IY
POP HL
LD D,H
LD E,L
INC HL
INC HL
LDIR
JR VIEW0
KEY4: CP 0FEH
JR NZ,KEY5
LD A,(1002H)
CP 0AH
JR NZ,SET
CALL ERROR
JP VIEW
SET: ADD A,A
LD BC,1028H
LD H,00H
LD L,A
ADD HL,BC
LD BC,00H
CALL KEYPRO
LD HL,1002H
INC (HL)
JP VIEW
KEY5: CP 0F7H
JP NZ,VIEW
EXIT: LD A,10010000B
LD (2001H),A XOR A
LD HL,2000H
LD (HL),A
LD (HL),A
LD (HL),A
Trang 3LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD BC,138BH REPT1: XOR A
DEC BC
CP B
JR NZ,REPT1
LD HL,1000H
LD (HL),L
LD HL,1050H
LD A,(1004H)
LD (HL),A INC HL
LD A,(1005H)
LD (HL),A INC HL
LD A,(1006H)
LD (HL),A INC HL
LD A,(1007H)
LD (HL),A CALL DISPLAY
POP HL
POP DE
POP BC
POP AF
EI
RETI
Chương trình KEYPRO cho Settime
Mục đích : Xử lí bàn phím để thay đổi thứ, giờ, phút trên màn hình và ghi vào bộ nhớ địa chỉ trong HL
Ngõ vào : mã của phím được ấn
Ngõ ra : thứ, giờ, phút thay đổi trên màn hình và lưu vào bộ nhớ thứ, giờ, phút đã thay đổi
Các thanh ghi sử dụng : D, BC, HL, AF
Chương trình con sử dụng : DISPLAY
KEYPRO:
LD A,D
LD (1050H),A PUSH BC
LD A,B
LD (1051H),A
LD A,C
Trang 4LD (1052H),A
LD A,00H
LD (1053H),A CALL DISPLAY
LD BC,0D07H LOOP1: XOR A
DEC BC
CP B
JR NZ,LOOP1
LD A,(4000H) POP BC KEY1: CP 0FCH
JR NZ,KEY2 INC B
LD A,18H
CP B
JR NZ,KEYPRO
LD B,00H
JR KEYPRO KEY2: CP 0FAH
JR NZ,KEY3 DEC B
LD A,0FFH
CP B
JR NZ,KEYPRO
LD B,17H
JR KEYPRO KEY3: CP 0FDH
JR NZ,KEY4 INC C
LD A,03CH
CP C
JR NZ,KEYPRO
LD C,00H
JR KEYPRO KEY4: CP 0FBH
JR NZ,KEY5 DEC C
LD A,0FFH
CP C
JR NZ,KEYPRO
LD C,03BH
JR KEYPRO KEY5: CP 0EDH
JR NZ,KEY6 INC D
LD A,09H
CP D
JR NZ,KEYPRO
LD D,02H
JR KEYPRO KEY6: CP 0EBH
Trang 5JR NZ,KEY7 DEC D
LD A,01H
CP D
JR NZ,KEYPRO
LD D,08H
JR KEYPRO KEY7: CP 0F7H
JR NZ,KEYPRO
LD (HL),D INC HL
LD (HL),B INC HL
LD (HL),C
LD A,10010000B
LD (2001H),A XOR A
LD HL,2000H
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD BC,138BH WT: XOR A
DEC BC
CP B
JR NZ,WT RET
Chương trình KEYPRO cho Hottime, Skiptime
Mục đích : Xử lí bàn phím để thay đổi giờ, phút trên màn hình và ghi vào bộ nhớ địa chỉ trong HL
Ngõ vào : mã của phím được ấn
Ngõ ra : giờ, phút thay đổi trên màn hình và lưu vào bộ nhớ giờ, phút đã thay đổi
Các thanh ghi sử dụng : BC, HL, AF
Chương trình con sử dụng : DISPLAY
KEYPRO:
PUSH BC
LD A,B
LD (1051H),A
LD A,C
LD (1052H),A
Trang 6LD A,00H
LD (1053H),A CALL DISPLAY
LD BC,0D07H LOOP1: XOR A
DEC BC
CP B
JR NZ,LOOP1
LD A,(4000H) POP BC KEY1: CP 0FCH
JR NZ,KEY2 INC B
LD A,18H
CP B
JR NZ,KEYPRO
LD B,00H
JR KEYPRO KEY2: CP 0FAH
JR NZ,KEY3 DEC B
LD A,0FFH
CP B
JR NZ,KEYPRO
LD B,17H
JR KEYPRO KEY3: CP 0FDH
JR NZ,KEY4 INC C
LD A,03CH
CP C
JR NZ,KEYPRO
LD C,00H
JR KEYPRO KEY4: CP 0FBH
JR NZ,KEY5 DEC C
LD A,0FFH
CP C
JR NZ,KEYPRO
LD C,03BH
JR KEYPRO KEY5: CP 0F7H
JR NZ,KEYPRO
LD (HL),B INC HL
LD (HL),C
LD A,10010000B
LD (2001H),A XOR A
LD HL,2000H
LD (HL),A
Trang 7LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD (HL),A
LD BC,138BH WT: XOR A
DEC BC
CP B
JR NZ,WT RET
Chương trình DISPLAY
Mục đích : hiển thị thứ, giờ, phút, giây ra led 7 đoạn
Ngõ vào : Thứ, giờ, phút, giây
Ngõ ra : thứ, giờ, phút, giây hiện trên led 7 đoạn
Các thanh ghi sử dụng : AF, BC, DE, HL
7 đoạn của led 7 đoạn tương ứng với 7 bit của byte hiển thị như sau
DISPLAY: PUSH AF
PUSH BC PUSH DE PUSH HL
LD HL,104FH
LD C,10001110B AGAIN: LD DE,1040H
INC HL
LD A,54H
CP L
JP Z,EXITD
LD A,(HL) SCF
CCF
CP 0AH
JR C,DISP SCF
CCF
CP 14H
JR NC,NEXT1 ADD A,06H
JR DISP NEXT1: SCF
CCF
Trang 8CP 1EH
JR NC,NEXT2 ADD A,0CH
JR DISP NEXT2: SCF
CCF
CP 28H
JR NC,NEXT3 ADD A,12H
JR DISP NEXT3: SCF
CCF
CP 32H
JR NC,NEXT4 ADD A,18H
JR DISP NEXT4: SCF
CCF
CP 3CH
JR NC,DISP
ADD A,1EH
DISP: LD B,A
SRA A SRA A SRA A SRA A
LD (DE),A INC DE
LD A,B AND 00001111B
LD (DE),A DEC DE COM: LD A,(DE)
CP 00H
JR NZ,COM1
LD A,00111111B
JR DISPL COM1: CP 01H
JR NZ,COM2
LD A,00000110B
JR DISPL COM2: CP 02H
JR NZ,COM3
LD A,01011011B
JR DISPL COM3: CP 03H
JR NZ,COM4
LD A,01001111B
JR DISPL COM4: CP 04H
JR NZ,COM5
LD A,01100110B
Trang 9JR DISPL COM5: CP 05H
JR NZ,COM6
LD A,01101101B
JR DISPL COM6: CP 06H
JR NZ,COM7
LD A,01111101B
JR DISPL COM7: CP 07H
JR NZ,COM8
LD A,00000111B
JR DISPL COM8: CP 08H
JR NZ,COM9
LD A,01111111B
JR DISPL COM9: CP 09H
JR NZ,COM11
LD A,01101111B
JR DISPL COM11: LD A,00000000B
DISPL: INC C
PUSH HL
LD HL,2001H
LD (HL),C POP HL
LD (2000H),A
LD A,41H
CP E
JP Z,AGAIN
LD E,A
JR COM EXITD: POP HL
POP DE POP BC POP AF RET
Chương trình ERROR
Mục đích : gởi thông báo lỗi đến người dùng
Ngõ vào : phím OK
Ngõ ra : led hiển thị Error chớp, tắt
Các thanh ghi sử dụng : A, HL, DE, BC
ERROR: PUSH AF
PUSH BC PUSH DE
Trang 10PUSH HL WAIT: LD A,10010000B
LD (2001H),A
LD HL,2000H
LD (HL),01111001B
LD (HL),01010000B
LD (HL),01010000B
LD (HL),00111111B
LD (HL),01010000B
LD (HL),00000000B
LD (HL),00000000B
LD BC,138BH WT: XOR A
LD A,(4000H)
CP 0F7H
JR Z,EXIT XOR A DEC BC
CP B
JR NZ,WT
LD A,10010000B
LD (2001H),A
LD HL,2000H
LD (HL),00000000B
LD (HL),00000000B
LD (HL),00000000B
LD (HL),00000000B
LD (HL),00000000B
LD (HL),00000000B
LD (HL),00000000B
LD BC,138BH WT1: XOR A
DEC BC
CP B
JR NZ,WT1
JR WAIT EXIT: POP HL
POP DE POP BC POP AF RET
Bảng RESTIME
Bảng chứa các thời điểm báo hiệu thường trực
ORG 0FA0H DEFB 07H DEFB 00H DEFB 0ABH DEFB 07H