傻大方


首页 > 知识库 > >

串行口通信技术( 二 )


按关键词阅读: 技术 通信 串行口


在HMOS的AT89C51单片机中 , PCON除了最高位以外其它位都是虚设的 。
PCON (87H),与串行通信 。

7、有关的只有SMOD位 。
SMOD为波特率选择位 。
在方式1、2和3时 , 串行通信的波特率与SMOD有关 。
当SMOD=1时 , 通信波特率乘2 , 当SMOD=0时 , 波特率不变 。
,三、MCS-51串行口的工作方式,方式0 在方式0下 , 串行口作同步移位寄存器使用 , 其波特率固定为fosc/12 。
串行数据从RXD(P3.0)端输入或输出,同步移位脉冲由TXD(P3.1)送出 。
这种方式通常用于扩展I/O口 。
,MCS-51串行口的工作方式,方式1,发送时 , 当数据写入发送缓冲器SBUF后 , 启动发送器发送 , 数据从TXD输出 。
当发送完一帧数据后 , 置中断标志TI为1 。
方式1下的波特率取决于定时器1的溢出率和PCON中的SMO 。

8、D位 。
接收时 , REN置1 , 允许接收 , 串行口采样RXD , 当采样由1到0跳变时 , 确认是起始位“0” , 开始接收一帧数据 。
当RI=0 , 且停止位为1或SM2=0时 , 停止位进入RB8位 , 同时置中断标志RI;否则信息将丢失 。
所以 , 采用方式1接收时 , 应先用软件清除RI或SM2标志 。
,MCS-51串行口的工作方式,方式2,发送时 , 先根据通信协议由软件设置TB8 , 然后将要发送的数据写入SBUF , 启动发送 。
写SBUF的语句 , 除了将8位数据送入SBUF外 , 同时还将TB8装入发送移位寄存器的第9位 , 并通知发送控制器进行一次发送 , 一帧信息即从TXD发送 。
在送完一帧信息后 , TI被自动置1 , 在发送下一帧信息之前 , TI必须在 。

9、中断服务程序或查询程序中清0 。
,MCS-51串行口的工作方式,方式2,当REN=1时 , 允许串行口接收数据 。
当接收器采样到RXD端的负跳变 , 并判断起始位有效后 , 数据由RXD端输入 , 开始接收一帧信息 。
当接收器接收到第9位数据后 , 若同时满足以下两个条件:RI=0和SM2=0或接收到的第9位数据为1 , 则接收数据有效 , 将8位数据送入SBUF , 第9位送入RB8 , 并置RI=1 。
若不满足上述两个条件 , 则信息丢失 。
,MCS-51串行口的工作方式,方式3,方式3为波特率可变的11位UART通信方式 , 除了波特率以外 , 方式3和方式2完全相同 。
,四、MCS-51串行口的波特率,方式0和方式2,在方式0中 , 波特率为时钟频 。

10、率的1/12 , 即fosc/12 , 固定不变 。
在方式2中 , 波特率取决于PCON中的SMOD值 , 当SMOD=0时 , 波特率为fosc/64;当SMOD=1时 , 波特率为fosc/32 。
即波特率=。
, 。
,四、MCS-51串行口的波特率,方式1和方式3,在方式1和方式3下 , 波特率由定时器T1的溢出率和SMOD共同决定 , 即: 方式1和方式3的波特率= 定时器1溢出率 其中 , 定时器1的溢出率取决于单片机定时器1的计数速率和定时器的预置值 。
计数速率与TMOD寄存器中的C/位有关 , 当C/=0时 , 计数速率为fosc/12 , 当C/=1时 , 计数速率为外部输入时钟频率 。
, 。
,四、MCS-51串行口的波特率,方式1和方式 。

11、3,实际上 , 当定时器T1做波特率发生器使用时 , 通常是工作在模式2下 , 即作为一个自动重装载的8位定时器 , 此时TL1作计数用 , 自动重装载的值在TH1内 。
设计数的预置值(初始值)为X , 那么每过256-X个机器周期 , 定时器溢出一次 。
为了避免溢出而产生不必要的中断 , 此时应禁止T1中断 。
溢出周期为12(256-X)/fosc.溢出率为溢出周期的倒数 。
, 。
,7.3 MCS-51单片机双机通信, 。
,7.3 MCS-51单片机双机通信, 。
,一、查询方式 1) 甲机发送 编程将甲机片外1000H101FH单元的数据块从串行口输出 。
定义方式2发送 , TB8为奇偶校验位 。
发送波特率375 kb/s , 晶振为12 MHz, 。

12、 SMOD=1 。
,2) 乙机接收 编程使乙机接收甲机发送过来的数据块 , 并存入片内50H6FH单元 。
接收过程要求判断RB8 , 若出错置F0标志为1 , 正确则置F0标志为0 , 然后返回 。
在进行双机通信时 , 两机应采用相同的工作方式和波特率 。
,任务十三 单片机双机通信,/程序:ex7_1.c /功能:甲机发送数据程序 #include void main()/主函数 unsigned char i;
unsigned char send=0 x01,0 x03,0 x04,0 x06,0 x07,0 x05;
/定义要发送的数据 , 为了简化显示 , 发送数据在09之间 TMOD=0 x20;
/定时器1工作于方式 。

13、2 TL1=0 xf4;
/波特率为2400b/s TH1=0 xf4;
TR1=1;
SCON=0 x40;
/定义串行口工作于方式1 for (i=0;
i6;
i+) SBUF=sendi;
/ 发送第i个数据 while(TI=0);


来源:(未知)

【学习资料】网址:/a/2021/0328/0021798143.html

标题:串行口通信技术( 二 )


上一篇:中学生|中学生心理发展的特点与

下一篇:马克思主义哲学基本原理|《马克思主义哲学基本原理》知识结构图