📄 iic.lst
字号:
C51 COMPILER V7.06 IIC 01/06/2005 14:37:21 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE IIC
OBJECT MODULE PLACED IN F:\存档\HEX\IIC.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\源文件\IIC.C LARGE DEBUG OBJECTEXTEND PRINT(.\IIC.lst) OBJECT(F:\存档\HE
-X\IIC.obj)
stmt level source
1 /*
2 *********************************************************************************************************
3 * iic.c
4 * 实时内核
5 *
6 * (c) Copyright 2003-9-10: pearmani
7 * 版权所有
8 *
9 * MCU-51 专用代码
10 * KEIL C51大模式编译
11 *
12 * 文件名:ii.c
13 * 作者 :caochengfu
14 * 改编 :
15 *********************************************************************************************************
16 */
17
18 /*0755-83241559孙九安*/
19 #include "extern.h"
20 /*
21 简单的延时
22 */
23 /*
24 *********************************************************************************************************
25 *名称:延时8微秒
26 * 输入参数:无
27 *输出参数:无
28 *处理的数据:无
29 *调用的函数:无
30 *创建人: DaiWei
31 *创建时间:2003-8-16 10:51
32 *修改时间:
33 *********************************************************************************************************
34 */
35 void dly8u(void)
36 {
37 1
38 1 _Nop();
39 1 _Nop();
40 1 _Nop();
41 1 _Nop();
42 1 _Nop();
43 1 _Nop();
44 1 _Nop();
45 1 _Nop();
46 1 _Nop();
47 1 _Nop();
48 1 _Nop();
49 1 return;
50 1 }
51 /*
52 *********************************************************************************************************
53 *名称:void f_iic_start(void)
54 *功能:启动通信
C51 COMPILER V7.06 IIC 01/06/2005 14:37:21 PAGE 2
55 * 输入参数:无
56 *输出参数:无
57 *处理的数据:无
58 *调用的函数:dly8u()
59 *创建人: DaiWei
60 *创建时间:2003-8-16 10:51
61 *修改时间:
62 *********************************************************************************************************
63 */
64
65 void f_iic_start(void)
66 {
67 1 /*启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变 */
68 1 SCL=0;
69 1 dly8u();
70 1 SDA=1;
71 1 dly8u();
72 1 SCL=1;
73 1 dly8u();
74 1 SDA=0;
75 1 dly8u();
76 1 SCL=0;
77 1 dly8u();
78 1 }
79 /*
80 *********************************************************************************************************
81 *名称:void f_iic_stop(void)
82 *功能:停止iic通信
83 * 输入参数:无
84 *输出参数:无
85 *处理的数据:无
86 *调用的函数:dly8u();
87 *创建人: DaiWei
88 *创建时间:2003-8-16 10:51
89 *修改时间:
90 *********************************************************************************************************
91 */
92
93 void f_iic_stop(void)
94 {
95 1 /*终止I2C总线,当SCL为高电平时使SDA产生一个正跳变*/
96 1 SCL=0;
97 1 dly8u();
98 1 SDA=0;
99 1 dly8u();
100 1 SCL=1;
101 1 dly8u();
102 1 SDA=1;
103 1 dly8u();
104 1 }
105 /*
106 *********************************************************************************************************
107 *名称:void f_check_ack_iic(void)
108 *功能:校验本次通信
109 * 输入参数:无
110 *输出参数:无
111 *处理的数据:无
112 *调用的函数:dly8u()
113 *创建人: DaiWei
114 *创建时间:2003-8-16 10:51
115 *修改时间:
116 *********************************************************************************************************
C51 COMPILER V7.06 IIC 01/06/2005 14:37:21 PAGE 3
117 */
118
119 void f_check_ack_iic(void)
120 {
121 1 /*发送完一个字节后检验设备的应答信号*/
122 1 SCL=0;
123 1 dly8u();
124 1 SDA=1;
125 1 dly8u();
126 1 SCL=1;
127 1 dly8u();
128 1 F0=SDA;
129 1 SCL=0;
130 1 }
131 /*
132 *********************************************************************************************************
133 *名称:void f_sendone_byte(uchar b)
134 *功能:发送一个字节
135 * 输入参数:需要发送的数据,一个字节
136 *输出参数:无
137 *处理的数据:无
138 *调用的函数:dly8u()
139 *创建人: DaiWei
140 *创建时间:2003-8-16 10:51
141 *修改时间:
142 *********************************************************************************************************
143 */
144 void f_sendone_byte(uchar b)
145 {
146 1 uchar i;
147 1 dly8u();
148 1 for(i=0;i<8;i++)
149 1 if((b<<i)&0x80)
150 1 {
151 2 SDA=1;
152 2 dly8u();
153 2 dly8u();
154 2 SCL=1;
155 2 dly8u();
156 2 SCL=0;
157 2 }
158 1 else
159 1 {
160 2 SDA=0;
161 2 dly8u();
162 2 dly8u();
163 2 SCL=1;
164 2 dly8u();
165 2 SCL=0;
166 2 }
167 1 }
168 /*
169 *********************************************************************************************************
170 *名称:void f_sendbytes(void)
171 *功能:发送一个数据包
172 * 输入参数:无
173 *输出参数:无
174 *处理的数据:sendone,sendtwo,sendthree
175 *调用的函数: f_iic_start();
176 f_sendone_byte(0xf0);
177 f_check_ack_iic();
178 f_iic_stop();
C51 COMPILER V7.06 IIC 01/06/2005 14:37:21 PAGE 4
179 *创建人: DaiWei
180 *创建时间:2003-8-16 10:51
181 *修改时间:
182 *********************************************************************************************************
183 */
184 void f_sendbytes(void)
185 {
186 1 uchar data i;
187 1 uchar data sendbuff[4];
188 1 sending_flag=1;
189 1 sendbuff[0]=0xf8;
190 1 sendbuff[1]=sendtwo;
191 1 sendbuff[2]=sendthree;
192 1 sendbuff[3]=sendfour;
193 1 EA=0;
194 1 for(i=0;i<4;i++)
195 1 {
196 2 f_iic_start();
197 2 f_sendone_byte(0xf0);
198 2 f_check_ack_iic();
199 2 f_sendone_byte(sendbuff[i]);
200 2 f_check_ack_iic();
201 2 f_iic_stop();
202 2 }
203 1
204 1 EA=1;
205 1 return;
206 1 }
207 void f_sendbytes1234(void)
208 {
209 1 uchar data i;
210 1 uchar data sendbuff[4];
211 1 sendbuff[0]=0xf8;
212 1 sendbuff[1]=sendtwo;
213 1 sendbuff[2]=sendthree;
214 1 sendbuff[3]=sendfour;
215 1 EA=0;
216 1 for(i=0;i<4;i++)
217 1 {
218 2 f_iic_start();
219 2 f_sendone_byte(0xf0);
220 2 f_check_ack_iic();
221 2 f_sendone_byte(sendbuff[i]);
222 2 f_check_ack_iic();
223 2 f_iic_stop();
224 2 }
225 1 EA=1;
226 1 return;
227 1 }
228
229 os_INT0_isp() interrupt 0
230 {
231 1 // SI=0;
232 1 IE0=0;
233 1 EA=1;
234 1 ET0=1;
235 1 TR0=1;
236 1 TR1=1;
237 1
238 1 }
239 os_INT1_isp() interrupt 2
240 {
C51 COMPILER V7.06 IIC 01/06/2005 14:37:21 PAGE 5
241 1 // SI=0;
242 1 IE1=0;
243 1 EA=1;
244 1 ET0=1;
245 1 TR0=1;
246 1 TR1=1;
247 1 }
248
249
250
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 235 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 10
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 + -