找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1203|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

STC8系列單片機(jī)RS485偶校驗通信程序經(jīng)常收發(fā)不成功?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:487588 發(fā)表于 2023-5-8 10:16 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
經(jīng)常收發(fā)不成功 代碼如下
sfr P3M0=0xB2;
sfr P3M1=0xB1;
unsigned char var0,var;
void main(void)
{

  init();  
  while(1){}

}

void delay_ms(unsigned char ms)
{
        unsigned int i;
        do{
                i = MAIN_Fosc / 10000;
                while(--i);
        }while(--ms);
}

void init(void)
{
  P_SW2=0x80;
  XOSCCR=0xc0;
  while(!(XOSCCR&1));
  CLKDIV=0x00;
  CKSEL=0x01;
  P_SW2=0x00;

  P3M0=64;

  IE=0x00;     //關(guān)閉所有中斷

  S2CON=0X90;

  T2L=(65536-FOSC/19200/4);
  T2H=(65536-FOSC/19200/4)>>8;
  AUXR=0X14;

  RW485 = LOW;

  IE2=0x01;//使能串口2中斷
  EA=1;
}

void SendChar232(UCHAR senddata)
{
  RW485 = HIGH;
  var0 =0;
var += var0;
  P ? (S2CON |= 0x08) : (S2CON &= ~0x08);
  S2BUF=senddata;
  while(!(S2CON&2));
  S2CON&=(~2);
  delay_ms(50);
  RW485 = LOW;
}


void USART2_ISR(void) interrupt 8 using 1
{
        unsigned char redata;
  unsigned char i=0;
  if(S2CON&1)
        {
    var0 =0;
    redata = S2BUF;
    var = redata;
    var += var0;
    if((S2CON & 0x04) == P)
    {
      SendChar232(0x41);
    }
    S2CON&=(~1);
  }
}
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:487588 發(fā)表于 2023-5-8 19:13 | 只看該作者
接收1個字節(jié)正常 2個以上就出現(xiàn)亂碼
回復(fù)

使用道具 舉報

板凳
ID:384109 發(fā)表于 2023-5-8 19:50 | 只看該作者
485是半雙工的
回復(fù)

使用道具 舉報

地板
ID:123289 發(fā)表于 2023-5-9 09:20 | 只看該作者
雙方串行時序時鐘或相伴偏差較大的,會出現(xiàn)前個把字節(jié)OK,后面就錯了。
回復(fù)

使用道具 舉報

5#
ID:1034262 發(fā)表于 2023-5-9 10:33 | 只看該作者
485是半雙工的,切換收發(fā)模式時,給一點點時間穩(wěn)定。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表