📄 si4421.lst
字号:
168 1 unsigned char i;
169 1 unsigned int u,k;
170 1 //P2 = 0xFF;
171 1 sdi = 0;
172 1 nsel = 0;
173 1 // spisendcommand(0xca83);
174 1 spisendcommand(0x8228);//transimission starts turn on crystal
C51 COMPILER V8.16 SI4421 12/10/2009 11:19:18 PAGE 4
175 1 // sdi = 0;
176 1 // nsel = 0;
177 1
178 1 len=len+4; //字节固定同步头
179 1
180 1 for(i=0;i<len;i++)
181 1 {
182 2 nsel=0;
183 2 //while(!sdo);
184 2
185 2 for(k=0;k<6000;k++)
186 2 {
187 3 if(sdo)
188 3 {
189 4 break;
190 4 }
191 3 }
192 2 if(k==6000)
193 2 { // nres=0;
194 3 // delayms(50);
195 3 // nres=1;
196 3 ia442xinit();
197 3 spirevtwobyte();
198 3 spisendcommand(0x8288); //电源管理 whole receive crystal on
199 3 spisendcommand(0xca83); //FIFO COMMAND
200 3 if(DEBUG) Printf_String("\r\n[msg:]003 si4421's sdo is dead but she can receive");
201 3 return;
202 3 }
203 2
204 2
205 2 u=0xb8;
206 2 u<<=8;
207 2 u+=txdata[i];
208 2 spisendcommand(u);
209 2 }
210 1 nsel=0;
211 1 //while(!sdo);
212 1 for(k=0;k<6000;k++)
213 1 {
214 2 if(sdo)
215 2 {
216 3 break;
217 3 }
218 2 }
219 1 if(k==6000)
220 1 {
221 2 // nres=0;
222 2 // delayms(50);
223 2 // nres=1;
224 2
225 2 ia442xinit();
226 2 spirevtwobyte();
227 2 spisendcommand(0x8288); //电源管理 whole receive crystal on
228 2 spisendcommand(0xca83); //FIFO COMMAND
229 2 if(DEBUG) Printf_String("\r\n[msg:]004 si4421's sdo is dead but she can receive");
230 2 return;
231 2 }
232 1 spisendcommand(0xb8aa);//Transmitter Register Write Command byte aa
233 1 nsel=0;
234 1 // while(!sdo);
235 1 for(k=0;k<6000;k++)
236 1 {
C51 COMPILER V8.16 SI4421 12/10/2009 11:19:18 PAGE 5
237 2 if(sdo)
238 2 {
239 3 break;
240 3 }
241 2 }
242 1 if(k==6000)
243 1 {
244 2 ia442xinit();
245 2 spirevtwobyte();
246 2 spisendcommand(0x8288); //电源管理 whole receive crystal on
247 2 spisendcommand(0xca83); //FIFO COMMAND
248 2 if(DEBUG) Printf_String("\r\n[msg:]005 si4421's sdo is dead but she can receive");
249 2 return;
250 2 }
251 1 spisendcommand(0x8288);//Enables the whole receiver chain Turns on the crystal
252 1 spirevtwobyte();//读状态
253 1 nsel=1;
254 1 }
255 /******************************************************************************
256 ** 函数: spisendcommand()
257 ** 入参: unsigned int x
258 ** 返回:
259 ** 说明: 写指令
260 ******************************************************************************/
261 void spisendcommand(unsigned int x)
262 {
263 1 unsigned char comdata1,comdata2;
264 1 unsigned int a;
265 1 a=x;
266 1 nsel=0;
267 1 comdata2=a;
268 1 comdata1=a>>8;
269 1 spisendbyte(comdata1);
270 1 spisendbyte(comdata2);
271 1 nsel=1;
272 1 }
273 /******************************************************************************
274 ** 函数: spisendbyte(unsigned char x)
275 ** 入参: unsigned char x
276 ** 返回:
277 ** 说明: 写8位数据
278 ******************************************************************************/
279 void spisendbyte(unsigned char x)
280 {
281 1 unsigned char i,bytedata;
282 1 bytedata=x;
283 1 for(i=0;i<8;i++)
284 1 {
285 2 sck=0;
286 2 sdi=bytedata&0x80;
287 2 bytedata=bytedata<<1;
288 2 sck=1;
289 2 }
290 1 sck=0;
291 1 sdi=0;
292 1 }
293 /******************************************************************************
294 ** 函数: unsigned int spirevtwobyte()
295 ** 入参: u
296 ** 返回:
297 ** 说明: 读状态
298 ******************************************************************************/
C51 COMPILER V8.16 SI4421 12/10/2009 11:19:18 PAGE 6
299 unsigned int spirevtwobyte() //读状态
300 {
301 1 unsigned int u;
302 1 nsel=0;
303 1 u=spirevbyte();
304 1 u<<=8;
305 1 u+=spirevbyte();
306 1 nsel=1;
307 1 return(u);
308 1 }
309 /******************************************************************************
310 ** 函数: unsigned char spirevbyte()
311 ** 入参:
312 ** 返回: bytedata
313 ** 说明: 读8位数据
314 ******************************************************************************/
315 unsigned char spirevbyte()
316 {
317 1 unsigned char i,bytedata;
318 1 sdi=0;
319 1 sck=0;
320 1 bytedata=0;
321 1 for(i=0;i<8;i++)
322 1 {
323 2 sck=1;
324 2 bytedata=bytedata<<1;
325 2 if(sdo) bytedata+=1;
326 2 sck=0;
327 2 }
328 1 return(bytedata);
329 1
330 1 }
331 /*********************************@end@**************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 834 ----
CONSTANT SIZE = 265 ----
XDATA SIZE = ---- 12
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = 1 ----
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 + -