📄 i2c.lst
字号:
C51 COMPILER V7.50 I2C 10/31/2005 08:39:21 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2c.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE I2c.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include <reg922.h>
2
3 bit ack = 0; /*应答标志位*/
4 void I2cInit()
5 {
6 1 /* I2CON */
7 1 I2CON &= 0;
8 1 I2SCLH = 7;
9 1 I2SCLL = 8;
10 1 }
11 void DisableI2c()
12 {
13 1 I2EN = 0;
14 1 }
15 void EnableI2c()
16 {
17 1 I2EN = 1;
18 1 }
19 /********************************************
20 名称: Start_I2c();
21 功能: 启动I2C总线,即发送I2C起始条件.
22 *********************************************/
23 void Start_I2c()
24 {
25 1
26 1 }
27 /******************************************
28 * 名称: Stop_I2c();
29 功能: 结束I2C总线,即发送I2C结束条件.
30 *******************************************/
31 void Stop_I2c()
32 {
33 1 }
34 /************************************************************************
35 名称: SendByte(uchar c);
36 功能: 将数据c发送出去,可以是地址,也可以是数据,发完后等待应答,并对
37 此状态位进行操作.(不应答或非应答都使ack=0 假)
38 发送数据正常,ack=1; ack=0表示被控器无应答或损坏。
39 *************************************************************************/
40 void SendByte(unsigned char c)
41 {
42 1 I2DAT = c;
43 1 STA=1;
44 1 STO=1;
45 1
46 1 }
47 /*******************************************************************
48 名称: RcvByte()
49 功能: 用来接收从器件传来的数据,并判断总线错误(不发应答信号),
50 发完后请用应答函数。
51 ********************************************************************/
52 unsigned char RcvByte()
53 {
54 1 }
*** WARNING C173 IN LINE 54 OF I2C.C: missing return-expression
C51 COMPILER V7.50 I2C 10/31/2005 08:39:21 PAGE 2
55 /********************************************************
56 名称: Ack_I2c()
57 功能: 主控器进行应答信号,(可以是应答或非应答信号)
58 ********************************************************/
59 void Ack_I2c(bit a)
60 {
61 1 }
*** WARNING C280 IN LINE 59 OF I2C.C: 'a': unreferenced local variable
62 /***********************************************************************
63 名称: ISendByte();
64 功能: 从启动总线到发送地址,数据,结束总线的全过程,从器件地址sla.
65 如果返回1表示操作成功,否则操作有误。
66 注意: 使用前必须已结束总线。
67 ************************************************************************/
68 bit ISendByte(unsigned char sla,unsigned char c)
69 {
70 1 Start_I2c(); /*启动总线*/
71 1 SendByte(sla); /*发送器件地址*/
72 1 if(ack==0) return(0);
73 1 SendByte(c); /*发送数据*/
74 1 if(ack==0) return(0);
75 1 Stop_I2c(); /*结束总线*/
76 1 return(1);
77 1 }
78 /**********************************************************************
79 名称: IRcvByte(uchar sla,ucahr *c);
80 功能: 从启动总线到发送地址,读数据,结束总线的全过程,从器件地
81 址sla,返回值在c.
82 如果返回1表示操作成功,否则操作有误。
83 注意: 使用前必须已结束总线。
84 ***********************************************************************/
85 bit IRcvByte(unsigned char sla,unsigned char *c)
86 {
87 1 Start_I2c(); /*启动总线*/
88 1 SendByte(sla+1); /*发送器件地址*/
89 1 if(ack==0) return(0);
90 1 *c=RcvByte(); /*读取数据*/
91 1 Ack_I2c(1); /*发送非就答位*/
92 1 Stop_I2c(); /*结束总线*/
93 1 return(1);
94 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 86 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 2 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -