📄 i2c.lst
字号:
C51 COMPILER V7.20 I2C 05/15/2007 15:32:40 PAGE 1
C51 COMPILER V7.20, COMPILATION OF MODULE I2C
OBJECT MODULE PLACED IN I2C.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe I2C.c DB OE
line level source
1 #include "MEMSIC.h"
2
3
4 bit Ack;
5 uint8 xdata Temp0;
6 uint8 xdata Temp1;
7 uint8 xdata Temp2;
8 uint8 xdata Temp3;
9 int16 xdata Ax;
10 int16 xdata Ay;
11
12
13 void IIC_Start (void)
14 {
15 1 Sda=1;
16 1 _nop_ ();
17 1 _nop_ ();
18 1 _nop_ ();
19 1 _nop_ ();
20 1 Scl=1;
21 1 _nop_ ();
22 1 _nop_ ();
23 1 _nop_ ();
24 1 _nop_ ();
25 1 Sda=0;
26 1 _nop_ ();
27 1 _nop_ ();
28 1 _nop_ ();
29 1 _nop_ ();
30 1 Scl=0;
31 1 _nop_ ();
32 1 _nop_ ();
33 1 _nop_ ();
34 1 _nop_ ();
35 1 }
36
37 void IIC_Stop (void)
38 {
39 1 Sda=0;
40 1 _nop_ ();
41 1 _nop_ ();
42 1 _nop_ ();
43 1 _nop_ ();
44 1 Scl=0;
45 1 _nop_ ();
46 1 _nop_ ();
47 1 _nop_ ();
48 1 _nop_ ();
49 1 Scl=1;
50 1 _nop_ ();
51 1 _nop_ ();
52 1 _nop_ ();
53 1 _nop_ ();
54 1 Sda=1;
55 1 _nop_ ();
C51 COMPILER V7.20 I2C 05/15/2007 15:32:40 PAGE 2
56 1 _nop_ ();
57 1 _nop_ ();
58 1 _nop_ ();
59 1 }
60
61 void IIC_Read_Ack (void)
62 {
63 1 Scl=1;
64 1 _nop_ ();
65 1 _nop_ ();
66 1 _nop_ ();
67 1 _nop_ ();
68 1 if(Sda==1)
69 1 {
70 2 Ack=0;
71 2 }
72 1 else
73 1 {
74 2 Ack=1;
75 2 }
76 1 Scl=0;
77 1 _nop_ ();
78 1 _nop_ ();
79 1 _nop_ ();
80 1 _nop_ ();
81 1 }
82
83
84 void IIC_Write_Ack (void)
85 {
86 1 Sda=0;
87 1 _nop_ ();
88 1 _nop_ ();
89 1 _nop_ ();
90 1 _nop_ ();
91 1 Scl=1;
92 1 _nop_ ();
93 1 _nop_ ();
94 1 _nop_ ();
95 1 _nop_ ();
96 1 Scl=0;
97 1 _nop_ ();
98 1 _nop_ ();
99 1 _nop_ ();
100 1 _nop_ ();
101 1 }
102
103 void IIC_Write_NoAck (void)
104 {
105 1 Sda=1;
106 1 _nop_ ();
107 1 _nop_ ();
108 1 _nop_ ();
109 1 _nop_ ();
110 1 Scl=1;
111 1 _nop_ ();
112 1 _nop_ ();
113 1 _nop_ ();
114 1 _nop_ ();
115 1 Scl=0;
116 1 _nop_ ();
117 1 _nop_ ();
C51 COMPILER V7.20 I2C 05/15/2007 15:32:40 PAGE 3
118 1 _nop_ ();
119 1 _nop_ ();
120 1 }
121
122 unsigned char IIC_Read_Byte (void)
123 {
124 1 uint8 bitCount;
125 1 uint8 Temp;
126 1
127 1 Sda=1;
128 1 for(bitCount=0x00;bitCount<0x08;bitCount++)
129 1 {
130 2 Scl=1;
131 2 _nop_ ();
132 2 _nop_ ();
133 2 _nop_ ();
134 2 _nop_ ();
135 2 Temp=Temp<<1;
136 2 if(Sda==1)
137 2 {
138 3 Temp+=0x01;
139 3 }
140 2 Scl=0;
141 2 _nop_ ();
142 2 _nop_ ();
143 2 _nop_ ();
144 2 _nop_ ();
145 2 }
146 1 return(Temp);
147 1 }
148
149 void IIC_Write_Byte (unsigned char a)
150 {
151 1 uint8 bitCount;
152 1 uint8 Temp;
153 1
154 1 for(bitCount=0x00;bitCount<0x08;bitCount++)
155 1 {
156 2 Temp=a;
157 2 if((Temp<<bitCount)&0x80)
158 2 {
159 3 Sda=1;
160 3 }
161 2 else
162 2 {
163 3 Sda=0;
164 3 }
165 2 Scl=1;
166 2 _nop_ ();
167 2 _nop_ ();
168 2 _nop_ ();
169 2 _nop_ ();
170 2 Scl=0;
171 2 }
172 1 }
173
174 void Read_Acc (void) //read acceleration
175 {
176 1 IIC_Start ();
177 1 IIC_Write_Byte (0x20);
178 1 IIC_Read_Ack ();
179 1 IIC_Write_Byte (0x01);
C51 COMPILER V7.20 I2C 05/15/2007 15:32:40 PAGE 4
180 1 IIC_Read_Ack ();
181 1 IIC_Stop ();
182 1
183 1 IIC_Start ();
184 1 IIC_Write_Byte (0x21);
185 1 IIC_Read_Ack ();
186 1 *(&Temp0)=IIC_Read_Byte ();
187 1 IIC_Write_Ack ();
188 1 *(&Temp1)=IIC_Read_Byte ();
189 1 IIC_Write_Ack ();
190 1 *(&Temp2)=IIC_Read_Byte ();
191 1 IIC_Write_Ack ();
192 1 *(&Temp3)=IIC_Read_Byte ();
193 1 IIC_Write_NoAck ();
194 1 IIC_Stop ();
195 1
196 1 Ax=Temp0;
197 1 Ax=Ax<<8;
198 1 Ax+=Temp1;
199 1 Ay=Temp2;
200 1 Ay=Ay<<8;
201 1 Ay+=Temp3;
202 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 316 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = 8 ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -