標題: 串口2接收數(shù)據(jù)再由串口1發(fā)送出去 [打印本頁]

作者: 朱天成    時間: 2018-1-18 15:04
標題: 串口2接收數(shù)據(jù)再由串口1發(fā)送出去
求教stc15w4k56s4串口2接收數(shù)據(jù)再由串口1發(fā)送出去,怎么實現(xiàn)啊今天寫的代碼感覺有很大問題
        #include   <stc15f2k60s2.H>
    #include   <STDIO.H>
        #include   <intrins.h>

    #define uchar unsigned  char
    #define uint  unsigned   int
        #define S2RI 0x01        //串口2接收中斷請求標志位
        #define S2TI 0x02        //串口2發(fā)送中斷請求標志位  
        unsigned char flag1,flag2,temp1=0xaa,temp2=0x55;
/****************串行口初始化函數(shù)****************/
void InitUART(void)
{
    TMOD = 0x20;    //定時器1工作在方式2  8位自動重裝
    SCON = 0x50;    //串口1工作在方式1  10位異步收發(fā) REN=1允許接收
    TH1 = 0xFA;           //定時器1初值
    TL1 = TH1;
    TR1 = 1;           //定時器1開始計數(shù)
    EA =1;        //開總中斷
    ES =1;        //開串口1中斷


}
/****************串行口1發(fā)送****************/
void UART_1SendOneByte(unsigned char c)
{
    SBUF = c;
    while(!TI);           //若TI=0,在此等待
    TI = 0;         
}
void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
        for(y=600;y>0;y--);
}
/*****************主函數(shù)******************/
void main(void)
{
    InitUART();        //串行口初始化

        while(1)
        {
                P0=temp1;
//如果串口2接收到數(shù)據(jù),將此數(shù)據(jù)由串口1發(fā)送
                if(flag2==1)
                {

                        flag2=0;
                        UART_1SendOneByte(temp2);
                }
                delay(300);
        }
}
/************串行口1中斷處理函數(shù)*************/
void UART_1Interrupt(void) interrupt 4
{
        if(RI==1)
        {

                RI=0;
                flag1=1;
                temp1=SBUF;
        }
}
/************串行口2中斷處理函數(shù)*************/
void UART_2Interrupt(void) interrupt 8
{
        if(S2CON&S2RI)
        {

                S2CON&=~S2RI;
                flag2=1;
                temp2=S2BUF;
        }
}


作者: cccc888    時間: 2018-1-18 19:57
串口二沒初始化。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1