[C8051F320]C8051F320的串口工作机…

原创 2015年07月11日 00:17:26
    问题描述:串口是非常重要的通信方式,特别在程序的调试与测试阶段,可以打印自定义的调试信息以供判断程序的运行情况。C8051F320只有一个串口UART0,是基于标准8051串口的,现在打算利用该串口来传一些数据,因此对其使用做下记录。
    UART0:异步全双工,可工作在标准8051串口的模式1和模式3下。增强型波特率支持。在程序将串口缓冲中的数据读走后可以立即接收下一个字节。UART0有两个SFR,SCON0用于控制,SBUF0为串口缓存。SBUF0是接收和发送两用的,写入SBUF0寄存器时作用于发送寄存器,读SBUF0时作用于接收寄存器。
    开UART0中断时,一次发送完成(此时SCON0中TI0置1)或SBUF0中字节被读取(SCON0中RI0置1)都会跳入中断处理。而且中断标志TI0和RI0都要软件清零。由于发送和接收中断都是跳入同一个中断处理程序中,因此UART0中断处理程序中要软件判别是接收中断发生还是发送中断发生。UART0串口数据的接收是通过RX引脚(P0.5),UART0串口数据的发送是通过TX引脚(P0.4)。
    其实C8051F320还提供串口的CTS和RTS引脚,这是用于串口的握手的,我在硬件电路中没有连接这两个引脚,串口的使用一般需要RX,TX,GND三个引脚即可。
    波特率的产生:UART0使用Timer1来产生波特率的,Timer1工作在8位自动加载模式。TX时钟有Timer1的TL1产生,RX时钟由TL1的拷贝产生(使用者无法直接操作)。
[C8051F320]C8051F320的串口工作机制学习

    TX和RX定时器溢出除以2来产生TX和RX波特率。
    Timer1的时钟源可以是多种:SYSCLK,SYSCLK/4,SYSCLK/12,SYSCLK/48,外部晶振时钟/8,外部输入T1。串口波特率的计算公式如下:
[C8051F320]C8051F320的串口工作机制学习
    其中T1_CLK即Timer1的时钟源。
    工作模式:UART0可以是8位UART和9位UART,我使用的是8位UART,因为MCU模块作为从机与主机进行通信。如果是一个主机多个从机的多机通信,就要选择用9位UART工作模式。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

[C8051F320]串口UART0全双工调试过…

问题描述:由于应用需要,将C8051F320的UART0作为数据通信接口,与上位机之间进行通信并实现简单的控制功能。程序大概是:由串口定时发送数据到上位机,这个定时时间用定时器控制,可由上位机通过串口...

VB.NET/ASP.NET编码规范

在开发中保持良好的编码规范是十分重要的。我所采用的新的VB.net/ASP.NET编码规范,是一种被证明能明显改善代码可读性,并有助于代码管理、分类的编码规范。采用这种编码规范,能避免如匈牙利命名法带...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

[CC2530]串口接收发送数据

CC2530 串口接收发送数据(查询法) #include "ioCC2530.h" void initUART(void) {   PERCFG&=~0x01;   P0SEL |= 0x0C; ...

c8051f320 keil

c8059f320 flash :16kB   0000H-3FFFH, c代码 在keil中可设置编译地址 比如 之后keil会将代码编译在2a00之后这些地址空间里面,恩,是实际的flash的物...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)