新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機 雙機通信(匯編)

        51單片機 雙機通信(匯編)

        作者: 時間:2016-11-18 來源:網絡 收藏

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

        ;用方式一雙機通信:定時器采用定時器1(8位自動重裝),波特率采用9600bit/s

        ;此程序實現雙機同時發送(數碼管0-9),并能同時接受,并顯示出來,真正實現異步全雙工

        org 0000h

        ljmp reset

        org 0003h

        reti

        org 000bh

        reti

        org 001bh

        reti

        org 0023h

        ljmp tans_int ;串口中斷入口

        reset: mov r0,#0 ;先進行系統準備(可以不要)

        djnz r0,$

        init: mov r1,#4 ;各個寄存器初始化

        mov tmod,#0020h

        mov th1,#0fdh

        mov tl1,#0fdh

        setb tr1 ;打開定時器中斷

        mov pcon,#00h

        clr sm0 ;設置工作方式1

        setb sm1

        setb ren ;允許串行口接收數據

        clr ti

        clr ri

        setb es ;打開串行中斷

        setb ea ;打開全局中斷

        main:

        mov r0,#9

        mov a,#0

        loop:

        mov dptr,#table ;主函數主要實現串行發送

        mov a,r0

        movc a,@a+dptr

        mov sbuf,a

        jb ti,$ ;判斷發送中斷標志是否在中斷中清零

        lcall delay ;若清零,則延時

        inc dptr

        dec r0

        cjne r0,#255,loop ;減到0之后會變成255

        ljmp main

        tans_int:

        push acc

        push psw

        jnb ti,recive_clr ;判斷是否為發送中斷

        clr ti

        sjmp int_end

        recive_clr:

        jnb ri,int_end ;判斷是否為接收中斷

        clr ri

        mov a,sbuf ;若是,則顯示出來

        mov p2,a

        int_end:

        pop psw

        pop acc

        reti

        table: ;共陽極數碼管掃描碼

        db 0c0h,0f9h,0a4h,0b0h,99h

        db 92h,82h,0f8h,80h,90h

        delay:

        mov r3,#4 ;延時函數(延時大概5**255*255*2=500ms)

        l0:mov r4,#0

        l1: mov r5,#0ffh

        djnz r5,$

        djnz r4,l1

        djnz r3,l0

        ret

        end



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 河间市| 芦溪县| 肃宁县| 卫辉市| 龙南县| 自治县| 连城县| 嘉义县| 临海市| 远安县| 富宁县| 合水县| 泊头市| 保定市| 平顺县| 通州区| 太仆寺旗| 宁安市| 平湖市| 五河县| 敖汉旗| 邯郸县| 车险| 桂平市| 临清市| 山西省| 贡嘎县| 遂昌县| 北辰区| 古丈县| 龙井市| 罗甸县| 阳高县| 惠东县| 阿合奇县| 新源县| 宁安市| 莱州市| 会理县| 弥渡县| 澄江县|