📄 rs50_f51.asm
字号:
;FOR EAT598
;系统晶振是1.8432MHZ
;CS8250连0F200H,串口波特率为9600
;将8250的RXD和232的RXD连接,将8250的TXD和232的TXD连接
;程序执行时,应打开另一通讯软件(如TERM95),可实现从PC机键盘上键入的显示在屏幕上。
;/************************************************************/
UARTBASE EQU 0F200H
UARTDATA EQU 0F200H ;8250 数据口地址
UARTDLL EQU 0F200H
UARTIER EQU 0F201H
UARTDLM EQU 0F201H
UARTIIR EQU 0F202H
UARTLCR EQU 0F203H
UARTMCR EQU 0F204H
UARTLSR EQU 0F205H
UARTMSR EQU 0F206H
UARTSCR EQU 0F207H
;/************************************************************/
ORG 0000H
AJMP START
ORG 0040H
START:
MOV SP,#60H
LCALL INIT8250 ;初始化8250
WAIRXD:
MOV DPTR,#UARTLSR ;8250 状态寄存器(读)
MOVX A,@DPTR
ANL A,#01H
JZ WAIRXD ;判断是否有串行输入
MOV DPTR,#UARTDATA
MOVX A,@DPTR ;读接收到的字符
MOV B,A
MOV DPTR,#UARTLSR
MOV A,B
MOV DPTR,#UARTDATA
MOVX @DPTR,A ;发送数据
WAITXD:
MOV DPTR,#UARTLSR ;8250 状态寄存器(读)
MOVX A,@DPTR
ANL A,#20H
JZ WAITXD ;判断发送完否
NOP
SJMP WAIRXD
INIT8250: ;8250 初始化子程序
PUSH DPH ;保存现场
PUSH DPL
PUSH ACC
MOV A,#80H ;CHANGE TO BAUD GEN. MODE
MOV DPTR,#UARTLCR
MOVX @DPTR,A
MOV A,#0CH ;BAUD = 1.8432M /16 /0X0C 9600
MOV DPTR,#UARTDLL
MOVX @DPTR,A
MOV A,#00H
MOV DPTR,#UARTDLM
MOVX @DPTR,A
MOV A,#03H ;CHANGE TO N,8,1
MOV DPTR,#UARTLCR
MOVX @DPTR,A
;*****************************************
; MOV A,00000011B ;MODEM控制寄存器地址,8250不进行回送,此时要将8250的RXD和TXD连接
; MOV DPTR,#UARTMCR
; MOVX @DPTR,A
;END**************************************
MOV A,#00H
MOV DPTR,#UARTIER
MOVX @DPTR,A ;INTERRUPT ENABLE ALL OFF
POP ACC ;恢复现场
POP DPL
POP DPH
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -