第六章--8051内部资源编程.ppt_第1页
第六章--8051内部资源编程.ppt_第2页
第六章--8051内部资源编程.ppt_第3页
第六章--8051内部资源编程.ppt_第4页
第六章--8051内部资源编程.ppt_第5页
免费预览已结束,剩余50页可下载查看

下载本文档

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

文档简介

内容概述 本章主要介绍8051单片机的内部资源的结构及使用方法 主要内容有并行输入输出 I O 端口的结构及功能 定时 计数器结构 工作原理及使用 中断的概念 中断系统的结构与中断响应过程及相关程序设计 串行口的结构 工作方式与控制等 教学目标 1 了解并行输入输出 I O 端口的结构及功能 关键是P0口的地址 数据分时复用 P2口的地址总线功能 P3口的第二功能 掌握P0 P1 P2 P3端口的操作方法 2 了解定时 计数器结构 理解其工作原理 领会定时器 计数器的本质区别在于计数的脉冲来源的不同 掌握定时 计数器的四种工作方式及TMOD TCON两个寄存器的控制作用 掌握定时 计数时间常数的计算方法 在此基础上进行定时 计数器的初始化与应用 3 了解中断的概念 8051单片机中断系统的结构 理解中断响应过程 掌握中断允许寄存器IE 中断优先级控制寄存器IP的控制方法 在此基础上实现中断服务程序的C51程序设计 4 了解了解单片机串行端口的结构 工作方式 掌握通信速率的概念 能根据通信速率bps设置定时器的时间常数 理解SCON寄存器中每一位的含义 能根据要求进行串行通信的初始化工作 完成简单的双机通信程序设计 6 1输入 输出 I O 端口 MCS 51单片机有4个双向并行的8位I O口P0 P3 P0口为三态双向口 可驱动8个TTL电路 P1 P2 P3口为准双向口 作为输入时 口线被拉成高电平 故称为准双向口 其负载能力为4个TTL电路 6 1 1并行I O口结构及功能 1 P0口的结构 关键理解P0口的作用 既可作普通I O口 又用来作地址 数据总线 分时复用 2 P1口结构 P1端口是单片机中唯一仅有单功能的I O端口 输出信号锁存在端口上 故又称为通用静态端口 3 P2口的结构 与P1口比较 P2口多了转换控制部分 P2口除了可以作普通I O口使用 还可以作为地址总线的高8位 4 P3口的结构 P3口的一位结构如图6 1 4所示 和P1口比较 P3口增加了一个与非门和一个缓冲器 使其各端口线有两种功能选择 6 1 2应用实例 例6 1在单片机P1 0 P1 2三根口线上分别接有三个发光二极管 要求编程实现三个发光二极管循环依次闪亮 源程序 includevoidDelay void sbitP1 0 P1 0 sbitP1 1 P1 1 sbitP1 2 P1 2 voidmain void while 1 P1 1 0 P1 1 1 P1 2 1 P1 0对应的LED亮Delay P1 1 1 P1 1 0 P1 2 1 P1 1对应的LED亮Delay P1 1 1 P1 1 1 P1 2 0 P1 2对应的LED亮Delay 延时子程序voidDelay void inti for i 0 i 10000 i 6 2定时器 计数器 定时器 计数器简称定时器 8051系列单片机有2个16位的定时器 计数器 定时器0 T0 和定时器1 T1 8052系列单片机增加了一个定时器T2 它们都有定时器或事件计数的功能 可用于定时控制 延时 对外部事件计数和检测等场合 1定时 计数器结构 T0由2个特殊功能寄存器TH0和TL0构成 T1则由TH1和TL1构成 作定时器时 定时器计数8031片内振荡器输出经12分频后的脉冲 即每个机器周期使定时器 T0或T1 的寄存器自动加1直至计满溢出 所以定时的分辨率是时钟振荡频率的1 12 作计数器时 通过引脚T0 P3 4 和T1 P3 5 对外部脉冲信号计数 当输入脉冲信号从1到0的负跳变时 计数器就自动加1 计数的最高频率一般为振荡频率的1 24 不论是定时或是计数工作方式 定时器T0或T1都不占用CPU时间 除非定时器 计数器溢出 才可能中断CPU的当前操作 由此可见 定时器是单片机中效率高而且工作灵活的部件 2定时器 计数器工作方式 2定时器 计数器工作方式除可选择定时或计数工作方式外 每个定时器 计数器还有4种工作模式 模式0 1和2 T0和T1的工作模式相同 在模式3 两个定时器的模式不同 1模式0 图6 2 1定时 计数器T1 T0 工作模式0 由TL1的低5位和TH1的8位构成13位计数器 定时器启动后 定时或计数脉冲加到TL1 从预先设置的初值 时间常数 开始不断增1 TL1计满后向TH1进位 直至13位寄存器计满溢出 溢出时 13位寄存器清0 TF1置位并申请中断 如需进一步定时 计数 需用指令重置时间常数 模式0的结构如图6 2 1 2模式1 模式1和模式0几乎完全相同 唯一的差别是 模式1中 定时器寄存器TH1和TL1组成16位计数器参与操作 从而比模式0有更大的定时 计数范围 模式1的结构见图6 2 2 图6 2 2定时 计数器T1 T0 工作模式1 4模式3 由于定时器T1无操作模式3 若将T0设置为模式3 TL0和TH0被分成为两个互相独立的8位计数器 如图6 2 4所示 图6 2 4定时 计数器T1 T0 工作模式3 6 2 定时 计数器的控制寄存器 定时器共有2个控制寄存器TMOD和TCON 由软件写入TMOD和TCON两个8位寄存器 设置各个定时器的操作模式和控制功能 1工作模式控制寄存器 TMOD 89H TMOD在特殊功能寄存器中 TMOD的格式如图6 2 5所示 定时器控制寄存器 TCON 88H 定时器控制寄存器除可字节寻址外 各位还可位寻址 6 2 4定时 计数常数的计算 1初始化步骤在使用8051的定时器 计数器前 应对它进行初始化编程 主要是对TCON和TMOD编程 计算和装载计数初值 也称做时间常数 一般完成以下几个步骤 1 确定T C的工作方式 编程TMOD寄存器 2 计算T C中的计数初值 并装载到THx和TLx 3 T C在中断方式工作时 须开CPU中断和源中断 编程IE寄存器 4 启动定时器 计数器 编程TCON中TRl或TR0位 2计数初值的计算 定时器 计数器工作时必须给计数器设置计数器初值 这个计数器初值是送到TH TH0 TH1 和TL TL0 TL1 中的时间常数 把计数器计满为零所需要的计数值 或脉冲个数 设定为C 计数初值设定为TC 由此便可得到如下的计算公式 TC M CM为计数器模值 该值和计数器工作方式有关 在方式0时M为 在方式1时M为 在方式2和方式3时M为 也可以理解为TC为所需脉冲个数按位取反再加1 即TC 1 6 2 5应用实例 例6 2 1 若单片机时钟频率为12MHZ 计算定时2ms所需的定时器初值 解 由于定时器工作在方式2和方式3下时的最大定时时间只有0 256ms 因此要想获得2ms的定时时间定时器必须工作在方式0或方式1 T计数 12 12 1 s则定时所需脉冲个数为2ms 1 s 2000个 若采用方式0 则定时器的初值为 TC 2000 6192 1830H 1100000110000B即 TH0应装C1H TL0应装10H TL1只用低5位 高3位填0 若采用方式1 则定时器的初值为 TC 216 2000 63536 F830H即 TH0应装F8H TL0应装30H 例6 2 2 在例6 2 1的基础上 要求从P1 1引脚输出周期为4ms的方波 解 此处采用定时器0定时 通过查询TF0状态检查定时时间是否已到 由上例计算已知 定时器定时周期为2ms TH0 F8H TL 30H C51源程序 include 805I系列的寄存器头文件sbitP1 1 P1 1 voidmain void TMOD 0 x01 定时器0方式1TH0 0 xf8 TL0 0 x30 装入时间常数TR0 1 启动定时器while 1 while TF0 查询TF0状态 时间未到则空等待P1 1 P1 1 P1 1取反TH0 0 xf8 TL0 0 x30 装入时间常数 6 3中断 6 3 1中断的基本概念当CPU正在处理某件事情时 外部发生了某一事件 如定时器 计数器溢出 被监视电平突变等 请求CPU迅速去处理 于是CPU暂时中断当前的工作 转去处理所发生的事件 中断服务处理完成后 再回到原来被中断的地方 继续原来的工作 这一过程称为中断 如图6 3 1所示 图6 3 1中断流程 8051的中断系统 能处理中断的功能部件称为中断系统 能产生中断请求的源称为中断源 8051单片机中断系统的基本特点是 有5个固定的中断源 3个在片内 2个在片外 它们在程序存储器中各有固定的中断入口地址 由此进入中断服务程序 5个中断源有两级中断优先级 可形成中断嵌套 2个特殊功能寄存器用于中断控制的编程 对于8052单片机来说 则多一个中断源定时器T C2 8051的中断源 外部中断源 由P3 2端口线引入 低电平或下降沿引起 由P3 3端口线引入 低电平或下降沿引起 这两个外部中断源和它们的触发方式控制位锁存在特殊功能寄存器TCON的低4位 内部中断源 T0 定时器 计数器0中断 由T0回零溢出引起 T1 定时器 计数器1中断 由T1回零溢出引起 TI RI 串行I O中断 串行端口完成一帧字符发送 接收后引起 这3个内部中断源的控制位分别锁存在特殊功能寄存器TCON和SCON中 6 3 2中断系统的结构 6 3 中断的控制 1中断允许寄存器IE A8H IE在特殊功能寄存器中 字节地址A8H 位地址 由低位到高位 分别是A8H AFH IE控制CPU对中断源总的开放或禁止以及每个中断源是否允许中断 2中断优先寄存器IP B8H IP在特殊功能寄存器中 字节地址为B8H 位地址 由低位到高位 分别是B8H BFH IP用来锁存各中断源优先级的控制位 即设定中断源属于两级中断中的哪一级 用户可用软件设定 中断优先级的响应 系统复位后 IP低5位全部清零 并将所有中断源设置为低优先级中断 如果几个同优先级的中断源同时向CPU申请中断 哪一个申请得到服务 取决于它们在CPU内部登记排队的序号 CPU通过内部硬件查询登记序号 按自然优先级响应各个中断请求 其内部登记序号是由硬件形成的 先后顺序如下 T0 T1 RI TI 6 3 中断响应过程及中断入口地址 下列任何一种情况存在时 中断申请将被封锁 1 CPU正在执行一个同级或高一级的中断服务程序 2 当前正在执行的那条指令还未执行完 3 当前正在执行的指令是RETI或对IE IP寄存器进行读 写指令 执行这些指令后至少再执行一条指令才会响应中断 中断入口地址 中断得到响应后 自动清除中断请求标志 对串行口中断请求标志 要用软件清除 由硬件自动将程序计数器PC内容 断点地址 压入堆栈保护 然后将对应的中断矢量装入程序计数器PC 使程序转向该中断矢量地址单元中 去执行相应的中断服务程序 各个中断源在程序存储器中的中断入口地址如下 中断源入口地址外部中断00003H定时器0溢出000BH外部中断10013H定时器1溢出001BH串行口0023H 6 3 5C51中断程序设计 C51编译器支持在C源程序中直接嵌入中断服务程序 C51提供的中断函数定义语法如下 返回值类型函数名interruptnn对应中断源的编号 KeilC51支持最大值为31 voidtimer0 void interrupt1 定时器0中断服务程序 中断号为1 KeilC51编译器用特定的编译器指令分配奇存器组 当前工作寄存器由PSW中RS1 RS0两位设置用using指定 using 后的变量为一个0 3的整数 using 只允许用于中断函数 它在中断函数入口处将当前寄存器组保留 并在中断程序中使用指定的寄存器组 在函数退出前恢复原寄存器组 中断函数的完整语法如下 返回值函数名 参数 模式 重入 interruptn usingm m n为正整数 不允许使用表达式 n取值范围0 31 对应该中断源的编号 通常对普通8052系列单片机来说 外部中断0 定时器0 外部中断1 定时器1 串口 定时器2的中断源编号依次为0 1 2 3 4 5 m取值范围0 3 例如 voidserial serviceinterrupt4using2 C51中断服务程序的注意事项 1 若要在执行当前中断程序时禁止更高优先级中断 可先用软件关闭CPU对中断的响应 在中断返回前再开放中断 2 注意外部电平触发的中断不锁存 若在外部电平出现时被中断屏蔽 而在中断识别之前电平消失 它被完全忽略 中断处理本身不能锁存外部电平请求 3 外部中断0 1及定时器0 1的中断申请标志在CPU响应中断后会自动清0 但串行口中断标志TI RI及定时器2的中断申请标志TF2不会自动清0 必须在中断服务程序中用软件清0 否则会立即产生重复中断 程序会陷入死循环 对于串口中断 通常要判别是RI或TI中断 4 为提高中断响应的实时性 中断服务程序应尽量简短 并避免使用复杂变量类型及复杂算术运算 通常在中断服务程序中使用一些标志 由主程序或相应背景程序根据对应的标志作相应的处理 例6 3 1 在例6 2 2的基础上 要求从P1 1引脚输出周期为4ms的方波 解 与例6 2 2不同的是 此处对定时器0采用中断方式编程 C51源程序如下 C51源程序 includesbitP1 1 P1 1 voidtimer0 void interrupt1 定时器0中断服务程序 TH0 0 xf8 TL0 0 x30 装入时间常数P1 1 P1 1 P1 1取反 voidmain void TMOD 0 x01 定时器0方式1TH0 0 xf8 TL0 0 x30 装入时间常数TR0 1 启动定时器TF0 0 EA 1 开全局中断ET0 1 开定时器0中断while 1 主程序死循环 空等待 6 4串行口 MCS 51内部有一个可编程的全双工串行通信接口 该串行口有4种工作方式 以供不同场合使用 波特率可由软件设置 由片内的定时器 计数器产生 接收 发送均可工作在查询方式或中断方式 使用十分灵活 6 4 1串行口的结构与控制 MCS 51单片机内部的串行口有两个物理上独立的接收 发送缓冲器SBUF 可同时接收和发送数据 发送缓冲器只能写入不能读出 接收缓冲器只能读出不能写入 两个缓冲器占用同一个地址 99H 控制MCS 51单片机串行口的控制寄存器共有两个 即特殊功能寄存器SCON和PCON 6 4 1 1串行口控制寄存器SCON SM0 SM1 控制串行口的工作方式 SM2 允许方式2和方式3进行多机通信控制位 REN 允许串行接收控制位 REN 1 允许接收 TB8 是工作在方式2和方式3时要发送的第9位数据 根据需要由软件置位和复位 RB8 是工作在方式2和方式3时接收到的第9位数据 TI 发送中断标志位 必须由软件清零 RI 接收中断标志位 必须由软件清零 6 4 1 2 特殊功能寄存器PCON SMOD 波特率倍增位 当SMOD 1时 波特率加倍 当SMOD 0时 波特率不加倍 GF1 GF0 两个通用标志位 用户使用 PD IDLCHMOS型8051单片机的低功耗控制位 当将PD置1的指令执行后 80C51进入掉电方式 此时片内振荡器停止工作 仅片内RAM内容被保持 SFR内容也被破坏 掉电方式下Vcc可降到2V 耗电仅50 A 退出掉电方式唯一方法是硬件复位 应当保证进入掉电方式前Vcc不降下来 在通过硬件复位退出掉电方式之前应当先保证Vcc恢复到正常值 当将IDL位置1指令执行后 80C51进入节电方式 这时供给CPU的时钟信号被切断 但时钟信号仍送给片内RAM 定时器 中断系统和串口 同时CPU状态被保存 即堆栈指针 程序计数器PC 程序状态字PSW 累加器ACC及通用寄存器的内容 节电方式下Vcc仍为5V 但耗电从24mA降到3 7mA 退出掉电方式有两种 一种是任一中断被激活 一种是硬件复位 前者较为常用 6 4 2串行口的工作方式 串行接口的工作方式有四种 由SCON中的SM0 SM1定义 编码及功能如表6 4 1 在这四种工作方式中 串行通信只使用方式1 方式2 方式3 方式0主要用于用串口扩展并行口 1方式0 在方式0状态下 串行口为同步移位寄存器输入 输出方式 其波特率固定不变为fosc 12 数据由RXD P3 0 端输入或输出 同步移位脉冲由TXD P3 1 端输出 发送 接收的是8位数据 低位在先 2方式1 当SCON中的SM0SM1 01时 串行口以工作方式1工作 此时串行口为8位异步通信接口 下图为方式1发送时序 3方式2 当SM0SM1 10时 串行口工作在方式2 发送和接收的一帧信息由11位组成 即1位起始位 8位数据位 低位在先 1位可编程位 第9位数据位 和1位停止位 TB8根据需要设为0或1 作为多机通信中的地址数据标志位或数据的奇偶校验位 4方式3 当SM0SM1 11时 串行口工作在方式3 方式3为波特率可变的9位异步通信方式 除了波特率外 方式3和方式2相同 方式3的波特率由下式确定 6 4 3波特率的计算 注 若SMOD 0 则K 1 若SMOD 1 则K 2 常用的波特率及计算器初值 6 4 4串行口初始化 在使用串行口之前 应对它进行编程初始化 主

温馨提示

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

评论

0/150

提交评论