单片机原理及应用教案-第2章_第1页
单片机原理及应用教案-第2章_第2页
单片机原理及应用教案-第2章_第3页
单片机原理及应用教案-第2章_第4页
单片机原理及应用教案-第2章_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

1、第2课 教学内容:1.6 单片机的数制、 码制与编码第2章 MCS-51 单片机基本知识2.1 MCS-51单片机内部资源中央处理单元CPU教学目标: 了解:单片机基本资源情况。掌握:CPU的组成、功能牢固掌握:特殊功能寄存器的结构、功能和各位的设置;二进制码制、补码及编码。课时安排:     3 课时 教学重点:     CPU的组成、功能;特殊功能寄存器的结构、功能和各位的设置;二进制码制、补码及编码。教学提示: 一、重点内容与要点分析 (一)单片机的数制、码制与编码1数制(1)二进制(Binary)·

2、;二进制的特点:数码为0、1;逢2进1,借1顶2。·二进制数以幂级数形式表示时,2为基数,其i位的权是2i。如:101101.11B=1×25+0×24+1×23+1×22+0×21+1×20+1×21+1×22 =32+0+8+4+0+1+0.5+0.25 =45.7,其中最高位的权是25,次高位的权是24,等等。二进制数N的通式是各位的数码a与其所在位的权2i乘积之和。即N=式中 n整数部分位数; m小数部分位数; a第i位数码; 2i第i位数的权;(2)十六进制(Hexadecimal)十六进制的特

3、点是:·16个数码:0、1、2、3、4、5、6、7、8、9、A、B、D、D、E、F,其中A、B、C、D、E、F相当于10、11、12、13、14、15 。·逢十六进一,借一顶十六。十六进制数以幂级数形式表达时,16为基数,其i位的权是16i。十六进制数的最后均标有字母H。如:FAH=F×16+A×16=15×16+10×1=250。十六进制数N的通式也是各位的数码ai与其所在位的权16i乘积之和。即N=±式中 n整数部分位数;m小数部分位数;ai第i位数码;16i第i位数的权;(3)二进制数与十六进制数转换1)二进制数转换成

4、十六进制数二进制数变十六进制数是最好转换的。一般的办法是,四位合一位法。即,以小数点为界,向前、后每四位二进制数合一位十六进制数,不够四位补“0”,如: 1110 0011 . 1001 0100 B = 0E3.94H E 3 . 9 4 H 2)十六进制数转换为二进制数转换法转换方法是每位成四位法,也以小数点为界每位十六进制数转换为4位二进制数,如将上例逆转一下,就有0E3.94H=1110 0011.1001 0100B(4)二进制数、十六进制数与十进制数转换1)二进制数、十六进制数转换成十进制数转换方法是按权展开,然后按照十进制运算法则求和。例:1011.1010B=1×23

5、+1×21+1×20+1×2-1+1×2-3=11.625DFC.8H =13×162+15×161+12×160+8×16-1 = 3580.52)十进制数转换成二进制数、十六进制数整数转换法十进制数转换成二进制数:53÷2=26 余 126÷2=13 余 013÷2=6 余 16÷2=3 余 0 3÷2=1 余 11÷2=0 余 1由此得到:53=110101B“除基数取余法”:十进制整数不断除以转换进制基数,直至商为0。每除一次取一个余数,从低位排向

6、高位。例:十进制数转换成十六进制数:208÷16=13 余 0 13÷16 =0 余 13 = DH 由此得到:208 = D0H 小数转换法十进制数转换成二进制数:0.375×2=0.75 取整数部分 00.75×2=1.5 取整数部分 10.5×2=1 取整数部分 1 由此得到:十进制数0.375=0.011B“乘基数取整法”:用转换进制的基数乘以小数部分,直至小数为0或达到转换精度要求的位数。每乘一次取一次整数,从最高位排到最低位。例:十进制数转换成十六进制数:0.625 × 16 = 10.0由此得到:0.625 = 0.AH

7、2 码制微机中所处理数的基本形式是二进制数码,为运算方便起见,单片机采用的码制有原码、反码和补码三种形式,见表1-3。(1)原码原码是微机中所处理数的原形,也就是用户按二进制数表示法输入计算机的数。原码可以是无符号数,也可以是有符号数。以单片机常用的八位二进制数为例:原码为无符号数时,8位二进制数00000000B到11111111B就和0到255的自然数一一对应。原码为有符号数时,8位二进制数00000000B到11111111B就要按最高位的值分为正数与负数二种,即最高位为符号位,其余为数值位。如: 符号位为0时,数为正 + 1010B的原码为 00001010 B 。符号位为1时,数为负

8、 - 1010B的原码为 10001010 B 。表1-3 二进制数用作不同码制数时的实际值对照表不同码制下的实际值二进制整数形式用作无符号数时对应的十进制数值用作带符号数时的不同码制对应的十进制数用作原码时用作反码时用作补码时000000000+0+0+0000000011+1+1+1000000102+2+2+201111110126+126+126+12601111111127+127+127+12710000000128012712810000001129112612710000010130212512611111101253125231111111025412612111111112

9、5512701 (2)反码运算过程中使用正数的反码 = 原码, 负数的反码符号位 = 原码的符号位 数值位 = 原码数值位按位取反 如上例1010 B的八位反码为: 11110101 B (3)补码 补码是为了计算方便,不是为了人计算方便,而是为了计算机简化减法运算,用加法完成减法的一种码制。1)补码的定义 正数的补码表达形式就是正数本身,有X=(X),负数的补码表达形式(X)就是模减原码的绝对值,有(X)= 模 -X。这里,模与机器数的位数有关,如8位2进制数的模为2=100H,当8位二进制数X=0FFH时,对X再加1,就会超出8位二进制数的表达范围,产生溢出或进位,即X+1=0FFH+01

10、H=100H=进位+00H,这意味着当机器数从0开始增加到模的数值就会重新从0开始循环计数的值,模的具体值是超过机器数规定范围1的值,对8位二进制数,模就是2=100H。2)补码的作用 补码是用来将计算机中的减法变为加法。采用补码,实际上玩了一个算术的游戏:你要减一个数,比如X-Y,这个Y,可以看作-Y,就变成 X+(-Y),X和Y本身是原码,减很困难,看作-Y 后,把-Y变成补码表达形式,就可以做加法。3)补码的简便求法上述按定义求模码的过程非常繁琐,在计算机实际操作时是采用反码+1的简便方法来求补码的。即: 补码 =(原码)+ 1如:-01H的反码表达形式为11111110B或0FEH,-

11、01H的补码表达形式就是 (-01)=(01)反+1=0FEH +1=0FFH这一求法的原理是:补码表达形式=模-原码=100 - 原码=(0FFH-原码)+1而前述负数的反码表达形式为原码的绝对值按位取反,即0FFH-原码。所以,补码表达形式=(原码)+1 。3二进制编码在计算机中,由于机器只能识别二进制,因此键盘上所有数字、字母和符号也必须事先为它们进行二进制编码,以便机器对它们加以识别、存储、处理和传送。和日常生活中的编码问题一样,所需编码的数字、字母和符号越多,二进制数字的位数也越长。下面介绍几种微型机中常用的编码。(1)BCD码BCD码是十进制数的二进制码(Binary Coded

12、Decimal),BCD码的种类较多,常用的有8421码,2421码,、余3码和格雷码等。下面介绍一下8421码。8421码也是BCD码中的一种,因组成它的4位二进制数码的权为8、4、2、1而得名。8421码是一种采用4位二进制数来代表十进制数码的代码系统。在这个代码系统中,十组4位二进制数分别代表了09中的十个数字符号,如表1-4所列。其中,0000B1001B为8421的基本代码系统代表0 9 。 1010B1111B为非法码,逢10需再进一个4位二进制数。大家知道,4位二进制数共有16种组合,其中0000B1001B为8421的基本代码系统,1010B1111B未被使用,成为非法码或冗余

