目的:利用“模块化单片机教学实验平台”,加深对单片机的串行口的理解。
任务:利用单片机的串行口完成程序设计。
使用AT89S52单片机的串行口通过RS232通信接口与PC机进行通信,让单片机把接收到的每一帧数据(即PC机发送给单片机的每一帧数据)直接再发送给PC机。(串行口波特率设定为9600Bit/s,使用方式1)注意:使用串口调试助手(Baud 9600、数据位8、停止位1、效验位无)作为上位机来向单片机发送数据和接收单片机串口所发的数据,观察串口调试助手接收窗口。
实验过程和结果
电路图
硬件连线:
母版 | CPU板 |
J57/J59:RXD | P2:P3.0 |
J57/J59:TXD | P2:P3.1 |
用232串口线连接计算机的USB口和MAIN_BOARD的RS2/RS1串口。
注意:实验箱的AT89S52单片机的晶振频率为11.0592MHz!
参考流程图:
实验结果图
实验过程让我熟悉了中断程序和串口的编写步骤和单片机执行串口传输的工作流程。实验中由于不熟悉中端口的相关寄存器分布和功能,导致错误设置了特殊功能寄存器,程序不能正常执行,后来在老师的指导下修改了程序和中断入口地址,程序能正常执行并返回输入内容。
(1)基本实验
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP U
MAIN:
MOV SCON,#01010000B
SETB ES
SETB EA
MOV TMOD,#00100000B
MOV TH1,#0FDH
SETB TR1
LJMP $
U:
CLR RI
MOV A,SBUF
MOV SBUF,A
JNB RI,$
CLR RI
RETI
END
(2)扩展实验
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP U
MAIN:
MOV SCON,#01010000B
SETB ES
SETB EA
MOV TMOD,#00100000B
MOV TH1,#0FDH
SETB TR1
SETB T1 ;手动执行中断
LJMP $
U:
CLR RI
MOV SBUF,#68H
MOV SBUF,#65H
MOV SBUF,#6CH
MOV SBUF,#6CH
MOV SBUF,#6FH
MOV SBUF,#26H
MOV SBUF,#20H
MOV SBUF,#77H
MOV SBUF,#6FH
MOV SBUF,#72H
MOV SBUF,#6CH
MOV SBUF,#64H
MOV SBUF,#0DH
MOV SBUF,#0AH
MOV SBUF,#0AH
JNB RI,$
CLR RI
LJMP U ;发送完毕后回到中断程序头部,循环发送hello world
RETI
END