中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 單片機串口通訊

        單片機串口通訊

        作者: 時間:2012-08-24 來源:網(wǎng)絡 收藏

        通信協(xié)議: 第1字節(jié),MSB為1,為第1字節(jié)標志,第2字節(jié),MSB為0,為非第一字節(jié)標志,其余類推……,最后一個字節(jié)為前幾個字節(jié)后7位的異或校驗和。

        本文引用地址:http://www.antipu.com.cn/article/170993.htm

        測試方法:可以將調(diào)試助手的發(fā)送框寫上 95 10 20 25,并選上16進制發(fā)送,接收框選上16進制顯示,如果每發(fā)送一次就接收到95 10 20 25,說明測試成功。

        //這是一個C51接收(中斷)和發(fā)送例程,可以用來測試51的中斷接收

        //和查詢發(fā)送,另外我覺得發(fā)送沒有必要用中斷,因為程序的開銷是一樣的

        #include reg51.h>

        #include string.h>

        #define INBUF_LEN 4 //數(shù)據(jù)長度

        unsigned char inbuf1[INBUF_LEN];

        unsigned char checksum,count3;

        bit read_flag= 0 ;

        void init_serialcomm( void )

        {

        SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr

        TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload

        PCON |= 0x80 ; //SMOD=1;

        TH1 = 0xF4 ; //Baud:4800 fosc=11.0592MHz

        IE |= 0x90 ; //Enable Serial Interrupt

        TR1 = 1 ; // timer 1 run

        // TI=1;

        }

        //向發(fā)送一個字符

        void send_char_com( unsigned char ch)

        {

        SBUF=ch;

        while (TI== 0 );

        TI= 0 ;

        }

        //向串口發(fā)送一個字符串,strlen為該字符串長度

        void send_string_com( unsigned char *str, unsigned int strlen)

        {

        unsigned int k= 0 ;

        do

        {

        send_char_com(*(str + k));

        k++;

        } while (k strlen);

        }

        //串口接收中斷函數(shù)

        void serial () interrupt 4 using 3

        {

        if (RI)

        {

        unsigned char ch;

        RI = 0 ;

        ch=SBUF;

        if (ch> 127 )

        {

        count3= 0 ;

        inbuf1[count3]=ch;

        checksum= ch- 128 ;

        }

        else

        {

        count3++;

        inbuf1[count3]=ch;

        checksum ^= ch;

        if ( (count3==(INBUF_LEN- 1 )) (!checksum) )

        {

        read_flag= 1 ; //如果串口接收的數(shù)據(jù)達到INBUF_LEN個,且校驗沒錯,

        //就置位取數(shù)標志

        }

        }

        }

        }


        上一頁 1 2 3 下一頁

        關鍵詞: 通訊 串口 單片機

        評論


        相關推薦

        技術專區(qū)

        關閉