Ⅰ 請問為什麼keil軟體中沒有錯誤,但不能編譯生成hex文件,當時你是怎麼解決的啊
如果你的keil設置都是對的話,編譯正確後會在軟體最下面的窗口顯示一些信息,其中就有生成xxx.hex的提示。如果有這句話,說明你的keil確實設置正確,並且也生成了可執行文件。這時候就只有一個可能,是你下載到單片機的可執行文件不是最新生成的,可以嘗試在下載時重新定位你的可執行文件。比如宏晶單片機在使用串口下載程序時,每次都要重新定位新生成的可執行文件。
Ⅱ 單片機keil編譯的問題
#define LED P2
最後面那個分號去掉,自己給自己找麻煩。
C語言的基本寫法要掌握……
Ⅲ keil 4 怎麼不可以編譯C52單片機C語言程序,低版本的keil可以
看了該問題,有以下幾個感觸:
1.高版本的基本都是向下兼容的。
2.國人的英語真的很差。。。。
3.在網路提問是一個解決問題的辦法,更快的是查看軟體自帶的幫助文檔(當然英語不好的,這個也不好使),其實在搜索中將錯誤的代碼復制後,網路一下90%的問題都已經能找到答案。
Ⅳ keil無法編譯怎麼回事
你沒有激活這個軟體«keil»
,未注冊的只能編譯2k以內的程序
Ⅳ KEIL 沒法編譯是怎麼回事,按鈕都是灰色的!~
KEIL 要先建立工程,選擇MCU,然後把C源程序(*.C)加入到工程中才能編譯,不能直接對C源程序編譯。
Ⅵ 為什麼我的keil不能編譯
連項目選項都是灰色的,很明顯你的工具鏈是不能正常使用的。
在菜單欄的File >> License Management中確認一下你到底有沒有成功注冊。
Ⅶ keil軟體不能編譯
你下載的keil安裝包里有license嗎,沒有的話你要重下一個再安裝,有的時候360殺毒軟體會誤認為license為病毒,安裝時把殺毒軟體關掉就ok了
Ⅷ Keil無法編譯
幫你改了下! 自己在改改吧!
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define BLKN 2 /*列存貯器數8*8行數*/
sbit E1 =P3^4; //E1為0開列(col)輸出顯示允許控制信號埠
sbit ST_CP =P3^2; //ST_CP 上升沿--移位寄存器的數據進入數據存儲寄存器 輸出鎖存器的時鍾信號埠
sbit MR =P3^3;//MR 為0將移位寄存器的數據清0
sbit key1 =P0^0;
sbit key2 =P0^1;
sbit soundring=P0^7;
uchar songndring=0;//add by mrli
uchar Soundring=0;//add by mrli
uchar t1;
uint key,spd;
void delay(unsigned int);
uchar data dispram[32];
uchar code table[]={ 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF};
uchar code donghua[][1]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7F };//change by mrli
void delay(uint dt);
void main( )
{
uchar num,cur,tmp,nums=sizeof(donghua)/32;
SCON = 0x01;
TMOD = 0x01;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TR0 = 1;
TR1=1;
EA=1;
ET0=1;
ET1=1;
IT0=1;
P1= 0xc0;
key=1;
songndring=1;
P2=table[1];
while (1)
{
delay(2000);
spd=100-key*10;
for(tmp=0;tmp<1;tmp++)
{
for(num=0;num<nums;num++)
{
for(cur=0;cur<32;cur++) //顯示
{
dispram[cur]=donghua[num][cur];
delay(spd);
}
}
}
}
}
void delay(uint dt)
{
uchar it,jt;
for(it=dt;it>0;it--)
for(jt=110;jt>0;jt--);
}
void leddisplay(void) interrupt 1 using 1
{
static uchar col=0;
TH0 = 0xf8;
TL0 = 0x30;
MR=0; //清理行輸出,將移位寄存器的數據清0
MR=1;
SBUF = dispram[col*2]; //串列發送顯示數據
while(TI==0); //等待發送完畢
T1 = 0;
SBUF = dispram[col*2+1]; //送顯示數據
while(TI==0); //等待發送完畢
T1 = 0;
E1 = 1; //消隱
P1 = 0x00; //行號埠清0
P1 = 0x00; //行號埠清0
E1 = 0; //打開顯示
ST_CP =1; //顯示數據打入輸出鎖存器
ST_CP = 0; //鎖存顯示數據
P1 = col; //寫入行號
col=(col+1)%16;
}
void keys() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t1++;
if(t1==10)
{
t1=0;
if(key1==0)
{
delay(2);
if(key1==0)
key--;
if(key<2)
key=1;
while(!key1);
delay(2);
while(!key1);
soundring=0;
delay(450);
};
if(key2==0)
{
delay(2);
if(key2==0)
key++;
if(key>8)
key=9;
while(!key2);
delay(2);
while(!key2);
soundring=0;
delay(450);
};
Soundring=1;
P2=table[key];
}
}
Ⅸ 為何keil 無法編譯
#include<reg52.h> // 分號去掉 下同
#include<intrins.h>
#define uint unsigned int //uint需要用宏定義
void delay(uint z);
void main()
{
//temp未定義
unsigned char temp;
temp=0xfe;//十進制使用0x表示數字0非字母o
P1=temp;
while(1)
{
delay(1000);
temp=_crol_(temp,1); //此處函數是_crol_非_corl_
P1=temp;
}
}
void delay(uint z) //聲明要和前面的統一
{
unsigned int x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
編譯後0error0warning你再編譯不通過就是方法的問題了
Ⅹ keil c51 問題:程序無法編譯
你那程序也不長啊,直接把程序發上來,發什麼圖片哪?
第二個圖片顯示的,沒有錯誤了,只有一個警告,是因為調用那個延時子程序delay( ) 時,打錯了一個字母,打成dalay 了。
另外提示:保存C程序的文件夾,最好不 要用漢字,而且文件夾的層數不要太多了,你這一共是五層文件夾,有兩層還是漢字,編譯時容易出錯的。