找回密码
 立即注册

QQ登录

只需一步,快速开始

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

计时器

[复制链接]
跳转到指定楼层
楼主
ID:16006 发表于 2010-5-15 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想设计一个计时器,计时器即使过程中若按一个键则计时停止,再按一个键则计时又重新开始。有高手帮忙吗?我设计的程序,怎么计时停止后在按键也不动了,所以请高手帮忙!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:16006 发表于 2010-5-15 14:28 | 只看该作者

LEDBUF EQU 30H ;显示码缓存区
HOUR   EQU 40H
MINUTE EQU 41H
SECOND EQU 42H
C100US EQU 43H
TICK   EQU 10000 ;置中断次数
T100US EQU 256-100 ;置定时器初值
LJMP START  ;跳转到主程序

ORG 0003H
LJMP DISPLYLED
RETI

ORG 000BH  ;定时器0中断入口
TOINT: PUSH PSW  ;状态保护
      PUSH ACC
      MOV A,C100US+1 
      JNZ GOOD  ;计数值是否为0
      DEC C100US
GOOD: DEC C100US+1
   MOV A,C100US
   ORL A,C100US+1
   JNZ EXIT
   MOV C100US,#HIGH(TICK) ;重置计数值
   MOV C100US+1,#LOW(TICK)
   INC SECOND       ;秒加一
   MOV A,SECOND    
   CJNE A,#60,EXIT    ;判断秒针是否为60
   MOV SECOND,#0
   INC MINUTE
   MOV A,MINUTE
   CJNE A,#60,EXIT
   MOV MINUTE,#0
   INC HOUR
   MOV A,HOUR
   CJNE A,#24,EXIT
   MOV HOUR,#0
EXIT: POP ACC
   POP PSW
   RETI

DELAY:        ;  延时子程序
   MOV R7,#0FEH
DELAYLOOP:
   DJNZ R7,DELAYLOOP
   DJNZ R6,DELAYLOOP   ;  R6是否有错,是否应改为R7?
   RET


LEDMAP:      ;数码管显示码
  DB 3FH,06H,5BH,4FH
  DB 66H,6DH,7DH,07H
  DB 7FH,6FH,77H,7CH
  DB 39H,5EH,79H,71H

这是我写的程序,怎么实现计时停止?高手赐教!
回复

使用道具 举报

板凳
ID:23035 发表于 2010-5-15 21:26 | 只看该作者
用C语言比较好做
回复

使用道具 举报

地板
ID:24818 发表于 2010-6-30 22:40 | 只看该作者
应该是在停止的时候把数据存储起来,标志位设一个值(停止值,由设计者自己规定)。再按一次,则修改标志位,把之前存储的数据取出作为初始值。思路是这样的,具体如何实现,还要请教各位高手啦
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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