zhyong319 发表于 2013-1-25 23:06:53

STC89C52单片机无法同时使用串口和定时器2,是怎么回事?

这两个功能只能二选一,同时使用时定时器2只能中断一次,主程序正常运行。是怎么回事,希望大侠帮帮忙。

nydns 发表于 2013-1-25 23:21:29

帖一下代码吧...

5612404 发表于 2013-1-26 09:37:39

定时器2做波特率发生器,用其他定时器不行吗

zhyong319 发表于 2013-1-26 11:56:23

故障代码如下:
请大家看一下。void InitUSART(void)
{
        /*****串口配置******/
                TMOD |= 0x20; //timer1 8bit autoload       
        SCON = 0x50;//允许接收及中断
         //    PCON = 0;
        PCON &= 0x7f;
        TH1 = 0xf3;// 2400 bps
        TL1 = TH1;
        TI=0;
        RI = 0;
        ES = 1;
        ET1 = 0;
        TR1 = 1;
}

void Time2_Init(void)
{
/*****定时器2配置******/
        T2MOD = 0;
        T2CON = 0;
        RCAP2H = (65535-10000)/256;   //10 ms autoload
        RCAP2L = (65535-10000)%256;
        TH2 = RCAP2H;
        TL2 = RCAP2L;
        ET2 = 1;
        TR2 = 1;
}

int SysInit(void)
{   
               /*****定时器0配置******/
        TMOD |= 0x01;//TIMER0 16bit//
        TCON = 0x00;
        TH0 = (65536-1000) /256;   // 1 ms
        TL0 = (65536-1000)%256;
        ET0 = 1;
        TR0 = 1;

        Time2_Init(); //定时器2初始化
        InitUSART();//初始化串口
        EA = 1;
       
        return 0;
}

zhyong319 发表于 2013-1-26 11:59:38

整个工程如下:

zpxa001 发表于 2013-1-26 12:03:51

5612404 发表于 2013-1-26 09:37 static/image/common/back.gif
定时器2做波特率发生器,用其他定时器不行吗

记得51单片机的确是这样的...

zhyong319 发表于 2013-1-26 12:18:18

5612404 发表于 2013-1-26 09:37 static/image/common/back.gif
定时器2做波特率发生器,用其他定时器不行吗

我用定时器1做波特率发生器,定时器2想做PWM控制,因为有16自动重载功能。

zhyong319 发表于 2013-1-26 12:19:25

zpxa001 发表于 2013-1-26 12:03 static/image/common/back.gif
记得51单片机的确是这样的...

我用的是STC89C52RC,有3个定时器,看手册上说可以将定时器1、与定时器2做波特率发生器。

zhyong319 发表于 2013-1-26 13:53:40

问题已经解决了, 问题出在了串口发送上。
重写了串口发送函数

likui19891224 发表于 2013-7-28 23:21:46

zhyong319 发表于 2013-1-26 13:53 static/image/common/back.gif
问题已经解决了, 问题出在了串口发送上。
重写了串口发送函数

求改过的串口发送函数,我和你遇到同一个问题,求帮助啊。。。。
页: [1]
查看完整版本: STC89C52单片机无法同时使用串口和定时器2,是怎么回事?