- 1、本文档共63页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机原理及应用 (C语言版)第1章 MCS-51单片机串行口;第1章 MCS-51单片机串行口 ;本章要点
本章主要讲述MCS-51单片机串行口的结构、工作原理以及应用。
主要内容包括串行通信基本知识、MCS-51单片机串行口结构、串行口工作方式以及单片机与PC机通信的接口电路。;1.1 串行通信基本知识;1.1.1 数据通信 ;1.1.1 数据通信; 1.异步通信
异步通信中,传送的数据可以是一个字符代码或一个字节数据,数据以帧的形式一帧一帧传送。 ; 2.同步通信
在同步通信中,每一数据块发送开始时,先发送一个或两个同步字符,使发送与接收取得同步,然后再顺序发送数据。数据块的各个字符间取消起始位和停止位,所以通信速度得以提高 。;1.1.3 波特率;1.1.4 通信方向;1.1.4 通信方向;1.1.5 串行通信接口种类;1.2 串行口结构及控制;1.2.1 MCS-51串行口结构;1.2.2 与串行口有关的特殊功能寄存器;SM0和SM1(SCON.1、SCON.6):串行口工作方式选择位。 ;TB8(SCON.3):发送数据的第9位。
RB8(SCON.2):接收数据的第9位。
TI(SCON.1):发送中断标志。
RI(SCON.0):接收中断标志。; 2.电源控制寄存器PCON
电源控制寄存器PCON (地址为81H)中只有SMOD位与串行口工作有关。 ;1.2.3 波特率设计; 2.方式2的波特率
接收与发送的移位时钟由振荡频率fosc的第二节拍P2时钟(fosc/2)给出,所以,方式2波特率取决于PCON中SMOD位的值:当SMOD=0时,波特率为fosc的1/64;若SMOD=1,则波特率为fosc的1/32。即
方式2的波特率= 2SMOD×fosc/64; 3.方式1和方式3的波特率
(1)T1作波特率发生器
在最典型应用中,定时器T1选用定时器模式2,此时n=8,设定时器的初值为X:
于是, X=256 -; (2)T2作波特率发生器
在增强型单片机中,还可以使用T2作为波特率发生器。当寄存器T2CON的位TCLK=1和(或)RCLK=1时,允许串行口从T2获得发送和(或)接收的波特率。
串行口方式1、3的波特率=T2溢出率/16
定时器2作波特率发生器时,计数在每个状态周期递增。这样:
方式1、3的波特率=; 主要内容 1.3.1 串行口方式0 1.3.2 串行口方式1 1.3.3 串行口方式2和方式3;1.3.1 串行口方式0;;1.3.2 串行口方式1;1.3.3 串行口方式2和方式3;1.4 串行口应用举例;1.4.1 同步方式应用;; 解:数据的输入输出通过RXD接收和发送,移位时钟通过TXD送出,14HC164用于串/并转换,14HC165用于并/串转换。
C语言程序清单:
#includereg52.h
sbit P1_0=P1^0;
sbit P1_1=P1^1;
unsigned char data1;
void main()
{
SCON=0x10; //串行口方式0,允许接收
ES=1;
EA=1; //允许串行口中断; P1_0=0; //关闭并行输出
P1_1=1; //并行置入数据
P1_1=0; //开始串行移位
SBUF=0; //送入串行数据
while(1); //等待中断
}
void s_srv() interrupt 4 //中断服务程序
{
if(TI) //发送中断
{ TI=0;
P1_0=1; //打开并行输出
}; else //接收中断
{ RI=0;
data1=SBUF; //读取接收的数据
P1_0=0; //关闭并行输出
SBUF=~data1; //送入串行数据
P1_1=1; //为接收下一次
P1_1=0; //数据做准备
}
}
汇编语言程序清单:
ORG 0000H
SJMP MAIN
ORG 23H
SJMP S_SRV ;串行口中断服务程序;MAIN:
MOV SCON,#10H ;串行口方式0初始化
SETB ES
SETB EA
MOV A,#0
CLR P1.0 ;关闭并行输出
MOV SBUF,A ;开始串行输出
SETB P1.1
CLR P1.1
SJMP $ ;等待中断;
文档评论(0)