ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:20.70KB ,
资源ID:5011610      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5011610.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(CC1110程序.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

CC1110程序.docx

1、CC1110程序CC1110最简单的收发程序/*文件: wxl_radio.c*功能: RF发送和接收(非DMA),初版,还可能有BUG*作者: emot*版本: v1.0*说明:宏来源于TI的hal.h*修订记录-|时间 原因修订人|2009年4月05日初写emot|*/*头文件*/#include includes.h#define /-/发送函数/-BYTE Transmit(BYTE _xdata *buff,BYTE bytes)/发送BYTE i,BytesToSend; /RFIF = 0;RFTXRXIF = 0;BytesToSend = bytes ;/数据包长度就是byt

2、e,为方便实际应用中增加其他字节,定义了bytestosend变量if(BytesToSend = 64)SIDLE();/ Exit RX / TX, turn off frequency synthesizer and exitSTX(); / Switch radio to TXwhile(RFTXRXIF = 0); / 等待发送结束RFTXRXIF = 0; / 清除发送标志RFD = BytesToSend;while(RFTXRXIF = 0); / 等待发送结束RFTXRXIF = 0; / 清除发送标志for(i=0;iWAIT_TIME)return FALSE;/ 等待接

3、收结束,如超时则强退BytesToReceive = RFD; / 读取数据包总长度RFTXRXIF = 0; / 清除发送标志while(RFTXRXIF = 0)if(readTimer(APP_TIMER0)WAIT_TIME)return FALSE;/ 等待接收结束address = RFD;/ 读取匹配地址RFTXRXIF = 0; / 清除发送标志if(BytesToReceive = 64)|(BytesToReceive = 0)return FALSE;if(address)address = address; /没用的语句,只是用来消除warningfor(i=0;iWA

4、IT_TIME)return FALSE;/ 等待接收结束buff = RFD;/ 读取数据包长度RFTXRXIF = 0; / 清除发送标志*bytes = (BytesToReceive);SIDLE();return TRUE;CC1110 SPI 程序CC1110 SPI 口程序电路连接如下图:SSN:P04SCK:P05MOSI:P03MISO:PO2和硬件SPI口有关的配置为P口的功能,SPI口所在位置,SPI口的波特率,时钟极性SPOL,时钟相伴CPHA,中断,当然还有主从设备等设置.如果是和别的设备传数的话,还应该注意高/低位先传的问题。文字上就说这么多,再贴一段程序:/*/将

5、芯片初始化到主/从模式void INIT_SPI(void) IO_FUNC_PORT_PIN(0,2,IO_FUNC_PERIPH); IO_FUNC_PORT_PIN(0,3,IO_FUNC_PERIPH); /IO_FUNC_PORT_PIN(0,4,IO_FUNC_PERIPH); IO_FUNC_PORT_PIN(0,5,IO_FUNC_PERIPH); IO_PER_LOC_SPI0_AT_PORT0_PIN2345(); /串口0,位置1#ifdef SPI_MASTER_MODE SPI_SETUP(0,57600,MY_SPI_M_OPTIONS); /SPI0,57600,

6、 IO_FUNC_PORT_PIN(0,4,IO_FUNC_GIO); IO_DIR_PORT_PIN(0,4,IO_OUT); P0_4 = 0;#else SPI_SETUP(0,57600,MY_SPI_S_OPTIONS); IO_FUNC_PORT_PIN(0,4,IO_FUNC_PERIPH);#endif INT_ENABLE(INUM_URX0,INT_ON); INT_ENABLE(INUM_UTX0,INT_ON); INT_GLOBAL_ENABLE(INT_ON);/*/主模式发一字节void SPI0_M_SEND_BYTE(BYTE data) while(USAR

7、T0_BUSY(); U0DBUF = data; while(!USART0_BYTE_TRANSMITTED(); U0CSR &= 0x02;void SPI0_S_SEND_BYTE(BYTE data) while(USART0_BUSY(); U0DBUF = data;本例基于无线龙的PS个人学习开发系统,仅供初学者参考! 功能是按下电池扩展板上的K1键,CC1110模块相应小灯的闪烁频率加快,实现5级调频,K2按键用于控制小灯的切换,即按一下,第一个灯亮,再按一下第二个灯亮,依次切换。 全部程序如下#include typedef unsigned int uint; type

8、def unsigned char uchar; /定义控制灯的端口 #define led1 P1_1 /定义LED1为P10口控制 #define led2 P1_0 /定义LED2为P11口控制 #define K1 P1_2 #define K2 P1_3 /* /延时 */ void Delay(uint n) uint tt; for(tt = 0;tt for(tt = 0;tt for(tt = 0;tt for(tt = 0;tt for(tt = 0;tt /* /按键及IO口初始化 */ void InitKey_IO(void) P1DIR &= 0X0C; /*按键在

9、P12 P13*/ P1INP &= 0x0c; /*上、下拉*/ / P2INP |= 0x40; /P2.6是控制P1的上下拉作用 /这里的两项都可以不设置 P1DIR |= 0x03; /P10、P11定义为输出 /* /读键值 */ uchar KeyScan(void) /无形参、带返回值 if(K1 = 0) Delay(100); if(K1 = 0) /while(!K1); return(1); if(K2 = 0) Delay(100); if(K2 = 0) / while(!K2); return(2); return(0); /* /任务模块 */ void LED1

10、(void) led1=led1; void LED2(void) led2=led2; /* /主函数 */ void main(void) unsigned int time=50000; void (*task)(void); /声明指针 task=LED2; /初始化指针 InitKey_IO(); /初始化IO口 while(1) uchar Keyvalue = KeyScan(); /获取键值、注意声明uchar Keyvalue task(); /调用任务 Delay(time); if(Keyvalue=1) if(task=LED2) /切换任务(切换闪灯) task=LE

11、D1; led2=1; else if(task=LED1) task=LED2; led1=1; else if(Keyvalue=2) /调节闪灯频率、实现五级调频 time=time-10000; if(time 最新评论留言友情博客标签列表博客搜索 博客音乐日志存档2009-12 ( 1 ) 友情链接统计信息访问:108 次今日访问:1次日志: 1篇评论: 0 个留言: 0 个建站时间: 2009-12-16博客成员ajq1987 管 理 员最近访客本站域名: CC1110 最简单收发程序已改作者:ajq1987 提交日期:2009-12-16 20:31:00 | 分类:CC1110

12、 | 访问量:44 /*文件: RF_radio.c*功能: RF发送和接收(非DMA也没AES加密),*作者: 死鱼/*#include mydefined.h#include hal.h.h/-/发送函数/-BYTE Transmit(BYTE _xdata *buff,BYTE length,BYTE addressto) /发送 BYTE i; / RFIF = 0; RFTXRXIF = 0; if(length = 64) SIDLE(); / 使空闲 STX(); / 转入发送 while(RFTXRXIF = 0); / 等待发送结束 RFTXRXIF = 0; / 清除发送标

13、志 RFD = length; /发送数据包长度 while(RFTXRXIF = 0); / 等待发送结束 RFTXRXIF = 0; / 清除发送标志 RFD = addressto; /发送目标地址 for(i=0;iWAIT_TIME)return FALSE; / 等待接收结束,如超时则强退 lengthToReceive = RFD; / 读取数据包总长度 RFTXRXIF = 0; / 清除发送标志 while(RFTXRXIF = 0)if(readTimer(APP_TIMER0)WAIT_TIME)return FALSE; / 等待接收结束 address = RFD;

14、/ 读取匹配地址 RFTXRXIF = 0; / 清除发送标志 if(address!=address2) return FALSE; /检查看是否是要接收的地址 if(lengthToReceive = 64)|(lengthToReceive = 0) return FALSE; /检查数据包长度 for(i=0;iWAIT_TIME)return FALSE; / 等待接收结束 buff+ = RFD; / 读取数据包长度 RFTXRXIF = 0; / 清除发送标志 *length = lengthToReceive; SIDLE(); RFIF &= IRQ_DONE; / 发送完毕,清除中断标志 S1CON &= 0x03; / Clear the general RFIF interrupt registers return TRUE;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1