单片机原理高级教程讲稿第一到四章.doc_第1页
单片机原理高级教程讲稿第一到四章.doc_第2页
单片机原理高级教程讲稿第一到四章.doc_第3页
单片机原理高级教程讲稿第一到四章.doc_第4页
单片机原理高级教程讲稿第一到四章.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

单片机原理与应用高级教程讲稿(重修) 一 课程内容:以MCS-8051单片机为对象,介绍其发展历程、现状、趋势单片机的特点、基本结构、引脚功能、工作原理,内部功能单元工作和控制方法,指令系统和程序设计,系统的扩展,接口技术,应用系统设计示例。第一章 绪论 第二章* 结构和原理 第三、第八章 指令系统、程序设计*第四章 *内部功能单元工作和控制方法第六、七章* 并行、串行扩展技术及接口示例第八章 应用系统示例及最小应用系统5、最低功耗系统9、应用系统可靠性简述10二 课程特点:繁而不难,实践性强,易懂难记,梳理为上。第一章 绪 论(重修课作为自学内容)1.1 单片机与嵌入式系统111 单片机的定义及嵌入式系统:将CPU、ROM、RAM、定时器/计数器、I/O口等主要计算机部件集成在一块芯片上,组成的芯片级微处理器称为单片微型机计算机或单片机。单片机主要是面向测控系统的微控制单元,可以独立控制一个系统,也可以作为一个控制部件嵌入到系统中,所以也称为嵌入式控制器或嵌入式单片微机。112 发展历程发展历程:70年Intel推出4位单片机4004,72年8位机8008,76年MCS-48系列单片机,80年MCS-51单片机,83年推出16位的MCS-96系列单片机。其它公司如Motorola的6800系列单片机、Zilog公司的Z8系列单片机,TI公司的TMS7000、NEC的UPD7800等等,随后向着多功能,高位数方向发展,出现专用单片机、32位、64位单片机,PIC,多功能嵌入式单片机,ARM单片机等。第一代MCS-8048,MC6801;第二代MCS-8051;第三代 80C51及增强功能的单片机;第四代 多功能、各具特色的单片机或嵌入式单片机。113发展趋势:1三高(高性能、高速、高可靠),三低(低功耗、低电压、低成本)。2全部CMOS化。基本遵循摩尔定理,从CISC向RISC发展,向多样化发展。3ISP(In System Programmable)在系统可编程技术。4软件嵌入,实现实时多任务操作;全面功耗管理;推行串行扩展总线;启动以CPU为核心的专用集成电路。例如ARM。1.2 单片机应用模式1单片机的形式:根据单片机程序存储器的结构分成:带掩膜MaskROM、EPROM、ROMLess、OTPROM、EEPROM、FLSAHROM等。2应用模式:单机模式、多机模式,通用模式、专用模式,总线模式、非总线模式。1.3 应用领域和系统开发过程用于家电、办公自动化、工业控制、仪器仪表、航空航天、医疗卫生、国防军事等无处不在,无处不用。 第二章 单片机的基本结构与工作原理内容提要及知识点:本章将MCS-51单片机的结构及各部分的功能和用途。如内部结构框图、外部封装形式、标准封装的管脚分布及功能、单片机电路的三总线;存储器、专用功能寄存器。知识点包括:(1)结构框图(2)基本配置(3)*三总线(4)存储器系统的功用(5)*片内RAM的功能分区(6)SFR功能(7)指令周期。2.1 单片机的基本组成结构 P0 P1 P2 P3XTAL1 XATL2振荡器与时钟 程序存储器ROM 数据存储器RAM I/O口CPU SFR总线控制逻辑 中 断 系 统 定时器/计数器 串 行 口RST ALE EA PSEN211结构框图 22资源配置221主要构成部分(配置)有:。一个8位CPU。一个128B(或80C*2有256B)字节的内部数据存储器RAM。一个4K(89C*2有8K的EEPROM)程序存储器ROM。一个1.2-12MHZ片内振荡器及时钟电路,(89C51/52全静态工作为0HZ到24MHZ)。有32条可编程I/O端口。可寻址64K外部数据存储器和64K外部程序存储器。2个16位定时器计数器(89C52有3个)。5个中断,两级优先嵌套中断结构(89C52有6个)。一个全双工通用可编程串行通讯口其它功能:低压闲置及掉电工作方式、3级程序存储器锁定加密功能(89C51/52)、看门狗定时器(WATCH DOG)、还有SPI总线接口、I2C总线、ADC、DAC等。 222 内部资源的扩展(见P23图24)2.3 外部结构和引脚功能2.3.1 引脚功能和三总线1 封装形式(见P25图25):双列直插DIP40(Daul In-line Package),贴片封装LCC40(Lead Chip Carrier),扁平封装QFP44(Quad Flat Packege)。2 管脚功能(见表21):4个8位并行I/O口P0-P3;电源/地Vcc/Vss,振荡器输入输出XTAL1/XTAL2、地址锁存及编程脉冲输入ALE/PROG、复位RST、片内/外ROM选择及编程电源EA/Vpp、外部程序存储器选通PSEN(读程序)。 3.I/O口及三总线 数据总线DB由P0口组成 地址总线AB由P0口输出低8为地址经373锁存器锁存作为低8位地址A0-A7,P2口输出高8位地址A8-A15组成。 控制总线CB由RST,/EA,/PSEN,ALE,以及/WR,/RD等组成。 4I/O口特性:P0口数据总线,又作为低8位地址总线; P1口普通I/O口P2口高8位地址总线,与P0口输出经锁存低8位地址组成16位AB。 P3口双功能口,除普通I/O口外,其管脚P3.0P3.7的第二功能依次为:通信接收RXD、通信发送TXD、外部中断INT0、外部中断INT1、定时器T0、定时器T1、写WR、读RD。 5I/O口的结构及应用特性(见P33图27):(1)所有32个端口均带输出锁存器,都可作普通I/O口用。 (2)P0口为双向口,可驱动8个TTL门,P1-P3为准双向口,只能驱动4个TTL门。 (3)P0口作普通I/O口时需外接上拉电阻。所有I/O作输入口用时需先写“1”。 (4)对于52单片机,其P1.0、P1.1的第二功能为定时器、计数器T2输入/控制端。 作业:P15第4题;P37练习与思考第1、3、5题。2.3.2 CPU的结构特点 由控制器、运算器、工作寄存器、时序电路组成。一. 中央控制器 功能:控制器的功能是识别指令、控制各部件协调工作,与运算器一起组成中央处理器。构成:由程序计数器PC、程序地址寄存器、指令寄存器IR、指令译码器、条件转移逻辑电路和定时控制逻辑电路组成。1程序计数器PC(Program Counter)和数据指针DPTR (1)程序计数器PC:存放16位下一条要执行的程序地址。工作过程叙述(P34-35)。 有顺序程序、转移指令、调用或响应中断指令三种不同的工作方式。 (2)数据存储器地址指针DPTR:是16位数据指针,寻址64KB。由DPH、DPL两个8位SFR组成,用于片外数据存储器的间接访问,或程序存储器查表等。 2指令寄存器IR、指令译码器及控制逻辑功能:将ROM中的程序读入指令寄存器译码送定时控制逻辑电路处理、执行。二. 运算器(完成算术逻辑运算和位操作)结构:由算术逻辑运算单元ALU、累加器ACC、暂存寄存器、B寄存器、程序状态寄存器PSW以及BCD码运算调整电路等组成。1运算功能单元功能:带进位和无进位的加、减及8位数的乘、除运算;逻辑与ANL、或ORL、异或XRL;增/减量;位操作(置位、清零、取反);左、右移位;字节、半字节交换;BCD运算修正。 2累加器A、寄存器B累加器A是算术运算和数据传送中使用频率最高的单元。B寄存器是乘除运算中作为ALU的输入单元之一。3程序状态字PSW 进位位CY半进位AC标志位F0选区位RS1选区位RS0溢出位OV奇偶位P当A中数据“1”的个数位奇数个,P=1;否者P=0。当运算中D7位有进位或借位时,CY=1;当运算中低4位有向高4位进位或借位时,AC=1;F0用户标志位;RS1、RS0两位选择内RAM中4个工作寄存器区;OVC6 + C7, 在带符号加减运算中C6有进位而C7无进位,或C6有借位C7无借位时OV=1,乘法运算中AB大于255时,或者除法运算中除数为0时OV=1。三. 时钟电路(图28)及CPU工作时序1. 时钟电路:片内有时钟电路,一般只需外接晶振和温度补偿电容就可以工作。机器周期12分频、地址锁存ALE周期6分配、状态周期S为2分频,分成P1、P2节拍。2. 时序定时单位:1个机器周期6个状态周期12个振荡周期2个地址锁存周期。3. 指令时序:(图210)有单周期指令、双周期指令、单字节双周期等。24 存储器结构和地址空间一、结构形式和一般特点 80C51单片机存储器包括程序存储器ROM和数据存储器RAM,其结构形式:采用程序存储器和数据存储器相互独立的哈佛结构。各有自己的寻址空间、寻址方式(用不同指令)、和控制系统。1、80C51单片机存储器结构映象图(图28)片外数据存储器 外部程序存储器特殊功能寄存器 FFFFH FFFFH FFH 特殊 片内 功能 数据 寄存器 存储器 (直接 (间接 80H 寻址) 寻址) (间接 0FFFH 7FH 寻址)内部 外部 片内数据 EA=1 EA=0 存储器 0000H 0000H 00H(直接、间接寻址) 0000H 程序存储器 内部数据存储器 外部数据存储器 图28 80C51单片机存储器结构框图 (1)物理上分成4个存储器空间:片内程序存储器、片外程序存储器;片内数据存储器、片外数据存储器。(2)逻辑上分成3个地址空间:片内、片外统一编址的64KB程序存储器空间;片内256B的数据存储器地址空间;片外64KB的数据存储器空间。(3)在寻址方式上分成:直接寻址和间接寻址2种方式。(4)不同的存储空间采用3种不同的指令寻址:对于片内或片外程序存储器查表,用MOVC指令寻址;对片内数据存储器传送数据用MOV指令寻址;对片外数据存储器读写用MOVX指令寻址。2、存储器的一般特点:表21 单片机存储器的基本特性和用途名 称 程序存储器ROM数据存储器RAM用 途存放指令、常数、表格、公式等存放缓冲数据、记录数据信息存放形式程序固化在芯片内、只读、不丢失数据通电保持、断电丢失(EEPROM保持)物理空间片内/片外(内小,外大)片内/片外(内小,外大)寻址范围直接寻址64K范围(可另扩)直接寻址范围64K(可另扩)编址形式片内外统一编址片内/片外的RAM地址重叠控制方式硬件:EA“1”片内,“0”片外软件:MOV片内/MOVX片外容 量片内0KB、1KB32KB,片外2KB-64KB片内128B/256B,片外2KB64KB工艺结构掩膜ROM/EPROM/EEPROM/OTPDRAM/SRAM/EEPROM(FLASH)接口方式片外ROM通常为并行总线片外RAM并行总线/I2C总线2.4.1程序存储器(Program memory-Read only memory)一特点:(见表21)(1)ROM类型有:掩膜ROM、EPROM、E2PROM、FLASH ROM、OTPROM。分成片内和片外两部分,由EA引脚接高(内)或接地(外)决定。内外统一编址,最大寻址范围64KB。(2)程序存储器特定的复位入口地址 表22 MCS-51单片机复位/中断入口地址入口地址名 称0000H程序计数器PC地址 0003H外部中断INT0入口地址000BH定时、器T0溢出中断入口地址0013H外部中断INT1入口地址001BH定时/计数器T1溢出中断入口地址0023H串行口接收/发送中断入口地址002BH定时/计数器T2溢出中断入口地址注:仅80C*2/89C*2单片机有T2二程序运行控制操作有:复位、顺序执行、转移控制和中断。(1)复位和中断由相应的硬件结构控制,它们的程序入口地址是固定的(见表22)。转移控制则是通过各种调用、返回、有条件和无条件转移来实现。(2) 查表是通过基址偏址的间接寻址方式,共有两条指令:MOVC A,A+DPTR ;将(DPTR)中的地址加(A)偏移量,得到该单元内容存A。寻址范围为64K,称长查表指令。MOVC A,APC;以PC为基址寄存器,A为偏址数据,相加后的数作为地址,取出该地址单元的内容送累加器A。表格只能放在0255字节范围之内。称短查表指令。 2.4.2 数据存储器一特点:(见表21),分成片内/外RAM,内外地址重叠。片外RAM寻址范围064KB,只能用MOVX指令间接寻址。 片内有128B/256B的RAM,用MOV指令寻址。0-7FH为80C51固有片内RAM,可以直接或间接寻址;80H-FFH仅80C2单片机有,且只能间接寻址。 二片内RAM功能划区(图29): 片内RAM的00H-7FH功能划区:物理上分成放在工作寄存器区,位寻址区,数据缓冲区三个区域,应用中分成寄存器区,位寻址区,数据缓冲区和堆栈区。(1)00H-1FH为工作寄存器区,该区分成4组,每组都有R0-R7八个工作寄存器(但地址不同)。由PSW.3(RS0)和PSW.4(RS1)两位来选定。(2)20H-2FH为位寻址区,共16个字节单元128位,位地址00H7FH位(见图29)。(3)30H-7FH为数据缓冲区;(4)可浮动的堆栈区设在07H为栈底的片内RAM中合适的区域。 功能单元 地 址复位状态 操 作 方 法工作寄存器 00H1FH 指向0组由PSW.4,PSW.3置位状态对R0-R7四选其一 堆 栈 07H以上栈底07H通过堆栈指针SP赋值 位寻址区 20H2FH 随 机软件置位STEB H,清零CLR H数据缓冲区*30H7FH 随 机直接与A进行传送、运算、转移等操作25 SFR特殊功能寄存器区(80H-FFH区域中的部分单元)2.5.1 SFR清单:片内RAM 80H-FFH中分布在21个单元(52单片机有25个),对片内13个单元操作管理。包括4个端口、5个中断(含两个外中断、两个定时器/计数器、串口)、SP、DPTR、PSW、PCON。尚有许多保留单元。1功能和应用特性:用于片内功能单元的管理、控制、状态指示。应用时分成控制位和标志位,还有一类作特定用途的寄存器用。2寻址方式:只能直接寻址,分可位寻址(地址末位为0和8的单元)和只能直接按字节寻址两类。3复位状态:SP=07H, P0-P3=FFH,SBUF为随机数,其它均为00H。4程序状态字PSW (同前面的内容)程序状态字PSW各位的定义 进位位CY半进位AC标志位F0选区位RS1选区位RS0溢出位OV奇偶位P当A中数据“1”的个数位奇数个,P=1;否者P=0。当运算中D7位有进位或借位时,CY=1;当运算中低4位有向高4位进位或借位时,AC=1;F0用户标志位;RS1、RS0两位选择内RAM中4个工作寄存器区;OVC6 + C7, 在带符号加减运算中C6有进位而C7无进位,或C6有借位C7无借位时OV=1,乘法运算中AB大于255时,或者除法运算中除数为0时OV=1。25.2 布尔(位)处理器CY(1)功能:面向控制的位处理器,以CY作位累加器,进行位传送、判断转移、布尔运算等。(2)操作对象:片内RAM中20H-2FH单元的00H-7FH位,SFR中可位寻址位。(3)位操作指令:置位SETB,清零CLR,取反CPL,传送MOV,位转移JC/JNC、JB/JNB、JBC,位逻辑运算(ANL/ORL/CPL ),位输入输出等。2.6 单片机工作方式2.6.1 复位方式(1)复位的作用使单片机初始化操作,从0000H单元开始运行程序。(2)复位信号:必须保持2个机器周期以上的高电平才能保证可靠复位。(3)复位电路:(图214),有上电复位、按键复位、外部脉冲复位几种形式。(4)复位状态:复位后入口地址见表(22),SFR复位状态见2.4.3小节。(5)上电复位RAM内为随机数,按键或外脉冲触发复位RAM数据保持不变。2.6.2 低功耗工作方式两种低耗方式:有待机(休眠)方式和掉电保护方式,由PCON(97H)中的PD/IDL控制。SMOD-GF0GF1掉电位PD1掉电待机位IDL1待机PCON格式:待机方式:CPU不工作,但振荡器仍向中断系统提供时钟,通过中断事件或硬件复位退出待机状态。掉电保护:振荡器停振,单片机停止一切工作,只有片内RAM的内容被保存。掉电电压可以降到VCC=2V,退出掉电复位的方法只有硬件(上电)复位。 第三章 80C51单片机指令系统3.1 指令系统基础MCS51单片机共有111条指令,分成数据传送(28),算术运算(24),逻辑运算(25),转移控制(17),布尔操作(17)共五类。3.1.1 指令格式与符号约定 1汇编指令格式英文大写开头,子程序必有、功能程序有标号:操作码操作数1操作数2;注释助记符 目的操作数 源操作数 可有可无指令分成:单字节指令操作码和操作数在同一个字节; 双字节指令第一字节操作码,第二字节操作数; 三字节指令第一字节操作码,二、三字节操作数。2指令代码格式(P40表31)有单字节指令、双字节指令、三字节指令。第一字节是操作码,第二、三字节是操作数。不同指令的执行周期不同,有单周期、双周期和四周期三种。3 约定符号(见P38-39)工作寄存器Rn(n=0-7),间指寄存器Ri(i=0,1),direct(片内RAM直接地址00F-7FH),#data8/16(8/16位立即数),addr11/16(11/16位目的地址),rel(8位带符号偏移量),DPTR(16位数据地址指针)等等。3.1.2 CPU的时序与指令操作(P41图31)1时钟电路:片内有时钟电路,一般只需外接晶振和温度补偿电容就可以工作。2系统时钟和时序定时单位:系统时钟分成P1、P2节拍,每两个节拍组成一个状态周期S。三个状态周期组成地址锁存ALE周期,12个振荡周期组成机器周期。1个机器周期6个状态周期12个振荡周期2个地址锁存周期。3指令操作时序:(图210)有单周期指令、双周期指令、单字节双周期等。4指令运行速度:与该指令的执行周期有关,与振荡频率有关。当振荡频率为12MHZ,则机器周期为1微秒,执行单周期指令时间1微秒。当振荡频率为6MHZ,则机器周期为2微秒,执行单周期指令时间2微秒。313 寻址方式和寻址空间寻址方式:指令中用于说明操作数所在地址的方法,共7种。包括寄存器寻址、直接寻址、寄存器间接寻址、位寻址、立即数寻址、基址变址寻址、相对寻址。1. 寄存器寻址:用寄存器内容作操作数,如INC R0,MOV A,R1等。寻址范围:R0-R7,A,AB,DPTR。2. 直接寻址:用直接地址单元作源操作数,例:MOV A,3AH(E53A)。应用对象:片内RAM的128字节(00H-7FH)及SFR(建议最好用寄存器名)。3. 寄存器间接寻址:指令中操作数寄存器的内容作地址,该地址的内容作为操作数。例如,口袋里放钱,是直接寻址;口袋里放工行的支票,指明钱在工行就是间接寻址。寄存器对象三个:R0,R1,DPTR;寻址范围:片内00H-FFH(含堆栈区),片外RAM0-64KB。4位寻址:对数据位寻址操作。 寻址范围:片内RAM中20H-2FH共128位(00H-7FH位)以及SFR中可位寻址单元。 表示方法:直接位地址、SFR中可寻址位(P1.1,PSW.4,ACC.7等)、用位标号(EA/ES)。5. 立即数寻址:指令中的源操作数为立即数,称立即数寻址。例:MOV A,#3AH(743A)6基址变址寻址:以DPTR或PC内容作基本地址,加上累加器A中的内容,得到基本地址加上A中变量的内容作寻址地址。特点:(1)变址指令均为单字节指令,仅用于对程序存储器寻址或查表。 (2)变址指令有三条:MOVC A,A+PC;称近程查表(不超过255字节)MOVX A,+DPTR;称远程查表(64KB范围)JMP A+DPTR ;散转指令7 相对寻址:源操作数是相对偏移量的寻址方式,寻址范围128127。如:JC rel,DJNZ R6,ABC等。目的地址转移指令地址指令字节数rel32 指令系统分类与速解分成传送类、算术运算类、逻辑运算类、控制转移类、布尔操作类进行介绍。3.2.1 数据传送类(28条)一功能特点:将源操作数送入目的操作单元。有立即数、直接地址、寄存器寻址、间接寻址、变址寻址方式。在片内RAM、片内外RAM、SFR之间传递数据或从ROM中查表。二传送指令分类:1程序存储器查表指令MOVC MOVC A,A+DPTR;用DPTR基址寄存器,与变址寄存器A中的内容相加作寻址地址,将该地址单元的内容取出,放入A内。MOVC A,A+PC;将PC指针作基址寄存器,与变址寄存器A中的内容相加作为地址,查出该地址的内容送A。2片外RAM数据传送指令MOVXMOVX DPTR,A;将(A)送DPTR指出的片外RAM地址单元,即写片外存储器。MOVX A,DPTR;将DPTR指出的片外存储单元内容读入A中。MOVX A,Ri;用P2作高位地址,与Ri中的低8位地址组成16位地址,对MOVX Ri,A;片外RAM进行读写操作。3片内RAM及寄存器数据传送指令 Ri A Rn 数据传送的目的操作数:A,Rn,direct,Ri,DPTR #data; #data direct 寻址范围:(1)direct :00H-7FH片内RAMPUSH/POP MOV 指令图解 80H-FFH的SFR,包括DPTR。 DPTR (2)Ri:片内RAM00H-FFH (3)PUSH/POP:用direct,Rn,SFR的标识名。 4数据交换指令(均以A为目的操作数) XCH A,Rn/Ri/direct ;全交换指令,两个8位单元内容彼此互换。 XCHD A,Ri;半字节交换,两个8位单元中的低4位互换。 SWAP A;自交换指令,累加器中高、低4位内容互换。3.2.2算术运算类指令(24条)有加法ADD,带进位加ADDC,带借位减SUBB,乘MUL,除DIV,自加/减指令INC/DEC等。一特点:算术指令均以累加器A为目的操作数,且对PSW有影响。加减运算中源操作数有Rn,Ri,direct和data。乘除法用A,B寄存器对。二指令功能:(1)加法ADD A,(源);(源)(A) (A)(P49例子) 带进位加ADDC A,(源);(源)(A)+(CY) (A)(2)带进位减SUBB A,(源);(A)-(源)(CY) (A)(3)自加减 INC/DEC (源);(源1) (源),自加1源有A,Rn,Ri,direct,DPTR 自减1的源为A,Rn,Ri,direct。 (4)乘法指令MUL AB ;将A、B中无符号8位数相乘,高位进B,低位进A。除法指令DIV AB ;将A中无符号8位二进制数除以B中8位无符号数,商进A,余数进B。 (5)十进制调整DA A;对A中BCD码的加法结果进行调整。(见书P51例子)3.2.3 逻辑运算类指令(25条)包括:与ANL、或ORL、异或XRL,以及累加器A清零、求反、移位等指令。一 特点:累加器A与direct可以进行双向逻辑运算,与Rn、Ri、data逻辑运算时只能作源操作数。CLR A、CPL A以及移位指令为单操作数运算,其它逻辑运算为双操作数。二 指令功能:(A)清零:CLR A;(A)取反:CPL A; 左/右移:RL A/RR A;循环左/右移: RLC A/RRC A;与、或、异或运算:(以A为目的操作数) 以direct为目的操作数(例P53/54)ANL A ORL direct #dataXRLANL RnORL A directXRL Ri #data3.2.4控制转移类指令(17条)包括无条件转移、条件转移、循环转移、调用和返回、空操作指令。一 特点:不同指令的转移范围不同:相对转移或短转移rel为128127;绝对转移范围2KB;长转移范围KB。跳转指令不用返回;调用子程序和中断服务子程序必须用RET和RETI返回。二. 指令功能:1.无条件转移:LJMP addr16;长转移,64KB范围 AJMP addr11 ;绝对转移,2KB范围SJMP rel ;短转移,128127BJMP A+DPTR ;散转(间接转移)基址DPTR偏移量(A) ACALL addr11;绝对调用LCALL addr16;长调用, RET ;子程序返回RETI ;中断返回调用子程序时,先将PC指针当前地址加上调用指令字节数,得到下一条指令的指向地址进栈,然后跳到调用子程序指令指出的地址指向子程序,遇到返回指令就将进栈地址取回到PC指针,继续按顺序执行程序。2.条件转移(全为相对转移,范围128127,rel=目标地址PC当前地址)A, direct/#data Ri,#dataRn, #data累加器A为“0”或者非“0”转移: JZ rel;JNZ rel比较不等转移:CJNE ,rel;两者相减,不等转移 ;若目的数小于源数,CY置1减1非“0”转移: DJNZ Rn/direct,rel;对寄存器内容减1,非“0”转移3空操作:NOP;仅此一条指令,不作任何操作,相当于延时1个机器周期。3.2.5布尔(位)操作有位传送、位控制、位逻辑运算、位判断转移等一 特点:用位累加器CY作目的操作数,位判断转移均为相对转移二. 指令功能:位传送:MOV C,bit或MOV bit,C位控制:CLR C/bit ;SETB C/bit; CPL C/bit bitbit 布尔运算:ANL C, bit/ ;只有位与或,没有位取反 ORL C,bit/ 位条件转移:JC/JNC rel ;判断为零或CY非零转移 JB/JNB bit,rel ;判断指定位为零或非零转移 JBC bit,rel ;指定位为“1”,清该位并转移3.2.6伪指令用于指定起始或结束地址、定义标号、字节、字、数据空间的指令,因为在汇编后并不产生目标代码,所以称为伪指令。1 ORG(Origin)程序起点,格式:ORG H;2 DB(Define Byte)定义字节。例:TABLE: DB 3FH,06H,.;功能是将字节常数或字符串存入连续单元内。3 DW(Define Word)定义字。例:TABLE: DW 0123H,8F25H,.;4 EQU(Equate)定义标号。将操作数或地址赋值给标号,如TABLE EQU 2000H,ISPLAY EQU 1000H等。 5DL(Define Lable)定义标号值,DL与EQU的区别在于DL可在源程序中给同一标号定义不同的值,即可以更改已定义的标号值。EQU在源程序中只能定义一次,不可改变。 6DS(Define Storage)存储区说明,其含义是通知汇编程序,在目标代码中,已标号为首地址保留表达式的若干存储单元,以备源原程序使用。例如:BASE DS 100H7END 汇编结束标志,一般放在程序的最后。33 典型指令的应用一查表指令应用实例(P59) 4位LED显示程序的查表操作为例: 入口地址:被显示的4位分离十六进制数代码一次存放片内RAM38H-3BH中,查出对应的段码放在30H33H中。 (1)用MOVC A,A+DPTR指令查表。DISCD:MOVR0,#38H;显示数据入R0MOVR1,#30H;LED段码首址送R1 a F b E c dMOV R2,#04H;查找字节数送R2MOV DPTR, #TAB;表首址送DPTRDILP:MOV A,R0;查找的数送AMOVC A,A+DPTR;查表得到相应段码MOV R1,A;段码送显示缓冲器INC R0;指向下一个查找数据单元INC R1;指向下一个段码存放单元DJNZ R2,DILP;未完继续RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;段码表“0”,“1”,“2”,“3”,“4”“5”,“6”,“7”,“8” DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;“9”,“A”,“B”,“C”,“D”,“E”,“F” DB 73H,3EH;“P”,“U” (2)用MOVC A,A+PC的查表程序。 DISCP:MOV R0,#38HMOV R1,#30HMOV R2,#04H;查找字节数送R2MOV DPTR, #TAB;表首址送DPTRDILP:MOV A,R0;(E6)查找的数送AADD A,#TABREL;(2406)(06是查表下一条指令到表首址的偏移量)MOVC A,A+PC;(93)查表得到相应段码MOV R1,A;(F7)段码送显示缓冲器INC R0;(08)指向下一个查找数据单元INC R1;(09)指向下一个段码存放单元DJNZ R2,DILP;(DA0A)(0A是向后跳转的偏移量)未完继续RET ;(22)TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H;段码表“0”,“1”,“2”,“3”,“4”“5”,“6”,“7”,“8” DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H;“9”,“A”,“B”,“C”,“D”,“E”,“F” DB 73H,3EH(3)散转指令JMP A+DPTR及散转程序段: 有利用绝对转移跳转AJMP的散转处理程序入口,指令为2字节,偏移量要2;有利用长转移跳转LJMP的散转处理程序入口,指令为3字节,偏移量要3。第五章 MCS-51程序设计内容摘要:本章主要介绍程序设计的步骤、方法以及简单程序、分支程序、循环程序、散转程序、子程序、查表程序、数值转换程序等基本程序的设计实例。5.1 概述: 程序由汇编语言编写(现在有C-51编译系统,可以用C语言编写MCS-51单片机程序),是为了完成某些功能由若干条指令组成。复杂程序由若干小程序或子程序组成。程序经汇编后编程对应的机器语言或机器码之后,被单片机执行。每一条指令都有一定的作用和意义,每一段基本程序都是为解决某一个问题而编写。程序的编写过程大致如下:1、 编制说明要解决问题的程序框图;2、 确定数据结构、算法、工作单元、变量设定。3、 根据指令功能,按程序框图用编制源程序。4、 汇编、调试、修改,直至实现预定功能。程序设计需要注意的问题:1功能性设计满足程序设计的功能指标要求,同时考虑子程序的合理分配,资源的最少占用,软件模块结构合理、规范、清晰、界面简单。2要考虑软件的可靠性设计复位、自检、有足够的时序余度、冗余容错技术等。3运行管理设计如电源管理、低功耗设计、闲置和掉电模式等。52 程序设计 单片机程序按形式可分成简单(顺序)程序、分支程序、循环程序、散转程序、子程序和中断服务子程序等。它们可以完成系统初始化、执行控制、监测、键盘显示、查表程序、数制转换程序、算术运算等各种各样的功能。 5.2.1简单程序设计程序按指令在存储器中存放的顺序执行。一、数据传送和数据交换程序(见P118的两个例子)。二、单字节加法和半字节合并程序例1、两个8位无符号数相加,和是8位。设数据n1、n2分别存放在内部RAM 40H,41H单元,相加结果存42单元。其子程序如下:AD1:MOVR0,40H;设R0为数据指针MOVA,R0;取n1INCR0;修改指针,为41HADDA,R0;(A)=n1n2INCR0;指针加1,指向42H单元MOVR0,A ;结果存42H单元RET;结束子程序,返回。例2、 将两个半字节数合成一个单字节数。设内部RAM 40H,41H单元分别存放着两个8位二进制数。要求取出两个单元中的低半字节,合并成一个直接后,存42H单元。子程序如下:START:MOVR1,40H;设置人为数据指针MOVA,R1;40H单元内容送AANLA,0FH;屏蔽高四位,将低四位送ASWAPA;半字节交换,移至高四位INCR1;修改指针,为41HXCHA,R1;字节交换,取第二个数到AANLA,0FH;屏蔽高四位,得到第二个字的低半字节ORLA,R1;将两个半字节数拼成一个字送AINCR1;指针到42H单元MOVR1,A;存放结果RET;子程序返回5.2.2 分支程序设计例5、两个无符号数比较大小。设外部RAM单元ST1和ST2中存放两个无符号二进制数,要找出其中大数存入ST3单元中。其流程图如下:(待扫描) ORG1000H START: CLR C;清进位位MOVDPTR,ST1;设数据指针MOVX A,DPTR;取第一个数MOVR2,A;暂存R2INCDPTR;指向ST2单元MOVX A,DPTR;取第二个数SUBBA,R2;(ST2)(ST1)比较大小,前者小,C1JNCBIG1;无借位,(ST2)(ST1),转XCHA,R2;有借位(ST1)大,交换数据BIG0:INCDPTR;地址加1,指向ST3MOVX DPTR,A;存大数RET;返回BIG1:MOVXA,DPTR;(TS2)大,进ASJMPBIG0ST1:EQU1040EDN例6、编制计算符号函数YSGN(X)的程序。 1 当X0 设自变量X存入标号为ARE单元、Y存入标号为BUF单元。由于需要进行两次判断,所以本程序是一个两分支程序。ORG0200HSTART2:MOVDPTR,ARE;送X变量地址 MOVXA,DPTR;变量送A JZSUL;若X=0,转SUL JBACC.7, NEG ;若X的符号位为1,是负数,转NEG MOVA,01;符号位为0,是正数,1(A)SUL: MOVDPTR,BUF;送Y的单元地址 MOVXDPTR,A;存数,返回 RETNEG: MOVA,0FFH;X0,1(A) SJMPSUL;ARE: EQU8050H;BUF: EQU1060H END5.2.3 循环程序设计 开 始 开始

温馨提示

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

评论

0/150

提交评论