单片机8051串行接口的C编程.ppt

单片机8051串行接口的C编程.ppt

ID:51456680

大小:374.47 KB

页数:27页

时间:2020-03-23

单片机8051串行接口的C编程.ppt_第1页
单片机8051串行接口的C编程.ppt_第2页
单片机8051串行接口的C编程.ppt_第3页
单片机8051串行接口的C编程.ppt_第4页
单片机8051串行接口的C编程.ppt_第5页
资源描述:

《单片机8051串行接口的C编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6章8051串行口的C编程本章主要介绍串行通信概念及51系列单片机的串行口问题,将具体介绍以下内容:51单片机串行口----串行口结构、串行口的控制寄存器、串行口的工作方式、串行口的初始化、应用举例。计算机串行通信基础----基本概念。通信方式§6.1计算机串行通信基础基本概念并行通信方式—空间上区分各位数据及联络控制信号。占用传输线多,速度快。串行通信方式—时间上区分各位数据及联络控制信号。占用传输线少,速度慢。§6.251单片机串行口一、串行口结构8051系列单片机片上有UART(通用异步收发)用于串行通信,发送时数据由TXD端发出,接收时数据由RXD

2、端输入。TTL电平:短距离机间通信RS232电平:与计算机通信。(驱动芯片MAX232)二、串行口的控制寄存器与串行口有关的控制寄存器有:1.串行口控制寄存器SCOND7D6D5D4D3D2D1D0SM0SM1SM2RENTB8RB8TIRI工作方式控制位中断标志接收允许位(硬件置位,软件清0)0禁止1允许(软件设置)工作方式控制位SM0、SM1SM0SM1工作方式说明波特率00方式0同步移位寄存器fosc/1201方式110位异步收发由定时器控制10方式211位异步收发fosc/32或fosc/6411方式311位异步收发由定时器控制2.电源控制寄存器PC

3、OND7D6D5D4D3D2D1D0SMODGF1GF0PDIDLSMOD:串行口波特率加倍位。方式1,3波特率=定时器1溢出率/16;方式2波特率=fosc/32。0方式1,3波特率=定时器1溢出率/32;方式2波特率=fosc/64。三、串行口的工作方式串行口共有四种工作方式方式1—10位异步通信方式10位=1位起始位(0)+8位数据位+1位停止位(1)其中起始位和停止位在发送时是自动插入的。发送:SBUF=?;SBUF=“abc”;例子:SBUF=“a”;SBUF=0x61;发送条件TI=0;(软件清0)发送完毕TI=1;(硬件置位)接收:?=SBUF

4、;例子:serial_data=SBUF;接收条件REN=1;(软件置位)收到数据RI=1;(硬件置位)读数完毕RI=0;(软件清0)波特率=2SMOD*(定时器1的溢出率)/32例子:波特率=9600,fosc=11.059M,则设置PCON=0x00;//SMOD=0;TMOD=0x20;TH1=0xfd;TL1=0xfd;TR1=1;//启动定时器1ES=1;//开串行口中断EA=1;//开CPU中断四、串行口的初始化1.串行口波特率使用单片机串口时,选用的晶振比较固定6MHz,12MHz,11.0592MHz。常用于和计算机的通信;选用的波特率也相对

5、固定。串行口常用的波特率及相应的设置见表8-3。2.初始化步骤设置产生波特率的定时器1、串行口控制和中断控制。具体步骤:(1)确定定时器1的工作方式,编程TMOD寄存器;(2)计算定时器1的初值,装载TH1和TL1;(4)确定串行口的控制,编程SCON和PCON;(5)开CPU和源中断,编程IE中的ES和EA位。(3)启动定时器1,编程TCON中的TR1位;五、串行口应用举例例1:发送字符串程序#include#defineucharunsingnedchar#defineuintunsignedintucharidatatrdata[10

6、]={‘M’,‘C’,‘S’,‘-’,‘5’,‘1’,0x0d,0x0a,0x00};main(){uchari;uintj;/*在11.0592MHz下,设置9600波特率,方式1*/TMOD=0x20;//设置定时器1的方式TH1=0xfd;//设置定时器1的初值TL1=0xfd;SCON=0x50;//设置串行口方式1,并允许接收PCON=0x00;TR1=1;//启动定时器1while(1){i=0;while(trdata[i]!=0x00)//发送字符串{SBUF=trdata[i];while(TI==0);TI=0;i++;}for(j=0;

7、j<12500;j++);//延时}}例2:发送单字符子函数voidsend_char(ucharhex){SBUF=hex;while(TI==0);TI=0;}例3:发送字符串子函数voidsend_string(uchar*string){while(*string!=0){send_char(*string);string++;}}例4:发送字符串程序。例1的程序可以改写成调用子函数的方式。main(){uintj;while(1){send_string(trdata);for(j=0;j<12500;j++);}}main(){uintj;whi

8、le(1){send_string(“MCS-51”

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。