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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? i2cclockandtms320lf2407.c

?? I2C串行日歷時(shí)鐘與TMS320LF2407的接口及應(yīng)用,該程序?qū)崿F(xiàn)對I2C總線日歷時(shí)鐘芯片PCF8583的讀寫操作.
?? C
字號:
I2C串行日歷時(shí)鐘與TMS320LF2407的接口及應(yīng)用
  源程序代碼:
// 該程序?qū)崿F(xiàn)對I2C總線日歷時(shí)鐘芯片PCF8583的讀寫操作 
#include  "register.h"
// 系統(tǒng)初始化子程序 
void	sysinit()
{
	asm( " setc INTM ");			// 關(guān)閉總中斷 
	asm( " clrc SXM ") ;			// 抑制符號擴(kuò)展 
	asm( " clrc OVM ") ;			// 累加器結(jié)果正常溢出 
	asm( " clrc CNF ") ;			// B0被配置為數(shù)據(jù)空間 
	*SCSR1=0X81FE;			// CLKIN=6M,CLKOUT=24M 
	*WDCR=0X0E8	;			// 不使能看門狗 
	*IMR=0X00;				// 禁止所有中斷 
	*IFR=0X0FFFF;			// 清除所有的中斷標(biāo)志 
	WSGR=0x0FFFF;			// 不使能所有的等待狀態(tài) 
}
// 輸入輸出口初始化子程序 
void	IOINIT()
{
*MCRB=*MCRB&0X0FFD7;		// 配置IOPC3和IOPC5為一般的I/O口方式 
*PCDATDIR=*PCDATDIR|0X02828; // 配置IOPC3和IOPC5為輸出方式,且SCL=SDA=1 
} 
// 軟件延時(shí)子程序 
void delay()
{
int  i;
for(i=0X07D;i--;)	{	i=i;}
}
// 啟動(dòng)I2C總線子程序 
void	START()
{
*PCDATDIR=*PCDATDIR|0X028;		// SDA=SCL=1 
delay( );							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR&0X0FFDF;	// SDA=0 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
}
// 發(fā)送字節(jié)子程序 
void	TRANSMIT(TRAN)
int    TRAN;
{
int flag,sz;						// 定義需要的局部變量 
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0    
delay();							// 軟件延時(shí),以使時(shí)序匹配 
for(flag=0x0080;flag!=0x00;flag=flag/2)	{
sz=TRAN&flag;				// 屏蔽掉不需要的位 
if(sz==0)	*PCDATDIR=*PCDATDIR&0X0FFDF;// 如果相應(yīng)的位為0,則SDA=0 
else	*PCDATDIR=*PCDATDIR|0X020;// 如果相應(yīng)的位為1,則SDA=1 
delay();						// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR|0X08;	// SCL=1 
delay();						// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR&0X0FFF7;	// SCL=0 
delay();						// 軟件延時(shí),以使時(shí)序匹配 
}
}
// 從機(jī)(即PCF8583芯片)應(yīng)答子程序。返回值為0時(shí),代表操作成功;返回值為1時(shí),代表操作失敗 
int	SLAVE_ACK()
{
int    sz,k=0;					// 定義所需要的局部變量 
*PCDATDIR=*PCDATDIR|0X0020;		// SDA=1 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR&0X0DFFF;	// 設(shè)置IOPC5(SDA)為輸入 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR|0X08;		// SCL=1 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
sz=*PCDATDIR&0X0020;				// 檢測數(shù)據(jù)位 
if(sz==0X0020)  k=1;				// 如果數(shù)據(jù)位為1,則證明失敗,則令k=1 
else  k=0;  	 					// 如果數(shù)據(jù)位為0,則證明成功,則保持k=0不變 
*PCDATDIR=*PCDATDIR|0X2000;		// 設(shè)置IOPC5(SDA)為輸出 
*PCDATDIR=*PCDATDIR&0X0FFD7;	// SCL=SDA=0 
return(k);
}
// I2C停止子程序 
void    STOP()
{ 
*PCDATDIR=*PCDATDIR&0X0FFDF;	// SDA=0 
delay();
*PCDATDIR=*PCDATDIR|0X0008;		// SCL=1 
delay( );							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR|0X0020;		// SDA=1 
}
// 字節(jié)寫子程序,即向I2C器件寫1個(gè)字節(jié)的數(shù)據(jù),入口為地址BYTE_ADDR和需要寫入的字節(jié)
// 內(nèi)容T_DATA。返回值為0時(shí),代表操作成功;返回值為1時(shí),代表操作失敗 
int	BYTE_WR(BYTE_ADDR,T_DATA)
int	BYTE_ADDR,T_DATA;
{
int  k;
START();							// 啟動(dòng)I2C總線 
TRANSMIT(0X0A0);					// 送寫控制字 
k=SLAVE_ACK();					// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	 TRANSMIT(BYTE_ADDR);	// 送出地址 
if(k==0)	 k=SLAVE_ACK();			// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	TRANSMIT(T_DATA);		// 送出需要保存的數(shù)據(jù) 
if(k==0)	k=SLAVE_ACK();			// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	STOP();					// 設(shè)置停止?fàn)顟B(tài) 
return(k);
}
// 接收一個(gè)字節(jié)子程序,出口為接收到的數(shù)據(jù)R_DATA 
int  RECEIVE()	
{
int  R_DATA=0,sz,i;
*PCDATDIR=*PCDATDIR&0X0DFFF;	// 設(shè)置IOPC5(SDA)為輸入 
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0 
delay();							// 軟件延時(shí),以使時(shí)序匹配  
for(i=0;i<8;i++)	{
R_DATA=R_DATA<<1;			// R_DATA左移一位 
*PCDATDIR=*PCDATDIR|0X0008;	// SCL=1 
delay();						// 軟件延時(shí),以使時(shí)序匹配   
sz=*PCDATDIR&0X0020;			// 取得相應(yīng)的數(shù)據(jù)位 
if(sz==0)	 R_DATA=R_DATA&0XFFFE;	// 如果數(shù)據(jù)位為0,則R_DATA最低位清0 
else  R_DATA=R_DATA|0x0001;		// 如果數(shù)據(jù)位為1,則R_DATA最低位置1 
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0 
delay();							// 軟件延時(shí),以使時(shí)序匹配  
}
*PCDATDIR=*PCDATDIR|0X2000;		// 設(shè)置IOPC5(SDA)為輸出 
return(R_DATA);					// 返回接收的字節(jié) 
}
// 主機(jī)無應(yīng)答信號子程序 
void	NO_ACK()
{
*PCDATDIR=*PCDATDIR|0X0008;		// SCL=1 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0 
}
// 主機(jī)應(yīng)答子程序 
void	MASTER_ACK()
{
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0 
*PCDATDIR=*PCDATDIR&0X0FFDF;	// SDA=0 
*PCDATDIR=*PCDATDIR|0X0008;		// SCL=1 
delay();							// 軟件延時(shí),以使時(shí)序匹配 
*PCDATDIR=*PCDATDIR&0X0FFF7;		// SCL=0 
}
// 字節(jié)讀子程序,即從I2C器件讀出1個(gè)字節(jié)的數(shù)據(jù),入口為需要讀出的地址BYTE_ADDR,出口
// 為讀出的數(shù)據(jù)R_DATA,通過C語言的參數(shù)傳遞功能實(shí)現(xiàn)。返回值為0X0FFFF時(shí),表示操作失敗;
// 否則操作成功 
int	BYTE_RD(int  BYTE_ADDR)
{
int	k,R_DATA;
START();						// 啟動(dòng)I2C總線 
TRANSMIT(0XA0);				// 送出寫控制字,以寫入地址字節(jié) 
k=SLAVE_ACK( );				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	TRANSMIT(BYTE_ADDR);// 送出需要讀出數(shù)據(jù)的地址 
k=SLAVE_ACK();				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)  {
START( );					// 啟動(dòng)I2C總線 
TRANSMIT(0XA1);
}							// 送出讀控制字 
k=SLAVE_ACK();				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	{
R_DATA=RECEIVE();		// 接收PCF8583發(fā)出的數(shù)據(jù) 
NO_ACK();				// 主機(jī)不作應(yīng)答 
STOP();					// 設(shè)置停止?fàn)顟B(tài) 
}
if(k==0)  return(R_DATA);			// 返回一個(gè)讀出的數(shù)據(jù) 
else   return(0X0FFFF);			// 如果整個(gè)讀過程有誤,則返回0X0FFFF 
}
// 連續(xù)寫子程序,入口為需要寫的起始地址ADDR,存儲需要寫入數(shù)據(jù)的數(shù)組的首地址ARRY,需要
// 寫入的數(shù)據(jù)的個(gè)數(shù)N 
int	CON_WR(ADDR,ARRAY,N)
int   ADDR,*ARRAY,N;
{
int	k;
START();						// 啟動(dòng)I2C總線 
TRANSMIT(0X0A0);				// 送寫控制字 
k=SLAVE_ACK();				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	 TRANSMIT(ADDR);	// 送出要寫數(shù)據(jù)的起始地址 
if(k==0)	 k=SLAVE_ACK();		// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	 {
for(;N>0;N--,ARRAY++)	{ 
TRANSMIT(*ARRAY);	// 送出需要保存的數(shù)據(jù),保存在數(shù)組ARRAY中 
k=SLAVE_ACK();		// 從機(jī)(即PCF8583芯片)應(yīng)答,地址自動(dòng)加1 
if(k==1)	break;
}
}
STOP();						// 設(shè)置停止?fàn)顟B(tài) 
return(k);
}
// 連續(xù)讀子程序,入口為需要讀的起始地址ADDR,存儲讀出數(shù)據(jù)的數(shù)組首地址ARRY,需要讀出的
// 數(shù)據(jù)的個(gè)數(shù)N 
int	CON_RD(ADDR,ARRAY,N)
int   ADDR,*ARRAY,N;
{
int	k,R_DATA;
START();						// 啟動(dòng)I2C總線 
TRANSMIT(0XA0);				// 送出寫控制字,以寫入地址字節(jié) 
k=SLAVE_ACK();				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	TRANSMIT(ADDR);		// 送出需要讀出數(shù)據(jù)的地址 
k=SLAVE_ACK();				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	{
START();					// 啟動(dòng)I2C總線 
TRANSMIT(0XA1);
}							// 送出讀控制字 
k=SLAVE_ACK();				// 從機(jī)(即PCF8583芯片)應(yīng)答 
if(k==0)	{
for(;N>1;N--,ARRAY++)	{
R_DATA=RECEIVE();	// 接收PCF8583發(fā)出的數(shù)據(jù) 
*ARRAY=R_DATA;		// 讀出的數(shù)據(jù)存入數(shù)組 
MASTER_ACK();		// 主機(jī)應(yīng)答,地址自動(dòng)加1   
}
R_DATA=RECEIVE();		// 接收PCF8583發(fā)出的數(shù)據(jù)        
*ARRAY=R_DATA;			// 讀出的數(shù)據(jù)存入數(shù)組 
NO_ACK();				// 主機(jī)不作應(yīng)答 
STOP();					// 設(shè)置停止?fàn)顟B(tài) 
}
return(k);						// k=0時(shí)表示操作成功,k=1時(shí)表示操作失敗 
}
// 主程序 
main()
{
int       k;
int       R_DATA;
static		int  source[6]={0x0F,0x0E,0x0D,0x0C,0x0B,0x0A};
int       result[6];  
sysinit();					// 系統(tǒng)初始化 
IOINIT();					// 輸入輸出口初始化 
k=BYTE_WR(0x00,0x00);	// 設(shè)置PCF8583的控制狀態(tài)寄存器,其地址為0x00,值0x00代
// 表的意義請參考相關(guān)資料,若k==0,則證明寫入成功;若k==1,
// 則證明寫入失敗 
R_DATA=BYTE_RD(0x00);	// 讀出地址單元0X00的值,如果讀出值為0X0FFFF,則表示讀
// 出值有誤 
k=CON_WR(0x30,source,6); // 從0x30地址開始連續(xù)寫入6個(gè)數(shù)據(jù)  
k=CON_RD(0x30,result,6);  // 把寫入的數(shù)據(jù)連續(xù)讀出 
}
//  直接返回中斷服務(wù)子程序           
void interrupt nothing() 
{
	return;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线一区二区| 人人精品人人爱| 成人av免费在线播放| 国产清纯白嫩初高生在线观看91 | 精品制服美女丁香| 欧美成人伊人久久综合网| 蜜桃视频在线观看一区二区| 日韩欧美中文字幕公布| 久久66热re国产| 国产色产综合产在线视频| 成人精品视频一区| 亚洲精品视频免费观看| 欧美亚洲免费在线一区| 石原莉奈在线亚洲二区| 精品久久一区二区| av不卡在线播放| 亚洲第一av色| 久久久久久麻豆| 91视频你懂的| 日韩高清一级片| 国产欧美日韩在线视频| 95精品视频在线| 五月开心婷婷久久| 久久久精品国产99久久精品芒果| eeuss鲁片一区二区三区在线看| 亚洲精品第1页| 欧美本精品男人aⅴ天堂| 成人性视频网站| 亚洲电影中文字幕在线观看| 欧美成人综合网站| 色综合久久综合中文综合网| 日本aⅴ精品一区二区三区| 欧美高清在线精品一区| 欧美日韩一级黄| 国产成人午夜视频| 香蕉成人啪国产精品视频综合网| 精品国产自在久精品国产| 99精品视频在线播放观看| 日本sm残虐另类| 亚洲欧美日韩成人高清在线一区| 日韩一级精品视频在线观看| 99精品久久久久久| 久草中文综合在线| 亚洲一区在线观看免费 | 91精品视频网| 丁香婷婷综合五月| 日本vs亚洲vs韩国一区三区二区| 国产精品人妖ts系列视频| 欧美精品粉嫩高潮一区二区| 99久久精品情趣| 国产麻豆精品在线观看| 婷婷中文字幕一区三区| 亚洲欧美日韩综合aⅴ视频| 久久久久久夜精品精品免费| 日韩一区二区三区视频| 色香蕉成人二区免费| 国产精品亚洲人在线观看| 奇米色一区二区| 香蕉av福利精品导航| 亚洲精选在线视频| 欧美国产精品久久| 久久精品日韩一区二区三区| 欧美tickling挠脚心丨vk| 欧美日韩不卡视频| 色网站国产精品| 成人av资源在线| 国产999精品久久久久久| 激情图区综合网| 久久精品噜噜噜成人av农村| 亚洲成人一二三| 亚洲国产成人av网| 亚洲午夜精品网| 亚洲成人777| 三级成人在线视频| 污片在线观看一区二区| 亚洲成a人在线观看| 亚洲一二三四久久| 亚洲综合色区另类av| 一区二区在线观看视频在线观看| 精品中文av资源站在线观看| 免费高清视频精品| 精品一区二区在线观看| 久久99精品国产麻豆不卡| 美国十次了思思久久精品导航| 水野朝阳av一区二区三区| 日本不卡一区二区三区 | 久久国产精品一区二区| 美女视频免费一区| 久草热8精品视频在线观看| 韩国欧美一区二区| 高清久久久久久| 99精品久久久久久| 色视频欧美一区二区三区| 欧美色倩网站大全免费| 日韩欧美精品在线视频| 精品国产乱码久久久久久1区2区 | 日韩免费观看高清完整版| 日韩视频一区二区| 久久久久久久久久久久久女国产乱 | 成人免费在线视频观看| 一区二区成人在线视频| 偷拍一区二区三区四区| 国内精品视频一区二区三区八戒| 国产.精品.日韩.另类.中文.在线.播放| 成人av免费网站| 欧美色视频在线| 欧美精品一区二区三区四区 | 欧美成人免费网站| 国产日产欧美一区二区三区| 亚洲人成网站精品片在线观看| 香蕉久久夜色精品国产使用方法| 麻豆精品新av中文字幕| 成人开心网精品视频| 欧美视频在线观看一区二区| 精品国产免费一区二区三区四区 | 欧美中文字幕一区二区三区亚洲| 91精品婷婷国产综合久久| 欧美国产欧美综合| 亚洲成人精品在线观看| 国产一区二区免费视频| 色综合av在线| 久久亚洲欧美国产精品乐播| 亚洲精品久久7777| 国产一区视频导航| 欧美网站大全在线观看| 久久亚区不卡日本| 亚洲成人av一区二区| 国产成人8x视频一区二区| 欧美情侣在线播放| 国产精品不卡在线| 麻豆中文一区二区| 日本乱人伦aⅴ精品| 久久先锋资源网| 亚洲国产一区二区三区青草影视| 韩国女主播一区二区三区| 欧美日韩在线观看一区二区 | 欧美日韩国产bt| 国产精品国产a级| 激情偷乱视频一区二区三区| 色视频成人在线观看免| 国产日本亚洲高清| 免费观看在线综合色| 欧美午夜影院一区| 国产精品国产精品国产专区不蜜| 精品在线免费观看| 欧美日韩一区二区三区免费看| 亚洲国产精品成人综合色在线婷婷| 青青草伊人久久| 欧美日韩在线播放三区| 亚洲免费观看在线视频| 国产91色综合久久免费分享| 欧美一区二区在线免费观看| 亚洲已满18点击进入久久| 91农村精品一区二区在线| 亚洲国产精品黑人久久久| 国产精品一区二区三区四区| 日韩一区国产二区欧美三区| 一个色综合网站| 91麻豆精品在线观看| 国产精品久久久久久户外露出| 国产精品羞羞答答xxdd| 久久久欧美精品sm网站| 国产综合久久久久久鬼色| 日韩精品一区二区三区中文精品| 日本sm残虐另类| 欧美一区二区三区视频免费 | 国模无码大尺度一区二区三区| 欧美电影一区二区| 日韩国产在线一| 91精品国产综合久久久久| 奇米色777欧美一区二区| 日韩精品中午字幕| 久久精品国产99国产| 久久综合久久综合亚洲| 国产麻豆精品95视频| 国产亚洲人成网站| 成人精品国产一区二区4080| 国产精品亲子乱子伦xxxx裸| 白白色 亚洲乱淫| 一区二区三区高清在线| 欧美午夜片在线看| 丝袜亚洲另类欧美| 欧美变态tickling挠脚心| 国产剧情一区二区| 国产精品人成在线观看免费| 色香蕉成人二区免费| 婷婷六月综合亚洲| 26uuu亚洲| zzijzzij亚洲日本少妇熟睡| 一区二区三区成人| 91精品国产综合久久蜜臀| 韩国av一区二区三区四区 | 91视频免费播放| 偷拍日韩校园综合在线| 精品国产1区二区| 成人午夜在线免费| 亚洲一区二区欧美| 2024国产精品| 色狠狠综合天天综合综合| 丝袜诱惑制服诱惑色一区在线观看|