新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)串口檢測(cè)程序

        51單片機(jī)串口檢測(cè)程序

        作者: 時(shí)間:2011-05-12 來源:網(wǎng)絡(luò) 收藏

        #i nclude reg51_STC.H
        #define uchar unsigned char
        #define uint unsigned int

        //--------------------------------------------------------------------------
        //函數(shù)名稱: UART_Init()
        //函數(shù)功能: 初始化函數(shù),在系統(tǒng)時(shí)鐘為11.059MHZ時(shí),設(shè)定波特率為9600bit/s
        //其他說明: 接收中斷允許,發(fā)送中斷禁止
        //--------------------------------------------------------------------------

        void UART_Init(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 = 0xFA ; //Baud:9600 fosc=11.0592MHz
        ES=1;
        TR1 = 1 ; // timer 1 run
        EA=1;
        }


        //--------------------------------------------------------------------------
        //函數(shù)名稱: main(void)
        //函數(shù)功能: 主函數(shù)
        //其他說明: 無
        //--------------------------------------------------------------------------

        void main(void)
        {
        UART_Init();
        while(1);
        }


        //--------------------------------------------------------------------------
        //函數(shù)名稱: Uart_SendData()
        //函數(shù)功能: 串口發(fā)送一個(gè)字節(jié)的數(shù)據(jù)
        //其他說明: 此供中斷調(diào)用
        //--------------------------------------------------------------------------

        void Uart_SendData(uchar dat)
        {
        SBUF=dat; //寫SBUF,開始發(fā)送
        while(TI==0); //等待發(fā)送
        TI=0; //清發(fā)送標(biāo)志位
        }


        //--------------------------------------------------------------------------
        //函數(shù)名稱: INT_UartRcv()
        //函數(shù)功能: 串口接收中斷函數(shù)
        //其他說明: 無
        //--------------------------------------------------------------------------

        void INT_UartRcv(void) interrupt 4
        {
        uchar Rcv;
        if(RI)
        {
        RI=0; //
        Rcv=SBUF;
        Uart_SendData(Rcv); //返回接收數(shù)據(jù),可以改為其他函數(shù)
        }
        }

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

        NO。2

        #i ncludereg52.h>
        #i nclude 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
        EA=1;
        }

        //向串口發(fā)送一個(gè)字符


        上一頁 1 2 下一頁

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 西充县| 湾仔区| 霍城县| 东莞市| 特克斯县| 娄底市| 肃宁县| 郯城县| 达孜县| 盖州市| 福建省| 柘城县| 海丰县| 桐柏县| 东阿县| 靖江市| 东辽县| 阿城市| 南皮县| 太白县| 秭归县| 黑河市| 聂荣县| 定远县| 襄垣县| 仁怀市| 佛山市| 兰坪| 荔波县| 广灵县| 重庆市| 乌拉特中旗| 维西| 通化县| 沂源县| 大竹县| 南涧| 襄垣县| 新巴尔虎右旗| 绵阳市| 犍为县|