解决马上结分100分
asom 2005-04-01 11:34:43 主程序:
MOV TMOD,#20H ;定时器1设为方式2
MOV TL1,#0F4H ;定时器初值
MOV TH1,#0F4H ;重装值
SETB TR1 ;启动定时器1
MOV SCON,#50H ;串行口设为方式1,REN=1
MOV R0,#20H ;发送数据区首址
MOV R1,#40H ;接收数据区首址
ACALL SOUT ;输出
LOOP:SJMP LOOP ;等待中断
中断服务子程序:
ORG 0023H ;串行口中断入口地址
AJMP SBR1 ;转中断服务程序
…
SBR1: JNB RI,SEND ;TI=1,为发送中断
ACALL SIN ;RI=1,为接收中断
SJMP NEXT ;转至返回入口
SEND: ACALL SOUT ;调用发送子程序
NEXT: RET
发送子程序:
SOUT: MOV A,@R0 ;取发送数据到A
MOV C,P ;奇偶标志给C
CPL C ;为奇校验作准备
MOV ACC.7,C ;将校验们加到高位
INC R0 ;修改发送指针
MOV SBUF,A ;发送
CLR TI ;清发送中断标志
RET
接收子程序:
SIN: MOV A,SBUF ;读出接收内容
MOV C,P ;取出校验位
CPL C ;奇校验
ANL A,#7FH ;删去校验位
MOV @R1,A ;写入接收单元
INC R1 ;修改接收指针
CLR RI ;清接收中断标志
RET