微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 单片机电子时钟程序

单片机电子时钟程序

时间:11-29 来源:互联网 点击:

/************************************
按键一长按处理(可改为函数 在这调用)
*************************************/
isr_button1_proces();
/*************************************
按键2长击判断 (可改为函数 在这调用)
*************************************/
isr_button2_proces();
/*************************************
按键3长击判断(可改为函数 在这调用)
*************************************/
isr_button3_proces();
/***********************************
秒表功能 (可改为函数 在这调用)
************************************/
if((time.mode ==1)&&(start_stopwatch==1))
{
stopwatch_clear_flag = 0;
time.stopwatch[0]++;
if(time.stopwatch[0]>=100)
{
time.stopwatch[0] = 0;
time.stopwatch[1]++;
}
if(time.stopwatch[1]>=60)
{
time.stopwatch[1] = 0;
time.stopwatch[2]++;
}
if(time.stopwatch[2]>=60)
time.stopwatch[2]=0;
}
if(stopwatch_clear_flag==1)
{
time.stopwatch[0] = 0;
time.stopwatch[1] = 0;
time.stopwatch[2] = 0;

}
//*计数器 (可改为函数 在这调用)
if(cymometer_start_flag)
{
TR1 = 1;
time.cymometer[1]=TH1;
time.cymometer[0]=TL1;
}
//频率计 (可改为函数 在这调用)
if(cymometer1_start_flag)
{
TR1 = 1;
time.cymometer_count--;
if(time.cymometer_count==0)
{
TR1 = 0;
time.cymometer[1]=TH1;
time.cymometer[0]=TL1;
time.cymometer_count=cymometer_1s;
TH1=TL1=0;
}
}

/*******************************
调参数闪烁处理 (可改为函数 在这调用)
*******************************/
if((time.mode>1)&&(time.mode<10))
{
time.flashcount++;
if(time.flashcount>flash_cymometer_ms)
{
time.flashcount = 0;
flash_control = ~flash_control;

}
}
else flash_control = 0;

/***********************************
时间产生 (可改为函数 在这调用)
************************************/
time.count++;
if( time.count>=100)
{
time.count = 0;
time.sec ++;
}
if(time.sec>=60)
{
time.sec = 0;
time.min ++;
}
if(time.min>=60)
{
time.min = 0;
time.hou ++;
}
if(time.hou>23)
{
time.hou = 0;
time.day ++;
}

if(time.mon==2)
{
if((time.day>time.February_day))
{
time.day = 1;
time.mon ++;
}
}
else
{
if((time.day>leab_day[time.mon-1]))
{
time.day = 1;
time.mon ++;
}

}
if(time.mon>12)
{
time.mon = 1;
time.year[0]++;
}
if(time.year[0]>99)
time.year[1]++;

}
/************************************************
按键一中断处理函数
*************************************************/
void ext_inter0(void) interrupt 0 using 3
{
//if(time.mode==0)
time.ditheringcount = 100;
menu_button1_down = 1;
/* if(time.mode==1){time.mode =0;flash_flag=0;}
if ((time.mode<10)&&(time.mode>1))
{
time.mode++;
time.flashcount = 0;
}
else
{
time.mode = 0;
flash_flag = 0;
}
menu_button2_down = 0;*/
}

/**
/************************************
按键一长按处理
*************************************/
void isr_button1_proces(void)
{
if(menu_button1_down_1 ==1)
{

if(button1==0)
{
time.delaycount--;
if(time.delaycount==0)
{
time.delaycount = 0;
time.mode = 2;
menu_button1_down_1 = 0;
}
}
else
{
time.delaycount = 0;
time.mode = 1;
menu_button1_down_1 = 0;

}
}
/************************************************
消抖部分 (10~20ms)
************************************************/
if(menu_button1_down==1)
{
time.ditheringcount--;
if(time.ditheringcount==98)
{ if(button1==0)
{
if(time.mode==0){menu_button1_down_1=1;time.delaycount = length_whack_ms;}
else if(time.mode==1){time.mode =0;}
else if ((time.mode<10))
{
time.mode++;
time.flashcount = 0;
menu_button1_down_1=0;
}
else
{
time.mode = 0;
flash_flag = 0;
}
menu_button2_down = 0;
menu_button1_down=0;
}
}
}
}
/************************************************
按键二中断处理函数
************************************************/
/*void ext_inter1(void) interrupt 2 using 2
{
menu_button2_down = 1;
time.delaycount =length_whack_ms; */
/*if(time.mode==1) start_stopwatch = ~start_stopwatch ;
if(time.mode==10)cymometer_start_flag =~cymometer_start_flag;
time_add();*/
//}
/************************************************
处理函数
************************************************/
void button2_proces(void)
{
if((menu_button2_down==0)&&(button2==0))
{
menu_button2_down = 1;
time.delaycount =length_whack_ms;

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

网站地图

Top