智能车制作
标题:
求教大家光电测速的一个问题
[打印本页]
作者:
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