我是靠谱客的博主 多情滑板,最近开发中收集的这篇文章主要介绍CC2530————A-D转换应用之实现外部电压测量宏定义初始化发送字符串电压转换中断主函数,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
CC2530————A-D转换应用之实现外部电压测量
- 宏定义
- 初始化
- 发送字符串
- 电压转换
- 中断
- 主函数
宏定义
#include<iocc2530.h>
#define uint16 unsigned short
#define uint32 unsigned long
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0
/********************************/
/*功能:获取电压值,
并转换通过一定方式转换并赋值给数组
再发送给PC端*/
/********************************/
uchar count;
uchar s[8];
初始化
/********P1初始化********/
void P1_int(void)
{
APCFG=0;//p0_0允许使用模拟IO
P1SEL|=0X01;
P1DIR&=~0X01;
}
/********T1初始化********/
void T1_int(void)
{
T1CTL|=0X0E;
T1CCTL0|=0X04;
T1CC0L|=50000&0XFF;
T1CC0H|=((50000&0XFF00)>>8);
T1STAT&=~0X01;
T1IF=0;
TIMIF&=~0X40;
IEN1|+0X02;
EA=1;
}
/*******串口通信初始化*********/
void UART_int(void)
{
CLKCONCMD&=0X80;
P0SEL|=0X3C;
U0CSR|=0X80;
U0GCR|=10;
U0BAUD|=216;
UTX0IF=0;
EA=1;
}
/************************************************************
* 名称 :ADC_int_
* 功能 :读取ADC通道0电压值
* 入口参数 :无
* 出口参数 :16位电压值,分辨率为10mV
***************获取ADC通道0电压值************************/
uint16 ADC_int(void)
{
uint32 value;
ADCIF=0;
ADCCON3=(0X80|0X10|0X00);
//7:6为基准电压AVDD5:3.3V,5:4为128抽取率,3:0为通道0:AIN0
while(!ADCIF)//中断标志为0
{
;
}
/****保存数据****/
value=ADCH;
value=value<<8;
value|=ADCL;
value=value*330;//是为了后面方便处理数据,所以多乘100
value=value>>15;
//电压值为value*3.3v/32768
return (uint16)value;
// 返回分辨率为0.01V的电压值
}
##发送单个字符
/*******************************************************
*函数名称:UART_Send_Byte
*功能:发送一个字节
*入口参数:c
*出口参数:无
*返回参数:无
*******************************************************/
void UART_Send_Byte(char c)
{
U0DBUF=c;
while(!UTX0IF);
UTX0IF=0;
}
发送字符串
/*******************************************************
*函数名称:URAT_Send_String
*功能:发送一个字符串
*入口参数:*Data
*出口参数:无
*返回参数:无
*******************************************************/
void URAT_Send_String(uchar *Data)
{
while(*Data!='