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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 5.3-2.c

?? 單片機(jī)應(yīng)用開發(fā)實例 源代碼 文件列表 5.3-1.c 5.3-2.c
?? C
字號:
#define   SYS_CLOCK_EN  1
#if       SYS_CLOCK_EN

#include  "typedef.h"
#include  "reg52.h"
#include  "string.h"
#include  "stdlib.h"
#include  "Stdio.h"

#define   FOSC                    22118400L
#define   MACHINE_NUM           12          
#define   TICKS_PER_SEC           10       
#define   CLK_DATE_EN             1           // 1為數(shù)據(jù)標(biāo)志 
#define   ENTER_CRITICAL()       EA=1
#define   EXIT_CRITICAL()         EA=0                         

#if CLK_DATE_EN
typedef struct clk_month 
{         
UCHAR  MonthDays;                        //每月天                               
char  *MonthName;                          //月名 
UCHAR  MonthVal;                         //每星期的天數(shù)名稱                       
} CLK_MONTH;
#endif

static UCHAR   ClkTickCtr;                       //保持系統(tǒng)時鐘軌跡
static UCHAR   ClkHr;
static UCHAR   ClkMin;
static UCHAR   ClkSec;                          //計算地區(qū)時間
#if    CLK_DATE_EN
static UCHAR   ClkDay;                         //計算地區(qū)日期
                                      
static UCHAR   ClkDOW;                       //每星期的天數(shù)(0 為星期天)
                                    
static UCHAR   ClkMonth;
static UINT    ClkYear;
#endif
      
static  BOOL       ClkUpdateTime(void);

#if     CLK_DATE_EN
static  BOOL     ClkIsLeapYear(UINT year);
static  void       ClkUpdateDate(void);
static  void       ClkUpdateDOW(void);
#endif

void   Init_sys_timer(void);
void   Sys_clk_init(void); 
void   Sys_clk_task(void);

void   Clk_format_time(UCHAR mode, char *s);
void   Clk_set_time(UCHAR hr, UCHAR min, UCHAR sec);
int    Cmp_now_time(UCHAR hr, UCHAR min, UCHAR sec);

#if    CLK_DATE_EN
void   Clk_format_date(UCHAR mode, char *s);
void   Clk_set_date(UCHAR month, UCHAR day, UINT year);
void   Clk_set_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
int    Cmp_now_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
#endif

#if CLK_DATE_EN
static  char code *ClkDOWTbl[] = {                                       
    "Sunday ",
    "Monday ",
    "Tuesday ",
    "Wednesday ",
    "Thursday ",
    "Friday ",
    "Saturday "
};


static CLK_MONTH code ClkMonthTbl[] = {             // 月表                                               
{0,  "",         0},                        // 無效                                                
    {31, "January ",   6},                        // 1月                                                   
    {28, "February ",  2},                        // 2月               
    {31, "March ",    2},                        // 3月                                                       
    {30, "April ",     5},                        // 4月                                                        
    {31, "May ",      0},                        // 5月
{30, "June ",      3},                        // 6月
    {31, "July ",      5},                        // 7月 
{31, "August ",     1},                          // 8月 
{30, "September ",  4},                          // 9月
{31, "October ",    6},                          // 10月
{30, "November ",  2},                          // 11月
{31, "December ",  4},                         // 12月
};
#endif  

void  Sys_clk_task (void)
{
     if(++ClkTickCtr==TICKS_PER_SEC)   
      {
         ClkTickCtr=0;
                               
         if (ClkUpdateTime() == TRUE)
         {     
          #if CLK_DATE_EN
              ClkUpdateDate();                       // MM-DD-YY)    
          #endif
         }
      }   
}  

