CpuTime0中断

[复制链接]
2715|14
 楼主| tianwen_4524 发表于 2013-3-11 17:39 | 显示全部楼层 |阅读模式
CPU, TI, LED, dc, pi
interrupt void ISRTimer0(void)
{
        PieCtrl.PIEACK.bit.ACK1=1;
        *LedReg = LedCode[LedCount];
        LedCount++;
        if (LedCount>=8)        LedCount=0;
}
我是想问,它的这个只是PIE中断的中断服务子程序,后面还应该CPU的中断服务程序吧???
可是怎么我的例子里怎么没有CPU的中断服务的程序的,为什么?????烦请高人帮忙解释解释。。。。。
airwill 发表于 2013-3-11 20:21 | 显示全部楼层
这是 CPU 的中断服务程序

所以:
interrupt void ISRTimer0(void)
以关键词 interrupt 开头.(这是编译器的规定)

评论

........................  发表于 2013-3-12 17:55
zhangmangui 发表于 2013-3-12 09:06 | 显示全部楼层
没明白什么意思  这就是timer0中断服务程序啊

评论

......................  发表于 2013-3-12 17:55
jlass 发表于 2013-3-12 15:17 | 显示全部楼层
一般的中断是进中断程序后置标志位,然后在服务程序里处理的。

你看的这个程序可能比较简单,直接在中断程序里把所有的活都干完了。

评论

...............  发表于 2013-3-12 17:54
 楼主| tianwen_4524 发表于 2013-3-12 17:53 | 显示全部楼层
谢谢,虽然还弄不明白
hhuguodong 发表于 2013-3-12 19:00 | 显示全部楼层
PIE只是中断管理用的,它只负责管理中断,也就是优先级管理和应答管理,PIE不会有中断服务程序的。上面你给的这个中断服务程序就是CPU中断服务程序,中断服务程序只有CPU可以执行,别的都不行(包括你说的PIE)。
hhuguodong 发表于 2013-3-12 19:07 | 显示全部楼层
zhangmangui 发表于 2013-3-12 09:06
没明白什么意思  这就是timer0中断服务程序啊

版主您好,我想请教您一个问题,就是CpuTimer0在自己的中断服务程序中可不可以把自己关掉。也就是,譬如说,我定义一个计时5ms的计时,在另一个中断服务程序中打开计时(CpuTimer0Regs.TCR.bit.TSS=0;)当计时时间到的时候执行CpuTimer0的中断服务程序interrupt void ISRTimer0(void),如果不把CpuTimer0关掉那么中断服务程序执行完之后还要继续重新计时5ms,我想在interrupt void ISRTimer0(void)中直接把CpuTimer0关掉(CpuTimer0Regs.TCR.bit.TSS=1;)也就是执行完interrupt void ISRTimer0(void)不再重新计时了,可不可以?
zhangmangui 发表于 2013-3-12 19:51 | 显示全部楼层
hhuguodong 发表于 2013-3-12 19:07
版主您好,我想请教您一个问题,就是CpuTimer0在自己的中断服务程序中可不可以把自己关掉。也就是,譬如 ...

完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
PieCtrl.PIEACK.bit.ACK7=1;
如果你不清除这个标志的话 就不会进入下一次中断的  
还有方法就是进入中断服务程序之后  你可以选择关掉中断使能  这样也就不会在进行中断啦
hhuguodong 发表于 2013-3-12 20:29 | 显示全部楼层
楼主好人,感谢哈,:lol
hhuguodong 发表于 2013-3-12 20:29 | 显示全部楼层
zhangmangui 发表于 2013-3-12 19:51
完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
Pi ...

楼主好人,感谢哈,:lol
zhangmangui 发表于 2013-3-13 09:16 | 显示全部楼层
hhuguodong 发表于 2013-3-12 20:29
楼主好人,感谢哈,

哈哈  不客气
 楼主| tianwen_4524 发表于 2013-3-13 09:17 | 显示全部楼层
hhuguodong 发表于 2013-3-12 19:00
PIE只是中断管理用的,它只负责管理中断,也就是优先级管理和应答管理,PIE不会有中断服务程序的。上面你给 ...

谢谢!是的,总算明白了!
 楼主| tianwen_4524 发表于 2013-3-13 09:29 | 显示全部楼层
zhangmangui 发表于 2013-3-12 19:51
完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
Pi ...

完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
PieCtrl.PIEACK.bit.ACK7=1;

PieCtrl.PIEACK.bit.ACK7=1;  置位了,怎么再向CPU响应中断啊????烦请点波,谢谢!
zhangmangui 发表于 2013-3-13 11:17 | 显示全部楼层
tianwen_4524 发表于 2013-3-13 09:29
完全可以的  进入自己的中断服务程序后  如果你还想再次计时5ms  就需要将中断标志清掉  也就是用这句
Pi ...

PieCtrl.PIEACK.bit.ACK7=1;用了这句就相当于清除了中断标志啊  所以中断就可以再次进入了啊   
如果不用这句的话  就不会在进入中断了
 楼主| tianwen_4524 发表于 2013-3-13 12:35 | 显示全部楼层
zhangmangui 发表于 2013-3-13 11:17
PieCtrl.PIEACK.bit.ACK7=1;用了这句就相当于清除了中断标志啊  所以中断就可以再次进入了啊   
如果不 ...

哦,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

41

主题

236

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部