单片机程序,程序没问题,编译不出来怎么回事?

KEY EQU 30HORG 000HSJMP STARTSTART:MOV P0,#00HJLXU:MOV P1, #0FFHCLR P1.4MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY0LCALL DELAY10MSMOV A,P1ANL A,#0FH XRL A,#0FHJZ NOKEY0MOV A,P1ANL A,#0FHCJNE A,#0EH,NEXT1MOV KEY,#0LJMP OK NEXT1:CJNE A,#0DH,NEXT2MOV KEY,#1LJMP OK NEXT2:CJNE A,#0BH,NEXT3MOV KEY,#2LJMP OK NEXT3:CJNE A,#07H,NOKEY0MOV KEY,#3LJMP OK NOKEY0:MOV P1,#0FFHCLR P1.5MOV A,P1ANL A,#0FH XRL A,#0FHJZ NOKEY1 LCALL DELAY10MS MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY1MOV A,P1 ANL A,#0FH CJNE A,#0EH,NEXT5 MOV KEY,#4LJMP OK NEXT5:CJNE A,#0DH,NEXT6MOV KEY,#5LJMP OK NEXT6:CJNE A,#0BH,NEXT7MOV KEY,#6LJMP OK NEXT7:CJNE A,#07,NOKEY1MOV KEY,#7LJMP OK NOKEY1:MOV P1,#0FFHCLR P1.6MOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY2 LCALL DELAY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ NOKEY2MOV A,P1ANL A,#0FH CJNE A,#0EH,NEXT9MOV KEY,#8SJMP OK NEXT9:CJNE A,#0DH,NEXT10MOV KEY,#9SJMP OK NEXT10:CJNE A,#0BH,NEXT11MOV KEY,#10SJMP OK NEXT11:CJNE A,#07,NOKEY2MOV KEY,#11SJMP OKNOKEY2:MOV P1,#0FFHCLR P1.7MOV A,#P1ANL A,#0FHXRL A,#0FHJZ NEXT16 LCALL DELAY10MSMOV A,P1ANL A,#0FHXRL A,#0FHJZ NEXT16MOV A,P1 ANL A,#0FH CJNE A,#0EH,NEXT13MOV KEY,#12SJMP OK NEXT13:CJNE A,#0DH,NEXT14MOV KEY,#13SJMP OKNEXT14:CJNE A,#0BH,NEXT15MOV KEY,#14SJMP OKNEXT15:CJNE A,#07H,NEXT16MOV KEY,#15SJMP OKNEXT16:LJMP JLXUOK:MOV A,KEY MOV DPTR,#TABLEMOVC A,@A+DPTRMOV P0,ALJMP JLXUDELAY10MS:MOV R6,#10D1:MOV R7,#248DJNZ R7,$DJNZ R6,D1RET TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H DB 7FH,6FH,77H,7CH,39H,5EH,79H,71HEND

根据提供的单片机程序,无法准确判断编译不通过的具体原因,可能存在以下几种可能性:
1. 编译环境配置问题:请确认是否已经正确配置了单片机的编译环境,在编译前需要正确安装并配置相应的开发工具和编译器。
2. 语法错误:程序中可能存在语法错误,比如缺少分号、括号不匹配、变量命名错误等。请仔细检查所有语句和语法规则是否正确。
3. 指令集不匹配:不同型号的单片机可能存在指令集的差异,程序中的指令可能与目标平台的指令集不匹配,导致编译错误。请确保选择的编译器和单片机型号匹配。
4. 链接错误:程序中可能存在跳转目标未定义或者重复定义的问题,导致链接错误。请检查程序中的跳转语句和标签定义是否正确。
建议您逐行检查程序中的语法和指令,并仔细查看编译器的错误提示信息,以便更好地定位和解决问题。另外,如果可以提供更详细的错误信息和编译环境的相关信息,将能更好地帮助解决问题。
温馨提示:内容为网友见解,仅供参考
第1个回答  2022-02-07
单片机程序,程序没问题,编译不出来怎么回事?
----
那就是“程序有问题”。
你项目中,包含了 startup.a51,这也是一个汇编语言的程序。
你的程序,所储存的地址,与 startup.a51 用的地址,有冲突。
最简单的解决方法,就是从项目中,删除掉 startup.a51。
不删也行。只要把你的程序所用的地址,改一改,即可。
第2个回答  2019-06-29
单片机的内存地址0003H是中断子程序入口,你从000H开始编辑程序,然后接了个SJMP跳转到START,但是你的START程序没有另起地址,假设SJMP是两个字节指令的话,那么你的START程序段的地址就是0003H,把中断子程序入口堵住了,所以你的程序就产生了警告。
第3个回答  2019-06-20
你的源程序是汇编,所以工程中的startup.a51要去掉。
好好学习天天向上追问

