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

📄 mian.c

📁 无线单片机CC1110的一些使用源代码
💻 C
字号:
#include <chipcon/iocc1110.h>
#include <string.h>

#define uint unsigned int
#define uchar unsigned char
#define FALSE 0
#define TURE 1

//定义控制灯的端口
sbit led1 = P1^0;	
sbit led2 = P1^1;

void Delay(uint);
void initUARTtest(void);
void InitialAD(void);
void UartTX_Send_String(char *Data,int len);


uchar Recdata[30]="ChenDu WuXianLong TongXun";
uchar RFflag = 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)
{

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

	PERCFG = 0x00;				//位置1 P0口
	P0SEL = 0x3c;				//P0用作串口
	
	U0CSR |= 0x80;				//UART方式
	U0GCR |= 11;				//baud_e = 11;
	U0BAUD |= 34;				//波特率设为57600
	UTX0IF = 1;

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

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




/****************************************************************
*函数功能 :串口发送字符串函数									*
*入口参数 : data:数据											*
*			len :数据长度										*
*返 回 值 :无													*
*说    明 :													*
****************************************************************/
void UartTX_Send_String(char *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(Recdata);
	UartTX_Send_String(Recdata,stringlen);	  //AD

	while(1)
	{
		if(RFflag == 1)				//接收
		{
			led2=0;					//接收状态指示
			if((temp!= '#')&&(datanumber<=30))
			{	
				if(temp != 0)Recdata[datanumber++] = temp;
				temp = 0;
			}
			else
			{
			 	RFflag = 3;			//收到结束标志
									//或者已经达到收数上限
									//进入发送状态
				datanumber--;
				led2 = 1;		    //关接收指示
			}
		 }

		if(RFflag == 3)				//发送
		{
			led1 = 0;				//发送状态指示
			U0CSR &= ~0x40;			//不能收数
			UartTX_Send_String(Recdata,datanumber);
			U0CSR |= 0x40;			//允许收数 
			RFflag = 1;				//
			datanumber = 0;			//指针归0
			led1 = 1;			 	//关发送指示
		}
	}
}

⌨️ 快捷键说明

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