打印

KEIL C问题

[复制链接]
1309|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
小小电子|  楼主 | 2007-4-18 20:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请高手指点一下:我看资料说KEIL C中被中断函数调用的函数的寄存器组必须和中断函数所设的寄存器组一致。  如何确定被调函数的寄存器组呢??   为什么我的程序里面一直有个警告啊?   我查了一下发现是我在中断函数里面调用了液晶显示的函数才提示下面这个警告的?     小弟先谢过了
*** WARNING L15: MULTIPLE CALL TO SEGMENT
    SEGMENT: ?PR?_LCD_WRITE?LCD
    CALLER1: ?C_C51STARTUP
    CALLER2: ?PR?USB_INTERRUPT?MAIN

相关帖子

沙发
一级菜鸟| | 2007-4-18 20:36 | 只看该作者

中断内尽量不要调用主函数中也调用的函数

可以专门为中断编写该功能的函数,或者你要指定编译器不直接使用寄存器地址,而是通过ACC中转

使用特权

评论回复
板凳
小小电子|  楼主 | 2007-4-18 20:41 | 只看该作者

多谢了 楼上的

不过还有问题
另外编写一个给中断使用的函数既增加代码也不方便啊

“或者你要指定编译器不直接使用寄存器地址,而是通过ACC中转
”但这样不是要用汇编  很麻烦。

  一般你们碰到这种问题都是如何处理的呢?

使用特权

评论回复
地板
一级菜鸟| | 2007-4-19 04:58 | 只看该作者

参见KEIL帮助文件中的NOAREGS ,但是这个不会去除你的警告

使用特权

评论回复
5
ayb_ice| | 2007-4-19 07:34 | 只看该作者

重入问题

重入函数问题,KEIL一般不支持函数重入....

使用特权

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

本版积分规则

29

主题

181

帖子

1

粉丝