请问高手关于串口中断的问题

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

TMOD设置成T0的了

TMOD=0x02改成TMOD=0x20
 楼主| yuanbao502 发表于 2009-3-28 12:14 | 显示全部楼层

请问高手关于串口中断的问题

谢谢上面
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

16

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部