打印
[STC单片机]

STC12单片机使用串口2的中断后延时程序时间变为8倍

[复制链接]
2133|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yanshijiajia|  楼主 | 2014-8-29 10:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟在使用STC12时延时程序设置的500毫秒,没有加串口2的中断程序void UART2_Routine(void)    interrupt 8 时延时程序正常使用,加上后不知道为什么延时扩大了8倍,变成了4s。程序如下:#include<STC12C5A60S2.H>
#define uint unsigned int
#define uchar unsigned char

uchar code RecNum00[6]="102000"
void init()//初始化串口2
{
        S2CON= 0x50;//方式1允许串口2接收
          BRT  = 0xFD;//设置独立波特率发生器 BRT 的自动重装数
        AUXR= 0x10;//BRTR位=1启用独立波特率发生器                                  
        AUXR1= 0x00; //可取缺省为P1
       
        IE2  = 0x01;//开串口2中断ES2=1;
        ES=1;
        EA   = 1;//开总中断
}

/****************************串口发送GPRS字符串(数组)**********************/

void delayms(uint t)
{
        uint i,j;
          for(i=t;i>0;i--)
             for(j=920;j>0;j--);            
}
void send(uchar *str)
{
        uint i;
        for(i=0;i<6;i++)
        {
                S2BUF=*str++;
                while(S2CON&0x02==0);
            S2CON = S2CON & 0xFD;
                delayms(100);                          
               
        }         
}
main()
{
                                  
        init();
        IE2  = 0x00;//开串口2中断ES2=1;               
        send(RecNum00);
        S2BUF=0x30;
        while(S2CON&0x02==0);
           S2CON = S2CON & 0xFD;
        IE2  = 0x01;//开串口2中断ES2=1;
        P2=0x0f;
        delayms(500);
        P2=0xf0;                          
}       
void UART2_Routine(void)    interrupt 8       
{        

}
我用P2口连接的8个LED观察延时效果,  谢谢。

相关帖子

沙发
yanshijiajia|  楼主 | 2014-8-29 10:28 | 只看该作者
我用keil调试的时候时间没问题,可是一放到单片机里就不行了

使用特权

评论回复
板凳
coody| | 2014-8-29 10:35 | 只看该作者
你的程序问题。
串口2中断里没有清除接收发送中断标志,一旦有中断,则会频繁的进入中断,就会造成你这样的问题。

使用特权

评论回复
地板
yanshijiajia|  楼主 | 2014-8-29 10:39 | 只看该作者
coody 发表于 2014-8-29 10:35
你的程序问题。
串口2中断里没有清除接收发送中断标志,一旦有中断,则会频繁的进入中断,就会造成你这样的 ...

太感谢了 找了很久没找到原因  终于可以了 可是还有一边我不明白 我在用串口发送之前已经把串口2的中断允许关上了 为啥还进入中断程序啊

使用特权

评论回复
5
yanshijiajia|  楼主 | 2014-8-29 11:11 | 只看该作者
yanshijiajia 发表于 2014-8-29 10:39
太感谢了 找了很久没找到原因  终于可以了 可是还有一边我不明白 我在用串口发送之前已经把串口2的中断允 ...

sorry sorry 刚才想错了  明白了 谢谢 谢谢

使用特权

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

本版积分规则

2

主题

74

帖子

2

粉丝