作业帮 > 综合 > 作业

proteus中单片机仿真程序问题

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/07/09 01:34:34
proteus中单片机仿真程序问题
以下是60S倒计时程序:
org 0
sjmp star
org 1bh
sjmp t1s
org 30h
star:mov r2,#60
mov r4,#20
mov ie,#88h
mov tmod,#10h
mov th1,#3ch
mov tl1,#0b0h
setb tr1
mov a,r2
mov b,#10
div ab
acall seg7
mov p1,a
mov a,b
acall seg7
mov p2,a
sjmp $
t1s:mov th1,#3ch
mov tl1,#0b0h
djnz r4,t1s0
mov r4,#20
djnz r2,t1s1
clr tr1
sjmp t1s1
t1s0:reti
t1s1:mov a,r2
mov b,#10
div ab
acall seg7
mov p1,a
mov a,b
acall seg7
mov p2,a
reti
seg7:inc a
movc a,@a+pc
ret
db 0c0h,0f9h,0a4h,0b0h
db 99h,92h,82h,0f8h
db 80h,90h,88h,83h
db 0c6h,0a1h,86h,8eh
end
程序从sjmp star开始执行,仿真时我在sjmp star设置断点,然后一步一步执行,但是程序最后执行到sjmp $就停止了,并没有执行中断服务sjmp t1s,所以电路就只显示了60S,然而正常执行,即没有设置断点,不是单步执行时,却能从60S变到00S,这是怎么回事呢?高手指教程序是怎么运行的.我还送100分.
主程序在SJMP $反复执行,这是正常现象.
你如果有耐心,在此处执行几万次,是会看到执行到中断服务sjmp t1s中去的.
在单步执行SJMP $期间,你可以看到T1中的“3C、B0”数值,会逐渐增大,当增大到0000,即可进入中断服务程序.