串行通信实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
串行通信实验报告
班级姓名学号日期
一、实验目的:
1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。
2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。
3、学习串口通讯的程序编写方法。
二、实验要求
1.单机自发自收实验:实现自发自收。编写相应程序,通过发光二极管观察收发状态。
2.利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。
三、实验说明
通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上。
连线方法:在第一个实验中将一台实验箱的RXD和TXD相连,用P1.0连接发光二极管。波特率定为600,SMOD=0。
在第二个实验中,将两台实验箱的RXD和TXD交叉相连。编写收发程序,一台实验箱作为发送方,另一台作为接收方,编写程序,从内部数据存储器20H~3FH单元中共32个数据,采用方式1串行发送出去,波特率设为600。通过运行程序观察存储单元内数值的变化。
四、程序
甲方发送程序如下:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP COM_INT
ORG 1000H
MAIN: MOV SP,#53H
MOV 78H,#20H
— MOV 77H,00H
MOV 76H,20H
MOV 75H,40H
ACALL TRANS
HERE: SJMP HERE
TRANS: MOV TMOD,#20H
MOV TH1,#0F3H
MOV TL1,#0F3H
MOV PCON,#80H
SETB TR1
MOV SCON,#40H
MOV IE,#00H
CLR F0
MOV SBUF,78H
WAIT1: JNB TI,WAIT1
CLR TI
MOV SBUF,77H
WAIT2: JNB TI,WAIT2
CLR TI
MOV SBUF,76H
WAIT3: JNB TI,WAIT3
CLR TI
— MOV SBUF,75H
WAIT4: JNB TI,WAIT4
CLR TI
MOV IE,#90H
MOV DPH,78H
MOV DPL,77H
MOVX A,@DPTR
MOV SBUF,A
WAIT: JNB F0,WAIT
RET
COM_INT: CLR TI
INC DPTR
MOV A,DPH
CJNE A,76H,END1
MOV A,DPL
CJNE A,75H,END1
SETB F0
CLR ES
CLR EA
RET
END1: MOVX A,@DPTR
MOV SBUF,A
END
乙方发送程序如下:
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP COM_INT
ORG 1000H MAIN: MOV SP,#53H
ACALL RECEI HERE: SJMP HERE RECEI: MOV R0,#78H MOV TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV PCON,#80H SETB TR1
MOV SCON,#50H MOV IE,#90H CLR F0
CLR 7FH WAIT: JNB 7FH,WAIT
COM_INT: PUSH DPL
PUSH DPH
PUSH Acc
CLR RI
JB F0,R_DATA
MOV A,SBUF
MOV @R0,A
DEC R0
CJNE R0,#74H,RETN SETB F0
RETN: POP Acc
POP DPH
POP DPL
RETI
R_DATA: MOV DPH,78H
MOV DPL,77H
MOV A,SBUF
MOVX @DPTR,A
INC 77H
MOV A,77H
JNZ END2
— INC 78H
END2: MOV A,76H
CJNE A,78H,RETN
MOV A,75H
CJNE A,77H,RETN
CLR ES
CLR EA
SETB 7FH
SJMP RETN
END
五、实验过程中遇到的主要问题
OUTBIT equ 08002h ; 位控制口
OUTSEG equ 08004h ; 段控制口
IN equ 08001h ; 键盘读入口
HasRcv equ 20h.0 ; 接收标志位
LEDBuf equ 40h ; 显示缓冲
RCVBuf equ 50H ; 接收缓冲
ORG 0000H
LJMP START
; 串行口中断程序
ORG 0023H
JNB TI,S0_R
CLR TI
NOP
SJMP S0_RET
S0_R: ; 接收数据
CLR RI
MOV RCVBUF,SBUF ; 保存数据
SETB HasRcv ; 提示收到数据
NOP
S0_RET: