文章目录:

实验要求

代码实现


实验要求

代码实现

#include "ioCC2530.h"

#define D3 P1_0
#define D5 P1_3

//系统时钟切换函数
void Set_Clock_32M()
{
  CLKCONCMD &=~0x40;
  while(CLKCONSTA &0X40)
  {
    
  }
  CLKCONCMD &=~0x47;
}

//端口初始化函数
void Init_Prot()
{
//配置4个LED灯的引擎
  //选择端口的功能
  P1SEL &=~0x1B;//设置通用io端口
  //配置端口的方向
  P1DIR |=0x1B;
  //关闭LED灯
  P1 &=~0x1B;
}

//串口初始化函数
void Init_Uart0()
{
  //1.设置串口的引脚功能,将P0_2和P0_3设置为外设功能
  PERCFG &=~0X01;
  P0SEL |=0x0C; //0000 1100
  //2.设置串口的波特率:32M——9600
  U0BAUD = 59;
  U0GCR = 8;
  //3.设置一个UART控制寄存器 U0UCR
  U0UCR |=0x80;
  //4.设置控制与状态寄存器 U0CSR
  U0CSR |=0xc0; //1100 0000
  
  //5.清除中断标志
    //发送
    UTX0IF = 0;
    //接收
    URX0IF = 0;
  //6.使能串口数据接收完成中断和总中断
  URX0IE = 1;
  EA = 1;
}

//串口字节发送函数
void URD_SendByte(unsigned char dat)
{
  U0DBUF =dat;
  while(UTX0IF==0);
  UTX0IF=0;
}

//串口数据接受完成中断服务函数
#pragma vector = URX0_VECTOR //起始语句
//中断服务函数
__interrupt void Service_UR0Recv()
{ 
  D3=1;//收
  unsigned char temp;
  temp=U0DBUF;
  temp++;
  D5=1;//发
  URD_SendByte(temp);
   D3=0;
   D5=0;
}  
   


void main(void)
{
  Set_Clock_32M();
  //端口初始化
  Init_Prot();
  Init_Uart0();
  while(1)
  {
   
  }
}

 

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