单片机80c51,汇编语言。运行一会就出现错误,请高手指教一下

[复制链接]
查看11 | 回复2 | 2010-4-12 21:36:33 | 显示全部楼层 |阅读模式
MOV DPTR,#TAB
MOV A,@R0 MOVC A,@A+DPTR MOV P2,A
MOV A,R2//你这里把R2的值赋给了寄存器A,其实我感觉R2应该初始化为#06h,你上面直接赋值有六个数 MOV P1,A
LCALL DL1MS
MOV R2,A//你这里A的值没有变,所以上面R2赋值,又重新赋了回来。这样做浪费代码,没有实际意义。 INC R0
DJNZ R2,BOOP
MOV DPTR,#TAB
MOV A,@R0 MOVC A,@A+DPTR //问题有可能出现在这条,你用查表指令,但是会造成溢出,你TAB里面有的值和R0初始值相加要超过0FFH MOV P2,A
MOV A,R2 MOV P1,A
LCALL DL1MS你这段代码具体实现什么功能我没看出来,我感觉就是那个查表指令有问题,你把那个指令再看一下。
回复

使用道具 举报

千问 | 2010-4-12 21:36:33 | 显示全部楼层
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH
RET这两句颠倒一下,也就是
RETTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH这样应该就可以了。
回复

使用道具 举报

千问 | 2010-4-12 21:36:33 | 显示全部楼层
第一次见这样的写法、、、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行