13、码。10以上的所有十进制数至少需要二位8421码字(即8位二进制数字)来表示,而且不应出现非法码;否则就不是真正的BCD数。因此,BCD数是由BCD码构成的,是以二进制数形式出现的,是逢十进位的,但它并不是一个真正的二进制数,因为二进制数时逢二进位的。例如:十进制数45的BCD码形式为01000101B(即45H)而它的等值二进制数为00101101B(即2DH)。表1-4 8421BCD编码表十进制数8421码十进制数8421码012345670000B0001B0010B0011B0100B0101B0110B0111B891011121314151000B1001B00010000B00

14、010001B00010010B00010011B00010100B00010101B(2)ASCII码(American Standard Coded for Information Interchange)由于计算机内部只能识别和处理二进制代码,所以字符必须按照一定的规则用一组二进制编码来表示。常见的ASCII码用七位二进制表示一个字符,它包括10个十进制数字(09)、52个英文大写和小写字母(AZ,az)、34个专用符号和32个控制符号,共计128个字符。这种ASCII码在计算机中,通常一个字节存放一个字符,一个字节右边的七位表示不同的字符代码,而最左边一位可以作奇偶校验位,用来检查错误

15、;也可以用于西文字元和汉字的区分标识。 ASCII字符编码表见附录。由表中可见,数字和英文字母都是按顺序排列的,只要知道其中一个的二进制代码,不要查表就可以推导出其它数字或字母的二进制代码。另外,如果将ASCII码中09十个数字的二进制代码去掉最高三位"011",正好与它们的二进制值相同,这不但使十进制数字进入计算机后易于压缩成4位代码,而且也便于进一步的信息处理。(二) MCS-51 单片机基本知识 本部分对MCS-51单片机的硬件资源和指令系统进行了全面的分析介绍。在本章中应掌握以下内容:Ø 8051由CPU、内部程序存贮器ROM、内部寄存器RAM、I/O接口

16、控制单元、定时器计数器、串行通信接口、内部总线等部分构成。Ø SFR中有CPU专用寄存器和功能单元专用寄存器两类:CPU专用寄存器有:ACC、B、PSW、SP、DPTR等。应掌握PSW中各位的含义。D7 D0CYACF0RS1RS0OV-P堆栈区使用通用RAM单元,复位时堆栈指针SP=07H。在指令系统中通过数据指针DPTR来间接寻址访问外部数据存贮器。功能单元专用寄存器有:并行接口缓冲器:P0、P1、P2、P3 D7 D0/RD/WRT1T0/INT1/INT0TXDRXD P3口的复用功能中断系统:IP、IE定时器计数器:TMOD、TCON、TH0、TL0、TH1、TL1串行接口

17、:SBUF、SCON电源控制:PCON1MCS-51系列单片机的主要性能特点(1)内部程序存储器(ROM)的容量-51子系列可达4K Bytes (但需注意8031无内部ROM), -52子系列可达8K Bytes(本课程的重点是-51子系列, 必要时讨论-52子系列)(2)内部数据存储器(RAM)的容量除专用寄存器外,-51子系列为128 Bytes ,-52子系列可达256 Bytes (3)输入/输出口线MCS-51系列单片机可达32根。两种功能:1)一般功能作为普通的I/O口线使用; 2)特殊功能完成特定的功能,例如作为数据/地址总线、读写使能、串行通信等(4)外部数据存储器寻址空间:

18、 直接寻址64K bytes,间接可达64Kx64K bytes(5)外部程序存储器寻址空间: 64K bytes (6)定时器/计数器-51子系列有2个16位定时器/计数器,-52子系列有3个16位定时器/计数器(7)串行口用两根IO口线实现全双工、半双工、单工串行通信,有4种工作方式,可通过编程设定。(8)通用(或工作)寄存器(R0R7):有32个通用工作寄存器,分成4个区,每区有8个通用寄存器。(9)中断系统-51子系列有5个中断源,-52子系列有6个中断源;二者均有2种优先级。(10)堆栈由内部数据存储器构成堆栈,堆栈深度可达128字节。(11)布尔处理机51单片机内部具有布尔处理机,

