智能车制作

标题: 求教大家光电测速的一个问题 [打印本页]

作者: cly319    时间: 2009-2-15 13:27
标题: 求教大家光电测速的一个问题
我在光电测速试验时,先用PT0口捕捉下降沿,进行累加,结果用PORTB口的LED显示。
可是一个阻挡物滑过后累加了两次,应该是只有一个下降沿啊。
后来换了捕捉上升沿,和捕捉上升下降沿,但是结果也是一样。
希望达人解答~

下面是测试程序:
//IOC0/PT0输入脉冲,检测下降沿,进行累加,结果在B端口的LED灯处显示
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
unsigned char PulseCnt;
void main(void) {
DDRB=0XFF; //B端口输出
PORTB=0X00;//灯全亮

asm sei;   //关所有中断
TIOS=0X00; //通道0为输入捕捉方式
TSCR1=0X80;//定时器使能,正常工作
TSCR2=0X01;//禁止定时器溢出中断,预分频系数为2
TCTL4=0X02;//仅捕捉下降沿
TIE=0X01;  //允许通道0中断
TFLG1=0X01;//清除通道0中断标志
DLYCT=0X01;//延迟时间设置
PulseCnt=0X00; //计脉冲数变量初始值

asm cli;//开中断

while(1);
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 8 TIMER_0(void) {
  

  PulseCnt++;//下降沿累加
  TFLG1=0X01;//清除通道0中断标志
  PORTB=~PulseCnt; //B端口显示脉冲数
  
}
#pragma CODE_SEG DEFAULT
作者: lucev    时间: 2009-2-15 18:46
不太懂。还没做过实验。
我猜,是不是需要在进中断后关中断呢?
作者: 997522323    时间: 2009-3-5 20:38
PORTB=~PulseCnt; //B端口显示脉冲数
在这一句的后面加一个延时你试试
作者: whut_wj    时间: 2009-3-6 13:52
看看波形是否工整.
作者: yala1987    时间: 2009-5-28 13:22
测试方法不好,用真实的脉冲来测试吧,有正规的高低电平的那种。
作者: he251125    时间: 2010-4-6 20:42
借鉴
作者: jession4    时间: 2010-4-8 22:33
同样求教
作者: 龙游天下明    时间: 2012-2-17 13:09

作者: lighted    时间: 2014-3-21 22:50
:victory::victory:




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2