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

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

?? ds1302.c

?? ds1302芯片在51單片機上的應用接口程序 使用keil c51
?? C
字號:
#pragma small
#include <reg52.h>
#define uchar unsigned char
/************************************引腳連接圖*****************************************/
sbit ds1302_clk=P1^0;
sbit ds1302_dat=P1^1;
sbit ds1302_rst=P1^2;

sbit ACC_0 = ACC^0;
sbit ACC_1 = ACC^1;
sbit ACC_2 = ACC^2;
sbit ACC_3 = ACC^3;
sbit ACC_4 = ACC^4;
sbit ACC_5 = ACC^5;
sbit ACC_6 = ACC^6;
sbit ACC_7 = ACC^7;

/*************************************函數說明******************************************/
void Read(void);								//寫DS1302操作
void Write(void);								//讀DS1302操作
uchar ReadRam_Byte(uchar address);    			//從Ram中讀出一個字節
uchar ReadRTC_Byte(uchar address);    			//從DS1302中讀出一個字節
uchar WriteRam_Byte(uchar address,uchar number);    	//向Ram中寫入一個字節
uchar WriteRTC_Byte(uchar address,uchar number);    	//向DS1302中寫入一個字節
void ReadRam(uchar data * buffer,uchar size);    		//從Ram中讀出多個字節
void ReadRTC(uchar data * buffer,uchar size);    		//從DS1302中讀出多個字節
void WriteRam(uchar data * buffer,uchar size);    		//向Ram中寫入多個字節
void WriteRTC(uchar data * buffer,uchar size);    		//向DS1302中寫入多個字節
uchar ReadSec(void);    						//從DS1302中讀出秒字節
uchar ReadMin(void);    						//從DS1302中讀出分字節
uchar ReadHr(void);    						//從DS1302中讀出時字節
uchar ReadDay(void);    						//從DS1302中讀出日字節
uchar ReadMonth(void);    					//從DS1302中讀出月字節
uchar ReadWeek(void);    						//從DS1302中讀出星期字節
uchar ReadYear(void);    						//從DS1302中讀出年字節
void WriteSec(uchar number);    					//向DS1302中寫入秒字節
void WriteMin(uchar number);    				//向DS1302中寫入分字節
void WriteHr(uchar number);    					//向DS1302中寫入時字節
void WriteDay(uchar number);    				//向DS1302中寫入日字節
void WriteMonth(uchar number);    				//向DS1302中寫入月字節
void WriteWeek(uchar number);    				//向DS1302中寫入星期字節
void WriteYear(uchar number);    				//向DS1302中寫入年字節
void WriteControl(uchar number);					//向慢速充電控制寄存器寫入控制字節
void EnableWP(void);    						//禁止寫保護
void DisableWP(void);    						//允許寫保護

void Write(void)					//寫DS1302操作
{
	ds1302_dat = ACC_0; 			//寫DS1302
	ds1302_clk = 1; 				//時鐘上升沿,發送數據有效
	ds1302_clk = 0;				//清零時鐘總線
    ds1302_dat = ACC_1; 
	ds1302_clk = 1; ds1302_clk = 0;
    ds1302_dat = ACC_2; 
	ds1302_clk = 1; ds1302_clk = 0;
    ds1302_dat = ACC_3; 
	ds1302_clk = 1; ds1302_clk = 0;
    ds1302_dat = ACC_4; 
	ds1302_clk = 1; ds1302_clk = 0;
    ds1302_dat = ACC_5; 
	ds1302_clk = 1; ds1302_clk = 0;
    ds1302_dat = ACC_6; 
	ds1302_clk = 1; ds1302_clk = 0;
    ds1302_dat = ACC_7;
	ds1302_clk = 1; ds1302_clk = 0;
}

void Read(void)					//讀DS1302操作
{
    ACC_0 = ds1302_dat; 			//讀取DS1302數據
	ds1302_clk = 1; 				//時鐘上升沿,發送數據有效
	ds1302_clk = 0; 				//清零時鐘總線
    ACC_1 = ds1302_dat; 
	ds1302_clk = 1; ds1302_clk = 0;
    ACC_2 = ds1302_dat; 
	ds1302_clk = 1; ds1302_clk = 0;
    ACC_3 = ds1302_dat; 
	ds1302_clk = 1; ds1302_clk = 0;
    ACC_4 = ds1302_dat; 
	ds1302_clk = 1;ds1302_clk = 0;
    ACC_5 = ds1302_dat; 
	ds1302_clk = 1; ds1302_clk = 0;
    ACC_6 = ds1302_dat; 
	ds1302_clk = 1; ds1302_clk = 0;
    ACC_7 = ds1302_dat; 
	ds1302_rst = 0; ds1302_clk = 1;
}

uchar ReadRam_Byte(uchar address)   	//從RAM中讀出一個字節
{
    ds1302_rst = 0; 				//復位引腳為低電平,所有數據傳送中止
    ds1302_clk = 0; 				//清零時鐘總線
	ds1302_rst = 1;				//復位引腳為高電平,邏輯控制有效
	ACC = address;
   	Write();				//寫DS1302操作
    ds1302_dat = 1;
   	Read();				//讀DS1302操作
    return ACC;
}

uchar ReadRTC_Byte(uchar address)    			//從DS1302中讀出一個字節
{
    ds1302_rst = 0; 				//復位引腳為低電平,所有數據傳送中止
    ds1302_clk = 0; 				//清零時鐘總線
    ds1302_rst = 1;				//復位引腳為高電平,邏輯控制有效
    ACC = address;
    Write();				//對DS1302寫命令字和地址
	ds1302_dat = 1;
	Read();				//讀DS1302操作
    return ACC;					//返回讀取的數據
}

uchar WriteRam_Byte(uchar address,uchar number)    //向RAM中寫入一個字節
{
    ds1302_clk = 0; ds1302_rst = 0;ds1302_rst = 1;
    ACC = address;
	Write();				//對DS1302寫命令字和地址
    ACC = number;
	Write();				//對DS1302寫命令字和數據
    ds1302_rst = 0;
	ds1302_clk = 1;
    return ACC;
}

uchar WriteRTC_Byte(uchar address,uchar number)    //向DS1302中寫入一個字節
{
    ds1302_clk = 0;
    ds1302_rst = 0;ds1302_rst = 1;
    ACC = address;
    ACC |= 0x80;
    Write();				//對DS1302寫命令字和地址
    ACC = number;
	Write();				//對DS1302寫命令字和數據
    ds1302_rst = 0; ds1302_clk = 1;
    return ACC;
}

void ReadRam(uchar data * buffer,uchar size)    //從RAM中讀出多個字節
{
    register uchar a,b;
    ds1302_clk = 0;
    ds1302_rst = 0;
    ds1302_rst = 1;
    ACC = 0xff;					//命令字為FFH
	Write();				//對DS1302寫命令字和地址
    ds1302_dat = 1;
    for(a=0;a<size;a++)
    {
        ACC_0 = ds1302_dat;    
        ds1302_clk = 1; ds1302_clk = 0; ACC_1 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_2 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_3 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_4 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_5 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_6 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_7 = ds1302_dat;
        b = ACC;
        *(buffer+a)=b;
        ds1302_clk = 1; ds1302_clk = 0;
    }
    ds1302_rst = 0; ds1302_clk = 1;
}

void ReadRTC(uchar data * buffer,uchar size)    	//從DS1302中讀出多個字節
{
    register uchar a,b;
    ds1302_clk = 0;
    ds1302_rst = 0;
    ds1302_rst = 1;
    ACC = 0xbf;				//命令字為BFH
	Write();				//對DS1302寫命令字和地址
    ds1302_dat = 1;
    for(a=0;a<size;a++)			//讀出DS1302數據
    {
        ACC_0 = ds1302_dat;    
        ds1302_clk = 1; ds1302_clk = 0; ACC_1 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_2 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_3 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_4 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_5 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_6 = ds1302_dat;
        ds1302_clk = 1; ds1302_clk = 0; ACC_7 = ds1302_dat;
        b = ACC;
        *(buffer+a)=b;
        ds1302_clk = 1; ds1302_clk = 0;
    }
    ds1302_rst = 0;
    ds1302_clk = 1;
}

void WriteRam(uchar data * buffer,uchar size)    //向RAM中寫入多個字節
{
    register uchar a;
    ds1302_clk = 0;
    ds1302_rst = 0;
    ds1302_rst = 1;
    ACC = 0xfe;				//命令字為FE
    Write();				//對DS1302寫命令字和地址
    for(a=0;a<size;a++)
    {
        ACC = *(buffer+a);
        Write();			//對DS1302寫數據
    }    
    ds1302_rst = 0;
    ds1302_clk = 1;
}

void WriteRTC(uchar data * buffer,uchar size)    //向DS1302中寫入多個字節
{//注意:連續寫DS1302只能是8個字節一起寫
    register uchar a;
    ds1302_clk = 0;
    ds1302_rst = 0;
    ds1302_rst = 1;
    ACC = 0xbe;				//命令字為BEH
    Write();				//對DS1302寫命令字和地址
    for(a=0;a<size;a++)
    {
        ACC = *(buffer+a);
        Write();			//對DS1302寫數據
    }
    ds1302_rst = 0;
    ds1302_clk = 1;
}

uchar ReadSec(void)    			//從DS1302中讀出秒字節
{
    return ReadRTC_Byte(0x81);
}

uchar ReadMin(void)    			//從DS1302中讀出分字節
{
    return ReadRTC_Byte(0x83);
}

uchar ReadHr(void)    			//從DS1302中讀出時字節
{
    return ReadRTC_Byte(0x85);
}

uchar ReadDay(void)   			//從DS1302中讀出日字節
{
    return ReadRTC_Byte(0x87);
}

uchar ReadMonth(void)    			//從DS1302中讀出月字節
{
    return ReadRTC_Byte(0x89);
}

uchar ReadWeek(void)    			//從DS1302中讀出星期字節
{
    return ReadRTC_Byte(0x8B);
}

uchar ReadYear(void)    			//從DS1302中讀出年字節
{
    return ReadRTC_Byte(0x8D);
}

void WriteSec(uchar number)    		//向DS1302中寫入秒字節
{
    WriteRTC_Byte(0x80,number);
}

void WriteMin(uchar number)    		//向DS1302中寫入分字節
{
    WriteRTC_Byte(0x82,number);
}

void WriteHr(uchar number)    		//向DS1302中寫入時字節
{
    WriteRTC_Byte(0x84,number);
}

void WriteDay(uchar number)    		//向DS1302中寫入日字節
{
    WriteRTC_Byte(0x86,number);
}

void WriteMonth(uchar number)    	//向DS1302中寫入月字節
{
    WriteRTC_Byte(0x88,number);
}

void WriteWeek(uchar number)    	//向DS1302中寫入星期字節
{
    WriteRTC_Byte(0x8A,number);
}

void WriteYear(uchar number)    	//向DS1302中寫入年字節
{
    WriteRTC_Byte(0x8C,number);
}

void WriteControl(uchar number)    	//向慢速充電控制寄存器寫入控制字節
{
    WriteRTC_Byte(0x90,number);
}

void DisableWP(void)    			//禁止寫保護
{
    WriteRTC_Byte(0x8E,0);
}

void EnableWP(void)    			//允許寫保護
{
    WriteRTC_Byte(0x8E,0x80);
}

void main(void)					//主程序
{
    uchar sec,min,hr,day,month,week,year;
    uchar data buffer1[32] = 
{32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63};
    uchar data buffer2[8] = {45,45,15,13,3,2,01,0};
    ReadRTC(buffer2,8);
    DisableWP();				//禁止寫保護
    WriteControl(0xaa);			//向慢速充電控制寄存器寫入控制字節
    WriteRam(buffer1,31);			//寫DS1302RAM
    WriteRTC(buffer2,8);			//寫DS1302時鐘
    EnableWP();				//允許寫保護
    ReadRam(buffer1,31);			//讀DS1302RAM
    ReadRTC(buffer2,8);			//讀DS1302時鐘
    sec = ReadSec();				//讀秒
    min = ReadMin();				//讀分
    hr = ReadHr();				//讀小時
    day = ReadDay();				//讀日
    month = ReadMonth();			//讀月
    week = ReadWeek();			//讀星期
    year = ReadYear();			//讀年
    ACC = 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
www.成人网.com| www国产成人免费观看视频 深夜成人网| 另类调教123区| 亚洲综合男人的天堂| 最新热久久免费视频| 国产日韩欧美a| 亚洲国产精品av| 国产精品二区一区二区aⅴ污介绍| 欧美国产精品一区二区三区| 国产欧美一二三区| 中文字幕字幕中文在线中不卡视频| 亚洲天堂精品视频| 亚洲综合视频在线观看| 亚洲国产精品久久人人爱| 石原莉奈一区二区三区在线观看| 日日夜夜一区二区| 久久激情综合网| 成人高清免费在线播放| 97se狠狠狠综合亚洲狠狠| 欧美日精品一区视频| 日韩一区二区麻豆国产| 欧美激情一二三区| 亚洲欧美韩国综合色| 日韩—二三区免费观看av| 国产伦精品一区二区三区在线观看 | 91在线视频在线| 欧美日本视频在线| 26uuu精品一区二区在线观看| 国产精品天干天干在线综合| 尤物在线观看一区| 国内久久婷婷综合| 色8久久精品久久久久久蜜| 欧美日韩中文国产| 国产清纯白嫩初高生在线观看91| 亚洲精品乱码久久久久久日本蜜臀| 亚洲一本大道在线| 国产精品一级片在线观看| 在线免费观看一区| 综合激情网...| 精品一区二区免费| 欧美中文字幕不卡| 亚洲国产高清不卡| 日欧美一区二区| 99riav一区二区三区| 日韩亚洲欧美高清| 亚洲一区精品在线| 成人激情开心网| 久久亚洲综合色一区二区三区| 亚洲精品国久久99热| 国产毛片一区二区| 欧美一级夜夜爽| 亚洲一区二区三区四区的| 国产成人午夜电影网| 欧美变态tickle挠乳网站| 亚洲一区二区三区在线| 不卡av免费在线观看| 久久蜜桃av一区二区天堂| 欧美aaaaa成人免费观看视频| 日本道免费精品一区二区三区| 欧美va在线播放| 国产91在线|亚洲| 日韩欧美在线1卡| 一区二区三区国产精品| 成人看片黄a免费看在线| 日韩欧美国产一二三区| 人人狠狠综合久久亚洲| 欧美三级在线看| 亚洲一区二区三区中文字幕| 91丨porny丨蝌蚪视频| 国产精品乱人伦| 国产精品影视网| 久久久99久久| 国产制服丝袜一区| 日韩视频一区在线观看| 人人超碰91尤物精品国产| 日韩一区二区三区电影在线观看| 国产日韩欧美精品在线| 欧美视频在线不卡| 欧美日韩一区二区三区四区五区| 麻豆91在线观看| 国产蜜臀av在线一区二区三区 | 欧美日韩精品欧美日韩精品一| 一本一道久久a久久精品综合蜜臀| 经典三级视频一区| 国产99久久久国产精品免费看| 丝瓜av网站精品一区二区| 亚洲欧美日韩综合aⅴ视频| 欧美www视频| 久久久美女艺术照精彩视频福利播放| 亚洲人成7777| 7777精品久久久大香线蕉| 国产专区综合网| 亚洲日本在线看| 91丨九色丨蝌蚪富婆spa| 亚洲欧美日韩在线播放| 欧美综合欧美视频| 视频精品一区二区| 久久天堂av综合合色蜜桃网| 国产综合久久久久久鬼色| 中文字幕欧美国产| 色婷婷亚洲婷婷| 日韩影院免费视频| 欧美不卡一区二区| 97精品超碰一区二区三区| 夜色激情一区二区| 欧美大尺度电影在线| 成人黄色片在线观看| 午夜精品视频一区| 亚洲国产成人午夜在线一区| 欧美三级在线视频| 91蝌蚪国产九色| 亚洲成av人片一区二区三区| 精品国产伦理网| 日本电影欧美片| 国内精品久久久久影院一蜜桃| 亚洲美女在线一区| 精品久久久久久最新网址| 91免费国产在线观看| 久久99国产精品久久99 | 亚洲午夜av在线| 亚洲精品一线二线三线无人区| 91免费看片在线观看| 国内精品不卡在线| 水蜜桃久久夜色精品一区的特点| 中文字幕欧美三区| 日韩欧美国产电影| 欧美午夜精品电影| 成人a区在线观看| 激情文学综合插| 老汉av免费一区二区三区| 亚洲图片欧美视频| 亚洲欧美日韩综合aⅴ视频| 欧美激情一区二区三区四区| 日韩免费观看2025年上映的电影| 91在线高清观看| 国产精品一区二区三区乱码| 国产ts人妖一区二区| 美女网站视频久久| 午夜精品福利在线| 樱桃国产成人精品视频| 国产精品网站在线| 欧美精品一区二区精品网| 3atv一区二区三区| 欧美性猛交xxxxxxxx| 91麻豆免费看| 91猫先生在线| 在线精品视频免费播放| 成人高清免费观看| 99久久精品免费观看| 成人av综合在线| 成人综合日日夜夜| 成人午夜在线免费| 国产成人综合亚洲网站| 国内精品伊人久久久久av影院 | 亚洲妇女屁股眼交7| 亚洲摸摸操操av| 自拍偷拍欧美精品| 综合色中文字幕| 一区二区不卡在线播放 | 欧美精品视频www在线观看| 欧美性猛交xxxx乱大交退制版 | 美女脱光内衣内裤视频久久网站 | 在线日韩av片| 欧美午夜精品一区| 欧美日韩不卡在线| 日韩一级成人av| 国产日韩欧美一区二区三区综合| 欧美激情资源网| 亚洲精品免费一二三区| 午夜免费久久看| 国产成人午夜精品5599| 一本色道久久综合亚洲精品按摩| 在线欧美一区二区| 日韩精品一区二| 国产精品久久二区二区| 一区二区三区四区精品在线视频| 性做久久久久久免费观看欧美| 蜜臀久久99精品久久久久宅男 | 6080yy午夜一二三区久久| 日韩欧美激情四射| 国产精品免费丝袜| 午夜精品福利一区二区三区蜜桃| 伦理电影国产精品| 一本大道av一区二区在线播放| 91精品婷婷国产综合久久性色| 国产亚洲精品中文字幕| 夜夜嗨av一区二区三区四季av| 激情综合网激情| 欧美三级一区二区| 欧美国产成人在线| 蜜臀a∨国产成人精品| 91在线丨porny丨国产| 国产精品久久久久久久久免费丝袜| 一区二区三区欧美视频| 国产精品1024| 欧美巨大另类极品videosbest | 成熟亚洲日本毛茸茸凸凹| 欧美视频一区二区| 国产精品美女久久久久aⅴ| 香蕉久久夜色精品国产使用方法|