0x02:串口的电气标准与协议 串行接口按照电器标准及协议可分为RS-232-C、RS-422和RS-485等。这些标准主要规定了接口的电气特性,而不涉及接插件、电缆或协议细节。...许多笔记本电脑通过RS-232电平标准与单片机进行通信。...许多笔记本电脑也通过TTL电平与单片机进行通信。...在实际应用中,我们经常使用USB转TTL模块(如采用CH340芯片)来实现与单片机之间的通信,其中TX(发送)线通常对应单片机的P3.1端口,而RX(接收)线则对应P3.0端口。...我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!
今天用stm32串口转232和工控机通信时,通过笔记本的串口助手与单片机和工控机通信时都很正常,收发都没有问题;但是一用单片机和工控机直接通信就出现通信故障,经过排查发现单片机老是接收到错误数据0X80...后来查找资料说这是MAX3232ESE-T芯片的极限通信速率了,果断把波特率降低为19200或者其他低于115200的波特率,错误数据就不在出现了; 这个问题的很难发现的原因是,在波特率为115200时使用电脑的串口助手通信都完全正常
本篇文章整理了串口的接线,串口的寄存器,以及串口的配置。 0x01:串口的接线 串口一般有两个重要的引脚,分别是 TX 和 RX,TX 是发送引脚,RX 是接收引脚。...0x03:串口的设置 在串口通信前,有一些配置需要进行定义,比如波特率、校验位、停止位等。通常情况下,只要两端设置相同即可。...在 STC-ISP 中有一个串口助手,可以用来和单片机进行通信,如下图: 在 STC-ISP 中有波特率计算器,可以用来辅助设置单片机关于串口通信的相关寄存器。...后面会整理一些 Linux 和 Windows 下的 C 语言编程的知识,有些是按照一定的顺序较完整的整理,有些是一些零碎的知识点。...我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!
单片机的串口可以使单片机与单片机,单片机与单片机『USB和转串口可以实现通信』 单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。...串口和定时器一样都是单片机的内部资源 (●'◡'●) 五一单片机内部自带串口UART(Universal Asynchronous Receiver Transmitter) 通用异步收发器可实现单片机的串口通信...因为在单片机当中下载程序也是通过串口通信,就是在我们程序当中写好的时候也是通过串口下载进去到单片机当中去的。...51单片机的UART[串口] 在STC89C52单片机的芯片上集成了⒈个 UART串口。高级的单片机上可能会有多个UART。...STC89C52的UART有四种工作模式就像定时器一样也是拥有④种工作模式 如下所示↓ ⒈模式0:同步移位寄存器。 ⒉模式1:8位UART[⒈个字节],波特率可变。
本篇文章整理了串口的初始化的一些文档性的内容,如果看完和我一样比较晕,那么下篇文章配合代码看也行。 0x01:串口初始化相关寄存器 串口初始化相关的寄存器有两个,分别时 PCON 和 SCON。...0x04:定时器 除了 TCON 和 SCON 两个寄存器外,初始化串口时需要指定定时器。...因为波特率是表示速度的,单片机的速度是又晶振决定的,而晶振跟时钟周期、机器周期又是相关的,那么就离不开定时器了。...看一下文档的 P232 ,如下图: 0x05:小结 从上面的整理我们可以得知,初始化串口会用到 TCON、SCON 和 定时器相关的寄存器。...我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!
************************************************************** 文件名称:flash_led.c 文件说明:流水灯C程序 编写日期:2006...AT89S51,外接12M晶振,P1口输出 *************************************************************/ #include //51系列单片机定义文件...for(;t;t–) for(bt=0;bt<255;bt++); } /************************************************************ *89C51...、S51单片机32个IO口流水灯测试程序 *Flash0、1、2、3分别对应单片机的P0、1、2、3四个口 *a程序对应流水灯从全灭到一个一个亮 *b程序对应流水灯从全亮到一个一个灭 *2006-7-26
单片机常用的通信方式有串口通信,I2C,SPI,UART等等,在这里说一下基于8051单片机串口通信的基本原理。简要介绍单片机与PC机之间的通信。...80C51串行口的控制寄存器 串口通信首先要配置各个控制寄存器的工作方式,因此先介绍控制寄存器 一、SCON控制寄存器:SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志...整个过程需要用到串口调试助手。 利用单片机与PC机的通信,可以实现PC机发送指令来控制单片机进行操作。 总结 总的来说,串口通信有以下几个关键的地方。 ①利用定时器来作为波特率的发生器。...我们要设定通信的波特率,不然的话,单片机是没办法进行采样的,这样也不会得到正确的结果了。根据需要的波特率来计算定时器的初值,这是串口初始化的一部分。...②配置串口相关的寄存器SCON和PCON,SCON主要是用来配置串口的工作方式以及串口使能,以及清除接收/发送中断标志位,PCON用来配置波特率是否加倍。这样初始化就完成了。
图4-3-1 标准RS232串口 上面图中的串行接口叫做 RS232 接口,由于现在笔记本电脑都不带这种 9 针串口了,所以和单片机通信越来越趋向于使用USB协议虚拟的串口(就是使用USB转串口协议芯片...STC90C51RC/RD+系列单片机串口通信对应的专用管脚是P3.0/RxD和P3.1/TxD,由它们组成的通信接口就叫做串行接口,简称串口。...图4-3-1 两个单片机之间串口通信示意图 图中, GND 表示单片机系统电源的参考地, TXD 是串行发送引脚, RXD 是串行接收引脚。...下面图片展示了一个完整的串口数据发送接收过程: 图4-3-2 串口数据发送示意图 4.3.3 51单片机的串口寄存器介绍 STC90C51RC/RD+系列单片机内部集成有一个功能很强的全双工串行通信口...(P3.0/RxD和P3.1/TxD),与传统8051单片机的串口完全兼容。
】系列_謓泽的博客-CSDN博客 ✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本 本系列哔哩哔哩江科大51单片机的视频为主以及博主自己的总结梳理 目录 ⒈串口向电脑发送数据 配置串口 串口相关寄存器...UART.c & UART.h 接收 接收中断 ⒉电脑通过串口控制LED灯 && 将接收到的数据发送到串口当中里面去 - 代码 main.c Delay.c & Delay.h UART.c &...注→ 【在串口向电脑发送数据】单片机只是需要给电脑发送就行。所以没有必要开启中断。 定时器1&工作模式二 注→这个串口只能配置定时器⒈这是它专用的。...AUXR→在五一单片机当中是不需要的这个是如何确定高系列的单片机里面有可选择的东西因为在我们的89C52当中是不可选的所以是不需要的。...串口向电脑发送数据 - 代码 代码的内容→单片机每隔⒈s向电脑发送一次数据。
C语言编程是类似的。...例如:sfr16 DPTR = 0x82; 通过上面引入的数据类型,使得8051的C语言编程变得和普通的C语言编程基本一致。也充分利用了8051的特点。...sbit TB8 = 0x9B; sbit RB8 = 0x9A; sbit TI = 0x99; sbit RI = 0x98; #endif 8051单片机有多重存储方式,内部RAM...最后,还是要谈到关于指针的问题,8051的C语言编程实际上还是很像汇编语言的,需要我们对内存区域进行直接操作。 指针在C语言里本来就很灵活,在这里我们还是要看看指针的存储类型。...还有一点很重要,C语言的数据类型在8051中占据的大小。 ? ? ? ? ?
工作了一年多,写了不少单片机串口程序。感觉串口多字节接收部分的逻辑相对于配置寄存器跟串口回复来说,是有点难度的——寄存器配置基本上都是死的,串口回复多字节跟回复一字节只是多了一个循环。 ...串口接收程序是基于串口中断的,单片机的串口每次接收到一字节数据产生一次中断,然后再读取某个寄存器就可以得到串口接收的数据了。然而在实际应用当中,基本上不会有单字节接收的情况。...比如先接受到aa 55,然后断了,再进来aa 55 01 01,就不受控制了。...上面的代码最大的缺点就是变量定义的太多了,太占ram资源了,编译的时候可能会出现错误,毕竟51单片机才128字节的ram(有的资源也很丰富的,比如c8051系列的),这一下子就是256字节的变量。...不过对于资源多一些的单片机,这样写还是可以的。要是能有4bit在一起的数据类型就好了,呵呵,verilog代码里面是可以的,C语言里貌似不行啊。
单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。...51单片机内部自带UART(Universal Asynchronous Receiver Transmitter,通用异步收发器),可实现单片机的串口通信。...UART STC89C52有1个UART STC89C52的UART有四种工作模式: 模式0:同步移位寄存器 模式1:8位UART,波特率可变(常用) 模式2:9位UART,波特率固定 模式3:...,接收方也应该接受这个大小,不然会导致数据错误。...因为我们只是简单的通信,并且使用的是8位UART,所以SM0赋0,SM1赋1就行, SM2也可以赋0,我们首先写一个发送的程序,所以REN先赋值0,TB8,RB8赋0就行,TI,RI在前面接受过了,就不再赘述
“volatile”类型定义在单片机的 C 语言编程中是如此的重要,是因为它可以告诉编译器的优化处理器这些变量是实实在在存在的,在优化过程中不能无故消除。 ...按照标准C 语言的做法,程序在开始运行前首先要把所有定义的但没有预置初值的变量全部清零。...6.PICC 中的子程序和函数 中档系列的PIC 单片机程序空间有分页的概念,但用C 语言编程时基本不用太多关心代码的分页问题。...中断函数的实现,PICC可以实现C 语言的中断服务程序。...一句话:用了C 语言后,就不要再老想着用汇编。尽量使用全局变量进行参数传递。
最常用的是通过串口输出uart log,例如51单片机,只要实现串口驱动,通过串口输出就可以了。 串口这种方法实现简单,大部分嵌入式芯片都有串口功能。...某些bug正常运行时会出现,当打开串口log时又不再复现怎么办? 一些封装中没有串口,或者串口已经被用作其他用途,要如何输出log? 本文介绍单片机没有串口时,如何打印调试信息。...log 以上都是在串口log暂时无法使用,或者只是临时用一下的方法,而适合长期使用的还是需要通过串口输出log,毕竟大部分时候没法连接仿真器。...使用DMA搬运log数据到串口输出,同时又不影响CPU运行,这样就可以解决输出串口log耗时影响系统的问题:STM32串口收发数据为什么要使用DMA?...使用IO模拟串口输出log 最后要讨论的是在一些封装中没有串口,或者串口已经被用作其他用途时如何输出log,这时可以找一个空闲的普通IO,模拟UART协议输出log到上位机的串口工具。
关于定时器/计数器的内容已经算是了解了一些了,不过这里梳理一个关于 C 语言位运算的内容。对于接触过汇编、C 语言、以及系统底层的内容的话,其实对位运算不会陌生的。...按位与操作(就是 & 这个符号),很多语言都有这个运算符,意义也都一样。& 操作的特性是对指定位进行清 0,其他位保持不变。...按位或操作(就是 | 这个符号),很多语言也都有这个运算符。| 操作的特性是对指定位进行置位操作,而其余位保持不变。...我是一个程序员,了解 C、PHP、Java、ASM、Python,有 信安、CISP 证书,写小白也能看得懂的文章,感谢关注!!!
最常用的是通过串口输出uart log,例如51单片机,只要实现串口驱动,通过串口输出就可以了。 串口这种方法实现简单,大部分嵌入式芯片都有串口功能。...某些bug正常运行时会出现,当打开串口log时又不再复现怎么办? 一些封装中没有串口,或者串口已经被用作其他用途,要如何输出log? 本文介绍单片机没有串口时,如何打印调试信息。 1....通过串口输出log 以上都是在串口log暂时无法使用,或者只是临时用一下的方法,而适合长期使用的还是需要通过串口输出log,毕竟大部分时候没法连接仿真器。...使用DMA搬运log数据到串口输出,同时又不影响CPU运行,这样就可以解决输出串口log耗时影响系统的问题:STM32串口收发数据为什么要使用DMA?...使用IO模拟串口输出log 最后要讨论的是在一些封装中没有串口,或者串口已经被用作其他用途时如何输出log,这时可以找一个空闲的普通IO,模拟UART协议输出log到上位机的串口工具。
在现实单片机产品开发过程中,如果存在多个串口,在调试打印某个模块信息的时候,大多数人的做法是将所有模块的TX、RX、GND引出来,分别接到不同的调试口去,通过PC终端去将这些信息分别打印出来。...于是,透传模式的出现就是为了解决这样的问题,也就是在程序中指定使用一个串口,将其它模块的串口做一个连接,于是这个指定的串口就可以输出这些模块的串口信息,甚至,我们可以在PC上通过串口模块的TX线路将命令发送到下位机...,根据命令来指定哪一个模块串口输出,这样方便快捷,也有利于分析问题,避免现实开发中的繁琐和误操作。...用标准C语言模拟这个过程: #include //条件标志位,根据条件标志位决定打印的内容 int debug_condition = 0 ; #define GENERAL_DEBUG...return 0 ; } 运行结果: 当输入除0,1,2以外的数,则无效,当输入为1时则打印模块1的调试信息 当输入为2时,只打印模块2的调试信息 当输入为0时,打印全部调试信息 有了实现方法,当然在单片机上去实现也就不难了
51单片机采用中断方式的串口通信过程及程序分析: 所谓中断方式,就是串口收/发标志位出发中断后,在中断中执行既定操作,可通过函数调用来实现。...在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。...80C51串行口的工作方式1: 方式1是10位数据的异步通信口。TXD为数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。...定时/计数器的控制 80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。...程序: /*51单片机采用中断方式的串口通信程序分析: 接收数据时 等待中断->然后在中断中接收数据 发送数据时 发送数据->等待中断->然后在中断中发送数据 具体步骤如下: 确定T1的工作方式(编程TMOD
本规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。...注释语言必须准确、易懂、简洁。 边写代码边注释,修改代码同时修改相应的注释,不再有用的注释要删除。...单片机编程规范-排版 5.1 缩进 代码的每一级均往右缩进4个空格的位置。不使用Tab键 5.2 分行 每行语句(?????...如工程中包含的“Type.h”文件,该文件用于C语言中类型的别名定义,用户还可以根据自己的需要,随时在该文件中添加条目。在工程的任一文件中,需要用到这些别名时,都要包含“Type.h”。...3) typedef和#define的用法 ① typedef的用法 在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像
c语言及单片机delay延时函数 环境 延时函数 一、是什么 二、为什么 三、用在哪里?...四、怎么做 1、循环延时 2、定时器延时 环境 开发环境:NY-IDE 单片机 :NY8B062D 延时函数 延时函数,作为一种常用函数,在不同的领域有不同的用处。...而在嵌入式以及C语言的编写中,我们常常遇到需要自己来编写延时函数的情况,这种情况之下,了解其原理就显得必要。 一、是什么 简单来说,延时函数的目的就在于等,实际上就是要等一段时间再来执行接下来的代码。...,让计算机跑无用的代码,从而达到延时的目的 定时器 通过定时器的计时功能,来达到延时的目的 系统调用 该功能其实还是通过以上的两种方式来实现,当时这种功能出现在有系统的程序里面,执行系统延时的情况下,单片机可以去执行别的函数...思路:我们设置好一个定时器的循环时间,然后每次循环完成标志位加一,然后在自己的任务里面,判断标志位的大小,当数据达到的时候,就来处理对应的事件,这有利于单片机效率的提高 初始化定时器: /*******
领取专属 10元无门槛券
手把手带您无忧上云