89C51串行口按异步双工方式收发ASCII字符,最高位用来作奇偶检验位,采用奇检验方式,要求传送

2024-12-03 23:57:51
推荐回答(1个)
回答1:

解:7位ASCII码加1位奇校验共8位数据,故可采用串行口方式1。
89C51单片机的奇偶校验位P是当累加器A中1的数目为奇数时,P=1。如果直接把P的值放入ASCII码的最高位,恰好成了偶校验,与要求不符。因此,要把P的值取反以后放入ASCII码最高位,才是要求的奇校验。
2、串行口方式1的发送和接收
双工通信要求收、发能同时进行。收、发操作主要是在串行接口进行,CPU只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是RI置位还是TI置位来决定CPU是进行发送操作还是接收操作。
发送和接收都通过调用子程序来完成,设发送数据区的首地址为20H,接收数据区的首地址为40H,fosc为6MHz,通过查波特率初值可知定时器的初装值为F3H。定时器T1采用工作模式2,可以避免计数溢出后用软件重装定时初值的工作。
2、串行口方式1的发送和接收
主程序
MOV TMOD ,#20H ;定时器1设为模式2
MOV TL1 , #0F3H ;定时器初值
MOV TH1 ,#0F3H ;8位重装值
SETB TR1 ;启动定时器1
MOV SCON ,#50H ;设置为方式1,
;REN=1
MOV R0 ,#20H ;发送数据区首址
MOV R1 ,#40H ;接收数据取首址
ACALL SOUT ;先输出一个字符
SETB ES
SETB EA
SJMP $ ;等待中断
2、串行口方式1的发送和接收
发送子程序
SOUT: CLR TI
MOV A , @R0 ;取发送数据到A
MOV C ,P ;奇偶标识赋予C
CPL C ;奇校验
MOV ACC.7, C
INC R0 ;修改发送数据指针
MOV SBUF ,A ;发送ASCII码
RET ;返回
2、串行口方式1的发送和接收