哪位有MC9RS08KA2的C中断例程

[复制链接]
3750|10
 楼主| ddtv 发表于 2007-10-26 11:37 | 显示全部楼层 |阅读模式
资料上说这款芯片不用中断向量表了.<br />如有KA8的更好,估计还没人用
softradio 发表于 2007-10-26 14:07 | 显示全部楼层

C的还是汇编的?

  
ayb_ice 发表于 2007-10-26 15:14 | 显示全部楼层

张教主肯定有

  
张明峰 发表于 2007-10-26 15:24 | 显示全部楼层

RS08芯片没有中断机制

何来中断例程?
 楼主| ddtv 发表于 2007-10-26 15:40 | 显示全部楼层

没中断机制,怎样识别中断?不停查询么?

datasheet上的中断似乎只能把MCU唤醒,这样定时器对于大多数应用不就没意义了吗?<br />2楼我写了是C的.<br />
张明峰 发表于 2007-10-26 15:46 | 显示全部楼层

最好的办法是用时间片查询

以前搞没中断的PIC16C54/57就这么做的,也可以干很多事情。
ayb_ice 发表于 2007-10-27 08:19 | 显示全部楼层

RS08有中断吧

那天粗略了看了一下。。。<br />只有一个向量吧,中断类似于PIC的硬件机制。。。<br />
ayb_ice 发表于 2007-10-27 15:40 | 显示全部楼层

随便说说

又看了一下,确实没有中断(没有向量,但DATASHEET仍使用“中断”来说明的),但有中断标志,只能通过查询的方法工作,也可以唤醒CPU,RS本来是针对低端市场的,也只有一级调用(多级需软件支持)。。。
softradio 发表于 2007-10-28 16:04 | 显示全部楼层

RS08没有中断向量

RS08没有中断向量,中断标志会映射到SIP1寄存器,此外,在wait和stop模式下会唤醒CPU。需要通过查询得到对应的中断,调用对应的ISR,<br /><br />//&nbsp;MTIM&nbsp;中断服务程序<br />inline&nbsp;void&nbsp;MTIM_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;...<br />}<br /><br />//&nbsp;ACMP&nbsp;中断服务程序<br />inline&nbsp;void&nbsp;ACMP_isr(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;...<br />}<br /><br />void&nbsp;main(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;...<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;wait&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;进入wait,中断自然唤醒<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(SIP1_MTIM)&nbsp;&nbsp;//&nbsp;检测MTIM是否中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MTIM_isr();&nbsp;//&nbsp;调用MTIM&nbsp;ISR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;&nbsp;&nbsp;&nbsp;//&nbsp;返回调度开始<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(SIP1_ACMP)&nbsp;&nbsp;//&nbsp;检测ACMP是否中断<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ACMP_isr();&nbsp;//&nbsp;调用ACMP&nbsp;ISR<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue;&nbsp;&nbsp;&nbsp;//&nbsp;返回调度开始<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;wait&quot;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;进入wait,中断自然唤醒<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />}<br /><br />调用ISR后的continue一般情况下要用,这样就可以对中断处理优先级排序。如果ISR定义在main之前,定义inline的话可以使ISR在main中内联,这样可以省一级SPC调用,那么ISR内部就可以再嵌套一次函数调用而不需要使用软件栈。<br />
 楼主| ddtv 发表于 2007-10-29 09:25 | 显示全部楼层

ls办法不错

只是我要做通讯,还要计时.有些麻烦啊~
softradio 发表于 2007-10-30 11:38 | 显示全部楼层

如果没有中断嵌套的话,和普通MCU一样处理啊

如果没有中断嵌套的话,和普通MCU一样处理啊。因为在RS08核中,中断优先级完全是按照软件书写的顺序排列的。普通MCU如果没有嵌套中断的话,也必须顺序地按照优先级执行完一个再执行一个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

44

帖子

1

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