/**--------------文件信息-----------------------------------------------------
**文 件 名: main.c
**创 建 人: LL
**最后修改日期: 2010-08-25
**描 述: 串口收发数测试
**--------------当前版本修订---------------------------------------------------
** 修改人:
** 日 期:
** 描 述:
** 说 明:
**
*****************************************************************************/
#include "ioCC2530.h"
#include <string.h>
#define uint unsigned int
#define uchar unsigned char
#define FALSE 0
#define TURE 1
//定义控制灯的端口
#define led1 P1_0
#define led2 P1_1
void InitIO(void);
void InitUart(void);
void SendString(char*string,uint legth);
char Recdata[1000]="hello...TianYun WuXieJi";//由字符串决定数组的大小
//Recdata[]="hello...TianYgggggggggggJi";
uchar RTflag = 1; //接收发送标志
uchar temp; // 存放接受的数据
uchar len; //存放获得的字符串的长度
uint datanumber = 0; //字符串长度
/*****************************************************************************
函数名称: void DelayXms (unsigned char Count)
功能描述: 长软件延时
输入参数: Count
其它:
*****************************************************************************/
void DelayXms(unsigned int Count)
{
unsigned int i;
unsigned int j;
for(i = 0; i < Count; i++)
{
for( j=10000; j>0; j--);
}
}
/*****************************************************************************
函数名称: InitIO(void)
功能描述: 初始化IO口
输入参数: 无
其它: P0_2收数,P0_3发数,均配置为外围模块
*****************************************************************************/
void InitIO(void)
{
SLEEPCMD&= ~0X04;
CLKCONCMD = 0X10;
while(CLKCONSTA!=0X10);
SLEEPCMD = 0X04;
// P2DIR |=0x40;
P2DIR &=~0xc0;//高两位清零 一个可不设,若设则最高优先
PERCFG = 0x00;
// P0SEL = 0X30; //P0<5:4>设置成外围应用
P0SEL = 0X3c;
P1SEL = 0X00; //灯端口配置
P1DIR|= 0X06;
P1 =0X06;
}
/*****************************************************************************
函数名称: InitUart0(void)
功能描述: 初始化串口配置
输入参数: 无
其它: 波特率57600 无校验位 1个停止位
*****************************************************************************/
void InitUart(void)
{
U0CSR |= 0x80; //UART方式
U0GCR |= 10; //baud_e
U0BAUD |= 216; //波特率设为57600
UTX0IF = 1;
U0CSR |= 0X40; //允许接收
URX0IE = 1; //串口0使能 位操作
EA =1;
IEN0 |=0x84;//全使能和串口0使能 字节操作
}
/*****************************************************************************
函数名称: SendString(char*string,uint lenth)
功能描述: 发送字符串
输入参数: string;存放字符串的数组
lenth;字符串的长度
其它:
*****************************************************************************/
void SendString(char*string,uint lenth)
{
uint j;
for (j=0; j<lenth; j++)
{
U0DBUF = *string++;
while(UTX0IF == 0);
UTX0IF = 0;
}
}
/*****************************************************************************
函数名称: main (void)
功能描述: 主函数
输入参数: 无
其它: 收发数处理
*****************************************************************************/
void main(void)
{
InitIO();
InitUart();
DelayXms(10);
// printf("Welcome from Guo Liquan's computer!");
len = strlen((char *)Recdata);
SendString(Recdata,len );
while(1)
{
if(RTflag == 1) //接收
{
if( temp != 0)
{
if((temp!='#')&&(datanumber<100))
{ //’#‘被定义为结束字符
//最多能接收100个字符 若所发字符没有#则只能超出60个数才能接收到所发字符串,之前的相当于在缓冲
Recdata[datanumber++] = temp;
}
else
{
RTflag = 3; //进入发送状态
}
if(datanumber == 100)RTflag = 3;//截取字符长度,只要字符串超过20个就能接收
temp = 0;
}
}
if(RTflag == 3) //发送
{
DelayXms(10); //发送状态指示
U0CSR &= ~0x40; //不能收数
SendString(Recdata,datanumber);
U0CSR |= 0x40; //允许收数
RTflag = 1; //恢复到接收状态
datanumber = 0; //指针归0
led1 = 1; //关发送指示
}
}
}
/****************************************************************
*函数功能 :串口中断接收一个字符
*入口参数 : 无
*返 回 值 :无
*说 明 :接收完成后打开接收
****************************************************************/
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
URX0IF = 0; //清中断标志
temp = U0DBUF;
led1 = 0;//进入中断指示
}
uart.rar_cc2530_cc2530 uart_cc2530 例程
版权申诉
144 浏览量
2022-09-20
19:08:05
上传
评论
收藏 39KB RAR 举报
我虽横行却不霸道
- 粉丝: 75
- 资源: 1万+
最新资源
- 基于Python的简易微信订餐系统实现
- 基于C++实现KCF算法,用于对框选目标进行跟踪,可运行于linux或类linux系统
- 基于mediapipe在unity中实现姿态追踪python源码+使用说明(高分项目).zip
- TortoiseSVN1.14.5.29465及语言包LanguagePack-1.14.5.29465-x64-zh-CN
- python http请求接口自动化
- 课程作业基于python的多AGV路径规划算法研究源码.zip
- 顺序表的链式存储11111111
- 基于python核学习的终端用户识别算法的设计与实现(鼠标、键盘)
- 基于python深度学习的智能监考系统的实现与设计
- 基于目标检测工地安全帽和禁入危险区域识别系统
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