在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR單片機的DS1302操作程序

            AVR單片機的DS1302操作程序

            作者: 時間:2011-02-18 來源:網(wǎng)絡 收藏

            變成浪子
            //mega16 7.3728MHz石英晶體 iccavr6.31a
            //相關(guān)定義:
            #define uint unsigned int
            #define uchar unsigned char
            #define DS1302_RST 0 //pc0
            #define DS1302_SDA 1 //pc1
            #define DS1302_SCLK 6 //pc6
            //ds1302相關(guān)
            //DS1302_RST=1
            #define Set_DS1302_RST() PORTC|=1//DS1302_RST=0
            #define Clr_DS1302_RST() PORTC=~(1//DS1302_SDA=1
            #define Set_DS1302_SDA() PORTC|=1//DS1302_SDA=0
            #define Clr_DS1302_SDA() PORTC=~(1//DS1302_SCLK=1
            #define Set_DS1302_SCLK() PORTC|=1//DS1302_SCLK=0
            #define Clr_DS1302_SCLK() PORTC=~(1//DS1302的SDA置為輸出腳
            #define Set_DS1302_DDRSDA() DDRC|=1//DS1302的SDA置為輸入腳
            #define Clr_DS1302_DDRSDA() DDRC=~(1#define DS1302_SEC_Reg 0x80
            #define DS1302_MIN_Reg 0x82
            #define DS1302_HR_Reg 0x84
            #define DS1302_DATE_Reg 0x86
            #define DS1302_MONTH_Reg 0x88
            #define DS1302_DAY_Reg 0x8a
            #define DS1302_YEAR_Reg 0x8c
            #define DS1302_CONTROL_Reg 0x8e
            #define DS1302_CHARGER_Reg 0x90
            #define DS1302_CLKBURST_Reg 0xbe
            //全局變量
            //為了方便,我把個位和十位分開了
            uchar year1=0x88;
            uchar year0=0x88;
            uchar month1=0x88;
            uchar month0=0x88;
            uchar date0=0x88;
            uchar date1=0x88;
            uchar day=0x88;
            uchar hour1=0x88;
            uchar hour0=0x88;
            uchar minute1=0x88;
            uchar minute0=0x88;
            uchar second1=0x88;
            uchar second0=0x88;
            //自程序開始
            void DS1302_Write(uchar reg,uchar data)
            {
            uchar i;
            Set_DS1302_DDRSDA();
            Clr_DS1302_RST();
            asm("nop");
            asm("nop");
            Clr_DS1302_SCLK();
            asm("nop");
            asm("nop");
            Set_DS1302_RST();
            asm("nop");
            asm("nop");
            for(i=8;i>0;i--)
            {
            if(reg0x01) Set_DS1302_SDA();
            else Clr_DS1302_SDA();
            asm("nop");
            asm("nop");
            Set_DS1302_SCLK();
            asm("nop");
            asm("nop");
            Clr_DS1302_SCLK();
            asm("nop");
            asm("nop");
            reg>>=1;
            }
            for(i=8;i>0;i--)
            {
            if(data0x01) Set_DS1302_SDA();
            else Clr_DS1302_SDA();
            asm("nop");
            asm("nop");
            Set_DS1302_SCLK();
            asm("nop");
            asm("nop");
            Clr_DS1302_SCLK();
            asm("nop");
            asm("nop");
            data>>=1;
            }
            Clr_DS1302_RST();
            asm("nop");
            asm("nop");
            Clr_DS1302_DDRSDA();
            }
            uchar DS1302_Read(uchar reg)
            {
            uchar data=0,i;
            reg+=1;//讀標志
            Set_DS1302_DDRSDA();
            Clr_DS1302_RST();
            asm("nop");
            asm("nop");
            Clr_DS1302_SCLK();
            asm("nop");
            asm("nop");
            Set_DS1302_RST();
            asm("nop");
            asm("nop");
            for(i=8;i>0;i--)
            {

            if(reg0x01) Set_DS1302_SDA();
            else Clr_DS1302_SDA();
            asm("nop");
            asm("nop");
            Set_DS1302_SCLK();
            asm("nop");
            asm("nop");
            Clr_DS1302_SCLK();
            asm("nop");
            asm("nop");
            reg>>=1;
            }
            Clr_DS1302_DDRSDA();
            for(i=8;i>0;i--)
            {
            data>>=1;
            if((PINC(1Set_DS1302_SCLK();
            asm("nop");
            asm("nop");
            Clr_DS1302_SCLK();
            asm("nop");
            asm("nop");
            }
            Clr_DS1302_RST();
            asm("nop");
            asm("nop");
            return(data);
            }
            uchar Check_DS1302(void)
            {
            DS1302_Write(DS1302_CONTROL_Reg,0x80);
            if(DS1302_Read(DS1302_CONTROL_Reg)==0x80) return 1;
            return 0;
            }
            void DS1302_Init(void)
            {
            DS1302_Write(DS1302_CONTROL_Reg,0x00);//關(guān)閉寫保護
            DS1302_Write(DS1302_SEC_Reg,0x80);//暫停
            DS1302_Write(DS1302_CHARGER_Reg,0xa9);//涓流充電
            DS1302_Write(DS1302_YEAR_Reg,0x04); //年
            DS1302_Write(DS1302_MONTH_Reg,0x12); //月
            DS1302_Write(DS1302_DATE_Reg,0x09); //日
            DS1302_Write(DS1302_DAY_Reg,0x04); //周
            DS1302_Write(DS1302_HR_Reg,0x10); //時
            DS1302_Write(DS1302_MIN_Reg,0x25); //分
            DS1302_Write(DS1302_SEC_Reg,0x00); //秒

            DS1302_Write(DS1302_CONTROL_Reg,0x80);//打開寫保護
            }
            void ReadTime(void)
            {
            uchar data;
            data=DS1302_Read(DS1302_YEAR_Reg);//年
            year0=data0x0f;
            year1=data>>4;
            data=DS1302_Read(DS1302_MONTH_Reg);//月
            month0=data0x0f;
            month1=(data>>4)0x01;
            data=DS1302_Read(DS1302_DATE_Reg);//日
            date0=data0x0f;
            date1=(data>>4)0x03;
            data=DS1302_Read(DS1302_DAY_Reg);//周
            day=data0x07;
            data=DS1302_Read(DS1302_HR_Reg);//時
            hour0=data0x0f;
            hour1=(data>>4)0x03;
            data=DS1302_Read(DS1302_MIN_Reg);//分
            minute0=data0x0f;
            minute1=(data>>4)0x07;
            data=DS1302_Read(DS1302_SEC_Reg);//秒
            second0=data0x0f;
            second1=(data>>4)0x07;
            }



            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