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

📄 main.c

📁 CC2430相关的一些实验程序,开发环境为IAR,如果有兴趣的人是不错的资料.
💻 C
字号:

#include "ioCC2430.h"
#include "stdio.h"
#define uint unsigned int

#define ConversionNum 20
//定义控制灯的端口
#define led1 P1_0
#define led2 P1_1

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

char adcdata[]=" 0.0V ";

/****************************************************************
*函数功能 :延时						*
*入口参数 :定性延时						*
*返 回 值 :无							*
*说    明 :							*
****************************************************************/
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 = 11;
    U0BAUD |= 216;				//波特率设为57600
    UTX0IF = 1;

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

/****************************************************************
*函数功能 :初始化ADC						*
*入口参数 :无					        	*
*返 回 值 :无							*
*说    明 :参考电压AVDD,转换对象是1/3AVDD			*
****************************************************************/
void InitialAD(void)
{
	//P1 out
	P1DIR = 0x03; 		//P1控制LED
	led1 = 1;
	led2 = 1;		//关LED

	ADCH &= 0X00;		//清EOC标志	
	ADCCON3=0xbf;		//单次转换,参考电压为电源电压,对1/3 AVDD进行A/D转换
						//14位分辨率
	ADCCON1 = 0X30;		//停止A/D

	ADCCON1 |= 0X40;	//启动A/D

}

/****************************************************************
*函数功能 :串口发送字符串函数					*
*入口参数 : 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)
{	
	char temp[2];
        float num;
	initUARTtest();                                 //初始化串口
	InitialAD();                                    //初始化ADC

	led1 = 1;
	while(1)
	{
		if(ADCCON1>=0x80)
		{
			led1 = 1;	  		//转换完毕指示
			temp[1] = ADCL;
			temp[0] = ADCH;
			ADCCON1 |= 0x40;	  	//开始下一转换

			
			temp[1] = temp[1]>>2;
			temp[1] |= temp[0]<<6;

                        temp[0] = temp[0]>>2;	//数据处理
                        temp[0] &= 0x3f;

                        num = (temp[0]*256+temp[1])*3.3/8192;  //有一位符号位,取2^13;
                        num /= 2;
                        //定参考电压为3.3V。14位精确度
                        adcdata[1] = (char)(num)%10+48;
                        //adcdata[2] = '.';
                        adcdata[3] = (char)(num*10)%10+48;
	
			UartTX_Send_String(adcdata,6);	//串口送数
                                                        //包括空格

			Delay(30000);
                        led1 = 0;                       //完成数据处理
                        Delay(30000);  	
	        }
        }
}

⌨️ 快捷键说明

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