我设置的是 T1做为波特率发生器 9600的波特率<br />然后 串口工作方式于1,就是 一侦数据10位的那种,11.0592MHZ<br />这样的话 如果我发送一个字符 也就是 10/9600=1.041ms 左右的时间吧?<br /><br />然后 如果 是发送情况下,TI会置1,然后会去执行中断程序吧?<br />也就是说 发送完一次字符,就是过了1.041ms 会执行一次中断<br /><br /><br />但是单步调试的时候 程序 走的 才10us 就进入中断了啊?<br />为什么啊?<br />#include<reg51.h><br />#define uchar unsigned char<br />#define uint unsigned int<br />sbit P1_0=P1^0;<br />/////////////中断设置,串行中断打开<br />void init(void)<br />{<br /> TMOD=0x02;<br /> TH1=0xfd;<br /> TL1=0xfd;<br /> SCON=0x40;<br /> TR1=1;<br /> ES=1;<br /> EA=1;<br />}<br />////////////////////////延时子程序<br />void delay(uint k)<br />{<br /> uint i;<br /> uchar j;<br /> for(i=0;i<k;i++)<br /> {<br /> for(j=0;j<121;j++);<br /> }<br />}<br />///////////////////<br />void main(void)<br />{<br /> uchar i=0x0a;<br /> init();<br /> P1_0=0;<br /> while(1)<br /> {<br /> <br /> SBUF=i;<br /> delay(1);//大约1ms时间,程序走到这里 还没执行完1ms,大概15us左右 就进入中断了啊 ?为什么啊<br /> delay(1);<br /> delay(1);<br /> delay(1);<br /> }<br />}<br />//////////////<br />void serial_serve(void) interrupt 4<br />{<br /> P1_0=!P1_0;<br /> TI=0;<br /> <br />} |
|