梦在那 发表于 2021-8-20 10:29

STC12C5A定时器0与串口1同时使用冲突

现在想要用定时器0进行定时操作,定时器1作为串口中断进行串口打印,把定时器0屏蔽掉后可以正常串口打印,两个同时用就不行了,串口不输出了。
void SendData(char dat)
{
        SBUF = dat;
        while(TI ==0);
        TI = 0;
}
void UartInit(void)   //115200bps @11.0592MHz
{

        PCON = 0x80;                //波特率不倍速
        SCON = 0x50;                //8位数据,可变波特率
        AUXR = 0x40;                //串口1选择定时器1为波特率发生器,定时器1时钟为1T;定时器0时钟12T模式
        TMOD = 0x21;                //设定定时器1为8位自动重装方式,定时器0位16位
        TL1 = 0xFD;                //设定定时1初值
        TH1 = 0xFD;                //设定定时器1重装值
        TR1 = 1;                //启动定时器1
        Timer0Init();
        ES = 1;//开启串口中断
        PS = 1;//设计串口中断优先级
        ET0 = 1;
        EA = 1;//开启总中断
}
void Timer0Init(void)                //10毫秒@11.0592MHz
{
        TL0 = 0x00;                //设置定时0初始值
        TH0 = 0xDC;                //设置定时0初始值
        TR0 = 1;                //定时器0开始计时
}
void main()
{       
        UartInit();       
        while(1)
        {
                if(timer0_count ==200){
                        timer0_count=0;
                Data_Process();
                        }
}
}

void RSINTR() interrupt 4
{
        if(RI)
        {
                RI = 0;
                dat = SBUF;
        }
}

void Timer0() interrupt 1
{
        TL0 = 0x00;                //设置定时初始值
        TH0 = 0x4C;                //设置定时初始值
        timer0_count++;
}


梦在那 发表于 2021-8-23 15:28

来个人踩踩

梦在那 发表于 2021-8-26 09:02

没人吗
页: [1]
查看完整版本: STC12C5A定时器0与串口1同时使用冲突