📄 1100.lst
字号:
217 0x06, // IOCFG0D GDO0 output pin configuration. Refer to SmartRF?Studio User Manual for detailed p
-seudo register explanation.
218
219 0x04, // PKTCTRL1 Packet automation control.
220 0x05, // PKTCTRL0 Packet automation control.
221 0x00, // ADDR Device address.
222 0x0c // PKTLEN Packet length.
223 };
224 //*****************************************************************************************
225 //函数名:delay(unsigned int s)
226 //输入:时间
227 //输出:无
228 //功能描述:普通廷时,内部用
229 //*****************************************************************************************
230 static void delay(unsigned int s)
231 {
232 1 unsigned int i;
233 1 for(i=0; i<s; i++);
234 1 for(i=0; i<s; i++);
235 1 }
236
237 //*****************************************************************************************
238 void delay1( INT16U i)
239 {
C51 COMPILER V7.06 1100 12/20/2007 00:50:10 PAGE 5
240 1 for(;i>0;i--);
241 1 }
242 void halWait(INT16U timeout) {
243 1 do {
244 2 _nop_();
245 2 _nop_();
246 2 _nop_();
247 2 _nop_();
248 2 _nop_();
249 2 _nop_();
250 2 _nop_();
251 2 _nop_();
252 2 _nop_();
253 2 _nop_();
254 2 _nop_();
255 2 _nop_();
256 2 _nop_();
257 2 _nop_();
258 2 _nop_();
259 2 } while (--timeout);
260 1 }
261
262
263 void SpiInit(void)
264 {
265 1 CSN=0;
266 1 SCK=0;
267 1 CSN=1;
268 1 }
269
270 /*****************************************************************************************
271 //函数名:CpuInit()
272 //输入:无
273 //输出:无
274 //功能描述:SPI初始化程序
275 /*****************************************************************************************/
276 void CpuInit(void)
277 {
278 1 SpiInit();
279 1 delay(5000);
280 1 }
281
282
283 //*****************************************************************************************
284 //函数名:SpisendByte(INT8U dat)
285 //输入:发送的数据
286 //输出:无
287 //功能描述:SPI发送一个字节
288 //*****************************************************************************************
289 INT8U SpiTxRxByte(INT8U dat)
290 {
291 1 INT8U i,temp;
292 1 temp = 0;
293 1
294 1 SCK = 0;
295 1 for(i=0; i<8; i++)
296 1 {
297 2 if(dat & 0x80)
298 2 {
299 3 MOSI = 1;
300 3 }
301 2 else MOSI = 0;
C51 COMPILER V7.06 1100 12/20/2007 00:50:10 PAGE 6
302 2 dat <<= 1;
303 2
304 2 SCK = 1;
305 2 _nop_();
306 2 _nop_();
307 2
308 2 temp <<= 1;
309 2 if(MISO)temp++;
310 2 SCK = 0;
311 2 _nop_();
312 2 _nop_();
313 2 }
314 1 return temp;
315 1 }
316
317 //*****************************************************************************************
318 //函数名:void RESET_CC1100(void)
319 //输入:无
320 //输出:无
321 //功能描述:复位CC1100
322 //*****************************************************************************************
323 void RESET_CC1100(void)
324 {
325 1 CSN = 0;
326 1 while (MISO);
327 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
328 1 while (MISO);
329 1 CSN = 1;
330 1 }
331
332 //*****************************************************************************************
333 //函数名:void POWER_UP_RESET_CC1100(void)
334 //输入:无
335 //输出:无
336 //功能描述:上电复位CC1100
337 //*****************************************************************************************
338 void POWER_UP_RESET_CC1100(void)
339 {
340 1 CSN = 1;
341 1 halWait(1);
342 1 CSN = 0;
343 1 halWait(1);
344 1 CSN = 1;
345 1 halWait(41);
346 1 RESET_CC1100(); //复位CC1100
347 1 }
348
349 //*****************************************************************************************
350 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
351 //输入:地址和配置字
352 //输出:无
353 //功能描述:SPI写寄存器
354 //*****************************************************************************************
355 void halSpiWriteReg(INT8U addr, INT8U value)
356 {
357 1 CSN = 0;
358 1 while (MISO);
359 1 SpiTxRxByte(addr); //写地址
360 1 SpiTxRxByte(value); //写入配置
361 1 CSN = 1;
362 1 }
363
C51 COMPILER V7.06 1100 12/20/2007 00:50:10 PAGE 7
364 //*****************************************************************************************
365 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
366 //输入:地址,写入缓冲区,写入个数
367 //输出:无
368 //功能描述:SPI连续写配置寄存器
369 //*****************************************************************************************
370 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
371 {
372 1 INT8U i, temp;
373 1 temp = addr | WRITE_BURST;
374 1 CSN = 0;
375 1 while (MISO);
376 1 SpiTxRxByte(temp);
377 1 for (i = 0; i < count; i++)
378 1 {
379 2 SpiTxRxByte(buffer[i]);
380 2 }
381 1 CSN = 1;
382 1 }
383
384 //*****************************************************************************************
385 //函数名:void halSpiStrobe(INT8U strobe)
386 //输入:命令
387 //输出:无
388 //功能描述:SPI写命令
389 //*****************************************************************************************
390 void halSpiStrobe(INT8U strobe)
391 {
392 1 CSN = 0;
393 1 while (MISO);
394 1 SpiTxRxByte(strobe); //写入命令
395 1 CSN = 1;
396 1 }
397
398
399
400
401
402 //*****************************************************************************************
403 //函数名:INT8U halSpiReadReg(INT8U addr)
404 //输入:地址
405 //输出:该寄存器的配置字
406 //功能描述:SPI读寄存器
407 //*****************************************************************************************
408 INT8U halSpiReadReg(INT8U addr)
409 {
410 1 INT8U temp, value;
411 1 temp = addr|READ_SINGLE;//读寄存器命令
412 1 CSN = 0;
413 1 while (MISO);
414 1 SpiTxRxByte(temp);
415 1 value = SpiTxRxByte(0);
416 1 CSN = 1;
417 1 return value;
418 1 }
419
420
421 //*****************************************************************************************
422 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
423 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
424 //输出:无
425 //功能描述:SPI连续写配置寄存器
C51 COMPILER V7.06 1100 12/20/2007 00:50:10 PAGE 8
426 //*****************************************************************************************
427 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
428 {
429 1 INT8U i,temp;
430 1 temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
431 1 CSN = 0;
432 1 while (MISO);
433 1 SpiTxRxByte(temp);
434 1 for (i = 0; i < count; i++)
435 1 {
436 2 buffer[i] = SpiTxRxByte(0);
437 2 }
438 1 CSN = 1;
439 1 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -