苏州科技学院本科生毕业设计(论文)
为了抑制噪声。为了防止错误位,如果在第一个位时间接受的值不是0,接收电路就会复位,单元继续寻找另一个1到0的转变。这是为了防止错误的起始位。如果起始位有效,则移入输入移位寄存器,继续接受该帧的其余部分。
当数据位“1”从右边移出到左侧。当起始位到达移位寄存器的最左边的位置,这是在模式1 下的9位寄存器),标志着RX控制区将做最后一次移位,载入SBUF和RB8,并且设置RI。该信号加载SBUF和RB8并设置如果RI生成,且仅当以下条件满足时产生最后一个移位脉冲的时间。
1)RI = 0而且
2)无论是SM2 = 0,或SM2 = 0和接收到的停止位= 1
如果任这两个条件不满足,接收到的数据帧都会丢失。如果两个条件都满足时,停止位进入RB8,而8位数据则进入SBUF,并且RI被激活。此时,在上述条件是否得到满足,该单元继续寻找一个1到0的RXD过渡。
8.2.3模式2:9位有固定波特率的UART
当SM1 = 1和SM0 = 0时,串行端口在模式2下作为一个9位固定波特率的UART。 11位通过TXD传送或通过RXD接收。数据帧包括一个起始位(0),8个数据位,一个可编程的第9位数据和一个停止位(1)。发送时,第9位来自SCON中的TB8。在接收时,第9个数据位进入SCON的RB8。波特率可编程为1/32或1/64的系统时钟周期。
模式2下的波特率 =(2SMOD / 64)×SYSCLK
传输是通过使用SBUF作为目标寄存器的指令开始。“写SBUF”信号也加载TB8到移位寄存器的第9位,并且告诉TX控制单元,请求发送。实际上发送过程发生在按16划分的计数器的下次翻转。因此,位时间是与16计数器同步划分的,而不是与“写入SBUF”信号。
当SEND被激活,传输开始。这使TXD在一比特后开始。DATA被激活,使移位寄存器向TXD输出比特。第一移位脉冲在那之后发生。第一个移位时钟的“1”(停止位)插入移位寄存器的第9位。此后,只有“0”被计时了。当数据位转移到右边,“0”从左边移入。当TB的数据字节在移位寄存器的输出位置时,停止位刚好在TB8的左边,并且所有的位置都在包含“0”的左边。这种情况标志TX控制单元将做最
32
苏州科技学院本科生毕业设计(论文)
后一次移位,然后停用SEND并置位TI。这发生在“写SBUF”的16次翻转中的第11次。
在RXD检测1到0的转变开始接收。为了这个目的,RXD被的任何波特率16倍采样。无论波特率是否确定。当检测到转换时,分逐16计数器立即复位,同时将1FFH写入输入移位寄存器。
在每个位时间的第7,第8和第9计数状态时,都要对RXD的值进行位检测。只有2/3的采样值被接受。这样做是为了抑制噪声。为了防止错误位,如果在第一个位时间接受的值不是0,接收电路复位,单元继续寻找另一个1到0的转变。如果起始位有效,则移入输入移位寄存器,继续接受该帧的其余部分。
当数据位从右边进来,“1”移出到左侧。当起始位到达移位寄存器的最左边的位置,(这是一个模式2和3下的9位寄存器),它标志着RX控制区将做最后一次移位,加载SBUF和RB8,并且设置RI 。该信号加载SBUF和RB8并设置如果RI生成,且仅当以下条件满足时产生最后一个移位脉冲时间:
1)RI = 0而且
2)无论是SM2 = 0,或接收到的第9位数据= 1
如果这两个条件任一个不满足,接收到的数据帧都会丢失。如果两个条件都满足时,停止位进入RB8,前8位数据则进入SBUF,并且RI被激活。这时,上述条件是否被满足,该单元继续寻找1至0的RXD输入转换。 需要注意的是接收到的停止位的值与SBUF,RB8或RI无关。
8.2.4模式3:9位可变波特率的UART
模式3,9位可变波特率的UART,除了波特率是可变的,其他和模式2是一样。模式3下的波特率=(2SMOD / 32)x定时器1overflow率 或=(2SMOD / 16)×定时器2溢出率
在四种模式中,传输是通过使用SBUF作为目标寄存器的指令开始。当RI = 0和REN = 1时,在模式0下开始接收。如果REN = 1且输入的起始位1是到0的过渡,那么在其他模式下启动一次接收。
8.3帧错误检测
当用于帧错误检测时,UART会在通讯丢失停止位。如果缺少位将设置SCON寄
33
苏州科技学院本科生毕业设计(论文)
存器的FE位。 FE位股SCON.7位和SM0 SCON.7的功能由PCON.6(SMOD0)决定。如果SMOD0被设置,那么SCON.7的功能是FE。 SCON.7的功能是SM0当该位用来作为cleared.When FE,SCON.7只能由software.Refer清除下图。
8.4多机通信
模式2和3对multiproceasor通信的特殊规定。在这些模式中9位数据被接收。第9位进入RB8。接着进来一个停止位。该端口可以进行编程,这样当收到停止位后,串口中断将仅当RB8 = 1,此功能是通过设置位SM2 SCON中启用激活。一种方法要使用此功能在多处理器系统如下。
当主处理器要数据块传输到某一台从机时,首先发送一个地址字节以识别目标从机。地址字节不同于数据字节的第9位为1的地址字节和0 byte.With SM2 = 1数据,从没有将一个数据字节中断。地址字节,但是,将中断所有从机,这样每个从机可以检查接收到的字节,看看它是否正在addressed.The寻址的从机将清零SM2位,并准备接收数据字节将到来。那些没有被-ING的奴隶解决离开SM2S设置,并继续他们的工作,忽略进来的数据字节。
SM2在模式0中没有任何影响,并且在模式1可以用来检测停止位的有效性。在接收模式1中,如果SM2 = 1,接收中断不会被激活,除非vatid停止位被接收。
8.5自动地址识别
自动地址识别是一个未来的,它允许UART使用硬件进行比较,识别串行比特流特定的地址。此功能通过省去软件来检测通过串行端口每串行地址节省了大量的软件开销。该功能通过设定SCON的SM2位来开启。在9位UART模式,模式2和模式3,接收中断标志(RI)当接收的字节中包含“给定”地址或“广播”地址会被自动设置。在9位模式下要求第9个信息位为“1”,以指示所接收的信息是地址而不是数据。
8位模式,即模式1下,如果SM2已启用,收到的信息有一个有效的停止位后的8位地址和信息是一个给定或广播address.Mode 0 RI标志将被设置是移位寄存器模式,SM2被忽略。
使用自动地址识别功能可以让一个主机选择性的同一个或多个从机通过调用给定的从机地址或地址进行通信。所有从机可以使用广播地址可以联系。两个特殊功能
34
苏州科技学院本科生毕业设计(论文)
寄存器用来定义从机地址:SADDR和地址屏蔽SADEN。 SADEN用于定义这些都是SADDR位要使用的,哪些位是“不关心”。 SADEN屏蔽可以逻辑与SADDR打造的“给定”地址,主机使用该地址对每一从机。使用给定地址允许扣除其多个从机被认可。下面的例子就显示了该方案的通用性:
在前面的例子中SADDR是相同的,而SADEN数据被用于在两个从站之间进行区分。
从机0要求在0位是“0‖而忽略位1。从机1需要一个“0‖位和1位0被忽略。一个独特的地址从0将是自11000010从机1需要一个“0‖位1.唯一地址从1是11000001,因为一个“1‖位0将排除从0奴隶都可以在选定的由具有位0 = 0(从机0)和位1 = 0(用于药膏1)一个地址同一时间。因此,既可以解决与11000000。
在一个更复杂的系统以下可用于从机1和2,而不会从0:
另外,在上述实施例中的3从站的分化是在较低的3个地址bits.Slave 0要求的bit0 = 0,它可以通过11100110.从机1被唯一寻址要求位1 = 0,它可以由11100101被唯一寻址从机2要求位2 = 0和其唯一地址是11100011.要选择药膏0和1,不包含从属2,使用地址11100100,由于有必要使位2 = 1,以排除从2。
广播地址为每个从由SADDR和SADEN服用逻辑或创建的。在这个结果零趋于为不用管它。在大多数的关心,解释不用管它因为那些,广播地址为FFH。
复位时SADDR和SADEN都含有“0”。这将产生的所有“不用管它,以及广播地址的所有的”无关“一个给定的地址。这样有效地禁止了自动寻址模式,允许微处理器使用标准80C51型UART驱动器不使用此功能。例如:写一个程序,不断发送缓冲器发送字符。如果输入的字符在串行端口上检测,将它们存储在接收缓冲区起始于内部RAM的位置50H。假设STC89C51RC / RD +系列单片机串口已在模式1初始化。
当定时器1作为波特率发生器,定时器1的中断应该在此应用程序被禁用。定时器本身可针对“定时器”或“cormter”操作进行配置,并且在任何的三种运行模式中。
8.6波特率和演示程序 波特率在模式0是固定的: 模式0波特率=
SYSclk 1235
苏州科技学院本科生毕业设计(论文)
波特率在模式2取决于位SMOD的特殊功能寄存器PCON的价值。如果SMOD = 0(这是复位值),波特率1/64的系统时钟周期。如果SMOD = 1,波特率为1/32系统时钟周期。
模式2波特率=×(SYSCLK)(SYSCLK)
在STC89xx系列,波特率在模式1和3是由定时器1或定时器2溢出rate.The波特率模式确定1和3是固定的:
模式1,3波特率=(2SMOD / 32)×定时器1溢出率 =(2SMOD / 32)×2定时器溢出率 定时器1溢出率=(SYSCLK / 12)/(256 - TH1);
定时器2溢出率= SYSCLK /(65536-(RCAP2H,RCAP2L))
当定时器1作为波特率发生器,定时器1的中断应该在此应用程序被禁用。定时器本身可针对“定时器”或“cormter”操作进行配置,并且在任何的三种运行模式中。在最typcial应用中,它被配置为“定时器”运行,在自动重装模式(高四位的TMOD = 0010B)。
人们可以通过保留定时器1中断使能,并配置定时器作为一个16位的定时器运行(TMOD的= 0001B高四位),并使用定时器1中断做l6-达到非常低的波特率与定时器1位软件重装。
下图列出了各种常用的波特率以及它们如何从定时器1获得。
当定时器2作为波特率发生器(无论是TCLK或RCLK T2CON是'1'),波特率如下,
模式1,3波特率=
2SMOD ?SYSclk SYSclk
32?(65536?(RCAP2H,RCAP2L))第9章IAP / EEPROM
STC89xx系列的ISP使得可以无需从实际的最终产物中除去的MCU芯片便可更新用户的应用程序和非易失性的应用程序数据(在IAP存储)。这个有用的功能使得广泛的现场更新的应用成为可能。(请注意,ISP需要在ISP-存储器装载程序预编程。)在一般情况下,用户不必知道ISP如何工作的,因为STC提供了标准的ISP工具,并在STC中嵌入ISP代码运样品。但是为了给ISP的功能制定好方案,用户需要了
36