找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 903|回复: 2
打印 上一主题 下一主题
收起左侧

STC12C5A60S2单片机串口通信独立波特率发生器为什么会停

[复制链接]
跳转到指定楼层
楼主
ID:207051 发表于 2022-4-22 22:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STC12C5A60S2单片机程序
我做了一个多机通信,用STC12C5A60S2,串口通信独立波特率发生器,工作一段时间就通信不了,没有规律,定时器也停了,数码显显示静止状态,按键不会加减,请哪位大师指定一下,谢谢!
//==================串口和定时器初始化===============//
TMOD=0x11;
PCON &= 0x7F;  //波特率不倍速
SCON = 0x50;  //8位数据,可变波特率
AUXR &= 0xFB;  //定时器时钟12T模式
BRT = 0xFD;  //设置定时重载值
AUXR |= 0x01;  //串口1使用独立波特率发射器为波特率发生器
AUXR |= 0x10;  //启动独立波特率发射器
   
ES = 1;                 //Enable UART interrupt
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
EA=1;
EX0=1;
IT0=0;
ET0=1;
ET1=1;
TR0=1;

PT0=1;
PT1=0;
PS=1;// 串口优先级


//=========定时器0,控制数码管显示    ==============//
void Timer0(void) interrupt 1
{

TR0=0;
TH0=(65536-2000)/256;  //5MS定时周期12T
TL0=(65536-2000)%256;

   Display();

cout++;

if(cout%200==0)
     {
   t_100ms=1;//设置增加时间
  }
if(cout%350==0)
     {
   t_180ms=1;//设置增加时间
  }
  
if(cout%500==0)
     {
    t_250ms=~t_250ms;//数码管闪烁值

     if(Start_Menu==2)//==FLOU
      {
    cout4++;
    if(cout4==25)
       {
      AD_Contr1=0;Out1_LED=1;
    }
    if(cout4==50)
      { cout4=0;
        AD_Contr2=0;Out2_LED=1;
      }
           }      
   
  }

TR0=1;
}


//============定时器1,计时用    ============//
void Timer1() interrupt 3
{
  //TR1=0;
    TH1=(65536-46080)/256;
TL1=(65536-46080)%256;
      t_50Ms_Cout++;
    if(t_50Ms_Cout==20)
             {
           t_50Ms_Cout=0;
           second++;
              if(second==5&&Start_Time==1)
     {
       t_5s=1;
     }
     if(second==10&&Start_Time==1)
     {
      t_10s=1;Start_Time=0;
     }
           if(second==60)
           {
             second=0;
    minute++;
   
     if(minute==60)
     {
      minute=0;
      hour++;
      if(hour==10)
       {
        hour=0;
       }
     }
           }
     
          }
        
   
//  TR1=1;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:688692 发表于 2022-4-23 00:37 | 只看该作者
你这不叫波特率发生器停,叫死机了,或者程序跑飞了。
在主循环里面取反一个IO口,看看出现异常情况的时候,这个IO口还不停翻转吗

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

板凳
ID:207051 发表于 2022-4-23 08:27 | 只看该作者
cnos 发表于 2022-4-23 00:37
你这不叫波特率发生器停,叫死机了,或者程序跑飞了。
在主循环里面取反一个IO口,看看出现异常情况的时候 ...

哦,谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表