标题: STC8H系列单片机中断号大于31在keil编译出错的处理 [打印本页]

作者: 没有你    时间: 2020-4-2 22:54
标题: STC8H系列单片机中断号大于31在keil编译出错的处理
本帖最后由 没有你 于 2020-4-2 22:57 编辑

    今天浏览了STC官方的STC8H系列单片机的数据手册。在附录J说明了在keil中编译中断号大于31需要特殊处理。原因是STC8H系列单片机新增了不少中断向量入口,比如RTC中断、P0端口中断和P1端口中断等入口地址,如下图所示。




    如果用户用到中断号大于31,则需要特殊处理。STC官方给出的了三种比较折中的解决方法:第一种是借用keil保留的中断号13,需要嵌入汇编代码,在中断号13入口地址处增加一条跳转到对应中断入口的语句;第二种方法和第一种类似,借用其他未使用的0-31之间的中断号,需要嵌入汇编代码,在中断号入口地址处增加一条跳转到对应中断入口的语句;
第三种方法则是不使用中断号,而是用一个普通函数代替,只不过在普通函数里添加一条跳转到对应中断入口的语句。
    如果在IAR for 8051平台编译,则没有中断号数量的限制,直接在头文件中定义中断号和地址就行,比如下图所示:






作者: aking991    时间: 2020-4-3 08:47
注意看手册,有那么多中断功能也就只有那么一二种,要选对才可以吧,我还没有用过,只是友情提醒
作者: 没有你    时间: 2020-4-3 10:40
aking991 发表于 2020-4-3 08:47
注意看手册,有那么多中断功能也就只有那么一二种,要选对才可以吧,我还没有用过,只是友情提醒

你说的对,一般情况下用到中断功能不会多。不过,STC8H可有46个中断功能,不像普通的STC89C52。如果用到大于31中断号,还是要参照STC官方的做法。或者你有自己独特的解决方法也可以分享出来。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1