void Sys_tick_isr(void)  interrupt 5  using  3
{
    TF2=0;
    Sys_clk_task();  
    
}
//系統(tǒng)定時器初始化
void Init_sys_timer(void)
{
  BYTE_WORD Init_value; 

  Sys_clk_init();  
    
  T2CON=0x00;
  Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM); 
  TH2=RCAP2H=-Init_value.bytes.high;
  TL2=RCAP2L=-Init_value.bytes.low;

  ET2=1;
  TR2=1;  	
  
  //TMOD&=0xF0;	           //使用定時器0,但在中斷中需要重新賦初值
  //TMOD|=0x01;
  
 // Init_value.word=FOSC/(TICKS_PER_SEC*MACHINE_NUM); 
  //TH0=-Init_value.bytes.high;
  //TL0=-Init_value.bytes.low;

  //ET0=1;
  //TR0=1;
}

void  Sys_clk_init (void)
{
    ClkTickCtr = 0;
    Clk_set_time(11,32,0);
#if CLK_DATE_EN
    Clk_set_date(5,28,2002);
#endif    
}

#if  CLK_DATE_EN
void  Clk_format_date (UCHAR mode, char *s)
{
    UINT  year;
    char    str[5];
    
    switch (mode) 
       {
        case  1:
              strcpy(s, "MM-DD-YY");         
              s[0] = ClkMonth / 10 + '0';               //轉(zhuǎn)換數(shù)據(jù)為ASCII                
              s[1] = ClkMonth % 10 + '0';
              s[3] = ClkDay   / 10 + '0';
              s[4] = ClkDay   % 10 + '0';
              year = ClkYear % 100;
              s[6] = year / 10 + '0';
              s[7] = year % 10 + '0';
              break;

        case  2:
        strcpy(s, ClkDOWTbl[ClkDOW]);               //得到每星期的天
  strcat(s, ClkMonthTbl[ClkMonth].MonthName);   //得到月名

              if (ClkDay < 10)
               {
                 str[0] = ClkDay + '0';
                 str[1] = 0;
               } 
              else
               {
                 str[0] = ClkDay / 10 + '0';
                 str[1] = ClkDay % 10 + '0';
                 str[2] = 0;
               }
              strcat(s, str);
              strcat(s, ", ");
              sprintf(str,"%d",ClkYear); 
              strcat(s, str);
              break;

        case  3:
              strcpy(s, "YYYY-MM-DD");            

              s[0] = year / 1000 + '0';
              year = year % 1000;
              s[1] = year /  100 + '0';
              year = year %  100;
              s[2] = year /   10 + '0';
              s[3] = year %   10 + '0';
              s[5] = ClkMonth / 10 + '0';        
              s[6] = ClkMonth % 10 + '0';
              s[8] = ClkDay   / 10 + '0';
              s[9] = ClkDay   % 10 + '0';
              break;

        default:
              strcpy(s, "?");
              break;
    }
}
#endif

void  Clk_format_time (UCHAR mode, char *s)
{
    UCHAR hr;
    switch (mode)
     {
        case  1:
              strcpy(s, "HH:MM:SS");    
              s[0] = ClkHr  / 10 + '0';  
              s[1] = ClkHr  % 10 + '0';
              s[3] = ClkMin / 10 + '0';
              s[4] = ClkMin % 10 + '0';
              s[6] = ClkSec / 10 + '0';
              s[7] = ClkSec % 10 + '0';
              break;

        case  2:
              strcpy(s, "HH:MM:SS AM");     
              s[9] = (ClkHr >= 12) ? 'P' : 'A';               
              if (ClkHr > 12) 
                {                                 // 調(diào)整顯示時間  
                 */
                  hr   = ClkHr - 12;
                } 
              else
                {
                  hr = ClkHr;
                }
              s[0] = hr     / 10 + '0';                            
              s[1] = hr     % 10 + '0';
              s[3] = ClkMin / 10 + '0';
              s[4] = ClkMin % 10 + '0';
              s[6] = ClkSec / 10 + '0';
              s[7] = ClkSec % 10 + '0';
              break;

        default:
              strcpy(s, "?");
              break;
    }
}

static  BOOL  ClkUpdateTime (void)
{
    BOOL newday;
    
newday = FALSE;                     
whole day yet      */
    if (ClkSec >= 59)
     {                                             //假如1整分鐘      
          ClkSec = 0;                                //Yes, clear seconds  
          if (ClkMin >= 59)
            {                                      //假如1整小時   

              ClkMin = 0;                           //清分鐘                                   
              if (ClkHr >= 23) 
               {                                   //假如1整天
                 ClkHr = 0;                         //清小時
                 newday    = TRUE;                 //新1天的標(biāo)志 
               } 
              else
               {
                ClkHr++;             
               }
            }
          else
           {
            ClkMin++;                
           }
     } 
    else
     {
        ClkSec++;                    
     }
    return (newday);
}

void  Clk_set_time (UCHAR hr, UCHAR min, UCHAR sec)
{
ENTER_CRITICAL();    
    ClkHr  = hr;
    ClkMin = min;
    ClkSec = sec;
EXIT_CRITICAL();    
}

#if CLK_DATE_EN
static  BOOL  ClkIsLeapYear(UINT year)
{
    if (!(year % 4) && (year % 100) || !(year % 400)) 
     {
        return TRUE;
     } 
    else 
     {
        return (FALSE);
     }
}
#endif

#if  CLK_DATE_EN
void  Clk_set_date (UCHAR month, UCHAR day, UINT year)
{
    ENTER_CRITICAL();                         
    ClkMonth = month;
    ClkDay   = day;
    ClkYear  = year;
    ClkUpdateDOW();                             
    EXIT_CRITICAL();                         
}
#endif

#if  CLK_DATE_EN
void  Clk_set_date_time (UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec)
{
ENTER_CRITICAL();    
    ClkMonth = month;
    ClkDay   = day;
    ClkYear  = year;
    ClkHr    = hr;
    ClkMin   = min;
    ClkSec   = sec;
ClkUpdateDOW();         
EXIT_CRITICAL();       

}
#endif

#if CLK_DATE_EN
static  void  ClkUpdateDate (void)
{
    BOOL newmonth;
    
    newmonth = TRUE;
if (ClkDay >= ClkMonthTbl[ClkMonth].MonthDays)
 {                                            //是月的最后1天?
        if (ClkMonth == 2) 
{                                                 // 2月?
            if (ClkIsLeapYear(ClkYear) == TRUE)
 {                                              // 閏月? 
                if (ClkDay >= 29) 
{                                              //是,昨天是2月 
                    ClkDay = 1;                 //3月1日
                } else
 {
                    ClkDay++;
                    newmonth = FALSE;
                }
            } else {
                ClkDay = 1;
            }
        } else {
            ClkDay = 1;
        }
    } else {
        ClkDay++;
        newmonth = FALSE;
    }
if (newmonth == TRUE) {              
        if (ClkMonth >= 12) {              
            ClkMonth = 1;           
            ClkYear++;              

        } else {
            ClkMonth++;           
        }
    }
ClkUpdateDOW();            

}
#endif

#if CLK_DATE_EN
static  void  ClkUpdateDOW (void)
{
    UINT dow;
    
    dow = ClkDay + ClkMonthTbl[ClkMonth].MonthVal;
    if (ClkMonth < 3)
    {
        if (ClkIsLeapYear(ClkYear)) 
        {
            dow--;
        }
    }
    dow    += ClkYear + (ClkYear / 4);
    dow    += (ClkYear / 400) - (ClkYear / 100);
    dow    %= 7;
    ClkDOW  = dow;
}
#endif

int Cmp_now_time(UCHAR hr, UCHAR min, UCHAR sec)
{
   if(ClkHr!=hr)
     return(hr-ClkHr);
   else if(ClkMin!= min) 
     return(min-ClkMin);   
   else
     return(sec-ClkSec);    
}

// 功能:  給定的時間與當(dāng)前時間比較
// 函數(shù):  int Cmp_now_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec)

#if CLK_DATE_EN
int Cmp_now_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec)
{
   if(ClkYear!=year)
       return(year-ClkYear);
   else if(ClkMonth!=month)
	   return(month-ClkMonth);
   else if(ClkDay!=day)
	   return(day-ClkDay);
   else if(ClkHr!=hr)
       return(hr-ClkHr);
   else if(ClkMin!= min) 
       return(min-ClkMin);   
   else
       return(sec-ClkSec);    
}
#endif
#endif


//CALENDER.H 

#ifndef _CALENDER_H_
#define _CALENDER_H_ 

#define CLK_DATE_EN          1                 
      
void   Sys_clk_init(void); 
void   Sys_clk_task(void);

void   Clk_format_time(UCHAR mode, char *s);
void   Clk_set_time(UCHAR hr, UCHAR min, UCHAR sec);
int    Cmp_now_time(UCHAR hr, UCHAR min, UCHAR sec);

#if    CLK_DATE_EN
void   Clk_format_date(UCHAR mode, char *s);
void   Clk_set_date(UCHAR month, UCHAR day, UINT year);
void   Clk_set_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
int    Cmp_now_date_time(UCHAR month, UCHAR day, UINT year, UCHAR hr, UCHAR min, UCHAR sec);
#endif

#endif

//Typedef.h
#define   Max(x,y)                    ( (x)>(y) ? (x) : (y) ) 
#define   Min(x,y)                    ( (x)<(y) ? (x) : (y) )  

#define LongToBin(n) \
(\
((n >> 21) & 0x80) | \
((n >> 18) & 0x40) | \
((n >> 15) & 0x20) | \
((n >> 12) & 0x10) | \
((n >> 9) & 0x08) | \
((n >> 6) & 0x04) | \
((n >> 3) & 0x02) | \
((n ) & 0x01) \
)

#define Bin(n) LongToBin(0x##n##L)
#endif

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久激情五月婷婷| 五月天国产精品| 久久99久国产精品黄毛片色诱| 中文幕一区二区三区久久蜜桃| 久久久久久久电影| 国产精品一区在线观看你懂的| 色94色欧美sute亚洲线路一ni | 久久精品久久精品| 一区二区欧美视频| 精品国偷自产国产一区| 99视频精品在线| 日韩综合小视频| 亚洲欧洲日产国码二区| 日韩一区二区不卡| 在线观看91精品国产入口| 国产精品18久久久久久久网站| 亚洲丝袜制服诱惑| 精品999久久久| 国产日韩欧美一区二区三区综合| 精品一区二区三区视频| 丝袜脚交一区二区| 国产伦精一区二区三区| 日日摸夜夜添夜夜添国产精品 | 懂色av一区二区夜夜嗨| 亚洲一区二区三区小说| 日本一区二区在线不卡| 中文字幕在线一区二区三区| 日韩无一区二区| 国产亚洲1区2区3区| 欧美精品一区二区三区在线| 中文字幕国产一区二区| 久久综合网色—综合色88| 制服丝袜亚洲网站| 欧美系列在线观看| 欧美色图激情小说| 欧美日本精品一区二区三区| 欧美日韩精品久久久| 亚洲精品在线免费播放| 亚洲女与黑人做爰| 亚洲精品中文在线观看| 尤物在线观看一区| 久久99精品久久久久久久久久久久| 一区二区三区精品在线观看| 久久国产精品99久久人人澡| 91美女片黄在线观看91美女| 国产传媒一区在线| 成人高清视频在线| 91丨porny丨中文| 亚洲精品在线网站| 亚洲在线视频免费观看| 高清不卡一区二区| 91麻豆精品国产91久久久使用方法| 色素色在线综合| 欧美日韩国产不卡| 国产精品久久久久三级| 精品制服美女久久| 欧美精品国产精品| 精品日本一线二线三线不卡| 日韩精品一区二区三区在线播放| 成人18视频日本| 精品久久久久99| 日韩和欧美一区二区三区| 日本福利一区二区| 亚洲视频免费看| 成人激情av网| 国产精品视频九色porn| 国产麻豆一精品一av一免费 | 国产色综合久久| 蜜臀av性久久久久av蜜臀妖精 | 亚洲视频香蕉人妖| 国产精品一区二区三区99| 91精品国产福利| 中文字幕第一区综合| 激情综合五月天| 欧美精品一区男女天堂| 久久爱www久久做| 日韩久久久久久| 狠狠色丁香婷综合久久| 懂色av中文字幕一区二区三区| av成人免费在线| 中文字幕第一页久久| 成人av在线资源| 国产精品美女久久久久久2018| 亚洲少妇中出一区| 一本到不卡免费一区二区| 亚洲欧美经典视频| 在线观看欧美日本| 亚洲成av人片在线观看无码| 成人性视频网站| 91精品久久久久久蜜臀| 麻豆视频一区二区| 欧美成人一区二区三区| 国内精品嫩模私拍在线| 中日韩av电影| 色婷婷精品久久二区二区蜜臀av | 蜜臀av性久久久久蜜臀aⅴ流畅| 国产资源精品在线观看| 国产欧美日韩另类一区| 国产乱子伦一区二区三区国色天香| 色欧美88888久久久久久影院| 91麻豆精品国产91久久久 | 亚洲视频免费看| 欧美丰满美乳xxx高潮www| 五月婷婷综合在线| 欧美精品一区二区高清在线观看| 亚洲精品日韩一| 日韩久久精品一区| 91丨九色porny丨蝌蚪| 日韩电影免费一区| 欧美色视频一区| 国产精品亚洲午夜一区二区三区 | 欧美日韩国产色站一区二区三区| 国产人伦精品一区二区| 色妞www精品视频| 久久精品99国产国产精| 日韩美女精品在线| 日韩欧美高清一区| 一本大道久久a久久综合| 免费成人在线视频观看| 777a∨成人精品桃花网| 久草热8精品视频在线观看| 国产欧美日韩三区| 91精品国产91久久久久久最新毛片| 一区二区三区四区精品在线视频 | 国产精品一区二区在线观看网站| 91国偷自产一区二区三区成为亚洲经典| 日韩一本二本av| 99re这里只有精品视频首页| 中文久久乱码一区二区| 欧美一区二区三区视频免费 | 日韩av网站免费在线| 中文字幕一区免费在线观看| 日韩欧美国产综合| 99国产精品久久久久久久久久久| 国产人成一区二区三区影院| 91精品国产麻豆| 色94色欧美sute亚洲线路一久| 亚洲激情av在线| 久久老女人爱爱| 欧美电视剧免费观看| 欧美猛男gaygay网站| 97久久精品人人做人人爽50路| 成人免费小视频| 久久精品亚洲国产奇米99| 日韩一区二区电影在线| 欧美精品自拍偷拍动漫精品| 91福利国产精品| 色综合天天综合网天天狠天天| 日韩一区二区免费在线观看| 在线观看中文字幕不卡| 成人黄色网址在线观看| 国产精品香蕉一区二区三区| 韩国欧美一区二区| 国产一区二区毛片| 国模一区二区三区白浆| 国产一区福利在线| 国产综合久久久久久鬼色| 国内精品视频666| 国产盗摄精品一区二区三区在线| 一二三四社区欧美黄| 亚洲精品视频在线| 亚洲综合免费观看高清在线观看| 欧美精三区欧美精三区| 欧美精品 国产精品| 欧美高清一级片在线| 欧美一区二区三区四区高清| 欧美美女网站色| 欧美一区二区三区公司| 精品国产精品一区二区夜夜嗨 | 国产精品每日更新| 国产精品久久久久久妇女6080| 91久久精品一区二区三| 一本到一区二区三区| 欧美婷婷六月丁香综合色| 欧美日韩国产高清一区二区 | 国产精品久久久久久久裸模| 国产精品情趣视频| 亚洲蜜桃精久久久久久久| 午夜精品成人在线视频| 久久疯狂做爰流白浆xx| 国产成人aaa| 欧美视频一区在线观看| 日韩女同互慰一区二区| 国产精品免费aⅴ片在线观看| 日韩精品中文字幕一区二区三区 | 舔着乳尖日韩一区| 老鸭窝一区二区久久精品| 高清shemale亚洲人妖| 欧美亚洲高清一区| 久久伊99综合婷婷久久伊| 国产精品美女视频| 另类小说综合欧美亚洲| 一本大道久久a久久精品综合| 高清不卡一区二区| 欧美吞精做爰啪啪高潮| 久久久综合激的五月天| 亚洲国产精品久久不卡毛片| 日韩一区在线免费观看| 日本成人在线看| 成人av资源下载|