实验四串行口应用实验一、实验目的掌握串行口工作方式的程序设计,掌握单片机通信程序编制方法。二、实验内容1、重复发送同一个数据,观察TXD端输出的波形。将8031串口设为工作方式1,即10位异步收发,发送时钟由计数器控制;计数器T1设为定时工作,工作方式2,即自动重装8位计数器;波特率取1000bps,不加倍;单片机采用6MHZ晶振。计数初值的计算:TH1=256-[(1+0)*fosc]/(12*32*BPS)P3.1复用为串行发送端TXD,将其接至示波器,观察输出波形。注意观察8位数据位前后的起始位和停止位。(1)电路图:(2)程序:ORG0000HAJMPMAINORG0040HMAIN:MOVR0,#76H;设置发送的数据位76H即01110110MOVTMOD,#20H;设置定时器1为工作方式2MOVTL1,#0F0H;设置计数初值,使得波特率为1000bpsSETBTR1;启动T1MOVPCON,#0;SMOD=0MOVSCON,#40H;设置串口为工作方式1LOOP:MOVA,R0;向SBUF装入待发送数据MOVSBUF,AL0:JNBTI,L0;判断发送数据完毕CLRTI;发送完毕,清零TIMOVTH1,#0F0H;重装初值SJMPLOOP;重复发送END(3)仿真图:分析:如波形图所示,发送的数据位为1001100,起始位为0,停止位为1.2、自发自收。将代码段中定义的10个数据0~9,通过串口发送和接收,将接收到的数据送P1口以LED灯显示。(采用中断方式)(1)程序:ORG0000HAJMPSTARTORG0023HLJMPLOORG0030HSTART:MOVSCON,#50H;设置串口为工作方式1,允许接收数据MOVTMOD,#20H;设置定时器T1为工作方式2MOVTH1,#0F0H;设置计数初值,使得波特率为1000bpsMOVTL1,#0F0HSETBTR1;启动定时器T1SETBEA;开中断SETBET1;开串口中断LOOP:MOVDPTR,#TAB;设置取数指针MOVCA,@A+DPTR;取数赋给AMOVSBUF,A;将待传送的数据放在缓冲器中MOVP1,A;送至P口显示LO:JNBTI,LO;判断是否发送完毕CLRTI;发送完毕,清零TILCALLDELAYAJMPLOOP;循环发送数据TT0:MOVTH1,#0F0H;重置初值RETIORG1000HDELAY:MOVR0,#0F0HDL2:MOVR1,#07DHDL1:NOPNOPDJNZR1,DL1DJNZR0,DL2RETORG0F00H;定义要发送的数据段TAB:DB01H,02H,03H,04H,05H,06H,07H,08H,09H,0AHEND(2)仿真结果:分析:发送的数据内容可在P口所接的LED灯上显示,如图当前发送的是08H,显示的是00001000。实验内容一参考程序框图:三、实验报告1、画出电路原理图。(有学号、姓名)