資源簡介
基于IIC總線PCF8591AD轉(zhuǎn)換的仿真測試有仿真圖有代碼,測試已經(jīng)通過,自己下載后可修改代碼

代碼片段和文件信息
/*************************此部分為I2C總線的驅(qū)動程序*************************************/
#include
#include?
#define??NOP()???_nop_()???/*?定義空指令?*/
#define??_Nop()??_nop_()???/*定義空指令*/
#define??PCF8591?0x90????//PCF8591?地址
//else?IO
sbit????LS138A=P2^2;??
sbit????LS138B=P2^3;
sbit????LS138C=P2^4;??
//此表為?LED?的字模?共陰數(shù)碼管?0-9??-?
unsigned?char?code?Disp_Tab[]?=?{0x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f};?
unsigned?char?AD_CHANNEL;
unsigned?int?LedOut[8];
unsigned?int??D[32];
?
sbit?????SCL=P2^5;???????//I2C??時鐘?
sbit?????SDA=P2^6;???????//I2C??數(shù)據(jù)?
bit?ack;?????????????????/*應(yīng)答標志位*/
???
/*******************************************************************
?????????????????????起動總線函數(shù)???????????????
函數(shù)原型:?void??Start_I2c();??
功能:?????啟動I2C總線即發(fā)送I2C起始條件.??
********************************************************************/
void?Start_I2c()
{
??SDA=1;?????????/*發(fā)送起始條件的數(shù)據(jù)信號*/
??_Nop();
??SCL=1;
??_Nop();????????/*起始條件建立時間大于4.7us延時*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();????
??SDA=0;?????????/*發(fā)送起始信號*/
??_Nop();????????/*?起始條件鎖定時間大于4μs*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();???????
??SCL=0;???????/*鉗住I2C總線,準備發(fā)送或接收數(shù)據(jù)?*/
??_Nop();
??_Nop();
}
/*******************************************************************
??????????????????????結(jié)束總線函數(shù)???????????????
函數(shù)原型:?void??Stop_I2c();??
功能:?????結(jié)束I2C總線即發(fā)送I2C結(jié)束條件.??
********************************************************************/
void?Stop_I2c()
{
??SDA=0;??????/*發(fā)送結(jié)束條件的數(shù)據(jù)信號*/
??_Nop();???????/*發(fā)送結(jié)束條件的時鐘信號*/
??SCL=1;??????/*結(jié)束條件建立時間大于4μs*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();
??_Nop();
??SDA=1;??????/*發(fā)送I2C總線結(jié)束信號*/
??_Nop();
??_Nop();
??_Nop();
??_Nop();
}
/*******************************************************************
?????????????????字節(jié)數(shù)據(jù)發(fā)送函數(shù)???????????????
函數(shù)原型:?void??SendByte(UCHAR?c);
功能:?????將數(shù)據(jù)c發(fā)送出去可以是地址也可以是數(shù)據(jù)發(fā)完后等待應(yīng)答并對
??????????此狀態(tài)位進行操作.(不應(yīng)答或非應(yīng)答都使ack=0)?????
???????????發(fā)送數(shù)據(jù)正常,ack=1;?ack=0表示被控器無應(yīng)答或損壞。
********************************************************************/
void??SendByte(unsigned?char??c)
{
?unsigned?char??BitCnt;
?
?for(BitCnt=0;BitCnt<8;BitCnt++)??/*要傳送的數(shù)據(jù)長度為8位*/
????{
?????if((c< ???????else??SDA=0;????????????????
?????_Nop();
?????SCL=1;???????????????/*置時鐘線為高,通知被控器開始接收數(shù)據(jù)位*/
??????_Nop();?
??????_Nop();?????????????/*保證時鐘高電平周期大于4μs*/
??????_Nop();
??????_Nop();
??????_Nop();?????????
?????SCL=0;?
????}
????
????_Nop();
????_Nop();
????SDA=1;????????????????/*8位發(fā)送完后釋放數(shù)據(jù)線,準備接收應(yīng)答位*/
????_Nop();
????_Nop();???
????SCL=1;
????_Nop();
????_Nop();
????_Nop();
????if(SDA==1)ack=0;?????
???????else?ack=1;????????/*判斷是否接收到應(yīng)答信號*/
????SCL=0;
????_Nop();
????_Nop();
}
/*******************************************************************
?????????????????字節(jié)數(shù)據(jù)接收函數(shù)???????????????
函數(shù)原型:?UCHAR??RcvByte();
功能:????????用來接收從器件傳來的數(shù)據(jù)并判斷總線錯誤(不發(fā)應(yīng)答信號),
??????????發(fā)完后請用應(yīng)答函數(shù)應(yīng)答從機。??
*******************************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????14300??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\i2c.LST
?????文件??????13442??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\i2c.OBJ
?????文件??????11848??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C
?????文件???????1015??2012-03-15?17:40??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C.Opt
?????文件??????13379??2012-03-15?17:40??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C.plg
?????文件???????8135??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\i2c.c
?????文件?????????38??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C.lnp
?????文件??????13539??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C.M51
?????文件???????2485??2012-03-15?17:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C.hex
????.......?????????0??2012-03-15?00:03??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C_Uv2.Bak
?????文件???????1984??2012-03-15?00:15??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C.Uv2
????.......??????1011??2012-03-15?00:15??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼\I2C_Opt.Bak
?????文件????????278??2012-03-14?20:27??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\8591控制字節(jié)定義.txt
?????文件???????1026??2012-03-15?17:40??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\仿真\I2C仿真.PWI
?????文件?????112062??2012-03-15?00:15??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\仿真\Last?Loaded?I2C仿真.DBK
?????文件?????112060??2012-03-15?17:40??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\仿真\I2C仿真.DSN
?????目錄??????????0??2012-03-14?16:40??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\代碼
?????目錄??????????0??2012-03-14?22:44??基于IIC總線PCF8591AD轉(zhuǎn)換的使用\仿真
?????目錄??????????0??2012-03-14?16:39??基于IIC總線PCF8591AD轉(zhuǎn)換的使用
-----------?---------??----------?-----??----
???????????????306602????????????????????19
評論
共有 條評論