找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC12C5A60S2 串口2問題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:114987 發(fā)表于 2018-3-25 17:22 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <stc12c5a60s2.h>
#define S2TI  0x02              //S2CON.1
unsigned int receCount=0,commandCount=0,i;
unsigned char rece_buf[6]={0X01,0X02,0X03,0X04,0X05,0X08},command_buf[6]={0xFD,0x00,0x00,0x00,0x00,0x00};
void Delay5000ms()                //@11.0592MHz
{
        unsigned char i, j, k;

        //_nop_();
        //_nop_();
        i = 211;
        j = 30;
        k = 11;
        do
        {
                do
                {
                        while (--k);
                } while (--j);
        } while (--i);
}

void UartInit1()                //115200bps@11.0592MHz
{

  PCON &= 0x7F;                //波特率不倍速
        SCON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR |= 0x40;                //定時器1時鐘為Fosc,即1T
        AUXR &= 0xFE;                //串口1選擇定時器1為波特率發(fā)生器
        TMOD &= 0x0F;                //清除定時器1模式位
        TMOD |= 0x20;                //設(shè)定定時器1為8位自動重裝方式
        TL1 = 0xFD;                //設(shè)定定時初值
        TH1 = 0xFD;                //設(shè)定定時器重裝值
        ET1 = 0;                //禁止定時器1中斷
        TR1 = 1;                //啟動定時器1
        ES=1;
        EA=1;
}

void UartInit2()                //9600bps@11.0592MHz
{
        AUXR &= 0xF7;                //波特率不倍速
        S2CON = 0x50;                //8位數(shù)據(jù),可變波特率
        AUXR |= 0x04;                //獨立波特率發(fā)生器時鐘為Fosc,即1T
        BRT = 0xDC;                //設(shè)定獨立波特率發(fā)生器重裝值
        AUXR |= 0x10;                //啟動獨立波特率發(fā)生器
}



/***********************************串口1中斷*******/

void ser1_int() interrupt 4     //中斷函數(shù)不用聲明   
{  
    if(RI==1)  
    {  
        RI=0;  
        rece_buf[receCount]=SBUF;  
         receCount++;
        }

}


void main()
{
        UartInit2();
        UartInit1();
        while(1)
        {
                for(i=0;i<6;i++)
                {
                        SBUF=command_buf[i];
                        while(TI==0);
                        TI=0;
                }
          Delay5000ms();
                if(receCount=6)
                {
                        for(i=0;i<6;i++)
                        {
                                S2BUF=rece_buf[i];
                                while(S2CON & S2TI==0);
                                S2CON &= ~S2TI;         //清除S2TI位;
                        }
                }
                receCount=0;
        }

}



為啥我的串口2只能發(fā)送rece_buf[i]中的最后一個數(shù)??????????、

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:315114 發(fā)表于 2018-4-24 10:06 | 只看該作者
if(receCount=6)改為 if(receCount==6)
回復(fù)

使用道具 舉報

板凳
ID:315114 發(fā)表于 2018-4-24 10:09 | 只看該作者
  if(receCount=6)改為  if(receCount==6)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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