📄 test.c
字号:
#include <stdlib.h>
#include <msp430x16x.h>
#include "test.h"
unsigned int AD_Mean[2] = {0};
/***************************************************************************
初始化单片机
***************************************************************************/
void Sys_Init(void)
{
int i;
WDTCTL = WDTPW + WDTHOLD; //Stop Watch Dog
BCSCTL1 &= ~( XT2OFF + XTS ); //Open XT2,ACLK=LFXT1(Low frequency Mode)
do
{
IFG1 &= ~OFIFG; //Clear OSCFault flag
for(i=0xff; i>0; i--); //Time for flag to set
}
while( ( IFG1 & OFIFG ) != 0); //OSCFault flag still set?
BCSCTL2 |= SELM1 + SELS; //MCLK选XT2,1分频;SMCLK选XT2,1分频
//Periph_Init();
}
void AD_Init(void)
{
P6SEL &= ~BIT2;
P6DIR &= ~BIT2;
ADC12CTL0 &= ~ENC;
ADC12CTL0 = ADC12ON + SHT0_12;
//ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_12 + MSC;
ADC12CTL1 = SHP + CONSEQ_0;
ADC12MCTL0 = INCH_10;
ADC12CTL0 |= ENC;
}
void AD_Read(void)
{
ADC12CTL0 |= ADC12SC;
if( (ADC12CTL0 & ADC12SC) == 1)
{
OpenLED();
Delay_1ms(100);
CloseLED();
_NOP();
}
//while( (ADC12CTL1&0x01) == 1);
while ((ADC12IFG & BIT0)==0);
AD_Mean[0] = ADC12MEM0;
}
/***************************************************************************
定时器A的设置
***************************************************************************/
void TimerAInit(void)
{
TACTL = TASSEL0 + ID1 + TACLR;
TACTL &= ~(MC0+MC1);
}
void StartTimerA(void)
{
TACTL &= ~(MC0+MC1);
TACCTL0 &=~CCIE;
TACCR0= 0xffff;
TACTL |= MC1;
}
void StopTimerA(void)
{
TACTL &= ~(MC0+MC1);
}
/***************************************************************************
定时器B的设置
***************************************************************************/
void TimerBInit(void)
{
TBCTL = TBSSEL0 + TBCLR;
TBCTL &= ~(MC0+MC1);
}
void StartTimerB(void)
{
TBCTL &= ~(MC0+MC1);
TBCCTL0 &=~CCIE;
TBCCR0= 0xffff;
TBCTL |= MC1;
}
void StopTimerB(void)
{
TBCTL &= ~(MC0+MC1);
}
/***************************************************************************
延时子程序
实参为延时的毫秒数
***************************************************************************/
void Delay_1ms(unsigned int delaytime)
{
unsigned int temp1,temp2;
temp1 = TBR;
temp2 = TBR + delaytime*33;
while(((temp2>temp1)&&(temp1<=TBR)&&(TBR<temp2))||((temp2<temp1)&&((temp1<=TBR)||(TBR<temp2))));
}
/***************************************************************************
延时子程序
实参为延时的秒数
***************************************************************************/
void Delay_1s(char delaytime)
{
unsigned char i;
for(i=0; i<delaytime; i++)
{
Delay_1ms(1000);
}
}
void LED_Ini(void)
{
P5SEL &= ~(BIT5 + BIT6 + BIT7);
P5DIR |= BIT5 + BIT6 + BIT7;
P5OUT &= ~(BIT5 + BIT6 + BIT7);
}
void OpenLED(void)
{
P5OUT |= BIT5 + BIT6 + BIT7;
}
void CloseLED(void)
{
P5OUT &= ~(BIT5 + BIT6 + BIT7);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -