单片机控制程序 为什么P3口不能改变?

来源:百度知道 编辑:UC知道 时间:2024/05/23 18:31:48
单片机控制程序 为什么P3口不能改变?

我想写个单片机定时程序,写了一半(键盘扫描部分还没写),用WAVE编译,发现P3口的值不变,这是为什么?------P3口处值是F8H,要求到8分钟后变为FFH,但是为什么在WAVE上看不到变化呢?请教高手啊!!
程序如下:
;*************************************************
TS EQU 2DH;*秒计数器
TM EQU 2EH;分计数器
TH EQU 2FH;时计数器
TT0 EQU 26H;秒发生器
ORG 0000H
AJMP MAIN
ORG 000BH ;定时器0(T0)中断入口
SJMP I_T0
;*****************中断*****************
ORG 0060H ;定时器T0中断服务程序
I_T0: PUSH ACC
PUSH PSW
MOV R3,TT0
DJNZ R3,I_T01 ;时间不到1S,转出
MOV A,TS ;秒计数器加1
ADD A,#01H
MOV TS,A
SUBB A,#60 ;秒计数器>59? Y,秒计数器=00
JC I_T02;不到60秒转
MOV TS,#00H
MOV A,TM ;分计数器加1
ADD A,#01H
MOV TM,A
SUBB A,#60 ;分计数器>59? Y,分计数器=00
JC I_T02;不到60分转
MOV TM,#00H
MOV R2,TH
DJNZ R2,I_T03;时计数器<8转
SETB P3.0
SETB P3.1
SETB P3.2;8小时到,P3.0~P3.2输出高电平
RETI
I_T03:MOV TH,R2
MOV TT0,#14H
POP PSW
POP ACC
NOP
NOP
RETI
I_T02:MO

MOV R2,TH
DJNZ R2,I_T03;时计数器<8转

问题很可能在此处。
TH是动态地,每次中断都改变。
所以R2的值不会为0.
(我没去理解整个程序)

SJMP I_T0
;*****************中断*****************
ORG 0060H ;定时器T0中断服务程序
I_T0: PUSH ACC

SJMP I_T0 怎么能跳到中断程序来?