c語言閏年的判斷條件DS1302,DS1302驅動程序(平年和閏年天數自動調整)

/*********************************************************************************

1.本程序能夠顯示年,月,日,時,分,

秒,星期七個參數.

2.時間和日期可調。可分別完成年,月,日,時,分,

秒六個參數的調整。支持平年和閏年天數的自動調整。

實驗名稱:時鐘芯片DS12C887演示程序

晶振:內部? 8M

接線方法:

1.PA0-PA2分別接DS1302的CS,TADA,SLK.

*********************************************************************************/

#include#include#define uchar unsigned char

#define uint unsigned int

#define ds1302_PIN???????????? PINA&BIT(PA1)

#define ds1302_DDR???????????? DDRA

#define ds1302_DDR_OUT???????? ds1302_DDR|=BIT(PA0)|BIT(PA1)|BIT(PA2)

#define ds1302_DDR_IN????????? ds1302_DDR&=~(BIT(PA1)|BIT(PA2))

#define ds1302_PORT??????????? PORTA

#define ds1302_RST_H??? ??? ds1302_PORT|= BIT(PA0)? //片選

#define ds1302_RST_L??? ??? ds1302_PORT&= ~BIT(PA0)

#define ds1302_DAT_H??? ??? ds1302_PORT|= BIT(PA1)? //數據

#define ds1302_DAT_L??? ??? ds1302_PORT&= ~BIT(PA1)

#define ds1302_CLK_H??? ??? ds1302_PORT|= BIT(PA2)? //時鐘

#define ds1302_CLK_L??? ??? ds1302_PORT&= ~BIT(PA2)

const char start_time[]={0x00,0x00,0x00,0x01,0x01,0x07,0x06};?? //初始值;

char month_p[13]={0,31,28,31,30,31,30,31,31,30,31,30,31,};//平年

char month_y[13]={0,31,29,31,30,31,30,31,31,30,31,30,31,};//閏年

uchar second=0;

uchar minute=0;

uchar hour=0;

uchar day=1;

uchar month=1;

uchar year=6;

uchar week=7;

uchar month_max=0;//每月最大天數

/****************DS1302子程序***********************/

void ds1302_inputbyte(uchar CD)? //寫入一字節數據

{

uchar i,mid=0;

for (i=8;i>0;i--)

{

mid=CD&0x01;

if (mid==0)

ds1302_DAT_L;

else

ds1302_DAT_H ;

ds1302_CLK_H ;

ds1302_CLK_L ;

CD=CD>>1;

}

}

uchar ds1302_outputbyte(void)? //讀取一字節數據

{

uchar i,mid=0;

for (i=8;i>0;i--)

{

ds1302_DDR_IN;

mid=mid>>1;

if ((ds1302_PIN)==0)

mid&=~BIT(PB7);

else

mid|=BIT(PB7);

ds1302_DDR_OUT;

ds1302_CLK_H ;

ds1302_CLK_L ;

}

return(mid);

}

void w1302(uchar ucAddr,uchar ucDa)?? //寫入數據

{

ds1302_DDR_OUT ;

ds1302_RST_L;

ds1302_CLK_L;

ds1302_RST_H;

ds1302_inputbyte(ucAddr);

ds1302_inputbyte(ucDa);

ds1302_CLK_H ;

ds1302_RST_L;

}

uchar r1302(uchar ucAddr)??????? //讀取數據

{

uchar ucDa;

ds1302_DDR_OUT ;

ds1302_RST_L;

ds1302_CLK_L ;

ds1302_RST_H ;

ds1302_inputbyte(ucAddr);

ucDa=ds1302_outputbyte();

ds1302_CLK_H ;

ds1302_RST_L;

return(ucDa);

}

//設置初始時間

//格式:秒,分,時,日,月,星期,年

void set1302()

{

uchar i;

uchar ucaddr=0x80;

w1302(0x8e,0x00);//寫允許

w1302(0x90,0xa6);//打開充電功能

for (i=0;i<7;i++)

{

w1302(ucaddr,start_time[i]);

ucaddr+=2;

}

w1302(0x8e,0x80);//寫禁止

}

