智能车制作

标题: 想用汇编语言实现定时器的标志位清零,请会汇编的指点下! [打印本页]

作者: 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