值班电路 脉冲方波检测

//各个指示灯的说明
P2.0->LED8 ------ 输出20ms的方波信号,输出正确说明AD的采样间隔正确
P2.1->LED7 ------ P6.0的输入小于1.6V就灭,大于1.6V就亮
P2.2->LED6 ------ 检测一组数据的状态:是1就灭,是0就亮
P2.3->LED5 ------ 保留位,指示TIMERA OUT1的输出,相当于采样的时钟
P2.4->LED4 ------

<pre>#include <msp430x14x.h>
#include <stdlib.h>
#define Num_of_Results 200 //测试用的LED8的周期大概是20ms
const int DATA[6]={1,1,0,0,1,1}; //标准状态数组 表示20ms(高电平),20ms(低电平),20ms(高电平)

int nADC_BUF_Temp[Num_of_Results] = {0};
int nADC_BUF[Num_of_Results] = {0};
int nBuf_Flow_Flag = 0;
int nCount = 0;
int nStatus = 0;
int number = 0;

void Init_clk(void);
void Init_timer(void);
void Init_ADC(void);
void WeakUp(void);
void Status(void);

//********************主函数***************************
void main(void)
{
WDTCTL =WDTPW + WDTHOLD; //关闭看门狗

//P1SEL |= (BIT2+BIT6); //测试TAOUT的输出
//P1DIR |= (BIT2+BIT6);
//P2OUT |= 0xf0; //显示LED
//P5SEL |= BIT5+BIT4; //测试系统时钟
//P5DIR |= BIT5+BIT4;
P2DIR = 0xFF;
P2OUT = 0xFF; //最初所有LED都灭

Init_clk();
Init_ADC();
Init_timer();
ADC12CTL0 |= ENC;            //使能转换
_BIS_SR(GIE);                //使能全局中断

while(1)
{
if(1 == nBuf_Flow_Flag)
{
nBuf_Flow_Flag = 0;
Status();//当前这组数据状态为1,即有超过一半的数据大于3V,LED6亮
WeakUp();//唤醒判断
if(6 == number)
{
number = 0;
P2OUT ^= 0xF0;
}
}
}//while
}//main

void Init_timer(void)
{
P2SEL |= BIT3;
P2DIR |= BIT3;
//CCTL1 = CCIE;
CCR0 = 50;
CCR1 = 25;
TACCTL1 = OUTMOD_3;
TACTL = TASSEL_2 | MC_1 | TACLR; //SMCLK
}

void Init_clk(void)
{
unsigned int i;

BCSCTL1=0X00; //将寄存器BCSCTL1的内容清零
//XT2开启,LFTX1工作在低频,ACLK的分频因子为1
do
{
IFG1 &=~OFIFG; //清除OSCFault标志位
for(i=0x20;i>0;i--); //IFG1中断标志寄存器1
}
while((IFG1 & OFIFG)== OFIFG);//如果OSCFault=1

BCSCTL2=0X00;
BCSCTL2 += SELM_2;            //MCLK的时钟源为TX2CLK,分频因子为1  8MHZ
BCSCTL2 += SELS +DIVS_3;      //SMCLK的时钟源为TX2CLK,分频因子为8  1MHZ
return;

}

void Init_ADC(void)
{
P6SEL |= 0x01; // 使能ADC通道P6.0即A0
ADC12CTL0 = ADC12ON+SHT0_1; // 打开ADC,设置采样时间
ADC12CTL1 = SHP+CONSEQ_2+SHS_1; // 使用采样定时器
//ADC12CTL1 = ADC12SSEL_3+ADC12DIV_0; //ADC内核时钟SMCLK 1MHZ
//之前一直出错是因为这一句 为什么啊 仍然没想通 T_T 泪奔....
ADC12MCTL0 = INCH_0;
ADC12IE = 0x0001; // 使能中断
}

void Status(void)
{
nCount = 0;
for(int i=0; i<Num_of_Results; i++)
{
if(nADC_BUF[i]>3722)
nCount ++;
}
if(nCount > Num_of_Results/2)
{
nStatus = 1;
P2OUT |= BIT2;//LED 灭
}
else
{
P2OUT &= ~BIT2;
nStatus = 0;
}
}

void WeakUp(void)
{
switch (number)
{
case 0:
if(nStatus == DATA[0])
number = 1;
else
number = 0;
break;
case 1:
if(nStatus == DATA[1])
number = 2;
else
number = 0;
break;
case 2:
if(nStatus == DATA[2])
number = 3;
else
number = 2;
break;
case 3:
if(nStatus == DATA[3])
number = 4;
else
number = 1;
break;
case 4:
if(nStatus == DATA[4])
number = 5;
else
number = 0;
break;
case 5:
if(nStatus == DATA[5])
number = 6;
else
number = 1;
break;
}
}

pragma vector=ADC_VECTOR

__interrupt void ADC12ISR (void)
{
//************看当前的值是否大于1.6V***********
if (ADC12MEM0 < 0x7FF)
P2OUT |= BIT1; //小于1.6V就灭,顺时针
else
P2OUT &= ~BIT1;
//****************转移AD数据到BUF*************
static unsigned int index = 0;
nADC_BUF_Temp[index++] = ADC12MEM0;
if (index == Num_of_Results)
{
index = 0;
nBuf_Flow_Flag = 1;
for(int i = 0; i< Num_of_Results; i++)
nADC_BUF[i] = nADC_BUF_Temp[i];
P2OUT ^= BIT0;
}
}</pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,482评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,377评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,762评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,273评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,289评论 5 373
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,046评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,351评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,988评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,476评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,948评论 2 324
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,064评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,712评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,261评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,264评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,486评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,511评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,802评论 2 345

推荐阅读更多精彩内容