新聞中心

        單片機(jī)串口通訊程序

        作者: 時(shí)間:2013-03-19 來(lái)源:網(wǎng)絡(luò) 收藏

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

        測(cè)試方法:可以將串口調(diào)試助手的發(fā)送框?qū)懮?95 10 20 25,并選上16進(jìn)制發(fā)送,接收框選上16,如果每發(fā)送一次就接收到95 10 20 25,說(shuō)明測(cè)試成功。

        //這是一個(gè)C51串口接收(中斷)和發(fā)送例程,可以用來(lái)測(cè)試51的中斷接收

        //和查詢發(fā)送,另外我覺(jué)得發(fā)送沒(méi)有必要用中斷,因?yàn)槌绦虻拈_(kāi)銷是一樣的

        #i nclude

        #i nclude

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

        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ā)送一個(gè)字符

        void send_char_com( unsigned char ch)

        {

        SBUF=ch;

        while (TI== 0 );

        TI= 0 ;

        }

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

        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 ;

        }


        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 建平县| 宁津县| 马公市| 庆城县| 徐汇区| 新河县| 东兰县| 丰台区| 紫金县| 边坝县| 南和县| 平顺县| 永顺县| 西峡县| 香格里拉县| 辽源市| 鄂尔多斯市| 大英县| 长岛县| 沈丘县| 如皋市| 托里县| 万山特区| 长白| 汕尾市| 新民市| 甘泉县| 普陀区| 嘉义县| 平度市| 东乡族自治县| 盐池县| 阳谷县| 香格里拉县| 芦溪县| 佛教| 黄浦区| 祁门县| 潞西市| 甘泉县| 巴马|