新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)與PC串口通信程序

        51單片機(jī)與PC串口通信程序

        作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
        #include

        #define BUFFERLEGTH 10
        //-----------------------------------------------------------------
        void UART_init(); //串口初始化函數(shù)
        void COM_send(void); //串口發(fā)送函數(shù)
        char str[20];
        char j;
        //-------------------------------------------------------------------
        void main(void)
        {
        unsigned char i;
        UART_init();
        j=0; //初始化串口
        for(i = 0;i < 10 ;i++)
        {
        COM_send(); //首先發(fā)送一次數(shù)據(jù)作為測試用

        本文引用地址:http://www.104case.com/article/201611/318576.htm

        };

        while(1);
        }


        //-------------------------------------------------------------
        //--------------------------------------------------------------------------------------------------
        // 函數(shù)名稱: UART_init()串口初始化函數(shù)
        // 函數(shù)功能: 在系統(tǒng)時鐘為11.059MHZ時,設(shè)定串口波特率為9600bit/s
        // 串口接收中斷允許,發(fā)送中斷禁止
        //--------------------------------------------------------------------------------------------------
        void UART_init()
        {
        //初始化串行口和波特率發(fā)生器
        SCON =0x50; //選擇串口工作方式1,打開接收允許
        TMOD =0x20; //定時器1工作在方式2,定時器0工作在方式1
        TH1 =0xfA; //實(shí)現(xiàn)波特率9600(系統(tǒng)時鐘11.0592MHZ)
        PCON = 0x80;
        TR1 =1; //啟動定時器T1
        ET1 =0;
        ES=1; //允許串行口中斷
        PS=1; //設(shè)計串行口中斷優(yōu)先級
        EA =1; //單片機(jī)中斷允許
        }
        //------------------------------------------------------------
        void COM_send(void)
        {
        unsigned char point = 0;
        for(point=0;str[point]!=/0;point++) //連續(xù)發(fā)送二十位數(shù)據(jù) //把緩存區(qū)的數(shù)據(jù)都發(fā)送到串口
        {
        SBUF=str[point];
        while(!TI);
        TI=0;
        //str[point]=/0;
        }

        }
        //--------------------------------------------------------------
        //--------------------------------------------------------------------------------------------------
        // 函數(shù)名稱: com_interrup()串口接收中斷處理函數(shù)
        // 函數(shù)功能: 接收包括起始位S在內(nèi)的十位數(shù)據(jù)到數(shù)據(jù)緩沖區(qū)
        //--------------------------------------------------------------------------------------------------
        void com_interrupt(void) interrupt 4 using 3
        {
        unsigned char RECEIVR_buffer;
        bit flag=1;
        if(RI) //處理接收中斷
        {
        RI=0; //清除中斷標(biāo)志位
        RECEIVR_buffer=SBUF; //接收串口數(shù)據(jù)
        str[j]=SBUF;
        if (RECEIVR_buffer == $)
        { ES=0;
        str[j]=/0;
        SCON =0x40; //接收不允許
        COM_send(); //發(fā)送數(shù)據(jù)
        ES=1;
        j=0;
        flag=0;
        SCON=0x50; //接收允許
        }
        if(flag)
        j++;
        }
        }



        關(guān)鍵詞: 51單片機(jī)PC串口通

        評論


        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 肃宁县| 扶绥县| 柳州市| 灵璧县| 延边| 同仁县| 中山市| 铜鼓县| 樟树市| 巴南区| 栾城县| 巴彦淖尔市| 沐川县| 土默特左旗| 海城市| 通辽市| 卢湾区| 观塘区| 炉霍县| 资阳市| 乌兰察布市| 永和县| 台江县| 宁阳县| 紫阳县| 青冈县| 西林县| 五峰| 双鸭山市| 泸定县| 台北县| 开化县| 蓬莱市| 桑日县| 靖边县| 乌拉特中旗| 南康市| 霍山县| 金湖县| 龙井市| 图们市|