 |
 |
培訓信息 |
|
|
|
 |
 |
贊助商 |
|
|
|
|
 |
 |
IIC總線模擬程序 |
|
|
| IIC總線模擬程序 |
| 作者:佚名 來源:不詳 錄入:Admin 更新時間:2008-8-17 16:32:36 點擊數(shù):18 |
【字體:
】 |
文件: PCF8563T.C 1 /**———————————————————— 2 〖說明〗I2C總線驅動程序(用兩個普通IO模擬I2C總線) 3 包括100Khz(T=10us)的標準模式(慢速模式)選擇, 4 和400Khz(T=2.5us)的快速模式選擇, 5 默認11.0592Mhz的晶振。
10 —————————————————————*/ 11 12 #ifndef SDA 13 #define SDA P0_0 14 #define SCL P0_1 15 #endif 16 17 extern uchar SystemError; 18 19 #define uchar unsigned char 20 #define uint unsigned int 21 #define Byte unsigned char 22 #define Word unsigned int 23 #define bool bit 24 #define true 1 25 #define false 0 26 27 #define SomeNOP(); _nop_();_nop_();_nop_();_nop_(); 28 29 /**-------------------------------------------------------------------------------- 30 調用方式:void I2CStart(void) ﹫2001/07/0 4 31 函數(shù)說明:私有函數(shù),I2C專用 32 ---------------------------------------------------------------------------------*/ 33 void I2CStart(void) 34 { 35 EA=0; 36 SDA=1; SCL=1; SomeNOP();//INI 37 SDA=0; SomeNOP(); //START 38 SCL=0; 39 } 40 41 /**-------------------------------------------------------------------------------- 42 調用方式:void I2CStop(void) ﹫2001/07/0 4 43 函數(shù)說明:私有函數(shù),I2C專用 44 ---------------------------------------------------------------------------------*/ 45 void I2CStop(void) 46 { 47 SCL=0; SDA=0; SomeNOP(); //INI 48 SCL=1; SomeNOP(); SDA=1; //STOP 49 EA=1; 50 } 51 52 /**-------------------------------------------------------------------------------- 53 調用方式:bit I2CAck(void) ﹫2001/07/0 4 54 函數(shù)說明:私有函數(shù),I2C專用,等待從器件接收方的應答 55 ---------------------------------------------------------------------------------*/ 56 bool WaitAck(void) 57 { 58 uchar errtime=255;//因故障接收方無ACK,超時值為255。 59 SDA=1;SomeNOP(); 60 SCL=1;SomeNOP(); 61 while(SDA) {errtime--; if (!errtime) {I2CStop();SystemError=0x11;return false;}} 62 SCL=0; 63 return true; 第1 頁 文件: PCF8563T.C 2001-11-27, 18:39:20 64 } 65 66 /**-------------------------------------------------------------------------------- 67 調用方式:void SendAck(void) ﹫2001/07/0 4 68 函數(shù)說明:私有函數(shù),I2C專用,主器件為接收方,從器件為發(fā)送方時,應答信號。 69 ---------------------------------------------------------------------------------*/ 70 void SendAck(void) 71 { 72 SDA=0; SomeNOP(); 73 SCL=1; SomeNOP(); 74 SCL=0; 75 } 76 77 /**-------------------------------------------------------------------------------- 78 調用方式:void SendAck(void) ﹫2001/07/0 4 79 函數(shù)說明:私有函數(shù),I2C專用,主器件為接收方,從器件為發(fā)送方時,非應答信號。 80 }**-------------------------------------------------------------------------------- 81 void SendNotAck(void) 82 { 83 SDA=1; SomeNOP(); 84 SCL=1; SomeNOP(); 85 SCL=0; 86 } 87 88 /**-------------------------------------------------------------------------------- 89 調用方式:void I2CSend(uchar ch) ﹫2001/07/0 5 90 函數(shù)說明:私有函數(shù),I2C專用 91 ---------------------------------------------------------------------------------*/ 92 void I2CSendByte(Byte ch) |
|
|
發(fā)表評論 告訴好友 打印此文 收藏此頁 關閉窗口 返回頂部 |
|
|