找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1497|回复: 9
收起左侧

请问这种时间不规则的闪灯程序怎么处理比较高效?

[复制链接]
ID:38662 发表于 2023-8-18 17:05 | 显示全部楼层 |阅读模式
用示波器测了一个闪灯的时序,时间是不规则的,请问一下高手,象这种闪灯怎么写效率比较高?谢谢!

闪灯时间

闪灯时间
回复

使用道具 举报

ID:468209 发表于 2023-8-19 00:45 来自手机 | 显示全部楼层
很好奇你是怎么写的
回复

使用道具 举报

ID:672792 发表于 2023-8-19 08:49 | 显示全部楼层
如果使用的是单片机可能没有必要这样写一个闪灯程序,如果使用的是555或者其它器件就好理解了
回复

使用道具 举报

ID:227818 发表于 2023-8-19 09:01 | 显示全部楼层
定时器?不同的时间随时设定不同的定时参数?
回复

使用道具 举报

ID:69038 发表于 2023-8-19 09:08 | 显示全部楼层
我算了一下,按0.05s的速率,连续发送21个字节(8位)的数据即可,具体发什么数据自己算一下。
回复

使用道具 举报

ID:472504 发表于 2023-8-19 09:08 | 显示全部楼层
可以把这些时间做成表格查表处理。。。
回复

使用道具 举报

ID:136119 发表于 2023-8-19 09:22 | 显示全部楼层
定义一个结构体
typedef struct
{
        u8 IO        ;         // 记录端口状态
        u16 timer;        // 记录延时时
}        SW_IO;


typedef struct   /////处理函数进入时间处理方案
{
  u16 time;         /* 定义进入中断时间 等0xFFFF 函数被关闭, 0允许进入函数  */
  u8 tag;           /* 标记状态                */
  u8 value;         /* 传递参数                */
} SWT_APP ;



SW_IO IO_K[50];  // 根据需要控制的时序填写对应时间和高低电平

SWT_APP location ; 记录数组运行位置

if(location.time ==0 )
{
       
  if( IO_K[location.tag].IO )
  {
        输出高电平
  }
  else
  {
   输出低电平
  }
  location.time =  IO_K[location.timer];延时时间写入
  location.tag++;
}



中断内部调用控制

if(location.time &(location.time != 0xffff) )location.time--;
回复

使用道具 举报

ID:514317 发表于 2023-8-19 17:14 | 显示全部楼层
把每段延时时间做成数组    再做一个定时0.1秒的定时减减函数       把数组做个循环任务函数   把第一位减的时间个数(全局参数)载入循环    减到零时载入第二个减时间个数    到最后一位处理下是跳出还是继续循环就行了
回复

使用道具 举报

ID:123289 发表于 2023-8-25 15:14 | 显示全部楼层
很简单:
1、每个脉冲由0/1组成,给出两个量:L1,H1。
2、N个脉冲,做成一个表格,给出2N个量:L1,H1、L2,H2、L3,H3、L4,H4、……LN,HN。
3、程序:
用定时器做一个计时软件,依次取出L,H,计三种情况:
L<>0,H<>0 时,L-1计时并输出0;
L = 0,H<>0 时,H-1计时并输出1;
L = 0,H = 0 时,取一下组数据;
重复。
回复

使用道具 举报

ID:38662 发表于 2023-8-26 17:03 | 显示全部楼层
感谢各位老师的指导!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表