0. 串口通讯

0. 串口通讯的数据传输方式:单工(单向传输数据),半双工(非同时双向传输),全双工(同时,双向传输)
1. 根据通信方式的不同又分为同步通讯和异步通讯。
同步通讯:所有设备都使用同一个时钟,称为同步时钟。在数据传送时,以若干个数据字符(称为数据块)为单位进行传输,每个数据块包括同步字符、数据块和校验字符CRC。
异步通信是指在串行通信中,接收设备和发送设备有各自的时钟信号,异步通信以字符为单位进行数据传送,不过通信中这些时钟频率必须保持一致。
 
2. 波特率和比特率
波特率是每秒传输的信号量(单位波特B),比特率是每秒传输的信号量(单位bps),在单片机中,这两个东西是一样的。
例如,通信双方每秒钟所传送数据的速率是240字符/秒,每一字符包含10位(1个起始位、8个数据位、1个停止位),则波特率为
240 ×10 =2400b/s=2400B
 
3. SCON(98H,可位寻址)
  
 
 
 
 
SM0,SM1是设定串口工作方式的,
SM2是设定在串口工作方式2,3时发送地址or数据。
REN是允许接受位,TB8是在工作方式2,3时的第九位可编程位的数值。
TI是发送标志位。
RI是接收标志位。
4. PCON(87H,不可位寻址)
  
    最高位是可以拿来调整波特率的,低位那些和电源管理相关。
 
