一个电子钟的程序.docx

上传人:b****3 文档编号:10565254 上传时间:2023-05-26 格式:DOCX 页数:29 大小:21.53KB
下载 相关 举报
一个电子钟的程序.docx_第1页
第1页 / 共29页
一个电子钟的程序.docx_第2页
第2页 / 共29页
一个电子钟的程序.docx_第3页
第3页 / 共29页
一个电子钟的程序.docx_第4页
第4页 / 共29页
一个电子钟的程序.docx_第5页
第5页 / 共29页
一个电子钟的程序.docx_第6页
第6页 / 共29页
一个电子钟的程序.docx_第7页
第7页 / 共29页
一个电子钟的程序.docx_第8页
第8页 / 共29页
一个电子钟的程序.docx_第9页
第9页 / 共29页
一个电子钟的程序.docx_第10页
第10页 / 共29页
一个电子钟的程序.docx_第11页
第11页 / 共29页
一个电子钟的程序.docx_第12页
第12页 / 共29页
一个电子钟的程序.docx_第13页
第13页 / 共29页
一个电子钟的程序.docx_第14页
第14页 / 共29页
一个电子钟的程序.docx_第15页
第15页 / 共29页
一个电子钟的程序.docx_第16页
第16页 / 共29页
一个电子钟的程序.docx_第17页
第17页 / 共29页
一个电子钟的程序.docx_第18页
第18页 / 共29页
一个电子钟的程序.docx_第19页
第19页 / 共29页
一个电子钟的程序.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

一个电子钟的程序.docx

《一个电子钟的程序.docx》由会员分享,可在线阅读,更多相关《一个电子钟的程序.docx(29页珍藏版)》请在冰点文库上搜索。

一个电子钟的程序.docx

一个电子钟的程序

一个电子钟的程序

文章长度[35276] 更新时间[] 文章分级[80] [评论] [收藏]

;r2=0是常规模式,1是校时模式,2是定时设置模式,3是误差校正模式

;r5表示当前操作数,校时时12345678分别表示时分秒年月日星期12345和67,

;r5表示当前操作数,定时时时表示路数,分表示时,秒表示分,8路只有一路亮,年表示自动关断是分还是秒,月日表示自动关断时间

;r3表示当前扫描led的路数

;60h-66h保存当前时间,30-3b保存6个数码管的显示值,40h-4fh保存8路倒计时时间,位10h-1fh表示自动关和倒计时单位。

;p0.0-0.6显示星期几。

3cH-3dH分别保存上一次的分和秒,检查到分和秒不同时,对倒计时数进行减时,位3ch-3dh表示减过

;定时记录格式顺序@00h-@01H保存定时时间,@02H保存有效的星期和延时的单位,@03H-@04H保存延时的时间,@04保存第几路

;3FH保存误差误正的秒数0-25秒,每天最大修正为正负25秒,位3FH表示加强和减慢时间,3eH表示校正过。

;3eH保存当前定时的路数,2a/2b/2c/2d/2e保存定时时间/延时单位(2cH的位7)/星期/延时时间;

 sclkbitp2.0

 io  bitp2.1

 rst bitp3.7

 psw5bit0d5H

 

 secdata60H

 mindata61H

 Hrdata62H

 datedata63H

 montHdata64H

 daYdata65H

 Yeardata66H

 org00h

 clrrst

 

 

 

 

 

 

 jmpsta1

 

 org01bh

 jmpt1int

sta1:

 movtmod,#00100010b;t1工作方式

  mov7ch,#10

  movth1,#100

  setbtr1

  setbet1

  setbea

  setb54h

  mov40h,#2;年初置数

  mov41h,#0;年初置数

  movr5,#0;校时当前数

  mov3fh,#22;误差校正时间

  mov7ch,#10

    ;lcallinit

  mov3eh,#0

mov2ah,#00010001b

mov2bh,#00110100b

mov2ch,#11010101b

mov2dh,#01010110b

mov2eh,#01111000b

mov8eh,#0  ;允许使用内部扩展的ram

callreadfsh

movr0,#255

movxa,@r0

mov3fh,a       ;误差校正数据

movr0,#254

movxa,@r0

mov27h,a       ;保存了误差校正数据

movr0,#253   ;保存初始化数据;新机必须初始化数据

movxa,@r0

cjnea,#51,clrs      

jmpstart

clrs:

callclearam

start:

jb00h,$

     setb00h

     cjner2,#0,main0;54h确定是正常走时,还是校时,校时时时间不要走动

     movr0,#sec

     movr7,#7

     setbpsw5

  movp2,#0ffh

     lcallrwrtc

  mova,60h

  cjnea,3ch,secbt

  jmpsecbt0      ;秒和上次的秒是相同的,跳到检查分

secbt:

mov3ch,60h

  clr3ch         ;新的一秒到来了,通知倒计时减秒

secbt0:

mova,61h

  cjnea,3dh,minbt

  jmpminbt0      ;分和上次的分是相同的,跳到正常主程序

minbt:

mov3dh,61h

  clr3dh         ;新的一分钟到来了,通知倒计时减分

minbt0:

mova,62h      ;检查当前小时3点时准备误差校正,4点00分30秒时实施误差校正工作,这时秒会有大幅的跳动

  cjnea,#3,wcjz

     clr3eh         ;准许误差校正

wcjz:

 cjnea,#4,main0

     jb3eh,main0    ;误差已经校正过就跳过

  mova,61h

  cjnea,#0,main0

  mova,60h

  cjnea,#00110000b,main0;为什么选在30秒校正误差?

因为30正负25后都是一个合法的秒数,并且不产生进位和借位,程序比较好写

  setb3eh        ;误差已经校正过,以防一天校正多次(输入负数后会再次进入30秒进入死循环)

  jnb3fh,wcjz1    ;看误差校正是加秒还是减秒

     mova,#30

  subba,3fh

     daa

  jmpwcjz2

wcjz1:

mova,#30

  adda,3fh

  daa

wcjz2:

inca

deca

daa 

     mov60h,a

  mov5eh,#10001110b;解锁,保证字节可以写入

  mov5fh,#00000000b

  callsave  

  mov5eh,#10000000b

  mov5fh,60h

  callsave

  mov5eh,#10001110b;写锁,防止字节补修改

  mov5fh,#10000000b

  callsave

main0:

calldisp1

  calljs

  callhled

  djnz67h,mhled

  mov67h,#50

  callkey      ;主循环50次后才执行一次键盘扫描程序,起到键盘消抖动效果

mhled:

callhleda

mend:

jmp start

 

t1int:

pushacc

      pushpsw

      movtl1,#018h

      movth1,#0fch

soud:

;jb59h,send;59h是禁止发声标志;5a、5b是声音响的时间长短

     mova,5ah

     cjnea,#0,yyyy

     setbp0.7

     jmpsend

yyyy:

cplp0.7

     djnz5bh,send

     mov5bh,#126

     dec5ah

send:

     djnz7eh,t1end

     mov7eh,#20

     cpl00h

tend1:

djnz7fh,t1end

     mov7fh,#100

  cpl01h

     jb01h,t1end

     cpl02h

t1end:

poppsw

     popacc

     reti

key:

movr7,#0  ;按键值先清零

orlp3,#01111111b

anlp3,#11111000b

mova,p3

orlp3,#01111111b

anlp3,#10000111b

orla,p3

orla,#10000000b

ky0:

cjnea,#11110101b,ky1

movr7,#1

ky1:

cjnea,#11101101b,ky2

movr7,#2

ky2:

cjnea,#11011101b,ky3

movr7,#3

ky3:

cjnea,#10111101b,ky4

movr7,#4

ky4:

cjnea,#11110110b,ky5

movr7,#5

ky5:

cjnea,#11101110b,ky6

movr7,#6

ky6:

cjnea,#11011110b,ky7

movr7,#7

ky7:

cjnea,#10111110b,ky8

movr7,#8

     djnz29h,ky8

     mov29h,#1

;     cjner5,#1,ky8

     cjner2,#2,ky8

     mov5ah,#4

     pushacc

     mov52h,r7 

     callsaveds

     dec3eh

     movr6,3eh

     cjner6,#0,dssz1a0

     mov3eh,#42

     dssz1a0:

     callreadds

     movr7,52h

     popacc

   ;clr04h

ky8:

cjne a,#11110011b,ky9

   movr7,#9

   djnz29h,ky9

   mov29h,#1

   mov5ah,#4

   clr03h          ;让闪动的数加1

   clr04h

ky9:

cjne a,#11101011b,ky10

movr7,#10

ky10:

cjnea,#11011011b,ky11

movr7,#11

ky11:

cjnea,#10111011b,ky12