19、可按位处理信息,特别适用于控制目的和解决逻辑问题。(12)指令系统丰富的指令,强大的功能;执行指令的时间在类似的单片机中较快(例如与8048、6502 等比较),当振荡器频率为12Mhz时,大部分指令的执行时间为1us ,少部分为2us ,乘除指令为4us 。综上所诉,MCS-51系列单片机性能较好,在国内、国外的应用非常普及,已成为工业标准产品,尤其适合于自动控制、人工智能等领域。2. 8051的内部总体结构(1)下图,MCS-51单片机方框图,包括各个组成部分:1个8位中央处理单元(CPU);4 K bytes 的程序存储器;128 Bytes的数据存储器;专用寄存器(框图中未画出,见图1

20、-2);32根IO(输入/输出)口线;2个定时器/计数器;1套中断系统(5源、2优先级)1个全双工的串行接口;1个片内振荡器和时钟电路;1套64KB 总线扩展控制器。电源部分;工作过程:1)取指:CPU使64KB总线扩展控制器工作,从内部或外部程序存储器中取出指令,并进行译码; 2)操作:指令译码后的结果在CPU控制下,对、SFR、RAM、T0/T1、中断系统、串行口、I/O口等执行相应的操作。(2)总体结构图CPU:ACC、ALU、暂存器1、暂存器2、以及涉及到的内部总线等;4 K bytes 的程序存储器:EPROM/ROM128 Bytes的数据存储器:RAM地址寄存器、RAM、总线等;

21、专用寄存器:B、SP、PSW、PC、DPTR等32根IO(输入/输出)口线:P0.0、P0.1P3.7、P0P3锁存器、驱动器2个定时器/计数器:1套中断系统(5源、2优先级):中断、串行口及定时器、P3口中的专用功能部分1个全双工的串行接口: 1套64KB 总线扩展控制器:P0口、P2口及其内部的总线扩展部分;1个片内振荡器和时钟电路:振荡器、定时及控制;电源部分:VCC、VSS3中央处理单元CPUMCS-51单片机CPU的主要特点是:·8位微处理器按8位二进制数为1字节进行数据处理。·由算术逻辑单元ALU(Arithmetic and Logical Unit)、定时控

22、制器与专用寄存器组SFR(Special Function Register)三部分电路组成。在图2-1中以ALU为核心标出了CPU的这三个主要组成电路。(1)算术逻辑运算单元ALU(Arithmetic and Logical Unit)单片机的核心是CPU,而算术逻辑运算单元ALU是CPU的核心。(2)定时控制器定时控制器由定时控制逻辑、指令寄存器IR、振荡器OSC等电路组成。(3)专用寄存器组SFR(Special Function Register) CPU内还包括了一个很重要的部分:一个专用的寄存器组SFR。这是为CPU提供重要信息的专用8位内存单元,有定时器的地址,有控制接口的状态

23、字,也就是对接口的控制字等。接口是个电路。电路什么时候工作,怎么工作由计算机来管理。但计算机根据什么来管理呢?就是根据放在这些特殊寄存器SFR里的信息来管理的。由于SFR在CPU内,使用起来就非常方便。举个例子来说,就象我们身上穿的衣服都有口袋是为了使随身物品存取方便,快捷。SFR共有21个寄存器,如表2-1所示,下面先介绍几个最常用的专用寄存器。1) 程序计数器PC(Program Counter) 程序计数器PC是一个二进制16位的程序地址寄存器,主要功能是:存放下一条要执行的指令在程序存储器中的16位地址。自动加1功能。CPU执行指令时,它根据程序计数器中地址从存储器中取出当前需要执行的

24、指令码,并把它送给控制器分析执行,随后程序计数器中地址码自动加1,以便为CPU取下条需要执行的指令码作准备。在执行连续程序时,CPU每从程序存储器中取出一条指令,PC的值就自动加1,使CPU能在程序存储器中连续取出指令。所以,需要执行程序的机器码必须在程序执行前预先一条条地按顺序放到程序存储器中,并将程序计数器设置为程序第一条指令的内存地址。PC单元本身没有地址,是不可寻址的,因此,用户无法对其进行读写,但在执行转移、调用、返回等指令时能自动改变其内容,以改变程序的执行顺序。CPU复位时PC=0000H,通常在ROM的0000H-0002H单元存放一三字节的长转移指令 LJMP ADDR16,

25、其中ADDR16为主程序始址,使PC指向主程序的始址,保证程序从头开始。实际上程序计数器PC就是CPU执行程序的指针,CPU要执行哪条指令是由PC值决定的,即PC 给出了CPU下一条指令在程序存储器中的地址。说白了,PC寄存器相当于微机的指挥棒,其作用是非常重要的。可以夸张一点地说,今后我们如果弄懂了PC寄存器的行为,那么微机的原理也就能懂一半了。所以,我们在学习单片机的软、硬件时要特别注意PC的行为,也就是PC的工作情况与动向。2)累加器A(Accumulator) 又记作ACC,是专门用来存放操作数据与运算结果的二进制8位寄存器。累加器是最忙的一个寄存器。它必定放一个操作数,并要存放操作后

26、的结果。也就是说,CPU的ALU在进行运算时用的两个操作数,其中一个数要放在累加器里,而计算结果一定放在累加器里。累加器在代表直接地址时,记作ACC,而在专指累加器的指令中,其助记符只写着。例如:在3+5的加法程序中,第一条指令是把加数3预先送入累加器A,为第二条加法指令的执行作准备,在第二条指令执行后累加器A内容为两数之和8。MOV A,#03H;A3ADD A,#05H;AA+5累加器的结果会影响到一个重要的特殊功能寄存器PSW的内容。另外,累加器A是数据传送的中转寄存器,单片机的大部分数据传送都通过累加器进行的,例如:MOV DPTR,#0100H ;DPTR指向片外RAM的一单元地址0

27、100HMOV A,#01HMOVX DPTR,A ;累加器A中内容01H送入片外RAM的0100H单元3)程序状态字PSW(Program Status Word ) PSW是一个很重要的8位标志寄存器,主要用来描述CPU执行指令后在累加器中结果的特性:进位、溢出等,借此,我们可以了解CPU的当前状态,并作出相应的处理。各位状态通常是在指令执行过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。PSW各标志位定义见表2-2。表2-2 PSW各标志位定义位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位标志CYACF0RS1RS0OVP位地址D7D

28、6D5D4D3D2D1D0Cy(Carry)进位标志位,其功能如下:·加减运算最高位有进位(加法)或有借位(减法),Cy位由硬件自动置,否则被清零。8051中的运算器是一种8位的运算器,我们知道,8位运算器只能表示到0255,如果做加法的话,两数相加可能会超过255,这样最高位就会丢失,造成运算的错误,怎么办?最高位就进到Cy里,用Cy置位来计入最高位的进位行为,这样就没事了。此外,CPU在进行移位操作时也会影响这个标志位。·在位操作中,Cy作累加位使用,在位传送、位逻辑操作中,都要使用进位标志位。AC(Auxiliary Carry)辅助进位位,用于表示加减运算时低4位即

29、A3有无向高4位即A4进位或借位,A3向A4有进位或借位时,则AC由硬件置位,即AC1,否则AC位被清“0”。F0(Flag zero)用户标志位,此标志位的状态通常不是机器在执行指令过程中自动形成的,是由用户根据程序执行的需要用软件方法(即传送指令)置位或复位的。该标志位状态一经设定,便由用户程序直接检测,以控制用户程序的转向。RS1、RS0工作寄存器组选择位,8051共有8个8位工作寄存器,分别命名为R0一R7,用户通过改变RS1、RS0的状态可以方便地设定当前R0R7的组号,即实际物理地址。工作寄存器R0R7的物理地址和RS1、RS0之间的选择关系如表2-3所示。表2-3 工作寄存器选择

30、关系表RS1 RS0R0-R7组号片内RAM中物理地址0 0000-07H(R0=00H、R1=01H、R7=07H)0 1108-0FH(R0=08H、R1=09H、R7=0FH)1 0210-17H(R0=10H、R1=11H、R7=17H)1 1318-1FH(R0=18H、R1=19H、R7=1FH)8031、8051单片机在复位后RS1、RS0=0,CPU选中第0组作为当前工作寄存器,R0-R7物理地址为00-07H。根据需要,用户可利用传送指令或位操作指令来改变其状态,如SETB RS0,则第1组就是当前工作寄存器,R0-R7物理地址为08-0FH,这样的设置为程序中保护现场提供了

31、方便。OV(Overflow)溢出标志位,用于带符号数的加减运算,指示运算过程中是否发生了溢出,由机器执行指令过程中自动形成。若机器在执行运算指令过程中,运算结果超出累加器A所能表示的8位有符号数的范围,即-128+127,则0V 标志由硬件自动置1;否则0V由硬件清“0”,表示运算结果正确。用户根据执行运算指令后的OV状态,可以判断累加器A中的结果是否正确。 在无符号数的乘法运算中,当乘积超出255时,OV由硬件自动置1,表示乘积超出了8位二进制数的允许范围,乘积分别存放在B寄存器和累加器A中;反之,OV由硬件清“0”,表示乘积未超过255,仅在A存放。在除法运算中,当除数为0时,OV由硬件

32、自动置1,表示除法不能进行,反之,则OV由硬件清“0”,表示除法运算可正常进行。P(Parity)奇偶标志位,表明运算结果即累加器A中1的个数的奇偶性。在每个指令周期由硬件根据A中的内容对P进行置位或复位,若则累加器A中1的个数为奇数,P1;若累加器A中的1的个数为偶数,P=0。例1 设程序执行前RS1、RS0=00H,F0=0,求机器执行如下程序后MOV A,#0AHADD A,#0F7HPSW中各位的状态是什么?解 上述加法指令执行时0 0 0 0 1 0 1 0 B + 1 1 1 1 0 1 1 1 B1 0 0 0 0 0 0 0 1 B CP CS式中:CP为最高位进位,CP=1;

33、CS为次高位进位,CS=1,F0,RS0、RS1由用户根据需要设定,加法指令不会改变其状态,最高位有进位,Cy=1,A3向A4有进位,AC=1,结果A中的1的个数为奇数,P1,OV的状态可由下式确定: CPCS1l0OV=0故 PSW=11000001B=C1H4)堆栈指针SP(Stack Pointor) SP是一个专门用来存放堆栈的栈顶地址的8位寄存器,能自动加1或减1。堆栈的概念 堆栈是一种按特定顺序进行存取的存储区,这种特定顺序可归结为"后进先出"(LIFO:Last In First Out)或"先进后出"(FILO:First In Last

34、 Out)。就是在片内RAM中划出一部分单元,用作存放临时数据区。这些临时数是指令执行过程中的不能丢失的数,丢失以后程序就无法进行下去,所以要把这些数保留在堆栈里。也可以说,堆栈相当于一个保护区,有紧急情况发生时,把重要数据保护起来。如,在执行中断时,或调用子程序时,第一个要保护的临时数据是当前PC值,所以在发生中断或调用子程序时,CPU会自动把PC当前值压入堆栈,中断或调用子程序完了以后,CPU可取出PC值使程序回到断点处继续执行下去。另外,在发生中断或调用子程序时,会发生累加器A和其它存储单元的重复使用,所以必须把当前A或其他存储单元的内容压入堆栈保护起来,以便返回后,恢复累加器A或其他存储单元的内容,即恢复现场。综上所述,堆栈主要是为子程序调用和中断操作而设立的,其具体功能是保护断点地址和保护现场,也可用于调用子程序时参数的传递。    堆栈有栈顶和栈底之分,栈底由栈底地址标识,是固定不变的,决定了堆栈在片内RAM中的物理位置。栈顶由栈顶地址指示,需要一个专门的硬件寄存器作为堆栈栈顶指针,简称栈指针S

温馨提示

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

最新文档

评论

0/150

提交评论