把0xff!=key改为key!=0xff,不能判断常数是否等于变量!至于编译器,其实都差不多,keil还算不错的一个,编译器之间各有优缺点。对于错误不好找,确实有点,学单片机要先有一定的C语言功底,至少做到没有语法错误,一般报错很可能都是连锁的,没有一个编译器能做到那么智能能把错误都定位到那么准,多花点时间吧!我谈谈我的学习经验吧:学单片机先看些教程,找些别人的代码,学学思考方法!再从中形成自己的方法! 慢慢的要学会看芯片资料,多思考,过了一段时间就会觉得容易些,过了一个坎就会容易多了!
2. 51单片机C语言编译问题
应该是硬件不兼容,下载个高版本软件编译,我们用的DELL电脑不支持烧录器使用,所以每次都要用笔记本
3. c语言编译连接好后,用cmd无法显示数据
首先需要安装有一个编译器并设置好环境变量,如
vc或gcc,以下是命令
gcc:
gcc
-c
test.c
-o
test.o
gcc
test.o
-o
test.exe
vc:
cl
/c
/tc
/o1
/md
test.c
link
test.obj
编译gui程序时,连接还需要指定静态库文件.
4. 用c语言编程,编译后有错误却不显示
这个状态表示:你的程序没有错误,而是系统安装不完整,或者其他问题导致编译的最后一个阶段(连接)无法进行,这个阶段执行的命令的cl.exe,执行这个程序报错了。
5. 急!!!keil编译c语言程序时先是出现A51 ASSEMBLER停止工作,然后又出现C51/CX51 compiler停止工作
win7 右键keil,“以管理员身份运行",然后输入License,百试百灵
6. 是用c语言和汇编混合编的程序,在keil里编译时出现C51 FATAL-ERROR -
程序问题。
LL SEGMENT CODE; // 在程序存储区中定义段
PUBLIC LED; //声明函数
FLAG DATA 20H
DPFLAG DATA 22H
RSEG LL; //函数可被连接器放置在任何地方
LED:
NOP
DISP: MOV P1,#0FFH ;显示函数
MOV P2,#0
MOV DPTR,#TAB
MOV A,DPFLAG
CJNE A,#1,DISP0 ;判断是否有选择按键
SJMP N1
DISP0:MOV P1,#0F8H
MOV A,R2
MOVC A,@A+DPTR
MOV P2,A
NOP ;弄两个空指令缓冲下数码管
NOP
MOV P2,#0
N1: MOV A,DPFLAG
CJNE A,#2,DISP1
SJMP N2
DISP1: MOV P1,#0F9H
MOV A,R3
MOVC A,@A+DPTR
MOV P2,A
NOP
NOP
MOV P2,#0
N2: MOV A,DPFLAG
CJNE A,#3,DISP2
SJMP NEND
DISP2: MOV P1,#0FAH
MOV A,R4
MOVC A,@A+DPTR
MOV P2,A
NOP
NOP
MOV P2,#0
NEND: RET
NOP
RET
TAB: DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,40h,0
END
上面是汇编文件,。
#include<reg52.h>
extern void led();
void main()
{
P2=0XFF;
led();
while(1)
{
led();
}
}
这里是C文件。
你试试,我这个工程师可以的
7. C语言编译出错,在keilc51上提示如图,求指教
你把s写成大写的S了
8. TKStudio V4.5.1编译c51时怎么提示说找不到C语言编译器啊明明装了
工具,选项,工具链,指定编译器路径。
9. 我的单片机C语言程序哪里为什么编译不了
提示已经很明确了,编译器认为第21行有错。
这款编译器采用的C标准并不是最新的,不支持变量的即时声明。所以你需要把20行和21行换一下,确保所有变量都声明之后,再开始书写执行代码。