80C51串口工作方式:(P3.0是位移输入RxD((低位在前),P3.1是位移输出TxD)
  工作方式0:(同步)8位数据为一帧,没有停止位和起始位,串行口发送的条件是TI = 0;接受条件是RI = 0且REN = 1(允许接受位)。
波特率固定fosc/12。RB8不用。
  工作方式1:(异步)(用于双机通讯)10位数据为一帧,最低位为起始位(0),最高位为停止位(1)。SM2=0,RB8接收的是停止位。实际上工作方式1在发送时是不断把数据右移到TxD端口(最高位已经置1),然后不断在左边补0,发完TI = 1;接受时恰好反过来,首先接受的时候会在接受端口补1,当一旦发现从1-0的跳变(收到起始位了),就开始接受数据,直到收到的停止位为1,则收到的是正确的信息。然后RI = 1。
 
  工作方式2,3:(异步)(多机通讯),11位数据一帧,除了起始位和停止位,还包括一个可编程位, 这个位由SCON的TB8提供,可以做奇偶校验,也可以与SM2结合进行多机通讯,发送时设定TB8,接受时为RB8。
  当SM2 = 0时,接受数据和地址;当SM2 = 1时,只接受地址(体现在接收到的信息的RB8位必须是1(表明是地址))
 
串口波特率计算:
方式0的波特率为晶振频率的1/12。
方式2的波特率为:波特率=(2SMOD/64)×fosc
方式1和方式3的波特率 =(2SMOD /32)×定时器的溢出率(一般选方式2作为方式一和方式三的时钟)
 
常用波特率(熟悉一下):
 
串口通讯编程例子(注意要自己手动清除TI和RI)
(发送)
MOV R0,#40H ;设定数据块地址指针初值
MOV R7,#10H ;设定数据块长度初值
ALOOP3:MOV SBUF,@R0 ;发送一个数据字节
JNB TI,$ ;等待发送完
CLR TI ;清发送标志位
INC R0 ;地址单元加1
DJNZ R7,ALOOP3 ;整个数据块是否发送完毕
(接收)
MOV R0,#40H ;设定数据块地址指针初值
MOV R7,#10H ;设定数据块长度初值
BLOOP3:JNZ RI,$ ;等待接收信息
CLR RI ;清接收标志位
MOX A,SBUF ;读取接收缓冲区内容
MOX @R0,A ;接收数据转储
INC R0 ;存储单元加1
DJNZ R7,BLOOP3 ;判断数据块是否接收完毕
  在由MCS-51组成的主从式多机通信系统中,主机只有一台,从机最多有256台。
 
1. I^2C总线

  编码内容包括:器件标识,引脚电平,方向位。
  两条线:SCL(时钟线),SDA(数据线),9位数据传输形式(最后一个应答位)。
 
  当SCL为高,SDA下降沿,表明启动。
  当SCL为高,SDA上升沿,表明停止。
 
 
 
 

单片微机原理P4:80C51串口与串行总线拓展的更多相关文章

  1. 单片微机原理P0:80C51结构原理

    本来我真的不想让51的东西出现在我的博客上的,因为51这种东西真的太low了,学了最多就所谓的垃圾科创利用一下,但是想一下这门课我也要考试,还是写一点东西顺便放博客上吧. 这一系列主要参考<单片 ...

  2. 单片微机原理P2:80C51外部中断与定时器系统

    0. 外部中断 书上的废话当然是很多的了,对于中断我想大家应该早就有一个很直观的认识,就是"设置断点,执行外部外码,然后返回断点"这样的三个过程.中断给系统提供了一个良好的响应模式 ...

  3. 单片微机原理P3:80C51外部拓展系统

    外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC.   0. IO接口电路概念与存储器拓展 1. 为什 ...

  4. 单片微机原理P1:80C51指令系统和编程方法

    0. 寻址方式 寻址方式在汇编中是很重要的,汇编所有的操作都是和和内存或者寄存器打交道的,在80C51里面一共7种寻址方式.   1. 立即寻址: 这个没什么好说的,就是往寄存器或者内存里面写立即数, ...

  5. I2c串行总线组成及其工作原理

    采用串行总线技术可以使系统的硬件设计大大简化,系统的体积减小,可靠性提高,同时系统更容易更改和扩充 常用的串行扩展总线有:I2c总线,单总线,SPI总线,以及microwire.Plus等等 I2c总 ...

  6. IIC串行总线的组成及其工作原理

    ------------------最近项目上用到了一款美信的DS1308RTC芯片,由于是挂在了Zynq的PS MIO上,需要软件人员协助才能测试:觉得太麻烦了,想通过飞线,然后在Vivado中调用 ...

  7. html基本标签表单实现交互原理,单选框,复选框,下拉框介绍

    表单是什么?表单是前端和服务器做交互的一种机制,表单收集用户输入信息,之后发送或者提交给服务器.用户在输入的信息称之为内容,内容的文本分为普通和密码型,用户通过单选框.复选框.下拉框(也就是下拉菜单) ...

  8. 80x86/Pentium微机原理及接口技术-微处理器-学习笔记

    80x86/  Pentium微机原理及接口技术 1.    计算机基础... 1 1.1常用术语... 1 1.2计算机中数与编码的表示方法... 1 1.2.1进制表示及进制转换... 1 1.2 ...

  9. 微机原理基础(四)—— MSC51

    一.MCS51基本组成(STC89C52) CPU(8051CPU) + 存储器(4KB ROM/256B RAM)+外设(4组IO口,两个定时器,一个串口) 1.组成结构简图             ...

随机推荐

  1. 转:Java生成图片验证码(有点仿QQ验证码的意思)

    http://blog.csdn.net/ruixue0117/article/details/22829557 java: VerifyCodeUtils.java package com.fro. ...

  2. 关于CCRect

    一直有一个误区,因为之前处理的公司引擎是屏幕坐标系 导致觉得CCRect的坐标起始值(x,y),习惯性的认为就是左上角的点. 但是,真正的x,y值,是跟x轴与y轴相对应的.

  3. MVC实现类似QQ的网页聊天功能-Ajax(上)

    说到QQ聊天,程序员首先想到的就是如何实现长连接,及时的接收并回馈信息.那么首先想到的就是Ajax,Ajax的运行机制是通过XMLHttpRequest向服务器发出异步请求,并接受数据,这样就可以实现 ...

  4. Java基础知识强化37:StringBuffer类之StringBuffer的构造方法

    1. StringBuffer的构造方法: (1)StringBuffer(): (2)StringBuffer(CharSequence seq): (3)StringBuffer(int capa ...

  5. 服务 远程服务 AIDL 进程间通讯 IPC 深化

    示例 aidl接口文件 package com.bqt.aidlservice.aidl; parcelable Person;  package com.bqt.aidlservice.aidl; ...

  6. 填坑 - 使用Entity Framework 6 + Sqlite进行DB first开发

    Sqlite团队也是渣啊,到第6代了还不支持Code First. 1.安装运行环境和组件 .安装SQLite的Visual Studio设计器支持 只有安装了它,在[新建ADO.NET实体数据模型] ...

  7. 武汉科技大学ACM :1010: 华科版C语言程序设计教程(第二版)例题7.8

    Problem Description 输入一个用年月日表示的日期,求该日期是该年的第几天.输入某年的第几天,输出这一天是该年的几月几号,茂茂解不出,需要你的帮助. Input 开始有个整数k,表示询 ...

  8. [转]Windows与Linux系统下的库文件介绍

    什么是库   库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系 ...

  9. angularjs——工具方法

    1.fromJson 把json字符串转成JSON对象 var jsonStr='[{"Name":"abc","age":12},{&qu ...

  10. 手把手教你js原生瀑布流效果实现

    手把手教你js原生瀑布流效果实现 什么是瀑布流效果 首先,让我们先看一段动画: 在动画中,我们不难发现,这个动画有以下特点: 1.所有的图片的宽度都是一样的 2.所有的图片的高度是不一样的 3.图片一 ...