版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第5章章 单片机串行口的单片机串行口的C51编程编程5.1 串行口基础知识串行口基础知识 5.1.1 串行口的结构串行口的结构 5.1.2 有关的寄存器有关的寄存器 5.1.3 串行口的工作方式串行口的工作方式5. 2 不同工作方式下的不同工作方式下的C51编程编程 5.2.1 工作方式工作方式0的的C51程序设计程序设计 5.2.2 工作方式工作方式1的的C51程序设计程序设计 5.2.3 工作方式工作方式2的的C51程序设计程序设计 5.2.4 工作方式工作方式3的的C51程序设计程序设计5.3 串行口的串行口的C51编程应用示例编程应用示例5.1 串行口基础知识串行口基础知识 5.1.
2、1 串行口的结构串行口的结构 5.1.2 有关的寄存器有关的寄存器 5.1.3 串行口的工作方式串行口的工作方式5.1.1 串行口的结构串行口的结构5.1.2 有关的寄存器有关的寄存器 1串行控制寄存器串行控制寄存器SCON 2电源控制寄存器电源控制寄存器PCON5.1.3 串行口的工作方式串行口的工作方式 1工作方式工作方式0 串行口工作方式串行口工作方式0为为同步移位寄存器输入同步移位寄存器输入/输出方式输出方式,可外接移位寄存器,以扩展,可外接移位寄存器,以扩展I/O口。口。 方式方式0可分为方式可分为方式0输入和方式输入和方式0输出两种方式。输出两种方式。 但应注意:在这种方式下,不管
3、输出还但应注意:在这种方式下,不管输出还是输入,通信数据总是从是输入,通信数据总是从P3.0(RXD)引脚)引脚输出或输入,而输出或输入,而P3.1(TXD)引脚总是用于)引脚总是用于输出移位脉冲,每一移位脉冲将使输出移位脉冲,每一移位脉冲将使RXD端输端输出或者输入出或者输入1位二进制码。位二进制码。(1)方式)方式0输出输出 使用方式0实现数据的移位输出时,实际上是把串行口变成并行口使用。 (2)方式)方式0输入输入5. 2 不同工作方式下的不同工作方式下的C51编程编程 5.2.1 工作方式工作方式0的的C51程序设计程序设计 5.2.2 工作方式工作方式1的的C51程序设计程序设计 5
4、.2.3 工作方式工作方式2的的C51程序设计程序设计 5.2.4 工作方式工作方式3的的C51程序设计程序设计5.2.1 工作方式工作方式0的的C51程序设计程序设计 方式方式0是同步移位寄存器输入是同步移位寄存器输入/输出。输出。 格式:格式:1、方式、方式0的波特率的波特率 在串口方式在串口方式0下,每个机器周期产生一个下,每个机器周期产生一个移位时钟,对应着一个比特数据的发送和接移位时钟,对应着一个比特数据的发送和接收。因此,此时波特率固定为单片机振荡频收。因此,此时波特率固定为单片机振荡频率的率的1/12,其波特率计算公式如下:,其波特率计算公式如下: 串口方式串口方式0波特率波特率
5、=fosc/12 在串口方式在串口方式0下,波特率不受波特率倍增下,波特率不受波特率倍增SMOD的影响。因此,在的影响。因此,在C51程序设计时只要程序设计时只要指定工作方式指定工作方式0便完成串口速率的设置,而无便完成串口速率的设置,而无需再设置波特率。需再设置波特率。2方式方式0的数据发送及的数据发送及C51程序设计程序设计 对于方式对于方式0的数据发送,单片机的的数据发送,单片机的TXD引脚都引脚都用于发送移位脉冲,而用于发送移位脉冲,而8位串行数据是通过单位串行数据是通过单片机的片机的RXD引脚来输出。引脚来输出。 方式方式0的数据发送流程:的数据发送流程: 对寄存器对寄存器SCON进
6、行初始化,即工作方式的进行初始化,即工作方式的设置。由于使用串行口方式设置。由于使用串行口方式0,只需将,只需将00H送送入入SCON即可。即可。 置串行接口控制寄存器置串行接口控制寄存器SCON的的TI=0,启,启动串行口发送。动串行口发送。 执行写发送缓冲器指令执行写发送缓冲器指令 SBUF=i; 单片机的单片机的CPU执行完这条指令后,在执行完这条指令后,在TXD引脚发送同步移位脉冲,引脚发送同步移位脉冲,8位数据位数据便从便从RXD端由低位到高位逐个发送出去。端由低位到高位逐个发送出去。当当8位数据发送完毕的时候,单片机硬位数据发送完毕的时候,单片机硬件自动置中断标志件自动置中断标志T
7、I=1,请求中断,表,请求中断,表示发送缓冲器已空。示发送缓冲器已空。 准备下一次数据发送。标志位准备下一次数据发送。标志位TI不会自动不会自动清零,当要发送下一组数据时,必须在软件清零,当要发送下一组数据时,必须在软件中置中置TI=0,然后才能发送下一组数据。串行,然后才能发送下一组数据。串行口方式口方式0的数据输出可以采用查询方式,也可的数据输出可以采用查询方式,也可以采用中断方式。以采用中断方式。 在查询方式下,通过在查询方式下,通过while语句查询语句查询TI的值,的值,如果如果TI=1则结束查询,可以发送下一组数据;则结束查询,可以发送下一组数据;如果如果TI=0,则继续查询。,则
8、继续查询。 在中断方式下,在在中断方式下,在TI置位好产生中断申请,置位好产生中断申请,在中断服务程序中发送下一组数据。此时,在中断服务程序中发送下一组数据。此时,需要开启相应的中断请求。需要开启相应的中断请求。 【例例5-1】方式方式0数据发送的数据发送的C51程序程序设计示例设计示例(1)采用查询方式的采用查询方式的 #include void main( ) unsigned char i=0 x55; SCON=0 x00;/初始化串口方式初始化串口方式0 SBUF=i;/输出数据到输出数据到SBUF,启动串行输出,启动串行输出 while(TI)/等待等待TI=1 TI=0; whi
9、le(1); (2)采用中断方式的采用中断方式的 #include void SISR(void) interrupt 4 TI=0; void main( ) unsigned char i=0 x55; SCON=0 x00;/初始化串口方式初始化串口方式0 EA=1; ES=1; /允许串行中断允许串行中断 SBUF=i; /输出数据到输出数据到SBUF,启动串行输出,启动串行输出 while(1) /等待等待TI=1 ; 3方式方式0的数据接收及的数据接收及C51程序设计程序设计 对于方式0的数据接收,单片机的TXD引脚都用于发送同步移位脉冲,而8位串行数据是通过RXD引脚来输入。 在
10、方式0下,C51程序可以按照如下的流程来进行数据的接收: 首先,需要对寄存器SCON进行初始化,即工作方式的设置。由于这里使用的是串行口的方式0,允许接收,因此需将10H送入SCON,即置REN=1。另外,在方式0工作时,寄存器SCON中的SM2必须置0,而RB8位和TB8位都不起作用,一般置0即可。 此时,在TXD端发送同步移位脉冲,在同步脉冲为低电平的时候,8位数据从RXD引脚由低位到高位逐位接收。 当8位数据接收完毕的时候,硬件自动置RI=1,请求中断,表示接收数据已装人接收缓冲器,可以由CPU读取,示例如下: i=SBUF;/读取数据到变量i 准备下一次接收数据。由于准备下一次接收数据
11、。由于RI不会自动清不会自动清零,当需要接收下一组数据的时候,必须在零,当需要接收下一组数据的时候,必须在软件中置软件中置RI=0,然后才可以接收下一组数据。,然后才可以接收下一组数据。此时,同样可以采用查询和中断两种方式,此时,同样可以采用查询和中断两种方式,分别介绍如下。分别介绍如下。 在查询方式中,使用在查询方式中,使用while语句查询语句查询RI的值,的值,如果如果RI=1则结束查询,可以接收下一组数据;则结束查询,可以接收下一组数据;如果如果RI-0,则继续查询。,则继续查询。 在中断方式中,在在中断方式中,在RI置位后产生中断申请,置位后产生中断申请,在中断服务程序中接收下一组数
12、据。此时,在中断服务程序中接收下一组数据。此时,需要开启相应的中断请求。需要开启相应的中断请求。 【例例5-2】方式方式0数据接收的数据接收的C51程序程序设计设计(1)采用查询方式采用查询方式#includesbit S_L=P30;void main( ) unsigned char i; SCON=0 x10;/初始化串口方式初始化串口方式0 while(1) S_L =0; /并行数据送入并行数据送入74LS165 S_L =1; while(RI) /查询查询RI=1 RI=0; i=SBUF; P1=i; (2)采用中断方式采用中断方式#includeint i;void SISR
13、(void) interrupt 4 RI=0; i=SBUF;void main( ) SCON=0 x10;/初始化串口方式初始化串口方式0 EA=1; ES=1;/开启串行中断开启串行中断 while(1) ; 5.3 串行口的串行口的C51编程应用示例编程应用示例 【例例5-9】串行口自发自收串行口自发自收 #include #define uchar unsigned char #define uint unsigned int void main( ) uchar i=0 x55; uint j=0; TMOD=0X20;/设定定时器1模式2 TL1=TH1=0XF4; PCON=
14、0X00; SCON=0X50; TR1=1; while(1) SBUF=i;/发送数据 do( )while(!RI)/相当于while(RI=1) RI=0; TI=0; i=SBUF;/读取接收数据 P1=i; i=i;/将发送数据取反 for(j=0;j12500;j+); 【例例5-10】两个单片机串行通信两个单片机串行通信1单片机单片机1的的C51源程序代码:源程序代码:#include#define uint unsigned int#define uchar unsigned charvoid main( ) uchar i; TMOD=0 x20; TH1=TL1=0 xff; SCON=0 x50; PCON=0 x80; TR1=1; P1=0 xff; while(1) P1=0 xff; i=P1; SBUF=i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园防欺凌主题班会模板
- 2026年教师资格证《综合素质》培训试卷及答案解析
- 2026农投招聘面试题目及答案
- 2026品牌总监的面试题及答案
- 2026青春责任面试题目及答案
- 2026全职保姆面试题库及答案
- 2026融资部门面试题目及答案
- 2026设计院裁员面试题及答案
- 2026生物检测的面试题及答案
- 妊娠期糖尿病的全程血糖管理
- 心脑血管药物耐药机制解析-洞察分析
- 高速公路三大系统机电工程施工组织设计方案
- 装饰公司员工手册1
- 中国省市县行政区划
- 老年服务沟通技巧教学大纲
- 2020电网检修工程预算定额第一册电气工程
- 动车组回送管理办法
- 中药红花的颜色变化
- GB/T 7705-2008平版装潢印刷品
- GA/T 944-2011道路交通事故机动车驾驶人识别调查取证规范
- 评标专家题库(500题)
评论
0/150
提交评论