51单片机制作一个秒表

要求按一下开始,再按一下暂停,双击清零,求各位大神帮助啊,我实在不会了... 要求按一下开始,再按一下暂停,双击清零,求各位大神帮助啊,我实在不会了 展开
 我来答
i知识传播者
推荐于2016-01-09 · 超过33用户采纳过TA的回答
知道答主
回答量:54
采纳率:0%
帮助的人:27.4万
展开全部

//功能:0~99秒的简易秒表设计,两个静态数码管,定时器采用中断方式
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int

uchar count=0;  //对50ms定时时间进行计数
uchar miao=0;     //秒计数器

//函数名:timer_1()
//函数功能:定时器T1的中断函数,T1在工作方式1下每50秒产生中断,执行该中断函数
//形式参数:无
//返回值:无
void timer_1() interrupt 3   //T1的中断类型号为3
{
 TH1=(65536-50000)/256;   //重新设置T1计数初值高8位
 TL1=(65536-50000)%256;   //重新设置T1计数初值低8位
 count++;      //50ms计数器加1
 if(count==20)     //1s时间到
 {
  count=0;     //50ms计数器清0
  miao++;         //秒计数器加1
  if(miao==100)miao=0;  //miao计数到100,则从0开始计数
 }
}

bit b=0;
void int_0() interrupt 0
{
 if(b == 0){TR1 = 0;b = 1;}
 else
 {
  b = 0;
  TR1 = 1;
 }
}

void int_1() interrupt 2
{
 miao=0;
 count = 0;
 TH1=(65536-50000)/256; 
 TL1=(65536-50000)%256;
 TR1=1;
}

//函数名:disp
//函数功能:将i的值显示在两个静态连接的数码管上
//形式参数:i,取值范围0~99
//返回值:无
void disp(uchar i)
{
 uchar led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
 //定义0~9显示码,共阳极数码管
 P1=led[i/10];   //显示i高位
 P2=led[i%10];   //显示i地位
}
void main()
{
 TMOD=0x10;    //设置T1在工作方式1 
 TH1=(65536-50000)/256; //设置T1计数初值高8位,定时时间50ms 
 TL1=(65536-50000)%256; //设置T1计数初值低8位
 ET1=1;     //开放T1中断允许
 EX0 = 1;
 IT0 = 1;
 EX1 = 1;
 IT1=1;
 EA=1;     //开放总中断允许
 TR1=1;     //启动T1开始计时
 while(1)
 {
  disp(miao);   //显示秒计数器值
 }
}

追问
哥哥你这个是双按键,我想知道用一个按键怎么实现这些,非常感谢哦
妈咪的心事
高粉答主

2020-12-25 · 繁杂信息太多,你要学会辨别
知道答主
回答量:8.4万
采纳率:21%
帮助的人:4131万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式