发表于:2006/8/7 13:59:00
#0楼
org 0000h
jmp start
org 13h
jmp INT
start:
mov ie,#10000100B
mov sp,#30H
setb it1
mov p2,#0ffH
setb p3.3
setb p1.4
mov r1,#02
loop: jb p1.4,loop
LOOP1: mov p2,#10000000B
call delay
mov p2,#11000000B
call delay1
mov p2,#10000000B
call delay
mov p2,#10100000B
call delay2
djnz r1,loop1
mov p2,#000H
jmp start
INT: push psw
setb rs0
mov p2,#10000000B
call delay
mov p2,#00100000B
call delay
pop psw
RETI
delay: mov r7,#10
d1: mov r6,#200
d2: mov r5,#250
djnz r5,$
djnz r6,d2
djnz r7,d1
ret
delay1:mov r7,#100
d3: mov r6,#200
d4: mov r5,#250
djnz r5,$
djnz r6,d4
djnz r7,d3
ret
delay2:mov r7,#100
d5: mov r6,#200
d6: mov r5,#250
djnz r5,$
djnz r6,d6
djnz r7,d5
ret
end
为什么我在按了中断后,执行INT子程序的mov p2,#00100000B花了很长时间才返回主程序,可程序里是延时DELAY 大约1秒钟啊
jmp start
org 13h
jmp INT
start:
mov ie,#10000100B
mov sp,#30H
setb it1
mov p2,#0ffH
setb p3.3
setb p1.4
mov r1,#02
loop: jb p1.4,loop
LOOP1: mov p2,#10000000B
call delay
mov p2,#11000000B
call delay1
mov p2,#10000000B
call delay
mov p2,#10100000B
call delay2
djnz r1,loop1
mov p2,#000H
jmp start
INT: push psw
setb rs0
mov p2,#10000000B
call delay
mov p2,#00100000B
call delay
pop psw
RETI
delay: mov r7,#10
d1: mov r6,#200
d2: mov r5,#250
djnz r5,$
djnz r6,d2
djnz r7,d1
ret
delay1:mov r7,#100
d3: mov r6,#200
d4: mov r5,#250
djnz r5,$
djnz r6,d4
djnz r7,d3
ret
delay2:mov r7,#100
d5: mov r6,#200
d6: mov r5,#250
djnz r5,$
djnz r6,d6
djnz r7,d5
ret
end
为什么我在按了中断后,执行INT子程序的mov p2,#00100000B花了很长时间才返回主程序,可程序里是延时DELAY 大约1秒钟啊