📄 text1.asm
字号:
;功能:
;常数定义:
SFstAdd EQU 40H ;发送数据区的首地址
;资源定义:
SBuf0 EQU 40H ;第0个发送数据存放的地址
SBuf1 EQU 41H ;第1个发送数据存放的地址
SBuf2 EQU 42H ;第2个发送数据存放的地址
SBuf3 EQU 43H ;第3个发送数据存放的地址
SBuf4 EQU 44H ;第4个发送数据存放的地址
SBuf5 EQU 45H ;第5个发送数据存放的地址
ORG 0000H
AJMP INIT
ORG 0023H
AJMP Serial
ORG 0030H
;--------------------------------------
;初始化程序
INIT:
MOV SBUF0,#0 ;待发送的数据初始化
MOV SBUF1,#1
MOV SBUF2,#2
MOV SBUF3,#3
MOV SBUF4,#4
MOV SBUF5,#5
MOV SCON,#50H ;串口初始化:方式1,允许接收
MOV TMOD,#20H ;T1初始化:方式2,计数初值:E8H
MOV TH1,#0E8H
MOV TL1,#0E8H
SETB ES ;开串行中断
SETB EA ;开全局中断
SETB TR1 ;启动定时器
MOV R1,#SFstAdd ;发送地址指针初指向:指向第一个数据
MOV R7,#6 ;发送数据计数器初始化:6个数据
ACALL Sent
;--------------------------------------
;主程序
MAIN:
ORL PCON,#01H
SJMP MAIN
;--------------------------------------
;发送数据子程序
;功能:对R1所指向单元的数据作偶校验后发送
Sent:
MOV A,@R1
MOV C,P
MOV ACC.7,C
MOV SBUF,A
RET
;甲机串行中断服务子程序
Serial:
JB RI,SB1 ;是接收中断,则转SB1
CLR TI ;是发送中断,则TI清0后返回
RETI
SB1:
CLR RI ;接收中断请求标志位清0
MOV A,SBUF ;接收乙机发来的应答信号
CPL A ;乙机接收数据正确(SBUF=FFH),则转SB3
JZ SB3
SB2: ;乙机接收数据有误,则重发
ACALL Sent ;调用Sent子程序,发送R1所指向单元的数据
RETI
SB3:
DJNZ R7,SB4 ;数据没发送完,则转SB4发送下一个数据
CLR ES ;已发送完毕,则关中断,停止发送
RETI
SB4:
INC R1 ;调整指针,使其指向下一个待发送数据
ACALL Sent ;调用Sent子程序,发送R1所指向单元的数据
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -