📄 rs232.asm
字号:
;实验名称:RS232通信实验
;功能:接收电脑送过来的数据,并且显示16进制数,并将数据回传到电脑(只显示最后一个)
; 作者:http://www.mcuprog.com
; 08-04-08
;***********************************************************
E BIT P2.2 ;LCD口线的定义
RW BIT P2.1
RS BIT P2.0
LCDPORT EQU P0
CMD_BYTE EQU 2EH
DAT_BYTE EQU 2FH
RECOKBIT BIT 00H ;接收到有效的数据
RECDATA EQU 30H ;接收到的数据
ORG 0000H
AJMP MAIN
ORG 0023H
RS232: JB TI,SEND232
CLR RI
MOV A,SBUF
MOV RECDATA,A
MOV SBUF,A
SETB RECOKBIT
RETI
SEND232: CLR TI
RETI
ORG 0050H
MAIN:
MOV 20H,#00H
LCALL INITLCD
MOV CMD_BYTE,#80H //设置DDRAM的地址
LCALL WRITE_CMD
LCALL DELAY0
MOV DAT_BYTE,#"R"
LCALL WRITE_DAT
MOV DAT_BYTE,#"E"
LCALL WRITE_DAT
MOV DAT_BYTE,#"C"
LCALL WRITE_DAT
MOV DAT_BYTE,#"D"
LCALL WRITE_DAT
MOV DAT_BYTE,#"A"
LCALL WRITE_DAT
MOV DAT_BYTE,#"T"
LCALL WRITE_DAT
MOV DAT_BYTE,#"A"
LCALL WRITE_DAT
MOV DAT_BYTE,#":"
LCALL WRITE_DAT
MOV RECDATA,#00H
MOV TMOD,#20H
MOV TH1,#0FDH ;波特率9600
MOV TL1,#0FDH
MOV SCON,#50H
SETB TR1
SETB REN
MOV IE,#90H ;串口中断
WAIT: JNB RECOKBIT,WAIT
CLR RECOKBIT
ACALL DISPREC
SJMP WAIT
;LCD1602要用到的一些子程序
;写命令(入口参数CMD_BYTE)
WRITE_CMD: CLR RS
CLR RW
MOV A,CMD_BYTE
MOV LCDPORT,A
SETB E
NOP
NOP
CLR E
LCALL DELAY0
RET
;写显示数据(入口参数DAT_BYTE)
WRITE_DAT: SETB RS
CLR RW
MOV A,DAT_BYTE
MOV LCDPORT,A
SETB E
NOP
NOP
CLR E
LCALL DELAY0
RET
;LCD显示初始化
INITLCD: MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#30H
LCALL WRITE_CMD
MOV CMD_BYTE,#38H ;设定工作方式
LCALL WRITE_CMD
MOV CMD_BYTE,#0CH ;显示状态设置
LCALL WRITE_CMD
MOV CMD_BYTE,#01H ;清屏
LCALL WRITE_CMD
MOV CMD_BYTE,#06H ;输入方式设置
LCALL WRITE_CMD
RET
;延时子程序
DELAY0: MOV R5,#0A0H
DELAY1: NOP
DJNZ R5,DELAY1
RET
;显示变量
DISPREC: MOV CMD_BYTE,#89H //设置DDRAM的地址
LCALL WRITE_CMD
MOV DAT_BYTE,RECDATA
LCALL WRITE_DAT
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -