xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 155.18 KB
    文件類型: .rar
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2024-09-14
  • 語言: 其他
  • 標簽: 8050??F040??smbus??i2c??

資源簡介

8051F040SMBUS多機通信包括SMBUS的總線設計及程序的詳細設計與實現(xiàn),8051F040的smbus與I2c兼容

資源截圖

代碼片段和文件信息

#include?“i2c.h“

/*****************SMBUS中用到得常量*************************************/
#define?WRITE?0xfe?//?寫方向位
#define?READ?0x01?//?讀方向位

#define?SMB_BUS_ERROR?0x00?//?對所有方式總線錯誤
#define?SMB_START?0x08?//?(MT?&?MR)?起始條件已發(fā)送
#define?SMB_RP_START?0x10?//?(MT?&?MR)?重復起始條件
/*********************************************************/

/**************內(nèi)部所用函數(shù)*****************/
//主從設備都用到的函數(shù)
static?void?SMBUS_ISR();???//I2C中斷函數(shù)
static?void?DoSomething();?//用作出錯處理
//主器件所用函數(shù)
static?void?AddressSend(unsigned?char?CurrentState);
static?void?ResetDataQueue();??????//將數(shù)據(jù)發(fā)送重置
static?void?DataSendMaster();??????//主設備發(fā)送數(shù)據(jù)的函數(shù)
static?void?DataReceiveMaster();???//主設備接收數(shù)據(jù)的函數(shù)
//從器件所用函數(shù)
static?void?DataSendSlave();???????//從設備發(fā)送數(shù)據(jù)的函數(shù)
static?void?DataReceiveSlave();????//從設備接收數(shù)據(jù)的函數(shù)
static?void?ResetSlaveBuffer();???//重置從設備接收器
/*******************************************/

/***************內(nèi)部所用數(shù)據(jù)*******************/

//主設備用到的數(shù)據(jù)
static?unsigned?char?i2csendchecker?=?0;?//主設備用于校驗
static?unsigned?char?i2cslaveaddress?=?0;?//需要連接的從設備地址
static?unsigned?char?*smbusdata*smbustranslatestate;//smbusdata:要發(fā)送的數(shù)據(jù)
?????????????????????????????????????????????????//smbustranslatestate:數(shù)據(jù)傳輸狀態(tài)?是否傳輸完畢
static?unsigned?char?i2ctempstate?=?0;//從設備地址+傳輸狀態(tài),傳輸狀態(tài)有正在傳輸,傳輸完畢,數(shù)據(jù)無法到達3種
??????????????????????????????????????//其實是一個臨時數(shù)據(jù),會被賦值給*smbustranslatestate
static?unsigned?char?i2cerror?=?0i2ccommandstore;//commandstore用于暫存smbus發(fā)送命令
static?unsigned?char?i2cresendcount?=?0;//resendcount重發(fā)次數(shù)的計數(shù)如果重發(fā)次數(shù)大于10次則認為是不能連通
?????????????????????????????????????//主設備用到的計數(shù)器
static?unsigned?char?smbus_send_size;//需要發(fā)送的字節(jié)數(shù)
static?unsigned?char?smbus_send_counter;//發(fā)送計數(shù)器
//從設備用到的數(shù)據(jù)
static?unsigned?char?*i2creceivedbuf;//接收緩沖區(qū)?
static?unsigned?char?smbus_receive_size;//需接收的字節(jié)數(shù)
static?unsigned?char?smbus_recieve_counter;//接收計數(shù)器
static?unsigned?char?i2creceivecommand;?//接收的命令
static?unsigned?char?i2creceivechecker;?//接收時用到的檢驗碼
static?unsigned?char?i2cmasteraddr;?//某次通信主設備地址
/****************************************/


/********************對外提供得接口*************************************/
void?CreateI2CDevice(unsigned?char?DeviceAddressunsigned?char?*ReceiveData)
//創(chuàng)建i2c的通信設備?需要配置緩沖區(qū)以及收到的字節(jié)數(shù)大小和收到字節(jié)計數(shù)器
{
???unsigned?char?oldpage;
???i2creceivedbuf?=?ReceiveData;//配置數(shù)據(jù)接收的緩沖區(qū)
???smbus_receive_size=0;????//需接收的字節(jié)數(shù)為0當收到從主設備發(fā)送過來的字節(jié)數(shù)之后會改變這個值
???smbus_recieve_counter=0;??//計數(shù)器,在接收時改變這個值
???i2creceivecommand=0;
???i2creceivechecker=0;
???//操作寄存器
???oldpage=SFRPAGE;
???SFRPAGE=SMB0_PAGE;
???SMB0CN?=?0x44;??????????????????//使能I2C端口及應答位
???SMB0CR?=?-25;???????????????????//配置I2C設備速度到達400k?bits
???SMB0ADR?=?DeviceAddress;????????//設置設備地址
???SI?=?0;??????????????????????????//清除中斷標志
???SFRPAGE=oldpage;
}
void?I2CSend(unsigned?char?slavedeviceaddrunsigned?char?*comu_dataunsigned?char?datasizeunsigned?char?commandunsigned?char?*translatestate)
//發(fā)送數(shù)據(jù)?slavedeviecaddr:從設備地址,comu_data需要發(fā)送的數(shù)據(jù),datasize,發(fā)送數(shù)據(jù)的字節(jié)數(shù)
//translatestate傳輸狀態(tài)
//0000數(shù)據(jù)正在傳輸中
//0001數(shù)據(jù)傳輸經(jīng)重試后仍無法

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????16763??2009-05-19?11:05??i2c.c

?????文件?????423424??2009-05-20?15:49??I2C接口設計.doc

?????文件???????1161??2009-05-19?11:02??i2c.h

-----------?---------??----------?-----??----

???????????????441348????????????????????3


評論

共有 條評論