movr7,#12

ky12:

cjner7,#0,kk9;有没有键按下,无键按下退出

jmprun

kk9:

mov55h,r7;存下按键值

    clr04h;表示run可以执行

rend:

ret

run:

jb04h,rend

    movr7,55h

run0:

cjner7,#1,run1

    cpl78h

    mov5ah,#4

    setb04h

run1:

cjner7,#2,run2

    cpl79h

    mov5ah,#4

    setb04h

run2:

cjner7,#3,run3

    cpl7ah

    mov5ah,#4

    setb04h

run3:

cjner7,#4,run4

    cpl7bh

    mov5ah,#4

    setb04h

run4:

cjner7,#5,run5

    cpl7ch

    mov5ah,#4

    setb04h

run5:

cjner7,#6,run6

    cpl7dh

    mov5ah,#4

    setb04h

run6:

cjner7,#7,run7

    cpl7eh

    mov5ah,#4

    setb04h

run7:

cjner7,#8,run8

    cpl7fh

    mov5ah,#4

    setb04h

  

run8:

cjner7,#9,run9

    mov5ah,#4

    setb04h

    clr03h          ;让闪动的数加1

run9:

cjner7,#10,run10

    mov5ah,#4

    setb04h

  decr5

    cjner5,#0,run10

    movr5,5dh

  decr5

run10:

cjner7,#11,run11

    mov5ah,#4

    setb04h

  incr5

  mova,r5

    cjnea,5dh,run11

    movr5,#1

run11:

cjner7,#12,rrend

    incr2

    cjner2,#4,ms1

    movr2,#0

ms1:

cjner2,#0,ms2;常规走时模式

  mov5eh,#10001110b;写锁,防止字节补修改

  mov5fh,#10000000b

  callsave

  movr5,#0

  callsavefsh  ;保存全部到FlasH

  callreadfsh  ;保存全部到FlasH

ms2:

cjner2,#1,ms3;时间设置模式

    mov5eh,#10001110b;解锁,保证字节可以写入

    mov5fh,#00000000b

    callsave

    movr5,#4

  mov5dh,#8

ms3:

cjner2,#2,ms4;定时设置模式

    movr5,#1

  mov5dh,#10

  mov3eh,#1

    callreadds

ms4:

cjner2,#3,ms5;误差校正模式

    movr5,#1

  mov5dh,#3

ms5:

mov5ah,#4

    setb04h

rrend:

   mov29h,#5;长按键时间

ret

 

 

 

 

js:

  mova,60h

     anla,#00001111b

     mov30h,a

     mova,60h

     swapa

     anla,#00001111b

     mov31h,a

     mova,61h

     anla,#00001111b

     mov32h,a

     mova,61h

     swapa

     anla,#00001111b

     mov33h,a

     mova,62h

     anla,#00001111b

     mov34h,a

     mova,62h

     swapa

     anla,#00001111b

     mov35h,a

     mova,63h

     anla,#00001111b

     mov36h,a

     mova,63h

     swapa

     anla,#00001111b

     mov37h,a

     mova,64h

     anla,#00001111b

     mov38h,a

     mova,64h

     swapa

     anla,#00001111b

     mov39h,a

     mova,66h

     anla,#00001111b

     mov3ah,a

     mova,66h

     swapa

     anla,#00001111b

     mov3bh,a

  orlp0,#01111111b

  mova,65h

xq0:

 cjnea,#1,xq1

  clrp0.6

xq1:

 cjnea,#2,xq2

  clrp0.5

xq2:

 cjnea,#3,xq3

  clrp0.4

xq3:

 cjnea,#4,xq4

  clrp0.3

xq4:

 cjnea,#5,xq5

  clrp0.2

xq5:

 cjnea,#6,xq6

  clrp0.1

xq6:

 cjnea,#7,js1

  clrp0.0

js1:

cjner2,#2,js2    ;下面显示定时设置模式的显示数据,3eH是当前路数

     mova,3eh

  movb,#10

  divab

     mov34h,b

     mov35h,a

     mova,2ah

     anla,#00001111b

     mov32h,a

     mova,2ah

     swapa

     anla,#00001111b

     mov33h,a

     mova,2bh

     anla,#00001111b

     mov30h,a

     mova,2bh

     swapa

     anla,#00001111b

     mov31h,a

     mov3ah,#18;

     mov3bh,#18;

     mova,2dh

     anla,#00001111b

     mov38h,a

     mova,2dh

     swapa

     anla,#00001111b

     mov39h,a

     mova,2eh

     anla,#00001111b

     mov36h,a

     mova,2eh

     swapa

     anla,#00001111b

     mov37h,a

anlp0,#10000000b

mova,2ch

anla,#01111111b

orlp0,a

movp1,2fh

mov2ch,a

rlca

mov10h,c

mov11h,c

mov12h,c

mov13h,c

mov14h,c

mov15h,c

mov16h,c

mov17h,c

xq27:

xq28:

 

js2:

 cjner2,#3,js3 ;下面显示误差校正模式的显示数据,位3fH是加或者减,3fH是误差修正值,在0-28之间

  jb3fh,js30    

  mov30h,#19

  mov31h,#19

  mov32h,#19

  mov33h,#19

  mov34h,#19

  mov35h,#19

  jmpjs31

js30:

mov30h,#18

  mov31h,#18

  mov32h,#18

  mov33h,#18

  mov34h,#18

  mov35h,#18

js31:

mova,3fh

  movb,#10

  divab

  mov36h,b

  mov38h,b

  mov3ah,b

  mov37h,a

  mov39h,a

  mov3bh,a

js3:

 ret

 

hled:

jb01h,hd     ;根据01的状态让数码管闪动

  ret

hd:

cjner2,#1,hd8   ;校时模式的数码管闪动状态

hd0:

 cjner5,#1,hd1

mov35h,#17

mov34h,#17

hd1:

 cjner5,#2,hd2

mov33h,#17

mov32h,#17

hd2:

 cjner5,#3,hd3

mov31h,#17

mov30h,#17

hd3:

 cjner5,#4,hd4

mov3bh,#17

mov3ah,#17

hd4:

 cjner5,#5,hd5

mov39h,#17

mov38h,#17

hd5:

 cjner5,#6,hd6

mov37h,#17

mov36h,#17

hd6:

 cjner5,#7,hd7

movp0,#11111111b

hd7:

 

hd8:

cjner2,#2,hd18    ;定时模式的数码管闪动

hd10:

 cjner5,#1,hd11

mov35h,#17

mov34h,#17

hd11:

 cjner5,#2,hd12

mov33h,#17

mov32h,#17

hd12:

 cjner5,#3,hd13

mov31h,#17

mov30h,#17

hd13:

 cjner5,#4,hd14

mov3bh,#17

mov3ah,#17

hd14:

 cjner5,#5,hd15

mov39h,#17

mov38h,#17

hd15:

 cjner5,#6,hd16

mov37h,#17

mov36h,#17

hd16:

 movr6,#100

cjner5,#7,hd17

cplp0.6

cplp0.5

cplp0.4

djnzr6,$

cplp0.6

cplp0.5

cplp0.4

 

hd17:

 cjner5,#8,hd17a

cplp0.2

cplp0.3

djnzr6,$

cplp0.2

cplp0.3

hd17a:

 cjner5,#9,hd17b

cplp0.1

cplp0.0

djnzr6,$

cplp0.1

cplp0.0

hd17b:

 cjner5,#10,hd18

hd18:

cjner2,#3,hd28   ;误差校正模式的闪动情况

hd20:

 cjner5,#1,hd21

mov35h,#17

mov34h,#17

mov33h,#17

mov32h,#17

mov31h,#17

mov30h,#17

hd21:

 cjner5,#2,hd22

mov3bh,#17

mov3ah,#17

mov39h,#17

mov38h,#17

mov37h,#17

mov36h,#17

hd22:

hd23:

hd28:

ret

 

 

 

 

hleda:

jb03h,hdend;根据加1键和当前状态来确定对那个数计数和保存

      setb03h

      jmpsav0

hdend:

ret

sav0:

cjner2,#1,sav1a;执行校时模式的修改和保存

jmphd0a

sav1a:

jmpsav1

hd0a:

 cjner5,#3,hd1a

      inc60h

      mova,60h

      daa

      mov60h,a

      cjnea,#01100000b,hd1aa

      mov60h,#0

hd1aa:

mov5eh,#10000000b

      mov5fh,60h

      callsave

hd1a:

 cjner5,#2,hd2a

      inc61h

      mova,61h

      daa

      mov61h,a

      cjnea,#01100000b,hd2aa

      mov61h,#0

hd2aa:

mov5eh,#10000010b

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2