⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 CC2430相关的一些实验程序,开发环境为IAR,如果有兴趣的人是不错的资料.
💻 C
字号:
//cd wxl
#include <iocc2430.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 Delay(uint);
void initUARTtest(void);
void InitialAD(void);
void UartTX_Send_String(uchar *Data,int len);


uchar Recdata[30]="ChenDu WuXianLong TongXun";
uchar RTflag = 1;
uchar temp;
uint  datanumber = 0;
uint  stringlen;

/****************************************************************
*函数功能 :延时						
*入口参数 :定性延时									
*返 回 值 :无												
*说    明 :													
****************************************************************/
void Delay(uint n)
{
	uint i;
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
	for(i=0;i<n;i++);
}

/****************************************************************
*函数功能 :初始化串口1										
*入口参数 :无												
*返 回 值 :无							
*说    明 :57600-8-n-1						
****************************************************************/
void initUARTtest(void)
{

    CLKCON &= ~0x40;              //晶振
    while(!(SLEEP & 0x40));      //等待晶振稳定
    CLKCON &= ~0x47;             //TICHSPD128分频,CLKSPD不分频
    SLEEP |= 0x04; 		 //关闭不用的RC振荡器

    PERCFG = 0x00;				//位置1 P0口
    P0SEL = 0x3c;				//P0用作串口

    U0CSR |= 0x80;				//UART方式
    U0GCR |= 10;				//baud_e
    U0BAUD |= 216;				//波特率设为57600
    UTX0IF = 1;

    U0CSR |= 0X40;				//允许接收
    IEN0 |= 0x84;				//开总中断,接收中断
}

/****************************************************************
*函数功能 :串口发送字符串函数					
*入口参数 : data:数据									
*			len :数据长度							
*返 回 值 :无											
*说    明 :				
****************************************************************/
void UartTX_Send_String(uchar *Data,int len)
{
  int j;
  for(j=0;j<len;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}


/****************************************************************
*函数功能 :主函数								
*入口参数 :无							
*返 回 值 :无						
*说    明 :无							
****************************************************************/
void main(void)
{	
	//P1 out
	P1DIR = 0x03; 				//P1控制LED
	led1 = 1;
	led2 = 1;				//关LED

	initUARTtest();
        stringlen = strlen((char *)Recdata);
	UartTX_Send_String(Recdata,27);	        //wu xian long

	while(1)
	{
          if(RTflag == 1)			//接收
          {
            led2=0;				//接收状态指示
            if( temp != 0)
            {
                if((temp!='#')&&(datanumber<30))
                {                               //’#‘被定义为结束字符
                                                //最多能接收30个字符
                  Recdata[datanumber++] = temp;
                }
                else
                {
                  RTflag = 3;                   //进入发送状态
                }
                if(datanumber == 30)RTflag = 3;
              temp  = 0;
            }
          }

          if(RTflag == 3)			//发送
          {
            led2 = 1;                           //关绿色LED
            led1 = 0;			        //发送状态指示
            U0CSR &= ~0x40;			//不能收数
            UartTX_Send_String(Recdata,datanumber);
            U0CSR |= 0x40;			//允许收数
            RTflag = 1;		                //恢复到接收状态
            datanumber = 0;			//指针归0
            led1 = 1;			        //关发送指示
          }
	}
}

/****************************************************************
*函数功能 :串口接收一个字符					
*入口参数 : 无						
*返 回 值 :无				
*说    明 :接收完成后打开接收				
****************************************************************/
#pragma vector = URX0_VECTOR
 __interrupt void UART0_ISR(void)
 {
 	URX0IF = 0;				//清中断标志
	temp = U0DBUF;
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -