C8051F120单片机双串口配置(uart0,uart1)

2023-12-13 14:48

本文主要是介绍C8051F120单片机双串口配置(uart0,uart1),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.介绍IO配置及XBR配置

XBR0=0X40;//使能串口0 分配到IO口P0.0 P0.1

XBR1=0;

XBR2=0X44;//使能XBR交叉开关IO控制器 使能串口1并绑定到IO口上


这里串口0 TX,RX优先级最高:P0.0,P0.1

之后仅使能了串口1那么串口1 TX,RX分配在P0.2,P0.3


P1DOUT=0xff;//选择IO口推挽输出


2.内部晶振配置(本程序中使用的是内部晶振)

SFRPAGE=CONFIG_PAGE;

//使用内部晶振OSCICN=0x83;//while(!OSCICN&0x40);//等待晶振稳定CLKSEL=0x00;//输出时钟不分频 时钟源来自内部振荡器CKCON=0x18;//TIM0=SYSCLK TIM1=SYSCLK

3.串口0的配置

void usart0_init()//接收数据的串口 bps19200
{SFRPAGE   = UART0_PAGE; //0SCON0=0x50;//方式1 允许接收SSTA0=0x05;SFRPAGE= TMR2_PAGE;TMR2CF=0x8;TMR2CN=0x8;RCAP2L=0xB0;RCAP2H=0xff;TR2=1;TI0=0;RI0=0;ES0=1;//开串口0中断EA=1;
}
这里设置的波特率为19200 可以根据数据手册中的公式调整RCAP2L,RCAP2H来改变波特率,采用8位可变波特率方式

接收中断为:

void date_recv() interrupt 4//接收测试没得问题
{	uchar date;static uchar dic=0;static uchar header=0;static uchar num=0;SFRPAGE=UART0_PAGE;if(RI0==1){RI0=0;date=SBUF0;//获取数据}
}

代码中的数据处理被删去,可以自行在if语句中进行相应的帧头,帧尾等相关校验。

设置的打印函数:

void sendstring_stream1(uchar* date,uchar lenth)
{uchar i;SFRPAGE=UART0_PAGE;for(i=0;i<lenth;i++){SBUF0=date[i];while(!TI0);//等待发送完成TI0=0;//手动清零发送中断标志}
}
包含两个参数,第一个参数是要发送的数据数组,第二个参数为数组的长度


4.串口1的相关配置

串口1只能工作在方式1,3

并且波特率只能由TIM1溢出产生

相关配置如下

void usart1_init()
{SFRPAGE   = UART1_PAGE; //1SCON1=0x50;SFRPAGE= TIMER01_PAGE;TMOD=0x20;TH1=0x96;TL1=0x96;TR1=1;//EIE2=0x40;
}

这里设置波特率为9600,没有打开串口中断,若果需要打开则去掉注释处代码,串口1终端号为20

2.设置串口1打印函数

void sendstring_stream2(uchar* date,uchar lenth)
{uchar i;SFRPAGE=UART1_PAGE;for(i=0;i<lenth;i++){SBUF1=date[i];while(!TI1);TI1=0;}
}

与串口0打印函数相同


这篇关于C8051F120单片机双串口配置(uart0,uart1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/488857

相关文章

mybatis的mapper对应的xml写法及配置详解

《mybatis的mapper对应的xml写法及配置详解》这篇文章给大家介绍mybatis的mapper对应的xml写法及配置详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录前置mapper 对应 XML 基础配置mapper 对应 xml 复杂配置Mapper 中的相

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

SpringCloud使用Nacos 配置中心实现配置自动刷新功能使用

《SpringCloud使用Nacos配置中心实现配置自动刷新功能使用》SpringCloud项目中使用Nacos作为配置中心可以方便开发及运维人员随时查看配置信息,及配置共享,并且Nacos支持配... 目录前言一、Nacos中集中配置方式?二、使用步骤1.使用$Value 注解2.使用@Configur

qtcreater配置opencv遇到的坑及实践记录

《qtcreater配置opencv遇到的坑及实践记录》我配置opencv不管是按照网上的教程还是deepseek发现都有些问题,下面是我的配置方法以及实践成功的心得,感兴趣的朋友跟随小编一起看看吧... 目录电脑环境下载环境变量配置qmake加入外部库测试配置我配置opencv不管是按照网上的教程还是de

Logback在SpringBoot中的详细配置教程

《Logback在SpringBoot中的详细配置教程》SpringBoot默认会加载classpath下的logback-spring.xml(推荐)或logback.xml作为Logback的配置... 目录1. Logback 配置文件2. 基础配置示例3. 关键配置项说明Appender(日志输出器

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Spring Boot中的YML配置列表及应用小结

《SpringBoot中的YML配置列表及应用小结》在SpringBoot中使用YAML进行列表的配置不仅简洁明了,还能提高代码的可读性和可维护性,:本文主要介绍SpringBoot中的YML配... 目录YAML列表的基础语法在Spring Boot中的应用从YAML读取列表列表中的复杂对象其他注意事项总

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

NGINX 配置内网访问的实现步骤

《NGINX配置内网访问的实现步骤》本文主要介绍了NGINX配置内网访问的实现步骤,Nginx的geo模块限制域名访问权限,仅允许内网/办公室IP访问,具有一定的参考价值,感兴趣的可以了解一下... 目录需求1. geo 模块配置2. 访问控制判断3. 错误页面配置4. 一个完整的配置参考文档需求我们有一