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

article/2025/5/11 10:04:58

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

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


每种波形的持续长度为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;}			}}



http://chatgpt.dhexx.cn/article/RhxoSkUT.shtml

相关文章

单片机|CC2530实验入门

本教程为实验入门,手把手教你编译一个工程 一、USB驱动 仿真器设备的连接 【说明】USB接口不够可以使用USB集线器扩展,且互相不会干扰,非常方便。 由于用到了CC仿真器(smart RF04EB),需要相关驱动。连接…

CC2530单片机延时函数实际测试

因为要检测不同的波形,所以对时间要求很高,但是发现Zstack本身提供的微秒级的延时其实有误差。 因此特地写了测试函数,然后用示波器观察了时间。详细如下: 先说CC2530与普通8051单片机时钟的不同,CC2530的每个指令是一…

ZigBee无线传感——CC2530单片机定时器1PWM输出

定时器1(16位) 时器1是一个独立的16位定时器,支持典型的定时/计数功能,比如输入捕获,输出比较和PWM功能。 定时器有五个独立的捕获/比较通道。每个通道定时器使用一个I/O引脚。定时器用于范围广泛的控制和测量应用&am…

基于ZigBee cc2530单片机多传感器的智能阳台仿真设计与实现

文章目录 摘 要:关键词:ZigBee 、语音识别、智能家居、传感器 0.引言1.概述2.系统总体设计2.1系统组成2、系统使用流程3、开发环境 2.2系统传感器构成2.3系统数据库设计 3.系统详细设计与实现4.系统测试结果5&#xff…

CC2530单片机精确延时的时间分析

CC2530单片机精确延时的时间分析 IAR 仿真时如何得知运行周期for循环的时间计算使用反汇编工具计算延时时间验证讨论CC2530与普通8051单片机时钟的不同 IAR 仿真时如何得知运行周期 关于这个问题,网上有很多好文章,讲得很清楚。IAR的操作很简单&#xf…

嵌入式cc2530单片机ZigBee-流水灯的实验

