在PC上从串口向 CC2430发任意长度为 30 字节的字串,若长度不足 30 字节,则以“#“为字串末字节,CC2430在收到字节后会将这一字串从串口反向发向 PC,用串口助手可以显示出来。

  1 //main.c
  2 #include <iocc2430.h>
  3 #include <string.h>
  4
  5 #define uint unsigned int
  6 #define uchar unsigned char
  7 #define FALSE 0
  8 #define TURE 1
  9
 10 //定义控制灯的端口
 11 #define led1 P1_0
 12 #define led2 P1_1
 13
 14 void Delay(uint);
 15 void initUARTtest(void);
 16 void InitialAD(void);
 17 void UartTX_Send_String(uchar *Data,int len);
 18
 19
 20 uchar Recdata[30]="ChenDu WuXianLong TongXun";
 21 uchar RTflag = 1;
 22 uchar temp;
 23 uint  datanumber = 0;
 24 uint  stringlen;
 25
 26 /****************************************************************
 27 *函数功能 :延时
 28 *入口参数 :定性延时
 29 *返 回 值 :无
 30 *说    明 :
 31 ****************************************************************/
 32 void Delay(uint n)
 33 {
 34     uint i;
 35     for(i=0;i<n;i++);
 36     for(i=0;i<n;i++);
 37     for(i=0;i<n;i++);
 38     for(i=0;i<n;i++);
 39     for(i=0;i<n;i++);
 40 }
 41
 42 /****************************************************************
 43 *函数功能 :初始化串口1
 44 *入口参数 :无
 45 *返 回 值 :无
 46 *说    明 :57600-8-n-1
 47 ****************************************************************/
 48 void initUARTtest(void)
 49 {
 50
 51     CLKCON &= ~0x40;              //晶振
 52     while(!(SLEEP & 0x40));      //等待晶振稳定
 53     CLKCON &= ~0x47;             //TICHSPD128分频,CLKSPD不分频
 54     SLEEP |= 0x04;          //关闭不用的RC振荡器
 55
 56     PERCFG = 0x00;                //位置1 P0口
 57     P0SEL = 0x3c;                //P0用作串口
 58
 59     U0CSR |= 0x80;                //UART方式
 60     U0GCR |= 10;                //baud_e
 61     U0BAUD |= 216;                //波特率设为57600
 62     UTX0IF = 1;
 63
 64     U0CSR |= 0X40;                //允许接收
 65     IEN0 |= 0x84;                //开总中断,接收中断
 66 }
 67
 68 /****************************************************************
 69 *函数功能 :串口发送字符串函数
 70 *入口参数 : data:数据
 71 *            len :数据长度
 72 *返 回 值 :无
 73 *说    明 :
 74 ****************************************************************/
 75 void UartTX_Send_String(uchar *Data,int len)
 76 {
 77   int j;
 78   for(j=0;j<len;j++)
 79   {
 80     U0DBUF = *Data++;
 81     while(UTX0IF == 0);
 82     UTX0IF = 0;
 83   }
 84 }
 85
 86
 87 /****************************************************************
 88 *函数功能 :主函数
 89 *入口参数 :无
 90 *返 回 值 :无
 91 *说    明 :无
 92 ****************************************************************/
 93 void main(void)
 94 {
 95     //P1 out
 96     P1DIR = 0x03;                 //P1控制LED
 97     led1 = 1;
 98     led2 = 0;                //关LED
 99
100     initUARTtest();
101         stringlen = strlen((char *)Recdata);
102     UartTX_Send_String(Recdata,27);            //wu xian long
103
104     while(1)
105     {
106           if(RTflag == 1)            //接收
107           {
108             led2=0;                //接收状态指示
109             if( temp != 0)
110             {
111                 if((temp!='#')&&(datanumber<30))
112                 {                               //’#‘被定义为结束字符
113                                                 //最多能接收30个字符
114                   Recdata[datanumber++] = temp;
115                 }
116                 else
117                 {
118                   RTflag = 3;                   //进入发送状态
119                 }
120                 if(datanumber == 30)RTflag = 3;
121               temp  = 0;
122             }
123           }
124
125           if(RTflag == 3)            //发送
126           {
127             led2 = 1;                           //关绿色LED
128             led1 = 0;                    //发送状态指示
129             U0CSR &= ~0x40;            //不能收数
130             UartTX_Send_String(Recdata,datanumber);
131             U0CSR |= 0x40;            //允许收数
132             RTflag = 1;                        //恢复到接收状态
133             datanumber = 0;            //指针归0
134             led1 = 1;                    //关发送指示
135           }
136     }
137 }
138
139 /****************************************************************
140 *函数功能 :串口接收一个字符
141 *入口参数 : 无
142 *返 回 值 :无
143 *说    明 :接收完成后打开接收
144 ****************************************************************/
145 #pragma vector = URX0_VECTOR
146  __interrupt void UART0_ISR(void)
147  {
148      URX0IF = 0;                //清中断标志
149     temp = U0DBUF;
150  }

转载于:https://www.cnblogs.com/zeedmood/archive/2012/09/01/2666935.html

嵌入式成长轨迹52 【Zigbee项目】【CC2430基础实验】【在PC用串口收数并发数】...相关推荐

  1. Zigbee之旅(八):几个重要的CC2430基础实验——看门狗

    Zigbee之旅(八):几个重要的CC2430基础实验--看门狗 一.承上启下 再好的操作系统,不管是现在的Win7还是以后Win8.Win9,总会出现BlueScreen的时候,更何况是小小的单片机 ...

  2. Zigbee之旅(九):几个重要的CC2430基础实验——系统睡眠及中断唤醒

    Zigbee之旅(九):几个重要的CC2430基础实验--系统睡眠及中断唤醒 一.承上启下 这一篇,我们来讨论一下CC2430的睡眠功能及唤醒方法.在实际运用中的CC2430节点一般是靠电池来供电,因 ...

  3. 树莓派4bpython串口通信解读数据_树莓派基础实验36:通用串口通信实验

    一.介绍 对于树莓派 3B+来说,他的UART功能有三种: 1.内部蓝牙使用: 2.控制终端使用: 3.与其他设备进行串口通信. 在树莓派基础实验35:USB TO TTL模块实验中学习了通过串口对树 ...

  4. 嵌入式成长轨迹53 【Zigbee项目】【CC2430基础实验】【串口时钟PC显示】

    void InitT1(void) : 函数原型: 1 void InitT1(void) 2 { 3 T1CCTL0 = 0X44; 4 //T1CCTL0 (0xE5) 5 //T1 ch0 中断 ...

  5. 嵌入式成长轨迹27 【Linux应用编程强化】【中嵌第二阶段】【进程管理】

    补充 成长轨迹19 进程操作 成长轨迹21 多线程编程 中的一些概念 不同之处:进程概念.进程基本状态(这里是最起码的状态).信号量机制 一 进程的基本概念 1  程序的顺序执行和并发执行 1).程序 ...

  6. 嵌入式成长轨迹54 【Zigbee项目】【CC2430基础实验】【系统睡眠工作状态】

    本实验在小灯闪烁10 次以后进入低功耗模式 PM3 .CC2430 一共有4 种功耗模式,分别是PM0,PM1,PM2,PM3,以 PM3 功耗最低. SLEEP (0xBE) - Sleep mod ...

  7. 嵌入式成长轨迹37 【Zigbee项目】【CC2430基础实验】【自动闪烁】

    最为简单的代码,只用到一个寄存器P1DIR.因为点亮的led灯(p1.0和p1.1)的管脚是p1的,要输出就得将这两个管脚设置为输出管脚.该寄存器用0~8对应1.0~1.8管脚. 1 //main.c ...

  8. 嵌入式成长轨迹61 【智能家居项目】【ARM 飞凌ok6410】【在虚拟机Ubuntu下NFS网络文件系统建立】...

    推荐阅读顺序: 基本环境搭建: [配置]在虚拟机Ubuntu下NFS网络文件系统建立 <ok6410 Qt移植百科全书> [配置]QT&QWT&sqlite3安装配置 这中 ...

  9. 嵌入式成长轨迹11 【嵌入式环境及基础】【Linux shell深入】【深入讨论】

    一.深入讨论awk 1.条件操作符 < >= <= == != 等符号在awk中都存在 ~ 匹配正则表达式 !~不匹配正则表达式 2.逻辑操作符 && || ! 也都 ...

最新文章

  1. python3.7和3.8的区别-Python 3.8 有什么新变化
  2. 算法艺术——网络最大流
  3. Android之Canvas的drawRoundRect()
  4. 关于HttpUtility.UrlEncode,Server.UrlEncode
  5. 共享单车变“私有”、被毁、被盗:用户们都看不下去了,举报!
  6. AutoFDO自动反馈式优化
  7. linux登录交换机备份脚本,如何从Linux上备份和恢复许多Cisco路由器和交换机的配置?...
  8. 使用perl连接oracle数据库
  9. 自旋锁--Test and Set Clock机制分析
  10. 2022年考研计算机组成原理_2 数据表示和运算
  11. 如何删除计算机中的“天翼云盘”图标
  12. 手机输入法带拼音声调_分享4种给拼音加声调的方法,让你的word更有灵魂
  13. 学习计算机基础有什么推荐的书和视频?
  14. 将一个 iOS 设备变成 iBeacon
  15. 苹果mac电脑如何安装虚拟机?CrossOver Mac2022
  16. 从零开始掌握微服务软件测试
  17. 如何调试ajax 和php
  18. 苹果iOS11重磅改版App Store,开发者应该了解这些
  19. 第一章 Caché 对象介绍
  20. gre阅读passage71-105

热门文章

  1. 2021年朔州市副高考试成绩查询,2021朔州市第二中学校教师成绩查询入口:http://www.shuozhou.gov.cn/ztjs/rlzy/rsks/...
  2. python 执行shellcode_简述获取shellcode的几种方式
  3. 丰田pcs可以关闭吗_论安全性能,广汽丰田TNGA车型如何?
  4. hmm 求隐藏序列_自然语言处理(3)隐马尔科夫模型 HMM
  5. app商城源码_海量的SpringBoot和SSM项目【附带源码+视频教程】快速成为全栈
  6. 查询oracle表空间有什么数据,oracle查询表空间使用情况与查询有哪些数据库实例在运行...
  7. abb工业机器人电压不稳_ABB工业机器人应用常见故障九问九答
  8. Linux下Tomcat死活找不到JSP页面中import指定类的解决方法
  9. 达拉草201771010105《面向对象程序设计(java)》第十周学习总结
  10. 一篇文章助你深入理解zookeeper