//讀取當前時間

void get1302()

{

uchar i=0,ucaddr=0x81;

uchar uctimer[6];

char sec1,day1,mon1,year1,min1,hour1;

for (i=0;i<7;i++)

{

uctimer[i]=r1302(ucaddr);

ucaddr+=2;

}

sec1=uctimer[0];//十進制到二進制的調整

second=((sec1&0x70)>>4)*10+(sec1&0x0f);

min1=uctimer[1];

minute=((min1&0x70)>>4)*10+(min1&0x0f);

hour1=uctimer[2];

hour=((hour1&0x30)>>4)*10+(hour1&0x0f);

day1=uctimer[3];

day=((day1&0x30)>>4)*10+(day1&0x0f);

mon1=uctimer[4];

month=((mon1&0x10)>>4)*10+(mon1&0x0f);

week=uctimer[5];

year1=uctimer[6];

year=((year1&0x70)>>4)*10+(year1&0x0f);

}

void second_set()?? //調秒

{

w1302(0x8e,0x00);

w1302(0x80,((second/10)<<4)+(second%10));

w1302(0x8e,0x80);

}

void minute_set()? //調分

{

w1302(0x8e,0x00);

w1302(0x82,((minute/10)<<4)+(minute%10));

w1302(0x8e,0x80);

}

void hour_set()? //調時

{

w1302(0x8e,0x00);

w1302(0x84,((hour/10)<<4)+(hour%10));

w1302(0x8e,0x80);

}

void year_set()? //調年

{

year++;

if (year>69)

year=6;

if (year%4==0)

month_max=month_y[month];

else

month_max=month_p[month];

if (day>month_max)

day=month_max;

day_set();

w1302(0x8e,0x00);

w1302(0x8c,((year/10)<<4)+(year%10));

w1302(0x8e,0x80);

}

void month_set()? //調月

{

month++;

if (month>12)

month=1;

if (year%4==0)

month_max=month_y[month];

else

month_max=month_p[month];

if (day>month_max)

day=month_max;

day_set();

w1302(0x8e,0x00);

w1302(0x88,((month/10)<<4)+(month%10));

w1302(0x8e,0x80);

}

void day_set()? //調日

{

uchar i=0;

uchar j=0;

uchar month_m=0;

uint day_n=0;

day_n=0;

for (i=6;i? {

if (i?? {

if (i%4==0)

day_n=day_n+366;

else

day_n=day_n+365;

}

if (i==year)

{

if (month>1)

{

for (j=1;j???? ?{

if (year%4==0)

month_m=month_y[j];

else

month_m=month_p[j];

day_n=day_n+month_m;

}

}

}

}

if (year%4==0)

month_max=month_y[month];

else

month_max=month_p[month];

if (day>month_max)

day=1;

week=(day_n+day-1)%7;

if (week==0)

week=7;

w1302(0x8e,0x00);

w1302(0x86,((day/10)<<4)+(day%10));

w1302(0x8a,week);

w1302(0x8e,0x80);

}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/533160.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/533160.shtml
英文地址,請注明出處:http://en.pswp.cn/news/533160.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

android 圖片切割代碼,Android用clip剪切圖像資源

使用clip剪切圖像資源可以做進度條&#xff0c;圖像慢慢展開的效果&#xff0c;他使用以下幾個屬性來控制效果&#xff1a;android:drawable&#xff1a;指定要剪切的原圖像。android:clipOrientation&#xff1a;截取的方向。可取的值&#xff1a;horizontal和vertical。分別表…

android gradle錯誤,Android studio gradle錯誤與頂級異常

我最近更新了我的Android Studio,從那以后我的項目沒有構建...我得到錯誤,如下面的錯誤:Error Code:1Output:UNEXPECTED TOP-LEVEL EXCEPTION:com.android.dx.cf.iface.ParseException:class name (org/pervasivesystems/mobilehealth/activities/AppSettingsActivity$AppSetti…

Android中列表動態刪除item,如何刪除Android ExpandableListView中某個group item的child item?...

自定義了一個expandablelistview 想要刪除其中的子項list使用remove方法把list中的指定項刪除了11-09 21:04:20.585: I/MainActivity(13557): childData[{child_textsecond}, {child_textthird}]但是在expandablelistview界面顯示中&#xff0c;并沒有變化,并且還有list溢出報錯…

android 首頁廣告顯示不出來的,android – Admob插頁式廣告(全屏)不會顯示

您沒有為interstitialAd調用loadAd().廣告插播廣告應在您展示廣告之前加載.interstitialAd.loadAd(adRequest);你也應該在調用show()之前檢查它是否已加載.它可能無法立即使用,您可能希望在調用show之前提前加載它.if(mInterstitial.isLoaded()){mInterstitial.show();AdReques…

android新建項目錯誤,新建Android項目出錯

新建Android項目出以下的錯誤&#xff1a;C:\Users\txxs\workspace\4sd\res\values\styles.xml:7: error: Error retrieving parent for item: No resource found that matches the given name Theme.AppCompat.Light.[2016-11-23 11:57:46 - 4sd][2016-11-23 11:57:46 - 4sd] …

android 圖片 切換,Android 應用開發筆記 - 切換圖片(ImageSwitcher)

在面板拖拽圖標&#xff0c;然后更改相關屬性(Properties)&#xff0c;如下&#xff1a;android:id"id/imgSwit01"android:layout_width"wrap_content"android:layout_height"wrap_content" />ImageSwitcher使用的是setFactory()方法&#xf…

android layout.inflater,Android?-?LayoutInflater

在實際開發中LayoutInflater這個類還是非常有用的&#xff0c;它的作用類似于findViewById()。不同點是LayoutInflater是用來找res/layout/下的xml布局文件&#xff0c;并且實例化&#xff1b;而findViewById()是找xml布局文件下的具體widget控件(如Button、TextView等)。具體作…

android preferenceactivity 源碼,PreferenceActivity PreferenceScreen (3.0/API 11 以前)

Android提供了一個XML驅動的框架&#xff0c;用于為應用程序創建系統樣式的PreferenceScreen.(3.0/API 11 以前)是這樣使用的看代碼&#xff1a;mypreference.xmlandroid:key"PREF_AUTO_REFRESH"android:defaultValue"true"android:summary"select to…

wps 將html轉為word,用WPS快速將網頁內容轉換為WORD文檔

當過學生的都知道&#xff0c;有時查找資料&#xff0c;看到圖文并茂的網頁想要把它Copy在WORD文檔中&#xff0c;那么圖片和文字相互參雜&#xff0c;想要保存下來很復雜&#xff0c;但是如果用WPS的話&#xff0c;一切就會很簡單的&#xff0c;下面來看看WPS是怎么辦到的。1.…

鴻蒙明年可以在手機上用嗎,華為王成錄:鴻蒙已滿足在手機上使用,明年一二月份向部分用戶開放...

在2019年的華為開發者大會上&#xff0c;華為消費者業務CEO余承東正式對外發布了基于微內核的分布式操作系統-HarmonyOS(鴻蒙OS)&#xff0c;余承東表示&#xff0c;鴻蒙OS的出發點和Android、iOS都不一樣&#xff0c;它是一款全新的基于微內核的面向全場景的分布式操作系統&am…

go語言 doc轉換html,go語言使用wkhtmltopdf工具將html轉成pdf

最近收到網友的提問后端怎么把html轉成pdf文件&#xff0c;于是我就把我以前做的例子發出來給大家參考一下&#xff0c;如果對你有幫助的話請點個贊1.首先選擇適合自己的系統下載wkhtmltopdf工具mac下載后安裝成功會自動添加到環境變量 直接執行 wkhtmltopdf -V 測試是否安裝成…

java sound 多線程同一音頻文件_Java在編程語言中占據何等優勢?

現在是信息時代&#xff0c;出現了各種各樣的行業&#xff0c;在這些眾多行業里面&#xff0c;程序員算是高薪職業。在國內程序員的薪水要比其他行業高一些。也正是如此高薪的誘惑和充滿挑戰性的工作&#xff0c;令程序員近幾年來成為了備受歡迎的職業。程序員日常的工作大多是…

dlna和miracast可以共存嗎_高考化學必備之離子共存問題

發生復分解反應&#xff11;、有氣體產生。H與CO32ˉ、HCO3ˉ、SO32ˉ、HSO3ˉ、S2ˉ、HSˉ等不能共存如CO32-、S2-、HS-、HSO3-、等易揮發的弱酸的酸根與H不能大量共存&#xff0c;主要是由于CO32-&#xff0b;2H&#xff1d;CO2↑&#xff0b;H2O、HS-&#xff0b;H&#xff…

html向上浮動的方式,JS 實現Div向上浮動的實現代碼

Html 及 JS 代碼如下&#xff1a;復制代碼 代碼如下:style"position: absolute; width: 100px;">我們var newsOne document.getElementById("newsOne");newsOne.style.bottom 0;newsOne.style.left window.screen.availWidth - 100;var bottom 0;fu…

perl數組硬引用_Perl 繼續前行,Perl 7 將是下一代(硬核老王點評版)

它是默認帶有現代行為的 Perl 5&#xff0c;將為以后更大的變化奠定基礎。來源&#xff1a;https://linux.cn/article-12349-1.html作者&#xff1a;Brian D Foy譯者&#xff1a;Xingyu.Wang(本文字數&#xff1a;5043&#xff0c;閱讀時長大約&#xff1a;8 分鐘)近日 召開的 …

html文檔加載,html加載

SQL中進行Join操作時&#xff0c;可以按照以下步驟進行優化。為了方便說明&#xff0c;設表A和表B&#xff0c;且A、B表都有個名為name的列。對A、B表進行join操作。 估計表的大小。 根據每次加載數據的大小&#xff0c;來估計表大小。 也可以在Hive的數據庫存儲路徑下直接查看…

spark將rdd轉為string_八、Spark之詳解Tranformation算子

RDD中的所有轉換(Transformation)算子都是延遲加載的&#xff0c;也就是說&#xff0c;它們并不會直接計算結果。相反的&#xff0c;它們只是記住這些應用到基礎數據集(例如一個文件)上的轉換動作。只有當發生一個要求返回結果給Driver的動作時&#xff0c;這些轉換才會真正運行…

html的過渡屬性,CSS3屬性transition(過渡)多屬性詳解

transform呈現的是一種變形結果&#xff0c;而transition呈現的是一種過渡&#xff0c;通俗點說就是一種動畫轉換過程&#xff0c;如漸顯、漸弱、動畫快慢等。transition和transform是兩種不同的動畫模型。transition屬性是一個簡寫屬性&#xff0c;用于設置四個過渡屬性transi…

2021年呼和浩特高考段考成績查詢,2019屆呼和浩特市高三段考成績排名分析

原標題&#xff1a;2019屆呼和浩特市高三段考成績排名分析不忘初心 天道酬勤╳?校對&#xff1a;劉姝坤?文稿&#xff1a;王濤老師?聲明&#xff1a;如有轉載請聯系并注明出處好樂(巨人)教育2019高三普文理集訓段考班火熱招生中全呼市唯一一家吃住學一體封閉式管理的學校唯一…

dj打碟怎么學_學DJ要不要去培訓學校?

酒吧學DJ打碟他有很多種的說法&#xff0c;有些酒吧他是自己招學生&#xff0c;當這樣的酒吧在現今是挺少的&#xff0c;也有&#xff0c;但要求很高。還有一種就是說你自己在酒吧里上班的人自己招私人徒弟什么的&#xff0c;那也是就學DJ打碟&#xff0c;那一搬酒吧都是怎么學…