单片机89C51的串行端口有4种工作方式,通过编程设计,可以使其工作在任一方式,以满足不同场合的需要。其中,
方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;
方式1主要用于双机之间或外设电路的通信;
方式2、3除有方式1的功能外,还可用作多机通信,以构成多微机系统,方式2、3的区别在于波特率的不同。
单片机的串行通信的波特率可以程控设定,在不同的工作方式下,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定。
单片机的串行端口有2个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率以及中断标志TI和RI。单片机的串行端口有1个数据寄存器SBUF,该寄存器为发送和接收所共有,在一定条件下,向SBUF写入数据就启动了发送过程,读SBUF就启动了接收过程。
波特率如标准9600 不是每秒种可以传送9600个字节,而是指每秒可以传送9600 个二进位,而一个字节8 个二进位,如用串口模式1 来传输那么加上起始位和停止位,每个数据字节就要占用10 个二进位,9600 波特率用模式1 传输时,每秒传输的字节数是9600÷10=960 字节。
如我们要得到9600 的波特率,晶振为11.0592M ,定时器1 为模式2,SMOD 设为1,看看那所要求的TH1 为何值。代入公式:
溢出速率=计数速率/[12*(256-TH1初值)]
9600=(2÷32)×((11.0592M/12)/(256-TH1)) TH1=250
关键字:串口 工作方式 串行端口
引用地址:
关于串口工作方式
推荐阅读最新更新时间:2024-11-07 11:20
基于AVR单片机的串口转FSK的通信模块设计
简介:本文采用ATmega48芯片及CMX865芯片实现FSK通信模块,基于此模块,用户与业务平台之间进行FSK信息交互,相对于终端来说就是简单的串口通信。 随着信息技术与网络技术的飞速发展,信息交互应用业务给人类生活带来更多的便利,信息终端表现出巨大的市场潜力。但是由于终端用户环境不同,用户信息交互方式可能不同,目前常用的有IP方式、FSK方式以及无线通信方式等。为了能够提高终端市场竞争力,减少系统开发成本投入,通信模块与终端程序独立设计是较为理想的解决方案。本文采用ATmega48芯片及CMX865芯片实现FSK通信模块,基于此模块,用户与业务平台之间进行FSK信息交互,相对于终端来说就是简单的串口通信。 1ATmeg
[单片机]
基于LabVIEW的外置串口采集控制卡的研制
引言 目前虚拟仪器开发广泛应用的是美国NI公司的LabVIEW开发平台。LabVIEW软件隐含了对设计虚拟仪器时所面临的多种困难的考虑、简化了设计过程,对于开发虚拟仪器相当方便,但因其硬件卡昂贵,影响了虚拟仪器在国内的推广使用。因而,本文提出了采用LabVIEW虚拟仪器开发平台,自行设计硬件卡。 设计中利用单片机作为下位机,采用标准RS-232串口与PC机通讯来构建采集控制系统。上位机通过发送控制采集命令实行采集控制卡的通道选择、量程选择、数据采集等,然后将采集到的数据通过串口传输给PC机实现数据的存储、分析。此外基于串口开发的采集控制卡还因具有热插拔的优点而具有很强的实用性。 外置串口采集控制系统构成
[测试测量]
通过学习USART1深入STM32F107VCT6的串口通信
STM32有数个串口,每个串口都有一个自己独立的波特率寄存器USART_BRR,通过设置该寄存器就可以达到配置不同波特率的目的,由于STM32采用分数波特率,所以STM32的串口波特率设置范围很宽,而且误差很小。 在STM32的参考手册中,串口被描述成通用同步异步收发器(USART),它提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信,也支持LIN(局部互联网),智能卡协议和IrDA(红外数据组织)SIR ENDEC规范,以及调制解调器(CTS/RTS)操作。它还允许多处理器通信。还可以使
[单片机]
单片机串口通信子程序
说明:晶振11.0592MHZ,由定时器1(T1)产生9600的波特率,串口中断工作方式1 #include math.h #define uchar unsigned char #define uint unsigned int uchar ge; sbit bin=P3^7; uchar flag; void init_com() { TMOD=0x20; //T1工作方式2 PCON=0x00; //波特率不倍增 SCON=0x50; // 串口工作方式1 TH1=0xfd; //给定时器1赋初值 TL1=0xfd; TR1=1; //启动
[单片机]
串口进行STM32F0的IAP移植手记(包括RAM&ROM地址设置)
1 前言 STSW-STM32116是ST官网基于标准库的针对STM32F0的USART进口IAP示例程序,下载链接:http://www.stmcu.org/document/detail/index/id-213120 工程原本是针对STM32F051,本文将介绍如何移植到STM32F070,并针对移植的过程中的问题逐个处理。 2 KEIL下移植 IAP程序一般分为两个,一个是IAP,一个是APP,IAP存放在内置FLASH的0x8000000的起始位置,而APP则存放在离这个位置一定距离的位置,这个距离一定是大于或等于IAP本身所占空间大小,本例子为0x8003000。 下载资源后,打开STM32F0xx_AN4065_F
[单片机]
USB虚拟串口通信实现
以一种高度集成的USB总线转接芯片CH341为核心,设计并实现了基于USB接口的PC机与下位机的虚拟串口通信。上位机在Windows环境下利用MSComm控件实现与下位机通信,介绍了USB转虚拟串口的实现方法,并基于该虚拟串口编写了智能家居控制应用软件。实验测试表明,采用虚拟串口实现上位机与单片机通信,具有结构简单、速度快和易于软件开发等特点,能满足于各种串口通信场合。
在嵌入式系统中,异步串行通信接口多作为标准外围设备出现。随着大量支持USB的个人电脑的普及,易于使用的接口。USB接口逐步成为PC机的标准接口,使得对USB接口相关应用软件的开发和外围设备的研究显得越来越重要。
本文中的智能家居控制系统采用基于USB的虚拟串
[嵌入式]
嵌入式设计方案:ARM9多串口服务器
以ARM920T 为内核的S3C2440A 作为主控制器和以太网控制芯片DM9000AEP 设计硬件平台; 构建并移植适合嵌入式串口服务器系统的嵌入式Linux 操作系统,利用Linux 完善的TCP/IP 协议设计ARM 端的多线程网络服务器程序。设计实现RS-232C 串口与以太网口数据的双向传输,使现有的智能仪器设备成功接入以太网。 随着计算机网络的发展和物联网的兴起,将智能仪器接入网络已成为一种趋势,以实现数据的共享与远程管理。但是目前大多智能仪器使用的是异步串行通信接口RS-232C /485 /422,因此迫切需要一种能将异步串行通信协议转换为以太网TCP /IP 协议的协议转换器,使现有的串行通信设备方便地接入
[单片机]
STM32CubeMX之串口不定长数据接收(接收中断+空闲中断)
环境: 开发板:STM32F4探索者(正点原子) 一. 空闲(IDLE)中断 1. 空闲帧 什么是空闲帧?在 STM32的中文参考手册 中,你会发现如下解释: 空闲帧可理解为整个帧周期内电平均为“1”(停止位的电平也是“1”),该帧后是下一个数据帧的起始位。如下图所示: 其实按使用的情况来看,应是数据帧接收之后,从停止位开始一直为高电平,一直持续一帧的时间(包含停止位)为高电平,那时就会产生空闲中断。 二. 空闲中断相关的宏 使能 IDLE 中断 __HAL_UART_ENABLE_IT(__HANDLE__, UART_IT_IDLE) //使能idle中断 获取 IDLE 中断标志位 __HAL_UA
[单片机]