找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1542|回复: 7
收起左侧

请教前辈们一个单片机脉冲检测的问题

[复制链接]
ID:613800 发表于 2019-11-15 12:14 | 显示全部楼层 |阅读模式
一个端口是高阻输入状态,会收到脉冲信号,现在要判断脉冲信号的高电平时间和周期时间,然后进行判断,数值正确led灯亮。若是没有检测到脉冲或者数值不对led闪烁。现在用定时器写了部分程序,可是若是没有脉冲怎么写?

单片机源程序如下:
void main()
{
int tim[10]=0;
sbit P3_2 = P3^2;
Timer0_Init();
while(1)
{

if(P3_2==0)
                          {
                                  while(!P3_2);//等待变为高电平
                                 TH0=0;
                                 TL0=0; //清除定时器0寄存
                                         ET0 = 1;                                    //使能定时器中断
                EA = 1;
                                TR0=1;
                                while(P3_2); //等待变为低电平
                                tim[1]=(TH0*256+TL0)/100;//取出定时器值高8位和低8位合并
                                        tim[1]=(float)tim[4]*1.085+0.339;
                                        tim[1]=tim[1]*10;
                                while(!P3_2);
                                tim[2]=(TH0*256+TL0)/100+655*(t_num);//取出定时器值高8位和低8位合并
                                 tim[2]=(float)tim[2]*1.085+0.339;
                                 tim[2]=tim[5]*10;
                                           TR0=0;

}
}

回复

使用道具 举报

ID:275826 发表于 2019-11-15 14:16 | 显示全部楼层
测量脉冲宽度用FPGA精度高,51单片机不好
回复

使用道具 举报

ID:613800 发表于 2019-11-15 15:19 | 显示全部楼层
tyrl800 发表于 2019-11-15 14:16
测量脉冲宽度用FPGA精度高,51单片机不好

STC8A单片机。
回复

使用道具 举报

ID:597401 发表于 2019-11-15 17:03 | 显示全部楼层
做个脉冲宽度限制计时,超过限度则认为是没有脉冲。
回复

使用道具 举报

ID:294296 发表于 2019-11-15 17:44 | 显示全部楼层
用来检测无刷电机霍尔应该可以吧!或者光栅定位
回复

使用道具 举报

ID:93224 发表于 2019-11-15 18:46 | 显示全部楼层
外部中断比你这个轮询好用多了
回复

使用道具 举报

ID:25310 发表于 2019-11-16 08:30 | 显示全部楼层
中断+定时器
进入中断就关中断启动定时器。
回复

使用道具 举报

ID:123289 发表于 2019-11-16 08:35 | 显示全部楼层
没有脉冲就让CPU等,对主题又不矛盾。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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