#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=value330;//是为了后面方便处理数据,所以多乘100
value=value>>15;
//电压值为value3.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!=’\0’)
{
UART_Send_Byte(*Data++);
}
}
/获取电压值*/
/处理数据(光感)/
void Get_val(void)
{
uint16 sensor_val;
sensor_val=ADC_int();
s[0]=sensor_val/100+‘0’;
s[1]=’.’;
s[2]=sensor_val/10%10+‘0’;
s[3]=sensor_val%10+‘0’;
s[4]=‘V’;
s[5]=’\n’;
s[6]=’\0’;
}
/******************************************************
*功能:T1定时器中断服务子程序
/
#pragma vector=T1_VECTOR
__interrupt void T1_ISP(void)
{
EA=0;
T1STAT&=~0X01;
count++;
EA=1;
}
/
- 函数名称:main
- 功 能:main函数入口
- 入口参数:无
- 出口参数:无
- 返 回 值:无
*******************************************************/
main()
{
P1_int();
T1_int();
UART_int();
ADC_int();
while(1)
{
if(count>=15)
{
count=0;
LED1=1;
Get_val();
URAT_Send_String("光照传感器电压值 ");
URAT_Send_String(s);
LED1=0;
}
}
}