当前位置:首页 » 编程软件 » c51编译

c51编译

发布时间: 2022-01-31 01:15:09

‘壹’ C51编译问题

朋友 仔细看看你的程序,这一行:unsigned char j; 延时
在你的说明字符前 应该加什么,呵呵 丢了这个 “//”。

‘贰’ KEIL C51多文件编译

首先主函数只能存在于一个文件中,这个文件可以直接取名mian.c这样比较方便管理。然后按功能分其它文件,分别编写XX.h和XX.c文件,在XX.h中写入函数的声明和全局变量的定义,在XX.c中写函数的具体内容,并且在XX.c中要include“XX.h”,在mian.c中include所有的.h文件。这样就可以正常编译和烧写了。最终生成的还是一个hex文件

‘叁’ C51编译不通过的问题

你这个是程序代码里有问题呢
不是提示了吗,在“*”前面缺少了“;”在文件74JIANCE.c里,好好检查一下

‘肆’ 在keil环境中遍了一段C51的程序后怎么编译

1 新建一工程;在主菜单project下(.Uv2)
2 新建一文件;如C则存为.c文件,如汇编则存为.asm文件;
3 在左边窗口中的Target1上右击,在菜单中选add file to group,再选中你的刚建的

文件,即把它加入到你的工程中。
4 选中主菜单project-->build target(或F7)即可编译你的程序;
5 选中主菜单debug的第一项,则切换到调试窗口;
6 选中主菜单debug->go(F5)即可运行程序了。

注意:view ->periodic window update 是刷新窗口,这样结果可以看得更清。

还有不清楚的问我:MSN:[email protected]
公司上QQ不方便,呵呵.

‘伍’ c51提供哪3种编译模式

case 1(0x87): case 2(0x47): case 3(0x27): case 4(0x17): 这样编译是没有问题 但是烧到板子上以后程序是否能达到需要的结果就不是很

‘陆’ c51怎么编译lib

如何生成LIB库文件

1.首先准备好生成LIB库文件对应的.c和.h文件,在这里用到的.c和.h文件分别是:

"reg303.h"

"rjwf303_flash.h"

"rjwf303_flash.c"

"cos_security.h"

"cos_security.c"

2.新建一个项目,将上面的文件添加到项目中,并做以下设置:

选中Create Library

3.编译之后就可以在项目目录下生成对应的LIB文件。

‘柒’ Keil C51编译的问题!

你主程序里没有别的程序代码了?
单片机在编译时,首先是进行编译预处理(头文件包括指令,宏定义处理,条件编译,各种伪指令等),然后再进入优化编译阶段,再进行汇编过程,接着是程序链接。

你在主程序中定义,unsigned char a[2]={1,2};数组,并分配两个存储单元。虽然在语法上是没有错,程序也能正确被编译。但程序在真正进行实质链接时,由于你并没有真正进行功能性的程序指定,编译时它会生成很多冗余的汇编代码,按照你定义的单元。上面生成的汇编,你如果仔细看,很多的条件跳转语句都是转到不同的内存单元。如:
DJNZ R7,C:001F //R7寄存器相减为0则转到001F,否则顺序执行。
DJNZ R7,C:004B
DJNZ R7,C:003F
INC DPTR
F2 MOVX @R0,A
INC R0
DJNZ R7,C:004B
而实际,编写程序,也没有你以上的那种做法,不可能只分配内存单元,而不做任何其它事情。我想,你这样做,无非就是想做个实验罢了。

‘捌’ c51编译错误

第一个错误:意思是定义的P发生了重复定义,你需要把“sbit P=P3^0; ”里面的P改掉就行了

第二个错误:意思是“Ps_2”“Ps_3”“Ps_4”未定义,从你的代码中可以看出是被注释掉了

sbitPs_1=P2^0;/*--------------------------------------------------
sbitPs_2=P2^1;----------------设置这4个端口为按键检测端---------
sbitPs_3=P2^2;--------------------------------------------------
sbitPs_4=P2^3;------------------------------------------------*/

