《基础串行接口》PPT课件.ppt

上传人:wuy****n92 文档编号:80461848 上传时间:2023-03-23 格式:PPT 页数:29 大小:470.50KB
返回 下载 相关 举报
《基础串行接口》PPT课件.ppt_第1页
第1页 / 共29页
《基础串行接口》PPT课件.ppt_第2页
第2页 / 共29页
点击查看更多>>
资源描述

《《基础串行接口》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《基础串行接口》PPT课件.ppt(29页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、3.4 MCS-51单片机串行接口单片机串行接口3.4.1 单片机的异步通信单片机的异步通信一、异步通信示意图一、异步通信示意图1二、异步通信数据格式二、异步通信数据格式23.4.2 MCS-51的串行接口的串行接口一、一、51串口内部结构串口内部结构 51单片机的串口是标准的全双工异步通信接口。单片机的串口是标准的全双工异步通信接口。3 对串口对串口的使用可采用的使用可采用中断方式中断方式也也可采用可采用查询方式。查询方式。在使用时,只要设置相关寄存器在使用时,只要设置相关寄存器就可以很好的操作了:就可以很好的操作了:第一步设置相关寄存器:第一步设置相关寄存器:IE(中断)、中断)、IP(优

2、先优先)、TMOD(模式模式)、PCON、SCON(方式);方式);第二步设置:波特率第二步设置:波特率 第三步读写:第三步读写:SBUF (一)(一)串口的使用方法串口的使用方法4(二)串行接口的控制(二)串行接口的控制各位各位的定义为:(复位后各位为的定义为:(复位后各位为0)RI:读标志:读标志(当有数时,由硬件置当有数时,由硬件置1)TI:写标志:写标志(当写数后,由硬件置当写数后,由硬件置1)对于对于RI和和TI的置的置1,也是中断的标志,但,也是中断的标志,但CPU响应后,不会清响应后,不会清零。必须由软件清零!零。必须由软件清零!1)串行口控制寄存器)串行口控制寄存器SCON5R

3、B8:在方式在方式2和方式和方式3中,接收的第中,接收的第9位数据。位数据。TB8:在方式在方式2和方式和方式3中,发送的第中,发送的第9位数据。位数据。可作为奇偶校验位。可作为奇偶校验位。SM2:用于多机通信用于多机通信(方式方式2和方式和方式3)的控制位,仅用于接收。的控制位,仅用于接收。当当SM2=1,在,在RB8=1时,才能接收到数据。时,才能接收到数据。一般使用时,一般使用时,SM2=0。REN:REN=1,允许接收,允许接收,REN=0,禁止接收。,禁止接收。6二、串行口的二、串行口的4种工作模式种工作模式1)方式方式0(8位数据位数据I/O)72)方式方式1(10位数据)位数据)

4、83)方式方式2、3(11位数据)位数据)9 说明:在方式在方式0中,中,8位数据从位数据从RXD引脚发送引脚发送,或接收或接收(D0先传先传);TXD引脚只输出移位引脚只输出移位 (同步同步)时钟时钟(频率频率=fosc/12)。在方式在方式1中中,RXD脚为收,脚为收,TXD脚为发,脚为发,数据是按数据是按10位位UART传送的。传送的。(1个起始个起始0,8个数据位个数据位,1个停止个停止1);在方式在方式2,3中中,RXD脚为收,脚为收,TXD脚为发,脚为发,数据是按数据是按11位位UART传送的。传送的。(1个起始个起始0,8个数据位个数据位+第第9位位,1个停止个停止1)。10三、

5、波特率的设置三、波特率的设置1)方式)方式0的波特率的波特率 方式方式0的率等于单片机晶振频率的的率等于单片机晶振频率的1/12,即每个机器周期接收,即每个机器周期接收或发送一位数据。或发送一位数据。2)方式)方式2的波特率的波特率113)方式)方式1和方式和方式3的波特率的波特率在在方式方式1、3中,波特率可由中,波特率可由T1定时器设置这种方法用的最多,定时器设置这种方法用的最多,用到寄存器有:用到寄存器有:TMOD:T1设成方式设成方式2,自动重装,自动重装,0010,xxxxB或或0 x2x;PCON:用到了用到了SMOD位(位(D7位)位)SMOD=1时加倍;时加倍;SMOD=0时不

