关于串口工作方式

    单片机89C51的串行端口有4种工作方式,通过编程设计,可以使其工作在任一方式,以满足不同场合的需要。其中,

      方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;

      方式1主要用于双机之间或外设电路的通信;

      方式2、3除有方式1的功能外,还可用作多机通信,以构成多微机系统,方式2、3的区别在于波特率的不同。

 

    

 

    单片机的串行通信的波特率可以程控设定,在不同的工作方式下,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定。

单片机的串行端口有2个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率以及中断标志TI和RI。单片机

的串行端口有1个数据寄存器SBUF,该寄存器为发送和接收所共有,在一定条件下,向SBUF写入数据就启动了发送过程,读SBUF就启动了接收过程。 

    波特率如标准9600 不是每秒种可以传送9600个字节,而是指每秒可以传送9600 个二进位,而一个字节8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600÷10=960 字节。

如我们要得到9600 的波特率,晶振为11.0592M ,定时器1 为模式2,SMOD 设为1,看看那所要求的TH1 为何值。代入公式:

      溢出速率=计数速率/[12*(256-TH1初值)] 

      9600=(2÷32)×((11.0592M/12)/(256-TH1)) TH1=250 

 

  

posted @ 2016-07-28 13:58  朱小勇  阅读(894)  评论(0编辑  收藏  举报