新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 串口通信 中斷

        51單片機 串口通信 中斷

        作者: 時間:2016-11-19 來源:網絡 收藏
        從一段程序開始 實現電腦向單片機發送一些數據,單片機返回Iget +數據

        #include #define uchar unsigned char

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

        #define uint unsigned int unsigned char flag,a,i;//聲明標志位 flag

        uchar code table[]="I get"

        void init()

        {

        TMOD=0x20;//設置T1定時器工作方式為2 8位初值自動重裝的8位定時器 這里設置了兩個計數器的工作方式

        TH1=0xfd; / /T1定時器裝初值(高八位) 控制串口通信的波特率(由定時器1的溢出率控制)

        TL1=0xfd; //T1定時器裝入初值(低八位)

        TR1=1; //定時器1運行控制位 置一啟動定時器1

        REN=1; //允許串口接收

        SM0=0; //設置串口工作方式為一

        SM1=1; EA=1; //全局中斷允許位 置一開全局中斷

        ES=1; //串口中斷允許位

        }

        void main()

        {

        init();

        while(1)

        {

        if(flag==1)

        {

        ES=0;

        for(i=0;i<6;i++)

        {

        SBUF=table[i];

        while(!TI);

        TI=0;//發送中斷標志 發送數據完成后觸發中斷 硬件置一 必須軟件清零

        }

        SBUF=a; // 串口發送數據

        while(!TI);

        TI=0;

        ES=1;

        flag=0;

        }

        }

        }

        void ser() interrupt 4 //串口中斷服務程序

        {

        RI=0; // 收到數據硬件置一,由軟件清零

        a=SBUF; //將寄存器的值 賦給a flag=1; //標志位

        }

        此程序中共用的串口中斷,

        定時器1中斷 特殊功能寄存器SBUF

        中斷響應的條件

        中斷源有中斷請求 此中斷源允許位為1 cpu開中斷(即EA=1)以上三個條件同時滿足

        串口通信設置

        確定串口通信波特率(編程TMOD寄存器定時器工作方式寄存器)

        計算定時器初值轉載THX TLX

        確定串行口工作方式(編程SCON寄存器串行口控制方式寄存器)

        串行口工作在中斷方式時,要進行中斷設置如TI,RI軟件清零



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 奉新县| 灵宝市| 长宁区| 盘锦市| 沙坪坝区| 定陶县| 建德市| 周至县| 上思县| 丰镇市| 远安县| 元阳县| 多伦县| 炎陵县| 贺州市| 攀枝花市| 凤山市| 南京市| 马公市| 麻栗坡县| 高陵县| 建宁县| 无锡市| 西丰县| 马公市| 绿春县| 宁都县| 星座| 五家渠市| 大渡口区| 仲巴县| 东乌珠穆沁旗| 邳州市| 南澳县| 广德县| 霞浦县| 当阳市| 仁化县| 曲松县| 高陵县| 和田市|