已阅读5页,还剩64页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章AT89S51单片机原理与基本应用系统 本章主要内容 一 AT89S51单片机内部结构 1 一个8位的CPU 2 一个片内振荡器及时钟电路 3 4KB的FlashROM 4 128B的内部RAM 5 可扩展64KB外部ROM和外部RAM的控制电路 6 两个十六位的定时 计数器 7 26个特殊功能寄存器 双数据指针 8 4个8位的并行口 9 一个全双工的串行口 10 5个中断源 两个外部中断 三个内部中断 11 内部硬件看门狗电路 12 一个SPI串行接口 用于芯片的在系统编程 ISP 1 电源VCC P40 芯片电源 接 5V VSS P20 接电源地 二 AT89S51单片机引脚功能 2 时钟XTAL1 P19 晶体振荡电路的反相器输入端XTAL2 P18 晶体振荡电路的反相器输出端 使用内部振荡电路时 该引脚外接石英晶体和补偿电容 使用外部振荡输入时从XTAL2输入 此时XTAL1需接地 3 控制控制引脚有4个 先学习其中的两个 1 RST VPD 复位 备用电源RST复位功能是单片机正常工作必不可少的 因为复位可以使单片机从程序的开头运行 使单片机按照人们设计的程序运行 在单片机系统上电开始工作 或单片机系统由于外界干扰偏离正常运行 都需要复位 AT89S51单片机是高电平复位 只要在该引脚上一段时间 两个机器周期以上 的高电平 单片机就复位 在正常运行程序时该引脚为低电平 VPD功能是在VCC掉电情况下 该引脚接备用电源 向片内的RAM供电 使RAM中的数据不丢失 3 控制 2 EA VPP 内外ROM选择 EPROM编程电源在通常的应用中EA功能是作为内部和外部ROM的选择端 当EA 1 CPU从芯片内部的ROM中取指令运行 但超过4KB范围的程序 也从外部扩展的ROM中取得 反之当EA 0时 只从芯片外部扩展的ROM中取指令运行 在绝大多数的应用中 4KB空间范围足够存放程序 一般都选择内部ROM 将EA接高电平 VPP功能是在我们要把程序下载到内部ROM中才用到的功能 只有设计制造编程器时考虑 一般情况用不到 4 I O口AT89S51单片机有4个8位的并行口 分别称为P0口 P1口 P2口和P3口 共32个引脚 单片机就是通过这些口线对外部电路进行控制和检测 它们的详细结构原理和功能在本章第三节中介绍 三 AT89S51单片机存储空间配置 AT89S51单片机存储器结构采用的是哈佛型结构 程序存储器 ROM 和数据存储器 RAM 是分开的 有各自的寻址系统和控制信号 分别用不同的指令操作 ROM用来存放我们编写的程序和常数表格 数据存储器用来存放程序运行的数据和结果 ROM和RAM都分为内部和外部 内部ROM 4KB EA 1 外部ROM 4KB EA 0 外部ROM 60KB 内部RAM128B SFR 21个 外部RAM 64KB 0000H 0000H 0000H 0FFFH 0FFFH 1000H FFFFH FFFFH FFH 00H 7FH 80H MOVC指令操作 MOV指令操作 MOVX指令操作 ROM地址空间 RAM地址空间 1 程序存储器 ROM 不管是内部的还是外部的ROM 开头的0003H 002AH空间地址是中断源的入口地址区 是专用单元 一般情况下用户不能用来存放其它程序 CPU是根据PC 程序计数器 值从ROM中取指令来执行的 CPU每从ROM中读取一个字节 自动执行 PC 1 PC 即PC指向下一个地址空间 一般情况下CPU是按ROM地址空间顺序从小到大依次执行 只有执行的指令是转移类指令 才根据转移类指令所指示的新地址 调整PC值 然后根据新的PC值从对应的地址空间中取指令来执行 当调用子程序或中断发生时 PC值也会改变 2 内部数据存储器 内RAM AT89S51单片机内部有128B字节划分为三部分 工作寄存器区 位寻址区和数据缓冲区 0区 1区 2区 3区 位寻址区 数据缓冲区 工作寄存器区8位整体操作 位寻址区8位整体操作 位操作 堆栈与数据缓冲区8位整体操作 00 07H 08 0FH 10 17H 18 1FH 20 2FH 位地址 D7 D0 PSW D7 D0 20H 字节地址 R0 R7 30 7FH 1 工作寄存器区从00H 1FH共32个单元为工作寄存器区 每8个一组 分为4个区 依次为 0区 00H 07H 1区 08H 0FH 2区 10H 17H 3区 18H 1FH 在任一时刻只有一个区作为当前的工作寄存器区 相应的空间单元作为工作寄存器使用 工作寄存器区的选择可通过程序状态字PSW中的D4 D3位实现 不是当前工作寄存器区的可以作为一般的RAM空间使用 操作方式 8位整体操作 2 位寻址区20H 2FH共计16个单元为位寻址区 每个单元的8位又位操作 有位的置1 清0 取反以及判断操作有自己的位地址 位地址的范围 00 7FH 要注意和内RAM空间单元地址的区别 位寻址区空间单元操作的有两种方法 即可以象其它RAM空间一样进行8位整体操作 也可以通过位地址对这些空间单元的某一 位寻址区的位地址映象表 位寻址区的位地址形式有两种 位地址和位编号 位地址 D7 D0 20H 字节地址 如20H单元的8个位位地址为 00H 07H位编号为 20H 0 20H 7它们的含义是一致的 都表示20H单元的位地址 在应用中可以互换 位编号更便于记忆 3 堆栈与数据缓冲区30H 7FH为数据缓冲区 用于存放数据和中间结果 起到数据缓冲的作用 这些空间数据的操作是8位的整体操作 3 特殊功能寄存器 SFR 51系列单片机的状态字 并行口 串行口 定时器和中断系统的寄存器等 是一些有专门用途的寄存器 称为特殊功能寄存器SFR 离散地分布在80H FFH地址范围内 SFR操作同内部RAM的操作 其中字节地址能被8整除的特殊功能器 它们的每一位也有自己的位地址 也可以进行位操作 字节地址不能被8整除的特殊功能寄存器 只能8位的整体操作 8位整体操作既可以对它们的字节地址操作 也可以对它们的符号 名称 操作 几个常用的特殊功能寄存器 1 累加器ACC累加器ACC是51系列单片机最常用的寄存器 许多指令都用到累加器 特别是算术运算都需要用到 在指令中ACC简写为A 2 寄存器B乘除法指令都要用到寄存器B B也可以作为一般的寄存器使用 3 程序状态字寄存器PSW PSW反映的程序运行的状态 其结构和含义如下表所示 Cy 进位标志 累加器A在执行加减法运算中 如果最高位有进位或借位 Cy置1 否则清0 用于无符号数运算 另Cy还是位操作累加器 在指令中简写为C OV 溢出标志 累加器A在执行加减法运算中 如果最高位和次高位只有一个进位或借位 OV置1 否则清0 用于有符号数的运算 AC 进位标志辅助 累加器执行加法运算时 低4位向高4位进位时置1 否则清0 BCD码加法运算调整标志 P 奇偶标志 表示累加器A中 1 的个数的奇偶性 如果A中 1 的个数为奇数 则P置1 否则清0 F0 F1 用户标志 与位寻址区的位地址功能相同 RS1 RS0 工作寄存器区选择位 工作寄存器区有4个 每次只有一个区当作工作寄存器用 通过RS1 RS0可以选择它们中的一个 RS1 RS0 00 0区 00H 07H RS1 RS0 01 1区 08H 0FH RS1 RS0 10 2区 10H 17H RS1 RS0 11 3区 18H 1FH 例2 1 设A中有下面的加法运算 分析PSW中有关位的值 及其表示的含义 01100111 0010100110010000最高位没有向更高位进位 因此Cy 0 表明如果我们把这两个数看作无符号数 它们的和没有超过256 次高位向最高位进位 最高位没有进位 因此OV 1 表明如果我们把这两个数看作有符号数 它们的和超出了范围 显然两个正数相加 不可能得到负数 低4位向高4位进位 AC 1 表明如果把这两个数看作是BCD码表示的数 需要在低4位加6调整才能得到结果仍是BCD码的正确结果 显然看作BCD码 两个分别是67和29 相加后得到96 低4位加6可得96的BCD码 加法运算的结果是放在A中的 8位中共有2个 1 因此P 0 表明此时累加器中的数据满足偶校验 4 数据指针DPTR0 DPTR1 AT89S51单片机内部有两个数据指针 都是16位 但在某一时刻只能使用其中一个作为数据指针DPTR 由辅助寄存器1 AUXR1 的DPS位控制 DPS 0 选择DPTR0的两个8位的寄存器构成数据指针 DPS 1 选择DPTR1的两个8位的寄存器构成数据指针 统一用DPH表示DPTR的高8位 DPL表示低8位 可以十六位整体操作 也可以分开按8位操作 在实际的应用中DPTR一般用来存放ROM空间或外部RAM空间的地址 一 汇编语言指令的基本格式 1 51系列单片机汇编语言指令格式由4部分构成 标号 操作码 目的操作数 源操作数 注释 1 标号 为该指令的符号地址 根据需要设置 标号以字母开头 由字母 数字和下画线组成的字符串 字符串的最后必须有 系统的保留字不能作为标号 标号是该指令的符号地址 它的实质是反映该指令在ROM中的地址 存放位置 因此在同一个程序中标号不可重复 标号在程序中主要是作为其它转移类指令的目的地址 或子程序的名称 指令举例 LOOP MOVA 20H 将20H单 元内容送 累加器A 2 操作码操作码是每条汇编语言指令都必须有的 它是51系列单片机指令系统规定的助记符 规定某条指令的操作功能 3 操作数操作数是参与操作的数据或地址 不同功能的指令 操作数的个数是不同的 在0 3个之间 在书写时操作数和操作码之间要留有空格 当有多个操作数时 操作数之间要用 隔开 前面的操作数称为目的操作数 后面的称为源操作数 4 注释 是对该条指令的说明 便于阅读和理解程序功能 必须以 开始 二 51系列单片机汇编语言指令中常用符号即操作数的符号 1 Rn 当前工作寄存器区的8个工作寄存器R0 R7 n 0 7 2 Ri 当前工作寄存器R0和R1 i 0 1 3 direct 8位的直接地址 代表内部RAM00H 7FH单元 以及特殊功能寄存器的字节地址或名称 4 Ri 8位的间接地址 也代表内部RAM00H 7FH的某一单元 此时工作寄存器Ri的内容是多少 就代表相应的单元 用间址寻址的优点之一是循环方便 5 data 8位的立即数 所谓立即数就是指令中直接参与操作的数据 6 data16 16位的立即数 7 bit 位地址 代表内部RAM位寻址区 20H 2FH 中可寻址位以及SFR中的可寻址位 具体的形式可以是位地址 位编号以及位定义 8 addr16 十六位的目的地址 9 addr11 11位的目的地址 10 rel 带符号的8位偏移地址 范围是 127 128 X 某寄存器或某单元 X 某寄存器或某单元中的内容 指令执行后数据传送的方向 操作数在具体程序中是数字形式或标号 direct data bit可以用二进制数 十进制数或十六进制数书写 用十六进制数时 如果高位是A B C D E F时 必须在数的前面加0 以便和标号区别开来 addr16 addr11 rel在程序中的形式就是编程者所起的标号名称 三 内部RAM的操作指令1 内RAM间的数据传送指令MOV 目的操作数 源操作数 MOV 是操作码 英语MOVE的简写 功能就是把源操作数传送到目的操作数 源操作数保持不变 操作数就是我们前面讲的A Rn direct Ri data 1 以累加器A为目的地址传送指令 1 以累加器A为目的地址传送指令1 MOVA Rn A Rn Rn里的内容送 到累加器A2 MOVA direct A direct direct 单元里的内容送A3 MOVA Ri A Ri 内部RAM 某一单元里 以Ri里的 内容为地址的单元 的内容送到累加器A4 MOVA data A data8位的立即 数送到累加器A 2 以工作寄存器Rn为目的地址传送指令1 MOVRn A Rn A2 MOVRn direct Rn direct 3 MOVRn data Rn data注意 工作寄存器相互间 Rn与 Ri之间 R0与 R1之间没有传送指令 3 以direct为目的地址传送指令1 MOVdirect A direct A2 MOVdirect Rn direct Rn3 MOVdirect1 direct2 direct1 direct2 4 MOVdirect Ri direct Ri 5 MOVdirect data direct data 4 以 Ri为目的地址传送指令1 MOV Ri A Ri A2 MOV Ri direct Ri direct 3 MOV Ri data Ri data 例2 2 分析下面程序运行的结果MOVA 30H A 30H 即A 30HMOVR0 A R0 A 即R0 30HMOV70H R0 70H R0 即 70H 30HMOV R0 55H R0 55H 即 30H 55HMOVR1 30H R1 30H 即R1 30H 55HMOV55H 0AAH 55H AAH 即 55H AAHMOV40H R1 40H R1 即 40H 55H AAH 2 累加器A的清零与取反指令CLRA A 0 将累加器A的内容 清为0CPLA 将累加器A的内容按位 取反3 16位数据传送指令MOVDPTR data16 data16 DPTR 4 位操作指令1 位置1指令SETBbit bit 1SETBC C 12 位清0指令CLRbit bit 0CLRC C 03 位取反指令CPLbit bit bitCPLC C C 4 位传送指令MOVbit C bit CMOVC bit C bit位操作指令中bit的形式可以是位地址 位编号和位定义 例如 CLR0D4HSETB0D3H CLRPWS 4SETBPWS 3 CLRRS1SETBRS0 三组指令的功能是一致的 都是选择工作寄存器1区作为当前工作寄存器 注意 以字母为开头的地址前要加零 以和整个程序中转移的标号相区别 一 P0口 作为I O使用时 CPU有关指令执行产生的时序信号使这时的 控制 为0 电子开关接通B端 地址 数据 信号与后面的电路联系被切断 同时使与门输出0 V1截止 使输出级为开漏输出电路 1 作为输出口此时输出级是开漏状态 所以要外接上拉电阻 1 输出0 0 在写锁存器信号作用下 输出到Q Q输出 1 使V2导通 在引脚上输出0 低电平 2 输出1 1 在写锁存器信号作用下 输出到Q Q输出 0 使V2截至 在引脚上输出1 高电平 2 作为输入口作为输入口使用时 V2必须截至 外信号才能加到引脚上 当向锁存器写入 1 时 V2截止 在做输入操作之前先向锁存器写入 1 引脚上的信号在 读引脚 信号作用下读入单片机内部 3 读 修改 写 读 修改 写 操作是对I O的逻辑运算操作 该类指令操作时 CPU时序使 读锁存器 信号有效 将锁存器的状态读入单片机内部 与指令中的操作数进行逻辑运算 再将运算结果写入锁存器 在引脚上输出 P0口的负载能力 8个LSTTL门电路 二 P1口 作为I O使用时 和P0口有类似的功能 与P0口的区别 1 P1口内部有上拉电阻 在作为输出口使用时不需接上拉电阻 2 P1口的驱动能力是4个LSTTL门电路 三 P2口 1 作为I O使用时 CPU有关指令执行产生的时序信号使这时的 控制 为0 电子开关接通B端 地址 信号与后面的电路联系被切断 2 作为I O口使用时 P2口性能与P1口相同 四 P3口 1 作为I O口使用时 P3口的性能与P1口相同 2 P3口的第二功能 1 第二功能输出需向该位的锁存器写入 1 使与非门的输出只受 第二功能输出 控制 第二功能输出信号通过与非门和输出级电路到该位的引脚上 2 P3口的某位作为第二功能输入使用时 该位的锁存器和 第二功能输出 端会自行置 1 V截止 该位引脚上的信号通过缓冲器送入 第二功能输入 P3口的第二功能 P3 0 RXD 串行口输入端 P3 1 TXD 串行口输出端 P3 2 INT0 外部中断0中断请求信号输入端 P3 3 INT1 外部中断1中断请求信号输入端 P3 4 T0 定时 计数器0外部信号输入端 P3 5 T1 定时 计数器1外部信号输入端 P3 6 WR 外RAM写选通信号输出端 P3 7 RD 外RAM读选通信号输出端 五 I O口的操作 I O口的操作指令 内部RAM操作指令 操作的方式有两种 8位整体操作和位操作 以P1口为例输出操作 MOVP1 55H 将55H立即数从P1口输出MOVP1 A 将累加器A中的内容从P1口输出SETBP1 0 在P1 0引脚输出高电平CLRP1 1 在P1 1引脚输出低电平 输入操作 MOVP1 0FFH 向P1口的8位锁存器都写入 1 MOVA P1 将P1口8个引脚上的信号送入累加器AMOVP1 0FFH 向P1口的8位锁存器都写入 1 MOVR0 P1 将P1口8个引脚上的信号送入R0中SETBP1 0 向P1 0的锁存器写入 1 MOVC P1 0 将P1 0引脚的信号读到Cy中 I O口小结 1 作为输出口使用 P0口需外接上拉电阻 其余口不需外接上拉电阻 2 作为输入口使用时 都需先向对应的锁存器写入 1 3 每一位可任意地作为输入口或输入口使用 一般用低电平驱动外部电路 4 P0口每位的负载能力是8个LSTTL门电路 P1 P2 P3口每位负载能力为4个LSTTL门电路 5 I O口的输入 输出指令同内RAM操作指令 一 最小硬件系统 1 电源 5V 2 时钟电路与时序有关的概念 1 时钟周期 即时钟频率的倒数 2 状态周期 两个时钟周期构成一个状态周期 3 机器周期 12个时钟周期构成一个机器周期 指令的执行都是以机器周期为时间单位 4 指令字节 指某条指令占用存储空间的长度3 复位电路 1 复位条件 两个机器周期以上的高电平 2 复位后的状态 单片机复位后各寄存器状态 PC 0000HTMOD 00HACC 00HTCON 00HB 00HTH0 00HPSW 00HTL0 00HSP 07HTH1 00HDP0H 00HTL1 00HDP0L 00HSCON 00HDP1H 00HSBUF BDP1L 00HPCON 0 0000BP0 P3 FFHWDTRST BIP 00000BAUXR 00 0BIE 0 00000BAUXR1 0B 二 汇编语言程序一般结构 ORG0000H 汇编程序开头LJMPSETUP 跳过中断入口地址区 中断入口地址区ORG0030HSETUP 初始化区MAIN 主程序区LJMPMAIN 主程序一般是反复循环执行程序 子程序和中断服务程序区END 汇编程序结束 注 此程序又被称做最小软件系统 1 无条件转移指令 1 长转移指令LJMPaddr16 PC addr16 转移范围为64KB 2 短转移指令AJMPaddr11 PC PC 2 PC10 0 addr11 PC15 11不变 3 相对转移指令SJMPrel PC PC 2 PC PC rel如果转移指令到自己本身 可以省略指令前面的标号 而用 代替转移的目标地址 下面的指令是等价的 HERE SJMPHERE SJMP HERE LJMPHERE LJMP 2 伪指令汇编 将汇编语言程序和C语言程序转换成机器语言的过程称为 汇编 或 编译 注 汇编有手工汇编和计算机汇编 伪指令 计算机在汇编过程中需要编程人员提供一些有关汇编信息的指令 如 指定程序或数据存放的其始位置 汇编的结束等 这些指令在汇编时不产生机器码 仅对汇编过程起一些控制作用 为汇编服务 这些指令不属于51系列单片机的指令系统 我们称它们为伪指令 1 ORG起始伪指令格式 ORG16位地址功能 指定其下面的程序在存储空间的起始地址 例如 ORG0000HLJMPSETUPORG0000H表示它下面的指令LJMPSETUP在ROM空间的0000H单元开始存放 2 END结束伪指令格式 END功能 表明汇编源程序的结束 3 汇编语言程序一般结构 1 程序的开头ORG0000HLJMPSETUP 2 中断入口地址区0003H 002BH这段存储空间是作为中断入口地址 3 初始化区系统开始运行的初始参数设置 如果系统中用到中断资源 4 主程序区主程序的内容往往是CPU需要不断反复处理的任务 最常用的就是显示程序和键盘程序 主程序一般是一个反复执行的程序 5 子程序和中断服务程序区主程序中需要调用的子程序 中断源的服务程序 三 I O口的简单应用 循环彩灯 1 I O作为基本的输入输出口使用有何要求 2 MCS 51单片机的最小应用系统 课前复习 ORG0000HLJMPSETUP ORG0030HSETUP MAIN LJMPMAIN END 最小硬件系统 程序一般结构 4031AT89C5119181920 新课内容 限流电阻计算公式 R 5 1 8 I经过计算得 320 800 熄灭 SETBP1 0 P1 0 0 0v 1 5v 5V P1 0 P1 0 图 a 图 b 点亮 CLRP1 0 图 b 举例 思路 在最小硬件系统基础上 用P1口作输出 用低电平驱动LED发光管 LED发光条件是 电压1 8V左右 电流4 10mA 为满足要求 电路中串接限流电阻 经计算取360 电路如图所示 设计一个由8个小灯构成的循环彩灯 要求 8个小灯依次亮灭 然后重复循环 一 循环彩灯硬件电路 360 5V 最小系统P1 0P1 7 二 软件设计 思路 软件设计是在程序一般结构基础上 根据所要求的显示方式 用位操作指令CLRP1 X SETBP1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跌倒防范护理措施
- 2025年公路工程试验检测师资格考试交通工程综合试题及答案
- 校园食品安全排查整治专项行动实施方案
- 2024年中级消防设施操作员理论真题及答案
- 2025年职业化工会工作者考试工会基础知识历年参考题库含答案详解
- 兽药GMP(生产、卫生)培训试题及答案
- 运动反应训练讲解
- 徽式内部建筑特色解析
- 2024年版社会工作者职业水平社会工作实务初级考试题库及答案
- 2025版肿瘤科疾病常见症状及护理培训
- 2025至2030中国冷冻机油行业项目调研及市场前景预测评估报告
- 码头环保宣传培训
- 第2单元第6课《认识操作系统桌面》课件 【甘少版】《信息科技》四年级上册
- 2024-2025学年陕西省西安市碑林区部分学校北师大版四年级上册期中测试数学试卷(含答案)
- 2025年及未来5年中国电梯维保行业市场前景预测及投资战略研究报告
- 卫生知识培训合格卡课件
- 2025年注册安全工程师考试题及答案
- 生成式人工智能培训
- 2025AICon全球人工智能开发与应用大会-深圳站:阿里云大模型应用落地实践之路
- 2025年高考真题分类汇编必修三 《政治与法治》(全国)(解析版)
- 机器学习原理及应用课件:回归分析
评论
0/150
提交评论