亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? timer.c

?? 電子鐘源碼
?? C
字號:
/*
 timer.c file
 Created by Computer-lov. Date: 2005.5.31
 Last edited date:2005.5.31
 Copyright (c) 2005 Computer-lov
 version 1.0
 All rigths reserved
 歡迎訪問我的blog:  http://computer00.21ic.org
*/

#include "timer.h"
#include "main.h"
#include "keyboard.h"
#include "led.h"

unsigned char display_buffer[6];        //顯示緩沖區

unsigned char second,minute,hour,day,month,year;  //分別保存秒、分、時、天、月、年的變量
unsigned char n_50m_second;             //保存多少個50毫秒的變量
unsigned char days_of_month;            //保存該月多少天的變量

void timer0_isr(void) interrupt 1 using 1      //定時器0中斷處理函數
{
 TL0=0xB9;
 TH0=0x3C;                              //定時器重裝。定時50mS中斷一次
 n_50m_second++;
 if(n_50m_second>=20)                  //1秒到
  {
   n_50m_second=0;                     //清50毫秒計數
   second++;                           //秒加1
   if(second==60)                      //如果秒到60
    {
     second=0;                         //秒清0
     minute++;                         //分加1
     if(minute==60)                    //如果分到60
      {
       minute=0;                       //分清0
       hour++;                         //小時加1
       if(hour==24)                    //如果小時到24
        {
         hour=0;                       //小時清零
         day++;                        //天加1
         if(day>days_of_month)         //如果天大于本月最后一天
          {
           day=1;                      //天置1
           month++;                    //月加1
           if(month>12)                //如果月大于12
            {
             month=1;                  //月置1
             year++;                   //年加1
             if(year>=100)             //如果年大于100
              {
               year=0;                 //年清零
              }
            }
          }
        }
      }
    }
  } 
}

#define NORMAL       0
#define SECOND_ADJ   1
#define MINUTE_ADJ   2
#define HOUR_ADJ     3
#define DAY_ADJ      4
#define MONTH_ADJ    5
#define YEAR_ADJ     6

#define STATUS_MIN   0
#define STATUS_MAX   6

unsigned char calculate_days(void)       //計算本月有多少天
{
 unsigned int temp;
 switch (month)
  {
   case 1:
   case 3:
   case 5:
   case 7:
   case 8:
   case 10:
   case 12:
           return 31;  //1、3、5、7、8、10、12月為31天
           break;
   case 4:
   case 6:
   case 9:
   case 11:            //4、6、9、11月為30天
           return 30;
           break;
   case 2:
           temp=2000+year; //因為year中保存的是年的最后兩位,所以要加上2000
           if((((temp%4)==0)&&((temp%100)!=0))||((temp%400)==0))
            {
             return 29;    //閏年2月為29天
            }
           else
            {
             return 28;    //平年2月為28天
            }
  }
}

unsigned char flicker_time;     //閃爍頻率
unsigned char display_on;       //顯示開關標志。用來產生閃爍效果
unsigned char status;           //狀態值
unsigned char display_date;     //是否是顯示日期

