求助:中断号超过31报错问题:已安装拓展插件,*** ERROR L121: IMPROPER FIX
报错代码:这是编码器检测程序,还没验证可行性,编译不过
void P2_isr() interrupt 39
{
u8 intf;
intf=P2INTF;
if (intf)
{
P2INTF=0X00;//清除中断
if (intf & 0x10)
{
if (ENCODER_B)
{
if (!ENCODER_A)
{
if (ENCODER_Nb<40)
{
ENCODER_Nb++;
hc595_Tx=1;
}
}
}
else
{
if (!ENCODER_A)
{
if (ENCODER_Nb)
{
ENCODER_Nb--;
hc595_Tx=1;
}
}
}
}
}
}
报错信息:
*** ERROR L121: IMPROPER FIXUP
MODULE:.\list\ZP01.obj (ZP01)
OFFSET:00013CH
如果把39改小,就会编译通过,比如31:
*** WARNING L30: MEMORY SPACE OVERLAP
FROM: C:0000FBH
TO: C:0000FEH
Program Size: data=11.3 xdata=684 const=0 code=3809
creating hex file from ".\list\STC8G-H-LIB"...
".\list\STC8G-H-LIB" - 0 Error(s), 1 Warning(s).
我用的是官方的库函数,加了一点代码,确定扩展已经装好了,因为我把39改成33,也能编译通过
中断号:33 编译通过:
Program Size: data=11.3 xdata=684 const=0 code=3809
creating hex file from ".\list\STC8G-H-LIB"...
".\list\STC8G-H-LIB" - 0 Error(s), 0 Warning(s).
但是我这里要用的是39,P2的普通IO中断
并且我发现一个现象:报错地址 跟中断入口地址差1
会不会是哪里出错了?请大佬帮忙看一下,源代码已上传
按手册里借用中断向量13的方法可以跑起来了,先这么用着吧,但根因没找到,实际问题还没解决 第一次上传的源码能能编译通过,因为我把39改成33了{:4_167:},但是无法使用,这个才是编译不过的代码 不知道是不是我的keil版本问题或者环境问题,有没有人能帮忙在自己的电脑上编译试试 C51编译器使用中断扩展插件时不能使用LX51模式。
把“LX51 Misc”标签里的“REMOVEUNUSED”删掉,然后在“Device”标签里把使用LX51选项勾选去掉试试。 乘风飞扬 发表于 2023-7-19 19:38
C51编译器使用中断扩展插件时不能使用LX51模式。
把“LX51 Misc”标签里的“REMOVEUNUSED”删掉,然后在“D ...
的确是这个问题,改完之后编译通过了,但是多了一堆未调用函数的警告,code量从4k变成了16k。看来扩展插件还可以优化一下,让它支持LX51 与到同样的扩展插件不兼容 LX51的情况,,真得有点蛋疼.. 乘风飞扬 发表于 2023-7-19 19:38
C51编译器使用中断扩展插件时不能使用LX51模式。
把“LX51 Misc”标签里的“REMOVEUNUSED”删掉,然后在“D ...
这个是一定需要支持的,LX51使用起来方便很多,L51功能太弱了呢 xhbwork 发表于 2023-12-13 18:37
这个是一定需要支持的,LX51使用起来方便很多,L51功能太弱了呢
请问LX51和L51区别在哪里?
页:
[1]