打印
[STC单片机]

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

[复制链接]
10578|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
梦在那|  楼主 | 2021-8-20 10:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在想要用定时器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 | 只看该作者
没人吗

使用特权

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

本版积分规则

36

主题

222

帖子

2

粉丝