Ⅰ 请问为什么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程序的文件夹,最好不 要用汉字,而且文件夹的层数不要太多了,你这一共是五层文件夹,有两层还是汉字,编译时容易出错的。