串行通信实验报告.docx

上传人:b****1 文档编号:13349664 上传时间:2023-06-13 格式:DOCX 页数:12 大小:16.86KB
下载 相关 举报
串行通信实验报告.docx_第1页
第1页 / 共12页
串行通信实验报告.docx_第2页
第2页 / 共12页
串行通信实验报告.docx_第3页
第3页 / 共12页
串行通信实验报告.docx_第4页
第4页 / 共12页
串行通信实验报告.docx_第5页
第5页 / 共12页
串行通信实验报告.docx_第6页
第6页 / 共12页
串行通信实验报告.docx_第7页
第7页 / 共12页
串行通信实验报告.docx_第8页
第8页 / 共12页
串行通信实验报告.docx_第9页
第9页 / 共12页
串行通信实验报告.docx_第10页
第10页 / 共12页
串行通信实验报告.docx_第11页
第11页 / 共12页
串行通信实验报告.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

串行通信实验报告.docx

《串行通信实验报告.docx》由会员分享,可在线阅读,更多相关《串行通信实验报告.docx(12页珍藏版)》请在冰点文库上搜索。

串行通信实验报告.docx

串行通信实验报告

串行通信实验报告

班级姓名学号日期

一、实验目的:

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.通过运行程序观察存储单元内数值的变化。

四、程序

甲方发送程序如下:

ORG0000H

LJMPMAIN

ORG0023H

LJMPCOM_INT

ORG1000H

MAIN:

MOVSP,#53H

MOV78H,#20H

MOV77H,00H

MOV76H,20H

MOV75H,40H

ACALLTRANS

HERE:

SJMPHERE

TRANS:

MOVTMOD,#20H

MOVTH1,#0F3H

MOVTL1,#0F3H

MOVPCON,#80H

SETBTR1

MOVSCON,#40H

MOVIE,#00H

CLRF0

MOVSBUF,78H

WAIT1:

JNBTI,WAIT1

CLRTI

MOVSBUF,77H

WAIT2:

JNBTI,WAIT2

CLRTI

MOVSBUF,76H

WAIT3:

JNBTI,WAIT3

CLRTI

MOVSBUF,75H

WAIT4:

JNBTI,WAIT4

CLRTI

MOVIE,#90H

MOVDPH,78H

MOVDPL,77H

MOVXA,@DPTR

MOVSBUF,A

WAIT:

JNBF0,WAIT

RET

COM_INT:

CLRTI

INCDPTR

MOVA,DPH

CJNEA,76H,END1

MOVA,DPL

CJNEA,75H,END1

SETBF0

CLRES

CLREA

RET

END1:

MOVXA,@DPTR

MOVSBUF,A

RETI

END

乙方发送程序如下:

ORG0000H

LJMPMAIN

ORG0023H

LJMPCOM_INT

ORG1000H

MAIN:

MOVSP,#53H

ACALLRECEI

HERE:

SJMPHERE

RECEI:

MOVR0,#78H

MOVTMOD,#20H

MOVTH1,#0F3H

MOVTL1,#0F3H

MOVPCON,#80H

SETBTR1

MOVSCON,#50H

MOVIE,#90H

CLRF0

CLR7FH

WAIT:

JNB7FH,WAIT

RET

COM_INT:

PUSHDPL

PUSHDPH

PUSHAcc

CLRRI

JBF0,R_DATA

MOVA,SBUF

MOV@R0,A

DECR0

CJNER0,#74H,RETN

SETBF0

RETN:

POPAcc

POPDPH

POPDPL

RETI

R_DATA:

MOVDPH,78H

MOVDPL,77H

MOVA,SBUF

MOVX@DPTR,A

INC77H

MOVA,77H

JNZEND2

INC78H

END2:

MOVA,76H

CJNEA,78H,RETN

MOVA,75H

CJNEA,77H,RETN

CLRES

CLREA

SETB7FH

SJMPRETN

END

五、实验过程中遇到的主要问题

OUTBITequ08002h;位控制口

OUTSEGequ08004h;段控制口

INequ08001h;键盘读入口

HasRcvequ20h。

0;接收标志位

LEDBufequ40h;显示缓冲

RCVBufequ50H;接收缓冲

ORG0000H

LJMPSTART

;串行口中断程序

ORG0023H

JNBTI,S0_R

CLRTI

NOP

SJMPS0_RET

S0_R:

;接收数据

CLRRI

MOVRCVBUF,SBUF;保存数据

SETBHasRcv;提示收到数据

NOP

S0_RET:

RETI

LEDMAP:

;八段管显示码

db3fh,06h,5bh,4fh,66h,6dh,7dh,07h

db7fh,6fh,77h,7ch,39h,5eh,79h,71h

Delay:

;延时子程序

movr7,#0

DelayLoop:

djnzr7,DelayLoop

djnzr6,DelayLoop

ret

DisplayLED:

movr0,#LEDBuf

movr1,#6;共6个八段管

movr2,#00100000b;从左边开始显示

Loop:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;关所有八段管

mova,@r0

movdptr,#OUTSEG

movx@dptr,a

movdptr,#OUTBIT

mova,r2

movx@dptr,a;显示一位八段管

movr6,#1

callDelay

mova,r2;显示下一位

rra

movr2,a

incr0

djnzr1,Loop

ret

TestKey:

movdptr,#OUTBIT

mova,#0

movx@dptr,a;输出线置为0

movdptr,#IN

movxa,@dptr;读入键状态

cpla

anla,#0fh;高四位不用

ret

KeyTable:

;键码定义

db16h,15h,14h,0ffh

db13h,12h,11h,10h

db0dh,0ch,0bh,0ah

db0eh,03h,06h,09h

db0fh,02h,05h,08h

db00h,01h,04h,07h

GetKey:

movdptr,#OUTBIT

movP2,dph

movr0,#Low(IN)

movr1,#00100000b

movr2,#6

KLoop:

mova,r1;找出键所在列

cpla

movx@dptr,a

cpla

rra

movr1,a;下一列

movxa,@r0

cpla

anla,#0fh

jnzGoon1;该列有键入

djnzr2,KLoop

movr2,#0ffh;没有键按下,返回0ffh

sjmpExit

Goon1:

movr1,a;键值=列X4+行

mova,r2

deca

rla

rla

movr2,a;r2=(r2—1)*4

mova,r1;r1中为读入的行值

movr1,#4

LoopC:

rrca;移位找出所在行

jcExit

incr2;r2=r2+行值

djnzr1,LoopC

Exit:

mova,r2;取出键码

movdptr,#KeyTable

movca,@a+dptr

movr2,a

WaitRelease:

movdptr,#OUTBIT;等键释放

clra

movx@dptr,a

movr6,#10

callDelay

callTestKey

jnzWaitRelease

mova,r2

ret

START:

MOVSP,#60H

MOVIE,#0;DISABLEALLINTERRUPT

MOVTMOD,#020H;定时器1工作于方式2(8位重装)

MOVTH1,#0F3H;波特率?

2400BPS@12MHz

MOVTL1,#0F3H

ANLPCON,#07FH;SMOD位清零

orlPCON,#80h

MOVSCON,#050H;串行口工作方式设置

MOVLEDBuf,#0ffh;显示8。

8.8.8.

movLEDBuf+1,#0ffh

movLEDBuf+2,#0ffh

movLEDBuf+3,#0ffh

movLEDBuf+4,#0

movLEDBuf+5,#0

SETBTR1

SETBES

SETBEA

;movsbuf,a

;jnbti,$

MLoop:

jbHasRcv,RcvData;收到数据?

callDisplayLED;显示

callTestKey;有键入?

jzMLoop;无键入,继续显示

callGetKey;读入键码

anla,#0fh;通讯口输出键码

MOVSBUF,A

LJMPMLoop

RcvData:

clrHasRcv;是

mova,RcvBuf;显示数据

movb,a

anla,#0fh;显示低位

movdptr,#LEDMap

movca,@a+dptr

movLEDBuf+5,a

mova,b

swapa;显示高位

anla,#0fh

movdptr,#LEDMap

movca,@a+dptr

movLEDBuf+4,a

ljmpMLoop

END

六、实验后的心得体会

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2