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

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

?? rtc.c

?? 51單片機C語言常用模塊與綜合系統設計實例精講
?? C
字號:
#include <./Atmel/at89x52.h>
#include <stdio.h>
#include "source.h"
#include <intrins.h>
#include  <absacc.h>
//_nop_();0.65us fosc=18.432
/*i2c max rate: 100k, so delay is needed*/
#define	DELAY	_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_()
#define	I2CDATA			  SDA	/*為I2C的數據口*/
#define	I2CSETDATA		SDA=1	/*設置SDA為1*/
#define	I2CCLRDATA		SDA=0	/*設置SDA為0*/
#define	I2CSETCLK		  SCL=1	/*設置SCL為1*/
#define	I2CCLRCLK		  SCL=0	/*設置SCL為0*/
void	i2c_start(){//為I2C的開始時序列
	I2CSETDATA;
	I2CSETCLK;
	DELAY;
	I2CCLRDATA;
	DELAY;
	I2CCLRCLK;
}
void	i2c_stop(){//為I2C的停止時序
	I2CCLRCLK;
	I2CCLRDATA;
	DELAY;
	I2CSETCLK;
	DELAY;
	I2CSETDATA;
}
void	i2c_write_byte(unsigned char  ch)//為I2C的寫一個字節的時序
{
	unsigned char	i=8;
	while(i--){
		I2CCLRCLK;_nop_();
		if(ch&0x80)
			I2CSETDATA;
		else
			I2CCLRDATA;
		ch<<=1;DELAY;
		I2CSETCLK;DELAY;
	}
	I2CCLRCLK;
}

unsigned char i2c_read_byte(void)//為I2C的讀一個字節的時序
{
	unsigned char	i=8;
	unsigned char	ddata=0;
	I2CSETDATA ;
	while (i--){
		ddata<<=1 ;
		I2CCLRCLK;DELAY;
		I2CSETCLK;DELAY;	
		ddata|=I2CDATA;
	}
	I2CCLRCLK;
	return ddata;
}
bit	i2c_wait_ack(void)//為I2C的等待應答時序
{
	unsigned char	errtime=255;//因故障接收方無ACK 超時值為255
	I2CSETDATA;DELAY;
	I2CSETCLK ;DELAY;
	while(I2CDATA){
		errtime--; 
		if (!errtime){
			i2c_stop();
			return 0;
		}
	}
	I2CCLRCLK;
	return 1;
}
void	i2c_send_ack(void)//為I2C的發送應答時序
{
	I2CCLRDATA; DELAY;
	I2CSETCLK; DELAY;
	I2CCLRCLK;
}

void	i2c_send_notack(void)//為I2C的發送無應答的時序列
{
	I2CSETDATA ; DELAY;
	I2CSETCLK ; DELAY;
	I2CCLRCLK;
}
#define RTCWTIME 0X64
#define RTCRTIME 0X65
#define RTCRHOUR 0X67
#define RTCWSTAT 0X62
#define RTCWINT1 0X68
#define RTCWINT2 0X6A
unsigned char MSBTOLSM(unsigned char ch){//把MSB形式的字節轉化為LSM的形式
	unsigned char tmp=0;
	unsigned char cvt;
	unsigned char i;
	cvt=ch;
	for(i=0;i<8;i++){
		tmp>>=1;
		if(cvt&0x80){
			tmp |=0x80;
		}
		else{
		}
		cvt<<=1;
	}
	return tmp;
}
unsigned char SD2000_set_time(struct RTC_TIME *p){//為SDA200設置時間的函數
	unsigned char ch;
	EA=0;
	i2c_start();
	i2c_write_byte(RTCWTIME);
	ch=MSBTOLSM(p->year);
	if(i2c_wait_ack()){
		i2c_write_byte(ch);
		ch=MSBTOLSM(p->month);
		i2c_wait_ack();
		i2c_write_byte(ch);
		ch=MSBTOLSM(p->dayom);
		i2c_wait_ack();
		i2c_write_byte(ch);
		ch=MSBTOLSM(p->week);
		i2c_wait_ack();
		i2c_write_byte(ch);
		ch=MSBTOLSM(p->hour);
		i2c_wait_ack();
		i2c_write_byte(ch);
		ch=MSBTOLSM(p->minute);
		i2c_wait_ack();
		i2c_write_byte(ch);
		ch=MSBTOLSM(p->second);
		i2c_wait_ack();
		i2c_write_byte(ch);
		i2c_wait_ack();
		i2c_stop();		
	}
	else{
		// RTC write ack error.
	}
	EA=1;
	return 1;
}
unsigned char  SD2000_read_time(struct RTC_TIME *p){//為SDA2000讀時間(年月日時分秒)的函數
	unsigned char ch;
	EA=0;
	i2c_start();
	i2c_write_byte(RTCRTIME);
	if(!i2c_wait_ack()){
		EA=1;
		return 0;//no ack.
	}
	ch=i2c_read_byte();
	i2c_send_ack();
	p->year=MSBTOLSM(ch);
	ch=i2c_read_byte();
	i2c_send_ack();
	p->month=MSBTOLSM(ch);
	ch=i2c_read_byte();
	i2c_send_ack();
	p->dayom=MSBTOLSM(ch);
	ch=i2c_read_byte();
	i2c_send_ack();
	p->week=MSBTOLSM(ch);
	ch=i2c_read_byte();
	i2c_send_ack();
	p->hour=MSBTOLSM(ch);
	p->hour &=0x3f;//24 hour AM/PM bit ivalid.
	ch=i2c_read_byte();
	i2c_send_ack();
	p->minute=MSBTOLSM(ch);
	ch=i2c_read_byte();
	i2c_send_notack();
	p->second=MSBTOLSM(ch);
	i2c_stop();
	EA=1;
}
void SD2000_read_hour(struct RTC_TIME *p){//為SDA2000讀時間(時分秒)的函數
	unsigned char ch;
	i2c_start();
	i2c_write_byte(RTCRHOUR);
	if(i2c_wait_ack()){
		// I2c read ack ok.
	}
	else{
		//I2c read ack error.
		return;
	}
	ch=i2c_read_byte();
	i2c_send_ack();
	ch=MSBTOLSM(ch);
	ch &=0x3f;//24 hour AM/PM bit invalid.
	ch=i2c_read_byte();
	i2c_send_ack();
	ch=MSBTOLSM(ch);
	ch=i2c_read_byte();
	i2c_send_notack();
	ch=MSBTOLSM(ch);
	i2c_stop();
}
void SD2000_set_status(unsigned char ch){//為SDA200的設置狀態函數
	EA=0;
	i2c_start();
	i2c_write_byte(RTCWSTAT);
	if(i2c_wait_ack()){
		//I2c set status ack ok.
	}
	else{
		//I2c set status ack  error.
		EA=1;
		return;
	}
	ch |=0x40;//interrupt 1 output vaild.
	i2c_write_byte(ch);//24hour 1Hz interrupt.
	i2c_wait_ack();
	i2c_stop();
	for(ch=0;ch<250;ch++){
		;//delay;
	}
	i2c_start();
	i2c_write_byte(RTCWINT1);
	if(i2c_wait_ack()){
		//I2c set Freq ack ok.
	}
	else{
		// I2c set Freq ack  error.
		EA=1;
		return;
	}
	i2c_write_byte(0);//f7~f0=0;
	i2c_wait_ack();
	i2c_write_byte(1);//f15=1,f14~f8=0;
	i2c_wait_ack();
	i2c_stop();
	EA=1;
}

void SD2000_set_freq(unsigned char ch1,unsigned char ch2, unsigned char ch3){//為SDA200設置中斷頻率的函數
    unsigned char ch;
	EA=0;
	i2c_start();
	i2c_write_byte(RTCWSTAT);
	if(i2c_wait_ack()){
		//I2c set status ack ok.
	}
	else{
		//I2c set status ack  error.
		EA=1;
		return;
	}
	ch=MSBTOLSM(ch1);
	i2c_write_byte(ch);//24hour 1Hz interrupt.
	i2c_wait_ack();
	i2c_stop();
	for(ch=0;ch<250;ch++){
		;//delay;
	}
	i2c_start();
	i2c_write_byte(RTCWINT1);
	if(i2c_wait_ack()){
		//I2c set Freq ack ok.
	}
	else{
	    // I2c set Freq ack  error.
		EA=1;
		return;
	}
	ch=MSBTOLSM(ch2);
	// f0~f7=%bx",ch
	i2c_write_byte(ch);//f7~f0=0;
	i2c_wait_ack();
	ch=MSBTOLSM(ch3);
	// f8~f15=%bx",ch
	i2c_write_byte(ch);//f15=1,f14~f8=0;
	i2c_wait_ack();
	i2c_stop();
	EA=1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩视频在线观看一区二区三区| 91麻豆福利精品推荐| 亚洲欧美怡红院| 91麻豆精品国产91久久久久久 | av在线综合网| 秋霞成人午夜伦在线观看| 欧美精彩视频一区二区三区| 欧美一区二区三区在线电影| 91在线观看污| 国产一区二区调教| 视频在线观看国产精品| 亚洲欧美日韩久久| 国产人久久人人人人爽| 日韩你懂的在线观看| 欧美午夜精品一区二区三区| 高清不卡在线观看av| 另类小说视频一区二区| 亚洲午夜av在线| 亚洲欧美国产77777| 中文字幕巨乱亚洲| 久久久久久毛片| 欧美一区二区久久| 777xxx欧美| 欧美日韩精品欧美日韩精品| 成人app在线观看| 风间由美性色一区二区三区| 极品少妇xxxx精品少妇| 蜜桃久久精品一区二区| 天天亚洲美女在线视频| 亚洲午夜电影在线观看| 亚洲女子a中天字幕| 国产精品美女久久福利网站| 久久久久久久久久电影| 亚洲精品一区二区三区蜜桃下载| 91精品国产一区二区三区蜜臀| 在线观看日韩电影| 欧美三级中文字幕在线观看| 日本高清不卡视频| 欧洲精品一区二区| 欧美三级视频在线播放| 在线观看亚洲a| 精品视频免费看| 欧美精品第1页| 91精品中文字幕一区二区三区| 69堂精品视频| 欧美一区二区三区免费大片| 日韩午夜在线影院| 欧美成人女星排名| 2020国产精品久久精品美国| 久久久久国产精品麻豆| 欧美激情中文不卡| 一区免费观看视频| 一区二区三区在线观看视频| 亚洲午夜一二三区视频| 日日摸夜夜添夜夜添精品视频 | 欧美三级中文字幕| 4438x亚洲最大成人网| 日韩欧美一区二区免费| 精品国产乱码久久久久久浪潮| ww亚洲ww在线观看国产| 国产精品久久看| 一区二区三区在线看| 日韩高清一区在线| 国产在线视频精品一区| 成人免费视频播放| 一本大道久久精品懂色aⅴ| 欧美日韩高清在线播放| 欧美精品一区男女天堂| 中文av一区特黄| 亚洲国产wwwccc36天堂| 精品在线亚洲视频| 成人高清视频免费观看| 欧美在线影院一区二区| 91精品国产色综合久久不卡蜜臀 | 欧美日韩在线三级| 精品美女在线播放| 亚洲人成伊人成综合网小说| 丝袜诱惑制服诱惑色一区在线观看| 久久er精品视频| av电影在线观看完整版一区二区| 欧美亚洲国产一卡| 欧美精品一区二区三区很污很色的 | 欧美系列一区二区| 精品福利av导航| 亚洲三级在线观看| 石原莉奈一区二区三区在线观看| 国产成人av福利| 欧美日韩国产一区| 中文字幕欧美国产| 日本色综合中文字幕| 成人激情开心网| 日韩午夜av一区| 亚洲精品国产一区二区三区四区在线| 日韩精品一二三区| bt欧美亚洲午夜电影天堂| 欧美久久高跟鞋激| 国产精品久久久久久久裸模| 免费视频最近日韩| 在线亚洲免费视频| 国产午夜亚洲精品羞羞网站| 亚洲午夜成aⅴ人片| 成人av在线资源网站| 日韩一区二区三区视频| 亚洲美腿欧美偷拍| 国产精品99久久久久久似苏梦涵 | 五月天久久比比资源色| jizzjizzjizz欧美| 欧美精品一区二区三区蜜臀| 五月天欧美精品| 欧洲一区在线电影| 中文字幕国产一区二区| 久久丁香综合五月国产三级网站| 色偷偷一区二区三区| 国产欧美日韩另类一区| 国产综合成人久久大片91| 在线播放视频一区| 一区二区三区四区不卡在线 | proumb性欧美在线观看| 久久免费国产精品| 久久精品国产精品亚洲精品| 欧美色区777第一页| 一区二区三区精密机械公司| 99精品久久只有精品| 国产精品污www在线观看| 国内成+人亚洲+欧美+综合在线| 欧美一区二区三区在线| 日本欧美在线观看| 欧美日韩精品二区第二页| 亚洲欧美一区二区不卡| 91一区二区在线| 最新国产精品久久精品| 99久久精品免费| 国产精品久久久久久亚洲伦| 粉嫩久久99精品久久久久久夜 | 午夜成人免费电影| 欧美日韩第一区日日骚| 视频一区二区国产| 91麻豆精品国产91久久久| 日韩成人一级大片| 91精品久久久久久久91蜜桃| 奇米在线7777在线精品| 精品久久人人做人人爰| 国产精品一级在线| 国产精品亲子伦对白| 99精品国产热久久91蜜凸| 中文字幕色av一区二区三区| 91美女片黄在线| 亚洲国产色一区| 91麻豆精品国产91久久久资源速度 | 亚洲一区二区视频在线| 欧美视频一区在线| 石原莉奈一区二区三区在线观看| 日韩片之四级片| 国产激情视频一区二区在线观看 | 欧美色电影在线| 日韩精品91亚洲二区在线观看| 欧美高清视频www夜色资源网| 免费在线观看一区二区三区| 国产亚洲一区二区三区在线观看| 成人免费毛片高清视频| 亚洲另类在线制服丝袜| 欧美日产在线观看| 激情图片小说一区| 国产精品久久久久影院| 在线观看日韩毛片| 美女国产一区二区| 国产精品色噜噜| 欧美日韩国产高清一区二区| 韩国av一区二区| 亚洲欧洲成人自拍| 欧美绝品在线观看成人午夜影视| 免费成人在线播放| 日韩精品一级二级| 亚洲天堂久久久久久久| 麻豆成人免费电影| 欧美久久高跟鞋激| 国产精品影音先锋| 亚洲女同女同女同女同女同69| 欧美日韩不卡在线| 国产99一区视频免费| 亚洲专区一二三| 成人免费观看男女羞羞视频| 久久精品综合网| 99久久久国产精品| 一区二区三区成人| 欧美日韩aaa| 韩国女主播一区| www国产精品av| 不卡视频一二三四| 夜夜爽夜夜爽精品视频| 欧美高清视频一二三区| 国产精品中文字幕一区二区三区| 日本一区二区三级电影在线观看 | 成人精品小蝌蚪| 亚洲人成影院在线观看| 欧美丰满美乳xxx高潮www| 精品在线一区二区三区| 中文字幕在线一区| 欧美军同video69gay| 国产成人av在线影院|