标题: C51单片机双工通信T1工作2方式 汇编程序 [打印本页]
作者: liuda 时间: 2015-1-23 16:21
标题: C51单片机双工通信T1工作2方式 汇编程序
MAIN:MOV TMOD,#20H ;将定时器T1设为工作方式2(TMOD的M1=1,M0=0
MOV TL1,#0F4H ;设T1的初值为224
MOV TH1,#0F4H ;设T1的重装值为224
SETB TR1 ;将寄存器TCON的TR1位置1,启动T1开始计数
MOV SCON,#50H ;将串行通信口设为工作方式1,并允许接收(SM0=0,SM01=1,数据接收控制位REN=1
MOV R0,#20H ;将数据20H送入寄存器R0
MOV R1,#40H ;将数据40H送入寄存器R1
SETB ES ;将寄存器IE的ES位置1(串行通信口中断允许位,=1允许通过
SETB EA ;将寄存器IE的EA位置1(总中断允许位,=1开关闭合,即开启总中断
ACALL SOUT ;跳
LOOP:SJMP LOOP
;以下为中断子程序
ORG 0023H ;下一指令地址为0023H(串行通信口控制寄存器SCON的位TI发送中断标志RI接收中断标志入口=1时有中断
AJMP SRR1 ;有中断请求跳
SRR1:JNB RI,SEND ;接收中断标志位RI=0证明是TI有中断,跳转并将TI清0,否则下一步
ACALL SIN ;跳转将RI清0
SJMP NEXT ;跳
SEND:ACALL SOUT ;RI=0时跳到此,并跳到将TI清0处
NEXT:RETI ;返回LOOP处
;发下为发送子程序
SOUT:CLR TI ;将TI清0
MOV A,@R0 ;将R0中的地址所指的单元中的数据送A
INC R0 ;将R0加1
MOV SBUF,A ;将A中的值送入缓冲器SUBF,同时发送SBUF中的数据
RET ;子程序返回(即LOOP:SJMP LOOP处
;以下为接收子程序
SIN:CLR RI ;将SCON的RI位清0
MOV A,SBUF ;将接收SUBF中的数据送入A中
MOV @R1,A ;将A中数据送R1中的地址所指的单元中
INC R1 ;将R1加1
RET ;子程序返回(即SJMP NEXT处
END
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |