单片机汇编高手请进,帮我看看这个程序有什么问题!

程序目的是输出阶梯波,我在原程序上加了控制台阶数的按钮,目的是方便控制台阶数,但是编译始终有问题,来个大神帮我改改吧(芯片是89c51,0832为功放,最后要用于仿真)O... 程序目的是输出阶梯波,我在原程序上加了控制台阶数的按钮,目的是方便控制台阶数,但是编译始终有问题,来个大神帮我改改吧(芯片是89c51,0832为功放,最后要用于仿真)
ORG 0000H ;在0000H单元存放转移指令
LJMP START ;转移到主程序START
ORG 0100H ;主程序从0100H开始
START: MOV A, #00H ;累加器A清0
MOV DPTR, #7FFFH ;0832 的地址送DPTR,假定P2.7接
MOV R1,TJS
TJS:mov A,P2 ;读取端口
JNB ACC.0,K_UP ;按下K_UP键,转K_UP
K_UP:MOV A,SETCNT
INC A,TJS ;台阶数加1
CJNE A,#10,LP ;未到10,返回
MOV TJS,01H ;到10,变为1台阶数
SJMP LP

LP: MOVX @DPTR, A ;送数据至 0832
LCALL DELAY10ms ;10ms延时
DJNZ R1, NEXT ;不到 10 台阶转移
SJMP START ;产生下一个周期
NEXT: ADD A, #10 ;台阶增幅
SJMP LP ;产生下一台阶
DELAY10ms: MOV R6,#20 ;10ms延时程序
DEL2: MOV R7,#248
DJNZ R7,$
DJNZ R6,DEL2
RET
END ;汇编结束
展开
 我来答
wolf_lhy
2013-05-29 · TA获得超过6609个赞
知道大有可为答主
回答量:1090
采纳率:66%
帮助的人:552万
展开全部
MOV R1,TJS
INC A,TJS
MOV TJS,01H

你看一下TJS,你定义的是个跳转标号,跳转标号本质,是ROM中的程序地址。
51单片机的汇编语言里,除了跳转指令外,其他任何指令都不允许操作跳转标号,也就是说,除了跳转指令,其他任何指令不允许操作ROM里的地址,只能是RAM里的地址。
所以,你以上三条指令根本就是错误的。

MOV A,SETCNT
你的SETCNT是什么?根本没有定义。
追问
那我该怎么改啊,我也是刚刚学这个,有很多地方不懂,时间还有点急,能不能详细说说啊,谢谢了
朝华傲冬021
2013-05-31 · 超过15用户采纳过TA的回答
知道答主
回答量:80
采纳率:100%
帮助的人:24.6万
展开全部

我看了一下,有这么几个问题问下:

  1. 这个是你全部的程序吗?

    如果是的话,请增加符号赋值伪指令,如:

    TJS EQU xxH;

    SETCNT EQU xxH;

    xxH可以为8位数也可以为16位数,作为地址或立即数

  2.  你的TJS:标号在哪条语句中用到了吗?

    如果没有用到,请删掉

  3. 如果改完还是无法编译的话,请把软件的提示信息发上来看下 

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式