📄 receive.lst
字号:
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 //函数名:SpisendByte(INT8U dat)
227 //输入:发送的数据
228 //输出:无
229 //功能描述:SPI发送接收一个字节
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)//从最高位开始发送
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 //函数名:void RESET_CC1100(void)
264 //输入:无
265 //输出:无
266 //功能描述:复位CC1100
267 //*****************************************************************************************
268 void RESET_CC1100(void)
269 {
270 1 CSN = 0;
271 1 while (MISO);
272 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
273 1 while (MISO);
274 1 CSN = 1;
275 1 }
276
277
278
279 //*****************************************************************************************
280 //函数名:void POWER_UP_RESET_CC1100(void)
281 //输入:无
282 //输出:无
283 //功能描述:上电复位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(); //复位CC1100
294 1 }
295
296
297
298 //*****************************************************************************************
299 //函数名: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 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
318 //输入:地址,写入缓冲区,写入个数
319 //输出:无
320 //功能描述:SPI连续写配置寄存器
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 //函数名: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 //函数名: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 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
378 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
379 //输出:无
380 //功能描述:SPI连续写配置寄存器
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 //函数名:INT8U halSpiReadReg(INT8U addr)
401 //输入:地址
402 //输出:该状态寄存器当前值
403 //功能描述:SPI读状态寄存器
404 //*****************************************************************************************
405 INT8U halSpiReadStatus(INT8U addr)
406 {
407 1 INT8U value,temp;
408 1 temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入读命令
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 //函数名: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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -