📄 serial.asm
字号:
;这是一个串行口方式1用法的例子
;系统的晶振频率11.0592MHz,通信波特率9600
;要求每秒钟将以ADDR1为首地址的内部RAM8字节数据块发送出去
;接收的数据块长为8字节,收到后存放到ADDR2为首地址的内部RAM中
ADDR1 EQU 30H
ADDR2 EQU 40H
SEC BIT 00H ;秒标志
CR2 EQU 0AH ;1区R2
BR0 EQU 10H ;2区R0
BR1 EQU 11H ;2区R1
BR2 EQU 12H ;2区R2
BR3 EQU 13H ;2区R3
ORG 0
LJMP START
ORG 0BH
LJMP TS
ORG 23H
LJMP TR
ORG 30H
START: MOV SP,#60H
;==============================================
;给发送缓冲区赋值
;==============================================
MOV R0,#ADDR1
MOV R2,#8
MOV A,#30H
LL1: MOV @R0,A
INC A
INC R0
DJNZ R2,LL1
;=============================================
MOV TMOD,#21H
MOV TH0,#4CH
MOV TL0,#0 ;50mS定时初值
MOV TH1,#0FDH
MOV TL1,#0FDH ;9600波特
ANL PCON,#7FH
MOV SCON,#50H
SETB ET0
SETB ES
SETB PT0
SETB EA
MOV BR0,#ADDR1
MOV BR1,#ADDR2
MOV BR2,#8
MOV BR3,#8
MOV CR2,#20
CLR SEC
SETB TR0
SETB TR1
LOOP: JNB SEC,$
CLR SEC
MOV R0,BR0
MOV A,@R0
MOV SBUF,A ;启动发送,发送第一个字节
SJMP LOOP ;等待下一秒钟时间到
TS: PUSH PSW
SETB RS0
CLR RS1 ;选1区工作寄存器
CLR TR0
MOV TH0,#4CH
MOV TL0,#0
SETB TR0
DJNZ R2,TS1
MOV R2,#20
SETB SEC
TS1: POP PSW
RETI
TR: PUSH PSW
PUSH ACC
SETB RS1
CLR RS0 ;选择2区工作寄存器
JNB TI,SR2
CLR TI
DJNZ R2,SR1
MOV R0,#ADDR1
MOV R2,#8
SJMP SR2
SR1: INC R0
MOV A,@R0
MOV SBUF,A
SR2: JNB RI,SR3
CLR RI
MOV A,SBUF
MOV @R1,A
INC R1
DJNZ R3,SR3
MOV R1,#ADDR2
MOV R3,#8
SR3: POP ACC
POP PSW
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -