📄 ex8-3ba.asm
字号:
$include (STC12C5A.INC) ;包含STC12C5A60S2单片机寄存器定义文件
ADDRR EQU 0000H
SLAVE EQU 5 ;从机地址号
ORG 0000H
LJMP MAINR ;从机主程序入口地址
ORG 0023H
LJMP INTSR ;串行口中断入口地址
ORG 0100H
MAINR:MOV SP,#60H
MOV SCON,#0F0H ;串行口方式3,SM2=1,REN=1,接收状态
MOV TMOD,#20H ;置T1为工作方式2
MOV TH1,#0FAH ;置4800波特率
MOV TL1,#0FAH ;相应的时间常数
MOV DPTR,#ADDRR ;置数据地址指针
MOV R0,#0AH ;置接收数据字节数指针
SETB TR1 ;启动T1
SETB ES ;串行口开中断
SETB EA ;CPU开中断
SJMP $ ;等待中断
INTSR:CLR RI ;清接收中断标志
MOV A,SBUF ;取接收信息
MOV C,RB8 ;取RB8(信息特征位)→C
JNC LOOPR1 ;RB8=0为数据帧信息,转LOOPR1
XRL A,#SLAVE ;RB8=1为地址帧信息,与本机地址号SLAVE相比较
JZ LOOPR2 ;地址相等,则转LOOPR2
LJMP ENDR ;地址不相等,则转中断返回ENDR
LOOPR2:CLR SM2 ;清SM2,为后面接收数据帧信息作准备
LJMP ENDR ;中断返回
LOOPR1:MOVX @DPTR,A ;接收的数据→数据缓冲区
INC DPTR ;修改地址指针
DJNZ R0,ENDR ;数据字节没全部接收完,则转LOOPR2
SETB SM2 ;全部接收完,置SM2=1
ENDR:RETI ;中断返回
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -