❶ keil編譯錯誤如何解決
AT89S52共有256Bytes RAM,10個unsigned char型數據肯定沒問題了,但是10個unsigned char型數組,如果每個數組維數為20,那就20*10=200bytes。
不知到LZ的情況是咋樣的
建議:
1、如果數據>128Bytes <256Bytes 將數組定義添加idata
2、如果數據>256Bytes可選擇帶XRAM的單片機,將數組定義到xdata
3、盡量減少數據量,優化程序。
情況不明,只能考慮到這些了
如:
unsigned char idata a[]={0x00,.........};
unsigned char xdata a[]={0x00,.........};
❷ Keil的編譯錯誤問題
根據LENGTH:082BH(2K)分析,ERROR L107錯誤的出現應該是你使用的Keil軟體是一個評估軟體(對代碼有2K長度的限制)。
至於在選擇的目標文件(就是存放這些C程序代碼的文件)裡面多了很多無用的C、H、LIB文件,只要裡面的函數名和全局變數不同名並且不違背C51的語法,是不會影響程序的編譯和運行的。C5會自動的把未被調用的函數和未使用的變數刪除以減小代碼的長度。
❸ keil編譯的時候提示錯誤
keil中沒有添加START_V3.A66文件,提示錯誤:No Algorithm found for Address 0x000000
❹ 用Keil編程序時編譯有錯誤,怎麼才能知道錯誤是什麼呢
每個錯誤都有自己的標號,你可以根據標號在keil提供的幫助文件中搜索有關的詳細內容,按下F1會彈出幫助文檔,文檔都是英文寫的。
另外你雙擊錯誤時游標會自動跳到keil認為的錯誤行,實際錯誤就在那一行的附近
或者你可以把你的錯誤放在網路裡面搜一搜,一般都會得到。
❺ 單片機keil編程出現錯誤,無法編譯怎麼辦
#include <reg52.h>
sbit la=P2^6;
sbit wela=P2^7; ///////////////
void main()
{
wela=1;//鎖存器打開
P0=0xfe;
wela=0;
la=1;
P0=0x06;
la=0;//前三行是段選,後三行是位選
while(1);
}
在編譯的時候就會顯示
LESSON.c(3):error c231:'al':redefinition
LESSON.c(8):erroe c202:'wela': undefined identifier
LESSON.c(10):error c202:'wela': undefined identifier
Target not created
❻ keil 編譯錯誤信息
keil 如果你的函數名有被用到就不會出現這東西.
你肯定是這個函數名任何時候都沒有用.
包括你的子函數裡面..也沒有調用.
所以才會出現這個.問題..
如果你這個代碼 眼下還不想用..想先留著的話.
那就直接這樣好了.
沒有關系的..
如果不想出現礙眼的 警告.
就在連接器設置的地方設置為不報這個警告就好了.
不過建議還是不要這個干比較好
ls的這種方法不可取.讓編譯器/連接器 明顯提示你有警告或錯誤那是個好現象
❼ keil 編譯時出現這樣的錯誤,怎麼回事
這個問題分別是重復定義了么,怎麼能是沒注冊呢!!!
對於比較小的程序,一般只有一個c文件和一個頭文件,全局變數我們通常會直接定義在c文件中,在程序之前加int i定義。如果要在頭文件中定義有以下兩種方法:用extern來聲明:extern int i;這一句只是對變數i進行聲明,在c文件的程序之前必須加上int i進行定義。extern int i=0;這一句聲明和定義都做了。
對於大一點的程序,有很多c文件和頭文件,這個時候全局變數就必須在頭文件中聲明(不需要初始化),然後在一個c文件中定義(該初始化的要初始化)。如果在頭文件中定義,則編譯的時候會出現重復定義的錯誤。如果只有頭文件中聲明就會出現沒有定義有警告。
*** ERROR L104: MULTIPLE PUBLIC DEFINITIONS
SYMBOL: K
MODULE: 222.obj (222)
出現上述錯誤則是因為變數k重復定義,把你的頭文件中的變數定義前加extern(只是變數聲明不用初始化),再在某一個你要調用該變數的c文件的程序之前再定義(注意第一個調用的c文件要負責附帶初始化該變數,其他調用的c文件就不需要初始化過程啦)
❽ keil 4如何編譯看程序有沒有錯誤
沒有邏輯錯誤的話,編譯就會成功。編譯的話點菜單的project->rebuild all target files
❾ keil軟體怎麼編譯程序無結果顯示
你的兩個文件中可能都有main函數。
在keil編譯器中,main函數是C函數的入口點,有且只有一個。所以你的程序在鏈接階段發現了兩個同名函數定義,所以給出了一個警告,又發現這兩個同名函數還是main函數,所以錯誤提示。刪掉一個就可以了。
❿ keil中編譯錯誤,為什麼呢
你這C語言的基礎有點薄弱啊,出錯是因為C語言規定,在函數體內,變數定義語句應該在最前邊,結果你給放在中間了. 正確的寫法如下:
#include<math.h>
#include<stdio.h>
#include<reg51.h>
void main(void)
{
float x;
float y;
SCON=0x52;
TMOD=0x20;
TH1=0xf3;
TR1=1;
for(x=-1.0;x<=1.0;x+=0.1)
{
y=acos(x);
printf("ACOS(%f)=%f\n",x,y);
getchar();
}
}