智能车制作
标题:
PIT XS128 中断
[打印本页]
作者:
baimengru
时间:
2013-3-26 23:35
标题:
PIT XS128 中断
#define PITTIME 5000 //PITTIME用于设定PIT中断的响应周期Period = 1us*PITTIME
void PIT_Init(void)
{
PITCFLMT_PITE = 0; // 关闭定时器PIT,等设定参数过后再开启PIT,这样利于系统稳定
PITCE_PCE0 = 1; // 开启定时通道0;
PITMTLD0 = 48-1; // 8位定时器初值设定 对应的时钟周期为1us 频率为1M
PITLD0 = PITTIME - 1; // 16bit定时器周期设定 周期为 PITTIME * 1us
PITINTE = 0x01; // 开启定时通道0的中断
PITCFLMT_PITE = 1; // 启动定时器PIT
}
void main(void)
{
System_Init(); //系统初始化
DDRA = 0xff;
DDRB = 0xff;
EnableInterrupts
while(1);
}
void interrupt 66 PIT0(void)
{
PORTA = 0x00;
delay_ms(50);
PORTA = 0xff;
delay_ms(50);
}
我设定中断定时器为5ms.请问为什么我设定IO_A口拉低50ms测定IO_A电平依旧为占空比为50%
的方波,不是应该只为低电平么?
个人认为中断为主函数打断执行中断内部内容,然后再回到主函数,如果中断函数内语句超过中断响应时间,
则一直执行中断函数内部内容等于中断响应时间的语句。
即:此函数应该只执行PORTA=0x00;后执行延时函数50MS(由于下一次中断响应,则50ms未执行完毕,只执行5ms就执行下一次中断)。
即再次执行PORTA =0x00;。。。。。。。
希望 有没有理解的,给我答案。。。
作者:
new_life
时间:
2013-3-27 11:47
哈哈 不会 表示~~我刚刚接触单片机 刚把板子弄完?灯天我在给你商量~~~
作者:
机遇
时间:
2013-3-27 12:14
没清中断标志位?
作者:
baimengru
时间:
2013-3-27 20:34
嗯,确实。我以为PITTF自动清除标志位的。
理解错误。
作者:
空相救心
时间:
2013-8-19 13:49
中断里最好不要加延时,会引起程序死掉
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2