6、加倍。计算公式:时不加倍。计算公式:12常用的常用的TH1,TL1的设置的设置134)其他注意事项)其他注意事项如果在中断通信:要设置如果在中断通信:要设置IE中的中的EA=1的同时,的同时,ES=1;根据实际情况,设优先级根据实际情况,设优先级IP的各位;的各位;在位和在位和10位通信中,读写数据均在位通信中,读写数据均在SBUF中;中;在在11位通信中,位数据位通信中,位数据(读写读写)在在SBUF中中,第位在第位在 TB8或或RB8中中;在有奇偶校验的通信中在有奇偶校验的通信中(11位通信位通信),PSW中的位送中的位送TB8;例:发送:例:发送:88H,在查询方式时:,在查询方式时:M

7、OV A,#88H;会影响会影响PSW的位的位 MOV TB8,P ;送奇偶位送奇偶位 MOV SBUF,A W1:JBC TI,END_SD ;等等TI=1 表示发完表示发完 SJMP W1;等待等待 END_SD:.14四、串口多机通信四、串口多机通信 串行串行口以方式口以方式2或方式或方式3接收时,若接收时,若SM2为为“1”,时可实现多机通信。,时可实现多机通信。153.4.3 通信电平的转换通信电平的转换单片机与单片机与PC机通信时,电平不是机通信时,电平不是TTL电平,而往往是电平,而往往是232电平。电平。一般通过专用芯片转换。一般通过专用芯片转换。16串口通信举例串口通信举例例

8、一例一,采用查询的方法实现采用查询的方法实现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 ;定时常数定时常数 m

9、ov PCON,#00H ;SMOD=0不加倍不加倍 setb TR1 ;开开T1 ret 17set_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

10、,con_sed;判断发完否判断发完否?ret 18main:;主程序主程序 mov sp,#80h ;堆栈堆栈 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 ;未按键等待未按键等待 end19 例二例二,采用查询的方法实现PC机与单片机的通信。已知,晶振频率为22.1184M,波特率为9.6k。实现:PC 发送数据,单片机接收该数(显示)并回送该数到PC。(用汇编编程)r

11、ed_numb:;从串口读数 jb RI,is_numb;sjmp red_numbis_numb:clr RI ;软件清标志 mov a,SBUF ;读数据 mov b,a ;存储在B中 ret20sed_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:ret21main:;主程序入口 mov sp,#90h ;设堆栈 mov ie,#00h ;关中断 mov ip,#00h lcall chsi_ck0 ;初始化串口con_red:lcall re

12、d_numb ;从串口读数 lcall disp_r_numb ;用数码管显示 mov led,b lcall disp_led ;用灯显示数据 lcall sed_numb ;发送数据到PC lcall sprak_on ;发声 sjmp con_red ;继续发送数据 end 22例三例三,采用中断的方法实现采用中断的方法实现PC机与单片机的通信。已知,机与单片机的通信。已知,晶振频率为晶振频率为22.1184M,波特率为,波特率为9.6k。实现:。实现:PC 发送数据发送数据,单片机接收该数单片机接收该数(显示显示)并回送该数到并回送该数到PC。(用汇编编写用汇编编写)org 0000h

13、 ;复位入口复位入口 ljmp main ;跳到主程序跳到主程序 org 0023H ljmp to_sbuf ;跳到串口跳到串口 org 0100hto_sbuf:;串口中断程序串口中断程序 clr es ;关中断关中断 jb RI,to_r_nub ;读数据读数据 jb TI,to_w_nub;发送数据发送数据 reti23to_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;可调用显示子程序

14、 lcall sed_numb ;发送数据到PC lcall sprak_on ;发声 setb es reti ;硬件返回(清标志)to_w_nub:setb es reti 24main:;主程序入口 mov sp,#90h ;设堆栈 mov ie,#00h ;关中断 mov ip,#00h lcall sprak_on ;发声 mov b,#00h lcall disp_r_numb ;显示 lcall chsi_ck0 ;初始化串口 setb es ;开串口中断 setb ea ;开总中断 sjmp$;等待 end 25 例四例四【用【用C编写的通信程序】编写的通信程序】设晶振频率为:

15、设晶振频率为: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;26 /*-用串口发单个字符用串口发单个字符-*/void sendchar(unsigned char ch)while(!TI);TI=0;SBUF=ch;TI=

16、1;/*-用串口读单个字符用串口读单个字符-*/unsigned char gethex(void)char c;while(!RI);c=SBUF;RI=0;return(c);27 /串口练习部分 void read_PC(void)/0 x0a结束 unsigned char idata i,k;for(i=0;i0 x20;i+)k=gethex();/读数据 sendchar(k);/写数据 if(k=0 x0a)goto quit_pc;quit_pc:;28#include#include /输入输出头文件输入输出头文件 void main(void)unsigned char idata j;unsigned char ch=0;out_sbuf();/串口初始化串口初始化 read_PC();/串口练习串口练习 while(1);29

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com