嵌入式cc2530单片机ZigBee 单片机是一种集成电路芯片,包含中央处理器CPU、随机存储器RAM、只读存储器ROM、输入输出I/O接口、中断控制系统、定时/计数器和通信等多种功能部件 其针脚定义如下: 1.0 --P0、P1各8个针脚(1字节8位,…

快速学会CC2530单片机基础点灯

使用的软件是IAR 使用的板是经常提到的小黑板 上面四个灯分别是 D3 ---> P1_0 D4 ---> P1_1 D5 ---> P1_3 D6 ---> P1_4 #include <ioCC2530.h>//引用CC2530头文件 #define D3 P1_0 #define D4 P1_1 #define D5 P1_3 #define D6 P1_4//为了方便使用&…

CC2530单片机开发--串口

题目 源码下载链接https://download.csdn.net/download/czx20020728/85975522?spm1001.2014.3001.5503

【CC2530入门教程-06】CC2530的ADC工作原理与应用

【CC2530入门教程-06】CC2530的ADC工作原理与应用 【CC2530入门教程-05】CC2530的串行接口原理与应用 【CC2530入门教程-04】CC2530的定时/计数器原理与应用 【CC2530入门教程-03】CC2530的中断系统及外部中断应用 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制…

【CC2530入门教程-01】CC2530微控制器开发入门基础

【CC2530入门教程-06】CC2530的ADC工作原理与应用 【CC2530入门教程-05】CC2530的串行接口原理与应用 【CC2530入门教程-04】CC2530的定时/计数器原理与应用 【CC2530入门教程-03】CC2530的中断系统及外部中断应用 【CC2530入门教程-02】CC2530的通用I/O端口输入和输出控制…

CC2530概述(简单了解)

CC2530概述简单版 CC2530是由TI公司生产&#xff08;德州仪器&#xff09;用于 2.4Ghz IEEE 802.15.4、ZigBee 和RF4CE 的片上系统&#xff08;SOC&#xff09;&#xff0c;经济实惠功耗低。 CC2530F256 结合了ZigBee 协议栈&#xff08;Z-Stack&#xff09;。 什么是片上系统…

单片机CC2530学习笔记

文章目录&#xff1a; 一&#xff1a;与或操作 二&#xff1a;CC2530的通用 IO及相关寄存器 1.与通用I/O端口相关常用的4个寄存器 2.PxSEL寄存器与PxDIR寄存器 3.P0INP寄存器与P1INP寄存器与P2INP 三&#xff1a;按键的工作原理与程序设计思路 四&#xff1a;CC2530的中…

c语言长空格的代码是什么,c语言中表示空格的是什么代码?

分析如下&#xff1a; 不是所有字符都需要转义的&#xff0c;空格直接就敲空格&#xff0c;或者使用ASCII码值赋值为32。 空格没有转义字符。合法转义字符如下&#xff1a; \a 响铃(BEL) 、\b 退格(BS)、\f 换页(FF)、\n 换行(LF)、\r 回车(CR)、\t 水平制表(HT)、\v 垂直制表(…

读入带空格的字符串 C语言

如何输出带空格的字符串 C语言默认是遇到空格&#xff0c;即代表输入的字符串的结束处 那么该如何读入带空格的字符串呢&#xff1f; scanf("%[^\n]", buf); //回车结束 这样的话就可以读入空格啦 表达式的意思为遇到’\n’才读取结束 请看演示代码 #include <…

C语言去除一段字符串中的空格

函数说明 将字符串中的所有空格都去掉。该函数简单但实用性强&#xff0c;可以作为字符串过滤器使用&#xff0c;随便改一下就可以实现去掉任意字符的功能&#xff0c;建议程序员的代码库里可以收藏一段该类型代码&#xff0c;用取方便。 函数实现 #include <stdio.h>…

C语言删除字符串中的空格

实现思路&#xff1a;分别定义2个指针&#xff0c;一个快指针s1, 一个慢指针s2,s1负责快速移动&#xff0c;遍历我们的的字符串&#xff0c;遇到空格就跳过&#xff0c;不是空格&#xff0c;就赋值给我们的s2,我们s2再往后移动&#xff0c;这样就把空格挤掉了。 最后别忘记s2 …

c语言空格符 r t,c语言中、\t \r \n 和空格什么意思

具体意思&#xff1a; 都是转义字符&#xff0c;空格就是单纯的空格&#xff0c;输入时可以输入空格 \t 跳格 \r 回车 \n 换行 \\ 反斜杠 \a 警告 \b 退格 \f 换页 \v 垂直跳格 \ddd ddd 是 1、2 或 3 位八进制数字。 转义字符串(E…

c++之静态数据成员与静态成员函数

什么是静态数据成员&#xff1f; 数据成员我们之前学过&#xff0c;是对象的属性。 同一个类&#xff0c;不同的对象&#xff0c;可能拥有不同的属性 例如一个车行&#xff0c;不同的车有不同的颜色&#xff0c;不同的耗油量。。。等等属性 但是当我们统计一个公有的数据&am…

类的静态数据成员和静态成员函数

一.什么是类的静态成员 静态成员变量和全局变量都存储在全局/静态区,它们都是在程序编译时创建,直到编译结束才被收回.所以全局变量和静态成员变量的功能差不多,只是创建的方式不同,类的静态成员创建在类中,全局变量创建在程序开头. 二.为什么要用类的静态成员而不用全局变量 …

37.【C/C++ 静态数据成员和静态成员函数 (超详解)】

静态函数 &#xff08;一&#xff09;、什么是静态函数?1.static变量2.static函数&#xff08;也叫内部函数&#xff09; &#xff08;二&#xff09;、静态数据成员1.空间分配和释放2.静态数据成员初始化效果展示: 3.静态数据成员的访问代码展示:效果展示: (四)、静态成员函数…