智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1851|回复: 0
打印 上一主题 下一主题

ECT模块编程

[复制链接]

27

主题

441

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2351

优秀会员奖章活跃会员奖章

威望
1251
贡献
584
兑换币
296
注册时间
2012-5-24
在线时间
258 小时
毕业学校
南昌航空大学
跳转到指定楼层
1#
发表于 2012-8-26 19:22:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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灯来指示已经进入了中断
}
其中红色部分不明白,它怎么就计算出脉冲宽度呢????
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-26 02:52 , Processed in 0.073955 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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