《片机内部资源简介》PPT课件.ppt_第1页
《片机内部资源简介》PPT课件.ppt_第2页
《片机内部资源简介》PPT课件.ppt_第3页
《片机内部资源简介》PPT课件.ppt_第4页
《片机内部资源简介》PPT课件.ppt_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

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

文档简介

单片机内部资源简介 MCS 51单片机的基本组成 P0口 下图为P0口的某位P0 n n 0 7 结构图 它由一个输出锁存器 两个三态输入缓冲器和输出驱动电路及控制电路组成 P0口既可以作为I O用 也可以作为地址 数据线用 三态缓冲器 与门 多路开关 一 P0口作为一般I O口使用 1 P口用作输出口时CPU发出控制电平 0 即 硬件自动使 控制 0 封锁 与门 将输出上拉场效应管T1截止 同时使多路开关MUX把锁存器的输出端Q与场效应管T2栅极接通 2 P0口用作输入口时 输入时 分读引脚或读锁存器 读引脚 由传送指令 MOV 实现 下面的缓冲器2用于读端口引脚数据 当执行一条由端口输入的指令时 读脉冲把三态缓冲器2打开 这样端口引脚上的数据经过缓冲器读入到内部总线 第1步 输入时 先向锁存器 写 1 指令为 SETBP0 n或 MOVP0 0FFH 1 1 0 0 T2截止 第2步 引脚信号 读引脚 信号有效 缓冲器2打开 P0口用作输入口时 输入时 分读引脚或读锁存器读锁存器 有些指令如 ANLP0 A称为 读 修改 写 指令 需要读锁存器 缓冲器1用于读端口锁存器数据 原因 如果此时该端口的负载恰是一个晶体管基极 且原端口输出值为1 那么导通了的PN结会把端口引脚高电平拉低 若此时直接读端口引脚信号 将会把原输出的 1 电平误读为 0 电平 现采用读输出锁存器代替读引脚 图中 上面的三态缓冲器就为读锁存器Q端信号而设 读输出锁存器可避免上述可能发生的错误 准双向口 从图中可以看出 在读入端口数据时 由于输出驱动FET并接在引脚上 如果T2导通 就会将输入的高电平拉成低电平 产生误读 所以在端口进行输入操作前 应先向端口锁存器写 1 使T2截止 引脚处于悬浮状态 变为高阻抗输入 这就是所谓的准双向口 二 P0口作为地址 数据总线使用 在系统扩展时 P0端口作为地址 数据总线使用时 执行 MOVX 指令或EA 0时执行 MOVC 指令时 内部硬件自动使 控制 1 P0口用作输出地址 数据总线 P0引脚输出地址 输入数据 输入信号是从引脚通过输入缓冲器进入内部总线 此时 CPU自动使MUX向下 并向P0口写 1 读引脚 控制信号有效 下面的缓冲器打开 外部数据读入内部总线 P1口 它由一个输出锁存器 两个三态输入缓冲器和输出驱动电路组成 准双向口 P2口 1 P2口作为普通I O口CPU发出控制电平 0 使多路开关MUX倒向锁存器输出Q端 构成一个准双向口 其功能与P1相同 P2口 2 P2口作为地址总线在系统扩展片外程序存储器扩展数据存储器且容量超过256B 用MOVX DPTR指令 时 CPU发出控制电平 1 使多路开关MUX倒向内部地址线 此时 P2输出高8位地址 P3口 P3口是多功能端口 一 作通用I O口用 输出 当W 1时 由内部硬件自动置W为高电平 输出Q端的信号 即输出内部数据 输入时 先向端口写 1 即锁存器Q端为 1 P3口 P3口的第二功能 P3口 二 P3口作为第二功能 内部硬件自动使Q 1 此时引脚部分输入 Q 1 W 1 例如 P3 0作为串行口输入 P3口 P3口作为第二功能 Q 1 部分输出 Q 1 W输出 例如 P3 1作为串行口输出 端口的负载能力和接口要求 P0口的输出级无上拉电阻 当输出要去驱动NMOS N沟道增强型场效应管 等负载时 需外接上拉电阻 这时才有高电平输出 作为输入用时 需向端口写 1 作为地址 数据总线用时 无需外接上拉电阻 P0口的每一位口线可驱动8个LS型TTL负载 1 P0口 2 P1 P3口P1 P3口都是准双向口 作为输入用时 必须向相应的端口写 1 P1 P3口内部有上拉电阻 其每一位口线可驱动4个LS型TTL负载 补充 灌电流 与 拉电流 灌电流 灌电流 与 拉电流 拉电流 P0口的驱动能力较大 当其输出高电平时 可提供400 A的电流 拉电流 当其输出低电平 0 45V 时 则可提供3mA左右的 灌电流 P1 P2 P3口的每一位只能驱动4个LSTTL 即可提供的电流只有P0口的一半 所以 任何一个口要想获得较大的驱动能力 只能用低电平输出 P1 P3口的驱动能力有限 在低电平输出时 一般也只能提供不到2mA的 灌电流 定时 计数器接口 一 定时 计数器的主要特性 1 STC89C52RC单片机三个16位的可编程定时 计数器 定时 计数器T0和定时 计数器T1以及定时 计数器T2 2 每个定时 计数器既可以对系统时钟计数实现定时 也可以对外部信号计数实现计数功能 通过编程设定来实现 3 每个定时 计数器都有多种工作方式 其中T0有四种工作方式 T1有三种工作方式 T2有三种工作方式 通过编程可设定工作于某种方式 4 每一个定时 计数器定时计数时间到时产生溢出 使相应的溢出位置位 溢出可通过查询或中断方式处理 二 定时 计数器T0 T1的结构及工作原理 三 定时 计数器的方式和控制寄存器 1 定时 计数器的方式寄存器TMOD 2 定时 计数器的控制寄存器TCON IE1 外部边沿触发中断1请求标志 其功能和操作类似于TF0 IT1 外部中断1类型控制位 通过软件设置或清除 用于控制外中断的触发信号类型 IT1 1 边沿触发 IT 0是电平触发 IE0 外部边沿触发中断0请求标志 其功能和操作类似于IE1 IT0 外部中断0类型控制位 通过软件设置或清除 用于控制外中断的触发信号类型 其功能和操作类似于IE1 必须注意 在不同外部中断触发方式下 标志清除方法不一样 四 定时 计数器的工作方式 1 方式0 13位 3 方式2 8位自动装载 2 方式1 16位 方式1的结构与方式0结构相同 只是把13位变成16位 16位的加法计数器被全部用上 4 方式3 分成两个8位定时器 计数器 五 定时 计数器的初始化编程及应用 1 定时 计数器的编程 单片机定时 计数器初始化过程如下 1 根据要求选择方式 确定方式控制字 写入方式控制寄存器TMOD 2 根据要求计算定时 计数器的计数值 再由计数值求得初值 写入初值寄存器 3 根据需要开放定时 计数器中断 后面须编写中断服务程序 4 设置定时 计数器控制寄存器TCON的值 启动定时 计数器开始工作 5 等待定时 计数时间到 到则执行中断服务程序 如用查询处理则编写查询程序判断溢出标志 溢出标志等于1 则进行相应处理 2 定时 计数器的应用 通常利用定时 计数器来产生周期性的波形 利用定时 计数器产生周期性波形的基本思想是 利用定时 计数器产生周期性的定时 定时时间到则对输出端进行相应的处理 如产生周期性的方波只须定时时间到对输出端取反一次即可 例1 设系统时钟频率为12MHZ 用定时 计数器T0编程实现从P1 0输出周期为500 s的方波 分析 从P1 0输出周期为500 s的方波 只须P1 0每250 s取反一次则可 当系统时钟为12MHZ 定时 计数器T0工作于方式2时 最大的定时时间为256 s 满足250 s的定时要求 方式控制字应设定为00000010B 02H 系统时钟为12MHZ 定时250 s 计数值N为250 初值X 256 250 6 则TH0 TL0 06H C语言程序 include 包含特殊功能寄存器库sbitP1 0 P1 0 voidmain TMOD 0 x02 TH0 0 x06 TL0 0 x06 EA 1 ET0 1 TR0 1 while 1 voidtime0 int void interrupt1 中断服务程序 P1 0 P1 0 1 采用中断处理方式的程序 2 采用查询方式处理的程序 include 包含特殊功能寄存器库sbitP1 0 P1 0 voidmain chari TMOD 0 x02 TH0 0 x06 TL0 0 x06 TR0 1 for if TF0 TF0 0 P1 0 P1 0 查询计数溢出 如果定时时间大于65536 s 这时用一个定时 计数器直接处理不能实现 这时可用两个定时 计数器共同处理或一个定时 计数器配合软件计数方式处理 例2 设系统时钟频率为12MHZ 编程实现从P1 1输出周期为1s的方波 根据例5 2的处理过程 这时应产生500ms的周期性的定时 定时到则对P1 1取反就可实现 由于定时时间较长 一个定时 计数器不能直接实现 可用定时 计数器T0产生周期性为10ms的定时 然后用一个寄存器R2对10ms计数50次实现 系统时钟为12MHZ 定时 计数器T0定时10ms 计数值N为10000 只能选方式1 方式控制字为00000001B 01H 初值X X 65536 10000 55536 1101100011110000B则TH0 11011000B D8H TL0 11110000B F0H include 包含特殊功能寄存器库sbitP1 1 P1 1 chari voidmain TMOD 0 x01 TH0 0 xD8 TL0 0 xf0 EA 1 ET0 1 i 0 TR0 1 while 1 voidtime0 int void interrupt1 中断服务程序 TH0 0 xD8 TL0 0 xf0 i if i 50 P1 1 P1 1 i 0 1 用寄存器R2作计数器软件计数 中断处理方式 2 用定时 计数器T1计数实现 定时 计数器T1工作于计数方式时 计数脉冲通过T1 P3 5 输入 设定时 计数器T0定时时间到对T1 P3 5 取反一次 则T1 P3 5 每20ms产生一个计数脉冲 那么定时500ms只须计数25次 设定时 计数器T1工作于方式2 初值X 256 25 231 11100111B E7H TH1 TL1 E7H 因为定时 计数器T0工作于方式1 定时 则这时方式控制字为01100001B 61H 定时 计数器T0和T1都采用中断方式工作 C语言程序如下 include 包含特殊功能寄存器库sbitP1 1 P1 1 sbitP3 5 P3 5 voidmain TMOD 0 x61 T1为8位自动装载计数器TH0 0 xD8 TL0 0 xf0 TH1 0 xE7 计数25次TL1 0 xE7 EA 1 ET0 1 ET1 1 TR0 1 TR1 1 while 1 voidtime0 int void interrupt1 T0中断服务程序 TH0 0 xD8 TL0 0 xf0 P3 5 P3 5 voidtime1 int void interrupt3 T1中断服务程序 P1 1 P1 1 例3 采用10MHZ晶振 在P1 0输出周期为2 5s 占空比为20 的脉冲信号 解对于10MHZ晶振 使定时器最大的定时为几十ms 取10ms定时 则周期2 5s需250次中断 占空比为20 高电平应为50次中断 晶振10MHZ 机器周期 12 10000000 10ms定时 定时器需计数100000 12 8333 程序如下 include defineucharunsignedcharuchari time ucharperiod 250 ucharhigh 50 main TMOD 0 x01 TH0 65536 8333 256 TL0 65536 8333 256 EA 1 ET0 1 TR0 1 do while 1 timer0 interrupt1using1 TH0 65536 8333 256 TL0 65536 8333 256 if time high P1 0 elseif time period time 0 P1 1 一 单片机串行口功能与结构 1 功能 51单片机具有一个全双工的串行异步通信接口 可以同时发送 接收数据 发送 接收数据可通过查询或中断方式处理 使用十分灵活 串行接口 它有四种工作方式 分别是方式0 方式1 方式2和方式3 其中 方式0 称为同步移位寄存器方式 一般用于外接移位寄存器芯片扩展I O接口 方式1 8位的异步通信方式 通常用于双机通信 方式2和方式3 9位的异步通信方式 通常用于多机通信 2 结构 51单片机内部有一个全双工的串行通信口 即串行接收和发送缓冲器 SBUF 这两个在物理上独立的接收发送器 既可以接收数据也可以发送数据 但接收缓冲器只能读出不能写入 而发送缓冲器则只能写入不能读出 它们的地址为99H 这个通信口既可以用于网络通信 亦可实现串行异步通信 还可以构成同步移位寄存器使用 3 单片机如何能收 发数据 4 串行口控制寄存器SCON 5 电源控制寄存器PCON 当SMOD位为1 则串行口方式1 方式2 方式3的波特率加倍 二 串行口的工作方式 1 方式0 方式0通常用来外接移位寄存器 用作扩展I O口 方式0工作时波特率固定为 fosc 12 工作时 串行数据通过RXD输入和输出 同步时钟通过TXD输出 发送和接收数据时低位在前 高位在后 长度为8位 2 方式1 方式1为8位异步通信方式 在方式1下 一帧信息为10位 1位起始位 0 8位数据位 低位在前 和1位停止位 1 TXD发送数据端 RXD为接收数据端 波特率可变 由定时 计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定 即 波特率 2SMOD T1的溢出率 32 3 方式2和方式3 方式2和方式3时都为9位异步通信接口 接收和发送一帧信息长度为11位 即1个低电平的起始位 9位数据位 1个高电平的停止位 发送的第9位数据放于TB8中 接收的第9位数据放于RB8中 TXD为发送数据端 RXD为接收数据端 方式2和方式3的区别在于波特率不一样 其中方式2的波特率只有两种 fosc 32或fosc 64 方式3的波特率与方式1的波特率相同 由定时 计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定 即 波特率 2SMOD T1的溢出率 32 异步通信 在这种通信方式中 接收器和发送器有各自的时钟 它们的工作是非同步的 异步通信用一帧来表示一个字符 其内容如下 一个起始位 仅接着是若干个数据位 同步通信 发送器和接收器由同一个时钟源控制 同步传输方式去掉了起始位和停止位 只在传输数据块时先送出一个同步头 字符 标志即可 单工方式 数据仅按一个固定方向传送 半双工方式 数据可实现双向传送 但不能同时进行 实际的应用采用某种协议实现收 发开关转换 全双工方式 允许双方同时进行数据双向传送 但一般全双工传输方式的线路和设备较复杂 三 串行口的编程及应用 1 串行口的初始化编程 1 串行口控制寄存器SCON位的确定 根据工作方式确定SM0 SM1位 对于方式2和方式3还要确定SM2位 如果是接收端 则置允许接收位REN为1 如果方式2和方式3发送数据 则应将发送数据的第9位写入TB8中 2 设置波特率 对于方式0 不需要对波特率进行设置 对于方式2 设置波特率仅须对PCON中的SMOD位进行设置 对于方式1和方式3 设置波特率不仅须对PCON中的SMOD位进行设置 还要对定时 计数器T1进行设置 这时定时 计数器T1一般工作于方式2 8位可重置方式 初值可由下面公式求得 由于 波特率 2SMOD T1的溢出率 32则 T1的溢出率 波特率 32 2SMOD而T1工作于方式2的溢出率又可由下式表示 T1的溢出率 fosc 12 256 初值 所以 T1的初值 256 fosc 2SMOD 12 波特率 32 2 串行口的应用 通常用于三种情况 利用方式0扩展并行I O口 利用方式1实现点对点的双机通信 利用方式2或方式3实现多机通信 利用方式1实现点对点的双机通信要实现甲与乙两台单片机点对点的双机通信 线路只须将甲机的TXD与乙机的RXD相连 将甲机的RXD与乙机的TXD相连 地线与地线相连 软件方面选择相同的工作方式 设相同的波特率即可实现 用C语言编程实现双机通信 甲 乙两机都选择方式1 8位异步通信方式 最高位用作奇偶校验 波特率为1200bps 甲机发送 乙机接收 因此甲机的串口控制字为40H 乙机的串口控制字为50H 由于选择的是方式1 波特率由定时 计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定 则须对定时 计数器T1初始化 设SMOD 0 甲 乙两机的振荡频率为12MHZ 由于波特率为1200 定时 计数器T1选择为方式2 则初值为 初值 256 fosc 2SMOD 12 波特率 32 256 12000000 12 1200 32 230 E6H根据要求定时 计数器T1的方式控制字为20H 为了保持通信的畅通与准确 在通信中双作了如下约定 通信开始时 甲机首先发送一个信号AA 乙机接收到后回答一个信号BB 表示同意接收 甲机收到BB后 就可以发送数据了 假定发送10个字符 数据缓冲区为buf 数据发送完后发送一个校验和 乙机接收到数据后 存入乙机的数据缓冲区buf中 并用接收的数据产生校验和与接收的校验和相比较 如相同 乙机发送00H 回答接收正确 如不同 则发送0FFH 请求甲机重发 由于甲 乙两机都要发送和接收信息 所以甲 乙两机的串口控制寄存器的REN位都应设为1 方式控制字都为50H 甲机的发送程序 includeunsignedcharidatabuf 10 unsignedcharpf voidmain void unsignedchari TMOD 0 x20 串行口初始化TL1 0 xe6 TH1 0 xe6 PCON 0 x00 TR1 1 SCON 0 x50 do SBUF 0 xaa 发送联络信号while TI 0 TI 0 while RI 0 等待乙机回答RI 0 while SBUF 0 xbb 0 乙未准备好 继续联络 do pf 0 for i 0 i 10 i SBUF buf i 发送一个数据pf buf i 求校验和while TI 0 TI 0 SBUF pf 发送校验和while TI 0 TI 0 while RI 0 等待乙机应答RI 0 while SBUF 0 应答出错 则重发 乙机接收程序 includeunsignedcharidatabuf 10 unsignedcharpf voidmain void unsignedchari TMOD 0 x20 串行口初始化TL1 0 xe6 TH1 0 xe6 PCON 0 x00 TR1 1 SCON 0 x50 do while RI 0 RI 0 while SBUF 0 xaa 0 判甲机是否请求SBUF 0 xbb 发应答信号while TI 0 TI 0 while 1 pf 0 for i 0 i 10 i while RI 0 RI 0 buf i SBUF 接收一个数据pf buf i 求校验和 while RI 0 接收甲机发送的校验和RI 0 if SBUF pf 0 比较校验和 SBUF 0 x00 break 校验和相同发 0 x00 else SBUF 0 xff 校验和不同发 0 xff 重新接收while TI 0 TI 0 中断系统 一 中断的基本概念 1 中断源及中断请求 2 中断优先权控制 3 中断允许与中断屏蔽 4 中断响应与中断返回 二 51单片机的中断系统 1 中断源 1 外部中断 和 2 定时 计数器T0和T1中断 当定时 计数器T0 或T1 溢出时 由硬件置TF0 或TF1 为 1 向CPU发送中断请求 当CPU响应中断后 将由硬件自动清除TF0 或TF1 3 串行口中断 51单片机的串行口中断源对应两个中断标志位 串行口发送中断标志位TI和串行口接收中断标志位RI 无论哪个标志位置 1 都请求串行口中断 到底是发送中断TI还是接收中断RI 只有在中断服务程序中通过指令查询来判断 串行口中断响应后 不能由硬件自动清 0 必须由软件对TI或RI清 0 2 中断允许控制 3 优先权控制 外部中断0定时 计数器T0中断外部中断1定时 计数器T1中断串行口中断定时 计数器T2中断 4 51单片机中断系统的逻辑结构 各中断服务程序的入口地址见表 三 MCS 51中断系统的应用 例 某工业监控系统 具有温度 压力 PH值等多路监控功能 中断源的连接如图5 26所示 对于PH值 在小于7时向CPU申请中断 CPU响应中断后使P3 0引脚输出高电平 经驱动 使加碱管道电磁阀接通1秒钟 以调整PH值 系统监控通过外中断

温馨提示

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

评论

0/150

提交评论