新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī) 雙機(jī)通信(匯編)

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

作者: 時(shí)間:2016-11-18 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://m.butianyuan.cn/article/201611/315832.htm

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

;此程序?qū)崿F(xiàn)雙機(jī)同時(shí)發(fā)送(數(shù)碼管0-9),并能同時(shí)接受,并顯示出來,真正實(shí)現(xiàn)異步全雙工

org 0000h

ljmp reset

org 0003h

reti

org 000bh

reti

org 001bh

reti

org 0023h

ljmp tans_int ;串口中斷入口

reset: mov r0,#0 ;先進(jìn)行系統(tǒng)準(zhǔn)備(可以不要)

djnz r0,$

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

mov tmod,#0020h

mov th1,#0fdh

mov tl1,#0fdh

setb tr1 ;打開定時(shí)器中斷

mov pcon,#00h

clr sm0 ;設(shè)置工作方式1

setb sm1

setb ren ;允許串行口接收數(shù)據(jù)

clr ti

clr ri

setb es ;打開串行中斷

setb ea ;打開全局中斷

main:

mov r0,#9

mov a,#0

loop:

mov dptr,#table ;主函數(shù)主要實(shí)現(xiàn)串行發(fā)送

mov a,r0

movc a,@a+dptr

mov sbuf,a

jb ti,$ ;判斷發(fā)送中斷標(biāo)志是否在中斷中清零

lcall delay ;若清零,則延時(shí)

inc dptr

dec r0

cjne r0,#255,loop ;減到0之后會(huì)變成255

ljmp main

tans_int:

push acc

push psw

jnb ti,recive_clr ;判斷是否為發(fā)送中斷

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: ;共陽極數(shù)碼管掃描碼

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

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

delay:

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

l0:mov r4,#0

l1: mov r5,#0ffh

djnz r5,$

djnz r4,l1

djnz r3,l0

ret

end



評(píng)論


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

關(guān)閉