智能车制作

标题: ECT模块编程 [打印本页]

作者: 1434636181    时间: 2012-8-26 19:22
标题: ECT模块编程
本帖最后由 1434636181 于 2012-8-26 19:24 编辑

#include <hidef.h> /* common defines and macros */
#include <mc9s12dp256.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dp256b"

unsigned char ic4,dic4,ic40;
void ic_init (void) //输入捕捉初始化函数
{
TSCR1=0x90; //主定时器使能
TSCR2=0x07; //分频因子为128
ICSYS=0x02; //IC缓冲使能
TIOS=0x00; //通道设置为输入捕捉
TCTL4=0x02; //采用下降沿触发
TIE=0x01; //通道0开中断
}
void delayms(int ms)
{
int ii,jj;
if (ms<1) ms=1;
for(ii=0;ii<ms;ii++)
for(jj=0;jj<1335;jj++);
}

void main(void)
{
EnableInterrupts;
ic_init();
DDRA=0xff; //设置PORTA的方向寄存器,为输出
PORTA=0x00; //PORTA的输出初始化为低电平
DDRB=0xff; //PORTB设置为LED灯的控制信号
PORTB=0xff;
delayms(2000); //LED灯全亮
for(;;)
{

PORTA=0x00; //循环中设置为高电平
delayms(100);

PORTA=0xff; //循环中设置为低电平,产生一个方波
delayms(100);

}

}
#pragma CODE_SEG NON_BANKED
void interrupt 8 ic0_int(void) //中断服务程序
{
TFLG1_C0F=1; //中断标志清除
ic4=TC0; //通过读TC0寄存器来相应中断,
dic4=ic4-ic40;
ic40=ic4; //得到脉冲宽度不需要考虑溢出
PORTB=0x55; //LED灯来指示已经进入了中断
}
其中红色部分不明白,它怎么就计算出脉冲宽度呢????





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