TI的CC2530单片机检测不同类型的方波

来源:互联网 发布:好吃的零食 知乎 编辑:程序博客网 时间:2024/06/05 09:37

之前仅检测过一个引脚上一种方波信号,现在要再引脚上区分三种不同的波形。着实头大了好一会儿。

要检测的三种波形如下图所示:


每种波形的持续长度为500us,时间间隔为10ms.

比如我们在P0_2上检测这个波形,首先要对P0_2进行初始化操作,允许中断检测,这里就不详细介绍了。

从三种波形图来看,起始都是高电平,然后拉低为低电平之后,开始产生波形,因此首先通过中断检测到下降沿,则表示波形开始。

区分原理如下:

1. 从低电平到高电平,说明波形开始。

2. 延时到位置1,如果还是低电平,则表示波形1.

  延时到位置2,如果还是低电平,则表示波形2.

  延时到位置3,为高电平,且延时到位置4为低电平,则为波形3.

3. 重复2的检测,知道持续出现700us左右的高电平,表示波形结束。

  当然这个持续时间可以根据自己需求来定义。


注意:延时函数必须非常准确,可参考我的另一博客:延时函数


参考代码如下:


    bool over=false;    uint8 btype=0;if(Status2==0||(P0IFG&BV(0))>0) {while(!over){//检测波形while(Status2==0);//如果2一直为低电平,则直到检测到高电平结束Delay_us_New(75);//延时100usif(Status2==0){    Delay_us_New(90);     if(Status2==1)btype=1;Delay_us_New(75); Delay_us_New(75);    Delay_us_New(75);}else{Delay_us_New(130); //延时170微妙if(Status2==0){btype=2;Delay_us_New(75);        Delay_us_New(75);}else{    Delay_us_New(130); Delay_us_New(75);if(Status2==0)btype=3;}}               //670us左右仍是高电平Delay_us_New(75);Delay_us_New(75);if(Status2!=0){//表示波形结束over=true;}}    }


原创粉丝点击