『壹』 為什麼在 keil 中條件編譯不能用
連項目選項都是灰色的,很明顯你的工具鏈是不能正常使用的。 在菜單欄的File >> License Management中確認一下你到底有沒有成功注冊。
『貳』 KEIL不能編譯的程序
幫你改了下! 自己在改改吧!
#include <AT89X52.H>
#include <intrins.h>
#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不能編譯
首先新建一個項目文件,後綴名為.uV2,然後再新建一個文本文檔,再上面寫好程序後保存為後綴名為.c的文件(注意文件名最後用英文),然後再右擊窗口左邊的source group1,再選擇add file to『source group 』,最後,按快捷鍵F7就可以了
『肆』 keil軟體不能編譯
你下載的keil安裝包里有license嗎,沒有的話你要重下一個再安裝,有的時候360殺毒軟體會誤認為license為病毒,安裝時把殺毒軟體關掉就ok了
『伍』 keil5 load 不能用,編譯完程序,load一直顯示灰色什麼情況
把debug設置成軟體模擬了,改為jlink或你使用的工具就好了。
拓展:
1、編譯(compilation , compile) 1.利用編譯程序從源語言編寫的源程序產生目標程序的過程。 2.用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。 編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。
2、編譯語言是一種以編譯器來實現的編程語言。它不像直譯語言一樣,由解釋器將代碼一句一句運行,而是以編譯器,先將代碼編譯為機器碼,再加以運行。理論上,任何編程語言都可以是編譯式,或直譯式的。它們之間的區別,僅與程序的應用有關。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
『陸』 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打開現有工程時出現了這個東西,然後工程可以打開,但是編譯不了,怎麼解決
你是不是在安裝KEIL的時候沒有安裝到它的默認目錄啊,建議你裝KEIL的時候就使用默認的C:\Keil。KEIL就這個脾氣,不裝老地方,指不定就會冒出些莫名其妙的問題。
『捌』 keil無法編譯怎麼回事
1.代碼有錯誤的編譯不過
2.試用版代碼限制,超過了不能編譯
『玖』 keil uvision5 為什麼不能編譯
你估計是安裝錯了,安裝的時候有提示:安裝51或是arm,你估計是選擇了arm;
還有一種可能就是,你沒有配置硬體的型號,在project_options for target..這個我估計你懂
『拾』 為什麼keil編譯出來程序不能運行
1、確定」之前的程序「是能在某個keil環境中正確編譯的!
2、查看一下編譯錯誤碼,很多情況下是缺少文件。
注意,一般情況下,不要指望在vc中編寫的程序能在keil中編譯。