实验八RS232串行口实验•一.实验目的•1.学习P89V51单片机串口的工作原理及程序设计。•2.了解使用FlashMagic软件实现程序脱机运行的方法。•3.熟悉启动加载代码与SoftICE相互切换的方法。附:下次实验:实验27串行模/数转换实验•二.实验设备及器件•1.PC机•2.DP-51PROC单片机综合仿真实验仪三、单片机与PC机通信的接口电路:由于P89V51单片机输入、输出电平为TTL电平,TTL电平:逻辑1电平是5V,逻辑0电平是0V。而PC机配置的是RS-232C标准串行接口,RS-232C标准电平:逻辑1电平是-3V~-12V,逻辑0电平是+3V~+12V,是负逻辑电平。二者的电气规范不一致,因此,要完成PC机与单片机的数据通信,必须进行电平转换。现采用MAX232芯片实现P89V51单片机与PC机的RS-232C标准接口通信电路。•1.MAX232芯片简介•MAX232芯片是MAXIM公司生产的、包含两路接收器和驱动器的IC芯片。MAX232芯片内部有一个电源电压变换器,可以把输入的+5V电源电压变换成为RS-232C输出电平所需的±12V电压。所以,采用此芯片接口的串行通信系统只需单一的+5V电源就可以了。对于没有±12V电源的场合,其适应性更强。MAX232芯片引脚图MAX232典型工作电路图P89V51TXDRXDPC机RXDTXD图中上半部分电容C1,C2,C3,C4及V+,V-是电源变换电路部分。在实际应用中,器件对电源噪声很敏感。因此,VCC必须要对地加去耦电容C5。电容C1,C2,C3,C4用以提高抗干扰能力,在连接时必须尽量靠近器件。下半部分为发送和接收部分。实际应用中,T1IN,T2IN可直接接P89V51单片机的串行发送端TXD;R1OUT,R2OUT可直接接P89V51单片机的串行接收端RXD;T1OUT,T2OUT可直接接PC机的RS-232串口的接收端RXD;R1IN,R2IN可直接接PC机的RS-232串口的发送端TXD。RS232串行口电路图2.实验原理图•3.实验原理图说明:•现从MAX232芯片中两路发送接收中选第二路作为接口。要注意其发送、接收的引脚要对应。如使T2IN接单片机的发送端TXD,则PC机的RS-232的接收端RXD一定要对应接T2OUT引脚。同时,R2OUT接单片机的RXD引脚,PC机的RS-232的发送端TXD对应接R2IN引脚。两路收发不能混用。•四、FlashMagic软件的使用•利用FlashMagic软件实现P89V51单片机ISP下载和SoftICE硬件仿真功能的切换。•五、串口调试程序的使用•利用串口调试程序接收并观察单片机发送给PC机的数据;亦可通过串口调试程序由PC机给单片机发送数据。实现单片机和PC机之间的数据通信。•六、实验内容:•1..编写一段程序,利用单片机串行口向PC机连续发送0X55H,即大写字母“U”。•2.编写一段程序,单片机接收PC机串行口发送的0X55H(ASCII为大写字母“U”),在单片机正确接收到“U”时,返回一个大写字母“T”,错误接收时返回一个“F”。•注:串行口波特率:9600b/s。•fosc=11.0592MHz•七、实验步骤:•1.用串行口线连接PC机和DP-51PROC单片机综合仿真实验仪。•2.用FlashMagic软件设置P89V51单片机为ISP下载状态。•3.调试程序1:先编译产生ONE.hex文件,并把此文件用FlashMagic软件下载到P89V51单片机中。•4.运行下载后的程序,可在PC机上的串口调试软件上看到接收到的“UUUU······”。•5.调试程序2:先编译,产生TWO.hex文件,把产生的TWO.hex文件下载到P89V51单片机中。•6.运行下载后的程序,在PC机的串口调试软件中发送一个大写字母“U”,可在接收窗口看到一个“T”,而发送其他任意字母,在PC机的串口调试软件的接收窗口都将看到“F”。•程序1清单如下:•ORG0000HMOVSCON,#50H•LJMPMAINMOVPCON,#00H•ORG00F0HSETBTR1•MAIN:MAINLOOP:•MOVSP,#60HMOVSBUF,#55H•MOVTMOD,#20HSENDWT:•MOVTH1,#0FDHJBCTI,MAINLOOP•MOVTL1,#0FDHLJMPSENDWT•END•程序2清单如下:•1.采用查询方式:•ORG0000HSENDWT:•LJMPMAINMOVA,SBUF•ORG00F0HCLRRI•MAIN:CJNEA,#55H,LOOP1•MOVSP,#60HMOVA,#54H•MOVTMOD,#20HMOVSBUF,A•MOVTH1,#0FDHLJMPREC•MOVTL1,#0FDHLOOP1:•MOVSCON,#50HMOVA,#46H•MOVPCON,#00HMOVSBUF,A•SETBTR1LJMPREC•REC:END•JBCRI,SENDWT•LJMPREC•2.采用中断方式:•ORG0000HRSS:•LJMPMAINCLRES•ORG0023HJBCRI,LOOP1•LJMPRSSLJMPENDD•ORG0100HLOOP1:•MAIN:MOVA,SBUF•MOVSP,#60HCJNEA,#55H,LOOP2•MOVTMOD,#20HMOVA,#54H•MOVTH1,#0FDHMOVSBUF,A•MOVTL1,#0FDHLJMPENDD•MOVSCON,#50HLOOP2:•MOVPCON,#00HMOVA,#46H•SETBTR1MOVSBUF,A•SETBEAENDD:SETBES•SETBESRETI•LJMP$END