您看看我程序里有这个东西吗?

追答

工程中的
工程中的
工程中的
工程中的
搞明白什么叫做工程

追问

哦哦哦,明白了😁

本回答被提问者和网友采纳
第4个回答  2019-08-21
单片机程序,语法上设问题,你可以换个缟译器试试,用MedWin可以编译通过。

单片机程序,程序没问题,编译不出来怎么回事?
1. 编译环境配置问题:请确认是否已经正确配置了单片机的编译环境,在编译前需要正确安装并配置相应的开发工具和编译器。2. 语法错误:程序中可能存在语法错误,比如缺少分号、括号不匹配、变量命名错误等。请仔细检查所有语句和语法规则是否正确。3. 指令集不匹配:不同型号的单片机可能存在指令集的差异,程...

C语言程序对,但是编译不出来是怎么回事?
编译出来只说明程序没有语法错误,不说明没有逻辑错误,有错误一般会有屏幕输出,此其一。第二,可以在程序中设定一些输出语句或断点观察。第三如果程序不输入、输出内容,程序执行是当然看不见东西(不直观)。第三如果程序一值运行无法退出,说明存在“死循环”。C语言是一门通用计算机编程语言,应用广泛。

为什么别人编写的程序烧录后送入单片机能执行,但编译会出错
通常程序里会包含很其他支持的文件,比如 .h文件,或者其他C语言库,这些文件用开发环境编译时,需要知道路径在哪里,如果是自己建立的软件工程,放在一个文件下,通常不会有问题,但是如果工程里有其他文件夹,需要指定路径的,如果把程序整个给了别人,或者只是给了C语言文件,没有其他支持的文件,就会出...

单片机汇编程序在编译时出现SYNTAX ERROR时什么问题
这个东西可能是你的编译程序没安装好,或者是你在编译时开了多个文本程序,导致编译不出,系统报错

pic单片机 mplab 程序编译不了,急求助
我觉得可能是你的PICC版本问题。现在的破解的版本已经到9.83了,你还在用8.05?还有把MPLAB IDE也更新了吧,试后再说。

51单片机完整项目代码无法运行
根据你的错误警告,还有程序发现你的工程最好建立在 Main。c那个文件的同一个文件夹, 然后把里面的.c文件全部加进去,,编译就可以了,我刚才吧你的文件下载,然后按照上面说的做了一遍, 是可以进行编译的,一个警告都没有

单片机最小系统(时钟、电源、复位电路)工作正常,但是上程序后没反映,感...
单片机上电没有反应:1》硬件上,最小模式中比较容易忽略的问题EA\/VP(40封装的第31脚)是否接了电源正。2》电源电压是否达到3.3V以上(有些必须达到4.5V以上),并且在5.5V以下。有没有良好的高、低频滤波。3》包含文件有没有写,包含文件内容有没有被人修改过。4》编译器安装是否使用默认安装?

为什么买的开发板自带的程序可以执行,而我自己写的程序显示下载成功却...
1、首先你买的开发板,例程运行没有错误,说明单片机工作,但是具体例程写的是什么,你看看,最好把所有测试硬件例程运行一遍,保证硬件没有问题!2、你运行自己程序,程序可以下载,说明语法没有错误,编译器可以通过并且生成了hex文件,但是你确定你的程序功能上没有错误吗,就是说虽然程序语法没有错误,...

请问你的单片机中,程序不能生成目标文件是怎么解决的呀?
程序不能生成目标文件这样问题有以下两个方面的原因。一、你的程序有问题,主要是语句书写错误。在软件编译过程中无法通过,故程序不能生成目标文件。二、你的编译程序软件的界面里没有选择将程序生成目标文件,所以没有生成目标文件。见图

单片机烧录成功,但是不运行?
可能你的程序有问题,建议单步跟踪程序,看看io端口配置是否正确,需要配置成输出加上拉。另外,如果内部上拉驱动不够,你还需要在外部输出口加上拉电阻,需要硬件电路的同事给你看。

相似回答