微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 秒表,,帮忙下!急用!谢谢!要求!按键1按下时暂停,按键2加一,按键3减一,再按下1时能继续计时

秒表,,帮忙下!急用!谢谢!要求!按键1按下时暂停,按键2加一,按键3减一,再按下1时能继续计时

时间:10-02 整理:3721RD 点击:
#include<reg51.h> #define uint unsigned int#define uchar unsigned char  uint temp,tt,qian,bai,shi,ge;  sbit smg_q=P1^4; sbit smg_b=P1^5; sbit smg_s=P1^6; sbit smg_g=P1^7; sbit key1 = P3^4;  sbit key2 = P3^5; sbit key3 = P3^6;    uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};  uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; //带小数点  void keyscan(); void display(uint shi,uint ge); void delay(uint z); void init(); /**************************************************************   主函数 ******************************************************************/ void main() {   init();//初始化子程序  while(1)  { keyscan();         display(shi,ge);     } } /*********************************************************************     延时 ***********************************************************************/ void delay(uint z) {  uint x,y;  for(x=z;x>0;x--)   for(y=110;y>0;y--); } /*********************************************************************   按键控制 ***********************************************************************/ void keyscan() {   if(key1==0)  //暂停计时  {   delay(10);    if(key1==0){while(!key1);  TR0=~TR0;}  } { if(key2==0){delay(10);if(key2==0){bai=bai+1;}if(bai==10){bai=0; qian=qian+1;}while(key2==0);}if(TR0==0) if(key3==0){delay(10);if(key3==0){bai=bai-1;}if(bai==0){ qian=qian-1;  }while(key3==0); }          }         }/*********************************************************************     显示 ***********************************************************************/ void display(uint shi,uint ge) {         smg_q=0;                   P2=table[qian];                   delay(1);                   smg_q=1;                   P2=0xff;                       smg_b=0;                   P2=table1[bai];                   delay(1);                   smg_b=1;                   P2=0xff;                      smg_s=0;                   P2=table[shi];                   delay(1);                   smg_s=1;                   P2=0xff;                    smg_g=0;                   P2=table[ge];                  delay(1);                   smg_g=1;                   P2=0xff;                 } /*********************************************************************    初始化 ***********************************************************************/ void init() {   smg_q=1;  smg_b=1;  smg_s=1;  smg_g=1;  temp=0;  TMOD=0x01;  TH0=(65536-10000)/256;  TL0=(65536-10000)%256;  EA=1;  ET0=1;  TR0=1;  } /*********************************************************************    中断 ***********************************************************************/ void t0() interrupt 1 {  TH0=(65536-10000)/256;  TL0=(65536-10000)%256;  tt++; if(tt==1)     {            tt=0;        temp++;    if(temp==10000)       {      temp=0;       }    qian=temp/1000;    bai=temp%1000/100;    shi=temp%100/10;    ge=temp%10;     }    }

你这个具体的问题是什么?没看明白

太乱了 看不懂。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top