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