开发环境:KEIL 5
一、调试过程
1.***错误L118:参考错误外部
原因:uchar keyvalue[]={0,0,0,0,0};在main.c中定义了,在key.h中声明导致的。
解决方法:改成在key.c中定义。
2.*** ERROR L118: REFERENCE MADE TO ERRONEOUS EXTERNAL
SYMBOL: TIME
MODULE: .\Objects\action.obj (ACTION)
ADDRESS: 0D9DH
原因:time在main.c中定义,在action.c中使用,在action.h中声明。
解决方法:在action.c中使用。在action外部声明。
3.DRIVE\MAIN.C(96): error C214: illegal pointer conversion(非法指针转换)
原因:void sendc(unsigned char * pd);形参为指针内型,print为字符串数组
扫描二维码关注公众号,回复:
8268486 查看本文章
sendc(print[0]);错误
解决方法:改成sendc(print);
4.***错误L107:地址空间溢出
原因:一般 KEIL在small 模式。small 模式下未指存储类型的变量默认为data型,即直接寻址,只能访问低 128 个字节,但这 128 个字节也不是全为你程序所有,寄存器 R0-R7必须映射到低RAM,要占去 8 个字节,如果使用寄存组切换,占用的更多。所以可以使用 data 区最大为 120 字节,超出 120 个字节则必须用 idata 显示的指定为间接寻址,另外堆栈至少要占用一个字节,所以你最多能使用 127 上字节。
解决方法: