STC8 之 串口通信(AUXR寄存器)

STC8之串口通信


这两天在做STC8板子的串口调试。整理一下前后做的准备和注意事项
要想做通信,首先要确保PC机的波特率和单片机的波特率一致。PC端可直接设置。单片机端就需要采用定时器。这不是一个简单的概念。首先单片机有自己的晶振,可产生振荡周期,即1s内振荡次数。机器周期是12个振荡周期。计时的方法是采用单片机自带的计数器(定时器),通过设置溢出数值来确定周期时间。我手头的STC8A有5个定时器。网上的教程一般是用T1做串口通信,STC公司官方给出的例程基本是用T2做计时(波特率产生器)。主要工作就是运用,记住这些寄存器的作用,会配置。
对于定时器0,1来说,有TMOD,TCON几个重要的计时器,
TMOD:M1,M0两位用于设置定时器工作方式,主要的有工作模式1:16位定时器,工作模式2:8位自动重装定时器(高位设置数,低8位满了自动装入)
TCON:控制寄存器,可位寻址,TF0,1定时器溢出标志位,TR0,1语序技术控制位,IE0,1外部中断请示标志位,IT0,1外部中断触发标志位。
于此同时,通信还需要掌握中断寄存器IE,,也是可位寻址的,EA=1 使能总中断,ET0,1,2使能定时器中断,ES使能串行口中断,EX0,1使能外部中断。本实验中需要EA,ES打开
有了定时器的配置,就可以产生波特率了。这里又需要掌握串行口的4种工作方式,方式1,3由于波特率灵活可变,更多采用。
方式1,3使用的公式为

Baud=2^SMOD (T1溢出率) /32 (SMOD=1,波特率加倍)
*或者Baud=2^SMOD×(T1溢出率) /64

溢出率的计算是(65536-Count)×T 的倒数,T是单片机的机器周期,机器周期又是时钟周期的12倍
此外还有两个寄存器:SCON寄存器,PCON寄存器
SCON寄存器:串行口工作方式,一般采用方式2:固定波特率9位数据模式(一位停止位),一般设为0x50
PCON寄存器:一般用最高位SMOD,为1时波特率加倍,即PCON=0x80
有了这些基础知识,基本上可以开始套例程了。然而。STC公司给的例程全是用T2当波特率发生器的。且引用了一个全新的寄存器AUXR。这是什么鬼。。。上网查了一下,各位给出的解释还和datasheet有出入,难道是STC15和STC8有区别?我肯定是以手头STC8的datasheet为主咯
AUXR辅助寄存器:不可位寻址,各位功能如下(只保证对应STC8系列单片机)

* AUXR.0:为1时串口波特率发生器为定时器2,否则默认定时器1
* AUXR.1:为1可使用内部扩展RAM
* AUXR.2:(定时器2速度控制位)为1则CPU时钟不分频(1T),否则12分频
* AUXR.3:(定时器0控制位)为1用作定时器,为0用作计数器
* AUXR.4:为1定时器2开始计数,为0停止
* AUXR.5:为1则串口1模式0通讯速
  • 15
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值