UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0
具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率(详见“18.1 增强波特
率发生器”)。接收数据缓冲机制允许 UART0 在软件尚未读取前一个数据字节的情况下开始接
收第二个输入数据字节。
UART0 有两个相关的特殊功能寄存器:串行控制寄存器(SCON0)和串行数据缓冲器
(SBUF0)。用同一个 SBUF0 地址可以访问发送寄存器和接收寄存器。写 SBUF0时自动访问
发送寄存器;读 SBUF0时自动访问接收寄存器,不可能从发送数据寄存器中读数据。
如果 UART0 中断被允许,则每次发送完成(SCON0 中的 TI0 位被置‘1’)或接收到数
据字节(SCON0 中的 RI0 位被置‘1’)时将产生中断。当 CPU转向中断服务程序时硬件不清
除 UART0 中断标志。中断标志必须用软件清除,这就允许软件查询 UART0 中断的原因(发
送完成或接收完成)。

Where T1CLK is the frequency of the clock supplied to Timer 1, and T1H is the high byte of Timer 1 (reload value).

eg:

设定的UARTBaudRate=9600bps

T1CLK =48Mhz/12=4Mhz

T1H=X

计算出X,就是reload value

9600=4*10^6/(256-X)/2

X=47.666666666666666666666666666667

X≈48=0x30

T1H=0x30 (如下表倒数第二行0x30,波特率误差为0.16%,UART通讯的波特率的误差范围一般控制在2%以内,当然也要看你的硬件设计情况,不过对于9600BIT的低速率是比较容易的)

void UART0_Init()
{
Timer1_Init();

/*
TI0 (SCON0.1) The TI0 Transmit Interrupt Flag
RI0 (SCON0.0) Receive Interrupt Flag.
###the data byte will be loaded into the SBUF0 receive register
if the following conditions are met:RI0 must be logic 0,
REN0(SCON0.4)REN0 Receive Enable bit

*/
SCON0 = 0x10;//UART0 Receive Enable.UART0 reception enabled.
Interrupts_Init();

}
void UART0_Send_data(unsigned char Send_data)
{
SBUF0=Send_data;
while(!TI0);
TI0=0;
}
void UART0_Send_Longdata(unsigned char *str, unsigned int Stringlen)
{
unsigned int i;
do {
UART0_Send_data(*(str+i));
i++;
}
while (i<Stringlen);

}
/*********************The main entry**********************/
void main( )// http://hi.baidu.com/helloelectron
{

PCA0MD &= ~( 1<<6 );//C8051F关闭看门狗
Oscillator_Init();
Port_IO_Init();
UART0_Init();
UART0_Send_Longdata(MyBlog,strlen(MyBlog)); //发送BLOG字符串
while(1)
{

if (read_flag) //如果接收完毕标志已置位,就将读到的数从串口发出
{
read_flag= 0 ; //接收完毕标志清0

UART0_Send_data(Byte); //发送接收到的字符
}
display_led(Byte);
}

}

void Uart0_Receive_interrupt()interrupt 4
{
if (RI0==1)
{
RI0 = 0; // 清接收中断标志RI0
Byte = SBUF0; // 从串口接收一个字符
read_flag= 1 ; //就置位取数标志
}

}

C8051F340串口通信程序(UART0)相关推荐

  1. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  2. 详解 Qt 串口通信程序全程图文 (5)

    Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明: (下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是 ...

  3. 详解 Qt 串口通信程序全程图文 (4)

    Qt 串口通信程序全程图文是本文介绍的内容,本文一开始先讲解对程序的改进,在文章最后将要讲解一些重要问题. 1.在窗口中加入一些组合框Combo Box,它们的名称及条目如下: 串口:portName ...

  4. 详解 Qt 串口通信程序全程图文 (3)

    Qt 串口通信程序全程图文是本文要介绍的内容,下面的程序在第一部分中所写的程序上进行了一些改进.加入打开和关闭串口,发送数据等功能. 1.加入了"打开串口","关闭串口& ...

  5. 详解 Qt 串口通信程序全程图文 (2)

    Qt 串口通信程序全程图文是本文介绍的内容,上一部分中已经介绍了实现最简单的串口接收程序的编写,下面将对程序内容进行分析. 1.首先应说明操作串口的流程 步骤一:设置串口参数,如:波特率,数据位,奇偶 ...

  6. 详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  7. QT中串口通信程序(转)

    (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或直接用源码编写,程序稍有不同,请自己改动.) 在Qt中并没有特定的串口控制类,现在大部分人使用的是第三 ...

  8. 【转】Qt编写串口通信程序全程图文讲解

    Qt编写串口通信程序全程图文讲解 本文章原创于www.yafeilinux.com 转载请注明出处. (说明:我们的编程环境是windows xp下,在Qt Creator中进行,如果在Linux下或 ...

  9. java串口发送十六进制数,本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下1.介绍使用Java实现的串口通信程序,支持十六进制数据的发送与接收。 源码:...

    本文实例为大家分享了Java实现串口通信的具体代码,供大家参考,具体内容如下 1.介绍 使用Java实现的串口通信程序,支持十六进制数据的发送与接收. 源码:SerialPortDemo 效果图如下: ...

最新文章

  1. 揭秘互联网人群层级,你属于第几级?
  2. 知方可补不足~SQL中的count命令的一些优化措施(百万以上数据明显)
  3. Quartus 13.1安装心得
  4. CentOS 6 安装 Git
  5. 澎思科技马原:AI安防竞争还未结束,落地进入后发优势时代 | MEET2020
  6. 网站单页面排名提升的技巧有哪些?
  7. php面试中的问题,十个值得深思的PHP面试问题
  8. 使用的组件:ckeditor
  9. 程序员必备的八大排序算法
  10. 第一次马拉松(2013上海国际马拉松赛)
  11. 关于命运(详细娱乐诠释)
  12. mybatis中10000条数据的insert(批处理与普通方式的对比)
  13. 一阶导数和二阶导数的一些性质
  14. 数据库面试——锁的12连问,赶紧收藏!
  15. sql server 替换字段中的部分字符,替换指定字符的方法
  16. 使用Fiddler对手机App抓包
  17. Android 11 内置原生壁纸!速度来取
  18. centos发现网络连不上了,重启网络服务报错“systemctl status network.service” and “journalctl -xe” for details. [失败]
  19. 订单23系统服务器,死亡搁浅图文攻略 主线流程+订单系统+运送流程+建筑搭建 第3节芙拉吉尔 订单No23.系统服务器-游侠网...
  20. 一文读懂C#中的抽象类、抽象方法、virtual虚函数、override重写函数及父类子类构造函数和析构函数的执行顺序

热门文章

  1. 自定义Office中格式刷的快捷键
  2. 财务分析与决策-习题纠缠
  3. 2021年1月6日订阅朋友的问题与解决方案汇总
  4. MyBatis使用PageHelper排序分页
  5. 破解TexturePacker加密资源,寻找解密Key之旅
  6. 视频教程-15年经验大厂HR亲授:程序员必备简历面试课-招聘/面试
  7. 【python】奥数题
  8. 编译原理 - 三大经典书籍(龙书 虎书 鲸书)
  9. 基于DE2-115 FPGA开发板的VGA显示
  10. 海康威视推出业界首款Android系统的网络键盘:Android键盘与传统键盘对比