?? receive.lst
字號(hào):
211 //void SendStr(INT8U *arr)
212 //{
213 // INT8U i;
214
215 // i = 0;
216 // while(arr[i] != '\0')
217 // {
218 // SendCh(arr[i]);
219 // i++;
220 // }
221 //}
222
223
224
225 //*****************************************************************************************
226 //函數(shù)名:SpisendByte(INT8U dat)
227 //輸入:發(fā)送的數(shù)據(jù)
228 //輸出:無
229 //功能描述:SPI發(fā)送接收一個(gè)字節(jié)
230 //*****************************************************************************************
231 INT8U SpiTxRxByte(INT8U dat)
232 {
233 1 INT8U i,temp;
234 1 temp = 0;
235 1
236 1 SCLK = 0;
237 1 for(i=0; i<8; i++)
238 1 {
239 2 if(dat & 0x80)//從最高位開始發(fā)送
240 2 {
241 3 MOSI = 1;
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 5
242 3 }
243 2 else MOSI = 0;
244 2 dat <<= 1;
245 2
246 2 SCLK = 1;
247 2 _nop_();
248 2 _nop_();
249 2
250 2 temp <<= 1;
251 2 if(MISO)temp++;
252 2 SCLK = 0;
253 2 _nop_();
254 2 _nop_();
255 2 }
256 1 return temp;
257 1 }
258
259
260
261
262 //*****************************************************************************************
263 //函數(shù)名:void RESET_CC1100(void)
264 //輸入:無
265 //輸出:無
266 //功能描述:復(fù)位CC1100
267 //*****************************************************************************************
268 void RESET_CC1100(void)
269 {
270 1 CSN = 0;
271 1 while (MISO);
272 1 SpiTxRxByte(CCxxx0_SRES); //寫入復(fù)位命令
273 1 while (MISO);
274 1 CSN = 1;
275 1 }
276
277
278
279 //*****************************************************************************************
280 //函數(shù)名:void POWER_UP_RESET_CC1100(void)
281 //輸入:無
282 //輸出:無
283 //功能描述:上電復(fù)位CC1100
284 //*****************************************************************************************
285 void POWER_UP_RESET_CC1100(void)
286 {
287 1 CSN = 1;
288 1 halWait(1);
289 1 CSN = 0;
290 1 halWait(1);
291 1 CSN = 1;
292 1 halWait(41);
293 1 RESET_CC1100(); //復(fù)位CC1100
294 1 }
295
296
297
298 //*****************************************************************************************
299 //函數(shù)名:void halSpiWriteReg(INT8U addr, INT8U value)
300 //輸入:地址和配置字
301 //輸出:無
302 //功能描述:SPI寫寄存器
303 //*****************************************************************************************
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 6
304 void halSpiWriteReg(INT8U addr, INT8U value)
305 {
306 1 CSN = 0;
307 1 while (MISO);
308 1 SpiTxRxByte(addr); //通過spi寫地址
309 1 SpiTxRxByte(value); //寫入配置
310 1 CSN = 1;
311 1 }
312
313
314
315
316 //*****************************************************************************************
317 //函數(shù)名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
318 //輸入:地址,寫入緩沖區(qū),寫入個(gè)數(shù)
319 //輸出:無
320 //功能描述:SPI連續(xù)寫配置寄存器
321 //*****************************************************************************************
322 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
323 {
324 1 INT8U i, temp;
325 1 temp = addr | WRITE_BURST;
326 1 CSN = 0;
327 1 while (MISO);
328 1 SpiTxRxByte(temp);
329 1 for (i = 0; i < count; i++)
330 1 {
331 2 SpiTxRxByte(buffer[i]);
332 2 }
333 1 CSN = 1;
334 1 }
335
336
337
338
339 //*****************************************************************************************
340 //函數(shù)名:void halSpiStrobe(INT8U strobe)
341 //輸入:命令
342 //輸出:無
343 //功能描述:SPI寫命令
344 //*****************************************************************************************
345 void halSpiStrobe(INT8U strobe)
346 {
347 1 CSN = 0;
348 1 while (MISO);
349 1 SpiTxRxByte(strobe); //寫入命令
350 1 CSN = 1;
351 1 }
352
353
354
355
356
357 //*****************************************************************************************
358 //函數(shù)名:INT8U halSpiReadReg(INT8U addr)
359 //輸入:地址
360 //輸出:該寄存器的配置字
361 //功能描述:SPI讀寄存器
362 //*****************************************************************************************
363 INT8U halSpiReadReg(INT8U addr)
364 {
365 1 INT8U temp, value;
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 7
366 1 temp = addr|READ_SINGLE;//讀寄存器命令
367 1 CSN = 0;
368 1 while (MISO);
369 1 SpiTxRxByte(temp);
370 1 value = SpiTxRxByte(0);
371 1 CSN = 1;
372 1 return value;
373 1 }
374
375
376 //*****************************************************************************************
377 //函數(shù)名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
378 //輸入:地址,讀出數(shù)據(jù)后暫存的緩沖區(qū),讀出配置個(gè)數(shù)
379 //輸出:無
380 //功能描述:SPI連續(xù)寫配置寄存器
381 //*****************************************************************************************
382 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
383 {
384 1 INT8U i,temp;
385 1 temp = addr | READ_BURST; //寫入要讀的配置寄存器地址和讀命令
386 1 CSN = 0;
387 1 while (MISO);
388 1 SpiTxRxByte(temp);
389 1 for (i = 0; i < count; i++)
390 1 {
391 2 buffer[i] = SpiTxRxByte(0);
392 2 }
393 1 CSN = 1;
394 1 }
395
396
397
398
399 //*****************************************************************************************
400 //函數(shù)名:INT8U halSpiReadReg(INT8U addr)
401 //輸入:地址
402 //輸出:該狀態(tài)寄存器當(dāng)前值
403 //功能描述:SPI讀狀態(tài)寄存器
404 //*****************************************************************************************
405 INT8U halSpiReadStatus(INT8U addr)
406 {
407 1 INT8U value,temp;
408 1 temp = addr | READ_BURST; //寫入要讀的狀態(tài)寄存器的地址同時(shí)寫入讀命令
409 1 CSN = 0;
410 1 while (MISO);
411 1 SpiTxRxByte(temp);
412 1 value = SpiTxRxByte(0);
413 1 CSN = 1;
414 1 return value;
415 1 }
416
417
418
419
420 //*****************************************************************************************
421 //函數(shù)名:void halRfWriteRfSettings(RF_SETTINGS *pRfSettings)
422 //輸入:無
423 //輸出:無
424 //功能描述:配置CC1100的寄存器
425 //*****************************************************************************************
426 void halRfWriteRfSettings(void)
427 {
C51 COMPILER V7.06 RECEIVE 04/12/2009 09:31:53 PAGE 8
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -