串口初始化自己独立的见解--第九天

2024-05-11 04:36

本文主要是介绍串口初始化自己独立的见解--第九天,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.SM0,SM1 我们一般用     8位UART,波特率可变 (方式1的工作方式)

        SCON :SM2 一般不用,SM0 =0 ,SM1 = 1

        PCON :   有两位 我们不动它,不加速,初始值

       TMOD:8位自动重装定时器,当溢出时将TH1存放的值自动重装入TL1   高四位清零,

                TMOD &=0x0F   :高四位清0

                TMOD |=0x20; 由此变成 M1,M0 为 1 0         8位自动重装模式

        定时器:

                由波特率计算

                TH1 = 0xFD;

                TL1 = 0xFD;  //9600波特率的初值

                TR1 = 1   ; //启动定时器

2.波特率计算

12T:

        2^0 / 32 x 11059200 / 12 (256-t)   = 9600

SCON:

     

TMOD:

波特率计算

串口实现字符串输出

1.自定义初始化串口

void UartInit(void)
{AUXR = 0x01;SCON = 0x40;TMOD &= 0x0F;TMOD |= 0x20;TH1 =0xFD;TL1 =0xFD;TR1 = 1;
}

2.利用串口中断来延迟输出,因为通过手册我们可以知道,发数据的过程中,移位寄存器操作也是消耗时间的,所以我们可以加软件延迟或者中断来抵消这一部分时间

用        TI 

        

void sendByte(char data_msg)
{
    
    SBUF = data_msg;
    while(!TI);       //(TI==0)   
        TI = 0;

}

void sendString(char *str)
{
    while(*str != '\0'){
        sendByte(*str);
        str++;  //指针偏移
    }
}
 

void main()
{
    
    
    UartInit();
    while(1)
    {
        Delay1000ms();
        
        sendString("caoshupei shuai\r\n");   //不加 \r 和 \n 会乱行
    }
}

串口通信编程,PC端发送指令控制LED

1.REN使能端必须让它等于1才能接受数据

B7 B6 B5 B4 B3 B2 B1 B0

0     1   0   1    0    0   0   0

      SM1   0  REN 

2.RI接收中断请求标志位。在方式0,当接收到第八位结束时,硬件自动置位RI = 1;

        响应中断后必须软件复位,即       RI= 0;

2.1 用外部中断函数,不会卡死,同时打开ES外部串口中断和总中断EA;

这篇关于串口初始化自己独立的见解--第九天的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/978516

相关文章

C++11范围for初始化列表auto decltype详解

《C++11范围for初始化列表autodecltype详解》C++11引入auto类型推导、decltype类型推断、统一列表初始化、范围for循环及智能指针,提升代码简洁性、类型安全与资源管理效... 目录C++11新特性1. 自动类型推导auto1.1 基本语法2. decltype3. 列表初始化3

Spring Bean初始化及@PostConstruc执行顺序示例详解

《SpringBean初始化及@PostConstruc执行顺序示例详解》本文给大家介绍SpringBean初始化及@PostConstruc执行顺序,本文通过实例代码给大家介绍的非常详细,对大家的... 目录1. Bean初始化执行顺序2. 成员变量初始化顺序2.1 普通Java类(非Spring环境)(

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1

MySQL之InnoDB存储页的独立表空间解读

《MySQL之InnoDB存储页的独立表空间解读》:本文主要介绍MySQL之InnoDB存储页的独立表空间,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、独立表空间【1】表空间大小【2】区【3】组【4】段【5】区的类型【6】XDES Entry区结构【

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

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

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

C++类和对象之初始化列表的使用方式

《C++类和对象之初始化列表的使用方式》:本文主要介绍C++类和对象之初始化列表的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C++初始化列表详解:性能优化与正确实践什么是初始化列表?初始化列表的三大核心作用1. 性能优化:避免不必要的赋值操作2. 强

SpringIOC容器Bean初始化和销毁回调方式

《SpringIOC容器Bean初始化和销毁回调方式》:本文主要介绍SpringIOC容器Bean初始化和销毁回调方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录前言1.@Bean指定初始化和销毁方法2.实现接口3.使用jsR250总结前言Spring Bea

Spring实现Bean的初始化和销毁的方式

《Spring实现Bean的初始化和销毁的方式》:本文主要介绍Spring实现Bean的初始化和销毁的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Bean的初始化二、Bean的销毁总结在前面的章节当中介绍完毕了ApplicationContext,也就

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模