void ser() interrupt 4
是串行中断,不是定时器中断;所以你就算开了定时器中断也不会有函数来处理该中断,反而会让程序跑飞。再者,就像lxq2345说的一样,开了TR,定时器就会开始跑了。
ES=1;
void ser() interrupt 4
{
RI=0;
// P1=SBUF;
a=SBUF;
flag=1;
}
你这个中断,好像是串口中断哦。。。的确没有允许CPU响应时钟中断,如你所说,没有设置ET1=1打开定时器1中断。所以我猜你程序跑起来时的中断应该是串口的中断。。。。
用 T1 控制串行口的波特率,T1 和串行口之间的工作关系,是它们自动协调的,不但不用打开 T1 的中断,甚至不用启动 T1,只要设置好了 T1 的初始值即可。
T1中断干嘛~打开TR1,T1就工作。中断是为了加处理函数的。