📄 mpxa6115a.c
字号:
#include <msp430x14x.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef unsigned char unchar;
typedef unsigned int unint;
void Init(void);
void delay(void);
void zhh(unint a);
#define num 64
#define uint unsigned int
unint temp=0;
unint hexchar(unint cd);
unchar chr[8];//定义输出的字符数组
//unchar chrs[8];
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //关闭看门够
Init(); //串口初始化
P1DIR |= BIT2; //p1.2输出
P6SEL |= BIT6; //打开A0通道输入
ADC12CTL0 = SHT0_2 + ADC12ON+MSC; //开ADC12模块+采样信号由SHI仅首次触发
//采样定时器分频系N=4
ADC12CTL1 = SHP+CONSEQ_2; //使用采样定时器输出作为采集/转换信号
//单通道重复序列采样模式
ADC12IE = 0x01; //A0通道开中断
ADC12CTL0 |= ENC; ////使能ADC转换
_EINT();
while(1)
{
ADC12CTL0 |= ADC12SC; //启动转换
_BIS_SR(LPM0_bits); //进入LPM0模式,开总中断允许
}
}
#pragma vector=ADC_VECTOR //ADC中断服务子程序
__interrupt void ADC12_ISR (void)
{
static char index=0; //中断服务子程序的静态变量
uint A0result[num];
A0result[index++]=ADC12MEM0; //移动结果送往数组,此操作的同时消除ADC12FIG0
if(index==num)
{
unsigned int i;
unsigned char j;
unsigned long A0sum=0; index=0;
for(i=0;i<num;i++) //采集32次
{
A0sum+=A0result[i];
}
A0sum>>=6; //取平均值
temp=(int)((A0sum-2020));
zhh(temp); //一位一位取数
for(j=0;j<8;j++){
TXBUF1=chr[j];
while((UTCTL1&0X01)==0); //查询等待依次发送完毕
P1OUT ^=BIT2; //P1.2翻转
delay();
delay();
delay();
}
}
}
void Init(void)
{
UCTL1 &=~SWRST; //SWRST复位,USART允许
UCTL1=0X10+MM; //地址位模式
UCTL1=0X10; //8位数据位,1位停止位,无校验
UBR01=0X03; //32768设置波特率为9600bps
UBR11=0X00;
UMCTL1=0X51; //位调整
UTCTL1=0X10; //选定ACLK(32KHZ)为时钟源
ME2 |=0X20; //UART发送模块允许
P3SEL=0Xc0; //p3.6,p3.7由USRT1发送模块占用
P3DIR=0X40; //P3.6输出,p3.7输入
IE2 |=URXIE1; //接收中断允许
}
void delay(void)
{
unsigned long j;
for (j = 15000; j > 0; j--);
}
//*********************************
//函数名:hexchar
//功能: ASCII转换
//参数:要转换的数字
//返回值:无
//*********************************/
unint hexchar(unint cd) // ASCII转换
{
if((cd>=0x00)&&(cd<=0x09)) return(cd+0x30);
// else if((cd>=0x41)&&(cd<=0x46))
// return(cd-0x41+10);
// else if((cd>=0x0a)&&(cd<=0x0f))
// return(cd+0x61-10);
else
return(0x0f);
}
/********************************
函数名:zhh
功能: 将数转换成单个字符
参数:要转换的数字
返回值:无
*********************************/
void zhh(unint a)
{
chr[0]= hexchar(a/100);
chr[1]=hexchar((a%100)/10);
chr[2]=0x2e;
chr[3]=hexchar((a%10)/1);
chr[4]=0x4b; //K
chr[5]=0x70; //p
chr[6]=0x61; //a
chr[7]=0x0a; //"\n"
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -