新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 串口通信的單片機程序

        串口通信的單片機程序

        作者: 時間:2013-12-04 來源:網絡 收藏

        beepbitp3.7;蜂鳴器定義

        org00h
        jmpmain
        org23h;串行中斷入口地址
        jmpcom_int;串行中斷服務程序

        ;***********主程序開始*******************
        org30h
        main:movsp,#30h;設置
        lcallrest;初始化
        lcallcomm;串口初始化
        jmp$;原地等待

        ;*************初始化*********************
        rest:movp0,#00h;禁止數碼管顯示
        movp2,#255
        clrbeep;禁止蜂鳴器
        movp1,#255;禁止LED顯示
        RET;返回

        ;**************串口初始化*****************
        ;設置串行口工作方式1,定時器1作為波特率發生器
        ;波特率設置為2400;

        comm:movtmod,#20h;設置定時器T1工作方式2
        movtl1,#0f3h;定時器計數初值,波特率2400
        movth1,#0f3h;定時器重裝值
        setbea;允許總的中斷
        setbes;允許串行中斷
        movpcon,#00h;波特率不倍增
        movscon,#50h;設置串口工作方式1,REN=1允許接收
        setbtr1;定時器開始工作
        ret;返回
        ;***************串口中斷服務程序***********
        ;如果接收0FF表示上位機需要聯機信號,單片機發送0FFH作為
        ;應答信號,如果接收到數字1~n,表示相應的功能;
        ;這里,如果收到1,則單片機向計算機發送字符'H';
        ;如果收到2,則單片機向計算機發送字符'e';
        ;如果收到其他的數據,則發送'J';
        com_int:clres;禁止串行中斷
        clrri;清除接收標志位
        mova,sbuf;從緩沖區取出數據
        movp1,a
        movdptr,#tab
        cjnea,#0ffh,in_1;檢查數據
        movsbuf,#255;收到聯機信號,發送聯機信號
        jnbti,$;等待發送完畢
        clrti;清除發送標志
        setbes;允許串行中斷
        reti;中斷返回
        in_1:cjnea,#1H,in_2;如果收到1
        movca,@a+dptr
        movsbuf,a;發送'h'
        jnbti,$;等待發送完畢
        clrti;清除發送中斷標志
        setbes;允許串行中斷
        reti;中斷返回
        in_2:cjnea,#2,in_3;接收到2
        movca,@a+dptr
        movsbuf,a;發送'e'
        jnbti,$;等待發送完畢
        clrti;清除發送中斷
        setbes;允許串行中斷
        reti;中斷返回
        in_3:mova,#03h
        movca,@a+dptr
        movsbuf,a;發送'j'
        jnbti,$;等待發送完畢
        clrti;清除發送中斷標志
        setbes;允許串行中斷
        reti;返回
        tab:db'2','h','e','j'
        end

        蜂鳴器相關文章:蜂鳴器原理


        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 准格尔旗| 太康县| 昌江| 丹寨县| 来凤县| 许昌市| 鄱阳县| 馆陶县| 弥渡县| 津南区| 缙云县| 林芝县| 东辽县| 长宁区| 四平市| 永修县| 茌平县| 乡城县| 金阳县| 惠水县| 象州县| 洪湖市| 商河县| 晋州市| 谢通门县| 湟源县| 株洲市| 镇江市| 中西区| 临武县| 四子王旗| 南川市| 库尔勒市| 凤凰县| 晋宁县| 濉溪县| 登封市| 綦江县| 玉屏| 镇赉县| 林甸县|