51单片机串行通信程序的设计及调试

[09-14 01:26:53]   来源:http://www.88dzw.com  电子制作   阅读:8619

文章摘要:我们假定单片机系统的晶振频率为6MHz,选择串行口的工作方式为方式1(8位UART,由定时器1作为波特率发生器),数据传输的波特率为600,此时我们得到定时器l应工作在方式2,TH1年HL1的初值均为1AH,参考程序为:UART初始化:MOV SCON,#50H;选择串行口的工作方式为方式1 MOV PCON,#0OH; 选择SMOD=0MOV TMOD,#20H;定时器1设置为方式2,软件启动 MOV TH1,#E6H;设置TH1-的初值为E6H MOV TL1,#E6H;设置TL1的初值为E6H CLR ET1;关闭定时器1中断,作为波特率发

51单片机串行通信程序的设计及调试,标签:电子小制作,http://www.88dzw.com

  我们假定单片机系统的晶振频率为6MHz,选择串行口的工作方式为方式1(8位UART,由定时器1作为波特率发生器),数据传输的波特率为600,此时我们得到定时器l应工作在方式2,TH1年HL1的初值均为1AH,参考程序为:

  UART初始化:MOV SCON,#50H;选择串行口的工作方式为方式1

      MOV  PCON,#0OH;  选择SMOD=0MOV
     TMOD,#20H;定时器1设置为方式2,软件启动
     MOV TH1,#E6H;设置TH1-的初值为E6H
     MOV TL1,#E6H;设置TL1的初值为E6H
     CLR ET1;关闭定时器1中断,作为波特率发生器用;
     CLR ES;若采用查询方式通讯,需关闭串行口中断;
     SET.B ES;若采用中断方式通讯,需打开串行口中断
     SETB TR1;启动定时器1
     由于51汇编集成开发环境可以识别中文,将标号用中文来表示,使程序的可读性更强。

  4、查询方式下串行通信程序的设计

      若采用查询方式进行串行通讯,在初始化程序中需关闭串行口中断。

  (1)发送数据的程序设计

       采用查询方式发送数据之前,必须查询标志位TI的状态,当TI=0时,表明串行口未准备好,不可以发送数据;当TI=1时,表明串行口已准备好,可以发送数据。在发送数据前,必须将TI复位。基本流程见图4。


  下例程序是采用查询方式发送一个数据块的子程序,其入口条件是:待发送数据的起始地址在DPTR中,发送数据的字节数在R6R7中,数据采用偶校验。

  发送入口:CLR C
      发送:MOVX  A,@DPTR;读取待发送的数据
      MOV    C,P
      MOV.TB8,C;偶校验位传入 TB8SD2:
      JBC    TI,SD3;查询TI,等待串行口准备好
      AJMP  SD2
      MOV   SBUF,A;发送数据
      SD3:CJNE    R6,#0,修改发送指针
      CJNE R7,#O,修改发送指针
      RET;数据块发送完,退出发送子程序修改发送指针:
      CLR CMOV    A.R7SUBB  A,#1
      MOV    R7.AMOV    A,R6
      SUBB  A,#O
      MOV    R6,A
      SD4:INC DPTR
      AJMP  发送

      (2)接收数据的程序设计

      串行口在可靠接收一个字节的数据后,会自动将SCON中的RI置“1”,查询程序就是查询RI中的内容,在RI=1时,将接收到的数据(SBUF中的内容)保存到指定的地址。在接收一个数据块时,其数据块的字节数一般有两种方式确定,一种是事先约定好的固定字节数,另一种是在数据块的开始处用两个字节来指明字节数。

  下例程序是采用查询方式接收一个数据块的子程序,其入口条件是接收数据存放的起始地址在DPTR中,接收数据的字节数事先约定好存放在R6R7中,数据采用偶校验。

上一页  [1] [2] [3]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作