📄 iic.lst
字号:
C51 COMPILER V7.50 IIC 02/21/2012 18:24:44 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN iic.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE iic.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "iic.h"
2
3
4 void delay(unsigned int time)
5 {
6 1 while(time--);
7 1
8 1
9 1 }
10
11
12
13 /* 功能描述:主设备发出无应答
14 隶属模块:IIC模块
15 函数属性:外部,供用户使用
16 注:主设备(比如单片机)从从设备(比如PCF8563)
17 进行读取,就要给从设备一个NACK(即无应答) */
18
19 void IIC_NAck()
20 {
21 1 SDA=1;
22 1 delay(DelayTime);
23 1 SCL=1;
24 1 delay(DelayTime);
25 1 SCL=0;
26 1 delay(DelayTime);
27 1
28 1
29 1 }
30
31 /* 功能描述: IIC启动
32 隶属模块: IIC模块
33 函数属性: 外部,供用户使用 */
34
35 void IIC_Start()
36 {
37 1 SDA=1;
38 1 delay(DelayTime);
39 1 SCL=1;
40 1 delay(DelayTime);
41 1 SDA=0;
42 1 delay(DelayTime);
43 1 SCL=0;
44 1 delay(DelayTime);
45 1
46 1
47 1 }
48
49 //IIC结束部分
50 void IIC_Stop()
51 {
52 1 SDA=0;
53 1 delay(DelayTime);
54 1 SCL=1;
55 1 delay(DelayTime);
C51 COMPILER V7.50 IIC 02/21/2012 18:24:44 PAGE 2
56 1 SDA=1;
57 1 delay(DelayTime);
58 1 SCL=0;
59 1 delay(DelayTime);
60 1
61 1
62 1 }
63
64 /* 功能描述:主设备发出应答
65 隶属模块:IIC模块
66 函数属性:外部,供用户使用
67 注:主设备(比如单片机)从从设备(比如PCF8563)
68 进行读取,就要给从设备一个ACK(即应答) */
69
70 void IIC_Ack()
71 {
72 1 SDA=0;
73 1 delay(DelayTime);
74 1 SCL=1;
75 1 delay(DelayTime);
76 1 SCL=0;
77 1 delay(DelayTime);
78 1
79 1
80 1 }
81
82 /* 功能描述:主设备检测从设备应答
83 隶属模块:IIC模块
84 参数说明:无
85 返回说明:从设备的应答值
86 注:主设备(比如单片机),向从设备(比如pcf8563)写入字节后,要检测从设备
87 发出的应答,如果数据位SDA为0,说明向从设备成功写入*/
88
89 unsigned char IIC_Get_Ack()
90 {
91 1 unsigned char Error;
92 1 SDA=1;
93 1 delay(DelayTime);
94 1 SCL=1;
95 1 delay(DelayTime);
96 1 Error=SDA;
97 1 delay(DelayTime);
98 1 SCL=0;
99 1 delay(DelayTime);
100 1 return Error;
101 1
102 1
103 1 }
104
105
106 /* 功能描述:主设备向从设备写入一个字节
107 隶属模块:IIC模块
108 隶属函数:外部,供用户使用
109 参数说明:dat:将要写入的字节
110 返回说明:从设备的应答值
111 注:向从设备写入一个字节,并返回从设备的应答值*/
112
113 unsigned char IIC_Write_Byte(unsigned char dat)
114 {
115 1 unsigned char i;
116 1 for(i=0;i<8;i++)
117 1 {
C51 COMPILER V7.50 IIC 02/21/2012 18:24:44 PAGE 3
118 2
119 2 SDA=((dat<<i)&0x80);
120 2 SCL=1;
121 2 delay(DelayTime);
122 2 SCL=0;
123 2 delay(DelayTime);
124 2
125 2
126 2 }
127 1 return IIC_Get_Ack();
128 1
129 1 }
130
131 /* 功能描述:主设备向从设备读入一个字节
132 隶属模块:IIC模块
133 隶属函数:外部,供用户使用
134 返回说明:读到的字节*/
135
136 unsigned char IIC_Read_Byte()
137 {
138 1 unsigned char i,rbyte=0;
139 1 SDA=1;
140 1 for(i=0;i<8;i++)
141 1 {
142 2 SCL=1;
143 2 delay(DelayTime);
144 2 if(SDA) rbyte|=(0x80>>i);
145 2 SCL=0;
146 2 delay(DelayTime);
147 2
148 2 }
149 1 return rbyte;
150 1
151 1
152 1
153 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 176 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -