標題: 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