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

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

?? main.c

?? 基于AT89S52控制芯片的電子萬年歷程序
?? C
?? 第 1 頁 / 共 2 頁
字號:
#include "reg52.h"
#include "intrins.h"
#include "1602lib.h"
#include "PCF8563lib.h"

#define PAI_BASE 15
#define SCAN_CYCLE 10000

#define SECONDL 12                                  /*定義顯示字符位置*/
#define SECONDH 11
#define MINUTEL 9
#define MINUTEH 8
#define HOURL 6
#define HOURH 5
#define DAYL 10
#define DAYH 9
#define WEEKDAY 15
#define MONTHS 5
#define YEARL 15
#define YEARH 14
#define AMPM 14

typedef enum{                                     /*定義枚舉以標識當前設定位置*/
    CUR_SECOND,
    CUR_MINUTE,
    CUR_HOUR,
    CUR_DAY,
    CUR_WEEKDAY,
    CUR_MONTH,
    CUR_YEAR
} Current;

typedef enum{                                     /*定義枚舉以標識顯示內容*/
    SHOW_TIME,
    SHOW_ALARM
} ShowItem;

uchar str1[] = "TIME:15:23:14 W7";                  /*初始顯示時間*/
uchar str2[] = "DATE:JUN.30,2007";
bit alarmflg = 0;
bit timerflg = 0;
bit flg_100ms = 0;
struct c_s cs;
struct time tm;
struct alarm alm;
uchar set_min = 0,set_hour = 0,set_day = 0,set_weekday = 0,set_month = 0,set_year = 0,set_second = 0;
uchar setalarm_min = 0,setalarm_hour = 0;
Current current = CUR_MINUTE;
ShowItem showitem = SHOW_TIME;
uint keyFlag;

bit Int0Flag = 0;
uchar s_tableCounter,musicplayflg = 0;
uchar TH0Temp,TL0Temp;
const char code c_music[] = { 0x82,0x01,0x81,0x94,0x84,     /*鬧鐘用生日快樂歌*/
                              0xb4,0xa4,0x04,
                              0x82,0x01,0x81,0x94,0x84,
                              0xc4,0xb4,0x04,
                              0x82,0x01,0x81,0xf4,0xd4,
                              0xb4,0xa4,0x94,
                              0xe2,0x01,0xe1,0xd4,0xb4,
                              0xc4,0xb4,0x04,
                              0x00};
const uint code c_musicFreq[] = {64260,64400,64524,64580,  /*低音5,6,7,中音1*/
                                  64684,64777,64820,64898,  /*中音2,3,4,5*/
                                  64968,65030,65058,65110,  /*中音6,7,高音1,2*/
                                  65157,65178,65217};       /*高音2,3,4,5*/
                                  
void TxData(uchar dat);
void Delay(uint n);
void ModShow(struct time tm);                         /*調整顯示內容函數*/
uchar Ascii(uchar dat);                                /*獲取數字ASCII碼函數*/
void Months(uchar dat);                               /*月份數字轉字符函數*/
void PCF8563_Init(void);                 /*初始化PCF8563,包括控制狀態寄存器,時間及鬧鐘*/
void ModAlarm(struct alarm* alm);                    /*調整鬧鐘時間模塊*/
void ModTime(struct time * tm);                       /*調整時間模塊*/
void ScanKeys(void);                                 /*掃描鍵盤模塊*/
uchar KeyJudge(void);                                  /*按鍵預處理*/    
void KeyHandle(uchar KeyIndex);                       /*按鍵處理模塊*/

void main(void)
{
    TMOD = 0x11;          /*TIMER0工作在MODE1,16位定時器,TIMER1工作在MODE2,自動重新裝載模式*/
    
    TH0 = 65536;
    TL0 = 65536;
    TH1 = (65536-SCAN_CYCLE)/256;       /*設定TIMER1每隔SCAN_CYCLE 毫秒中斷一次*/
    TL1 = (65536-SCAN_CYCLE)%256;
    TR1 = 1;                               /*啟動TIMER1*/
    T2CON =0X38;                           /*令定時器2作為串口波特率發生器*/
    TL2 = 0Xd9;                             /*設定串口波特率為9600,晶振為12MHz*/
    TH2 = 0Xff;
    RCAP2L = 0Xd9;                           /*根據串口波特率9600設定自動重載寄存器*/
    RCAP2H = 0xff;
    TR2 = 1;
    SCON = 0X50;         /*設定UART工作在MODE3模式,可傳送和接收數據,REN=1*/
    IE = 0X8a;            /*使能中斷,TIMER0,1中斷,外部中斷1,2*/
    P2 = 0Xff;
    
    LCD_init();                         /*LCD初始化*/
    DisplayString(0,0,str1);            /*顯示第一行字符*/
    DisplayString(0,1,str2);            /*顯示第二行字符*/
    PCF8563_Init();                     /*PCF8563初始化*/
    
while(1)
{
    uchar keyPtr;
    keyPtr = KeyJudge();                /*鍵盤掃描判斷*/
    if(keyPtr!=0x55)                    /*如果按某鍵則進行相應處理*/
    {
        KeyHandle(keyPtr);
    }
    
    if(flg_100ms){                      /*判斷100MS到否*/
       flg_100ms = 0;
       if(showitem == SHOW_TIME){       /*如果需要時間顯示*/
            PCF8563_ReadTime(&tm);        /*讀PCF8563時間*/
            ModShow(tm);                  /*調整顯示內容*/
            DisplayString(0,0,str1);      /*顯示第一行字符*/
            DisplayString(0,1,str2);      /*顯示第二行字符*/
            
            PCF8563_ReadCS(&cs);          /*讀PCF8563控制/狀態字*/
            if((cs.cs2&0x08)==0x08){      /*如果鬧鐘時間到*/
                musicplayflg = 1;         /*設置播放音樂標志*/
                TR0 = 1;                  /*啟動TIMER0*/
                cs.cs2 &= 0xf7;           /*清鬧鐘標志位*/
                PCF8563_SetCS(cs);        /*寫PCF8563控制/狀態字*/
            }      
       }else if(showitem == SHOW_ALARM);{  /*如果需要顯示鬧鐘時間*/
            ModAlarm(&alm);                /*調整鬧鐘時間*/
            tm.minutes = alm.minute;        /*將鬧鐘時間作為時間顯示*/
            tm.hours = alm.hour;
            tm.days = alm.day;
            tm.weekdays = alm.weekday;
            ModShow(tm);                     /*調整顯示內容*/
            DisplayString(0,0,str1);         /*顯示第一行字符*/
            DisplayString(0,1,str2);          /*顯示第二行字符*/
            }
        }
}
}
void PCF8563_Init(void)
{
    cs.cs1 = 0x00;
    cs.cs2 = 0x02;                            /*使能鬧鐘*/
    PCF8563_SetCS(cs);                        /*設置控制/狀態字*/
    
    tm.seconds = 50;                          /*設置初始時間*/
    tm.minutes = 58;
    tm.hours = 23;
    tm.days = 31;
    tm.weekdays = 2;
    tm.mon_cen = 12;
    tm.years = 6;
    PCF8563_SetTime(tm);                      
    
    alm.minute = 59;                          /*設定初始鬧鐘時間*/
    alm.hour = 23;
    alm.day = 00;
    alm.weekday = 2;
    PCF8563_SetAlarm(alm,1,1,0,0);              /*設置鬧鐘*/   
}

void ModShow(struct time tm)
{
    uchar tmpL,tmpH;
    
    tmpL = tm.seconds & 0x0f;                   /*調整秒顯示*/
    tmpH = (tm.seconds & 0x7f)>>4;               /*屏蔽VL位*/
    str1[SECONDL] = Ascii(tmpL);
    str1[SECONDH] = Ascii(tmpH);
    
    tmpL = tm.minutes & 0x0f;                    /*調整分鐘顯示*/
    tmpH = tm.minutes>>4;
    str1[MINUTEL] = Ascii(tmpL);
    str1[MINUTEH] = Ascii(tmpH);
    
    tmpL = tm.hours & 0x0f;                     /*調整小時顯示*/
    tmpH = tm.hours>>4;
    str1[HOURL] = Ascii(tmpL);
    str1[HOURH] = Ascii(tmpH);
    
    tmpL = tm.days & 0x0f;                    /*調整天顯示*/
    tmpH = tm.days>>4;
    str2[DAYL] = Ascii(tmpL);
    str2[DAYH] = Ascii(tmpH);
    
    tmpL = tm.weekdays & 0x07;              /*調整星期顯示*/
    str1[WEEKDAY] = Ascii(tmpL);
    
    tmpL = ((tm.mon_cen&0x7f)>>4)*10 + tm.mon_cen & 0x0f; /*體制哦啊橫月份顯示(BCD到HEX)*/
    Months(tmpL);                             /*月份數字轉字符*/
    
    tmpL = tm.years & 0x0f;                    /*調整年顯示*/
    tmpH = tm.years>>4;
    str2[YEARL] = Ascii(tmpL);
    str2[YEARH] = Ascii(tmpH);
}

uchar Ascii(uchar dat)
{
      return dat + 0x30;                     /*0~9得Ascii碼為其+0x30*/
}

void Months(uchar dat)
{
    switch(dat){
    case 1:str2[MONTHS]='J';str2[MONTHS+1]='A';str2[MONTHS+2]='N';break;
    case 2:str2[MONTHS]='F';str2[MONTHS+1]='E';str2[MONTHS+2]='B';break;
    case 3:str2[MONTHS]='M';str2[MONTHS+1]='A';str2[MONTHS+2]='R';break;
    case 4:str2[MONTHS]='A';str2[MONTHS+1]='P';str2[MONTHS+2]='R';break;
    case 5:str2[MONTHS]='M';str2[MONTHS+1]='A';str2[MONTHS+2]='Y';break;
    case 6:str2[MONTHS]='J';str2[MONTHS+1]='U';str2[MONTHS+2]='N';break;
    case 7:str2[MONTHS]='J';str2[MONTHS+1]='U';str2[MONTHS+2]='L';break;
    case 8:str2[MONTHS]='A';str2[MONTHS+1]='U';str2[MONTHS+2]='G';break;
    case 9:str2[MONTHS]='S';str2[MONTHS+1]='E';str2[MONTHS+2]='P';break;
    case 10:str2[MONTHS]='O';str2[MONTHS+1]='C';str2[MONTHS+2]='T';break;
    case 11:str2[MONTHS]='N';str2[MONTHS+1]='O';str2[MONTHS+2]='V';break;
    case 12:str2[MONTHS]='D';str2[MONTHS+1]='E';str2[MONTHS+2]='C';break;
    
    }
}

void Delay(uint n)
{
    uint i;
    for(i=0;i<n;i++);
}

void TxData(uchar dat)
{
    SBUF = dat;
    while(TI!=1);
    TI = 0;
}

void Timer0Int() interrupt 1 using 2
{
    if(Int0Flag==1) /*如果需要產生音樂頻率則按音頻改變TIMER0得中斷周期*/
	{
       	P3^3 = ~P3^3; /*每個TIMER0中斷翻轉一下P3.3的電平以產生相應頻率的方波*/
        TH0 = TH0Temp;
        TL0 = TL0Temp;
    }
}

void Timer1Int() interrupt 3 using 3 /*TIMER1中斷服務程序,中斷周期為10MS*/
 {
    uchar ucharTemp,ucharTemp1;
    static uchar s_paiCounter,s_paiNum;
    uint temp;
    static uint counter = 0;
    
    if(++counter>=10){                   /*如果100ms到則這只100ms標志位*/
        flg_100ms = 1;
        counter = 0;
    }
    temp = 65536-SCAN_CYCLE;              /*中斷周期為10ms*/
    TH1 = temp>>8;                         /*temp/256相當于右移8位*/
    TL1 = temp-((temp>>8)<<8);             /*temp%256*/
    
    if(musicplayflg==1){                      /*如果需要播放音樂*/
    if(++s_paiCounter>=s_paiNum)          /**音樂一拍的時間*/
    {
        s_paiCounter = 0;                    
        ucharTemp = c_music[s_tableCounter++];
            if(ucharTemp==0x00)           /*如果差到0x00則標識本首歌曲結束*/
            {
                Int0Flag = 0;             /*產生音樂平率標志置零*/
                s_paiNum = 4*PAI_BASE;  /*歌曲結束后停止播放*/
                P3^3 = 1;                /*把喇叭關掉*/
                s_tableCounter = 0;
                musicplayflg = 0;
                TR0 = 0;
            }
            else                               /*如果查到非0X00則標識是音樂標識碼*/
            {
                s_paiNum = (ucharTemp&0x0f)*PAI_BASE; /*音樂包是嗎的低四位為節拍碼*/
                ucharTemp1 = (ucharTemp&0xf0)>>4;
                if(ucharTemp1 == 0)                   /*如果音頻碼為零則標識不發音*/
                {
                    Int0Flag = 0;
                }
            else      /*如果音頻碼不為零則按此改變TIMER0得中斷周期*/
            {
            Int0Flag = 0;
            temp = c_musicFreq[ucharTemp1-1];
                TH0 = temp>>8;                   /*temp/256相當于右移8位*/
                TL0 = temp-((temp>>8)<<8);       /*temp%256*/
                TH0Temp = TH0;                   /*保存新的代表音頻得TIMER0周期值*/
                TL0Temp = TL0;
                Int0Flag = 1;
            }
          }
      }
    }
}

void ScanKeys(void)                             /*掃描鍵盤模塊*/
{
    uchar scanValue = 0xef,iScan,scanTempUchar;
    for(iScan = 0;iScan<4;iScan++)
      {
          P1 = scanValue;                         /*發掃描值*/
          scanTempUchar = P1;                     /*讀入掃描值*/
          if((scanTempUchar&0X01) == 0X00)        /*第一列被按*/
          {
              keyFlag|=(0x0001<<(iScan*4+0));     /*設置此鍵的標志位*/
          }
          else
          {
              keyFlag&=~(0x0001<<(iScan*4+0));    /*清此鍵的標志位*/
          }
          if((scanTempUchar&0x02) == 0x00)        /*第二列被按*/
          {
              keyFlag|=(0x0001<<(iScan*4+1));       /*置此鍵的標志位*/
          }
          else
          {
              keyFlag&=~(0x0001<<(iScan*4+1));      /*清此鍵的標志位*/
          }
          if((scanTempUchar&0x04) == 0x00)          /*第三列被按*/
          {
              keyFlag|=0x0001<<(iScan*4+2);         /*置此鍵的標志位*/
          }
          else
          {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道**综合亚洲精品蜜桃冫| 久久久不卡影院| 2017欧美狠狠色| 亚洲男同1069视频| 国产成人精品亚洲777人妖| 欧美在线视频你懂得| 日本一区二区三区国色天香 | 欧美一区午夜精品| 亚洲欧美偷拍三级| 白白色亚洲国产精品| 欧美mv日韩mv国产网站| 五月天一区二区| 91黄色免费网站| 亚洲欧美综合色| 国产成人免费视频网站| 欧美一卡二卡三卡四卡| 视频一区中文字幕国产| 色94色欧美sute亚洲线路一ni| 国产亚洲人成网站| 美国毛片一区二区三区| 欧美日韩一区久久| 洋洋av久久久久久久一区| 丁香另类激情小说| 国产精品―色哟哟| 成人免费福利片| 欧美激情在线一区二区| 国产成人高清在线| 欧美激情一区二区三区在线| 激情成人综合网| 久久综合九色综合欧美98| 麻豆国产91在线播放| 欧美一级精品在线| 奇米一区二区三区| 日韩精品自拍偷拍| 国产一区二区三区精品视频| 精品精品国产高清a毛片牛牛| 日本va欧美va瓶| 26uuu久久天堂性欧美| 久久草av在线| 国产日韩精品一区二区三区| 成人午夜看片网址| 中文字幕制服丝袜成人av| 99精品欧美一区二区蜜桃免费 | 久久综合网色—综合色88| 麻豆视频一区二区| 久久久综合视频| 国产91精品精华液一区二区三区| 国产精品全国免费观看高清| 不卡欧美aaaaa| 一区二区三区四区高清精品免费观看| 一本大道久久精品懂色aⅴ| 亚洲一区二区在线观看视频| 精品视频1区2区3区| 免费在线视频一区| 久久综合精品国产一区二区三区| 春色校园综合激情亚洲| 亚洲视频一区在线| 欧美一卡二卡三卡| 成人午夜av在线| 亚洲影院理伦片| 欧美videos中文字幕| 成人黄色电影在线| 午夜一区二区三区在线观看| 欧美mv和日韩mv国产网站| 99精品国产视频| 日本中文一区二区三区| 欧美激情综合五月色丁香小说| 国产999精品久久| 丝袜亚洲另类丝袜在线| 国产日韩亚洲欧美综合| 欧美特级限制片免费在线观看| 精品一区二区三区免费| 亚洲人快播电影网| 久久综合色天天久久综合图片| 91在线丨porny丨国产| 日本不卡123| 日韩精品五月天| 久久精品亚洲精品国产欧美 | 午夜精品久久久久影视| 337p日本欧洲亚洲大胆精品| 色综合天天狠狠| 国产精品123| 天堂资源在线中文精品| ...中文天堂在线一区| 日韩天堂在线观看| 欧洲人成人精品| 波多野结衣在线一区| 美女视频黄免费的久久 | 欧美在线视频全部完| 国产成人高清视频| 日本三级亚洲精品| 一区二区三区在线不卡| 久久九九全国免费| 日韩视频免费观看高清完整版| 99综合电影在线视频| 国产精品996| 国产一区二区网址| 麻豆91在线播放| 日韩电影免费一区| 午夜精品久久久久久久 | 国产精品1区2区| 麻豆国产欧美一区二区三区| 亚洲国产精品一区二区久久 | 久久综合av免费| 日韩视频一区在线观看| 欧美高清激情brazzers| 欧美日韩激情一区二区| 欧美在线免费观看视频| 91福利国产精品| 一本色道久久综合狠狠躁的推荐 | 亚洲精品写真福利| 国产精品久久精品日日| 国产精品情趣视频| 日韩毛片精品高清免费| 亚洲欧洲精品一区二区三区 | 国产午夜精品一区二区三区嫩草| 日韩免费高清电影| www欧美成人18+| 国产网红主播福利一区二区| 国产日韩欧美电影| 亚洲天堂久久久久久久| 亚洲精品一二三| 肉肉av福利一精品导航| 六月丁香婷婷色狠狠久久| 国内精品在线播放| 成人精品在线视频观看| 99久久国产综合精品女不卡| 91网站最新地址| 欧美丝袜丝交足nylons图片| 欧美日韩国产美| 欧美成人a视频| 国产精品视频一二| 一区二区三区久久| 石原莉奈在线亚洲二区| 久草在线在线精品观看| 国产91精品一区二区麻豆网站 | 欧美亚洲动漫另类| 在线播放亚洲一区| 精品毛片乱码1区2区3区| 国产欧美一区二区三区在线老狼| 国产精品不卡在线观看| 亚洲国产欧美在线| 国产精品亚洲成人| 欧美性做爰猛烈叫床潮| 亚洲精品一区二区三区99| 国产精品欧美精品| 三级久久三级久久久| 国产不卡在线播放| 欧美精品日韩一区| 国产亚洲精品超碰| 亚洲第一在线综合网站| 久久不见久久见免费视频7| 99精品视频在线免费观看| 欧美二区三区的天堂| 国产欧美日韩综合| 五月婷婷欧美视频| 国产成人免费视频| 欧美日韩一区二区三区四区| 国产欧美日韩精品在线| 天堂成人国产精品一区| 成人涩涩免费视频| 日韩一区二区视频| 亚洲丝袜另类动漫二区| 国产在线精品不卡| 在线电影欧美成精品| 国产精品嫩草影院av蜜臀| 日本午夜精品视频在线观看| www.欧美精品一二区| 欧美一区二区三区在线视频| 亚洲视频香蕉人妖| 欧美日韩高清一区二区三区| 国产三区在线成人av| 五月激情六月综合| 色网站国产精品| 国产精品欧美一区喷水| 韩国一区二区在线观看| 欧美日韩激情一区二区三区| 亚洲人精品一区| 国产ts人妖一区二区| 欧美变态tickle挠乳网站| 日韩成人精品在线观看| 在线免费亚洲电影| 国产精品成人免费在线| 成人免费毛片片v| 久久精品视频网| 激情综合色丁香一区二区| 欧美天堂亚洲电影院在线播放| 亚洲老妇xxxxxx| 91亚洲精品久久久蜜桃| 中文av一区二区| 成人自拍视频在线观看| 久久久精品中文字幕麻豆发布| 精品一区二区三区欧美| 欧美一级夜夜爽| 日韩电影免费在线| 91精品国产品国语在线不卡| 日韩福利视频网| 在线成人午夜影院| 日韩精品高清不卡| 欧美一区二区三区免费观看视频|