打印

哪位有MC9RS08KA2的C中断例程

[复制链接]
2743|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddtv|  楼主 | 2007-10-26 11:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
softradio| | 2007-10-26 14:07 | 只看该作者

C的还是汇编的?

使用特权

评论回复
板凳
ayb_ice| | 2007-10-26 15:14 | 只看该作者

张教主肯定有

使用特权

评论回复
地板
张明峰| | 2007-10-26 15:24 | 只看该作者

RS08芯片没有中断机制

何来中断例程?

使用特权

评论回复
5
ddtv|  楼主 | 2007-10-26 15:40 | 只看该作者

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

datasheet上的中断似乎只能把MCU唤醒,这样定时器对于大多数应用不就没意义了吗?
2楼我写了是C的.

使用特权

评论回复
6
张明峰| | 2007-10-26 15:46 | 只看该作者

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

以前搞没中断的PIC16C54/57就这么做的,也可以干很多事情。

使用特权

评论回复
7
ayb_ice| | 2007-10-27 08:19 | 只看该作者

RS08有中断吧

那天粗略了看了一下。。。
只有一个向量吧,中断类似于PIC的硬件机制。。。

使用特权

评论回复
8
ayb_ice| | 2007-10-27 15:40 | 只看该作者

随便说说

又看了一下,确实没有中断(没有向量,但DATASHEET仍使用“中断”来说明的),但有中断标志,只能通过查询的方法工作,也可以唤醒CPU,RS本来是针对低端市场的,也只有一级调用(多级需软件支持)。。。

使用特权

评论回复
9
softradio| | 2007-10-28 16:04 | 只看该作者

RS08没有中断向量

RS08没有中断向量,中断标志会映射到SIP1寄存器,此外,在wait和stop模式下会唤醒CPU。需要通过查询得到对应的中断,调用对应的ISR,

// MTIM 中断服务程序
inline void MTIM_isr(void)
{
    ...
}

// ACMP 中断服务程序
inline void ACMP_isr(void)
{
    ...
}

void main(void)
{
    ...
    
    asm(" wait");         // 进入wait,中断自然唤醒

    while(1)
    {
        if (SIP1_MTIM)  // 检测MTIM是否中断
        {
            MTIM_isr(); // 调用MTIM ISR
            continue;   // 返回调度开始
        }

        if (SIP1_ACMP)  // 检测ACMP是否中断
        {
            ACMP_isr(); // 调用ACMP ISR
            continue;   // 返回调度开始
        }

        ...

        asm(" wait");         // 进入wait,中断自然唤醒

    }

}

调用ISR后的continue一般情况下要用,这样就可以对中断处理优先级排序。如果ISR定义在main之前,定义inline的话可以使ISR在main中内联,这样可以省一级SPC调用,那么ISR内部就可以再嵌套一次函数调用而不需要使用软件栈。

使用特权

评论回复
10
ddtv|  楼主 | 2007-10-29 09:25 | 只看该作者

ls办法不错

只是我要做通讯,还要计时.有些麻烦啊~

使用特权

评论回复
11
softradio| | 2007-10-30 11:38 | 只看该作者

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

如果没有中断嵌套的话,和普通MCU一样处理啊。因为在RS08核中,中断优先级完全是按照软件书写的顺序排列的。普通MCU如果没有嵌套中断的话,也必须顺序地按照优先级执行完一个再执行一个。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

44

帖子

1

粉丝