单片机程序,程序没问题,编译不出来怎么回事?
KEYEQU30HORG000HSJMPSTARTSTART:MOVP0,#00HJLXU:MOVP1,#0FFHCLRP1.4MOVA,P1ANLA,#0FHXRLA,...
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
展开
12个回答
展开全部
根据提供的单片机程序,无法准确判断编译不通过的具体原因,可能存在以下几种可能性:
1. 编译环境配置问题:请确认是否已经正确配置了单片机的编译环境,在编译前需要正确安装并配置相应的开发工具和编译器。
2. 语法错误:程序中可能存在语法错误,比如缺少分号、括号不匹配、变量命名错误等。请仔细检查所有语句和语法规则是否正确。
3. 指令集不匹配:不同型号的单片机可能存在指令集的差异,程序中的指令可能与目标平台的指令集不匹配,导致编译错误。请确保选择的编译器和单片机型号匹配。
4. 链接错误:程序中可能存在跳转目标未定义或者重复定义的问题,导致链接错误。请检查程序中的跳转语句和标签定义是否正确。
建议您逐行检查程序中的语法和指令,并仔细查看编译器的错误提示信息,以便更好地定位和解决问题。另外,如果可以提供更详细的错误信息和编译环境的相关信息,将能更好地帮助解决问题。
1. 编译环境配置问题:请确认是否已经正确配置了单片机的编译环境,在编译前需要正确安装并配置相应的开发工具和编译器。
2. 语法错误:程序中可能存在语法错误,比如缺少分号、括号不匹配、变量命名错误等。请仔细检查所有语句和语法规则是否正确。
3. 指令集不匹配:不同型号的单片机可能存在指令集的差异,程序中的指令可能与目标平台的指令集不匹配,导致编译错误。请确保选择的编译器和单片机型号匹配。
4. 链接错误:程序中可能存在跳转目标未定义或者重复定义的问题,导致链接错误。请检查程序中的跳转语句和标签定义是否正确。
建议您逐行检查程序中的语法和指令,并仔细查看编译器的错误提示信息,以便更好地定位和解决问题。另外,如果可以提供更详细的错误信息和编译环境的相关信息,将能更好地帮助解决问题。
展开全部
单片机的内存地址0003H是中断子程序入口,你从000H开始编辑程序,然后接了个SJMP跳转到START,但是你的START程序没有另起地址,假设SJMP是两个字节指令的话,那么你的START程序段的地址就是0003H,把中断子程序入口堵住了,所以你的程序就产生了警告。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的源程序是汇编,所以工程中的startup.a51要去掉。
好好学习天天向上
好好学习天天向上
更多追问追答
追问
您看看我程序里有这个东西吗?
追答
工程中的
工程中的
工程中的
工程中的
搞明白什么叫做工程
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
单片机程序,语法上设问题,你可以换个缟译器试试,用MedWin可以编译通过。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询