历史上的今天

今天是:2024年10月30日(星期三)

正在发生

2019年10月30日 | STC15F2系列单片机UART1使用定时器1做波特率发生器

发布者:温暖心情 来源: 51hei关键字:STC15F2系列  单片机  UART1  定时器1  波特率发生器 手机看文章 扫描二维码
随时随地手机看文章

#include

#include "main.h"

#include "intrins.h"


//使用T2定时器2 ,控制串口1 波特率


#define  FOSC 18432000L  //系统频率

#define  BAUD 9600     //串口1波特率

#define  TM2  (65536-(FOSC/4/BAUD))


#define NONE_PARITY      0   //无校验

#define ODD_PARITY       1   //奇校验

#define EVEN_PARITY      2   //偶校验

#define MARSK_PARITY     3   //标记校验

#define SPACE_PARITY     4   //空白校验 

#define PARITYBIT NONE_PARITY   //定义校验位


bit busy1 = 0;

BYTE c_data;

BYTE s_data;



void uart1_SendString(char *s);

void uart1_SendData(BYTE dat);


void main(void)

{

        SCON = 0x50;  //八位可变波特率

        T2L   = TM2;

        T2H   = TM2>>8;        

        AUXR  = AUXR_T2R;

        AUXR |= AUXR_T2x12

        AUXR |= AUXR_S1ST2;//使用定时器2 作为串口1的波特率发生器

        ES = 1;

    EA = 1;

        uart1_SendString("rn stc15f2k08s uart1 test rn");

        while(1);

}

/*********************************

串口1应用

**********************************/

/*UART1 中断服务程序*/

void uart1_ISR() interrupt 4 using 1

{

        uchar r_data;

        if(RI)

        {

                RI = 0;

                r_data  = SBUF;

                c_data = RB8;

                uart1_SendData(r_data);

                

        }

        if(TI)

        {

                TI = 0;   //清除TI位

                busy1 = 0; //清忙标志

        }

}


void uart1_SendData(BYTE dat)

{

        while(busy1); //等待前面的数据发送完成

        ACC = dat;   // 获取校验位

        if(P)

        {

        #if (PARITYBIT == ODD_PARITY)

                {

                        TB8 = 0;  //设置校验位为0

                }

        #elif (PARITYBIT == EVEN_PARITY)

                {

                        TB8 = 1;  //设置校验位为1

                }

        #endif

        }

        else

        {

        #if (PARITYBIT == ODD_PARITY)

                {

                        TB8 = 1;  //设置校验位为1

                }

        #elif (PARITYBIT == EVEN_PARITY)

                {

                        TB8 = 0;  //设置校验位为0

                }

        #endif

        }

        busy1 = 1;

        SBUF = ACC;  //写数据到UART 数据寄存器

}

void uart1_SendString(char *s)

{

        while(*s)                  //检测字符串结束标识

        { 

                uart1_SendData(*s++); //发送当前字符

        }

}


关键字:STC15F2系列  单片机  UART1  定时器1  波特率发生器 引用地址:STC15F2系列单片机UART1使用定时器1做波特率发生器

上一篇:51单片机阳历转农历(仅仅是阳历转阴历例程)
下一篇:单片机SHT20+BH1750+BMP180温湿度、气压、光照度三合一设计

推荐阅读

“第一次在身体里植入一个芯片(早起版本)。相信这是里程碑的一天,未来会有越来越多的人在自己的身体里植入芯片,以便于更好地了解自己。”这是YY创始人李学凌的一则朋友圈,这则新闻引起了广泛的关注,并将““植入芯片”这个话题推向了高潮。李总所说的到底是不是“植入芯片”呢?广大网友表示李学凌总,可能被诓了!这个产品和雅培动态血糖仪产品有很...
一、基本概念(1)I2C是两线式串行总线,由数据线SDA和时钟SCL构成的串行总线,可发送和接收数据。在CPU与被控IC之间、IC与IC之间进行双向传送,高速IIC总线一般可达400kbps以上。(2)IIC是半双工通信方式,也就是说它既可以接收也可以发送,但是由于它只有一根数据线,所以接收和发送不能同时进行。二、I2C协议(1)空闲状态:数据线SDA和时钟SCL线都处于...
作为老牌工业强国,为了在新一轮工业革命中抢占先机,2013年的4月份,在德国萨克森州举办的汉诺威工业博览会上,德国“工业4.0小组”首次正式提出工业4.0战略概念,其后这一概念在全球引起广泛热议,紧接着制造业的龙头老大国美国也发布了《加速美国先进制造业》相关资讯,与此同时,日本也提出了《日本机器人新战略》,我们中国做为世界工厂也不甘示弱,...
本周,A股三大指数出现分化行情,其中沪指、深证成指均有不同程度的跌幅,创业板指数则持续上涨。截至本周五收盘,沪指本周下跌35.26点,跌幅为0.98%,收报3547.34点;深证成指跌41.44点,跌幅为0.29%,收报14451.38点;创业板指数涨65.76点,涨幅为2%,收报3350.67点。Wind半导体指数本周掀起反攻潮。截至周五收盘,本周大涨322.09点,涨幅为4.49%,收报7...

史海拾趣

问答坊 | AI 解惑

现场总线技术与楼宇自动化

简要介绍了楼宇自动化系统及其对控制网络的具体要求, 论述了现场总线控制网络在楼宇自动化系统中的应用趋势, 并介绍了两种应用广泛, 功能全面的现场总线控制网络——CAN、Lon2works 总线, 指出了两种总线技术的特点和在楼宇自动化方面的设计结构。…

查看全部问答∨

ARM无痛苦起步

首先看看我们要解决的问题。44B0X片内只有几K CACHE,ROM和RAM都是外接的芯片。我们的程序是要写入FLASH中保存,但执行时是拷到SDRAM中执行的(如在ROM中执行速度会较慢)。要做到这一点需要把程序做成两个分程序:一个是实现你的系统功能的主程序 ...…

查看全部问答∨

晶体三极管工作原理[转帖]

晶体三极管作为一个常用器件,是构成现代电子世界的重要基石。然而,传统的教科书对其工作原理的讲述却存在有很大问题,使初学者对三极管的工作原理无法正常理解,感到别扭与迷茫。其主要问题有以下三点:1 严重割裂晶体二极管与三极管在原理上的自 ...…

查看全部问答∨

Wince 文件读写问题

用CreateFile建立文件后 如何用WriteFile与ReadFile来读写字符串 如我想写一个CString str = “atpx-4869”; 再把它读出来 我写进去显示出来的是乱码 读要用PBYTE结构,用这个怎么读字符串…

查看全部问答∨

关于2440 spi的一些疑问!!!!

这两天搞2440的SPI驱动,感觉有很多疑问,请大家帮忙解答!!! 我现在2440的SPI1采用从模式,单片机通过模拟SPI接口与其通信。当2440要发送数据的时候,就给单片机一个外部中断脉冲,而当单片机要发送数据的时候会去检测2440的一个I/O 口是不是拉 ...…

查看全部问答∨

ADS1282问题

本帖最后由 dontium 于 2015-1-23 13:27 编辑 向各位大虾请教ADS1282初始化问题: 我配置好ADS1282后,再读寄存器验证数据是对的。设置的采样速率也与设置符合;输入电压变化,输出电压也有变化;但是当输入为0时,但输出仍有数据输出(数据为几十 ...…

查看全部问答∨

有关msp430寄存器

新手我最近在学430,可是花在背寄存器的时间占了很大一部分,而且还没背住,我想请问各位大侠有关学习430的经验?…

查看全部问答∨

【武汉华嵌】Linux中总线、设备、驱动是如何关联的?

作者:武汉华嵌技术部 对于Linux驱动开发来说,设备模型的理解是根本,顾名思义设备模型是关于设备的模型,设备的概念就是总线和与其相连的各种设备了。电脑城的IT 工作者都会知道设备是通过总线连到计算机上的,而且还需要对应的驱动才能用,可是 ...…

查看全部问答∨

原来重力可以这样应用-绝对给力的陀螺仪原理与应用视频show

$(\'flv_Qkn\').innerHTML=(AC_FL_RunContent(\'width\', \'680\', \'height\', \'475\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \'http://player.youku.com/player.php/sid/XMjY5NTgzNTE2/v.swf\', \'qu ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved