导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→请教2051中测量正脉冲宽度[mcuer]

 *第20785篇: 请教2051中测量正脉冲宽度

  
楼 主:mcuer 2004年4月7日13:42
 请教2051中测量正脉冲宽度
把一个正脉冲源接至INT0脚

GATE0=1,TR0=1则当INT0=1时开始计时

那么如何得知计时结束?

除了不停的检查INT0脚的电位,还有其他的办法吗?

  
2楼:电子萝卜 2004年4月7日14:40
 做个比较器,用脉冲作输入信号,再用比较器
做个比较器,用脉冲作输入信号,再用比较器的输出信号接到INT1上。
  
3楼:mcuer 2004年4月7日15:59
 这个正脉冲就是从比较器里出来的,只是宽度
这个正脉冲就是从比较器里出来的,只是宽度不一致。
  
4楼:guest 2004年4月7日16:36
 呆鸟!
用两个外部中断检测上升沿和下降沿的间隔,不过要反相一下,在两个中断程序中启动定时器和关闭定时器,最简单的就是用查询了!
  
5楼:mcuer 2004年4月7日16:54
 INT1被占用了
  
6楼:guest 2004年4月7日22:48
 查询是简单,但是要是测两个这样的脉冲呢,
查询是简单,但是要是测两个这样的脉冲呢,何况这样以后还能干别的事吗?
  
7楼:Kuang-chingTsui 2004年4月9日15:10
 这样做:
把那个要测量的脉冲反相,接int0, 编程设置int0电平触发方式。
程序结构:
(例如使用timer0)
在主程序中初始化timer0、int0等,清TL0、TH0,关timer0,开中断int0

.
.
.
int0中断服务程序:
setb tr0              ;开始计时
jnb $                  ;等待脉冲由低电平变高
clr tr0                 ;关定时器0
mov 20h,tl0        
mov 21h,th0
mov tl0,#0          ;清零定时器0,为下次测试做准备
mov th0,#0
reti                     ;中断返回
此时20h和21h中已经分别装有这个正脉冲(反相后为对应负脉冲)的低八位和高八位计时值,按照你的时钟周期可以计算出脉冲宽度。为保证测量正确进行,进入int0中断服务程序后一定要关闭所有中断。

  
8楼:Kuang-chingTsui 2004年4月10日13:10
 还可以这样:
初始化int0为为脉冲触发,按你的硬件连接方式。则int0在由高电平变为低电平时,int0中断被响应。
int0中断服务程序可以:

mov 20h,tl0
mov 21h,th0
mov 20h,#0
mov 21h,#0
reti

结果与我上一贴一样,但精度稍高。

  
9楼:guest 2004年4月12日10:20
 本身就是对int0的输入进行记时,再把它
本身就是对int0的输入进行记时,再把它反相来确定结束点,不对吧。
  
10楼:Kuang-chingTsui 2004年4月12日10:47
 从逻辑和工程上完全说的通的。
  
11楼:Kuang-chingTsui 2004年4月12日10:27
 我的第二方案不需要反相的。
  
12楼:cyber211 2006年8月18日15:27
 脉冲测量
这样只能测量一个脉冲的脉宽吧 ,如果又一系列的脉冲宽度不同的脉冲都要测量,数据就不能放到一个固定的地方把?还有如果两个脉冲之间的时间还不够你运行中断程序,就是在你运行处理程序的时候,第二个脉冲已经开始了,这个怎么办??
  
13楼:zhouming 2006年9月7日15:02
 脉冲测量
51单片机的定时器有一个门控工作方式,是专门用来测量正脉冲的宽度的,使用外中断的脚去控制对应定时器的启停.
  
14楼:squall45 2006年9月15日16:26
 [建议]
可以利用INT0中断啊.选择下降沿中断,当INT0中断就可以停止计时,这样就可以不用查询INT0脚的电平了.

>>>>>>对该主题发表你的看法

本主题贴数14,分页: [第1页]


[上一篇主题]:想要学习arm,请推荐一款学习板

[下一篇主题]:拜托好心的大哥大姐帮我写一个C51的按键扫描程序