




已阅读5页,还剩459页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用 主讲人:袁凌峰 电 话:2066266 E-mail:yuan_ 第1章 单片机概述 本章重点: 1、什么是单片机 2、单片机的分类及特点 3、 什么是嵌入式系统 1.1 单片机概况 1.1.1 什么是单片机 单片机 是单片微型计算机的简称。将计算机的CPU、 RAM、ROM、定时/计数器和多种IO接口集成在一片芯 片上,形成了芯片级的计算机。 单片机早期的含义称为单片微型计算机(single chip microcomputer),直译为单片机。 准确反映单片机本质的叫法应该是微控制器 MicroController Unit (MCU)或MicroProcesser Unit(MPU) 单片机也称为嵌入式微处理器(Embedded MicroProcesser) 或嵌入式微控制器(Embedded MicroController) 1.1.2 单片机的发展简史及未来 初级阶段:1974-1978年。代表芯片Intel公司的MCS-48 系列,Motorola公司的6801系列和Zilog公司的Z8系列。 高性能阶段:1978-1983年。代表芯片Intel公司的MCS 51系列。 8位单片机巩固提高阶段:1983年-现今。这一阶段一方面 不断完善8位单片机,另一方面发展16位、32位机。 单片机的发展趋势:8位机是主流,未来是8位机 与32位机共同发展的时代。 单片机从结构功能上的发展趋势: 1、大容量高性能化 2、小容量低价格化 3、外围电路内装化 4、RISC结构取代CISC结构 1.1.3 单片机的分类及特点 1、分类 (1)按指令集分类 复杂指令集(CISC)结构普林斯顿结构 精简指令集(RISC)结构哈佛结构 (2)按半导体工艺分 高密度短沟道MOS工艺HMOS 互补金属氧化物HMOS工艺CHMOS (3)按片内程序存储器类型分 无ROM型、QTP型、EPROM型、OTP型和Flash型 (4)按字长分 1位、4位、8位、16位、32位、64位 2、单片机的特点 (1)优异的性价比 (2)集成度高、体积小、可靠性高 (3)控制功能强 (4)低电压、低功耗 1.1.4 单片机的应用 1、在智能仪器仪表中的应用 2、在工业方面的应用 3、在电信中的应用 4、在军用导航方面的应用 5、在日常生活中的应用 6、在其它方面的应用 1.2 常用8位系列单片机简介 1.2.1 Intel公司8位系列单片机 1.2.2 89系列单片机 1、AT89系列(美国Atmel公司) 2、P89系列(Philiips公司) 特点:126时钟模式,支持ISP 1.2.3 W78E51系列(台湾华邦公司) 1.2.4 M68HC08系列(Motorola公司) Motorola公司单片机命名方法 指令系统与MCS-51不同 1.2.5 PIC系列(美国Microchip公司) 1.3 单片机与嵌入式系统简介 1.3.1 什么是嵌入式系统 嵌入式系统就是将计算机系统按特定的要求嵌入到 实际应用系统中。 嵌入式系统一般是指非PC机系统,它由硬件和软件两 大部分组成。硬件包括微处理器MCU、存储器、I/O端口及 外设、图形控制器等;软件包括操作系统(OS或实时多任 务操作系统)、应用程序系统、或称监控程序系统等。 1.3.2 嵌入式计算机系统与通用型计算机的特点 1. 嵌入式系统是面向特定的应用 2. 嵌入式系统是知识集成系统 3. 嵌入式系统的硬、软件必须具有高效率 4. 嵌入式系统和实际应用有机地结合在一起 5. 嵌入式系统的软件固化于内部存储器中 6. 嵌入式系统本身无自举开发能力 1.3.3 嵌入式系统的发展趋势 1. 嵌入式系统应用软件的开发需要强大的开发工具和操作系统的支持 2. 联网成为发展的必然趋势 3. 支持小型电子设备实现小尺寸、微功耗和低成本 4. 应能提供精巧的多媒体人机界面 1.4 常用单片机开发工具 1.4.1 Keil51 集成开发环境 目前常用版本Vision3 V3.31。特点: 1、集成开发环境,源程序编辑、编译、链接、调试均在 集成环境下 2、支持多种处理器(包括ARM) 3、支持C语言和汇编语言 4、支持源程序调试 5、支持硬件仿真器 6、支持软件仿真器 Keil 软件的启动画面 利用Keil 集成开发环境调试程序 1.4.2 Proteus仿真软件 目前版本 V7.2SP1 ,用的较多的版本是V6.7SP3和V7.12 特点: 1、可以实现单片机、接口芯片的电路仿真,非常适用 于教学和产品开发的前期阶段。 2、与MutsimEWB功能相当,但比其小巧, V6.7SP3压缩包仅18.5M。并且可以实现多种单片机(MCS -51、PIC系列、ARM系列)的仿真和程序调试。 3、对计算机的硬件要求非常低(赛扬2.0 256M内存 ) 利用Proteus软件在进行数字电压表的调试和仿真 1.4.3 有关网站和参考书 电子开发网: 单片机开发工具网: 力源信息: 成都力源单片机技术有限公司: 周立功单片机: Proteus仿真社区: /html/bbs.html 参考书: 单片机原理及应用 万文略主编 重庆大学出版社 单片机原理及接口技术 李朝青编著 北京航空航天大学出版社 Proteus入门实用教程 周润景 张丽娜 刘印群 编著 机械工业出版社 小 结 单片机,是单片微型计算机的简称。将计 算机的CPU、RAM、ROM、定时/计数器和多 种IO接口集成在一片芯片上,形成了芯片级 的计算机。 嵌入式系统就是将计算机系统按特定的要 求嵌入到实际应用系统中。嵌入式系统一般是 指非PC机系统,它由硬件和软件两大部分组成 。 作 业 教材:P17 1-1,1-4,1-6 1-1、什么叫单片机?它有哪些特点? 1-4、单片机主要应用在哪些方面? 1-6、什么叫嵌入式系统?它与单片机的关系如何? 第二章 单片机内部结构及原理 本章要点 MCS5152系列CPU内部结构特点 MCS5152系列单片机存储器的结构 MCS-5152系列单片机I/O端口结构及驱动能力,使用时的注意事项 MCS5152系列单片机存储器空间结构及位寻址空间 2.1 Intel公司的MCS-51/52系列单片机内部结构原理 2.1.1 MCS-51/52系列单片机CPU的结构 MCS-51/52系列单片机内部由一个8位CPU、128256B数据 存储器、程序存储器、23个16位定时器、4个8位的可编程I/O端 口和可编程全双工UART串行口等组成。 1 控制器 控制器由程序计数器 (PC,16位)、指令寄存器(IR,8位) 、指令译码器(ID)、定时控制与条件转移逻辑电路等组成。它的 功能是对来自存储器中的指令进行译码,通过定时控制电路,在规 定的时刻发出各种操作所需的全部内部和外部的控制信号,使各部 分协调工作,完成指令所规定的功能。 2 运算器 运算器由算术逻辑单元ALU、累加器ACC、暂存器、程序状态 字寄存器PSW、BCD码运算调整电路等组成。 (1) 累加器ACC ACC是一个8位的寄存器,简称为A,它通过暂存器与ALU相连 。它是CPU执行指令时使用最频繁的寄存器,用来存一个操作数或 中间结果。 (2) 算术逻辑单元ALU ALU是由加法器和其它逻辑电路等组成的,它用于对数据进行算术 四则运算和逻辑运算、移位操作、位操作等功能。ALU的两个操作数, 一个由A通过暂存器2输入,另一个由暂存器1输入,运算结果的状态送 PSW。 (3) 程序状态字寄存器PSW PSW是一个8位的专用寄存器,用于存程序运行中的各种状态信息。 它可以进行位寻址。PSW各位的定义如下: D7HD6HD5HD4HD3HD2HD1HD0H CYACF0RS1RS0OVF1P PSW位地址 字节地址D0H CY(PSW. 7): 进位标志,在进行加或减运算时,如果操作结果 最高位有进位或借时,CY由硬件置“1”,否则清“0”。在进行位操作 时,CY又可以被认为是位累加器,它的作用相当于CPU中的累加器 A。 AC(PSW.6): 辅助进位标志(又称半进位),在进行加或减运 算时,低四位数向高四位产生的进位或借位,将由硬件置“1”,否则 清“0”。AC位可用于BCD码调整时的判断位。 F0(PSW.5): 用户标志位,由用户置位或复位。它可作为用户自 行定义的一个状态标记。 RS1 RS0(PSW.4 PSW.3): 工作寄存器组指针,用以选择CPU 当前工作的寄存器组。 RS1 RS0与工作寄存器组的对应关系 OV(PSW.2): 溢出标志,当进行算术运算时,如果产生溢出,则 由硬件将OV位置1,否则清“0”。 当执行有符号数的加法指令ADD或减法指令SUBB时,当D6位有向 D7位的进位或借位时 D6CY=1时,而D7位没有向CY位的进位或借位D7CY =0时,则OV=1或D6CY =0,D7CY=1则OV=1所以溢出的逻辑表达式为: OV= D6CY D7CY F1(PSW.1): 用户标志位,同F0。 P(PSW.0): 奇偶标志位,该位始终跟踪累加器A内容中“1”的奇偶 性。当累加器A内容中有奇数个“1”时,P置1;否则,P置“0”。改变累加 器A中内容的指令均会影响P标志位。 2.1.2 MCS-51/52单片机存储器结构 1 MCS-51/52单片机存储器划分方法 2 程序存储器 MCS-51/52单片机的程序存储器一般用于存放编好的程序、表格和 常数。8051片内有4KB的ROM,8751片内有4KB的EPROM,8031片 内无程序存储器,8052片内有8KB的ROM,8752片内有8KB的 EPROM,8032片内无程序存储器。 当EA=1时,PC在00FFFH范围内执行片内ROM中的程序;PC在 1000H0FFFFH范围内执行片外ROM中的程序。 当EA0时,PC在00FFFFH,64k范围内执行片外ROM中的程序 。 MCS-51/52单片机的程序存储器中有7个特殊地址单元。 0000H: MCS-5152单片机复位后PC=0000H,即程序从0000H开 始执行指令。 0003H: 外部中断0入口地址 000BH: 定时器0溢出中断入口地址 0013H: 外部中断1入口地址 001BH: 定时器1溢出中断入口地址 0023H: 串行口中断入口地址 002BH: 定时器2溢出,T2EX(P1.1)端负跳变时的入口地址(仅对52 子系列单片机所具有)。 3 数据存储器 数据存储器用于存放运算中间结果、数据暂存和缓冲、标志 位、待调试的程序等。数据存储器在物理上和逻辑上都分为两个地 址空间:一个是片内128/256字节的RAM,另一个是片外最大可扩 充64K字节的RAM。访问片内RAM使用MOV指令,访问片外RAM 使用MOVX指令。 对片外RAM只能采用间接寻址方式,用R0、R1和DPTR作为 间址寄存器;前两者是低8位地址指针,寻址范围为256B,而 DPTR是16位地址指针,故寻址范围可达64K字节。 片内数据存储器在物理上又可分为二个不同的区: (1)00H7FH(0127)单元组成低128字节的片内RAM区,对 其访问可采用直接寻址或间接寻址的方式 。其中:01FH共32个 单元分为4组,每组8个单元组成工作寄存器R0R7;20H2FH共 16个字节、128个位的地址为007FH;30H7FH共80个单元,为 用户RAM区,做为堆栈或数据缓冲。 (2)80HFFH(128256)单元组成高128字节的专用 寄存器(SFR)区,只能采用直接寻址方式来访问。 (3)MCS-52子系列中的片内RAM增大了128字节,其 地址范围也是从80HFFH ;为了与SFR区分,对此段的 范围只能采用间接寻址方式来访问。 4 专用寄存器SFR MCS-51/52中共有23个专用寄存器SFR(又称特殊功能寄存 器),其中3个仅52子系列单片机所拥有,5个是双字节寄存器, 11个具有位寻址能力(特点:字节地址可以被8整除),这些专 用寄存器离散地分布在片内RAM的高128字节地址中。专用寄 存器并未占满80HFFH整个地址空间,对空闲地址的操作是无 意义的。若访问到空闲地址,则读入的是随机数。 单片机特殊功能寄存器SFR 注意:系统复位后,(SP)07H,P0P3为0FFH,SBUF内容不定,IP 、IE、PCON部分位的值不确定外,其余寄存器内容均为0. 2.1.3 MCS-51/52系列单片机引脚及功能 下面分别说明各主要引脚的功能 : 1. 主电源引脚Vss和Vcc Vss(20脚):接地 Vcc(40脚):主电源+5V,正 常操作和对EPROM编程及验证 时均接+5V电源。 2. 外接晶振引脚XTAL1和 XTAL2 XTAL1(19脚)和XTAL2(18 脚):接外部晶振的两个引脚。 3. 控制信号引脚 RSTVPD (9脚):单片机复位备用电源引脚。 ALEPROG(30脚):当访问片外存储器时,ALE(地址锁存允许) 的输出用于锁存低字节地址信号。当CPU不访问外部RAM时,该引脚 输出晶振频率1/6频率的正脉冲信号。对于EPROM型单片机,该引脚 在编程期间用于输入编程脉冲。 PSEN(29脚):输出访问片外程序存储器的读选通信号。 EAVpp(31脚):当该输入端输入高电平时,CPU可访问片内程序 存储器4KB或8KB的地址范围。若PC值超出4KB/8KB地址时,将自动 转向访问片外程序存储器。当EA输入低电平时,则只能访问片外程序 存储器,不论片内是否有程序存储器。对于EPROM型单片机(8751), 在对EPROM 编程期间,此引脚用于施加+21V的编程电压Vpp。 注意:ALE和PSEN引脚的驱动能力均为8个LSTTL负载。 4. 输入输出引脚P0、P1、P2、P3 P0.0P0.7(3932脚):P0口是一个8位漏极开路型准双向IO端口。 在访问片外存储器时,它分时做低8位地址总线和8位双向数据总线(AD0 AD7)。在EPROM编程时,由P0口输入指令字节;而在验证程序时, 则输出指令字节。验证程序时和做为双向I/O端口一样,要求外接上拉电阻 。P0口能以吸收电流的方式驱动8个LSTTL负载。 P1.0P1.7(18脚):P1口是一个带内部弱上拉电阻的8位准双向IO 口。在EPROM编程和验证程序时,由它输入低8位地址。P1能驱动4个 LSTTL负载。 在52子系列单片机中,P1.0还相当于专用功能端T2,即定时器的计 数输入/时钟输出端;P1.1还相当于专用功能端T2EX,即定时器T2的重装 载/捕捉/方向等外部控制端。 P2.0P2.7(2128脚):P2口是一个带内部弱上拉电阻的8位准双向I O口。在访问外部存储器时,由它输出高8位地址(A8 A15)。在对 EPROM编程和程序验证时,由它输入高8位地址。P2可以驱动4个LSTTL 负载。 P3.0P3.7(1017脚):P3口是一个带内部弱上拉电阻的准双向IO 口。在MCS-51/52中,这8个引脚还用于专门的第二功能,见下表。P3口 能驱动4个LSTTL负载。 P3口的第二功能表 小 结 1、51系列单片机是8位机。52系列与51系列的差别。 2、51系列单片机得存储器在物理上分为4个存储空间,在逻辑 上分为3个存储空间。 3、程序存储器中7个特殊的单元。 4、内部RAM 07FH根据用途不同分为3个空间。 5、SFR的地址范围在内部RAM 80H0FFH空间内,其中部分 寄存器可以位寻址。 6、系统复位后各个寄存器的值。 7、单片机各引脚的功能及其驱动能力。 2-2、 MCS5152系列单片机内部包含哪些主要逻辑功能部件? 2-4、 MCS5152单片机的存储器从物理上和逻辑上分别可划分 几个空间? 2-6、 MCS51单片机片内256B的数据存储器可分为几个区?分 别做什么用? 2-10、程序状态寄存器PSW的作用是什么?常用状态有哪些位?作 用是什么? 作 业 教材P41 2-2,2-4,2-6,2-10 2.1.4 单片机IO端口结构 1 P0口的结构及功能 (1) P0口结构 它由1个输出锁存器、2个三态输入缓冲器、1个输出驱动电路和1 个输出控制电路组成。输出驱动电路由一对FET(场效应管)组成,其 工作状态受输出控制电路的控制;输出控制电路由一个与门电路,1 个反相器和1个路多路开关MUX组成 (2) P0口的功能 P0口做一般IO口使用时 多路开关MUX的位置由CPU发出的控制信号决定。当P0口做I O端口使用时,CPU内部发出控制电平“0“信号封锁与门,使输出上拉 场效管T1截止,同时多路开关把输出锁存器Q端与输出场效应管T2的 栅极接通。此时P0即做通用的IO口使用。 当P0口做输出口时:内部数据总线上的信息由写脉冲锁存至输出 锁存器,输入D=0时,Q0而Q1,T2导通,P0口引脚输出“0”; 当D=1时,Q1而Q0,T2截止,P0口引脚输出1。输出驱动级是 漏极开路电路,若要驱动NMOS或其他拉电流负载时,需外接上拉电 阻。P0口中的输出可以驱动8个LSTTL负载。 P0口做输入口时:端口中有2个三态输入缓冲器用于读操作。其中 输入缓冲器2的输入与端口引脚相连,故当执行一条读端口输入指令时 ,产生读引脚的选通将该三态门打开,端口引脚上的数据经缓冲器2读 入内部数据总线。 输入缓冲器1并不能直接读取端口引脚上的数据,而是读取输出锁 存器Q端的数据。Q端与引脚处的数据是一致的。结构上这样的安排是 为了适应“读-修改-写”一类指令的需要。 端口进行输入操作前,应先向端口输出锁存器写入“1”,使Q=0则 输出级的两个FET管均截止,引脚处于悬空状态,变为高阻抗输入。 这就是所谓的准双向I/O口。单片机的P0P3都是准双向IO口。 P0口做地址数据总线复用时 在扩展系统中,P0端口做为地址数据总线使用,此时可分为两种 情况: 一种是以P0口引脚输出地址数据信息。 另一种情况由P0口输入数据,此时输入的数据是从引脚通过输入缓 冲器2进入内部总线。 当P0口做地址/数据总线复用时,它就不能再做通用I/O口使用了。 2 P1口的结构及功能 (1) P1口结构 P1口也是一个准双向IO口,其结构见图所示。 P1口在结构上与P0口的区别是:没有多路开关MUX和控制电路部 分;输出驱动电路部分与P0也不相同,只有一个FET场效应管,同时 内部带上拉电阻,此电阻与电源相连。 (2) P1口的功能 P1口可做通用双向IO口使用,当P1口输出高电平时,能向外 部提供拉电流负载,因此不必再外接上拉电阻。当端口用做输入时, 和P0口一样,为了避免误读,必须先向对应的输出锁存器写入“1”, 使FET截止。然后再读端口引脚。 在52子系列单片机和89系列单片机中,P1.0和P1.1是多功能位 。除做一般双向IO口外,P1.0还可以做为定时器计数器2的外部 输入端,这时此引脚以T2来表示;P1.1还可做为定时器计数器2的 外部控制输入,以T2EX来表示。 3P2口的结构及功能 (1) P2口的结构 P2口的位结构中上拉电阻的结构与P1相同,但比P1口多了一个输 出转换多路控制部分。 (2) P2口的功能 当多路开关MUX倒向锁存器输出Q端时,构成了一个准双向IO口 此时P2做通用的IO口用。P2引脚的数据与内部总线相同。当系统扩 展有大于256字节64K字节的外部存储器时,在CPU的控制下,转换 开关MUX倒向内部地址线一端,此时P2口可用于输出高8位的地址。因 为访问外部存储器的操作是连续不断的,P2口要不断输出高8位地址, 故此时P2口不可能再做通用IO口使用。 4P3口的结构及功能 (1) P3口的结构 同样P3口与P1口的输出驱动部分及内部上拉电阻相同,比P1口 多了一个第二功控制部分的逻辑电路(由一个与非门和一个输入缓冲 器组成)。 (2) P3口的功能 P3口是一个多功能的端口。当第二输出功能保持高电平时,打开 与非门,锁存器输出可以通过与非门送FET管输出到引脚端,这是做 通用IO口的输出使用情况。输入时,引脚数据通过三态缓冲器2和3 在读引脚选通控制下进入内部总线。 P3口除了做通用IO使用外,它的各位还具有第二功能。当P3口 某一位用于第二功能做输出时,该位的锁存器应置“1”,打开与非门, 第二功能端内容通过“与非门”和FET送至端口引脚。当做第二功能输入 时,端口引脚的第二功能信号通过缓冲器3送到第二输入功能端。 总之,无论P3口做通用输入口还是做第二输入功能口用,相应位 的输出锁存器和第二输出功能端都应置“1”,使FET截止。P3口的引脚 信号输入通道中有2个缓冲器,当做第二输入功能时,引脚输入信号取 自缓冲器3的输出;做通用输入口时输入信号取自三态缓冲器2。 5. 端口负载能力和接口要求 P0口的输出级与P1P3口的输出级在结构上是不相同的,因此他 们的负载能力和接口要求也各不相同。 (1) P0口的每一位输出可驱动8个LSTTL负载。P0口在驱动拉电 流和MOS负载时必须要接上拉电阻。 (2) P1P3口的输出级均接有内部上拉电阻,他们的每一位输出 可以驱动4个LSTTL负载。 (3) P0P3口都是准双向IO口,做输入时,必须先向相应端口 的锁存器写入“1”,使驱动管FET截止。P0口输入时呈高阻态,而P1 P3口内部有上拉负载电阻,当系统复位时,P0P3端口锁存器全为“1” 。 2.3 单片机的振荡器及时序电路 几个概念: 指令周期:单片机执行一条指令所需的时间。一般由几个机器周期 组成。 机器周期:CPU访问存储器一次所需要的时间。机器周期由若干个 时钟周期组成。 时钟周期(状态周期):由2个节拍构成。 节拍振荡周期1fosc 单片机的一个机器周期包含6个状态周期,即12个振荡周期。依次用 S1P1、S1P2、S2P1、S2P2、S6P1、S6P2表示。 2.3.1 振荡器和时钟电路 1. 单片机内部时钟电路 图为HMOS型单片机的振荡电路,当外接晶振时,C1和C2值通 常选择30pF;外接陶瓷谐振器时,C1和C2的典型值约为47pF。在 设计印刷电路板时,晶体或陶瓷谐振器和电容应尽可能安装在单片机 芯片附近,以减少寄生电容,保证振荡器稳定和可靠工作。为了提高 温度稳定性,应采用NPO电容。C1、C2对频率有微调作用,振荡频 率范围是1.2MHz12MHz。 2. HMOS型单片机外部时钟源的接法 对HMOS型单片机,外部振荡器的信号接至XTAL2端,而 内部反相放大器的输入端XTAL1端应接地,如图所示。由于 XTAL2端的逻辑电平不是TTL的,故建议外接一个上拉电阻。 3. CHMOS型单片机的外部时钟源的接法 对CHMOS型的单片机,接线方法与HMOS型的单片机有所不 同:外部振荡器的信号接至XTAL1,而XTAL2不用。左图是 CHMOS型单片机的振荡电路,右图是CHMOS型单片机的外部时 钟源的接法图。 4. 对外部时钟信号的要求 最小的高电平和低电平持续时间应符合产品技术的要求(皆为 20ns),一般为频率低于12MHz的方波。这种方式适用于多块芯片同 时工作时,便于同步。 2.3.2 单片机的复位电路 1. 复位结构 HMOS型单片机的复位结构见左图。复位引脚RSTVPD通过一个施 密特触发器与单片机复位电路相连。 CHMOS型的复位结构见右图,此处的复位引脚只是单纯地称为RST ,而不是RSTVPD。 振荡器正在运行的情况下,复位是靠在RSTVPD或RST引脚加持续 二个机器周期的高电平来实现的。 复位时, ALE=1和PSEN=1 ,复位后PC指向0000H。 2. 复位电路 单片机的复位有上电自动复位和按钮手动复位两种。 上电复位是利用电容充电来实现的。上电复位所需的最短时间是振 荡周期建立时间加上2个机器周期时间,在这个时间内RSTVPD端的电 平应维持高于施密特触发器的下阈值。 手动复位分为按钮脉冲复位和按钮电平复位。 按钮脉冲复位电路如下图所示。由外部提供一个复位脉冲宽度 大于2个机器周期。复位脉冲过后,由内部下拉电阻保证RST VPD端变为低电平。 按钮电平复位电路如下图所示。当按下复位按钮时,电源直接加到 RSTVPD端使其为高电平,同时电容通过复位按钮放电。复位按钮松 开后,随着电容充电电流的减小,逐渐使RSTVPD端恢复低电平。 小 结 1、P0P3口均为准双向口,读取引脚状态时必须先向该引脚写入“1”。 2、P0口做为I/O口使用时,必须接上拉电阻。 3、P0、P2口做为地址数据总线使用后,一般不再做为I/O口使用。 4、P0P3口的驱动能力。 5、机器周期、状态周期、节拍、振荡周期的概念。 6、机器周期的构成。 7、单片机复位的条件。 8、单片机使用内部时钟电路时晶振、电容的接法和数值选择。 9、单片机的复位结构。 10、常用的复位电路及其元器件数值。 作 业 教材:P41 2-8、2-9、2-12、2-16 2-8、开机复位后,CPU使用的是哪组工作寄存器?它们的地址是什 么?CPU如何确定和改变当前工作寄存器组? 2-9、单片机的程序存储器和数据存储器共处同一地址空间为什么不 会发生总线冲突? 2-12、位地址7CH与字节地址7CH如何区别?位地址7CH具体在片 内RAM中什么位置? 2-16、单片机有几种复位方法?应注意什么事项? 第3章 单片机指令系统及编程举例 本章要点 1、熟练掌握单片机的寻址方式 2、记忆指令并掌握指令应用的方法和技巧 3、了解单片机汇编语言的编程方法和技巧 4、了解伪指令的使用 5、掌握常用程序的编制方法 3.1 指令系统简介 3.1.1 指令系统概述 指令是计算机根据人的意图所执行的操作命令,是与计算机内部 结构、硬件资源密切联系的,某种计算机所有指令的集合称为指令系 统。 MCS-51/52系列单片机的指令系统共有111条指令,其中49条是 单字节指令,45条是双字节指令,17条是三字节指令。111条指令中 共有33个功能,用汇编编程时,只需要42个助记符就能指明这33个 功能操作。其中有64条指令的执行时间为单机器周期,45条指令的 执行时间为双机器周期,乘法和除法指令只需4个机器周期。 AT89及P89的指令系统与MCS-51/52系列单片机的指令系统完 全相同。 3.1.2 指令格式 单片机的汇编语言指令格式与其他微机的指令格式一样。均由以下 几个部分组成: 标号:操作码 操作数 ;注释 标号又称为指令地址符号,一般由16个字符组成,以字母开头的 字母数字串,与操作码之间用冒号分开。 表示为可选项。 操作码 是由助记符表示的字符串,他规定了指令的操作功能。 操作数 是指参加操作的数据或数据的地址。 注释 是为该条指令作的说明,以便于阅读。 指令系统中,操作数可以为1、2、3个,也可以没有。不同功 能的指令,操作数作用不同。例如,传送类指令多数有两个操作数 ,写在左面的称为目的操作数(表示操作结果存放的单元地址),写 在右面的称为源操作数(指出操作数的来源)。 操作码与操作数之间必须用空格分隔,操作数与操作数之间必 须用逗号“,”分隔。带方括号项可有可无,称可选择项。操作码是 指令的核心,不可缺少。 3.1.3 指令分类及符号说明 1. 指令分类 单片机指令系统的111条指令分为下面五类: (1)数据传送类指令29条,分为:片内RAM、片外RAM、程序存储器的 传送指令,交换及堆栈操作指令。 (2)算术运算类24条分为:加、带进位加、减、乘、除、加1、减1指令。 (3)逻辑运算类24条分为:逻辑与、或、异或、移位指令。 (4)控制程序转移类17条分为: 无条件转移与调用、条件转移与调用、返 回与空操作指令。 (5)布尔变量操作类17条分为: 位数据传送、位与、位或、位转移指令。 2. 符号说明 A: 累加器Acc。 B: 专用寄存器,用于MUL和DIV指令中。 C: 为进位标志或进位位,或布尔处理机中的累加器。 : 为间址寄存器或基址寄存器的前缀。如Ri,A+PC,A+DPTR 。 Rn: 表示当前选中的寄存器区的8个工作寄存器R0R7(n=07)。 Ri: 表示当前选中的寄存器区中的2个寄存器R0、R1,可做地址指针即间 址寄存器(i=0、1)。 direct: 表示8位内部数据存储器单元的地址。它可以是内部RAM的单元 地址0127或专用寄存器的地址,如I O端口、控制寄存器、状态寄存器 等(128255)。 #data: 表示包含在指令中的8位立即数。 #data16: 表示包含在指令中的16位立即数。 addr16: 表示16位的目的地址。用于 LCALL和LJMP指令中,目的地址 范围是64KB的程序存储器地址空间。 addr11: 表示11位的目的地址。用于ACALL和 AJMP的指令中,目的地 址必须存放在与下一条指令第一个字节同一个2KB程序存储器地址空间之 内。 rel: 表示8位带符号的偏移量。用于SJMP和所有的条件转移指令中。偏 移字节相对于下一条指令的第一个字节计算,在-128+127范围内取值。 DPTR:为数据指针,可用做16位的地址寄存器。 bit: 表示内部RAM或专用寄存器中的直接寻址位。 X: 表示片内RAM的直接地址或寄存器。 (X): X中的内容。在直接寻址方式中,表示直接地址X中的内容 。 (X): 在间接寻址方式中,表示由间址寄存器X指出的地址单元 中的内容。 : 表示将箭头右边的内容传送至箭头的左边。 3.2 单片机的寻址方式 指令执行中所需的操作数可以在内存、寄存器、I/O端口中,称它 们为操作数的地址,访问这些操作数的方法称为寻址方式。单片机中采 用了7种寻址方式。 3.2.1 立即寻址方式 采用立即寻址的指令一般是双字节的。第一个字节是指令的操作码,第 二个字节是立即数。因此,操作数就是放在程序存储器中的常数。立即数 前面应加前缀“#”号。 例如: MOV A, #2BH ;A2BH,即将立即数2BH传送至A中。 3.2.2 直接寻址方式 采用直接寻址的指令一般是双字节或三字节指令,第一字节为 操作码,第二,三字节为操作数的地址码。单片机中,直接地址只 能用来表示片内低128字节单元、专用寄存器和片内RAM的位地址空 间。其中专用寄存器和位地址空间只能用直接寻址方式来访问。 例如:MOV A,30H ;(30H)A MOV C,00H ; (00H)Cy LJMP 1000H ; 将1000H送入PC 3.2.3 寄存器寻址方式 寄存器寻址方式用于访问选定的工作寄存器R0R7、A、B、 DPTR和进位CY中的数。其中R0R7由操作码低三位的8种组合表 示,A、B、DPTR、C则隐含在操作码之中。 这种寻址方式中被寻址的寄存器中的内容就是操作数。 例如: MOV A, R0 ;(R0)A MOV B ,A ;(A)B 3.2.4 寄存器间接寻址方式 这种寻址方式中,指令指定寄存器中的内容为操作数的地址。寄存 器间接寻址是用于访问片内数据存储器或片外数据存储器。当访问片内 RAM 或片外的低256字节空间时,可用R0或R1做为间址寄存器;当访问片 外整个64KB的地址RAM空间时,用16位寄存器DPTR做间址寄存器。这类指 令都为单字节的指令,操作码的最低位表示是采用R0还是R1做间址器。 在执行PUSH和POP指令时,也采用寄存器间接寻址,此时用堆栈指针 SP做间址寄存器。 例如:MOVX A, R0 ; (R0)A MOVX A , DPTR ; (DPTR)A POP ACC ; (SP)A , (SP)-1SP 3.2.5 基址加变址寻址方式 这种寻址方式用于访问程序存储器中的某个字节。以DPTR或PC作为 基址寄存器,累加器A做为变址寄存器,两者的内容之和为操作数的地址 。这种寻址方式常用于查表操作。 例如:MOVC A,A+DPTR ;指令代码为93H,单字节指令。设 该指令放在1040H单元,A的原内容为A0H,DPTR中的值为 3000H, 则操作数的地址等于:A0H+3000H=30A0H,即将30A0H单元中的内容 传送至A中。该指令的执行过程如下图所示。 3.2.6 相对寻址方式 相对寻址是将程序计数器PC中的当前内容与指令第二字节所给出数相 加,其和为跳转指令的转移地址,转移地址也称为转移目的地址。PC中的当 前值称为基地址,指令第二字节的数据称为偏移量。偏移量为带符号的数, 其值为-128+127。故指令的跳转范围相对PC的当前值在-128+127之间跳 转。此种寻址方式一般用于相对跳转指令。 例如:SJMP 05H ;指令代码码是双字节节的,即80,05H 现设PC=4000H为本指令的地址,转移目的地址=(4000+02)+05H=4007H PC当前值 3.2.7 位寻址方式 位寻址是指对片内RAM的位寻址区(字节地址20H2FH)和可以位寻址 的专用寄存器进行位操作时的寻址方式。在进行位操作时,借助于进位C作 为位操作累加器。操作数直接给出该位的地址,然后根据操作码的功能对其 进行位操作。位寻址的位地址与直接寻址的字节地址形式完全一样,主要由 对应的操作数的位数来区分,使用时应加以注意。 例如:MOV 10H,C ;10H是位寻址的位地址(C是位累加器) MOV A,10H ;10H是直接寻址的字节地址(A是字节累加器) 单片机的7种寻址方式中,每种寻址方式可涉及的存储器空间见下表 3.3 指令系统及应用举例 3.3.1 数据传送类指令(29条) 1 数据传送类指令特点 数据传送指令一共29条,这类指令一般是把源操数传送到目的操作数 ,指令执行后,源操作数不变,目的操作数修改为源操作数。传送类指令一 般不影响标志位,只有堆栈操作可以直接修改程序状态字PSW。另外,对目 的操作数为A的指令将影响奇偶标志P位。 数据传送类指令用到的助记符有MOV、MOVC、MOVX、XCH、 XCHD、SWAP、PUSH、POP共8种。源操作数可以采用寄存器、寄存器间 接、直接、立即、变址加基址5种寻址方式;目的操作数可以采用前三种寻 址方式。 2 用于片内数据存储储器传传送的指令使用说说明及举举例 (1) 以累加器A为为目的操作数的指令(4条) MOV A,Rn ;A Rn MOV A,#data ;A data MOV A,Ri ;A (Ri) MOV A,direct ;A (direct) 例: MOV A,R3 ; (R3)A , (A)=(R3) MOV R1,#80H ; #80HR1 , (R1)=80H MOV A, R1 ; (R1)A , (80H)A MOV A,#20H ; #20HA , (A)=20H (2) 以工作寄存器Rn为目的操作数的指令(3条) MOV Rn,A ;Rn A MOV Rn,direct ;Rn (direct) MOV Rn,#data ;Rn data 例 MOV R1,A ;R1 A , (A)=(R1) MOV R3,30H ;R3 (30H),(R3)=(30H) MOV R7,#80H ;R7 #80H ,(R7)=80H (3) 以直接地址为为目的操作数的指令(5条) MOV direct,A MOV direct,Rn MOV direct,direct MOV direct,Ri MOV direct,#data 例: MOV 30H,A ;30H (A) , (30H)=(A) MOV 20H,R7 ;20H (R7) , (20H)=(R7) MOV 27H,#0FH ;27H #0FH , (27H)=0FH MOV 50H,40H ;50H (40H) , (50H)=(40H) (4) 以间接地址为目的操作数的指令(3条) MOV Ri,A MOV Ri,direct MOV Ri,#data 这组指令的功能是把源操作数所指定的内容传送至以R0或R1为地址指针 的片内RAM单元中。 源操作数有寄存器寻址、直接寻址和立即寻址3种方式。目的操作数为 寄存器间接寻址。 例: MOV A, #00H ;A #00H , (A)=00H MOV R0,#30H ;R0 #30H,(R0)=30H MOV R0,A ;(R0) (A), (30H)=00H (5) 16位数据传送指令(1条) MOV DPTR,#data16 这是唯一的16位立即数传送指令,其功能是把16位立即数传送至16位 数据指针寄存器DPTR。 例: MOV DPTR,#04FFH ;DPTR #04FFH,(DPTR)=04FFH 3用于片外数据存储器传送指令及举例(4条) MOVX A, Ri ;A (Ri) MOVX A, DPTR ;A (DPTR) MOVX Ri, A ;(Ri) (A) MOVX DPTR,A ;(DPTR) (A) 在单片机中,CPU对片外RAM的访问只能用寄存器间接寻址的方式,且 仅有4条指令。以DPTR间接寻址时,寻址的范围达64KB;以Ri间接寻址时 ,仅能寻址256B的范围。而且片外RAM的数据只能和累加器A之间进行传送 ,不能与其他寄存器和片内RAM单元直接进行传送。 片外IO端口的访问均可使用此4条指令。 例 MOV DPTR,#A000H ;DPTR #A000H,(DPTR)=0A000H MOV A,40H ;A (40H), (A)=(40H) MOVX DPTR,A ;(DPTR)(A),(A000H)=(A) 这这几条指令实现实现 了 A000H (40H) 例 MOV DPTR, #2000H ;DPTR #2000H,(DPTR)=2000H MOVX A, DPTR ;A (2000H), (A)=(2000H) MOV DPTR, #5000H ;DPTR #5000H, (DPTR)=5000H MOVX DPTR,A ;(DPTR) (A), (5000H)=(A) 这几条指令实现了 5000H (2000H) 4 用于程序存储器数据传送的指令及举例(2条) MOVC A,A+PC ;A (A)+(PC) MOVC A,A+DPTR ;A (A)+(DPTR) 单片机指令系统中,这2条一般用于查表,其数据表格放在程序存储器 中。 例: 在程序存储器中,存有LED显示器09的字形段码为: 210AH : 0C0H 0字符的段码 210BH : 0F9H 1字符的段码 210CH : 0A4H 2字符的段码 210DH : 0B0H 3字符的段码 执行 MOV A,01H MOV DPTR,#210AH MOVC A,A+DPTR 后,(A)=0F9H 5 交换指令及举例(5条) XCH A, Rn ;(A) (Rn) XCH A,Ri ;(A)(Ri) XCH A,direct ;(A)(direct) XCHD A,Ri ;(A)3-0(Ri)3-0 SWAP A ;(A)7-4(A)3-0 这组指令的前三条为全字节交换指令,其功能是将A的内容与源操作 数所指出的数据互换。后两条指令为半字节交换指令,其中XCHD A,Ri 是将A内容的低4位与Ri所指片内RAM单元中的低4位数据互相交换,各自 的高4位不变。SWAP A指令是将A中内容的高、低4位数据互相交换。 例: 设(A)=12H,(20H)=34H,执行以下指令的结果如何? XCH A,20H ;A (20H) , (A)=34H,(20H)=12H SWAP A ;(A)7-4 (A)3-0 , (A)=43H 6 堆栈操作指令及举例(2条) PUSH direct ;SP (SP)+1 ,(SP)(direct) POP direct ;direct(SP),SP(SP)-1 PUSH指令是入栈(或称压栈或进栈)指令,其功能是先将栈指针SP的 内容加1,然后将直接寻址单元中的数压入到SP所指示的单元中。POP是 出栈(或称弹出)指令,其功能是先将栈指针SP所指示的单元内容弹出送 到直接寻址单元中,然后将SP的内容减1,仍指向栈顶。 使用堆栈时,一般需重新设定SP的初始值。系统复位或上电时SP的 值为07H,而08H1FH正好也是CPU的工作寄存器区,故为不占用寄存 器区,程序中需使用堆栈时,先应给SP设置初值。但应注意不超出堆栈 的深度。一般SP的值可以设置在1FH或更大一些的片内RAM单元。 利用堆栈操作指令可以实现数据的传送,例如: PUSH DPH POP 30H 可以实现 30H (DPH) 注意:在对累加器进行堆栈操作时必须使用ACC,而不能用A。 PUSH ACC 和 POP ACC 是正确的写法,而 PUSH A 和 POP A 的写法是错误的。 小 结 1、单片机的七种寻址方式 2、七种寻址方式的寻址空间 3、29条数据传送类指令的使用 作 业 教材P78 31、32、33、34 31、什么叫寻址方式?单片机有哪几种寻址方式?这几种寻址方式 是如何寻址的? 32、要访问专用寄存器和片外数据存储器应采用什么寻址方式? 33、用于外部数据传送的指令有哪几条?有何区别? 34、指出下列指令的本质区别: MOV A,DATA MOV A,#DATA MOV DATA1,DATA2 MOV 60H,#61H 3.3.2 算术运算类指令 1 算术运算类指令特点 算术运算类指令共有24条,其中包
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 烟台新兴产业合作协议书
- 苏州危化品运输合同范本
- 村委会签的安置合同协议
- 烟草公司毕业协议书范本
- 涂料机低价转让合同范本
- 股权投资扩股增资协议书
- 材料合同变更要补充协议
- 环卫一体化安装合同范本
- 电子版权合同及购买协议
- 瓷砖仓库合同协议书范本
- 广元城市IP打造营销规划方案
- 钢结构安装安全操作规程
- 郑荣禄博士谈保险热点话题
- 多维阅读第4级Animal Fathers 动物爸爸 课件
- TJA围手术期血液管理课件
- DB4401-T 5-2018房屋面积测算规范-(高清现行)
- 新教材波音手册查询(高级)课件
- 医用X射线诊断与介入放射学-辐射安全考核试题库(精简150题)
- 151 医用一次性防护服质量检验原始记录(客户需要根据实际修改)
- 建设工程施工合同示范文本GF-2013-0201)协议书、通用条款、专用条款
- 兰州站《站细》
评论
0/150
提交评论