打印

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

[复制链接]
1233|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yuanbao502|  楼主 | 2009-3-25 17:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我设置的是 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;
        
}

相关帖子

沙发
hulie| | 2009-3-28 10:42 | 只看该作者

TMOD设置成T0的了

TMOD=0x02改成TMOD=0x20

使用特权

评论回复
板凳
yuanbao502|  楼主 | 2009-3-28 12:14 | 只看该作者

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

谢谢上面

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

16

帖子

0

粉丝