我的汇编错哪了!!tarjet out of range

[复制链接]
 楼主| 2973537 发表于 2016-7-12 20:45 | 显示全部楼层 |阅读模式
第一次写点东西,实在太晕了,好心人帮帮忙吧!
org 000h
ljmp start
org 000bh
ljmp zhong
org 30h
start:mov sp,#30h
mov p3,#11111111b
mov tmod,#01h
mov th0,#high(32207)
mov tl0,#low(32207)
setb tr0
setb et0
setb ea
mov 04h,#1
start1:jnb p3.4,jiaw
jnb p3.3,jian
lcall look
jin:mov a,04h
cjne a,#0,start1
mov 00h,#250
mov 01h,#10
lcall fmcx
clr p3.2
ljmp start1
look:mov 03h,04h
mov a,03h
mov b,#100
div ab
mov dptr,#disptab
movc a,@a+dptr
mov p1,a
setb p3.0
lcall d1
clr p3.0
mov p1,#11111111b
lcall d1
mov a,b
mov b,#10
div ab
mov dptr,#disptab
movc a,@a+dptr
mov p1,a
setb p3.5
lcall d1
clr p3.5
mov p1,#11111111b
lcall d1
mov a,b
mov dptr,#disptab
movc a,@a+dptr
mov p1,a
setb p3.7
lcall d1
clr p3.7
mov p1,#11111111b
lcall d1
ret
fmcx:setb p3.1
lcall d1
cpl p3.1
lcall d1
djnz 00h,fmcx
djnz 01h,fmcx
ret
d1:mov 02h,#83
d2:djnz 02h,d2
ret
jiaw:mov 00h,#50
mov 01h,#2
lcall fmcx
jiaw1:lcall look
jnb p3.4,jiaw1
mov a,#5
add a,04h
jc jiaw2
mov 04h,a
ljmp jin
ret
jiaw2:mov a,#255
mov 04h,a
ljmp jin
ret
jian:mov 00h,#50
mov 01h,#2
lcall fmcx
jian1:lcall look
jnb p3.3,jian1
mov a,04h
clr c
subb a,#5
jc jian2
mov 04h,a
ljmp jin
ret
jian2:mov a,#1
mov 04h,a
ljmp jin
ret
zhong:mov tmod,#01h
mov th0,#high(32207)
mov tl0,#low(32207)
setb tr0
push acc
push psw
inc 05h
mov a,05h
cjne a,#10,cuzan
dec 04h
mov a,04h
cjne a,#0,cuzan
clr tr0
cuzan:pop acc
pop psw
reti
disptab:db 11111010b,00100010b,10111001b,10101011b,01100011b,11001011b,11011011b,10100010b,11111011b,11101011b
end
teddeng 发表于 2016-7-12 20:57 | 显示全部楼层
start1:jnb p3.4,jiaw 这个好像限制跳转地址不超过这条指令地址的前后127字节,你编译完看下这句和jiaw那句地址差多少?jnb p3.3,jian这句也有同样的风险。

评分

参与人数 1威望 +1 收起 理由
2973537 + 1 很给力!

查看全部评分

 楼主| 2973537 发表于 2016-7-12 22:07 | 显示全部楼层
多谢 teddeng,我把jiaw和jian上移到了look前面,成功了!
 楼主| 2973537 发表于 2016-7-12 22:17 | 显示全部楼层
现在正常显示时,数码管每隔一段时间不该亮的地方会闪一次,感觉是中断引起,但没想明白是怎么回事?
icecut 发表于 2016-7-13 09:46 | 显示全部楼层
写短程序.慢慢写长.不知道问题就分块测试
 楼主| 2973537 发表于 2016-7-13 13:16 来自手机 | 显示全部楼层
我是4兆晶振,0.1秒中断一次,十次后减一,为啥我等很久才减一呢?
teddeng 发表于 2016-7-13 23:10 | 显示全部楼层
2973537 发表于 2016-7-13 13:16
我是4兆晶振,0.1秒中断一次,十次后减一,为啥我等很久才减一呢?

主要靠自己慢慢找。论坛要碰,正好人家有过这经历,又看到了,又不费事,才会回一下,毕竟是义务劳动:)

评分

参与人数 1威望 +6 收起 理由
玄德 + 6 说得实在!

查看全部评分

 楼主| 2973537 发表于 2016-7-13 23:23 来自手机 | 显示全部楼层
刚刚把中断单独试了下,明白了,05h到十后没有置零。
 楼主| 2973537 发表于 2016-7-14 00:13 | 显示全部楼层
本帖最后由 2973537 于 2016-7-14 00:16 编辑

org 000h
ljmp start
org 000bh
ljmp zhong
org 30h
start:mov sp,#30h
mov 05h,#00h
mov 06h,#00h
mov p3,#11111111b
mov tmod,#01h
mov th0,#high(32207)
mov tl0,#low(32207)
setb tr0
setb et0
setb ea
mov 04h,#1
start1:jnb p3.4,jiaw
jnb p3.3,jian
lcall look
jin:mov a,04h
cjne a,#0,start1
mov 00h,#250
mov 01h,#30
lcall fmcx
clr p3.2
ljmp start1
jiaw:mov 00h,#50
mov 01h,#2
lcall fmcx
jiaw1:lcall look
jnb p3.4,jiaw1
mov a,#5
add a,04h
jc jiaw2
mov 04h,a
ljmp jin
ret
jiaw2:mov a,#255
mov 04h,a
ljmp jin
ret
jian:mov 00h,#50
mov 01h,#2
lcall fmcx
jian1:lcall look
jnb p3.3,jian1
mov a,04h
clr c
subb a,#5
jc jian2
mov 04h,a
ljmp jin
ret
jian2:mov a,#1
mov 04h,a
ljmp jin
ret
look:mov 03h,04h
mov a,03h
mov b,#100
div ab
mov dptr,#disptab
movc a,@a+dptr
mov p1,a
setb p3.0
lcall d1
clr p3.0
mov p1,#11111111b
lcall d1
mov a,b
mov b,#10
div ab
mov dptr,#disptab
movc a,@a+dptr
mov p1,a
setb p3.5
lcall d1
clr p3.5
mov p1,#11111111b
lcall d1
mov a,b
mov dptr,#disptab
movc a,@a+dptr
mov p1,a
setb p3.7
lcall d1
clr p3.7
mov p1,#11111111b
lcall d1
ret
fmcx:setb p3.1
lcall d1
cpl p3.1
lcall d1
djnz 00h,fmcx
djnz 01h,fmcx
ret
d1:mov 02h,#41
d2:djnz 02h,d2
ret
zhong:mov tmod,#01h
mov th0,#high(32207)
mov tl0,#low(32207)
setb tr0
push acc
push psw
inc 05h
mov a,05h
cjne a,#10,cuzan
mov 05h,#00h
inc 06h
mov a,06h
cjne a,#60,cuzan
mov 06h,#00h
dec 04h
mov a,04h
cjne a,#0,cuzan
clr tr0
cuzan:pop acc
pop psw
reti
disptab:db 11111010b,00100010b,10111001b,10101011b,01100011b,11001011b,11011011b,10100010b,11111011b,11101011b
end改成这样了,可以每分钟倒计时了,但是数码管有鬼影,

kk118a 发表于 2016-7-14 17:23 | 显示全部楼层
发完数据给个00000000b
 楼主| 2973537 发表于 2016-7-14 23:31 来自手机 | 显示全部楼层
我给的11111111b,是想省点电的,给0的话上拉电阻会全电压加上去,
 楼主| 2973537 发表于 2016-7-14 23:35 来自手机 | 显示全部楼层
知道鬼影的原因了,我中断时acc和psw顺序搞反了,当中断返回显示时a中内容改变了,所以会乱闪一次。
xxdcq 发表于 2016-7-15 10:57 | 显示全部楼层
本帖最后由 xxdcq 于 2016-7-15 10:59 编辑
teddeng 发表于 2016-7-12 20:57
start1:jnb p3.4,jiaw 这个好像限制跳转地址不超过这条指令地址的前后127字节,你编译完看下这句和jiaw那句 ...

这种相对跳转如果改不了地址可以在中间加跳板,咱常这样干,另外汇编里咱一般都是用ljmp lcall等绝对跳转,几乎不用sjmp ajmp acall等,保险些
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

1

主题

20

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部