问答

汇集网友智慧,解决技术难题

21ic问答首页 - 51单片机,函数指针,函数调用异常,求解,大佬救我!!

stc 八位机 c语言 keil

51单片机,函数指针,函数调用异常,求解,大佬救我!! 赏100家园币

24kdewhite2020-12-02
程序如图,

TFT_color.RGB 初始值是0,他读出来放在了R2,R3,此时还是0,移位正确应该是0吧,但是temp会被赋其他值
图上断点是看起来异常的地方,这个怎么解??



回答 +关注 0
1767人浏览 3人回答问题 分享 举报
3 个回答
  • 怪不得说使用51的时候使用指针要慎重,楼主的问题深深的说明了这一点。我using x这个从来也没用过。
  • 中断函数如果使用了不同的寄存器组,那么中断函数调用的子函数必须小心使用(或者使用同一寄存器组,或者不使用绝对寄存器访问,这些需要改变设置)
    24kdewhite 2020-12-3 12:58 回复TA
    在被调用函数后面加using 1的话不能在其他位置调用,还是不要加这个关键字了 
    24kdewhite 2020-12-3 12:23 回复TA
    状态寄存器也是组1,我怀疑会不会硬件问题。。 
    24kdewhite 2020-12-3 12:23 回复TA
    异常那里前面几步还在组1里面操作,突然就换组0了 
    24kdewhite 2020-12-3 12:21 回复TA
    中断加using 1,并且在调用的函数后面也加using 1,异常也会消失。 不论加不加using 1,主函数默认都会使用组0, 但为什么会有异常不清楚 
    24kdewhite 2020-12-3 12:09 回复TA
    进中断也是这一组,这个函数确实是中断里面调用的,中断函数使用了using 1,调用函数时也是using 1,把这个using 1去掉上面描述的问题可以正常。 去掉using 1后中断使用组0,这个函数也使用组0,但没有看到组1的问题, 就是一个定时中断里面调用的,我也只开一个中断 
  • 结构声明如下
    Snipaste_2020-12-02_22-18-20.png

    初始化如下
    1. struct_TFT_color TFT_color = {
    2.         0x0000,
    3.         _RGB_increase,
    4.         _RGB_reduce
    5. };
    复制代码





您需要登录后才可以回复 登录 | 注册