日志档案

发表于 2008-1-26 17:28:35

0

标签: 单片机  电子时钟  

一个电子钟

;这是个时钟的代码,能显示时分,秒用闪来代替,P0-3都是用来做数码管的显示的

;写了几天的代码,不是这些,这些只是代码中还能用的那些,写了几天的是那输入的程序。

;一个小小键盘居然写了几天,发现根本就没有用。是不是它耍我。

;一个小小的键盘,居然占了80%的代码

;居然写了那么多都是没用的代码

;这个时钟用定时器来计时,参数还没修正,这参数是单纯振荡1s的参数,我的晶振用的是11.0592M的,中断子程序和显示子程序的时间还没算上,每秒都有1-2ms的误差这误差不小,1天可能差半个钟了

;发现位的操作有待进一步学习

 SEC DATA 100H          ;秒
 MIN DATA 101H          ;分
 HOUR DATA 102H          ;时
 JS DATA 103H          ;定时器循环参数
 MING DATA 104H        ;分钟个位
 MINS DATA 105H  ;分针十位
 HOURG DATA 106H  ;时针个位
 HOURS DATA 107H  ;时针十位

 ORG 0000H
 AJMP MAIN
 ORG 000BH                 ;计时中断入口
 AJMP TIME

;********************************主程序,初始化************************************
 ORG 0030H
MAIN: MOV SP,60H
 MOV TMOD,#00010001B
 SETB TR0
 MOV JS,#014H
 MOV TH0,#04BH        ;计时延时参数
 MOV TL0,#06AH
 SETB ET0
 SETB EA
 MOV SEC,#0H
 MOV MIN,#0H
 MOV HOUR,#0H
 ACALL DISPLAY
 SJMP $
;********************************时间中断,判断时间********************************
TIME: MOV TH0,#04BH        ;键盘扫描延时参数
 MOV TL0,#06AH
 DJNZ JS,ING           ;等待1s开始计时
 MOV JS,#014H
 INC SEC              ;加1s,时,分,秒进位
 MOV A,SEC
 CJNE A,#60,ING1
 MOV SEC,#0H
 INC MIN
 MOV A,MIN
 CJNE A,#60,ING2
 MOV MIN,#0H
 INC HOUR
 MOV A,HOUR
 CJNE A,#24,ING
 MOV HOUR,#00H
ING1: NOP ;空指令,统一时间
 NOP
 NOP
 NOP
 NOP
 NOP
ING2: NOP ;空指令,统一时间
 NOP
 NOP
 NOP
 NOP
 NOP
 ACALL DISPLAY
ING: RETI

;***************************LED显示子程序*************************************
DISPLAY:MOV A,MIN ;显示分钟,十位个位分离显示
 MOV B,#10
 DIV AB
 MOV DPTR,#NUM
 MOVC A,@A+DPTR
 MOV P1,A
 MOV A,B
 MOVC A,@A+DPTR
 MOV P0,A
 MOV A,HOUR ;显示小时,十位个位分离显示
 MOV B,#10
 DIV AB
 MOV DPTR,#NUM
 MOVC A,@A+DPTR
 MOV P3,A
 MOV A,B
 MOVC A,@A+DPTR
 MOV P2,A
 MOV A,SEC
 JB ACC.0,ENTER
 CLR P2.7
ENTER: RET
 ORG 115H
NUM: DB 0C0H,0F9H,0A4H,0B0H,99H
 DB 92H,82H,0F8H,80H,90H
 
 END

系统分类: 单片机   |   用户分类: 无分类   |   来源: 原创   |   【推荐给朋友】

    阅读(747)    回复(3)  

投一票您将和博主都有获奖机会!

  • sunnumone

    2008-1-27 23:47:44

    JB ACC.0,ENTER

    错了吧。。。。

     

  • 实时时钟IC

    2008-1-31 11:24:29

    为了更好的给研发提供方便我们可以根据不同的需求提供时钟芯片和时钟模块的选型!
    产品为我司自主研发,详细资料和产品价绍你可以看一下我们的网站: 
    www.whwave.com.cn 
    深圳兴威帆电子技术有限公司 
    联系:0755-83125194   13421301557   赖先生  laif@whwave.com.cn

  • 蓝猫

    2008-3-14 15:58:58

    刚学单片机,不过JB ACC.0,ENTER是可以用的,我把累加器A的第一位当作一个普通可以位操作的地址用了,你看得还真仔细,这程序在我的单片机板上实现了,后来我写了个带万年历还有定时和闹钟功能的,不过我觉得时钟还是我们初学者玩的,还是不放在这里好,这篇当作我初学单片机的验证,保留