版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第8章 MCS-51单片机的串行接口,学习提要 介绍串行通信的基本知识; 了解异步通信的工作原理; 掌握串口通信的模式(工作方式); 掌握串口波特率的设置(重点); 实例介绍( 或演示)。,81 通信的基本知识,数据通信有两种方式:并行通信和串行通信。,8.1.1 异步通信和同步通信,一、异步通信,二、同步通信,82 MCS-51的串行接口,51单片机的串口是全双工的工作模式,对其读写可采用中断方式也可采用查询方式。 在使用时,只要设置相关寄存器即可: 第一步设置寄存器: IE(中断)、IP(优先)、TMOD(模式) 、PCON、 SCON(方式) 第二步设置:波特率 第三步读写:SBUF,8
2、.2.1 串口工作方式的设置,SCON(98H) D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI 9F 9E 9D 9C 9B 9A 99 98 各位的定义为:(复位后各位为0) RI:读标志(当有数时,由硬件置1) TI:写标志(当写数后,由硬件置1) 对于RI和TI的置1,也是中断的标志,但CPU响应后,不会清零。必须由软件清零!,SM0,SM1 串口方式控制位 SM0 SM1 工作方式 功能 波特率 0 0 方式0 移位I/O fosc/12 0 1 方式1 10位UART 可变 1 0 方式2 11位UART fosc/32
3、或fosc/64 1 1 方式3 11位UART 可变 RB8: 在方式2和方式3中,接收的第9位数据。 TB8: 在方式2和方式3中,发送的第9位数据。 可作为奇偶校验位。 SM2: 用于多机通信(方式2和方式3)的控制位,仅用于接收。 当SM2=1,在RB8=1时,才能接收到数据。 一般使用时,SM2=0。 REN: REN=1,允许接收, REN=0,禁止接收。,8.2.2 串口工作方式时序说明 一、方式0(8位数据I/O),二、方式1(10位数据),三、方式2、3(11位数据),说明: 在方式0中,8位数据从RXD引脚发送 或接收(D0先传);TXD引脚只输出移位 (同步)时钟(频率=
4、fosc/12)。 2. 在方式1中, RXD脚为收,TXD脚为发, 数据是按10位UART传送的 (1个起始0, 8个数据位,1个停止1); 3. 在方式2,3中, RXD脚为收,TXD脚为发, 数据是按11位UART传送的 (1个起始0, 8个数据位+第9位,1个停止1);,8.2.3 波特率的设置,一、方式0的波特率 方式0的率等于单片机晶振频率的1/12,即每个机器周期接收 或发送一位数据。 二、方式2的波特率,三、方式1和方式3的波特率 在方式1、3中,波特率可由T1定时器设置这种方法用的最多, 用到寄存器有:TMOD:T1设成方式2,自动重装式,0010,xxxxB; PCON:用
5、到了SMOD位( D7位) SMOD=1时加倍; SMOD=0时不加倍。计算公式:,常见的T1方式2(TH1,TL1)初始值: fosc SMOD T1时常数 波特率 11.0592M 0 F4 2.4k 11.0592M 0 FA 4.8k 11.0592M 0 FD 9.6k 11.0592M 1 FD 19.2k 22.1184M 0 F4 4.8k 22.1184M 0 FA 9.6k 22.1184M 0 FD 19.2k 22.1184M 1 FD 38.4k 12.000M 1 FF 62.5K,8.2.4 其他寄存器的说明,1. 如果在中断通信:要设置IE中的EA=1的同时,E
6、S=1; 2. 根据实际情况,设优先级IP的各位; 3. 在位和10位通信中,读写数据均在SBUF中; 4. 在11位通信中,位数据(读写)在SBUF中,第位在 TB8或RB8中; 5. 在有奇偶校验的通信中(11位通信),PSW中的位送TB8; 例:发送:88H ,在查询方式时: MOV A,#88H ;会影响PSW的位 MOV TB8,P ;送奇偶位 MOV SBUF,A W1: JBC TI, END_SD ;等TI=1 表示发完 SJMP W1;等待 END_SD: .,8.3 串口多机通信(参考教材P200内容),串行口以方式2或方式3接收时,若SM2为“1”,时可实现多机通信。,8
7、.4 串口的电平转换,单片机与PC机通信时,电平不是TTL电平,而往往是232电平。 一般通过专用芯片转换。,8.5 串口通信举例,例一, 采用查询的方法实现PC机与单片机的通信。已知, 晶振频率为22.1184M,波特率为9.6k。实现:单 片机发送:0到9的数字(ASCII),PC机接收该数, 并显示。(用汇编编程) chsi_ck0: ;初始化串口 mov TMOD,#21H ;0010,0001B T1:定时,方式2 mov SCON,#50H ;0101,0000B 8UART 方式 mov TH1,#0FAH ;自动重装 mov TL1,#0FAH ;定时常数 mov PCON,#
8、00H ;SMOD=0不加倍 setb TR1 ;开T1 ret,set_numb: ;发送子程序 mov r6,#10 ;设个数(共10个) mov b,#00h ;从0开始 con_sed: mov a,b ;准备 orl a,#30h ;变成ASCII mov SBUF,a ;发送一个8位数据 went_s: JBC TI,is_snumb;TI=1,表示发完 sjmp went_s ;TI=0,等待 is_snumb: lcall delay_0 ;等待一会 inc b ;数据增1 djnz r6,con_sed ;判断发完否? ret,main: ;主程序 mov sp,#80h ;
9、堆栈 mov ie,#00h ;关中断 mov ip,#00h ; lcall chsi_ck0 ;初始化串口 re_sed: lcall set_numb ;发送数据 r_k1: jnb k1,re_sed ;查键k1=0在发送 sjmp r_k1 ;未按键等待 end,例二, 采用查询的方法实现PC机与单片机的通信。已知, 晶振频率为22.1184M,波特率为9.6k。实现:PC 发送数据, 单片机接收该数(显示)并回送该数到PC。 (用汇编编程) red_numb: ;从串口读数 jb RI,is_numb ; sjmp red_numb is_numb: clr RI ;软件清标志 m
10、ov a,SBUF ;读数据 mov b,a ;存储在B中 ret,sed_numb: ;发送数据到PC mov a,b mov SBUF,a ;发送数据 w_snub: jbc TI,is_end_n ;查TI=1? sjmp w_snub ;TI=0 等待 is_end_n: ret,main: ;主程序入口 mov sp,#90h ;设堆栈 mov ie,#00h ;关中断 mov ip,#00h lcall chsi_ck0 ;初始化串口 con_red: lcall red_numb ;从串口读数 lcall disp_r_numb ;用数码管显示 mov led,b lcall d
11、isp_led ;用灯显示数据 lcall sed_numb ;发送数据到PC lcall sprak_on ;发声 sjmp con_red ;继续发送数据 end,例三, 采用中断的方法实现PC机与单片机的通信。已知, 晶振频率为22.1184M,波特率为9.6k。实现:PC 发送数据, 单片机接收该数(显示)并回送该数到PC。 (用汇编编写) org 0000h ;复位入口 ljmp main ;跳到主程序 org 0023H ljmp to_sbuf ;跳到串口 org 0100h to_sbuf: ;串口中断程序 clr es ;关中断 jb RI, to_r_nub ;读数据 jb
12、 TI, to_w_nub ;发送数据 reti,to_r_nub: jb RI,is_num ;RI=1时,读数 sjmp red_numb ;RI=0时,等待 is_num: clr RI ;软件清标志 mov a,SBUF ;读数据 mov b,a ;存储在B中 ; lcall disp_r_numb ;可调用显示子程序 lcall sed_numb ;发送数据到PC lcall sprak_on ;发声 setb es reti ;硬件返回(清标志) to_w_nub: setb es reti,main: ;主程序入口 mov sp,#90h ;设堆栈 mov ie,#00h ;关中
13、断 mov ip,#00h lcall sprak_on ;发声 mov b,#00h lcall disp_r_numb ;显示 lcall chsi_ck0 ;初始化串口 setb es ;开串口中断 setb ea ;开总中断 sjmp $ ;等待 end,例四【用C编写的通信程序】 设晶振频率为:22.1184MHz,波特率设为9.6K,实现PC及与 单片机互通信息(如:单片机与PC机互发送0 x55667788)。 /*-串口初始化-*/ void out_sbuf(void) /串口初始化 SCON=0 x50; TMOD |=0 x21; /9.6K波特率 PCON=0 x00; TL1=0 xfa; TH1=0 xfa; TR1=1; ,/*-用串口发单个字符-*/ void sendchar(unsigned char ch) while(!TI); TI = 0; SBUF=ch; TI=1; /*-用串口读单个字符-*/ unsigned char gethex (void) char c; while (!RI); c = SBUF; RI = 0; return (c); ,/串口练习部分 void read_PC(void) /0 x0a结束 unsigned char idata i,k; for (i=0;i0 x20;i+) k=gethex
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 圆锥曲线热点问题(二)位置关系类+课件-2026届高三数学二轮专题复习
- 医院科室主任考试题库及答案
- 2026五年级数学下册 观察物体学习方法
- 智能物业设备监控运维管理平台解决方案
- 英语单词听力试卷及答案
- 新编应用写作试题及答案
- 行车工初级试题及答案
- 2025 高中信息技术数据与计算在通信网络课件
- 车辆运输安全奖惩制度
- 太湖游客中心奖惩制度
- 事故后如何进行合理赔偿谈判
- 生物批签发管理办法
- 《酒店法律与法规实务》全套教学课件
- 项目经理负责制与项目管理实施办法
- 新媒体技术应用 课件全套 曾琦 单元1-7 认知新媒体岗位及新媒体工具-拓展 AIGC概述 生成式人工智能
- 内蒙古机电职业技术学院单独招生(机电类)考试题(附答案)
- 城市公园景观设计教学课件
- 2025年哈尔滨铁道职业技术学院单招职业技能测试题库及答案一套
- 2024年常州机电职业技术学院高职单招语文历年参考题库含答案解析
- 计算机操作员国家职业标准
- 加强锻炼预防疾病
评论
0/150
提交评论