打印

编译的时候老是不通过,软件换了好几个了,还是有错误

[复制链接]
563|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangzsa|  楼主 | 2018-6-14 17:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序是《8051单片机彻底研究-基础篇》上的,不过编译的时候老是不通过,软件换了好几个了,还是有错误,我是菜鸟,希望大家指点一下
              ORG 0000H
              MOV  R0,#00H
$         DJNZ R0,$
START MOV SP,#50H
LOOP   MOV P3,#00H
              CALL DELAY
              MOV P3,#FFH
              CALL DELAY
              SJMP LOOP
;
DELAY MOV R0,#00H
          $1 MOV R1,#00H
          $2 DJNZ R1,$2
              DJNZ R0,$1
RET
沙发
langgq| | 2018-6-14 17:15 | 只看该作者
把你编译器报错的部分粘上来看看呢。

使用特权

评论回复
板凳
wangpe| | 2018-6-14 17:21 | 只看该作者
MOV  R0,#00H
$         DJNZ R0,$

这是哪国神圣写的程序哟??

使用特权

评论回复
地板
llia| | 2018-6-14 17:24 | 只看该作者
是不是编译器没有设置好吗?

使用特权

评论回复
5
wangzsa|  楼主 | 2018-6-14 17:35 | 只看该作者

使用特权

评论回复
6
wangzsa|  楼主 | 2018-6-14 17:39 | 只看该作者

不好意思又看了看书上 这行($    DJNZ R0,$)前面没有$
这本书据说是一个台湾人写的,好多人推荐,我就买了,不过书上的程序编译的时候总是出错,书上自带了一个dos版本的编译器,不过不能用,郁闷!

使用特权

评论回复
7
yufe| | 2018-6-14 17:42 | 只看该作者
DELAY:
          MOV R0,#00H
DELAY_LOOP_1:
          MOV R1,#00H
DELAY_LOOP_2:
          DJNZ R1,DELAY_LOOP_2
          DJNZ R0,DELAY_LOOP_1
       RETURN

标号没有定义,初学单片机,不要学人家偷懒。

此人水平有问题,DJNZ R0,$这行没有任何实际意义。

使用特权

评论回复
8
lyjian| | 2018-6-14 21:39 | 只看该作者
yufe 发表于 2018-6-14 17:42
DELAY:
          MOV R0,#00H
DELAY_LOOP_1:

DJNZ R0,$这行没有任何实际意义
****
延时,有没意义不好说

使用特权

评论回复
9
lyjian| | 2018-6-14 21:43 | 只看该作者
标号加个冒号
Keil C51编译的话加个头文件或者设置里设一下符号定义。

使用特权

评论回复
10
wangzsa|  楼主 | 2018-6-15 15:55 | 只看该作者
谢谢不过还有一处错误,图上的第七行怎么也是没有定义呢

使用特权

评论回复
11
guoyt| | 2018-6-15 16:03 | 只看该作者
你把所有的标号问题都改了?放上来瞧瞧呢。

使用特权

评论回复
12
lium| | 2018-6-15 16:06 | 只看该作者
将MOV P3,#FFH改为MOV P3,#0FFH即可

使用特权

评论回复
13
zhanglli| | 2018-6-15 16:09 | 只看该作者

你想要程序实现什么样的功能?
从你的程序看好象是想把接在P3口8个LED闪烁起来!可从你的程序看,除非你用的汇编环境不是常用的KEIL,要不这样的语句、语法和书写格式怎能编译通过呢!唉!!!!!!!!!

使用特权

评论回复
14
wangzsa|  楼主 | 2018-6-15 16:12 | 只看该作者
ORG 0000H
              MOV  R0,#00H
              DJNZ R0,$
START:     MOV SP,#50H
LOOP:      MOV P3,#00H
                   LCALL DELAY
                   MOV P3,#0FFH
                   LCALL DELAY
                   SJMP LOOP
;
DELAY:     MOV R0,#00H
D1:        MOV R1,#00H
D2:           DJNZ R1,D2
                   DJNZ R0,D1
                   RET
           END
这是修改后的程序,用keil,伟福都通过了,发现keil对汇编语言书写格式要求挺严格的,我初学,多谢各位指点

使用特权

评论回复
15
zhuww| | 2018-6-15 16:16 | 只看该作者

KEIL应该算“好说话”的了,写汇编,啥东东都严格

使用特权

评论回复
16
langgq| | 2018-6-15 16:18 | 只看该作者

这可不是C,是1:1的机器码生成呀。

使用特权

评论回复
17
wangzsa|  楼主 | 2018-6-15 16:20 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

914

主题

9040

帖子

5

粉丝