单片机8051串行接口的C编程.ppt_第1页
单片机8051串行接口的C编程.ppt_第2页
单片机8051串行接口的C编程.ppt_第3页
单片机8051串行接口的C编程.ppt_第4页
单片机8051串行接口的C编程.ppt_第5页
免费预览已结束,剩余22页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章8051串行口的C编程 本章主要介绍串行通信概念及51系列单片机的串行口问题 将具体介绍以下内容 51单片机串行口 串行口结构 串行口的控制寄存器 串行口的工作方式 串行口的初始化 应用举例 计算机串行通信基础 基本概念 通信方式 6 1计算机串行通信基础 基本概念 并行通信方式 空间上区分各位数据及联络控制信号 占用传输线多 速度快 串行通信方式 时间上区分各位数据及联络控制信号 占用传输线少 速度慢 6 251单片机串行口 一 串行口结构 8051系列单片机片上有UART 通用异步收发 用于串行通信 发送时数据由TXD端发出 接收时数据由RXD端输入 TTL电平 短距离机间通信RS232电平 与计算机通信 驱动芯片MAX232 二 串行口的控制寄存器 与串行口有关的控制寄存器有 1 串行口控制寄存器SCON 工作方式控制位 中断标志 接收允许位 硬件置位 软件清0 0禁止1允许 软件设置 工作方式控制位SM0 SM1 2 电源控制寄存器PCON SMOD 串行口波特率加倍位 三 串行口的工作方式 串行口共有四种工作方式 方式1 10位异步通信方式 10位 1位起始位 0 8位数据位 1位停止位 1 其中起始位和停止位在发送时是自动插入的 发送 SBUF SBUF abc 发送条件TI 0 软件清0 发送完毕TI 1 硬件置位 接收 SBUF 例子 serial data SBUF 接收条件REN 1 软件置位 收到数据RI 1 硬件置位 读数完毕RI 0 软件清0 波特率 2SMOD 定时器1的溢出率 32 例子 波特率 9600 fosc 11 059M 则设置PCON 0 x00 SMOD 0 TMOD 0 x20 TH1 0 xfd TL1 0 xfd TR1 1 启动定时器1ES 1 开串行口中断EA 1 开CPU中断 四 串行口的初始化 1 串行口波特率 使用单片机串口时 选用的晶振比较固定6MHz 12MHz 11 0592MHz 常用于和计算机的通信 选用的波特率也相对固定 串行口常用的波特率及相应的设置见表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 M C S 5 1 0 x0d 0 x0a 0 x00 main uchari uintj 在11 0592MHz下 设置9600波特率 方式1 TMOD 0 x20 设置定时器1的方式TH1 0 xfd 设置定时器1的初值TL1 0 xfd SCON 0 x50 设置串行口方式1 并允许接收PCON 0 x00 TR1 1 启动定时器1 while 1 i 0 while trdata i 0 x00 发送字符串 SBUF trdata i while TI 0 TI 0 i for j 0 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 while 1 send string MCS 51 send char 0 x0d send char 0 x0a for j 0 j 12500 j 或者 例5 串行口发送接收程序 将接收到的字符发送出去 main unsignedchara 在11 0592MHz下 设置19200波特率 方式1 TMOD 0 x20 设置定时器1的方式TH1 0 xfd 设置定时器1的初值TL1 0 xfd SCON 0 x50 设置串行口方式1 并允许接收PCON 0 x80 TR1 1 启动定时器1 while 1 while RI 0 RI 0 a SBUF SBUF a while TI 0 TI 0 例6 单片机fosc 11 0592MHz 波特率9600 设置8个字节的队列缓冲区用于接收 根据接收到的命令执行不同的操作 计算机端发送的命令格式 命令 命令类型 1 启动 start 2 停止 stop 3 暂停 pause include defineucharunsignedchar definebuffer size8 缓冲区大小ucharcomrxdbuf buffer size 串口接收缓冲区ucharcomrxdwrite bitcmdbegin cmdok 命令起始和结束标志 main 在12MHz下 设置4800波特率 方式1 TMOD 0 x20 设置定时器1的方式TH1 0 xf3 设置定时器1的初值TL1 0 xf3 SCON 0 x50 设置串行口方式1 并允许接收PCON 0 x80 TR1 1 启动定时器1ES 1 EA 1 for if cmdok cmdok 0 if string compare start 5 0 处理启动命令elseif string compare stop 4 0 处理停止命令elseif string compare pause 5 0 处理暂停命令 voidserial interrupt4using1 uchara if RI RI 0 a SBUF if a cmdbegin 1 comrxdwrite 0 elseif a cmdbegin 0 cmdok 1 elseif cmdbegin 1 comrxdbuf comrxdwrite a comrxdwrite if comrxdwrite buffer size comrxd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论