CC1110程序Word文件下载.docx
- 文档编号:17965265
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:12
- 大小:20.70KB
CC1110程序Word文件下载.docx
《CC1110程序Word文件下载.docx》由会员分享,可在线阅读,更多相关《CC1110程序Word文件下载.docx(12页珍藏版)》请在冰豆网上搜索。
//
RFIF=0;
RFTXRXIF=0;
BytesToSend=bytes;
//
数据包长度就是byte,为方便实际应用中增加其他字节,定义了bytestosend变量
if(BytesToSend<
=64)
SIDLE();
//ExitRX/TX,turnofffrequencysynthesizerandexit
STX();
//SwitchradiotoTX
while(RFTXRXIF==0);
//等待发送结束
//清除发送标志
RFD=BytesToSend;
for(i=0;
i<
(BytesToSend-1);
i++)
RFD=*buff++;
//发送数据
}
RFD=*buff;
//发送最后一BYTE
while(RFIF&
IRQ_DONE==0);
RFIF&
=~IRQ_DONE;
//清结束标志
RFIF&
//Tx/Rxcompleted,clearinterruptflag
S1CON&
=~0x03;
//ClearthegeneralRFIFinterruptregisters
returnTRUE;
else
returnFALSE;
//接收函数,不使用DMA的接收
#define
WAIT_TIME
80
//unit
ms
BYTEReceive(BYTE__xdata*buff,BYTE*bytes)
//接收
BYTEBytesToReceive=0;
BYTEaddress;
BYTEi;
SRX();
resetTimer(APP_TIMER0);
while(RFTXRXIF==0){if(readTimer(APP_TIMER0)>
WAIT_TIME)returnFALSE;
};
//等待接收结束,如超时则强退
BytesToReceive=RFD;
//读取数据包总长度
//清除发送标志
//等待接收结束
address=RFD;
//读取匹配地址
if((BytesToReceive>
=64)||(BytesToReceive<
=0))
if(address)address=address;
//没用的语句,只是用来消除warning
(BytesToReceive-1);
buff=RFD;
//读取数据包长度
*bytes=(BytesToReceive);
CC1110SPI程序
CC1110SPI口程序
电路连接如下图:
SSN:
P04 SCK:
P05
MOSI:
P03 MISO:
PO2
和硬件SPI口有关的配置为P口的功能,
SPI口所在位置,SPI口的波特率,时钟
极性SPOL,时钟相伴CPHA,中断,当然还
有主从设备等设置.如果是和别的设备
传数的话,还应该注意高/低位先传的
问题。
文字上就说这么多,再贴一段
程序:
/***********************************************************/
//将芯片初始化到主/从模式
voidINIT_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
#ifdefSPI_MASTER_MODE
SPI_SETUP(0,57600,MY_SPI_M_OPTIONS);
//SPI0,57600,
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);
/**********************************************************************/
//主模式发一字节
voidSPI0_M_SEND_BYTE(BYTEdata)
while(USART0_BUSY());
U0DBUF=data;
while(!
USART0_BYTE_TRANSMITTED());
U0CSR&
=~0x02;
voidSPI0_S_SEND_BYTE(BYTEdata)
本例基于无线龙的PS个人学习开发系统,仅供初学者参考!
功能是按下电池扩展板上的K1键,CC1110模块相应小灯的闪烁频率加快,实现5级调频,K2按键用于控制小灯的切换,即按一下,第一个灯亮,再按一下第二个灯亮,依次切换。
全部程序如下
#include
typedefunsignedintuint;
typedefunsignedcharuchar;
//定义控制灯的端口
#defineled1P1_1//定义LED1为P10口控制
#defineled2P1_0//定义LED2为P11口控制
#defineK1P1_2
#defineK2P1_3
/****************************
//延时
*****************************/
voidDelay(uintn)
{
uinttt;
for(tt=0;
ttfor(tt=0;
tt}
/*****************************************
//按键及IO口初始化
*****************************************/
voidInitKey_IO(void)
P1DIR&
=~0X0C;
/*按键在P12P13*/
P1INP&
=~0x0c;
/*上、下拉*/
//P2INP|=0x40;
//P2.6是控制P1的上下拉作用//这里的两项都可以不设置
P1DIR|=0x03;
//P10、P11定义为输出
}
//读键值
ucharKeyScan(void)//无形参、带返回值
if(K1==0)
{
Delay(100);
//while(!
K1);
return
(1);
}
if(K2==0)
//while(!
K2);
return
(2);
return(0);
/***************************
///任务模块
***************************/
voidLED1(void)
led1=~led1;
voidLED2(void)
led2=~led2;
//主函数
voidmain(void)
unsignedinttime=50000;
void(*task)(void);
//声明指针
task=LED2;
//初始化指针
InitKey_IO();
//初始化IO口
while
(1)
ucharKeyvalue=KeyScan();
//获取键值、注意声明ucharKeyvalue
task();
//调用任务
Delay(time);
if(Keyvalue==1)
if(task==LED2)//切换任务(切换闪灯)
task=LED1;
led2=1;
elseif(task==LED1)
led1=1;
elseif(Keyvalue==2)//调节闪灯频率、实现五级调频
time=time-10000;
if(time<
10000)
time=50000;
死鱼还没死
[复制][收藏]
死鱼还没死干嘛不去死
首页留言板加友情博客天涯博客博客家园免费注册帮助
博客信息
博主:
ajq1987栏目分类
全部博文
(1)
CC1110
(1)
博客登录
用户:
密码:
最新文章
CC1110最简单收发程序已改(2009-12-16)
更多>
>
最新评论留言友情博客标签列表博客搜索
博客音乐日志存档
2009-12
(1)
友情链接统计信息
访问:
108次
今日访问:
1次
日志:
1篇
评论:
0个
留言:
建站时间:
2009-12-16
博客成员
ajq1987管理员
最近访客
本站域名:
<
>
CC1110最简单收发程序已改作者:
ajq1987提交日期:
2009-12-1620:
31:
00|分类:
CC1110|访问量:
44
/**********************************************************************
*文件:
RF_radio.c
*功能:
RF发送和接收(非DMA也没AES加密),
*作者:
死鱼
#include"
mydefined.h"
hal.h.h"
//----------------------------------------------------------------------
//发送函数
BYTETransmit(BYTE__xdata*buff,BYTElength,BYTEaddressto)//发送
{
BYTEi;
RFIF=0;
RFTXRXIF=0;
if(length<
{
SIDLE();
//使空闲
STX();
//转入发送
while(RFTXRXIF==0);
RFD=length;
//发送数据包长度
RFD=addressto;
//发送目标地址
for(i=0;
(length-1);
i++)
RFD=buff++;
}
RFD=buff;
//发送最后一BYTE
while(RFIF&
RFIF&
//发送完毕,清除中断标志
S1CON&
returnTRUE;
else
returnFALSE;
}
//接收函数,不使用DMA的接收
#defineWAIT_TIME80//unitms
BYTEReceive(BYTE__xdata*buff,BYTE*length,BYTEaddress2)//接收
BYTElengthToReceive=0;
BYTEaddress;
SRX();
resetTimer(APP_TIMER0);
while(RFTXRXIF==0){if(readTimer(APP_TIMER0)>
//等待接收结束,如超时则强退
lengthToReceive=RFD;
//清除发送标志
//等待接收结束
address=RFD;
//读取匹配地址
if(address!
=address2)returnFALSE;
//检查看是否是要接收的地址
if((lengthToReceive>
=64)||(lengthToReceive<
//检查数据包长度
(lengthToReceive-1);
buff++=RFD;
//读取数据包长度
*length=lengthToReceive;
//发送完毕,清除中断标志
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CC1110 程序