MCU如何自定义引脚做UART串口
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要介绍了MCU如何自定义引脚做UART串口,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。当(单片机)芯片自带的UART端口不
千家信息网最后更新 2025年02月05日MCU如何自定义引脚做UART串口
这篇文章主要介绍了MCU如何自定义引脚做UART串口,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
当(单片机)芯片自带的UART端口不够用时,我们可以考虑利用其它引脚作为UART.
串口RS232的数据协议有两种,我们以PC与8位/32位单片机间比较常用的异步模式为例子讲解.
单片机的TXD引脚先发一个低电平0给对方,然后发送5-8个位作为数据,最后发送1个位奇偶校验和1个位高电平1作为停止位.
以下例子为波特率9600bps,1个开始位,8个数据位,1个停止位 [10位数据,无奇偶校验位:9600-8-N-1]
波特率:每秒钟发送的字节位,如果baudrate=9600,也就是说,每发送1位耗时1000/9600=104uSec
/************************************** 利用51芯片定时器中断模拟串口信息发送 优点:可以自定义串口引脚,可以实现多个串口 格式: 9600-8-N-1 功能:模拟串口Send*****************************************/#includechar g_nSendInx=0;char g_nBuff=0;char g_nFlag=0;#define MY_TXD P1_0 //模拟TXD引脚void Timer0Init(void)//104微秒@11.0592MHz{ //1000ms/9600=104.166us //使用这种方案,由于精确性问题,长时间传输会偶然出现几个误码 TMOD &= 0xF0; //设置定时器模式 TMOD |= 0x02; //设置定时器模式 TL0 = 0xA0; //设置定时初值 TH0 = 0xA0; //设置定时重载值 TF0 = 0; //清除TF0标志 TR0 = 1; //定时器0开始计时 ET0=1; EA=1;}/****************************** 自定义串口发送单字符 ******************************/void MyUart_Send(char ch){ g_nFlag=0; g_nBuff=ch; TR0=1; while(g_nFlag==0);}/****************************** 自定义串口发送字符串******************************/void MyUart_String(char* str){ int i=0; while(*(str+i)){ i++; g_nFlag=0; g_nBuff=*(str+i); TR0=1; while(g_nFlag==0); }}/* 定时器0中断服务*/void Timer0_ISP() interrupt 1{ g_nSendInx++;//发送模拟第几位 if(g_nSendInx==1) { MY_TXD=0;//起始位拉低 }else if(g_nSendInx==10) //格式: 9600-8-N-1,完整10个字节 { MY_TXD=1;//停止位拉高 TR0=0; g_nSendInx=0; g_nFlag=1;///发送完成标志位 }else{ MY_TXD=g_nBuff&0x01;////sbuffer_data g_nBuff>>=1; }}/********************************** 用Timer0定时中断模拟串口信号**********************************/void main (void) { Timer0Init();///定时器初始化,周期为 1000ms/9600=104us MyUart_String("===Welcome,My Uart===\r\n "); MyUart_Send(0x61); MyUart_Send(0x62); MyUart_Send(0x63); while (1); }
感谢你能够认真阅读完这篇文章,希望小编分享的"MCU如何自定义引脚做UART串口"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!
串口
定时器
数据
篇文章
个位
单片机
模式
例子
奇偶
字节
标志
格式
波特率
电平
芯片
波特
精确
不够
也就是
也就是说
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
池州电力软件开发哪家好
用假软件开发票案件
软件开发分为哪几个
农行软件开发实习
区政府网络安全工作规划
网络安全课程设计哈希函数
腾讯云服务器安全性怎么样
学软件开发要学什么语言
深圳前端软件开发机构
独立ip服务器
服务器搭建配置与管理案例
石家庄网络安全大赛
上海互联网软件开发价钱是多少
当前主流的数据库都有哪些
广东本地软件开发成本价
php数据库连接字符集不匹配
陵川微软网络技术
数据库 手机号
软件开发者的歪脑袋照片
数据库增删改查的定义
软件开发对公司的评价怎么写
网络技术渗透到居民生活
建一个造价数据库
足球妖人数据库
博智达网络技术有限公司
独立ip服务器
上海互联网软件开发价钱是多少
广东戴尔服务器维修续保
网络安全哪里发展好一些
互联网及科技发展给保险业