电子开发网

电子开发网电子设计 | 电子开发网Rss 2.0 会员中心 会员注册
搜索: 您现在的位置: 电子开发网 >> 电子开发 >> 单片机 >> 正文

单片机制作的12864数字钟

作者:佚名    文章来源:本站原创    点击数:    更新时间:2008-12-4
           ;"日"
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(自定义RAM区)地址范围40h~7Fh。
;DDRAM(显示RAM区)地址范围:
;80h~87h为第1行。
;88h~8fh为第3行。
;90h~97h为第2行。
;98h~9fh为第4行。
;A0h~AFh,B0h~BFh这2个仅在卷动功能下有效。

;汉字显示坐标
;_____________________________________________
;                   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  
;_____________________________________________

;汉字库:用宋体16.dot纵向取模下高位,数据排列:从左到右从上到下

上一页  [1] [2] [3] [4] [5] [6] 

Tags:单片机数字钟,单片机,数字钟制作  
责任编辑:admin
请文明参与讨论,禁止漫骂攻击,不要恶意评论、违禁词语。 昵称:
1分 2分 3分 4分 5分

还可以输入 200 个字
[ 查看全部 ] 网友评论
关于我们 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 在线帮助 - 文章列表
返回顶部
刷新页面
下到页底
晶体管查询