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

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

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


每种波形的持续长度为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);//延时100us
		if(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;
		}			
	}
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值