智能车制作
标题:
计时器运用的小问题,利人利己。
[打印本页]
作者:
霜~哀伤
时间:
2010-4-10 20:48
标题:
计时器运用的小问题,利人利己。
小弟刚接触XS128 ECT不久,有点问题,程序如下:
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
//利用定时器输出比较功能产生定时中断
//----------------------变量定义----------------------//
static unsigned int waittime=0;
//--------------------定时器初始化------------------//
void ECT0_Init(void)
{
TIOS=0x01; //定时器通道0设置为输出比较
TC0=0x0001; //赋初值,当TCNT从0计数到此值时第一次进入中断
TCTL1=0x00;
TCTL2=0x02; //其他七路与定时器断开 执行的动作时:0通道输出清零
TSCR1=0x80; //使能定时器,快速清除
TSCR2=0x87; //溢出中断禁止 16M/128=8us,计一个数用2.67us
TIE=0x01; //通道0输出比较中断允许
}
//-----------------------主函数------------------------//
void main(void)
{
ECT0_Init();
DisableInterrupts;
DDRB=0xff;
PORTB=0x00;
for(;;)
{
EnableInterrupts;
}
}
//-----------------------中断函数处理-------------------//
#pragma CODE_SEG NON_BANKED
void interrupt 8 Timer0_ISR(void) //8为定时器通道0的中断标号
{
unsigned int m;
TFLG1_C0F=1;//清中断标志位
DisableInterrupts;
m=TCNT;
TC0=m+1250; //1250*8us=1ms定时时间
waittime++;
if(waittime>=255)
{
waittime=0;
}
PORTB=waittime;
}
上面只能进入中断2次,应为TC0过了0XFFFF不会自己归零,实际使用时肯定不会做吃1MS的中断,我想问的就是现在想做一个1S的中断
作者:
霜~哀伤
时间:
2010-4-10 21:14
卡网页了,洗具中的杯具。。。。。。
作者:
霜~哀伤
时间:
2010-4-11 15:56
自己回答了,
TSCR2=0x87; 这里溢出中断没关掉,我傻掉了。
不过还是没看出快速清除的作用。
作者:
zy171157
时间:
2012-2-11 15:46
我没看懂、、、
作者:
leifanqqq
时间:
2012-2-11 20:06
呵呵 有贡献啊 来晚了
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2