版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机应用技术项目六CC2530单片机与PC的通信任务6.2PC控制CC2530开发板LED的亮与灭任务要求
实现用PC控制CC2530开发板D3、D4的亮与灭。PC通过串口调试助手发送数据给CC2530单片机,CC2530单片机通过串口进行数据的接收,来控制D3、D4的亮与灭。PC与CC2530单片机约定一个数据格式,表示控制的是D3的亮与灭,还是D4的亮与灭。1基础知识2相关寄存器3任务分析4任务实现一、基础知识
串口接收数据的方式CC2530单片机在数据接收完毕后,中断标志位TCON.URXxIF被置位,程序通过检测TCON.URXxIF来判断USARTx是否接收到数据。查询方式采用查询方式接收串口数据,实际上是程序不断地查询中断标志位TCON.URXxIF是否置位。如果查询到TCON.URXxIF的值没有置位,程序继续查询等待;如果查询到TCON.URXxIF置位,程序将TCON.URXxIF的值清零,并将接收/发送数据缓冲寄存器UxDBUF中的数据赋值给变量,完成数据接收。一、基础知识
串口接收数据的方式设置IEN0.URXxIE的值为1,则USARTx的接收中断使能。中断方式在中断服务函数中,对中断标志位TCON.URXxIF软件清零,接收/发送数据缓冲寄存器UxDBUF中的数据赋值给变量,完成数据接收。CC2530单片机在数据接收完毕后,中断标志位TCON.URXxIF被置位,就产生串口数据接收中断。一、基础知识
串口控制命令的格式控制命令分为3部分:命令开始标志、LED序号和亮/灭状态。例如,命令“*4O”,表示点亮D4命令开始标志是字符“*”,当串口接收到字符“*”时,标志着开始接收控制命令。LED的序号使用数字表示,使用一个字节数据。D3、D4灯分别用数字3、4分别表示。LED的亮/灭两种状态使用字符“O”和“C”表示,使用一个字节数据。“O”表示点亮LED;“C”表示熄灭LED。二、相关寄存器
UxCSR,USARTx控制和状态寄存器位名称复位操作描述7MODE0R/WUSART模式选择。0:SPI模式。1:UART模式6REN0R/WUART接收器使能。注意在UART完全配置之前不使能接收。0:禁用接收器。1:使能接收器5SLAVE0R/WSPI主或者从模式选择。0:SPI主模式。1:SPI从模式4FE0R/W0UART数据帧错误状态。0:无数据帧错误。1:字节收到不正确的停止位3ERR0R/W0UART奇偶错误状态。0:无奇偶错误检测。1:字节收到奇偶错误2RX_BYTE0R/W0接收字节状态。URAT模式和SPI从模式。当读U0DBUF该位自动清除,通过写0清除它,这样有效丢弃U0DBUF中的数据。0:没有接收到字节。1:准备好接收字节1TX_BYTE0R/W0发送字节状态。URAT模式和SPI主模式。0:字节没有被发送。1:写到数据缓存寄存器的最后字节被发送0ACTIVE0RUSART发送/接收主动状态、在SPI从模式下该位等于从模式选择。0:USART空闲。1:在发送或者接收模式USART忙碌三、任务分析
1.CC2530开发板上电后,CC2530单片机的串口处于等待接收状态,且D3和D4处于熄灭状态。2.PC按照现有的命令格式向CC2530单片机发送控制LED亮灭的控制命令。3.CC2530单片机处理PC发送的命令,并根据命令,点亮或者关闭LED。四、任务实现
串口初始化voidinit_USART0(){CLKCONCMD&=~0x40;while(CLKCONSTA&0x40);CLKCONCMD&=~0x07;PERCFG=0x00;//USART0使用位置1
P0SEL=0x3c;//P0端口用作串口,P0_2、P0_3引脚分别作为串口RX、TXU0BAUD=216;U0GCR=10;U0CSR|=0x80;//设置UART模式U0UCR|=0x80;//清除单元,并返回单元空闲状态URX0IF=0;U0CSR|=0x40;//接收使能}四、任务实现
接收数据uchar
c;
c=
U0DBUF;
//
读取接收到的字节
if(c
==
'*')
{
buff_RxDat[0]=c;
//控制命令起始字符存入接收数据缓冲数组
uIndex=0;
}
else
if(buff_RxDat[0]=='*')
{
//数据缓冲区有起始字符,正在接收控制命令
uIndex++;
buff_RxDat[uIndex]=c;
}四、任务实现
处理数据onoff=buff_RxDat[2]=='O'?1:0;
switch(buff_RxDat[1])
{
case
'3':
D3=onoff;
break;
case
'4':
D4=onoff;
break;
}运算符==?:是一个三元运算符,在该代码中的意思是,判断buffer_RxData[2]的值是否为字符“O”,如果是,那么buff_RxDat[2]=='O'?1:0的值为1,否则,该式子的值为0,进而将式子的值赋给变量onoff四、任务实现编译程序,并生成.hex文件,将.hex文件烧写
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论