找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 749|回复: 0
打印 上一主题 下一主题
收起左侧

实验-串口实验-zibgee

[复制链接]
跳转到指定楼层
楼主
ID:419830 发表于 2018-11-2 19:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
zigbee串口实验

单片机源程序如下:
  1. #include<ioCC2530.h>
  2. #include<string.h>


  3. void initUART0(void);
  4. void initLed(void);
  5. #define uint unsigned int
  6. #define uchar unsigned char
  7. #define LED1 P1_0
  8. #define LED2 P1_1
  9. uchar temp;
  10. char str1[50]="1:led1 on,2:led2 on,3:led1 off,4:led2 off\r\n";
  11. void initUART0(void)
  12. {
  13.   CLKCONCMD &= ~0x40;
  14.   while(CLKCONSTA & 0x40);
  15.   CLKCONCMD &= ~0x47;
  16.   PERCFG = 0x00;
  17.   P0SEL=0x3C;
  18.   P2DIR &= ~0xC0;
  19.   U0CSR |= 0x80;
  20.   U0GCR |=9;
  21.   U0BAUD |= 59;
  22.   UTX0IF =1;
  23.   U0CSR |= 0x40;
  24.   IEN0 =0x84;
  25. }
  26. void UartTX_Send_String(char *data,int len)
  27. {
  28.   uint j;
  29.   for(j=0;j<len;j++)
  30.   {
  31.     U0DBUF=*data++;
  32.     while(UTX0IF==0);
  33.     UTX0IF=0;
  34.       
  35.   }
  36. }
  37. void initLed(void)
  38. {
  39.   P1DIR |= 0x03;
  40.   LED1=1;
  41.   LED2=1;
  42. }
  43. void main()
  44. {
  45.   initLed();
  46.   initUART0();
  47.   char receive_buf[2];
  48.   uchar counter=0;
  49.   uchar RT_flag=1;
  50.   UartTX_Send_String(str1,50);
  51.   while(1)
  52.   {
  53.          if(RT_flag==1)
  54.          {
  55.            if(temp!=0)
  56.            {
  57.              if((temp!='\r') &&(counter<2) )
  58.              {
  59.                receive_buf[counter++]=temp;
  60.                
  61.              }
  62.              else{
  63.                 RT_flag=3;
  64.              }
  65.            
  66.              if(counter==3)
  67.              {
  68.                RT_flag=3;
  69.              }
  70.              temp=0;
  71.          }
  72.       }
  73.       if(RT_flag==3)
  74.       {
  75.         U0CSR &=~0x40;
  76.         receive_buf[1]='\0';
  77.         if(receive_buf[0]=='1')
  78.         {
  79.            LED1=0;
  80.            UartTX_Send_String("LED1 on\n",8);
  81.         }
  82.         if(receive_buf[0]=='2')
  83.         {
  84.            LED2=0;
  85.            UartTX_Send_String("LED2 on\n",8);
  86.         }
  87.         if(receive_buf[0]=='3')
  88.         {
  89.            LED1=1;
  90.            UartTX_Send_String("LED1 off\n",8);
  91.         }  
  92.         if(receive_buf[0]=='4')
  93.         {
  94.            LED2=1;
  95.            UartTX_Send_String("LED2 off\n",8);
  96.         }
  97.         U0CSR |= 0x40;
  98.         RT_flag=1;
  99.         counter=0;
  100.       }
  101.       
  102. }
  103. }

  104. #pragma vector=URX0_VECTOR
  105. __interrupt void UART0_ISR(void)
  106. {
  107.   URX0IF=0;
  108.   temp=U0DBUF;
  109. }
复制代码

所有资料51hei提供下载:
UART.rar (19.07 KB, 下载次数: 6)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表