找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 8100|回复: 1
打印 上一主题 下一主题
收起左侧

电子时钟

[复制链接]
跳转到指定楼层
楼主
ID:3348 发表于 2008-10-18 12:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

做了个电子时钟,不知为何中断程序不能计时,只显示开机时间。请各位高手赐教。。。

程序代码如下:
 

DISSEC EQU 20H      ;定义秒显示单元

          DISMIN EQU 21H       ;定义分钟显示单元

          DISHOR EQU 22H       ;定义小时显示单元

          CLKSEC EQU 23H       ;定义秒走时单元

          CLKMIN EQU 24H        ;定义分钟走时单元

          CLKHOR EQU 25H         ;定义小时走时单元

          SECSIG EQU 29H       ;定义一秒钟到标志位

          ORG 000H

          LJMP START

          ORG 000BH

          LJMP INT_B

          ORG 0030H

   START: MOV SP ,#70H    ;堆栈指针赋初值

          MOV SECSIG,#2          ;2*500ms=1s

          MOV TMOD,#01H           ;使用定时器1定时500ms

          MOV TH0,#3CH            ;对定时器赋初值

          MOV TL0,#0B0H

          SETB EA                  ;开总中断

          SETB ET0                 ;开定时器0中断

          SETB TR0                 ;启动定时器0

          CLR A                    ;将开机时钟显示设置为12:00:00

          MOV CLKSEC,A

          MOV CLKMIN,A

          MOV CLKHOR,#12

DISPLY:                  ;显示程序

          MOV DISSEC,CLKSEC        ;将走时单元数据传送到显示单元

          MOV DISMIN,CLKMIN

          MOV DISHOR,CLKHOR

          MOV A,DISSEC              ;转换显示程序

          MOV B,#10

          DIV AB

          MOV 42H,B    ;秒位转换

          MOV 43H,A

          MOV A,DISMIN

          MOV B,#10

          DIV AB

          MOV 44H,B    ;分钟转换

          MOV 45H,A

          MOV A,DISHOR

          MOV B,#10

          DIV AB

          MOV 46H,B      ;小时转换

          MOV 47H,A

          MOV DPTR,#TABLE

          MOV A,42H        ;秒位显示

          MOV P2,#0FEH      ;将位选码送P2

          MOVC A,@A+DPTR

          MOV P0,A

          LCALL DELAY2ms

          MOV A,43H

          MOVC A,@A+DPTR

          MOV P2,#0FDH     ;将位选码送P2

          MOV P0,A

          LCALL DELAY2ms

          MOV A,44H         ;分钟显示

          MOVC A,@A+DPTR

          MOV P2,#0FBH     ;将位选码送P2

          MOV P0,A

          LCALL DELAY2ms

          MOV A,45H

          MOVC A,@A+DPTR

          MOV P2,#0F7H      ;将位选码送P2

          MOV P0,A

          LCALL DELAY2ms

          MOV A,46H         ;小时显示

          MOVC A,@A+DPTR

          MOV P2,#0EFH     ;将位选码送P2

          MOV P0,A

          LCALL DELAY2ms

          MOV A,47H

          MOVC A,@A+DPTR

          MOV P2,#0DFH      ;将位选码送P2

          MOV P0,A

          LCALL DELAY2ms

          LJMP DISPLY

 

    INT_B:PUSH  PSW          ;中断程序

          PUSH  ACC          ;入栈保护现场

          MOV TH0,#3CH          ;对计数器重新赋值

          MOV TL0,#0B0H               

          DJNZ SECSIG,TT    ;判断 1秒时间到否,不到转向TT

          MOV SECSIG,#2     ;一秒到时对标志位重新赋值

          MOV A,CLKSEC      ;对秒数据进行加一处理

          ADD A,#1

          CJNE A,#60,TT

          MOV A,#0

          MOV CLKSEC,A

          MOV A,CLKMIN      ;对分钟数据进行加一处理

          ADD A,#1

          CJNE A,#60,TT

          MOV A,#0

          MOV CLKMIN,A

          MOV A,CLKHOR      ;对小时数据进行加以处理

          ADD A,#1

          CJNE A,#24,TT

          MOV A,#0

          MOV CLKHOR,A

       TT:POP ACC           ;TT为恢复现场中断返回

          POP PSW

          RETI

 DELAY2ms:MOV 40H,#4   ;2MS延时程序

          D1:MOV 41H,#248

          DJNZ 41H,$

          DJNZ 40H,D1

          RET

   TABLE: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH    ;显示数码表0~9

 

          END

 

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:5913 发表于 2008-10-21 21:32 | 只看该作者

似乎没得这么麻烦吧兄弟
单片机教程里有个简单的编法

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表