预览加载中,请您耐心等待几秒...
1/8
2/8
3/8
4/8
5/8
6/8
7/8
8/8

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验六单片机串行口通讯实验 一、实验要求 利用单片机串行口,实现两个实验台之间的串行通讯。其中一个实验台作为发送方,另一侧为接收方。发送方读入按键值,并发送给接收方,接收方收到数据后在LED上显示。 二、实验目的 1、掌握单片机串行口工作方式的程序设计,及简易三线式通讯的方法。 2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。 3、学习串口通讯的中断方式的程序编写方法。 三、实验电路 显示电路和键盘电路见硬件实验十六和硬件实验十七。 甲方乙方 连线连接孔1连接孔21甲方TXD乙方RXD2甲方RXD乙方TXD3甲方GND乙方GND4KEY/LED_CSCS0 四、实验说明 1、8051、80C196的RXD、TXD接线柱在POD51/96仿真板上,8088/86的TXD、RXD在POD8086仿真板上的8251芯片旁边。 2、通讯双方的RXD、TXD信号本应经过电平转换后再行交叉连接,本实验中为减少连线可将电平转换电路略去,而将双方的RXD、TXD直接交叉连接。也可以将本机的TXD接到RXD上,这样按下的键,就会在本机LED上显示出来。 3、若想与标准的RS232设备通信,就要做电平转换,输出时要将TTL电平换成RS232电平,输入时要将RS232电平换成TTL电平。可以将仿真板上的RXD、TXD信号接到实验板上的“用户串口接线”的相应RXD和TXD端,经过电平转换,通过“用户串口”接到外部的RS232设备。可以用实验仪上的逻辑分析仪采样串口通信的波形 五、实验框图 开始 设置串口通讯方式及波特率 允许串口中断 是 收到数据? 否 无 检测键盘输入 LED显示 读入键值 转换成键码 串口发送键码 接收数据送显示缓冲 主程序 开始 是发送中断? 置收到标志 读接收缓冲 清收发中断标志 中断返回 串口中断子程序 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 G