C8051F340串口通信程序(UART0)

发布者:EnchantedHeart最新更新时间:2016-10-18 来源: eefocus关键字:C8051F340  串口通信程序  UART0 手机看文章 扫描二维码
随时随地手机看文章
UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0

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

C8051F340串口通信程序(UART0) - kingseacjh - kingseacjh的博客
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的低速率是比较容易的)

 

C8051F340串口通信程序(UART0) - kingseacjh - kingseacjh的博客

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

}
/*********************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 引用地址:C8051F340串口通信程序(UART0)

上一篇:用keil C使单片机获得随机数
下一篇:基于8051和Proteus的数字时钟 程序的编写和仿真

推荐阅读最新更新时间:2024-03-16 15:15

S3C2440开发板裸机程序系列04—串口通信
1. S3C244串口概述 串口通讯一般要增加电平转换电路,原因是TTL/CMOS电平与RS232电平不一致: TTL/CMOS电平: CMOS电平: 常用的电平转换芯片是MAX3232。 S3C2440有3个独立的异步串口,可以选择工作在中断或DMA方式下。每个UART包括一个波特率发生器、发送器、接收器和一个控制单元。 UART有FIFO模式和非FIFO模式。FIFO模式下可以利用64字节的发送/接收缓冲寄存器,非FIFO模式下只使用了发送/接收缓冲寄存器中的1个字节。本篇入门级以非FIFO为例。 2. 串口设置及相关寄存器 串口引脚是GPIO复用的。本篇UART只用3根引脚:TXD
[单片机]
S3C2440开发板裸机<font color='red'>程序</font>系列04—<font color='red'>串口通信</font>
UART0串口编程系列(五)
一.串口接收数据在 UC/OS设计中应注意的问题 1. 串口通信的数据接收过程: 1 UART 接收FIFO接收到预定字节后触发中断 2 ISR读取接收到的内容并保存 3 经过一次或若干次ISR完成一个通信帧的接收(拼装通信帧) 4 处理和解释通信内容 5 根据处理结果触发其他任务 2. 串口数据接收程序设计时,应该考虑的问题: 1 即使以上的操作过程很简单,也最好不要把它全部安排在ISR中完成,如果放在一起的话,就会给UART0通信带来危机(此处具体请看前面的文章)。 2 所以要安排一个与ISR关联的“串口接收”任务来完成后面的工作。再创建一个帧缓冲区。在接收的过程中,将接收到的内容写入帧缓冲区。接收完一帧后,处理
[单片机]
<font color='red'>UART0</font>串口编程系列(五)
C8051F340的USBXpress开发包USB通信设计
传统的USB设备驱动程序编写异常复杂,程序员往往很难入手。Silicon Laboratories公司提供的USBXpress开发包大大简化了USB通信的应用和相关驱动程序的开发,只要做好开发前的准备工作,USBXpress开发包完全可以实现USB通信的所有功能。本文介绍USB通信开发的全过程,以及在开发过程中需要注意的事项。(主要针对设备端USB通信进行讲解) 1 USBXpress简介 由Silicon Laboratories公司推出的USBXpress开发包涵盖了主机端和设备端的所有函数功能,支持C8051F32X、C8051F34X和CP210X设备的USB通信。USBXpress开发包中包含主机端的设备驱动、主机端
[单片机]
<font color='red'>C8051F340</font>的USBXpress开发包USB通信设计
ATmega16L串口通信程序
/************************************************************** 实验名称:串口通信演示实验 晶振:内部 8M 接线方法: 1.PD0接RXD,PD1接TXD 2.打开串口调试助手 使用说明: 1.本程序能够测试串口数据发送与接收。发送采用 查询方式,接收采用中断方式,通信波特率为19200。 2.当上位机软件发送一串数据时,单片机收到后回送相同 的数据。 *****************************************************************/ #include i
[单片机]
基于C8051F340单片机实现低频超声波促透皮系统的应用方案
经皮给药系统在医疗领域已成为一种新兴和重要的手段。经皮给药是药物通过皮肤并经毛细血管吸收进入体循环产生药效的一种方法,它可避免肝脏的首过效应,延长半衰期较短药物的治疗效果,能较长时间维持恒定的速率给药等,因此正受到广泛的关注。实际上早在1954年Fellinger。和Schmidt就通过超声导入氢化可的松药膏成功地治疗了手指多发性关节炎。最初对超声增透效应的研究开始于中频治疗用超声(0.7~3.0 MHz),但后来发现低频超声的增透效应最好。研究表明不同频率和强度超声波对机体的作用是不同的,其次,温度对于经皮给药也有一定的影响,如一定的温度可以提高渗透率,但太高的温度会引起皮肤的烫伤,因为超声也有热效应;因此,如何把各个因素综合考
[单片机]
基于<font color='red'>C8051F340</font>单片机实现低频超声波促透皮系统的应用方案
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved