keil常用 error

更新时间:2023-09-09 07:31:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1. LAB100.C(12): error C216: subscript on non-array or too many dimensions 原程序如下:

#include #include void delay(int); unsigned char code

dis_code[8]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a}; main() { int i,j; P2=0xff; while(1) { P2=0x7f; for(i=0;i<8;i++) { P0=dis_code[i]; P2=_crol_[j,1]; j=P2; delay(1); } } }

void delay(int x)

{ int i;

for(i=0;i

问题在于P2=_crol_[j,1]; 应该改为P2=_crol_(j,1);

2. 从网上COPY的程序执行类似的功能,有时候如果现象没出现,或者不明显,可以调整下延迟函数。

3. 数码管的扫描显示0—7,延迟函数的延迟时间在1ms左右,是通过人眼的视觉暂留而产生的现象,

如果延迟函数设臵的太大,则看不到持续显示0—7的现象。 4. 用KEILC51调试程序时,出现错误提示为?unprintable character 0XA1 skipped?

用KEILC51调试程序时,出现错误提示为?unprintable character 0XA1 skipped?的问题。

输入法的问题。在程序行输入中文模式下标点符号,不会显示,但是会出现标题这样的问题。

打上//马上就能看到没有显示的标点符号

5. *** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS

SEGMENT: ?PR?_COMPARE?TESTLCD

说明:程序中有些函数(或片段)以前(调试过程中)从未被调用过,或者根本没有调用它的语句。

这条警告信息前应该还有一条信息指示出是哪个函数导致了这一问题。只要做点简单的调整就可以。

不理它也没什么大不了的。解决方法:去掉COMPARE()函数或利用条件编译#if …..#endif,可保留该函数并不编译。 6. LAB99.C(19): error C141: syntax error near '{', expected 'const' 程序如下: #include #include sbit LEDP=P1^0; unsigned char counter; main() { TMOD=0x01; TH0=0x3C; TL0=0xB0; counter=0x0A; EA=1; ET0=1; TR0=1; while(1) {}; }

void timer0_int(void) interrupt { TH0=0x3C; TL0=0xB0; counter--;

if((counter)!=0) { counter=0x0A; LEDP=~LEDP; } }

问题在中断函数的写法上,C下面51的中断函数要这么写: void timer0_int(void) interrupt N using M 其中的N是不同中断对应的中断号,一般单片机的书上都有说明的,M是这个中断函数在存储空间中所占的bank,一般不要和main函数的一样就可以了,而main函数的在bank0,那么针对51单片机,这个M可以为1,2,3

7. C51编译警告?*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL?

*** WARNING L1: UNRESOLVED EXTERNAL SYMBOL SYMBOL: ?C_START

MODULE: .STARTUP.obj (?C_STARTUP)

*** WARNING L2: REFERENCE MADE TO UNRESOLVED EXTERNAL

SYMBOL: ?C_START

MODULE: .STARTUP.obj (?C_STARTUP) ADDRESS: 000DH

如果你在用C51编译器出现上面的警告,并且找遍了网上也没能找出个究竟时,你是否觉得这个问题很难,难得以至于没人能回答呢?

其实这个只是初学者和粗心者才会犯的错误:没把C文件添加到项目中!

///另外,还有可能是因为存在没有被调用的已经定义的函数。

本文来自CSDN博客,转载请标明出处:

http://blog.csdn.net/liufei_learning/archive/2010/07/15/5737531.aspx

8. *** WARNING L15: MULTIPLE CALL TO SEGMENT*** 原因Warning 15向我们表明了linker发现了一个函数,这个函数不仅在main code里被调用了,而且在ISR(或者被ISR调用的函数中)被调用了。或者是被同时被多个ISR同时调用了。

这样会产生一个问题,就是在此函数不是一个可重入函数,而当此函数已经在执行时它可能被另一个ISR所调用。这样就会导致结果是可变的而且很可能会导致一些参数的错误。

本文来源:https://www.bwwdw.com/article/3gkh.html

Top