智能车制作
标题:
想用汇编语言实现定时器的标志位清零,请会汇编的指点下!
[打印本页]
作者:
liucheng_34
时间:
2012-12-14 21:32
标题:
想用汇编语言实现定时器的标志位清零,请会汇编的指点下!
因为看了
http://www.znczz.com/forum.php?m ... p;extra=#pid665196l
这贴子(我在用K60的定时器,也出现问题了),不知道在k60里面如何实现asm(MOVB #$01,PITTF);这条语句,已经纠结很长时间了,请懂汇编的帮我看看。
k60的PIT0的标志位寄存器为:PIT_TFLG0 TIF是最低位。
作者:
sdlibin007@qq.c
时间:
2012-12-14 21:38
http://www.znczz.com/thread-112903-1-1.html
作者:
jiyiboloann
时间:
2012-12-14 22:09
K60没这个必要吧,和你那个帖子是不同的单片机,对着TIF位写1就行,你也可以考虑利用位带(BIT_BAND)操作
作者:
洋葱圈
时间:
2012-12-14 22:41
PIT例程以及驱动函数在拉普兰德K60底层库中写得很清楚,用汇编反而更麻烦。
http://www.znczz.com/thread-112632-1-1.html
作者:
liucheng_34
时间:
2012-12-15 09:46
我写的两个定时器代码是这样的://都初始化都为1ms时两个中断是难以进去又难以出来,pit0 为0.5ms,pit1为1ms时正常,但我在corepit1里再添加些代码后又不行了。我用IAR仿真后,发现中断标志位清零后,立刻又为1了,我试了进入中断就关闭中断,执行完代码后再打开中断,也不行;当我只用一个定时器时,发现没有问题,所以是两个定时器共同导致了这样一个结果。这个问题是根源在哪里呢??
pit_init_ms(PIT0, 1); //1ms
pit_init_ms(PIT1, 1); //1ms
void PIT0_IRQHandler(void) //执行时间200us
{
PIT_Flag_Clear(PIT0); //清中断标志位
corepit0();
}
void PIT1_IRQHandler(void) //执行时间100us
{
PIT_Flag_Clear(PIT1); //清中断标志位
corepit1();
}
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2