| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3199 人关注过本帖
标题:新手刚学单片机,求大神帮下 怎么在只有开始 暂停 复位的基础上 让秒表实现 ...
取消只看楼主 加入收藏
某年丿某月
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2017-3-1
结帖率:0
收藏
已结贴  问题点数:5 回复次数:0 
新手刚学单片机,求大神帮下 怎么在只有开始 暂停 复位的基础上 让秒表实现多(3)次计数并可以查询的 如体育秒表
#include <REGX51.H>
#define uchar unsigned char
sbit P20=P2^1;      
sbit P21=P2^0;
sbit KS=P2^5;      //启动按键
sbit KP=P2^6;      //暂停按键
sbit KC=P2^7;      //复位按键
int ge,shi;
uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,
                  0x6d,0x7d,0x07,0x7f,0x6f};   
void delay_ms(unsigned int ms)        //延时
{
 uchar a;
 while(ms--)
 for(a=123;a>0;a--);
}

void display()        //显示
{
  P20=0;
  P0=tab[ge];
  delay_ms(1);
  P20=1;
  P21=0;
  P0=tab[shi];
  delay_ms(1);
  P21=1;
}

void T0_ISR() interrupt 1     //定时器T0中断
{
  uchar time;                 
  TH0=(65536-50000)/256;     //定时初值
  TL0=(65536-50000)%256;
  time++;
  if(time==20)                 //0.05s*20=1s
  {
    time=0;
    ge++;
  }
}

void main()                   //主函数
{  
  TMOD=0x01;               //定时器T0方式1
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  EA=1;                      //总开关
  ET0=1;                  //允许T0溢出中断
  
  while(1)                  //死循环
  {
     display();
     while(!KS)
     {
       display();
       if(KS)
       TR0=1;
     }
     while(!KP)
     {
       display();
       if(KP)
       TR0=0;
     }
     while(!KC)
     {
       display();
       if(KC)
       TR0=0;
       shi=0;
       ge=0;
     }
     if(ge==10)
     {
       ge=0;
       shi++;
     }
     if(shi==10)
     {
       shi=0;
     }
  }
}
搜索更多相关主题的帖子: display 单片机 include 
2017-06-19 17:01
快速回复:新手刚学单片机,求大神帮下 怎么在只有开始 暂停 复位的基础上 让秒 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019930 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved