串行通信和液晶显示

来源:百度知道 编辑:UC知道 时间:2024/05/31 13:19:04
请问一下高手,我知道串行通信程序和液晶显示程序,如何将这两部分合并在一起,使得我在串口中输入一个ASCII码,在液晶上就显示这个相应的字符,请哪位指教一下,我都没调试出来!

串行通信程序
ORG 00
AJMP MAIN
ORG 23H
LJMP RECEIVE
MAIN:
LCALL URTINIT
AJMP $
RECEIVE:
MOV A,SBUF ;将缓冲区的数据送到A
MOV P0,A
MOV SBUF,A ;将A的数据发回到电脑
JNB TI,$ ;等待数据发送完毕
CLR TI ;清发送中断标志
CLR RI ;清接收中断标志
RETI ;中断返回
URTINIT:
MOV SCON,#50H ;设置成串口1方式
MOV TMOD,#20H ;波特率发生器T1工作在模式2上
MOV TH1,#0FBH ;预置初值 9BTL=2^SMOD/32*FOSC/12/(256-TH1)
MOV TL1,#0FBH ;波特率9600
SETB TR1;启动定时器T1
SETB EA ;CPU所有中断开(IE最高位MSB)
SETB ES ;串口中断标志位
RET

以下是在1602液晶模块的第二行第一个字符的位置显示字母“A”的程序:

RS EQU P3.0
RW EQU P3.1
E EQU P3.5

ORG 0000H
MOV P0,#00000001B ;清屏
ACALL ENABLE

MOV P0,#00111000B ;8位2行5x7点阵
ACALL ENABLE

MOV P0,#00001111B ;显示器开、光标开、闪烁开
ACALL ENABLE

MOV P0,#00000110B ;文字不动,光标自动右移
ACALL ENABLE

我说一点我的想法吧,我其实只懂一点,还是刚看的。
就是把
MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)(这个应该是要变的!)
ACALL ENABLE

MOV P0,#01000001B ;字母A的代码
放到中断里
其它的设置放到
LCALL URTINIT
的上面。