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

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

?? iic_rom.c

?? c8051f單片機的實例
?? C
字號:
///////////應用SMBUS操作IIC ROM////////////////
////////IIC_ROM.c/////////////////////////////////
#include "smbus.h"
#include "absacc.h"
#define FLOATADR 0x0000
#define SLAVE_FLOATADR 0x0000
#define IIC_R 0x01
#define RETRY_MAX 50
/* IIC_R為SMBUS讀控制*/
#define IIC_W 0xfe
#define READ 0x01
#define ROMID 0x50
#define DATALEN 5
/* IIC_W為SMBUS寫控制*/
union int16{//采用聯合體實現16位與8位混合操作
	uint word;
	struct {uchar hi;uchar low;}split;
};
struct smbus_mes{
	uchar id;
	union int16 target_adr;
	uint self_adr;
	uchar len;
	uchar isread;
	uchar adr_end;
	uchar isbuserror;
};
xdata struct smbus_mes mes_M,mes_S;//將結構體定義到外部內存上
xdata float floattest _at_ FLOATADR;
xdata uchar *p;
void master_mes_creat(uchar id,uint target_adr,uint self_adr,uchar len,uchar dir){
	mes_M.id=id<<1;//id數據在7-1位,須右移1位
	mes_M.id&=IIC_W;//主機要發送從機的內存地址,故起始必然是寫操作
	mes_M.target_adr.word=target_adr;
	mes_M.self_adr=self_adr;
	mes_M.len=len;
	mes_M.isread=dir;
	mes_M.isbuserror=0;
}
void config(){//crossbar 使能,但并沒有進行外圍設備配置
	WDTCN = 0x07;	//看門狗禁止
  	WDTCN = 0xDE;    
   	WDTCN = 0xAD;
	SFRPAGE = 0x0F;
	XBR2&=~0x40;//關閉Crossbar;
	XBR0|=0x01;//將SMBUS配置到P口上
	XBR2|=0x40;//Crossbar 交叉開關使能,開啟Crossbar
 	P0MDOUT = 0x00; 
  	P1MDIN = 0xFF;  // P1數字輸入口
	SFRPAGE = 0x0F;
 	CLKSEL = 0x00;  // 選擇內部晶振8分頻
	OSCXCN = 0x00;	
	OSCICN = 0x84;	
}
void main(){
	xdata float pai=3.14159;
	xdata float float_get=0.0;
	bit needreceive;
	config();
	smbus_cfg(0x40,0xf1,0x70);
	/*
	smbus使能,AA=0,SCL高電平和低電平超時禁止
	smbus時鐘頻率為100khz
	自身從機地址為0x70/2,即為56(十進制),且廣播尋址禁止
	*/
	master_mes_creat(ROMID,0x7000,&pai,sizeof(float),0);
	/*
	讀從機浮點數的值(始地址為SLAVE_FLOATADR)
	將讀取值存放于始地址為FLOATADR的外部內存上
	*/
	EA=1;//打開全局中斷
	SFRPAGE=0x00;
	while(BUSY);//等待總線釋放
	smbusMasterStart();//主機發送起始位
	needreceive=1;
	while(1){
		SFRPAGE=0x00;
		if(!BUSY){//總線空閑時查詢總線傳輸狀況
			if(mes_M.isbuserror!=0)
				if(mes_M.len>0)
					smbusMasterStart();//再次發送。
			if(mes_M.len==0){
				if(needreceive){
					master_mes_creat(ROMID,0x7000,&float_get,sizeof(float),READ);
					smbusMasterStart();
					needreceive=0;
				}
			}
		}
		if(mes_M.len==0){
			if(!needreceive)
				needreceive=0;
		}
	}
}
void int0() interrupt 0{
}
void int1() interrupt 1{
}
void int2() interrupt 2{
}
void int3() interrupt 3{
}
void int4() interrupt 4{
}
void int5() interrupt 5{
}
void int6() interrupt 6{
}
void smbusInt() interrupt 7{//smbus中斷
//比較完善的SMBUS中斷處理程序,但是由于對各種狀態均作出處理,降低處理速度
//讀者可根據需要刪減一些狀態處理
	static uchar retry_time=0;
	SFRPAGE=0x00;
	if(SMB0STA==0x08){//起始位發送成功,主機模式下才會出現這種狀態
		SMB0DAT=mes_M.id;//將地址和讀寫控制裝入發送緩沖區
		STA=0;//將STA清零,注意,若不清零則將一直為重復起始狀態
		mes_M.adr_end=0;//內存地址沒有發送完畢
		goto bus_end;
	}
	if(SMB0STA==0x10){//重復起始條件處理
		SMB0DAT=mes_M.id;
		STA=0;
		mes_M.adr_end=0;//內存地址沒有發送完畢
		goto bus_end;
	}
	if(SMB0STA==0x18){//從地址+W發出,收到從機ACK應答
		SMB0DAT=mes_M.target_adr.split.hi;//發送內存高地址
		mes_M.adr_end=0;//內存地址沒有發送完畢
		retry_time=0;//將重試計數器清零
		goto bus_end;
	}
	if(SMB0STA==0x20){//從地址+W發出,收到從機NACK應答
		STO=1;
		retry_time++;
		if(retry_time<RETRY_MAX){
			STA=1;//若重試次數小于最大限值,則產生重復起始條件
		}
		else{
			mes_M.isbuserror=1;//isbuserror在初始化時須清零
			retry_time=0;//若大于重試次數,由于沒有將STA置1,不會產生重復起始條件
		//且須將retry_time即時清零,以便下一次SMBUS中斷時,重試次數從零開始計數
		}
		goto bus_end;
	}
	if(SMB0STA==0x28){//SMBUS數據成功發送,且收到從機ACK應答
		if(mes_M.len>0){
			if(mes_M.adr_end==0){//若內存地址沒有發送完畢,繼續發送內存地址
				SMB0DAT=mes_M.target_adr.split.low;//發送內存低地址	
				mes_M.adr_end=2;
			}
			else{
				if(mes_M.isread==READ){
				//更換角色,對從機寫完內存地址后,讀取從機發送過來的數據
					mes_M.id|=IIC_R;//將id中寫控制位改成讀控制位
					STA=1;//此時不需要將STO置1
				}
				else{
					SMB0DAT=XBYTE[mes_M.self_adr];
					//取自身外部內存相應地址上的數據發送到SMBUS總線上
					mes_M.target_adr.word++;//對從機操作的內存地址自增1
					mes_M.self_adr++;//自身內存地址自增1
					mes_M.len--;//數據長度減1
				/*
				主從機內存地址自增能保證當產生重復起始條件時,對于成功發送的數據不再重發
				*/
					}
				
			}
		}
		else{//若數據長度等于0,則停止發送
			STO=1;
			retry_time=0;
		}
		goto bus_end;
	}
	if(SMB0STA==0x30){//SMBUS數據成功發送,但接收到從機NACK應答
		STO=1;
		STA=1;//產生重復起始條件
		goto bus_end;
	}
	if(SMB0STA==0x38){//總線競爭失敗。
		STO=1;//發送停止幀,并把總線錯誤標志位置1。
		mes_M.isbuserror=1;
		goto bus_end;
	}
	if(SMB0STA==0x40){//從機地址+R發送成功,接收到從機ACK應答信號
		if(mes_M.len>1)
			AA=1;//下一接收數據不是最后數據,故AA置1,以應答從機
		else{
			if(mes_M.len==1)//下一數據為最后數據
				AA=0;
		}
		retry_time=0;//將重試計數器清零
		goto bus_end;
	}
	if(SMB0STA==0x48){//從機地址+R發送成功,但接收到從機NACK應答信號
		retry_time++;
		STO=1;
		if(retry_time<RETRY_MAX){//若小于重試最大限值,則繼續重試
			STA=1;
		}
		else{
			mes_M.isbuserror=1;//若大于重試最大限值,則停止總線,且將總線錯誤標志位置1
			retry_time=0;
			}
		goto bus_end;
	}
	if(SMB0STA==0x50){//接收到從機所發送的數據,并發送ACK應答信號
		if(mes_M.len>1)
			AA=1;//下一接收數據不是最后數據,故AA置1,以應答從機
		else{
			if(mes_M.len==1)//下一數據為最后數據
				AA=0;
		}
		XBYTE[mes_M.self_adr]=SMB0DAT;
		mes_M.self_adr++;
		mes_M.target_adr.word++;
		mes_M.len--;
		goto bus_end;
	}
	if(SMB0STA==0x58){//接收到從機所發送的最后一個數據,并發送NACK應答信號
		XBYTE[mes_M.self_adr]=SMB0DAT;
		mes_M.len=0;
		STO=1;//結束總線傳輸
		goto bus_end;
	}
	if(SMB0STA==0x00){//出現總線錯誤
		mes_M.isbuserror=1;
		mes_S.isbuserror=1;
		STO=1;
	}
bus_end:
		SI=0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲精品国产a| 一区二区三区加勒比av| 91精品国产综合久久久久久漫画| 一级特黄大欧美久久久| 亚洲精品免费在线播放| 国产精品你懂的在线| 久久精品人人爽人人爽| 韩国精品主播一区二区在线观看| 国产日韩av一区二区| 国产精品网友自拍| 亚洲欧美成人一区二区三区| 国产精品成人一区二区艾草| 一区二区三区在线不卡| 日韩中文字幕91| 成人午夜又粗又硬又大| 91福利精品视频| 久久久久国产精品麻豆| 亚洲女同女同女同女同女同69| 中文字幕亚洲综合久久菠萝蜜| 国产精品进线69影院| 日本美女视频一区二区| 99久久99久久精品免费观看 | 日韩国产精品久久久久久亚洲| 一区二区三区免费| 国产美女精品在线| 在线观看视频一区二区欧美日韩| 欧美乱妇23p| 国产精品第一页第二页第三页| 亚洲精品乱码久久久久久黑人| 亚洲女爱视频在线| 国产麻豆午夜三级精品| 欧美日韩国产综合一区二区| 久久一区二区三区国产精品| 亚洲1区2区3区视频| 91啪亚洲精品| 亚洲丝袜制服诱惑| 国产成人在线免费观看| 欧美成人欧美edvon| 毛片一区二区三区| 日韩欧美在线网站| 日本美女一区二区三区| 在线播放91灌醉迷j高跟美女| 国产精品五月天| 白白色亚洲国产精品| 欧美经典一区二区| 成人激情黄色小说| **欧美大码日韩| 欧美综合天天夜夜久久| 亚洲电影在线免费观看| 欧美一二三区在线| 久久99热国产| 久久精品亚洲精品国产欧美| 国产aⅴ精品一区二区三区色成熟| 中文字幕精品一区二区精品绿巨人 | 91麻豆国产精品久久| 精品一二三四在线| 九一九一国产精品| 黑人巨大精品欧美一区| 黄网站免费久久| 国产剧情av麻豆香蕉精品| 国产乱码精品一区二区三区av| 亚洲国产一区二区三区青草影视| 国产精品色一区二区三区| 中文天堂在线一区| 一区二区欧美精品| 日本午夜一本久久久综合| 蜜臀精品一区二区三区在线观看| 亚瑟在线精品视频| 国产一区二区三区精品视频| 国产一区二区三区四区在线观看 | 日韩一区二区三区免费看| 欧美一级黄色片| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 国产精品亲子乱子伦xxxx裸| 亚洲日本免费电影| 午夜不卡在线视频| 丰满少妇久久久久久久| 在线精品亚洲一区二区不卡| 精品裸体舞一区二区三区| 欧美精品一区二区三区一线天视频| 欧美丰满嫩嫩电影| 国产精品素人视频| 美日韩一区二区三区| 色av成人天堂桃色av| 久久综合av免费| 日韩经典一区二区| 一本色道**综合亚洲精品蜜桃冫| 在线观看av一区二区| 久久久久国产免费免费| 日本美女一区二区三区| 91免费观看视频| 国产女人aaa级久久久级| 蜜臀精品一区二区三区在线观看| 成人精品gif动图一区| 日韩欧美电影一区| 日韩主播视频在线| 欧美亚洲一区二区三区四区| 国产精品国产三级国产aⅴ入口 | 国产乱码精品一区二区三区av | 欧美日韩日日骚| 日本欧美一区二区三区乱码| 亚洲精品日产精品乱码不卡| 亚洲一区二区三区精品在线| 午夜伦欧美伦电影理论片| 99精品久久只有精品| 欧美国产一区二区| 99视频有精品| 亚洲精品国产精华液| 欧美丝袜丝交足nylons图片| 亚洲国产日日夜夜| 正在播放一区二区| 极品美女销魂一区二区三区| 26uuu色噜噜精品一区二区| 国产成人精品在线看| 亚洲欧洲av在线| 欧美丝袜丝交足nylons| 日韩精品亚洲一区| 久久精品一区二区三区av| 99久久婷婷国产精品综合| 天天色 色综合| 久久久久久久久99精品| av一区二区三区在线| 亚洲大片精品永久免费| 久久伊人蜜桃av一区二区| 91在线观看污| 激情亚洲综合在线| 亚洲日本一区二区| 精品99999| 欧美日韩色一区| 成人毛片视频在线观看| 丝袜国产日韩另类美女| 欧美激情一区二区三区蜜桃视频| 99久久伊人久久99| 精品一区精品二区高清| 一区二区三区电影在线播| 久久综合狠狠综合| 制服丝袜国产精品| 日本韩国一区二区| 99这里都是精品| 国产成人aaa| 国产一二精品视频| 青娱乐精品视频| 手机精品视频在线观看| 亚洲在线成人精品| 亚洲女女做受ⅹxx高潮| 国产精品乱人伦一区二区| 精品国产sm最大网站免费看| 91精品久久久久久蜜臀| 欧美亚洲图片小说| 欧美揉bbbbb揉bbbbb| 91丝袜国产在线播放| av爱爱亚洲一区| 色系网站成人免费| 91国模大尺度私拍在线视频| 欧美色图第一页| 在线不卡一区二区| 日韩网站在线看片你懂的| 日韩免费电影一区| 精品久久久久av影院| 久久亚区不卡日本| 国产精品乱人伦中文| 亚洲品质自拍视频| 天天av天天翘天天综合网| 日韩福利电影在线| 国产精品一区二区久久精品爱涩 | 亚洲一二三区视频在线观看| 婷婷开心激情综合| 精品一区二区国语对白| 99久久精品99国产精品 | 亚洲图片欧美一区| 蜜桃av一区二区三区电影| 东方aⅴ免费观看久久av| 在线观看国产日韩| 日韩三级视频在线观看| 亚洲国产成人自拍| 日本人妖一区二区| 91在线观看一区二区| 欧美一级久久久久久久大片| 日韩伦理av电影| 麻豆91在线观看| 色老综合老女人久久久| 91.xcao| 亚洲情趣在线观看| 国产一区日韩二区欧美三区| 在线观看亚洲专区| 日本一区二区三区在线不卡| 日韩精品国产精品| 91黄视频在线观看| 中文字幕av资源一区| 久久99精品久久久久久国产越南| 成人免费观看视频| 久久综合久久久久88| 亚欧色一区w666天堂| 色综合视频一区二区三区高清| 日韩视频一区二区在线观看| 亚洲国产另类精品专区| 色婷婷av一区| 一区二区视频在线看| 91蜜桃传媒精品久久久一区二区| 欧美大片一区二区|