修改成如下就行了:

sbitPs_1=P2^0;//设置这4个端口为按键检测端
sbitPs_2=P2^1;
sbitPs_3=P2^2;
sbitPs_4=P2^3;


同理,你的"Ps_22""Ps_23""Ps_24"也被注释掉了,只是这段程序中没有用到,所以没有提示错误。


注:C语言中 /* */注释会把这两个符号之间的所有字符串全部注释掉,包括换行的内容!

‘玖’ 为什么C51无法编译

出现ATTEMPT TO DEFINE AN ALREADY DEFINED LABEL,表示以前已经定义过一个标号,要换一个标号

movc a,@a+dptr
movc a,@a+pc

对于这两条指令,查了一下网上的兄弟的解释:

movc a,@a+dptr
从DPTR开始偏移A个地址的数读取到A中.
DPTR一般为数据段的首地址.
movc a,@a+pc
从PC指令地址开始偏移A个地址的数读取到A中.
PC为当前指令地址.

这两个指令都是从程序空间中读取数据.

貌似我也不大听懂,得去问问老师

还有对于PUSH A Keil老是编译出现为什么编译说错,
EXPRESSION TYPE DOSE NOT MATCH INSTRUCTION

网上的兄弟

1.说应该为PUSH ACC

2.是编译选项不对,应选择韦福汇编器

3.为什么不是A,而是ACC?

因为:A表示的是内存地址,ACC表示的是寄存器

51中,可以将寄存器入栈,不可以将内存入栈。

4.在51指令中没有PUSH A,只有PUSH ACC,同样对累加器A进行位操作时,没有A.0,只有ACC.0
A是ACC的缩写,有些地方不能互换,原因我也不知道,书中是这么写的,编译软件也是这么认的,否则就出错。

‘拾’ 单片机c51有哪几种编译模式

下面仅对C51在变量定义中注意的问题以及与80C51存储资源有关的问题作说明,其余遵循C语言的规定。1.变量声明在变量的声明中,可以包括存储类型和signed或unsigned等属性。如:(1)chardatavar1;定义字符型变量var1,被分配在内部RAM低128B,编译后,通过直接寻址方式访问。(2)charcodetext[]=“ENTERPARAMETER”;定义字符数组text[],将其分配到程序存储区,并赋初始值“ENTERPARAMETER”。编译后,通过MOVCA,@A+DPTR访问。(3)unsignedlongxdataarray[100];定义无符号长整型数组array[100],将其分配到外RAM中,编译后,通过MOVXA,@DPTR访问。(4)floatidatax,y,z;定义浮点类型变量x,y,z,将其分配到内RAM中,编译后,通过间接寻址方式访问。(5)unsignedintpdatadimension;定义无符号整型变量dimension,将其分配到外RAM中,编译后,通过MOVXA,@Ri指令采用分页的形式访问。(6)unsignedcharxdatavector[10][4][4];定义无符号字符型数组vector[10][4][4],将其分配到外RAM中,编译后,通过MOVXA,@DPTR访问。(7)charbdataflags;定义字符型变量flags,将其分配到可位寻址的内部数据存储器中,可以以字节方式访问,也可以以位方式访问。

热点内容
华为高密度服务器怎么搭建 发布:2025-01-06 22:26:12 浏览:352
马桶c玩的美国服务器ip 发布:2025-01-06 22:23:40 浏览:364
用计数器编程 发布:2025-01-06 22:16:53 浏览:346
scp拷贝文件夹 发布:2025-01-06 22:11:28 浏览:511
sqltolinq 发布:2025-01-06 22:11:20 浏览:333
存储模块有 发布:2025-01-06 22:10:53 浏览:758
数据存储架构 发布:2025-01-06 21:57:49 浏览:262
android广播的类型 发布:2025-01-06 21:44:18 浏览:837
ida反编译更改函数返回值 发布:2025-01-06 21:13:40 浏览:678
倩女幽魂2免费脚本 发布:2025-01-06 21:06:13 浏览:274