历史上的今天
返回首页

历史上的今天

今天是:2025年07月18日(星期五)

正在发生

2020年07月18日 | 【蓝桥杯单片机组】(6)uart

2020-07-18 来源:eefocus

(1)波特率的概念:1bps = 1 bit/s


(2)板载资源有两个串口,仅UART1可以通过USB连接电脑


(3)四种方式波特率计算公式:(fosc:晶振频率 )


方式1:baud = fosc / 12;


方式2:baud = (2^smod / 32) * (T1溢出率)


方式3:baud = (2^smod / 64) * fosc


方式4:baud = (2^smod / 32) * (T1溢出率)


(4)SMOD的设定位于PCON(电源管理寄存器中)PCON_D7


SMOD = 1 波特率加倍PCON &= 0x7f


SMOD = 0  波特率不变 PCON |= 0x80


(5)T1溢出率为T1定时器溢出的频率,即:T1溢出一次所需要的时间的倒数 


溢出率 = 1 / ( N * (12 / fosc))


(6)使用T1做时钟源的时候应当使用方式2,以避免重装计时器初值带来的时延,否则会产生累积误差。


(7)计算计数器初值方法(方式1):


设初值为x, T1 = (256 - x) * ( 12 / fosc)


baud = ( 2 ^ SMOD) / 32 * T1


需要使用的寄存器:SCON 串行口寄存器(可位寻址)


SCON D7 D6 D5 D4 D3 D2 D1 D0

  SM0 SM1 SM2 REN TB8 RB8 TI RI



SM0/SM1: 工作方式选择位


SM0 SM1 方式 功能说明

0 0 0 同步移位寄存器方式(用于拓展I/O口)

0 1 1 10位异步收发(1开始位,8位数据,1停止位)波特率可变(T1控制)

1 0 2 11位异步收发(9位数据)波特率固定

1 1 3 11位异步收发(9位数据)波特率可变(T1控制)


一般使用方式1


SM2: 多机通信控制位,SM2 = 1:收到的RB8(第9位数据)进入SBUF,并激活RI,引起中断


SM2 = 0:收到的RB8被丢弃


REN: 接收使能


TB8 / RB8:发送、接收到的第9位数据


TI :发送结束标志(在发送最后一位停止位开始时TI硬件置1,需要手动清零)


RI:接收中断标志(在接受到最后一位停止位中间,RI硬件置1,需要手动清零)




编程步骤:


(1)设定T1工作方式(方式2)


(2)为TH1 TL1装初值,开计数器


(3)为串口设定所使用的时钟源


sfr AUXR  = 0x8e;

AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T

AUXR &= 0xFE; //串口1选择定时器1为波特率发生器


(4)设定SCON工作方式(主要:SM0 SM1 REN)


(5)开中断(总中断与串口中断)


P.S:善于使用STC - ISP中自带的波特率计算器




发送函数:


(1)送字符入SBUF


(2)等待TI变为1(while( ! TI ); )


(3)清零TI


接收中断:


(1)清零RI


(2)收SBUF中的数据




自己写的分片代码初始化:


void t1_init()

{

TMOD = 0x20; //M1 = 1; M0 = 0

TH1 = 0xfd;

TL1 = 0xfd;

EA = 1;

TR1 = 1 ;

}

 

void uart_init()

{

AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T

AUXR &= 0xFE; //串口1选择定时器1为波特率发生器

 

SM0 = 0;

SM1 = 1; //方式1

REN = 1; //RECEIVE INTERRUPT

 

ES = 1; //uart interrupt

EA = 1;

}



STC - ISP计算的初始化代码:

void UartInit(void) //9600bps@11.0592MHz

{

PCON &= 0x7F; //波特率不倍速

SCON = 0x50; //8位数据,可变波特率

AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T

AUXR &= 0xFE; //串口1选择定时器1为波特率发生器

TMOD &= 0x0F; //清除定时器1模式位

TMOD |= 0x20; //设定定时器1为8位自动重装方式

TL1 = 0xFD; //设定定时初值

TH1 = 0xFD; //设定定时器重装值

ET1 = 0; //禁止定时器1中断

TR1 = 1; //启动定时器1

}


发送函数:

void trans_char(char t)

{

SBUF = t;

while(!TI);

TI = 0;

}

 

void trans_str(char t[])

{

char *p;

p = t;

while(*p != '')

{

trans_char(*p);

p++;

}

}


中断:

void uart_isr() interrupt 4

{

 

RI = 0;

rechar = SBUF;

trans_char(rechar);   //验证

 

}


P.S:在开发板上需要讲J13跳线至MM

推荐阅读

史海拾趣

Horn公司的发展小趣事

随着汽车、通用工程、液压/气动、珠宝和医疗设备等行业对高精度切削工具需求的增长,Horn公司不断加大研发投入。公司成功开发出超硬切削材料如单晶金刚石(MCD)、多晶金刚石(PCD)和立方氮化硼(PCBN),这些材料的应用极大地提高了切削效率和加工精度。Horn公司的技术创新不仅满足了市场对高质量刀具的需求,还推动了整个切削工具行业的进步。

ELEMENT14公司的发展小趣事

ELEMENT14一直注重创新产品的引入和推广。公司紧跟电子行业的最新技术趋势,及时引入高性能、高可靠性的电子元器件产品。同时,ELEMENT14还积极推广这些创新产品,通过举办技术研讨会、发布技术白皮书等方式,帮助客户了解产品的特点和优势。这些努力不仅提升了公司的技术水平,也为客户提供了更多的选择。

Advantech公司的发展小趣事

ELEMENT14始终将提升服务质量和客户满意度作为首要任务。公司建立了完善的客户服务体系,提供快速响应、专业解答的客户服务。同时,ELEMENT14还定期开展客户满意度调查,针对客户的反馈和建议进行改进。这些努力不仅提升了客户满意度,也增强了公司的品牌形象和市场竞争力。

AEL [AEL Crystals Ltd]公司的发展小趣事

AEL Crystals非常重视与供应商和客户之间的合作关系。公司积极与供应商建立长期稳定的合作关系,确保原材料的稳定供应和质量可靠。同时,AEL Crystals也与众多客户建立了紧密的合作关系,深入了解客户需求并提供定制化的解决方案。这种长期合作关系的建立为公司的持续发展提供了有力保障。

Brainboxes公司的发展小趣事

Brainboxes拥有一流的内部制造设施和全球供应链,这使得公司在产品研发和生产方面具有极大的灵活性。内部制造设施保证了产品的高品质和快速交付,而全球供应链则确保了公司能够及时获取所需的原材料和零部件。这种高效的生产模式使得Brainboxes能够迅速响应市场需求,为客户提供优质的产品和服务。

BULGIN公司的发展小趣事

随着技术的不断进步和市场的扩大,BULGIN公司在20世纪60年代成为了当时世界上最大的、产品线最为齐全的电子零件制造商之一。公司保持着快速的创新与发展,BULGIN品牌开始覆盖多国市场,为全球各地的客户提供优质的产品和服务。

问答坊 | AI 解惑

52单片读写AT25F128

最近在做AT25F128的读写程序。是SPI口的!但是,一直不能成功。不知道有什么参考?我的CS信号是直接接地的是不是怎样不行。必需接一个引脚?!WP浮空了。没接东西! 谢谢各位!不要和我说什么google一下的废话啊!解决的可以分次给高分!!!如果, ...…

查看全部问答>

有关pppd的问题

pppd中用到connect,可每次都说connect script failed。是因为连接的脚本格式有问题么?…

查看全部问答>

想问一下,我打通ZigBee串口,每次只可读写一次,不知道是那里的毛病,并且用linux下的串口也是这样,希望大家指导一下,谢谢

想问一下,我打通ZigBee串口,每次只可读写一次,不知道是那里的毛病,并且用linux下的串口也是这样,希望大家指导一下,谢谢…

查看全部问答>

求助 VxWorks 6.6 是否可以同时支持IPv4和IPv6?

刚接触VxWorks. 请教各位,VxWorks 6.6 是否可以同时支持IPV4 和IPV6?多谢…

查看全部问答>

13w-20w招聘北京(上地)高级硬件工程师

职位描述: 1、负责完成产品的硬件单板、逻辑电路的设计与开发;协助PCB设计及单板试制加工; 2、项目要求完成总体方案、器件选型、原理图设计、调试、测试维护优化等工作,并对设计质量负责; 3、及时编写各种文档和标准化资料; 4、对本单元 ...…

查看全部问答>

1M带宽信号发生器的设计,抓头一个月了,跪求各路大神给个思路!

本帖最后由 paulhyde 于 2014-9-15 03:41 编辑 学校要做个毕业设计,导师不帮忙,就给个题目,百度都查不到,1M带宽信号发生器的设计,大百度都救不了我,听说本站大神无数,小弟特来贵宝地求个设计思路,活着能告诉我这个设计类似于什么设计一样 ...…

查看全部问答>

TI__DSP_C2000系列_简介与选型

TI__DSP_C2000系列_简介与选型 …

查看全部问答>

CCS安装后bin文件夹里面有很多exe格式的文件,请问怎么看?

CCS安装后bin文件夹里面有很多exe格式的文件,请问怎么看?上面的是exe格式的文件存储的是什么信息?怎么用终端打开? 如图: 举个例子: 已经把cl430.exe用终端打开:如图 然后转换成TXT的格式: …

查看全部问答>

ST-AMG-Sensortile开发大赛——麦克风手势控制

代码库链接:https://github.com/0rig1n/ST-AMG-Sensortile-Development.git $(\'flv_xF9\').innerHTML=(AC_FL_RunContent(\'width\', \'500\', \'height\', \'375\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src ...…

查看全部问答>