📄 contr.lst
字号:
C51 COMPILER V7.06 CONTR 03/04/2005 11:38:33 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE CONTR
OBJECT MODULE PLACED IN contr.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE contr.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 #include"reg52.h"
2 #include "intrins.h"
3 #define TRUE 1
4 #define FLASE 0
5 #define uchar unsigned char
6 #define uint unsigned int
7 #define ulong unsigned long
8 #define _Nop() _nop_()
9 sbit SDA2=P1^3;
10 sbit SCL1=P1^0;
11 bit ack1;
12 ////////////////////////////////
13 void JIYI_StartI2c( )
14 {
15 1
16 1 SDA2 = 1;
17 1 _Nop();
18 1 _Nop();
19 1 _Nop();
20 1 SCL1 = 1;
21 1 _Nop(); // after stop must wait > 4.7 can to new start
22 1 _Nop();
23 1 _Nop();
24 1 _Nop();
25 1 _Nop();
26 1 _Nop();
27 1 _Nop();
28 1 SDA2 = 0;
29 1 _Nop(); // the start signal keep up to > 4.0
30 1 _Nop();
31 1 _Nop();
32 1 _Nop();
33 1 _Nop();
34 1 _Nop();
35 1 _Nop();
36 1 SCL1 = 0;
37 1 _Nop(); // T_low > 4.7
38 1 _Nop();
39 1 _Nop();
40 1 _Nop();
41 1 _Nop();
42 1 _Nop();
43 1 _Nop();
44 1
45 1 }
46
47 void JIYI_StopI2c()
48 {
49 1 SDA2 = 0;
50 1 _Nop();
51 1 _Nop();
52 1 SCL1 = 1;
53 1 _Nop();
54 1 _Nop();
55 1 _Nop();
C51 COMPILER V7.06 CONTR 03/04/2005 11:38:33 PAGE 2
56 1 _Nop();
57 1 _Nop();
58 1 _Nop();
59 1 _Nop();
60 1 SDA2 = 1;
61 1 _Nop();
62 1 _Nop();
63 1 _Nop();
64 1 _Nop();
65 1 _Nop();
66 1 }
67
68 void JIYI_Send_byte( uchar c )
69 {
70 1 uchar BitCnt;
71 1 for( BitCnt = 0; BitCnt < 8; BitCnt ++ )
72 1 {
73 2 if((c << BitCnt) & 0x80) SDA2 = 1;
74 2 else SDA2 = 0;
75 2 _Nop();
76 2 _Nop();
77 2 _Nop();
78 2 SCL1 = 1;
79 2 _Nop();
80 2 _Nop();
81 2 _Nop();
82 2 _Nop();
83 2 _Nop();
84 2 _Nop();
85 2 _Nop();
86 2 SCL1 = 0;
87 2 _Nop();
88 2 _Nop();
89 2 _Nop();
90 2 }
91 1 _Nop();
92 1 _Nop();
93 1 _Nop();
94 1 SDA2 = 1;
95 1 _Nop();
96 1 _Nop();
97 1 _Nop();
98 1 SCL1 = 1;
99 1 _Nop();
100 1 _Nop();
101 1 _Nop();
102 1 _Nop();
103 1 _Nop();
104 1 _Nop();
105 1 if (SDA2 == 1) ack1 =0;
106 1 else ack1 = 1;
107 1 SCL1 = 0;
108 1 _Nop();
109 1 _Nop();
110 1 _Nop();
111 1 _Nop();
112 1 }
113
114 uchar JIYI_Rcv_byte()
115 {
116 1 uchar retc;
117 1 uchar BitCnt;
C51 COMPILER V7.06 CONTR 03/04/2005 11:38:33 PAGE 3
118 1
119 1 retc = 0;
120 1 SDA2 = 1;
121 1 for( BitCnt = 0 ; BitCnt < 8; BitCnt ++)
122 1 {
123 2 _Nop();
124 2 _Nop();
125 2 _Nop();
126 2 SCL1 = 0;
127 2 _Nop();
128 2 _Nop();
129 2 _Nop();
130 2 _Nop();
131 2 _Nop();
132 2 _Nop();
133 2 _Nop();
134 2 SCL1 = 1;
135 2 _Nop();
136 2 _Nop();
137 2 _Nop();
138 2 _Nop();
139 2 _Nop();
140 2 _Nop();
141 2 _Nop();
142 2 retc = retc << 1;
143 2 if (SDA2 == 1) retc= retc +1;
144 2 _Nop();
145 2 _Nop();
146 2 _Nop();
147 2 _Nop();
148 2 }
149 1 SCL1 = 0;
150 1 _Nop();
151 1 _Nop();
152 1 _Nop();
153 1 _Nop();
154 1 return(retc);
155 1 }
156
157 void JIYI_AckI2c( bit a )
158 {
159 1 if ( a == 0) SDA2 = 0;
160 1 else SDA2 = 1;
161 1 _Nop();
162 1 _Nop();
163 1 _Nop();
164 1 _Nop();
165 1 _Nop();
166 1 SCL1 = 1;
167 1 _Nop();
168 1 _Nop();
169 1 _Nop();
170 1 _Nop();
171 1 _Nop();
172 1 _Nop();
173 1 SCL1 = 0;
174 1 _Nop();
175 1 _Nop();
176 1 _Nop();
177 1 }
178 ///////////////////////
179 bit JIYI_RS16K ( uchar sla, uchar suba, uchar *s, uchar no )
C51 COMPILER V7.06 CONTR 03/04/2005 11:38:33 PAGE 4
180 {
181 1 uchar i;
182 1 JIYI_StartI2c ();
183 1 JIYI_Send_byte (sla);
184 1 if( ack1 == 0 ) return (0);
185 1 JIYI_Send_byte (suba);
186 1 if (ack1 == 0 ) return (0);
187 1 JIYI_StartI2c();
188 1 JIYI_Send_byte(sla + 1);
189 1 if ( ack1 == 0) return ( 0 );
190 1 for(i =0;i< no -1; i++)
191 1 {
192 2 *s = JIYI_Rcv_byte();
193 2 JIYI_AckI2c(0);
194 2 s++;
195 2 }
196 1 *s = JIYI_Rcv_byte();
197 1 JIYI_AckI2c(1);
198 1 JIYI_StopI2c();
199 1 return(1);
200 1 }
201 /////////////////////////////////////////////
202 bit JIYI_SendStr16K( uchar sla, uchar suba, uchar *s, uchar no )
203 {
204 1 uchar i;
205 1 JIYI_StartI2c();
206 1 JIYI_Send_byte(sla);
207 1 if(ack1 == 0)return (0);
208 1 JIYI_Send_byte(suba);
209 1 if(ack1 == 0)return (0);
210 1 for( i = 0; i < no ;i ++)
211 1 {
212 2 JIYI_Send_byte(*s);
213 2 if(ack1 == 0)return (0);
214 2 s++;
215 2 }
216 1 JIYI_StopI2c();
217 1 return (1);
218 1 }
219
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 350 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 12
IDATA SIZE = ---- ----
BIT SIZE = 1 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -