db 22h,0FFh, 02h, 00h, 00h, 00h, 00h, 07h
db 02h, 02h, 02h, 02h, 02h, 07h, 00h, 00h
;***************************************************T0定時子程序<不占區>
org 1000h
ttxx:mov th0,#03ch ;以下是T0刷新子程序
mov tl0,#0b0h
push dph
push dpl
push acc
push psw
inc 28h
mov a,28h
cjne a,#05h,tt22 ;刷新5次
mov 28h,#00h
inc 29h ;延時500mS兩次
mov a,29h
cjne a,#02h,tt22
mov 29h,#00h
inc 2ah ;刷新秒個位
mov a,2ah ;刷新秒十位
cjne a,#0ah,tt22
mov 2ah,#00h
inc 2bh ;刷新秒十位
mov a,2bh
cjne a,#06h,tt22
mov 2bh,#00h
inc 2ch ;刷新分個位
mov a,2ch
cjne a,#0ah,tt22
mov 2ch,#00h
inc 2dh ;刷新分十位
mov a,2dh
cjne a,#06h,tt22
mov 2dh,#00h
inc 2eh ;刷新時個位
mov a,2eh
cjne a,#0ah,tt11
mov 2eh,#00h
inc 2fh ;刷新時十位
tt22:pop psw
pop acc
pop dpl
pop dph
reti
tt11:mov a,2eh
cjne a,#04h,tt22
mov a,2fh
cjne a,#02h,tt22
mov 2eh,#00h ;到24點,時兩位全清零
mov 2fh,#00h
inc 25h
mov a,25h ;刷新周數據
cjne a,#08h,tt33
mov 25h,#01h
tt33:inc 26h ;刷新日數據
mov a,26h
cjne a,#32,tt44
mov 26h,#01h
inc 27h
mov a,27h ;刷新月數據
cjne a,#13,tt55
mov 27h,#1
sjmp tt22
tt55:mov a,27h
anl a,#0fh
cjne a,#0ah,tt22
mov 27h,#10h
sjmp tt22
tt44:mov a,26h
anl a,#0fh
cjne a,#0ah,tt22
mov a,26h
swap a
inc a
anl a,#0fh
swap a
mov 26h,a
sjmp tt22
;***************************************************T1讀紅外代碼子程序<占用區2 >
org 1100h
tt1:push dph ;保護現場
push dpl
push acc
push psw
jb 01h,t3
jb 02h,t3
jb 00h,t2 ;如果收到遙控引導碼則進入接收識別模式
mov th1,#00h ;清T1,為接收做準備
mov tl1,#00h
setb 00h ;設接收遙控波頭準備好標誌位
setb tr1 ;開T1中斷
sjmp t3
t2:setb psw.4 ;進入區2
clr psw.3
mov @r0,th1
mov th1,#00h ;清T1,準備讀下一位
mov tl1,#00h
inc r0
djnz r1,t3 ;全部信號接收完閉否?
mov 10h,#50h
mov 11h,#2fh
setb 01h ;設讀取完成與允許轉換標誌位
clr tr1 ;關T1中斷
clr ex1 ;關外部中斷1
clr 00h ;恢複接收標致位
t3:pop psw
pop acc
pop dpl
pop dph
reti
;***************************************************zh轉換子程序<占用區1>
org 11A0h
zh: push dph ;將識別後的遙控信號轉換成16位動作代碼
push dpl
push acc
push psw
setb psw.3 ;進入區i
clr psw.4
mov r0,#2fh
mov r1,#07h ;8位一小組
jb 00h,h01
jb 02h,h01
jb 01h,h0
h00:setb ex1
mov 20h,#00h
mov 21h,#00h
h01:mov 08h,#2fh
mov 09h,#07h
pop psw
pop acc
pop dph
pop dpl
ret
h0: inc r0 ;取第一組第一位
cjne r0,#71h,h1 ;是否幹擾?
sjmp h00 ;是則返回
h1: jc h2
sjmp h00
h2: cjne @r0,#03h,h0 ;開始轉換第一組第一位
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#01h,h0
inc r0
cjne @r0,#03h,h0
inc r0
cjne @r0,#01h,h0
cjne r0,#79h,h3 ;地址碼正確否?
sjmp h00
h3: jc h4
sjmp h00
h4: inc r0 ;開始轉換指令碼
mov a,@r0
jb acc.1,h5
clr 08h
sjmp h6
h5: setb 08h
h6: mov a,21h
rl a
mov 21h,a
djnz r1,h4 ;8位指令碼轉換完否?
setb 02h ;設置允許執行動作標誌位
clr 01h ;清除允許轉換標誌位
ljmp h01
;***************************************************dz動作子程序<不占區>
org 12A0h
dz: push dph ;執行相應的動作
push dpl
push acc
push psw
jb 00h,d01
jb 01h,d01
jnb 02h,d01 ;允許動作否?
mov a,21h
cjne a,#0cch,dz2 ;是分增加否?
inc 2ch
mov a,2ch
cjne a,#0ah,d00
mov 2ch,#00h
inc 2dh
mov a,2dh
cjne a,#06h,d00
mov 2dh,#00h
sjmp d00
dz2:mov a,21h ;是分減少否?
cjne a,#0dch,dz3
mov a,2ch ;分減1
cjne a,#00h,dz21
mov 2ch,#09h
mov a,2dh
cjne a,#00h,dz22
mov 2dh,#05h
sjmp d00
dz21:dec 2ch
sjmp d00
dz22:dec 2dh
d00:setb ex1 ;全部動作完成後重新打開外部中斷1
mov 20h,#00h ;清除全部標誌位
mov 21h,#00h ;清除已完成的動作代碼
setb 20h.7
d01:pop psw
pop acc
pop dpl
pop dph
ret
dz3:mov a,21h ;是時增加否?
cjne a,#0c4h,dz5
inc 2eh
mov a,2eh
cjne a,#0ah,dz4
mov 2eh,#00h
inc 2fh
sjmp d00
dz4:mov a,2eh
cjne a,#04h,d00
mov a,2fh
cjne a,#02h,d00
mov 2eh,#00h
mov 2fh,#00h
sjmp d00
dz5:mov a,21h
cjne a,#0d4h,dz6 ;是時減少否?
mov a,2eh
cjne a,#00h,dz50
mov 2eh,#9
mov a,2fh
cjne a,#00h,dz51
mov 2fh,#02h ;判別小時2位均為0則強製2fh=#02h,2eh=#03h
mov 2eh,#03h
sjmp d00
dz50:dec 2eh
sjmp d00
dz51:dec 2fh
sjmp d00
dz6:mov a,21h ;刷新周數據
cjne a,#044h,dz7
inc 25h
mov a,25h
cjne a,#08h,dz777
mov 25h,#01h
sjmp dz777
dz7:mov a,21h ;刷新月數據
cjne a,#054h,dz8
inc 27h
mov a,27h
cjne a,#13h,dz71
mov 27h,#1
sjmp dz777
dz71:mov a,27h
anl a,#0fh
cjne a,#0ah,dz777
mov a,27h
anl a,#0f0h
swap a
inc a
swap a
mov 27h,a
dz777:ljmp d00
dz8:mov a,21h ;是日期增加否?
cjne a,#50h,dz9
inc 26h
mov a,26h
cjne a,#32h,dz81
mov 26h ,#01h
sjmp dz777
dz81:mov a,26h
anl a,#0fh
cjne a,#0ah,dz777
mov a,26h
swap a
inc a
anl a,#0fh
swap a
mov 26h,a
sjmp dz777
dz9:mov a,21h ;是日期減小否?
cjne a,#48h,dz777
mov a,26h
cjne a,#01h,dz91
mov 26h,#31h
sjmp dz777
dz91:mov a,26h
cjne a,#31h,dz92
dec 26h
sjmp dz777
dz92:mov a,26h
cjne a,#30h,dz93
mov 26h,#29h
sjmp dz777
dz93:mov a,26h
cjne a,#20h,dz94
mov 26h,#19h
sjmp dz777
dz94:mov a,26h
cjne a,#10h,dz95
mov 26h,#09h
sjmp dz777
dz95:dec 26h
sjmp dz777
;***************************************************
END
;lxa12864LCD說明如下:
;CGRAM(自定義(yi) RAM區)地址範圍40h~7Fh。
;DDRAM(顯示RAM區)地址範圍:
;80h~87h為(wei) 第1行。
;88h~8fh為(wei) 第3行。
;90h~97h為(wei) 第2行。
;98h~9fh為(wei) 第4行。
;A0h~AFh,B0h~BFh這2個(ge) 僅(jin) 在卷動功能下有效。
;漢字顯示坐標
;_____________________________________________
; x坐標
; LINE1 80H 81H 82H 83H 84H 85H 86H 87H
; LINE2 90H 92H 93H 94H 94H 95H 96H 97H
; LINE3 88H 89H 8AH 8BH 8CH 8DH 8EH 8FH
; LINE4 98H 99H 9AH 9BH 9CH 9DH 9EH 9FH
;_____________________________________________
;漢字庫:用宋體(ti) 16.dot縱向取模下高位,數據排列:從(cong) 左到右從(cong) 上到下