原创 一个简单的时钟

2008-8-31 23:24 2319 9 10 分类: MCU/ 嵌入式

      昨天编了个小的时钟,但是按键调节不起作用,一直在想是什么原因。今天发现是按键判断条件的e都写成了f,改好后终于能调节了,不过灵敏度太高了,按一下跳好多,调整了一下延时,ok搞定,然后改成了多文件的了,虽然不是很正规,但是还是学会了多文件是怎么回事,呵呵,继续完善它的功能!


main.c


#include <at89x52.h>
#include "main.h"
#include "yanshi.h"
#define uchar unsigned char
#define uint unsigned int
#define TICK 20
#define OSC_PER_INST 12
#define OSC_FREQ 11059200UL
#define TIMEOUT  50
#define PRELOAD50ms  65536-(TIMEOUT*OSC_FREQ)/(OSC_PER_INST*1000)


uchar LEDMAP[]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
uchar Hour,Minute,Second;
uchar one;
uchar twe;
uchar three;
uchar four;
sbit LED1=P1^0;
sbit LED2=P1^1;
sbit LED3=P1^2;
sbit LED4=P1^3;
sbit K1=P2^4;


uint C100us;
void Delay(uint CNT)
{
 uchar i;
 for(i=CNT;i>0;i--);
}


void Display()

 


 one=Hour/10;
 twe=Hour%10;
    three="Minute/10";
 four=Minute%10;



 P0=LEDMAP[one];
 LED1=0;
 Delay(100);
 LED1=1;


 P0=LEDMAP[twe];
 LED2=0;
 Delay(100);
 LED2=1;


 P0=LEDMAP[three];
 LED3=0;
 Delay(100);
 LED3=1;


 P0=LEDMAP[four];
 LED4=0;
 Delay(100);
 LED4=1;
}


void T0Int () interrupt 1
{
 C100us--;
 TH0=PRELOAD50ms/256;
 TL0=PRELOAD50ms%256;
 if(C100us==0)
 {
  Second++;
  C100us=TICK;
  if(Second==60)
  {
   Second=0;
   Minute++;
  
     if(Minute==60)
     {
   Minute=0;
   Hour++;


   if(Hour==24)
   {
    Hour=0;
   }


     }
  }
 }
 
}



void main ()
{
 uchar i;
    Timer0Init();
 Hour=0;
 Minute=0;
 Second=0;
 C100us=TICK;
 TR0=1;
 while(1)
  {GetKey();
   for(i=0;i<100;i++)
   { Display();
  }
  }
}


void GetKey()
{
 uchar i,j;
 
 K1=0;
 i=P2;
 Delay(100);
 j=P2;
 K1=1;
 if (i==j)
 {
    if (j==0xee)
    {
      if(Hour<23)
      Hour++;
   else
      Hour="0";
    }


    if (j==0xed)
    {
      if(Hour>0)
    Hour--;
   else
    Hour=23;
    }


    if (j==0xeb)
    {
      if(Minute<59)
    Minute++;
   else
    Minute=0;
    }


    if (j==0xe7)
    {
      if(Minute>0)
    Minute--;
   else
    Minute=59;
    }
  
    }
  
}

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1268540 2008-9-1 22:36

不错,支持一下~~
相关推荐阅读
用户147553 2009-06-04 10:31
学之初———WinCE 6.0
最近在EDN的WinCE小组买到了一块开发板,忙里偷闲趁着端午开始了我的WinCE学习之旅。我一直在用Visual Studio 2005编写桌面程序,对Visual Studio2005还算比较熟悉...
用户147553 2009-04-27 16:46
技术人员发展方向及嵌入式学习【转】
    关于技术人员发展方向的问题大家讨论已经很多,现在谈谈我的想法对于技术人员可以选择以下几个方向一、继续做技术、做技术比较稳定,是一个撑不死,饿不着的行业,要想挣到比较多的钱比较困难。二、销售做销...
用户147553 2009-04-27 16:42
一位软件工程师的6年总结【转】
        “又是一年毕业时”,看到一批批学子离开人生的象牙塔,走上各自的工作岗位;想想自己也曾经意气风发、踌躇满志,不觉感叹万千……本文是自己工作6年的经历沉淀或者经验提炼,希望对所有的软件工程...
用户147553 2009-04-06 11:41
阶段总结
        期待已久的清明假期还有半天就要结束了,尽管平时这三天也是没有课,但放假毕竟和周末的感觉不一样,至少没有什么压力,可以名正言顺的睡个懒觉,名正言顺的不来实验室。回到学校快两个月了,虽然这...
用户147553 2009-03-06 22:29
C#写的一个简单计算器程序
        刚开始学C#,现在还处于模仿的水平,这个计算器算是自己的第一个小作品吧。程序比较简单,基本没有用到C#的类和函数,大部分和C语言一样。https://static.assets-sta...
用户147553 2009-03-06 22:27
焊板失败
      前几天帮一女同学在电子园买了一套EDN助学的51开发板,昨天货到了,然后我就义不容辞的承担下帮她焊板子的任务,当然无偿的。因为之前我焊过一块,结果很成功,所以这次我有信心、有决心将美女交给...
EE直播间
更多
我要评论
1
9
关闭 站长推荐上一条 /3 下一条