📄 cc1100_tx.lst
字号:
199 }
200 */
201 /****************************************************************
-*************************
202 //函数名:SendCh(ch)
203 //输入:无
204 //输出:无
205 //功能描述:串口发送一个字符
206 /****************************************************************
-*************************/
207 void SendCh(INT8U ch)
208 {
209 1 SBUF = ch;
210 1 while(!TI);
211 1 TI = 0;
212 1 }
213
214
215 /****************************************************************
-*************************
216 //函数名:void SendStr(INT8U *arr)
217 //输入:发送的字符串
218 //输出:无
219 //功能描述:发送一个字符串
220 /****************************************************************
-*************************/
221 void SendStr(INT8U *arr)
222 {
223 1 INT8U i;
C51 COMPILER V7.06 CC1100_TX 03/30/2006 10:59:06 PAGE 5
224 1
225 1 i = 0;
226 1 while(arr[i] != '\0')
227 1 {
228 2 SendCh(arr[i]);
229 2 i++;
230 2 }
231 1 }
232
233 //***************************************************************
-**************************
234 //函数名:SpisendByte(INT8U dat)
235 //输入:发送的数据
236 //输出:无
237 //功能描述:SPI发送一个字节
238 //***************************************************************
-**************************
239 INT8U SpiTxRxByte(INT8U dat)
240 {
241 1 INT8U i,temp;
242 1 temp = 0;
243 1
244 1 SCK = 0;
245 1 for(i=0; i<8; i++)
246 1 {
247 2 if(dat & 0x80)
248 2 {
249 3 MOSI = 1;
250 3 }
251 2 else MOSI = 0;
252 2 dat <<= 1;
253 2
254 2 SCK = 1;
255 2 _nop_();
256 2 _nop_();
257 2
258 2 temp <<= 1;
259 2 if(MISO)temp++;
260 2 SCK = 0;
261 2 _nop_();
262 2 _nop_();
263 2 }
264 1 return temp;
265 1 }
266
267 //***************************************************************
-**************************
268 //函数名:void RESET_CC1100(void)
269 //输入:无
270 //输出:无
271 //功能描述:复位CC1100
272 //***************************************************************
-**************************
273 void RESET_CC1100(void)
274 {
275 1 CSN = 0;
276 1 while (GDO1);
277 1 SpiTxRxByte(CCxxx0_SRES); //写入复位命令
278 1 while (GDO1);
279 1 CSN = 1;
280 1 }
281
282 //***************************************************************
-**************************
C51 COMPILER V7.06 CC1100_TX 03/30/2006 10:59:06 PAGE 6
283 //函数名:void POWER_UP_RESET_CC1100(void)
284 //输入:无
285 //输出:无
286 //功能描述:上电复位CC1100
287 //***************************************************************
-**************************
288 void POWER_UP_RESET_CC1100(void)
289 {
290 1 CSN = 1;
291 1 halWait(1);
292 1 CSN = 0;
293 1 halWait(1);
294 1 CSN = 1;
295 1 halWait(41);
296 1 RESET_CC1100(); //复位CC1100
297 1 }
298
299 //***************************************************************
-**************************
300 //函数名:void halSpiWriteReg(INT8U addr, INT8U value)
301 //输入:地址和配置字
302 //输出:无
303 //功能描述:SPI写寄存器
304 //***************************************************************
-**************************
305 void halSpiWriteReg(INT8U addr, INT8U value)
306 {
307 1 CSN = 0;
308 1 while (GDO1);
309 1 SpiTxRxByte(addr); //写地址
310 1 SpiTxRxByte(value); //写入配置
311 1 CSN = 1;
312 1 }
313
314 //***************************************************************
-**************************
315 //函数名:void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT
-8U count)
316 //输入:地址,写入缓冲区,写入个数
317 //输出:无
318 //功能描述:SPI连续写配置寄存器
319 //***************************************************************
-**************************
320 void halSpiWriteBurstReg(INT8U addr, INT8U *buffer, INT8U count)
321 {
322 1 INT8U i, temp;
323 1 temp = addr | WRITE_BURST;
324 1 CSN = 0;
325 1 while (GDO1);
326 1 SpiTxRxByte(temp);
327 1 for (i = 0; i < count; i++)
328 1 {
329 2 SpiTxRxByte(buffer[i]);
330 2 }
331 1 CSN = 1;
332 1 }
333
334 //***************************************************************
-**************************
335 //函数名:void halSpiStrobe(INT8U strobe)
336 //输入:命令
337 //输出:无
338 //功能描述:SPI写命令
339 //***************************************************************
C51 COMPILER V7.06 CC1100_TX 03/30/2006 10:59:06 PAGE 7
-**************************
340 void halSpiStrobe(INT8U strobe)
341 {
342 1 CSN = 0;
343 1 while (GDO1);
344 1 SpiTxRxByte(strobe); //写入命令
345 1 CSN = 1;
346 1 }
347
348
349
350
351
352 //***************************************************************
-**************************
353 //函数名:INT8U halSpiReadReg(INT8U addr)
354 //输入:地址
355 //输出:该寄存器的配置字
356 //功能描述:SPI读寄存器
357 //***************************************************************
-**************************
358 INT8U halSpiReadReg(INT8U addr)
359 {
360 1 INT8U temp, value;
361 1 temp = addr|READ_SINGLE;//读寄存器命令
362 1 CSN = 0;
363 1 while (GDO1);
364 1 SpiTxRxByte(temp);
365 1 value = SpiTxRxByte(0);
366 1 CSN = 1;
367 1 return value;
368 1 }
369
370
371 //***************************************************************
-**************************
372 //函数名:void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8
-U count)
373 //输入:地址,读出数据后暂存的缓冲区,读出配置个数
374 //输出:无
375 //功能描述:SPI连续写配置寄存器
376 //***************************************************************
-**************************
377 void halSpiReadBurstReg(INT8U addr, INT8U *buffer, INT8U count)
378 {
379 1 INT8U i,temp;
380 1 temp = addr | READ_BURST; //写入要读的配置寄存器地址和读命令
381 1 CSN = 0;
382 1 while (GDO1);
383 1 SpiTxRxByte(temp);
384 1 for (i = 0; i < count; i++)
385 1 {
386 2 buffer[i] = SpiTxRxByte(0);
387 2 }
388 1 CSN = 1;
389 1 }
390
391
392 //***************************************************************
-**************************
393 //函数名:INT8U halSpiReadReg(INT8U addr)
394 //输入:地址
395 //输出:该状态寄存器当前值
396 //功能描述:SPI读状态寄存器
C51 COMPILER V7.06 CC1100_TX 03/30/2006 10:59:06 PAGE 8
397 //***************************************************************
-**************************
398 INT8U halSpiReadStatus(INT8U addr)
399 {
400 1 INT8U value,temp;
401 1 temp = addr | READ_BURST; //写入要读的状态寄存器的地址同时写入
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -