版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第1章单片机原理1.1单片机运算基础及结构基础简介1.2MCS-51单片机的功能结构1.3MCS-51单片机存储器1.4单片机最小系统1.5小结习题与思考题1.1单片机运算基础及结构基础简介单片机中的数以器件的物理状态表示,由于具有两个状态的物理器件容易制造,有10个状态的物理器件难于制成,因此在单片机中广泛使用二进制数。二进制数的N次方所对应的十进制数如表1-1所示。阅读和记忆二进制数极易出错,考虑到4位二进制数就是1位十六进制数,因此在单片机中几乎全用十六进制数书写二进制数。而在大型机中还经常用八进制数书写二进制数。相应各种进制数之间的关系如表1-2所示。单片机中区别不同数制的方法是在数的后面加一个字母:二进制数用B(Binary);八进制数用Q(Octal),手写时O、0易混淆,故用Q;十进制数用D(Decimal)或省略D;十六进制数用H(Hexadecimal)。也可以直接将数制写在数的右下角。单片机中为了简化表示,常用K表示210,用M表示220,用G表示230,用T表示240。即
1K=210=1024 1M=220=1KK=1048576 1G=230=1KM=1073741824 1T=240=1MM=10995116277761.1.1运算基础
1.数制转换将各种进制数转换成十进制数的方法是按权展开然后相加:
101.1H=1×162+0×161+1×160+1×16-1=257.0625D 101.1B=1×22+0×21+1×20+1×2-1=5.5D将十进制整数转换成其它进制数,使用除进率取余法,即用进率不停地去除需转换的十进制数,直至商为0,把每次相除所得余数倒序排放,就是所需转换的数。例如,将298D转换成十六进制数:第一次除法:298÷16=18余10(最低位),10的十六进制数是AH;第二次除法:18÷16=1余2(次低位);第三次除法:1÷16=0余1。所以298D=12AH把二进制数转换成十六(八)进制数,只需从最低位向左每4(3)位为一组,每组用1位十六(八)进制数表示,最高位不足4(3)位的补足4(3)位,凑成一组,如:
1011010110111B→0001011010110111B ↓↓↓↓ 16B 7H所以1011010110111B=16B7H
十六(八)进制数转换为二进制数,只需每位用相应的二进制数代替:
372Q→372 ↓↓↓ 011111010=11111010B
2.有符号二进制数的符号表示方法无符号数在单片机中表示成二进制数时,所有的二进制位都是数值位。有符号数要想在单片机中表示出来,必须将符号数码化,通常用“0”表示正号,用“1”表示负号。例如,使用8位二进制数表示+1001001B,就表示成
01001001B
符号位数值位或写成十六进制数49H。而-1001001B就表示成
11001001B
符号位数值位或写成十六进制数C9H。无论有符号二进制数是用8位、16位、32位,还是用64位表示,都只用一位表示符号位,就是最高位,而其余位全部都是数值位。已经把符号数码化了的二进制数被称为机器数,相应二进制数或十进制数的值被称为机器数的真值。机器数有原码、反码和补码三种表示方法。
1)原码最高位为符号位,其余位为数值位的二进制数码叫做机器数的原码。例如X=+76=+1001100B,则[X]原=01001100B=4CH这里用8位二进制数表示,最高位为符号位,其余7位为数值位。如果用16位二进制数表示,则[X]原=0000000001001100B=004CH又假设Y=-76=-1001100B,则[Y]原=11001100B=CCH如果用16位二进制数表示,则[Y]原=1000000001001100B=804CH在书写机器数的时候,必须首先指明二进制数用多少位,一般不加申明时常用8位。从原码的表示中可以看出:如果一个十六进制数的首位大于等于8,那它必然是一个负数的原码。例如CCH、83H等就是负数的原码,因为它们化成二进制数后最高位是1。
2)反码正数的反码与正数的原码相同;负数的反码等于负数的原码除符号位外逐位求反。例如X=+76=+1001100B,则[X]反=[X]原=4CH又如Y=-76=-1001100B,则因[Y]原=11001100B=CCH,所以[Y]反=10110011B=B3H
3)补码正数的补码与原码相同;负数的补码等于其反码加1。例如:
[+76]补=[+76]反=[+76]原=4CH [-76]补=[-76]反+1=10110100=B4H
【例1-1】
已知[X]补=A7H,求X。
解:因X的符号位为1,故X<0,
[X]反=[X]补-1=A6H=10100110B所以[X]原=11011001B→X=-1011001B=-89虽然原码与真值转换简单,但两数相减时,需要减法器硬件电路的支持。而单片机为了简化硬件结构,CPU内只设计了一个加法器,为此引进了补码的概念。反码正是为了计算补码而设立的一种表示法。
3.二进制数及补码运算
1)二进制数数学运算加法运算规则是逢二进一。例如:
101B
+11B 1000B减法运算规则是向高位借1到本位的大小等于十进制数的2。例如:
101B
-11B 10B乘法运算规则是只有当两个1相乘时,部分积才为1,否则为0。例如:
101B
×11B 101
+101 1111B除法运算规则是够减商为1,不够减商为0且把被除数下一位移至除数。例如:
1B
11B 101B
-
11B
余 10B
2)二进制数逻辑运算“与”运算规则为只有两个1相“与”时,结果才为1,否则为0。例如:101B∧011B=001B“或”运算规则为只要“或”的双方有一个为1时,结果就为1。例如:101B∨011B=111B“非”运算规则为“非0即1,非1即0”。例如:A=1010B,则=0101B“异或”运算规则为两个相同逻辑变量“异或”,结果为0;不同逻辑变量“异或”,结果为1。例如:101B001B=100B
3)补码运算补码运算规律是有符号数的符号位和数值位具有相同的进位规则,这就意味着如果参加运算的二进制数是补码形式,那么在进位时,有符号数完全同于无符号数,而运算的结果也是补码。
【例1-2】设[X]补=36H,[Y]补=20H,求[X]补+[Y]补。解:[X]补+[Y]补=36H+20H=56H,相加结果是56H的补码。
【例1-3】设[X]补=63H,[Y]补=F4H,求[X]补+[Y]补。解:[X]补+[Y]补=63H+F4H,列竖式如下:
01100011B
+11110100B 101010111B=157H=57H最高进位位1将自然丢失。相加前,[X]补=63H是X=+99的补码,[Y]补=F4H是-12的补码;相加后,结果57H是87的补码。补码运算有两个特征:一个是能把减法转换成加法,另一个是存在溢出问题。
【例1-4】利用补码完成64-11。直接相减结果为53,化成十六进制数是35H。
解:
64-11=64+[-11]
=[64]补+[-11]补
=40H+F5H
=135H在最高位进位自然丢失后,结果为35H,恰是十进制数53的补码,与直接相减结果相同。
【例1-5】溢出问题举例。设[X]补=40H,[Y]补=41H,此时,X=+64,Y=+65,直接相加后结果为+129。但如果用补码相加,有[X]补+[Y]补=81H=10000001B,最高位为1表明和是负数,81H是-127的补码。两个正数相加,结果成了负数,说明补码相加出了问题。出问题的原因在于8位二进制数补码所能表示数的范围是-128~+127,如果相加的和超出了这个范围,结果必然出错,这种情况称为溢出。本例就是溢出的例子,40H与41H的和+129>+127。
8位、16位二进制数表示无符号数和有符号数的范围如表1-3所示。判断补码运算是否产生溢出,有一个比较简单的方法。假设参加相加的两个数及结果都用补码,且将结果的进位位丢失,则有:两个正数相加得负数,有正溢出;两个负数相加得正数,有负溢出;有三种情况下无溢出:①两个正数相加得正数;②两个负数相加得负数;③一个正数与一个负数相加。溢出的判断方法如表1-4所示。两个无符号数相加时无溢出问题,只存在进位问题。两个8位二进制数相加,结果为9位,其中相加的和为8位,进位位为1位(或为0,或为1)。
【例1-6】无符号数9AH+81H,结果为11BH,进位位1不能丢失。1.1.2二进制编码
1.BCD码
BCD码(BinaryCodedDecimal)的全称是用二进制编码的十进制数。用4位二进制数表示1位十进制数,由于4位二进制数可以区分16种不同的状态,因此表示方法很多,其中用得最多的是8421BCD码,如表1-5所示。要注意BCD码的4位不能省略,例如5的BCD码是0101BCD,而不是101BCD。使用4位二进制数表示1位十进制数的BCD码称为压缩BCD码。例如十进制数265用压缩BCD码表示为
001001100101BCD使用8位二进制数表示1位十进制数的BCD码称为非压缩BCD码,其中的高4位为0000。十进制数265用非压缩BCD码表示为
000000100000011000000101BCD
2.ASCII码
ASCII码(AmericanStandardCodeforInformationInterchange)是美国标准信息交换代码的缩写。它用6位、7位或8位二进制数表示一个字符,其中7位二进制数表示字符的ASCII码用得最多,为了书写成8位二进制数,最高位通常写“0”。7位二进制数能表示128个字符,其中最常用的字符如表1-6所示。如十进制数符号0~9用30H~39H表示,它们的高4位全为“3”,低4位与BCD码相同,这种表示方法又称为ASCIIBCD码。英文字母ASCII码分大、小写,其中A~Z用41H~5AH表示,a~z表示成61H~7AH。
BCD码和ASCII码都能参加运算,运算时它们遵循各自的运算规则。压缩BCD码运算的基本规则是:先按二进制数加法规则进行;再根据相加过程或结果决定是否要调整。调整的方法是:只有当低4位向高4位有进位或低4位和大于9时,才加6调整;同理,只有当高4位有进位或高4位和大于9时,才加60H调整。
【例1-7】27+38=00100111BCD+00111000BCD
=01011111B低4位相加得15>9,故加6调整得:
27+38=01011111B+0110B=01100101BCD=65非压缩BCD码运算的基本规则与压缩BCD码相同,但要注意个位向十位的进位问题。因为它是8位二进制数表示1位十进制数,且高4位始终是0000B,不能参加运算。
【例1-8】27+38=0000001000000111BCD+0000001100001000BCD
=0000010100001111B
=0000010100001111B+00000110B =0000011000000101BCD =65在ASCII码中,只有代表数字符号的字符可以参加加减运算,其它字符不能参加加减运算。但可以进行传送、比较、查询等非数值处理。ASCII码的运算规则与压缩BCD码完全相同,仅注意高4位始终要保持为0011B,不参与相加,否则将出错。
【例1-9】27+38变成ASCII码数字字符运算。
27+38→3237H+3338H=353FH=353FH+36H(加6调整) →3635H=651.1.3微型计算机的一般结构微型计算机(Microcomputer)简称微机,记为MC,是指以微处理器为核心,配以内部存储器、I/O(输入/输出)接口电路和系统总线的计算机。
1.常用术语
位(Bit):二进制位,只有0、1两种状态,是信息存储的最小数据单位。若干个二进制位可以表示各种数据和字符。字节(Byte):简写为B,相邻8位二进制数为1个字节。1B=8位,或说1个字节的长度为8位。存储器1个存储单元通常为1B。字(Word):简写为W,是微机内进行数据处理的基本单位。一般情况下,相邻16位二进制数为1个字。1W=2B=16位。1个字可分成低字节和高字节。双字(DoubleWord):简写为DW,由相邻32位二进制数组成。1DW=2W=4B=32位。可分成低位字和高位字。
●四字(QuadWord):简写为QW,由相邻64位二进制数组成。1QW=2DW=4W=8B=64位。可分成低位双字和高位双字。
●双四字(DoubleQuadWord):简写为DQW,由相邻128位二进制数组成。1DQW=2QW=4DW=8W=16B=128位。可分成低位四字和高位四字。双四字用于具有SSE扩展的PentiumⅢ及以上的CPU结构。
●字长:基本数据单元所包含的二进制位数,通常和微机内部寄存器、运算器、数据总线宽度相一致。8位机、16位机和32位机就是指字长分别为8位、16位和32位的机器。
●位串(BitString):若干二进制数位的集合。一个位串最短是1位,最长包含232位。从“位”到“双四字”都可以看做是位串的一种。位串存放在存储器中,1个字节位串占1个存储单元,1个字位串占2个存储单元。依此类推,1个双四字位串占16个存储单元。
●字符串(CharacterString):字节、字和双字的相邻序列,分别有字节串、字串和双字串。使用专用的字符串操作指令(可加重复前缀)完成传送、比较和查询。位于最低位的串地址就是该字符串的起始地址。
●微处理器(Processor):简称为MPU或μp,是由一片或多片超大规模集成电路组成的具有运算控制功能的中央处理单元逻辑部件。中央处理单元(CentralProcessingUnit)简称CPU。CPU是一个比MPU更为广泛的概念,CPU可以是MPU中的一部分,也可以包括1片或几片功能不同的MPU,形成多处理器芯片。
●微型计算机系统(MicrocomputerSystem):简称微机系统,记为MCS或μcs,是以微型计算机为核心,配以相应的I/O硬件设备和连接它们的信息公共通道,以及系统软件、应用软件等构成的系统。一些典型的I/O设备有CRT显示器、键盘、打印机、磁盘驱动器、光盘驱动器、电源、机架等。信息公共通道为各种不同功能的总线。系统软件是统一指挥各逻辑电路正常工作的监控程序,应用软件是用户为解题或控制自行编制的程序。微机系统是硬件电路和软件程序相互结合的产物,硬软件缺一不可。
●网络(Network):是一种按一定的协议规则,把一个又一个微机系统以资源共享为目的连接在一起,实现通信和交换数据功能的系统。网络按照覆盖的地域、接入微机数量的多少和交换信息规模的程度,分为局域网、城域网和广域网。
2.微机的三总线结构微机由CPU、内部存储器、I/O接口和系统总线四部分组成,如图1-1所示。中央处理单元CPU的功能是完成算术逻辑运算和实现对微机各逻辑电路的控制。存储器(Memory)的功能是存放各种程序代码、数据代码和运算结果。存储器按照所在位置有内部存储器和外部存储器之分,其中片内RAM和片内ROM是单片机芯片内部的存储器,片外RAM和片外ROM是单片机芯片外部的存储器。对于PC机,内存条是微机的内部存储器(简称内存);硬盘、磁盘、光盘、U盘等则是它的外部存储器(简称外存)。图1-1微机基本结构输入设备和输出设备简称I/O设备。I/O接口(Input/OutputInterface)电路是I/O设备连接微机的惟一通道,其功能是转换信息格式、传送CPU的控制命令和反映I/O设备自身的状态。I/O接口电路又叫适配器。系统总线(SystemBus)是连接各逻辑部件且能传送信息的公共通道,包括地址总线(AB)、数据总线(DB)和控制总线(CB)。
3.中央处理单元CPU
CPU是一个比微处理器更为广泛的概念,CPU可以是MPU中的一部分,也可以含有1片或几片MPU。它的基本结构如图1-2所示,由运算器、控制器和内部寄存器阵列三部分组成。运算器又称算术逻辑单元ALU(ArithmeticLogicalUnit),功能是执行算术、逻辑和移位操作,运算结果送CPU芯片内部寄存器或经数据总线送存储单元,运算结果的一些特殊位送标志寄存器。图1-2微处理器的基本结构控制器(Controller)由指令寄存器IR(InstructionRegister)、指令译码和时序控制电路组成。指令寄存器IR用于暂时存放从存储器中取出的指令代码;指令译码电路的功能是把指令代码翻译成相关的控制和定时信号,确定执行什么操作,使用哪种寻址方式,如何根据寻址方式取得操作数等;时序控制电路的功能是:发出一系列的控制命令和时序命令,开启相关的组合逻辑门电路,触发相关的时序逻辑电路,指挥微机各逻辑部件统一协调工作,完成指令的操作。要想顺利执行指令,必须准确地找到操作数或操作数的地址。操作数可能出现在四个地方:①直接在指令中给出;②在CPU内部寄存器中;③在微机存储器中;④在I/O端口中。内部寄存器(Register)阵列含有累加器A、标志寄存器FLAGS、程序计数器PC、堆栈指示器SP、地址寄存器AR、数据寄存器DR等。累加器A(Accumulator)用于存放参加运算的一个操作数和运算结果。累加器A使用最频繁,算术逻辑运算通常以累加器A为核心进行。标志寄存器FLAGS提供两类标志:运算标志和控制标志。运算标志记录运算结果的一些特征,常见的有六种:①有无进(借)位;②有无半进(借)位;③有无溢出;④结果是否为“0”;⑤“1”的个数是奇是偶;⑥符号是正还是负。控制标志记录程序的走向,常见的有三种:①是否需要跟踪;②是否允许中断;③串操作指令是按增址方向还是按减址方向执行。程序计数器PC(ProgramCounter)又称指令指针IP(InstructionPointer),功能是存放下一条要执行指令的地址。程序存放在存储器的代码段中,当CPU从存储器取出1个指令字节时,IP的值将自动加1。
SP用于指示堆栈栈顶的地址,AR、DR分别用于暂存和缓冲地址及数据信息。
4.存储器存储器是存放程序和数据的部件。
1)存储器的基本结构存储器分为一个个存储单元。每个存储单元有两个属性:一个是为便于存取而建立的地址编码;一个是它存放的内容。存储单元的地址和内容虽然都是二进制代码,但却是两个完全不同的概念。图1-3给出了256B存储器的结构,该存储器由256个单元组成,每单元字长8位。256个单元地址编号从00H到FFH(从0到255)。存储器和CPU之间用三组总线连接,其中8/256地址译码器接收CPUAB送来的地址码。当地址线上出现8位地址信息时,经译码器选中相应一个单元,该单元的数据线与DB相连。在控制总线的读/写信号控制下,数据经由DB完成存储单元内容的存取操作。图1-3存储器的基本结构存储器的基本结构为存储体、地址译码器和控制电路。存储体是存储单元的集合;地址译码器负责选中存储单元;控制电路控制读/写操作过程。
2)存储单元的地址和内容寻找存储单元的地址,简称寻址。存储单元的地址是存储单元的顺序号,地址与存储单元一一对应,是存储单元的惟一标志。要想访问存储单元,必须首先寻址。几乎所有微机的存储器都是按字节编址的,存储器的每个存储单元固定存放1个字节(8位二进制数)。CPU从存储器中取出信息(简称“读”),或往存储器中存放信息(简称“写”),称为访问存储器。访问过程为:地址信息经译码器译码后选中某一存储单元,再根据控制总线送来的“读”、“写”命令将数据信息经数据总线完成“读”、“写”。下面以256B存储器为例,分析将78H单元的内容读出到CPU、将15H写入到B3H单元的访问存储器过程。
(1)读出操作。存储器读出操作示意图如图1-4所示。首先按照指令由CPU的地址寄存器AR给出地址号78H,然后地址总线上出现地址信号A7~A0=78H=01111000B送到译码器,译码后选中78H单元;再由CPU的控制总线发出“读”控制命令,存储器在接收“读”命令后,78H单元的内容3AH出现在数据总线DB上,并进入CPU的数据寄存器DR。存储器的读出是非破坏性的。数据从存储单元读出后,存储单元的内容应保持不变。如果存储器由双极型或CMOS双稳态触发器等构成,会自动保持不变。如果存储器由动态电容构成,则需要及时补充电荷,定时给那些该充电的电容充电,保证二进制信息不发生变化。图1-4存储器读出操作示意图
(2)写入操作。存储器写入操作示意图如图1-5所示。首先按照指令由CPU的地址寄存器AR给出地址号B3H,然后地址总线上出现地址信号A7~A0=B3H送到译码器,译码后选中B3H单元;接着数据寄存器DR的内容15H进入数据总线DB;随后CPU发出“写”命令,DB上的数据15H写入B3H。数据写入后,存储单元原先的内容被改写。图1-5存储器写入操作示意图
3)程序和数据在存储器中存放的方式存储单元的内容就是该单元存放的数据信息,例如30H单元的内容为9FH,可以表示成(30H)=9FH。通常在微机中直接书写的十六进制数30H表示存储单元的地址,加括号后表示该单元的数据内容。程序和数据以代码的形式在内存中以字节为单位进行存储。一个字节数据占一个存储单元。多字节数据在存储器中存放时,需要相邻存储单元,不能分开。1个“字”占相邻两个存储单元,1个“双字”占相邻四个存储单元,1个“四字”占相邻八个存储单元。多字节数据存放规则是高字节进入高地址;低字节进入低地址,且低字节的地址是多字节数据的访问地址。例如,一个字0AB56H存放在地址为58H和59H的两个单元中,其中58H单元放数据56H,59H单元放数据ABH,表示方法只需写出低字节地址:(58H)=0AB56H不足8位的数据要在最高位加0补足8位,形成一个字节才能存放。例如,7位ASCII码字符X放入40H单元中,记为‘X’=(40H)=58H。
4)存储器的主要性能指标存储器的主要性能指标有存储容量、存取速度和性能价格比。存储容量定义为:存储器的存储单元数与每个存储单元位数的乘积。即存储容量=存储单元数×位/每单元微机内部的存储器(简称内存)通常由厂家生产的存储器芯片构成。知道了存储芯片的存储容量和内存的存储容量,就可以计算出组成内部存储器所需要的芯片片数。例如,用Intel公司生产的存储器芯片27256(32K×8位)组成128K×16位的内部存储器,则所需芯片数===8片寻址存储器的地址线根数为n,存储器的数据线根数为m,则该存储器的容量为2n×m。例如,EPROM27256(32K×8位)存储器芯片,有15根地址线A14~A0,8根数据线D7~D0,则该芯片的存储容量为215×8bit(位),即32KB。反之,从存储容量也能推算出存储器有多少根地址线和数据线。存取速度用一次存储器访问所需的时间来表示。采用MOS工艺的存储器,存取时间约为几十~几百ns;双极型RAM最快可达10ns以下。无论哪种主存储器,存取速度均低于CPU,为此,当代微机存储器都采用多层次结构。性能价格比通常以每位为单位计价。每位的价位等于存储器售价除以存储容量。
5.I/O接口输入设备的功能是将外界的各种信息,如图形、图像、声音、文字、数字等,转换成微机所能接收和识别的二进制信息形式。输出设备的功能是将微机对二进制信息的处理结果转换成人们所能接收和识别的形式。由于I/O设备的信息格式明显不同于微机,并且大多数都有机械动作,数据传送速度远低于微机,输入/输出时都需要对数据进行缓冲存储处理,因此,I/O设备不能直接和微机相连,必须通过I/O接口电路与CPU交换信息。
I/O设备种类繁多,工作原理、信息格式各不相同,需要不同的接口电路。目前已生产了一些典型的I/O接口集成芯片,每种接口芯片只适配一种或信息格式相近的二三种I/O设备。这些接口芯片内部结构的复杂程度不亚于CPU芯片。
I/O接口电路和CPU之间的数据传送,是依靠I/O端口实现的。对CPU而言,每一个I/O端口和每一个存储单元完全一样,有自己的端口地址和端口内容。一个接口芯片可以有一个或几个端口,或者几个接口芯片的某些功能共用一个端口。为了满足传送数据信息和控制/状态信息的不同需要,I/O端口被划分成数据口和控制/状态口两种不同类型的端口,统一进行编址。要想正确使用不同用途的接口芯片,必须首先知道芯片有几个端口,是数据口还是控制口,端口地址各是多少,才能正确编制初始化程序和工作程序。
6.系统总线系统总线按功能划分为地址总线AB(AddressBus)、数据总线DB(DataBus)和控制总线CB(ControlBus)。图1-6为系统总线示意图。总线上能够并行传送的二进制位数,称为总线的宽度。每一种类型的总线都有自己的宽度。图1-6系统总线地址总线是传送地址信息用于选中某一存储单元和某一I/O端口的一组系统总线。地址信息流向单方向,由CPU指向存储器或I/O接口。CPU通过地址总线寻找存储单元或I/O端口地址的操作,称为寻址。地址总线的宽度决定了微机所能寻址的最大存储空间和最大I/O端口地址空间。8031单片机的地址总线宽度为20位,用A15~A0表示,可寻址的存储单元和I/O端口总数为216=64K个。数据总线是传送数据信息的一组系统总线。数据信息流向双方向,既可以从CPU流向存储器或I/O端口,也可以从存储器或I/O端口流向CPU。此外,在微机处于DMA(直接存储器存取)工作方式下,存储器和I/O接口还能相互传送数据。因此,数据总线为双向总线。数据总线的宽度成为按字长划分的计算机名称来源之一。MCS-51单片机的数据总线宽度为8位,MCS-51单片机就是一种8位机。当代PentiumCPU的数据总线宽度为64位二进制数,以Pentium为核心构成的计算机就被称为64位机。控制总线是传送控制命令和状态信息的一组系统总线。控制命令是CPU发布的控制存储器或I/O端口完成某一特定操作的命令信息,如读信号、写信号、地址锁存允许信号ALE等。状态信息是存储器或I/O端口向CPU发出的反映自身状态或请求的信号,如忙信号、中断申请信号等。控制总线就单根线来讲信息流向是单方向的,有的从CPU指向存储器或I/O端口,有的从存储器或I/O端口指向CPU,因此从成组来讲可以看成是双向的。由于采用了总线结构,使得CPU、存储器、I/O接口芯片之间的连接变得十分清晰,任何一个逻辑部件只要符合总线标准,都可以单挂在总线上。1.1.4微机工作原理微机按照程序存储式原理工作,只能被动执行人们事先编制好的程序。程序是指令有规律的集合,而指令(Instruction)则是人们规定微机完成一项操作的命令。表1-7列出了一个把2和3两数相加的程序,由两条指令组成。每条指令的二进制代码包含操作码和操作数,操作码指出完成什么操作,操作数是参加运算的数。假设把程序放到容量为256B的存储器中,从30H单元开始存放,需要4个单元,如图1-7所示。图1-7取指令示意图从存储器中取出指令操作码和操作数(以第1条指令第1字节为例)的过程如下:
(1) CPU中的PC(或IP)存放着30H,这是被执行指令代码的存储单元地址。执行开始,PC中的30H送地址寄存器AR,随后PC自动加1,成为31H,指向下一个单元。
(2) AR中的内容30H经AB及地址译码器选中存储器30H单元。
(3) CPU经CB发出“读”信号,30H的内容74H经DB进入数据寄存器DR,并经内部总线送入指令寄存器IR。经指令译码器确认,74H的含义为“MOVA,#n”,即把31H单元的内容02H送入A寄存器。
(4)相关的控制门电路开启,为取出31H单元的内容02H做好准备。至此,第1条指令第1字节的内容取出并执行完毕,由于PC已经指向31H,CPU开始取出31H单元的内容并执行。
通过以上的分析可以推知,微机执行程序的过程,是一个不断地取指(确切地讲是取指令的1个字节)、(翻)译(指令代)码、执行指令(执行指令的操作码)的过程。取指是CPU对存储器的读数操作。译码和执行指令是在CPU内部进行的操作。运算结果如果放在CPU内部寄存器中,则在CPU内部进行;如果放到存储器中,则是CPU对存储器的写数操作。比较两种操作所需的时间,CPU内部进行的操作时间短、速度快;CPU对存储器的读/写操作时间长、速度慢。为了提高运行速度,可以将CPU和小容量的存储器集成在一个芯片内,单片机就是基于这一原理设计的。对于PC机,从80486开始,已经把小容量的存储器集成到CPU内,变CPU对存储器的访问为CPU内部的操作。一段程序的开头必须要有确定程序从哪个存储单元开始执行的命令。对于单片机程序,由编程人员用伪指令设定。对于PC机程序,由微机的操作系统自动管理,无需编程人员考虑。一段程序正确与否与“取指”和“执行程序”的过程无关,取决于编程人员使用指令是否正确、指令顺序有无失误等。1.2MCS-51单片机的功能结构1.2.1MCS-51基本型单片机内部功能结构
HMOS基本型单片机典型型号产品有8031、8051和8751;CHMOS基本型单片机典型型号产品有80C31、80C51和87C51,即在HMOS型单片机名称中加一个“C”字。这两类单片机器件功能完全兼容,制造工艺上的差别使得CHMOS器件功耗低、工作电流小。之所以能降低功耗并以小电流形式工作,是因为CHMOS器件能够采用空闲方式和掉电方式工作。以掉电方式(芯片不工作但能持续保持片内RAM数据不变)为例,CHMOS器件的消耗电流通常不足10μA,而HMOS器件做不到这一点。由于基本型单片机结构简单,所叙述的工作原理在一切单片机上均能适用,因此本书在提到“MCS-51单片机”时,在不加特别申明的场合,都是指HMOS基本型单片机。由于功能兼容,原理图中可将HMOS器件改换成CHMOS器件,但在实际应用中不能直接取代,必须要重新计算电路元件参数并重新调试,把工作方式和功率损耗改动考虑在内。
8051单片机内部由以下几个逻辑部件组成:① 1个8位中央处理单元CPU;② 1个片内振荡器及时钟发生器;③ 128B数据RAM;④ 21个特殊功能寄存器SFR;⑤ 4KB程序ROM;⑥ 4个8位I/O并行端口P0口~P3口;⑦ 1个全双工串行端口;⑧ 2个16位可编程定时计数器T1、T2;⑨ 1个可管理5个中断源、2级优先级嵌套的中断管理系统;⑩ 1个可寻址64KB外部程序ROM和64KB外部数据RAM空间的控制电路。
MCS-51系列单片机有几种不同的型号,它们的主要区别是片内ROM设置不同:
●8031无片内ROM;
●8051片内有4KB掩膜ROM;
●8751内部有4KBEPROM。由于8051片内掩膜ROM是Intel公司预先为用户烧制好的专用程序,难于为其他用户接受,而8751价格偏高,如果8031外接一片EPROM,如2716或2732,就可以由用户自行设计程序使用。因此HMOS基本型的几个产品中,8031具有使用方便、结构灵活、价格低廉等优点,在早期的单片机使用中处于主导地位。
MCS-51系列单片机的一般结构如图1-8所示,各逻辑部件均挂接在内部总线上。图中“/”前的是基本型芯片,“/”后的是部分增强型芯片。有关程序ROM部分,8051/8052使用掩膜ROM,8751/8752使用EPROM,89C51/89C52使用FlashROM。图1-851系列单片机内部结构1.2.2MCS-51增强型单片机内部功能结构基本型单片机从1980年问世后,持续生产、使用了10多年之久,直到1996年3月,才出现了增强型单片机芯片。增强型单片机制造工艺全是CHMOS,不再使用HMOS。所谓“增强”是指在原有基础上为满足不同的需要增加了一些电路或软件程序。增强型单片机有不同的增强类型。
1)增容型“增容”是指片内程序存储器和片内数据存储器容量增加。将片内程序存储器从4KB增加的有:
83C51FA、87C51FA、87C52、89C52等增加到8KB;
83C51FB、87C51FB、87C54、89C54、P89C660等增加到16KB;
83C51FC、87C51FC、87C58、89C58、P89C51RC等增加到32KB;
P89C51RD、P89C664、P89C6XX2等增加到64KB。将片内数据存储器从128B增加的有:
P89C51RC、P89C660、P89C60X2等增加到512B;
P89C51RD、P89C662、P89C61X2等增加到1KB;
P89C668增加到8KB。除片内存储器容量增加外,还将其它一些功能电路进行了扩展,如8052AH、8032AH、8752BH的16位计数器扩展为3个。
2) ROM改进型基本型单片机的片内程序ROM通常是掩膜ROM、EPROM或EEPROM,无法在线擦除,而增强型单片机多以OTPROM和FlashROM取代。基本型单片机有Intel公司的87C51GB、Philips公司的80C51系列产品;增强型单片机有Philips的P89C51/52/54/58系列产品,如P89C51RX、P89C66X等,还有ATMEL公司的AT89C51系列机。从单片机的发展前景看,大有FlashROM取代其它ROM构成程序存储器的趋势。
3)接口电路扩展型
80C451、83C451、87C451有7个I/O接口,56条I/O引脚;
80CL31、80CL51、80CL410、83CL410可管理10个中断源;
80C51GA、83C51GA、87C51GA增设了8路8位A/D转换功能以及半双工同步串行接口;
80C51FA、83C51FA、87C51FA增加了可编程计数阵列PCA,编程功能大为改观。有的芯片还增设了PWM脉冲宽度调制接口、比较捕获单元CCU、I2C总线、SPI总线、CAN总线等。尤其在集成了一些总线接口后,实现了规范化,与相应总线接口存储器、时钟芯片的连接变得十分方便。
4)软件改进型相当多的增强型芯片都能支持C语言等高级语言,8052AH-BASIC芯片内固化有MCS
BASIC52解释程序,使BASIC语言能和汇编语言混用。87C51内还设计有两级程序存储器保密系统,能有效防止非法拷贝程序。从以上分析可见,新一代MCS-51增强型单片机的内部结构是基本型加不同功能的硬软件扩展部分。表1-8列出了Intel公司、Philips公司和ATMEL公司部分单片机产品的性能。1.2.3CPU结构
8XX5X单片机的中央处理单元CPU由运算器、控制器和寄存器阵列组成。运算器的功能是进行算术和逻辑运算,算术运算有加、减、乘、除、加1、减1、比较、十进制调整等,逻辑运算有与、或、非、异或、移位等。运算器内有一个称为布尔处理器的逻辑部件,专门用于位操作运算。位操作包含三种:一是逻辑操作,对可寻址位复位、置位、取反;一是传送操作,在进位标志位CF与可寻址位之间相互传送数据;一是转移操作,程序转移条件分别设置为等于1转移、等于1转移且清零、等于0转移。控制器是整个单片机各逻辑部件的指挥中心,由满足各种不同功能的时序逻辑电路和组合逻辑电路构成,在指令代码的作用下,相关的控制门电路开启,无关的控制门电路断开,对各逻辑部件和内部总线提供必需的控制信号。内部寄存器阵列由程序计数器PC和指令寄存器IR组成。程序计数器PC是一个16位的寄存器,用于存放下一条将要执行的指令地址,并能自动加1。
PC的功能如图1-9所示。假设PC的当前值为PC=A000H,它表明当前要执行的指令机器码是地址为A000H单元的内容74H,在取出这个指令机器码后,PC自动加1,变成为A001H,表明下一条要执行的指令机器码是位于A001H单元中的36H。图1-9PC功能由于指令在程序存储器中是以指令机器码的形式按顺序依次排放的,因此,指令的执行也是按顺序进行。PC能够自动加1的性质保证了程序依次执行。但是,如果使用条件转移指令,让新的地址值送入PC,破坏了PC自动加1的性质,程序执行的顺序也将发生变化,程序发生了转移。寻址时PC的地址值高8位经P2口送出,低8位经P0口送出,16位地址能寻址64KB程序存储器。指令寄存器IR的功能是存放从存储器取出的指令代码,指令代码经译码器译码后使控制器发出相关的控制信号,让那些该通的门电路开通,该断开的门电路断开,完成相应的指令操作。1.3MCS-51单片机存储器
MCS-51单片机的存储器有片内和片外之分,这是因为单片机内芯片面积所限,只能集成少量存储单元,很多情况下不够用,必须在单片机外进行扩展,连接一些存储芯片。无论是片内存储器,还是片外存储器,单片机采用的存储器结构都是把程序和数据分开存放,存放程序及程序中常数的存储器称为程序存储器,通常由ROM构成;存放数据的存储器称为数据存储器,通常由RAM构成。程序存储器和数据存储器也就叫做程序ROM和数据RAM。这两类存储器各自有自己的寻址方式、控制方式和传输信息方式,其配置如图1-10所示。图1-10MCS-51片内、片外存储器从物理空间来说,MCS-51系列单片机有4个相对独立的存储器寻址空间,分别是片内程序存储器、片内数据存储器、片外程序存储器和片外数据存储器。按照逻辑空间划分,又可以分成3个相对独立的存储器寻址空间,就是片内、片外统一编址的程序存储器,单独编址的片内数据存储器,单独编址的片外数据存储器。1.3.1片内、外统一编址的程序存储器
MCS-51单片机有16根地址线,最大寻址程序存储空间为64KB。单片机的片内、外程序存储器采用统一的编址方式:
4KB的片内ROM编址范围为0000H~0FFFH;
64KB的片外ROM编址范围为0000H~FFFFH,其中片外ROM有4KB(编址0000H~0FFFH)与片内ROM有相同的地址编号,还有60KB片外ROM编址1000H~FFFFH。鉴于片外ROM有4KB与片内ROM编址有重复,为了取指令操作码时仅访问一个存储单元,单片机设置了一根控制线,用于选择是片内ROM操作,还是片外ROM操作。当=1时,程序将从内部ROM开始,PC所指存储单元是片内ROM中某一单元地址,如果PC值渐增到超过片内ROM容量(PC值大于0FFFH),程序指针将自动转向1000H~FFFFH的外部ROM存储空间;当=0时,程序将从外部ROM开始,PC指向的存储单元是片外ROM中某一单元地址。利用的高、低电平能够选择片内ROM还是片外ROM,并顺利安放或找到程序。对于那些无片内ROM的单片机,如8031,应固定接地,使正常工作时能直接从片外ROM中读取指令代码。在单片机上电或复位时,程序计数器PC内容为0000H,单片机将从程序存储器的0000H单元开始取指令代码,从0000H单元开始执行程序。由于MCS-51单片机规定程序存储器的0003H~002FH单元专门用于为5个中断服务程序作入口地址使用,因此有必要在0000H~0002H单元内存放一条无条件转移指令,使CPU从0002H单元跳离,避开0003H~002FH区间,跳离的主程序首地址由用户在程序中指定。单片机的程序存储器只能用指令“读出”,不能“写入”,没有任何指令能修改程序存储器的内容。在进行数据传送时,程序ROM中的数据既不能传送给程序ROM中的其它单元,也不能传送给片外数据存储器,只能传送给累加器A。1.3.2片内、外单独编址的数据存储器数据存储器用于存放程序执行过程中需要使用的常数或变量数据。单片机的数据存储器有片内、片外之分,它们的存储容量不同,各自单独编址。基本型单片机配备的片内数据存储器有256B(其中片内RAM和特殊功能寄存器SFR各占128B),地址编号为00H~FFH;片外数据存储器容量有64KB,地址编号为0000H~FFFFH。由于MCS-51单片机有16根地址线,因此最大寻址数据存储空间为64KB,与最大寻址程序存储空间相同。
1.片外数据存储器
64KB片外数据存储器与64KB片外程序存储器寻址时都使用单片机的16位地址线。为了区分是访问片外RAM还是访问片外ROM,通常采用两种做法:
(1)使用不同的控制线,数据RAM用、选通,程序ROM用选通。
(2)使用不同的指令,访问数据RAM使用MOVX指令,访问程序ROM使用MOVC指令。
有关MOVX指令和MOVC指令的操作,详见第2章。片外数据存储器中的数据既不能直接传送至数据RAM的其它单元,也不能直接传送给程序ROM的各个单元。要想在片外数据存储器两个存储单元之间传送数据,或者把程序ROM中的数据传送给片外数据存储器,都必须通过累加器A间接传送。累加器A是片内数据存储器中的一个存储单元。
MCS-51单片机的片外I/O端口和片外数据存储器采用统一编址的方式,共同占有64KB地址空间进行分配,因此它们可统称为片外数据存储器。
2.片内数据存储器基本型单片机片内数据存储器有256B,分成两部分:由字节地址00H~7FH单元组成的128BRAM区,通常被称为片内RAM区;由字节地址80H~FFH单元组成的128BRAM区,是专用寄存器区,区内有21个特殊功能寄存器SFR。片内数据存储器是单片机指令操作最为频繁的地址空间,单片机的所有指令操作都可以在片内数据存储空间上进行。除送数、转移操作外,其它如算术逻辑运算、位操作等,只能在片内数据存储器中进行。1.3.3片内RAM和特殊功能寄存器SFR
1.片内数据RAM
128B的片内数据RAM在物理上可分成相对独立且性质不同的三部分,如表1-9所示。
1) 00H~1FH的32个单元此32个单元被称为工作寄存器区,分为0组~3组,每组8个存储单元,用R0~R7命名。R0~R7称为工作寄存器,每个寄存器存放1个字节的数据。在任一时刻,4个寄存器组中只有1个有资格成为工作寄存器组,其它不能成为工作寄存器组的3个组只能充当一般的RAM使用。工作寄存器的选择由程序状态字PSW中的PSW.3(RS1)和PSW.4(RS0)位决定:
RS1RS0 00选中0组为工作寄存器组
01选中1组为工作寄存器组
10选中2组为工作寄存器组
11选中3组为工作寄存器组
RS1、RS0的取值通过指令设置,这样,选择哪个寄存器组作为工作寄存器组就取决于编程人员。当单片机上电或复位时,由于PSW的状态被置成00000000B,因此自动选中0组。
2) 20H~2FH的16个单元此16个单元共有128位,被称为位寻址区。16个单元可作为一般的字节存储单元使用。128位的每一位都可以单独利用位操作指令进行清零(CLR)、取反(CPL)、置位(SETB)等操作。为此,给128位的每一位设置了位地址,地址范围为00H~7FH。位寻址区的特点是既可进行字节寻址,又可进行位寻址。位寻址区常用于设置各种状态变量、位控制变量等。
3) 30H~7FH的80个单元此80个单元被称为一般RAM区,又叫其余空间。这些单元和工作寄存器区中未被选中的24个单元一起,使一般RAM区可用的存储单元个数达到104个,它们作字节数据缓冲器使用,对这些单元只能进行字节寻址,不能进行位寻址。通常堆栈就设置在从30H开始的区间内。增强型单片机的片内数据RAM有256B,地址80H~FFH的128B和特殊功能寄存器SFR地址重合,区分方法是使用不同的寻址方式。有关寻址方式的内容将在第2章介绍。
2.特殊功能寄存器SFR
MCS-51单片机内有21个特殊功能寄存器SFR(SpecialFunctionRegister),每一个寄存器是一个存储单元,但不作一般RAM使用,而是有各自不同的特殊功能,它们分散在80H~FFH的128B地址空间内,如表1-10所示。表内部分寄存器名前标有“△”符号,表示该寄存器可以进行位寻址,位地址编号为80H~F7H,这样的寄存器有11个,还有10个只能进行字节操作,不能进行位寻址。
128B地址空间内仅有21个特殊功能寄存器占有字节地址,余下的地址没有任何作用,也不能用指令操作。
21个SFR主要用于描述单片机的状态字和控制字,它们大体上可以分为两类:一类发布单片机的地址信号、控制命令以及输入/输出数据信号,通过单片机引脚形成对外电路的三组总线信号;还有一类作单片机内部控制使用。21个SFR简要介绍如下。
(1) P0端口,地址线/数据线分时使用端口。作地址线使用时,输出低8位地址信A0~A7;作数据线使用时,可外接I/O端口,输入/输出数据信号D0~D7。对于地址信号,需要在单片机外使用锁存器(例如8D触发器74LS373、8282等)将其锁存,也需要单片机提供一条地址锁存允许ALE实现锁存功能。由于外接的I/O端口和数据RAM统一编址,因此I/O操作使用存储器操作指令就能完成。例如,MOV30H,A是把累加器A的内容送地址为30H的存储单元;而MOVP0,A就能实现累加器A的内容经P0口送到单片机外的I/O设备。
(2) SP,堆栈指针,用于指示堆栈的栈顶。堆栈是存储器内按照“先入后出”原则组织起来的一段区间,单片机内的堆栈通常设置在片内RAM中,具有向下生长的性质。
MCS-51单片机上电或复位时,SP被置成07H,使得堆栈实际从08H单元开始。为了不影响工作寄存器组R0~R7的选择和位寻址区的使用,通常使用MOV指令将SP的值设置在30H~7FH其余空间内,SP的初始值越小,堆栈的深度就会越深。堆栈操作为字节操作,有入栈操作和出栈操作两种,分别用PUSH和POP指令实现。图1-11分别画出了指令PUSH
ACC和POP
B的执行示意图。图1-11堆栈及其操作入栈过程分为两步完成:① SP自动加1,指向下一单元;② A的内容进入SP所指单元。完成后,SP依旧指向栈顶。出栈过程分为两步完成:① SP所指单元内容送入A;② SP自动减1,栈顶发生变化,但SP依旧指向栈顶。在执行调用子程序指令和响应中断时,将自动产生16位的PC值入栈操作;在执行子程序返回和中断返回指令时,将产生出栈操作,栈顶内容自动弹送到PC内。如果在子程序或中断服务程序中要用到主程序中正在使用的一些寄存器,必须在子程序或中断服务程序一开始用PUSH指令将它们入栈保护,在返回之前用POP指令恢复这些寄存器的原有值。
(3) DPL,8位数据寄存器。
(4) DPH,8位数据寄存器。DPH和DPL除作两个独立的8位数据寄存器使用外,还可以合在一起构成1个16位的数据指针DPTR(DataPointer),DPL是DPTR的低8位,DPH是DPTR的高8位。DPTR用于存放64KB片外程序ROM或64KB片外数据RAM的地址。
(5) PCON,电源控制寄存器,对于采用HMOS工艺结构的单片机,用于串行方式中选择波特率的倍数。对于采用CHMOS工艺结构的增强型单片机,如8XC5X系列和8XC5XX2系列,除用于串行方式中选择波特率的倍数外,还用于选择工作在正常操作方式,还是工作在低功耗操作方式。
(6) TCON,定时器/计数器控制寄存器,用于确定采用什么触发方式和有无中断申请。
(7) TMOD,定时器/计数器方式控制寄存器,用于规定定时器/计数器的工作方式。
(8) TL0,定时器/计数器T0的低8位。
(9) TL1,定时器/计数器T1的低8位。
(10) TH0,定时器/计数器T0的高8位。
(11) TH1,定时器/计数器T1的高8位。
(12) P1端口,8位I/O数据端,作8条数据线使用。
(13) SCON,串行口控制寄存器,用于设定串行口的工作方式、接收/发送标志。
(14) SBUF,串行I/O缓冲器,用于接收/发送数据。指令MOVSBUF,A能实现将累加器A中的字节数据从串行口一位一位地发送出去;指令MOVA,SBUF能实现单片机外的字节数据一位一位地经串行口进入到累加器A中。
(15) P2端口,高8位地址线/8位I/O数据线合用端口,P2和P0组成了单片机的16位地址线。通常P2作地址线用时,不再用作I/O数据线,因此不需锁存P2。
(16) IE,中断允许寄存器,用于是否允许或禁止中断。
(17) P3端口,8位I/O数据线/第2功能线合用端口,在作数据线使用时,不作第2功能线;作第2功能线使用时,不作数据线用。
(18) IP,中断优先级控制寄存器,用于选择中断优先级别。
(19)PSW,程序状态字,反映运算结果标志及选择工作寄存器组。8位定义如表1-11所示。除RS1、RS0前已叙述外,其余各位含义如下:
P:奇偶标志,指令运算结果有奇数个“1”时,P=1;有偶数个“1”时,P=0。
OV:溢出标志,运算结果超出补码表示范围时有溢出,OV=1;无溢出,OV=0。
F0:留给用户自己去定义。
AC:半进(借)位,又称辅助进(借)位,运算中低4位向高4位有进(借)位时,AC=1;否则AC=0。
CY:进(借)位,在加(减)法运算中有进(借)位时,CY=1;无进(借)位时,CY=0。
(20) A,累加器,8位数据寄存器,字节地址E0H,符号地址ACC,是单片机指令操作中用得最多的寄存器。本身带有零标志Z,当A=0时Z=1,A≠0时Z=0。零标志常用于条件转移。
(21) B,B寄存器,存放8位数据用。1.4单片机最小系统1.4.1单片机引脚功能
MCS-51系列单片机有40引脚双列直插封装和44引脚方形封装两种形式,其中40引脚DIP封装如图1-12所示。无论哪种封装,引脚功能共分成4种不同类型:地址线、数据线、控制线和电源线。大多数引脚只具备一个功能,部分引脚有两种功能。现以40引脚封装为例说明。图1-1240引脚封装
P0~P3:占32个引脚,其中P0是低8位地址线/数据线端口,P1是数据线端口,P2是高8位地址线/数据线端口,P3是数据线/第2功能线端口。
ALE/:地址锁存允许/编程。作ALE用时为输出信号,频率为时钟振荡频率的1/6,用于锁存P0口的低8位地址;作用时为输入引脚,在EPROM编程时输入编程脉冲。:程序存储器允许作输出用。频率为时钟振荡频率的1/6,用于选通片外程序存储器。如果发生访问片外数据存储器的操作,则在一个机器周期内不会产生。
/VPP:片外程序ROM有效/编程电源。作用时为输出信号,=0片外程序ROM有效,=1片内程序ROM有效。作VPP用时为电源输入,输入21V编程电源VPP。
XTAL1和XTAL2:外部时钟振荡信号输入端。
VCC:+5V电源。
VSS:地。
RST/VPD:复位/备用电源接入。正常工作时作复位信号引入,当VCC失电时,此脚接入备用电源,使片内RAM中的数据处于低功耗保护。方形封装的单片机芯片虽然有44根引脚,但实际使用的引脚依旧是40根,还有4根空置不用。44引脚LCC和PQFP封装如图1-13所示。图1-1344引脚封装(a) LCC封装;(b) PQFP封装1.4.2时钟电路与复位电路
1.时钟电路单片机的时钟信号由两种电路产生:内振荡电路和外振荡电路。在任一时刻,只需要一种振荡电路便能使单片机正常工作。使用内振荡电路提供时钟脉冲,需要在XTAL1和XTAL2之间外接石英晶体振荡器或陶瓷振荡器,这时的内部振荡电路仅相当于一个高增益放大器,和晶振接在一起形成一个正反馈的自激振荡,再经整形和分频形成单片机内各逻辑部件所需的时钟脉冲。内振荡电路如图1-14所示。图1-14内振荡电路外振荡方式是将外部时钟信号直接从XTAL1(用于CHMOS)或XTAL2(用于HMOS)引入,这时XTAL1和XTAL2只需使用1个,另1个悬空。外振荡电路如图1-15所示。在需要时钟稳定的情况下用内部振荡产生时钟;在要求单片机与外界信号同步时使用外部振荡。图1-15外振荡电路
2.复位及复位电路单片机的复位操作由复位引脚RST/VPD上出现的高电平引起,高电平持续时间不少于两个机器周期(24个振荡周期),CPU在第2个机器周期内执行复位操作。如果RST/VPD持续为高电平,那么每隔24个振荡周期重复一次复位操作。复位后机内各特殊功能寄存器初始状态如表1-12所示,而片内128BRAM的状态不受复位信号的影响。各个特殊功能寄存器的复位状态解释如下:
P0~P3=FFH:表示已向各端口线写入1,使各端口既能作输入线,又能作输出线使用。
SP=07H:表示堆栈栈底位于07H单元,第1个进栈字节将写入08H单元中。
DPTR=0000H:表示片外存储器的操作将从0000H单元开始。
PCON:HMOS单片机的PCON=0xxxxxxxB,最高位为0表示串行工作时的波特率不加倍。CHMOS单片机的PCON=00xxxx00B,最低两位为00表示复位后单片机处于正常操作方式。
TCON=00H:表示T0、T1的工作均被停止。
TL0=00H,TH0=00H:表示T0的初值为0000H。
TL1=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024项目融资合同协议书
- 2025年度中医食疗研究与推广合同4篇
- 2025年度特色餐饮连锁品牌授权合同3篇
- 2025年度生态修复工程承包商借款合同范本4篇
- 2025年度数据中心运维外包合同4篇
- 2025年度体育用品代理服务合同模板4篇
- 2025年度物流车辆环保排放检测合同4篇
- 2025年度人工智能技术应用与开发合同2篇
- 2024版全新销售担保合同范本下载
- 2025年度新能源汽车充电站车位销售与管理协议4篇
- 专升本英语阅读理解50篇
- 施工单位值班人员安全交底和要求
- 中国保险用户需求趋势洞察报告
- 数字化转型指南 星展银行如何成为“全球最佳银行”
- 中餐烹饪技法大全
- 灵芝孢子油减毒作用课件
- 现场工艺纪律检查表
- 医院品管圈与护理质量持续改进PDCA案例降低ICU病人失禁性皮炎发生率
- 新型电力系统研究
- 烘干厂股东合作协议书
- 法院服务外包投标方案(技术标)
评论
0/150
提交评论