void timer(void)
{
 if(key==KEY_FUNCTION)          //如果功能鍵按下
  {
   if(status<STATUS_MAX)status++;   //如果狀態值小于對大狀態,則狀態值加1
   else status=STATUS_MIN;          //否則,狀態值置最小狀態值
   key=0;                           //清鍵值
  }
 days_of_month=calculate_days();    //計算本月天數
 switch (status)
  {
   case NORMAL:                     //平常狀態
    {
     if(key==KEY_UP)                //如果上翻鍵按下,則顯示日期
      {
       display_date=100;            //設置顯示日期的時間
       key=0;
      }
     if(key==KEY_DOWN)             //如果下翻鍵按下,則顯示時間
      {
       display_date=0;
       key=0;
      }
     if(display_date)              //如果是顯示日期,則計算日期每位
      {
       display_buffer[5]=16+day%10;
       display_buffer[4]=day/10;
       display_buffer[3]=16+month%10;
       display_buffer[2]=month/10;
       display_buffer[1]=16+year%10;
       display_buffer[0]=year/10;
       display_date--;               //經過一定時間后,自動顯示時間
      }
     else                            //如果是顯示時間,則計算時間每位                     
      {
       display_buffer[5]=second%10;
       display_buffer[4]=second/10;
       display_buffer[3]=16+minute%10;
       display_buffer[2]=minute/10;
       display_buffer[1]=16+hour%10;
       display_buffer[0]=hour/10;
      }
       display(display_buffer);        //顯示結果
       break;
    }
   case SECOND_ADJ:                  //秒調整狀態
    {
     if(key==KEY_UP)               //上翻鍵按下,秒增加1
      {
       display_on=1;               //開顯示,調整時能看清楚
       second++;
       if(second>=60)second=0;     //如果秒到60,則清0
       key=0;
      }
     if(key==KEY_DOWN)             //下翻鍵按下,秒減1
      {
       display_on=1;
       second--;
       if(second>=60)second=59;
       key=0;
      }
     display_buffer[5]=second%10;   //計算每位值
     display_buffer[4]=second/10;
     display_buffer[3]=16+minute%10;
     display_buffer[2]=minute/10;
     display_buffer[1]=16+hour%10;
     display_buffer[0]=hour/10;
     if(!display_on)             //如果關顯示
      {
       flicker_time++;           //閃爍計時加1
       if(flicker_time>20){flicker_time=0;display_on=1;}   //如果閃爍計時到20,開顯示
       display_buffer[5]=DISPLAY_OFF;
       display_buffer[4]=DISPLAY_OFF;
      }
     else                       //如果開顯示
      {
       flicker_time++;           //閃爍計時加1
       if(flicker_time>30){flicker_time=0;display_on=0;}   //如果閃爍計時到20,關顯示
      }
     display(display_buffer);
     break;
    }
   case MINUTE_ADJ:       //分調整狀態
    {
     if(key==KEY_UP)
      {
       display_on=1;
       minute++;
       if(minute>=60)minute=0;
       key=0;
      }
     if(key==KEY_DOWN)
      {
       display_on=1;
       minute--;
       if(minute>=60)minute=59;
       key=0;
      }
     display_buffer[5]=second%10;
     display_buffer[4]=second/10;
     display_buffer[3]=16+minute%10;
     display_buffer[2]=minute/10;
     display_buffer[1]=16+hour%10;
     display_buffer[0]=hour/10;
     if(!display_on)
      {
       flicker_time++;
       if(flicker_time>20){flicker_time=0;display_on=1;}
       display_buffer[3]=DISPLAY_OFF;
       display_buffer[2]=DISPLAY_OFF;
      }
     else
      {
       flicker_time++;
       if(flicker_time>30){flicker_time=0;display_on=0;}
      }
     display(display_buffer);
     break;
    }
   case HOUR_ADJ:           //小時調整狀態
    {
     if(key==KEY_UP)
      {
       display_on=1;
       hour++;
       if(hour>=24)hour=0;
       key=0;
      }
     if(key==KEY_DOWN)
      {
       display_on=1;
       hour--;
       if(hour>=24)hour=23;
       key=0;
      }
     display_buffer[5]=second%10;
     display_buffer[4]=second/10;
     display_buffer[3]=16+minute%10;
     display_buffer[2]=minute/10;
     display_buffer[1]=16+hour%10;
     display_buffer[0]=hour/10;
     if(!display_on)
      {
       flicker_time++;
       if(flicker_time>20){flicker_time=0;display_on=1;}
       display_buffer[1]=DISPLAY_OFF;
       display_buffer[0]=DISPLAY_OFF;
      }
     else
      {
       flicker_time++;
       if(flicker_time>30){flicker_time=0;display_on=0;}
      }
     display(display_buffer);
     break;
    }
   case DAY_ADJ:       //天調整狀態
    {
     if(key==KEY_UP)
      {
       display_on=1;
       day++;
       if(day>days_of_month)day=1;
       key=0;
      }
     if(key==KEY_DOWN)
      {
       display_on=1;
       day--;
       if(day==0)day=days_of_month;
       key=0;
      }
     display_buffer[5]=16+day%10;
     display_buffer[4]=day/10;
     display_buffer[3]=16+month%10;
     display_buffer[2]=month/10;
     display_buffer[1]=16+year%10;
     display_buffer[0]=year/10;
     if(!display_on)
      {
       flicker_time++;
       if(flicker_time>20){flicker_time=0;display_on=1;}
       display_buffer[5]=DISPLAY_OFF;
       display_buffer[4]=DISPLAY_OFF;
      }
     else
      {
       flicker_time++;
       if(flicker_time>30){flicker_time=0;display_on=0;}
      }
     display(display_buffer);
     break;
    }
   case MONTH_ADJ:
    {
     if(key==KEY_UP)
      {
       display_on=1;
       month++;
       if(month>=13)month=1;
       days_of_month=calculate_days();
       if(day>days_of_month)day=days_of_month;
       key=0;
      }
     if(key==KEY_DOWN)
      {
       display_on=1;
       month--;
       if(month==0)month=12;
       days_of_month=calculate_days();
       if(day>days_of_month)day=days_of_month;
       key=0;
      }
     display_buffer[5]=16+day%10;
     display_buffer[4]=day/10;
     display_buffer[3]=16+month%10;
     display_buffer[2]=month/10;
     display_buffer[1]=16+year%10;
     display_buffer[0]=year/10;
     if(!display_on)
      {
       flicker_time++;
       if(flicker_time>20){flicker_time=0;display_on=1;}
       display_buffer[3]=DISPLAY_OFF;
       display_buffer[2]=DISPLAY_OFF;
      }
     else
      {
       flicker_time++;
       if(flicker_time>30){flicker_time=0;display_on=0;}
      }
     display(display_buffer);
     break;
    }
   case YEAR_ADJ:          //年天調整狀態
    {
     if(key==KEY_UP)
      {
       display_on=1;
       year++;
       if(year>=100)year=0;
       days_of_month=calculate_days();
       if(day>days_of_month)day=days_of_month;
       key=0;
      }
     if(key==KEY_DOWN)
      {
       display_on=1;
       year--;
       if(year>=100)year=99;
       days_of_month=calculate_days();
       if(day>days_of_month)day=days_of_month;
       key=0;
      }
     display_buffer[5]=16+day%10;
     display_buffer[4]=day/10;
     display_buffer[3]=16+month%10;
     display_buffer[2]=month/10;
     display_buffer[1]=16+year%10;
     display_buffer[0]=year/10;
     if(!display_on)
      {
       flicker_time++;
       if(flicker_time>20){flicker_time=0;display_on=1;}
       display_buffer[1]=DISPLAY_OFF;
       display_buffer[0]=DISPLAY_OFF;
      }
     else
      {
       flicker_time++;
       if(flicker_time>30){flicker_time=0;display_on=0;}
      }
     display(display_buffer);
     break;
    }
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
18欧美亚洲精品| 狠狠狠色丁香婷婷综合激情| 国产欧美一二三区| 欧美国产亚洲另类动漫| 国产日产欧美一区| 欧美国产一区在线| 亚洲国产精品成人综合色在线婷婷 | 国产精品视频第一区| 日韩精品亚洲一区二区三区免费| 欧美高清一级片在线| 日本精品一级二级| 在线观看中文字幕不卡| 欧美性xxxxxx少妇| 欧美亚洲免费在线一区| 欧美日韩一区二区三区免费看 | 色综合激情久久| 在线观看91视频| 欧美一区二区三区小说| 精品国产一区二区三区久久久蜜月 | 国产一区二区毛片| 88在线观看91蜜桃国自产| 欧美精三区欧美精三区| 日韩视频一区二区三区在线播放| 日韩精品一区二区三区蜜臀| 国产夜色精品一区二区av| 国产精品毛片大码女人 | jlzzjlzz国产精品久久| 99精品久久久久久| 欧美日韩视频第一区| 欧美第一区第二区| 中文字幕一区视频| 午夜影视日本亚洲欧洲精品| 美日韩一级片在线观看| 成人黄色在线网站| 在线成人av网站| 久久精品日产第一区二区三区高清版| 综合中文字幕亚洲| 日本aⅴ亚洲精品中文乱码| 国产精品1区二区.| 欧美丝袜自拍制服另类| 久久久亚洲精品石原莉奈| 亚洲男人的天堂av| 免费不卡在线观看| av不卡免费在线观看| 在线播放91灌醉迷j高跟美女| 精品99久久久久久| 一区二区三区毛片| 国产麻豆欧美日韩一区| 欧美无人高清视频在线观看| 精品国产一区二区精华| 亚洲人成亚洲人成在线观看图片 | 欧美日韩久久一区二区| 国产欧美日韩在线视频| 午夜欧美电影在线观看| 成人午夜激情视频| 日韩视频国产视频| 一区二区三区四区不卡在线| 国产剧情一区二区| 欧美一区二区三区在线电影 | 色婷婷狠狠综合| 2024国产精品| 午夜激情久久久| 精品国产乱码91久久久久久网站| 亚洲欧美自拍偷拍色图| 国产制服丝袜一区| 欧美精品 国产精品| 亚洲你懂的在线视频| 国产经典欧美精品| 91精品麻豆日日躁夜夜躁| 玉米视频成人免费看| 成人av电影免费观看| 久久人人爽人人爽| 日本91福利区| 欧美视频在线不卡| 一区在线观看免费| 国产不卡在线视频| 欧美成人乱码一区二区三区| 午夜影视日本亚洲欧洲精品| 色哟哟一区二区三区| 欧美韩日一区二区三区四区| 麻豆精品精品国产自在97香蕉| 欧洲精品视频在线观看| 国产精品久久久久久久岛一牛影视| 精品系列免费在线观看| 欧美一级黄色片| 午夜激情综合网| 欧美另类一区二区三区| 亚洲成人午夜影院| 欧美日韩色一区| 亚洲与欧洲av电影| 在线国产电影不卡| 一区二区三区在线观看网站| 色综合天天做天天爱| 亚洲天堂av一区| 一本色道亚洲精品aⅴ| 亚洲视频在线一区| 色综合天天综合在线视频| 亚洲欧美另类在线| 色香蕉成人二区免费| 亚洲黄网站在线观看| 欧美性猛交xxxx黑人交| 亚洲国产一区二区三区| 欧美三级中文字| 天天影视涩香欲综合网| 欧美顶级少妇做爰| 日韩av电影免费观看高清完整版在线观看 | 在线视频一区二区三区| 一区二区三区蜜桃网| 欧美系列一区二区| 青青国产91久久久久久 | 亚洲美女屁股眼交3| 91丝袜高跟美女视频| 亚洲激情中文1区| 欧美久久免费观看| 免费黄网站欧美| 日本sm残虐另类| 久久久无码精品亚洲日韩按摩| 国产白丝精品91爽爽久久| 亚洲三级久久久| 欧美日韩国产综合草草| 另类调教123区| 国产女同性恋一区二区| 播五月开心婷婷综合| 一区二区三区电影在线播| 欧美日韩精品久久久| 久久黄色级2电影| 欧美韩日一区二区三区四区| 色噜噜狠狠成人中文综合| 三级不卡在线观看| 久久婷婷国产综合精品青草| 9i在线看片成人免费| 亚洲成人综合网站| 精品国产欧美一区二区| 国产69精品一区二区亚洲孕妇| 亚洲精品免费看| 欧美一二三在线| 不卡电影免费在线播放一区| 午夜免费久久看| 欧美精品一区二区三区视频| 成人三级伦理片| 偷窥国产亚洲免费视频| 久久久久国产一区二区三区四区| 91美女片黄在线观看| 免费成人在线观看| 亚洲婷婷综合色高清在线| 欧美久久久久久久久中文字幕| 国产一级精品在线| 一级日本不卡的影视| 久久一区二区三区四区| 日本韩国精品在线| 精品在线播放免费| 伊人夜夜躁av伊人久久| 久久亚洲二区三区| 欧美图区在线视频| 国产a级毛片一区| 男女性色大片免费观看一区二区 | 26uuu久久天堂性欧美| 色一情一乱一乱一91av| 国产一区二区看久久| 亚洲综合一二三区| 亚洲国产电影在线观看| 91精品国产综合久久国产大片| xnxx国产精品| 欧美亚洲精品一区| gogogo免费视频观看亚洲一| 久久精品国产精品亚洲综合| 一区二区三区日韩精品| 久久理论电影网| 91精品视频网| 91国产成人在线| 国产69精品一区二区亚洲孕妇| 水野朝阳av一区二区三区| 亚洲欧美日韩国产另类专区| 国产网站一区二区| 精品噜噜噜噜久久久久久久久试看 | 欧美性一区二区| eeuss鲁片一区二区三区在线看| 麻豆国产精品官网| 亚洲国产aⅴ成人精品无吗| 综合久久国产九一剧情麻豆| 久久免费精品国产久精品久久久久| 欧美乱妇15p| 在线观看不卡视频| 91麻豆国产福利精品| 成人一道本在线| 国产大陆亚洲精品国产| 麻豆精品新av中文字幕| 日韩电影免费在线观看网站| 亚洲一区二区3| 久久免费视频色| 日本不卡一区二区| 一区二区三区在线免费视频| 国产精品免费视频一区| 精品国产乱码久久久久久久| 欧美一级日韩免费不卡| 欧美日韩亚洲综合在线| 欧美日韩国产综合视频在线观看| 91丝袜美腿高跟国产极品老师 | 亚洲欧美日韩国产中文在线| 国产精品国产三级国产普通话蜜臀 |