標題: C51單片機雙工通信T1工作2方式 匯編程序 [打印本頁]
作者: liuda 時間: 2015-1-23 16:21
標題: C51單片機雙工通信T1工作2方式 匯編程序
MAIN:MOV TMOD,#20H ;將定時器T1設(shè)為工作方式2(TMOD的M1=1,M0=0
MOV TL1,#0F4H ;設(shè)T1的初值為224
MOV TH1,#0F4H ;設(shè)T1的重裝值為224
SETB TR1 ;將寄存器TCON的TR1位置1,啟動T1開始計數(shù)
MOV SCON,#50H ;將串行通信口設(shè)為工作方式1,并允許接收(SM0=0,SM01=1,數(shù)據(jù)接收控制位REN=1
MOV R0,#20H ;將數(shù)據(jù)20H送入寄存器R0
MOV R1,#40H ;將數(shù)據(jù)40H送入寄存器R1
SETB ES ;將寄存器IE的ES位置1(串行通信口中斷允許位,=1允許通過
SETB EA ;將寄存器IE的EA位置1(總中斷允許位,=1開關(guān)閉合,即開啟總中斷
ACALL SOUT ;跳
LOOP:SJMP LOOP
;以下為中斷子程序
ORG 0023H ;下一指令地址為0023H(串行通信口控制寄存器SCON的位TI發(fā)送中斷標志RI接收中斷標志入口=1時有中斷
AJMP SRR1 ;有中斷請求跳
SRR1:JNB RI,SEND ;接收中斷標志位RI=0證明是TI有中斷,跳轉(zhuǎn)并將TI清0,否則下一步
ACALL SIN ;跳轉(zhuǎn)將RI清0
SJMP NEXT ;跳
SEND:ACALL SOUT ;RI=0時跳到此,并跳到將TI清0處
NEXT:RETI ;返回LOOP處
;發(fā)下為發(fā)送子程序
SOUT:CLR TI ;將TI清0
MOV A,@R0 ;將R0中的地址所指的單元中的數(shù)據(jù)送A
INC R0 ;將R0加1
MOV SBUF,A ;將A中的值送入緩沖器SUBF,同時發(fā)送SBUF中的數(shù)據(jù)
RET ;子程序返回(即LOOP:SJMP LOOP處
;以下為接收子程序
SIN:CLR RI ;將SCON的RI位清0
MOV A,SBUF ;將接收SUBF中的數(shù)據(jù)送入A中
MOV @R1,A ;將A中數(shù)據(jù)送R1中的地址所指的單元中
INC R1 ;將R1加1
RET ;子程序返回(即SJMP NEXT處
END
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |