单片机基础知识全套课件_第1页
单片机基础知识全套课件_第2页
单片机基础知识全套课件_第3页
单片机基础知识全套课件_第4页
单片机基础知识全套课件_第5页
已阅读5页,还剩595页未读 继续免费阅读

下载本文档

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

文档简介

1、单片机基础知识第1章 单片机基础知识1.1 概 述1.2 单片机系统的组成 1.3 单片机中数的表示及编码1.4 习 题1.1.2 单片机及其发展状况 1单片机名称的来源 根据单片机的物理形态和内容,早期的单片机称为Single-Chip Microcomputer。从仙童公司的第一款单片机F-8开始,甚至到MCS-51时期,这些单片机确实准确地体现了Single-Chip Microcomputer的形态和内容。但是,随着单片机发展到MCS-96、新一代80C51、M68HC05等系列单片机时,这些单片机面向对象,突出控制功能,在片内集成了许多外围电路及外设接口,如A/D、PWM、WDT等,

2、突破了传统意义的单片机结构,发展成Microcontroller的体系结构,因此,目前国外已经逐步统一称单片机为MCU(Micro Controller Unit)。由于它实行嵌入式应用,因此也称为嵌入式微控制器。1.1.3 80C51系列单片机简介 尽管各类单片机很多,但无论从世界范围还是从国内范围来看,使用最为广泛的还是MCS-51型单片机,因此本书也将以MCS-51型系列为主,来介绍单片机的原理及应用。MCS-51型系列单片机共有十几种芯片,表1-1列举了比较典型的几种芯片的型号及主要技术性能指标。 表1-1:子系列片内ROM形式ROM容量RAM 容量计数器并行口串行口中断源制造工艺无R

3、OM掩膜ROMEPROM片内片外片内片外51子系列8031805187514KB60KB128B64KB2164815HMOS80C3180C5187C514KB60KB128B64KBCHMOS52子系列8032805287528KB56KB256B64KB3164817HMOS83C25280C25287C2528KB56KB256B64KBCHMOS 80C51型单片机属于Intel公司的MCS-51系列单片机,MCS-51系列单片机采用两种半导体工艺生产。一种是HMOS工艺,即高密度短沟道MOS工艺。另外一种是CHMOS工艺,即互补金属氧化物的HMOS工艺。表1-1的芯片型号中带有“C

4、”的都为CHMOS工艺,其余的为一般的HMOS工艺。CHMOS是CMOS和HMOS的结合,除具有HMOS高速度、高密度的特点外,还具有CMOS低功耗的优点。比如8051型的功耗为630mW,而80C51的功耗只有120mW。 目前,Intel公司将80C51型单片机的内核使用权以专利互换或者出售的形式转让给其他的著名IC制造商,如Philips、ATMEL、AMD、Dallas、Siemens、LG、华邦等。这些公司在80C51内核基础上,扩展了针对不同需求的外围电路,如A/D、PWM、WDT,引入使用方便并且价格便宜的Flash ROM等,使80C51的功能更加齐全、针对性更强,巩固并发展了

5、Intel公司单片机的地位,成为当今世界8位单片机的主流。1.1.4 单片机的特点及应用领域单片机的主要特点如下:(1)很高的性价比。目前许多单片机的价格只要几元人民币。(2)集成度高,体积小,可靠性好。内部采用总线结构,减少各芯片间的连线。(3)控制能力强。单片机的指令丰富,能满足各种工业控制的要求。(4)低功耗、低电压,一般在3V6V范围内工作,低电压供电的单片机电源下限可达1V2V,1V以下供电的单片机也已诞生,便于生产便携式设备。(5)易扩展。可根据需要进行并行或者串行扩展,形成网络控制系统。 由于单片机的特点比较突出,因此,在各个应用领域都可以见到它的身影,主要的应用领域有:(1)工

6、业自动化控制。这是最早采用单片机控制的领域之一,如各种测控系统、PLC等。(2)智能化家用电器。用单片机控制来替代传统的电子线路控制是当前家用电器的发展趋势,如空调、洗衣机、电视机等。(3)智能化仪表。采用单片机的智能化仪表,加强了数据处理能力和网络数据传送能力,提高了仪表的档次,如各种探测仪表、自动抄表系统等。(4)办公自动化设备。目前的办公设备中多数都嵌入了单片机系统,如打印机、复印机、扫描仪等。(5)军用航空等尖端领域的应用更加突出。1.2 单片机系统的组成 当单片机内部的计算机外围功能单元不能满足对象控制要求的时候,通过系统扩展,在外部并行总线上扩展相应的计算机外围功能单元所构成的系统

7、,称为单片机系统。这个定义强调的是单片机系统的硬件组成,而一个完整的单片机系统应该包括硬件系统和软件系统两大部分,如图1-2所示。图1-2 单片机系统结构框图 单片机系统的硬件由单片机芯片和外部接口电路及设备组成。而单片机芯片则包括了中央处理器(CPU)、存储器(ROM/RAM)、I/O接口及其他功能单元(定时计数器、中断系统、串行接口)。它们通过AB(地址总线)、DB(数据总线)、CB(控制总线)相互连接,如图1-3所示。1.2.1 单片机系统的硬件组成图1-3 单片机系统的硬件结构图 1微处理器(CPU) CPU主要由两部分组成:运算器和控制器。(1)运算器:运算器主要完成算术运算和逻辑运

8、算并进行逻辑测试,如零值测试和两个值的比较,通常算术操作产生一个运算结果,而一个逻辑操作产生一个判决。运算器主要由以下几部分组成。 累加器A:用来存放参与算术或者逻辑运算的一个操作数和运算结果。 暂存器TMP:用来暂时存放参与算术或者逻辑运算的另一个操作数。该操作数主要来自其他数据寄存器或者内存单元中。 算术逻辑单元ALU:主要完成把传送到微处理器的数据进行算术和逻辑运算。ALU具有两个主要的输入来源,一个累加器,一个来自数据寄存器,它能够完成这两个数的相加和相减,也能够完成某些逻辑运算。 标志寄存器F:用来存放ALU运算结果的标志位,如进位标志、溢出标志等。 例如:将两个数12H和31H相加

9、,在相加之前,操作数12H存放在累加器A中,31H存放在数据寄存器中,执行两个数相加的控制线发出“加”操作信号,ALU就把两个数相加,所加结果存入累加器A中,覆盖原来累加器A中的内容,执行完后,累加器A中的内容就是43H。 (2)控制器 控制器主要是协调和控制整个计算机系统的操作,主要由以下几部分组成。 程序计数器PC:为了能够保证程序能够连续地运行下去,CPU必须具备某种手段来确定一条指令的地址,程序计数器就是执行这项工作。当执行程序时,CPU将自动修改PC的内容,使之总是指向下一条指令的存放地址。 指令寄存器IR:保存当前正在执行的一条指令。当执行一条指令时,先把它从程序存储器中取出,然后

10、再传送到指令寄存器。 指令译码器ID:要执行给定指令的操作,必须给操作码译码,以便确定所要求的操作,指令译码器就是负责这项工作。操作码一经译码后就向操作控制器发出具体操作的特定信号。 时序产生器:用来产生脉冲序列和各种节拍脉冲,每个节拍脉冲对应于一种操作,就像是体育老师的口令、交响乐团的指挥一样。 操作控制器:根据指令译码器的信号,产生相应的操作控制信号,以便启动规定的动作,比如一次内存读写操作,一次算术逻辑操作,一次输入/输出操作,指挥并控制CPU、内存和输入/输出设备之间的数据流向。 相对控制器而言,运算器的动作是接受控制器的命令而动作的,即运算器所进行的所有操作都是由控制器发出的控制信号

11、来指挥的。 2总线 总线(BUS)是计算机各部件之间传送信息的公共通道。微机中有内部总线和外部总线两类。内部总线是CPU内部之间的连线,外部总线是指CPU与其他部件之间的连线。外部总线有三种:数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus)。(1)地址总线(AB):地址总线宽度根据寻址范围来确定的,当寻址范围是4KB212B时,需要的地址线宽度为12位,由于80C51单片机的寻址范围最多可达64KB,因此地址总线宽度为16位,由P0口经地址锁存器提供低8位地址(A0A7);P2口直接提供高8位地址(A8A15)。因地址信号是由CP

12、U发出的,故地址总线是单方向的。(2)数据总线(DB):由于80C51单片机为8位机,故数据总线宽度为8位,用于传送数据和指令,由P0口提供。(3)控制总线(CB):控制总线随时掌控各种部件的状态,并根据需要向有关部件发出控制命令。 3存储器 存储器的主要功能就是用来存放程序代码和数据。(1)存储器的分类 按照存储器的存取功能分,可分为:随机存取存储器(Random Access Memory,RAM)。它可以随机写入和读出,读写速度快,但是断电后,存储的数据就要丢失。主要用来存放各种处理数据。 只读存储器(Read Only Memory,ROM)。它在一般情况下只能读不能写,当然,在满足一

13、定条件下也可以完成写入操作,否则,读的数据又从何而来呢?它的另外一个特点就是掉电不丢失,能长期保存数据。从写入方式来看,ROM也有很多分类,主要有:掩膜ROM、EPROM、EEPROM、FLASHROM和OTPROM(一次性编程ROM)。 按照存储器结构分,可分为: 普林斯顿结构。一般微机只有一个地址空间,ROM和RAM可以随意安排在这一地址范围内不同的空间,即ROM和RAM的地址在同一个队列里分配不同的地址空间。CPU访问存储器时,一个地址对应唯一的存储空间,可以是ROM,也可以是RAM,并用同一种指令访问。 哈佛结构。如80C51的存储器结构分程序存储器空间和数据存储器空间,总共有4个物理

14、存储空间,即片内程序存储器空间、片外程序存储器空间、片内数据存储器空间、片外数据存储器空间,并用不同的指令访问程序存储器和数据存储器,这种程序存储器和数据存储器分开的结构就称为哈佛结构。 (2)存储器的操作 存储器的操作分为读操作和写操作。 例如,将数据存储器30H中的内容03H读出到累加器A中。其步骤如下: CPU将要读存储空间的地址码30H送到地址总线上,选通地址为30H的存储单元。 CPU的控制器发出“读”信号,建立存储器到CPU的数据流向。 存储器将地址为30H的存储单元中的内容03H释放到数据总线上。 CPU将数据总线上的数据03H读入到累加器A中。 注意:读操作不影响原来单元内容,

15、即30H中的内容还是03H,类似计算机操作中的“复制”。 例如,将数据10H送到地址为40H的内部数据存储单元中。其步骤如下: CPU将要写入的存储空间的地址码40H送到地址总线上,选通地址为40H的存储单元。 将数据10H送到数据总线上。 CPU控制器发出“写”信号,建立CPU到存储器的数据流向。 存储器将数据10H送入到地址为40H的存储单元中。注意:写操作要改变原来单元的内容,类似计算机操作中的“粘贴”,如果40H单元中原来的内容是20H,经过这次写操作后,40H单元中的内容就改为10H。(3)堆栈 堆栈就是在单片机RAM中,专门划出一个区域用来临时存放一些重要数据码或者地址码。对于堆栈

16、,应主要掌握以下几点。 栈底地址:用来确定堆栈的深度,一般可在程序初始化部分通过对堆栈指针SP 的赋值来确定,如MOV SP,#60H,就是将堆栈的栈底设定为60H(深度为32B)。 堆栈指针:用来指出当前栈顶的存储单元的地址。 堆栈原则:堆栈操作遵循“先进后出”的原则。 如图1-4是一堆栈的结构图。通过这个图可以了解以下几点: 这个堆栈的栈底为50H,在程序初始化过程中可以通过指令MOV SP,#50H来指定,同时确定堆栈深度为51H7FH,在具体使用中的堆栈深度根据实际需要保存的数据个数来确定。 当前堆栈指针SP的值为54H,即当前栈顶为54H。 这4个数据的压栈顺序为10H、14H、58

17、H、64H,根据“先进后出”原则,这4个数据的出栈顺序为64H、58H、14H、10H。 从上面几点看,堆栈与手枪弹夹的结构和工作原理十分相似。 图1-4 堆栈结构示意图 4输入/输出设备及其接口电路 单片机系统的输入/输出设备也称作I/O设备,比如键盘、鼠标、显示器、微型打印机等。输入/输出(I/O)接口由大规模集成电路组成的I/O器件构成,用来连接主机和相应的I/O设备(如:键盘、鼠标、显示器、打印机等),使得这些设备和主机之间传送的数据、信息在形式上和速度上都能匹配。不同的I/O设备必须配置与其相适应的I/O接口。通常,这些接口电路集成在一块芯片上。如8255A、8155、8253、DA

18、C0832、ADC0809等扩展芯片。1.2.2 单片机系统软件组成 只配备硬件设备的单片机系统,并不能完成我们所需要实现的功能,硬件是实现功能的载体,而软件是硬件的灵魂,目前用来设计软件的语言分为三类。1机器语言 机器语言的主要特点是:(1)由一组二进制码组成,直接能被计算机识别并执行。(2)不同的微处理器,采用不同的机器语言。(3)可读性差,直观性差,容易出错,目前基本不采用。 2汇编语言 汇编语言的主要特点是:(1)用助记符代替机器语言中的操作码。(2)汇编语言翻译成机器语言的方法有两种:一种是手工查表汇编,一种是机器汇编。由于机器汇编方便,目前基本上都是采用机器汇编。(3)不同的微处理

19、器采用不同的汇编语言。(4)较直观,可读性好,占用内存少,速度快。 3.高级语言高级语言的主要特点是:(1)采用类似人类自然语言的程序设计语言。(2)通过专门的编译程序翻译成机器语言。(3)通用性强,移植性好,不随微处理器的不同而不同。(4)目前较流行的有C51、PL/M和BASIC语言。 三种语言各有特点,本书介绍的是汇编语言,虽然不同类型单片机的汇编语言有所不同,但还是有很多相似之处,可以举一反三。同时,在掌握汇编语言的基础上,再去掌握高级语言的编程,能达到事半功倍的效果。1.3 单片机中数的表示及编码 在日常生活中,我们经常使用的是十进制数,而在单片机中,二进制机器编码是它的基本语言,考

20、虑到二进制在书写和阅读方面的缺点,在单片机软件编写过程中,常引入十六进制数来表示。 如何进行十进制、二进制、十六进制之间的相互转换,是基本的数字处理能力,这里不再详述。对此有疑问的初学者,可以参考有关的数字电路基础的数据,本书主要介绍正负数在计算机中的表示方法和有关编码知识。1.3.1 正数和负数在单片机中的表示方法 在日常数字表示中,有符号数的正负性可以用“+”、“-”来表示,但是在计算机数字表示中,有符号数的正负根据其最高位是“0”还是“1”来区分。如在8位微机中,D7位表示这个数的符号,是“1”,表示负数,是“0”,表示正数,其余位表示数值位的大小,如图1-5所示。图1-5 8位有符号数

21、的表示方法 【例1-1】指出N1和N2的值。解:由于N1的D7位为1,是负数,后面的数值位的值为6,则N1= -6;由于N2的D7位为0,是正数,后面的数值位的值为7,则N2=+7。那么,在计算机中,-6和+7的存储形式真的如此吗?我们来看一下下面的例子。【例1-2】求S=N1+N2=-6+7。解:根据例1-1的结果,-6=1000 0110B,+7=0000 0111B,则运算过程如下: 10000110B N1+00000111B N2 10001101B S=-13 S=-13,很明显,结果错误,那么问题出在哪里呢?主要是因为有符号数在计算机中的表示方法出现错误。在计算机中,有符号数的表

22、示方法有3种:原码、反码和补码。我们上面两个例子采用的都是原码,但是,计算机中,负数是以补码形式存储并参与运算的。下面我们来具体了解正负数的原码、反码和补码。 1正数的原码、反码、补码正数的表示最简单,它的原码、反码和补码都一样,即【X】原 =【X】反 =【X】补 = X【例1-3】X=+9,求其原码、反码、补码。解:+9=00001001B,则【+9】原 =【+9】反 =【+9】补 = 00001001B 2负数的原码、反码和补码负数的原码:符号位为1,其余位为数值位。【例1-4】X=-9,求X的原码。解:符号位为1,数值位为9 = 0001001所以,【-9】原 =10001001B。负数

23、的反码:原码的符号位不变,其余位取反。【例1-5】X=-9,求X的反码。解:【-9】原 =10001001B,根据符号位不变,其余位取反的方法可得,【-9】反 =11110110B负数的补码:反码加1,即【X】补 =【X】反 +1。【例1-6】X=-9,求X的补码。解:【-9】原 =10001001B,【-9】反 = 11110110B,根据补码等于反码加1,则【-9】补 =【-9】反 +1 = 11110110B+1=11110111B 3零的原码、反码和补码零的原码:由于零分为+0和-0,则其原码有两种:【+0】原 = 00000000B【-0】原 = 10000000B零的反码也有两种:

24、【+0】反 = 00000000B【-0】反 = 11111111B零点补码:由于+0的补码等于原码,-0的补码等于其反码加1,所以,不管是+0还是-0,它的补码只有一个:【+0】补 =【-0】补 = 00000000B综上所述,归纳如下。对于正数: 【X】原 =【X】反 =【X】补 = X对于负数:【X】反 =【X】原 数值位取反,符号位不变【X】补 =【X】反 +1 学会了补码的运算,我们回过来看例1-2,采用补码运算,【-6】补 = 11111010B【+7】补 = 00000111B则S=-6+7的运算如下: 11111010B N1+00000111B N2 00000001B S=

25、1结果正确,至此,大家应该明白在计算机中,有符号数的运算采用的是数的补码形式。1.3.2 常用编码 1BCD码 采用二进制码对每一个十进制数进行编码,称为BCD码,用【】BCD表示,例如:51=【0101 0001】BCD,在这里,【0101 0001】BCD不能认为是二进制码01010001B,因为01010001B的十进制为81,而【0101 0001】BCD的十进制为51,显然存在区别。具体的十进制与BCD码之间的关系如表1-2所示。 表1-2 8421BCD编码表十 进 制 数8421BCD码十 进 制 数8421BCD码00000501011000160110200107011130

26、011810004010091001 2BCD码的加法运算BCD码的加法运算与二进制码的加法运算规则一样,但有时候会出错,例如: 【0101 1001】BCD 59+【0010 1000】BCD 28 【1000 0001】BCD 81显然,运算结果是错误的,因为在运算过程中,低四位向高四位有进位,所以要进行修正,具体的修正条件和方法如下:(1)低四位向高四位有进位,低四位加6修正。(2)高四位向更高位有进位,高四位加6修正。(3)低四位出现非法BCD码,低四位加6修正。(4)高四位出现非法BCD码,高四位加6修正。(5)同一个四位出现两种修正条件,则只需修正一次即可。 【例1-7】已知X=【

27、0110 0001】BCD,Y=【0010 0110】BCD,求S=X+Y。解: 【0110 0001】BCD X(61)+【0010 0110】BCD Y(26) 【1000 0111】BCD S(87)不满足要修正的条件,无需修正,结果正确。 【例1-8】已知X=【0100 1000】BCD,Y=【0101 1001】BCD,求S=X+Y。解:【0100 1000】BCD X(48)+【0101 1001】BCD Y(59)【1010 0001】BCD ;满足(1)、(4)修正条件,进行加6修正+ 0110 0110 【0001 0000 0111】BCD S(107)结果:S=【0001

28、0000 0111】BCD ,由于高四位加6后,向更高位有进位1,其实也就是向百位有进位,所以最后的结果应为107。 3BCD码减法 BCD码在进行减法运算时,也会出现需要修正的现象,其修正条件和方法如下:(1)低四位向高四位有借位,低四位减6修正。(2)高四位向更高位有借位,高四位减6修正。(3)低四位出现非法BCD码,低四位减6修正。(4)高四位出现非法BCD码,高四位减6修正。(5)若同一个四位出现两种修正条件,则只需修正一次即可。 【例1-9】已知X=【0010 0010】BCD,Y=【0001 0001】BCD,求S=X-Y。解:【0010 0010】BCD X(22)-【0001

29、0001】BCD Y(11)【0001 0001】BCD S(11);不满足修正条件,无需修正 【例1-10】已知X=【0010 0001】BCD,Y=【0101 1001】BCD,求S=X-Y。解:【0010 0001】BCD X(21)-【0101 1001】BCD Y(59)【1100 1000】BCD ;满足(1)、(2)、(4)修正条件,进行减6修正- 0110 0110 1(借位)【0110 0010】BCD S(62)BCD码是无符号数,这里的结果S=62,不符合条件,但是,由于向更高位(百位)借位了,所以,结果应该是62-100 = -38。 4ASCII码 在计算机中,除了处

30、理数字信息外,还必须处理用来组织、控制或表示数据的字母和符号,这些字母或符号也必须按照特定的规则用二进制来编码。 目前这种编码规则普遍采用的是ASCII码(American Standard Code for Information Interchange,美国信息交换标准码),由7位二进制码组成,可以表示128个字符,包括数字(09)、大小写英文字母、标点符号和控制字符,具体如表1-3所示。表1-3 ASCII编码表 根据此表,我们应该掌握以下几点:(1)根据已知道某个数字、字母、标点符号或控制字符,能够找出其ASCII码。(2)大写英文字母的ASCII码比小写英文字母的ASCII码小20H

31、,如,“A”的ASCII码为41H,“a”的ASCII码为61H。(3)数字09的ASCII码为30H39H。1.4 习 题 1PC机和单片机都是属于微型机,它们之间有什么区别?2简述单片机的特点及主要应用领域,并举例说明。3MCS-51单片机的51子系列和52子系列有哪些主要区别?4单片机系统的硬件组成由哪几部分组成?并说明各个部分的主要功能。5什么叫总线?总线可以分为哪几种?6堆栈的操作原则是什么?如何来确定堆栈的栈底地址?7机器语言、汇编语言和高级语言各有什么优缺点?8在8位单片机中,有符号数的正负号如何表示?9原码、反码、补码之间的换算关系是怎么样的?10什么叫BCD码?BCD码和二进

32、制码之间有何区别? 11分别求出下列各数的原码、反码和补码,分别用二进制和十六进制数表示。(1)+37(2)-54(3)+121(4)-21612将下列数转换成BCD码。(1)123(2)864(3)56.75(4)34913已知十进制数X、Y,求S=X+Y,用十六进制表示。(1)X=45,Y=89;(2)X=-65,Y=78;(3)X=-76,Y=34。 14已知BCD码X、Y,求S=X+Y,T=X-Y。(1)X=【0011 0100】BCD,Y=【0101 0010】BCD (2)X=【0101 0110】BCD,Y=【0010 1001】BCD (3)X=【1000 0110】BCD,Y

33、=【0100 0010】BCD 15查表写出下列字符的ASCII码。(1)D(2)7(3)?(4)e第2章 MCS-51单片机硬件与系统扩展2.1 MCS-51外部引脚2.2 P0、P1、P2、P3口的内部结构及使用2.3 单片机内部硬件资源2.4 时钟与复位电路2.5 单片机系统扩展2.6 习 题 对于硬件系统设计人员来说,掌握单片机硬件资源是十分重要的,只有熟悉了单片机的硬件“家底”,才能合理安排、正确使用现有资源,并做到物尽其用。MCS-51单片机是美国Intel公司的产品,但在实际应用时常常选用美国ATMEL公司的产品,如AT89C51/52(40脚)和AT89C2051(20脚)。A

34、TMEL公司AT系列单片机相当于Intel公司单片机的Flash版本,两者硬件结构相同,指令兼容,但Flash版本可以使程序的修改、调整更加方便,所以ATMEL公司的产品几乎成了MSC-51系列单片机的主流。2.1 MCS-51外部引脚 AT89C51/52的外部有40个脚(与8051/8751相同,如图2-1所示),这些管脚根据功能可以将它们分成三大组:1系统工作必需的引脚(5个脚)VCC(40脚)、VSS(20脚):电源5V和地(AT89LV系列芯片可以工作在2.7V6V)。RST/VPD(9脚):RST即为RESET的缩写,VPD为备用电源。该引脚为单片机的上电复位或掉电保护端。当单片机

35、振荡器工作时,该引脚上出现持续两个机器周期的高电平,可以使单片机回复到初始状态(复位)。上电时,考虑到振荡器有一定的起振时间,该引脚上高电平必须持续10 ms以上才能保证有效复位。XTAL1、XTAL2:接晶振,实际使用时还需加两个30pF的补偿电容,常用晶振频率有6MHz、12 MHz和11.0592 MHz,AT89C51/52最高工作频率达24 MHz。上述管脚的电压或波形不满足要求的话,系统无法工作,一般表现为无法启动。2与外部电路联络的脚(32个脚)P0:在扩展时作为数据总线/地址低8位线,扩展不用时可以作为用户I/O线。P1:仅作用户I/O口。P2:在扩展时作为地址高8位线,扩展不

36、用时作为用户I/O线。P3:首先保证第二功能(如表2-1所示),若第二功能不用,则可作为用户I/O线。 3控制脚(3个脚)(1)/VPP(31脚):为片内、片外ROM选择控制脚,具体如图2-2所示,早期的8031等内部没有ROM,故使用时接地,目前AT89C51/52内部均有ROM(Flash),所以使用时直接接VCC。对于EPROM型单片机(如8751),在编程期间该脚用于提供编程电压(VPP)。图2-2 MCS-51程序存储器结构(2)ALE/PROG(30脚):地址锁存有效信号输出端。ALE在每个机器周期内输出两个脉冲,在访问片外程序存储器期间,下降沿用于控制锁存P0输出的低8位地址;在

37、不访问片外程序存储器期间,可作为对外输出的时钟脉冲或用于定时目的,但要注意,在访问片外数据存储器期间,ALE脉冲会跳空一个,此时作为时钟输出就不妥了。对于片内含有EPROM的机型,在编程期间,该引脚用作编程脉冲PROG的输入端。(3)(29脚):片外程序存储器读选通信号输出端,低电平有效。当从外部程序存储器读取指令或常数期间,每个机器周期该信号两次有效,以通过数据总线P0口读回指令或常数。要注意的是该脚与外部数据存储器的读、写无关。用于控制的脚其实还有P3口的、,它们用于外部数据存储器及I/O的读、写控制。尽管控制线数量不多,但在应用系统中担当着十分重要的角色,在系统扩展部分我们可以体会这一点

38、。2.2 P0、P1、P2、P3口的内部结构及使用 2.2.1 P0口的内部结构及使用特点由图2-3可见,电路中包含一个数据输出锁存器、两个三态数据输入缓冲器、一个数据输出的驱动电路和一个输出控制电路。当对P0口进行写操作时,由锁存器和驱动电路构成数据输出通路。由于通路中已有输出锁存器,因此数据输出时可以与外设直接连接,而不需再加数据锁存电路。图2-3 P0口一位结构图 在P0口的内部有一个多路转接电路MUX,在控制信号的作用下,多路转接电路可以分别接通锁存器输出或地址/数据线,使P0口作为外部扩展时的数据总线/兼地址低8位线。另外,P0口结构的一大特点(不同于P1、P2、P3口)为输出电路是

39、漏极开路电路,当P0口进行一般的I/O输出时必须外接上拉电阻才能有高电平输出。当P0口进行一般的I/O输入时,必须先向电路中的锁存器写入“1”,使场效应管V2截止,以避免V2导通对引脚读入的影响。2.2.2 P1口的内部结构及使用特点 因为P1口通常是作为通用I/O口使用的,所以在电路结构上与P0口有一些不同之处,如图2-4所示。首先它不再需要多路转接电路MUX;其次是电路的内部有上拉电阻,与场效应管共同组成输出驱动电路。为此,P1口作为输出口使用时,无需再外接上拉电阻。图2-4 P1口一位结构图2.2.3 P2口的内部结构及使用特点如图2-5所示,P2口电路比P1口电路多了一个多路转接电路M

40、UX,这又正好与P0口一样。P2口可以作为通用I/O口使用,这时多路转接电路开关倒向锁存器Q端,同时又可作为高位地址线使用,此时多路转接电路开关应倒向“地址”位置。图2-5 P2口一位结构图2.2.4 P3口的内部结构及使用特点 P3口的特点在于,为适应引脚信号第二功能的需要,增加了第二功能控制逻辑。由于第二功能信号有输入和输出两类,因此分两种情况说明,结构如图2-6所示。对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。图2-6 P3口一位结构图 对于第二功能为输入的信号引脚,在口线的输入通路上增加了一个缓冲

41、器,输入的第二功能信号就从这个缓冲器的输出端取得。而作为I/O使用的数据输入,仍取自三态缓冲器的输出端。不管是作为输入口使用还是第二功能信号输入,输出电路中的锁存器输出和第二功能输出信号线都应保持高电平。P3口作为输入使用时,也必须先写“1”,让输出电路的场效应管截止。2.2.5 P0、P1、P2、P3作I/O使用实例1驱动LED实例 驱动LED,几乎是每个应用系统中都会碰到的,分为低电平点亮和高电平点亮两种。在高电平时,由于端口内部结构决定了输出的电流不到1mA(使用时常常会在这里出错,认为既然是高电平就一定能点亮LED),而允许输入的电流可以达20mA 左右,因此两种驱动LED的电路在结构

42、上会有较大差别。图2-7(a)是低电平驱动LED的电路,LED上的电流可以用以下公式计算:I = (5-1.8) / R+5VR3+5V其中1.8V是普通型LED的压降。图2-7(b)是高电平驱动LED的电路,电流由R3决定。图2-7(c)是错误的高电平驱动电路(输出电流太小)。 图2-7 驱动LED电路 图2-7 驱动LED电路(续)2驱动继电器实例 继电器的驱动,从电平角度来说也有高电平驱动和低电平驱动两种,但实际使用的继电器的工作电压都是9 V、12 V甚至更高,所以除了考虑驱动电流是否足够(继电器所需的驱动电流可用继电器的标称工作电压除以标称电阻来估算,常见的大约在40 mA60 mA

43、,所以不管哪种结构都需要三极管等电流放大电路)外,还要考虑低电平、高电平哪种驱动更容易实现。 图2-8(a)是常常会犯错误的所谓低电平驱动电路,尽管低电平时继电器确实能工作,但当输出为高电平而想使继电器截止时,结果却无法跳开,好像被粘住一样,原因是CPU输出的高电平只有5 V,而继电器的供电有12 V,而且这时继电器的供电12 V将有可能使CPU损坏(在使用芯片时不允许输入端的电压超过电源电压)。图2-8(b)是用高电平驱动的电路,图2-8(c)是低电平驱动。在需要同时驱动的继电器数量比较多时,可以选用专用的驱动芯片ULN2003A/ULN2003,其内部含有7路独立的驱动电路(还包含了继电器

44、线包回路的续流二极管),使用起来十分方便。 (a) (b) (c)图2-8 驱动继电器电路 3光耦器件的接口电路 单片机应用在强电系统时,为提高抗干扰能力,隔离输出级带来的干扰和不安全性,常常使用光耦器件作为接口,常用光耦器件的内部结构如图2-9所示。图2-9 常用光耦内部结构 光耦器件的接口实例如图2-10所示。图中的7407是用来增加驱动能力的P1口为低电平时光耦导通,负载得电而工作。图2-10 光耦接口应用实例2.3 单片机内部硬件资源图2-11是MCS-51单片机的内部结构框图,从图中可以看出,单片机内部主要包括: 图2-11 单片机内部结构框图(1)一个8位CPU(含运算器、控制器)

45、。(2)一个片内振荡器及时钟电路。(3)片内存储器(RAM和ROM,AT89C系列是Flash)。(4)特殊功能寄存器(SFR)。(5)4个8位并行I/O口(P0、P1、P2、P3)。(6)一个全双工可编程串行口。(7)定时器/计数器中断系统。 2.3.1 片内程序存储器 在MCS-51单片机系列中,8031、8032内部没有程序存储器,8051/8751/AT89C51内部有4K的程序存储器,8052/8752/AT89C52内部有8K的程序存储器。程序存储器有不同版本,有些是ROM,如8051/8052等;有些是EPROM,如8751/8752等;有些是Flash,如AT89C51/AT8

46、9C52等。程序存储器主要用来存放程序,同时也常常用来存放数据表格(通过DB指令建立数码管字型表等),在具体存放程序和建立数据表格时应该注意,程序存储器的部分空间的使用是有规定的,主要如下。(1)0000H:称为复位入口地址,系统复位后,程序计数器PC的内容为0000H,程序就从0000H开始重新执行。(2)0003H:外部中断0入口地址,当外部中断0发生且被响应后,CPU将停止原来的程序(会自动记录停止时的程序位置,以便“回来”后能“继续工作”),程序直接转入0003H这个入口地址,进而执行中断后需要执行的任务,0003H又称为外部中断0矢量地址。(3)000BH:定时器T0中断入口地址。(

47、4)0013H:外部中断1入口地址。(5)001BH:定时器T1中断入口地址。(6)0023H:串行口中断入口地址。 在上述入口地址区域不能放置用户的程序和建立数据表格,原因是:由于两个中断入口地址间仅有8个单元(如0003H到000BH),用来存放中断发生后的用户程序(一般称中断服务程序)显然是不够的,我们将中断服务程序放在程序存储器的其他“自由”空间,在这些入口地址放一条跳转指令(如:LJMP XXXX,其中“XXXX”就是实际中断服务程序的起始地址或标号),由这条跳转指令去“找到”实际的中断服务程序。2.3.2 片内部数据存储器图2-12是单片机内部数据存储器结构框图,对于8031/80

48、51/8751/AT89C51,内部有128 B(00H7 FH)的数据存储器,80H地址以上的空间离散分布着SFR(特殊功能寄存器),没有用户可用的RAM;对于8032/8052/8752/AT89C52,内部有256B数据存储器,00H7FH的单元与8051等相同,但在80H地址以上的空间则既有SFR(采用寄存器或直接寻址),同时也有用户可用的RAM(采用寄存器间接寻址)。 图2-12 内部数据存储器结构1通用工作寄存器区 地址00H1FH的空间为通用工作寄存器区,32个单元又可以分成4个组,分别如下。(1)00H07H:工作寄存器0组,符号为R0R7。(2)08H0FH:工作寄存器1组,

49、符号为R0R7。(3)10H17H:工作寄存器2组,符号为R0R7。(4)18H1FH:工作寄存器3组,符号为R0R7。上述4个组的寄存器符号都为R0R7,也就是说,一个符号(如R0)可以对应4个单元(如00H、08H、10H、18H),使用时是否会混淆呢?当然不会,因为在使用的任何时候只能选中一个组,到底使用哪个组,由特殊功能寄存器PSW来指定(见SFR部分介绍)。2位寻址区 什么是位寻址区呢?可以这么来理解,这些区除了每个单元都有确定的单元地址外,单元内的8位数的每个位置也有地址。要理解这点我们不妨打个比方:一个单元好像一间宿舍,单元的地址对应宿舍的房间号,而位则对应宿舍内的床,位地址正好

50、对应床铺号,位寻址区的地址如表2-2所示。单元地址MSB 位 地 址 LSB2FH7F7E7D7C7B7A79782EH77767574737271702DH6F6E6D6C6B6A69682CH67666564636261602BH5F5E5D5C5B5A59582AH575655545352515029H4F4E4D4C4B4A494828H474645444342414027H3F3E3D3C3B3A393826H373635343332313025H2F2E2D2C2B2A292824H272625242322212023H1F1E1D1C1B1A191822H171615141312

51、111021H0F0E0D0C0B0A090820H0706050403020100 位寻址区比普通用户RAM相比具有的优点是,它具有位寻址功能,常常用来做标记,同时利用位操作功能可以使程序更加简单,除了位寻址区有位地址之外,特殊功能寄存(SFR)中地址末位是0H或8H的12个单元也有位地址。在使用位地址时,容易与单元地址混淆,如地址“20H”,既可以理解成单元的地址,也可以理解成24H单元中的一个位地址(见表2-2倒数第5行),具体是指单元地址还是位地址,除了看文字表述外,在指令中看指令的类型和含义就可知道了。3用户RAM区 30H7FH之间是普通的用户RAM。对于8032/8052/875

52、2/AT89C52还包括80HFFH空间,这里的单元没有通用寄存器中的符号(即具有寄存器寻址功能),也没有位寻址区中的位地址,每个单元只有一个特定的地址与之相对应。需要强调的是,30H7FH可以采用直接寻址和寄存器间接寻址,而80HFFH只能通过寄存器间接寻址,不能采用直接寻址。4特殊功能寄存器区 特殊功能寄存器简称SFR(Special Function Register),在单片机中扮演着十分重要的角色。它们离散地分布在地址为80HFFH的空间中,特殊功能寄存器地址表如表2-3所示,这里先介绍几个常用的特殊功能寄存器,其余的在相关章节应用时介绍。 (1)累加器ACC(E0H):累加器ACC

53、(Accumulator)为8位寄存器,助记符记作A,是最常用、最繁忙的专用寄存器,所有的运算结果最终都放在ACC中,许多功能的实现必须由A来完成,如与外部RAM的数据传送等。(2)寄存器B(F0H):寄存器B是一个专门为乘法、除法运算设置的,在乘法、除法运算中由A和B来完成,所以寄存器B又称为乘法除法寄存器。(3)程序状态寄存器PSW(D0H):PSW(Program Status Word)用来存放程序运行后的各种标志或状态,供程序查询或判断用。内部8位的具体定义如下:D7HD6HD5HD4HD3HD2HD1HD0HCyACF0RS1RS0OVF1PCy(PSW.7)进位标志位。Cy是PS

54、W中最常用的标志位。其功能有二:一是存放算术运算的进位标志,在进行加或减运算时,如果操作结果的最高位有进位或借位时,Cy由硬件置“1”,否则被清“0”;二是在位操作中,作累加位使用。AC(PSW.6)辅助进位标志位。在进行加减运算中,当低4位向高4位进位或借位时,AC由硬件置“1”,否则AC位被清“0”。在BCD码调整中也要用到AC位状态。F0(PSW.5)用户标志位。这是一个供用户定义的标志位,需要利用软件方法置位或复位,用以控制程序的转向。RS1和RS0(PSW.4,PSW.3)寄存器组选择位。它们被用于选择CPU当前使用的通用寄存器组号,其对应关系如表2-4所示。RS1 RS0寄 存 器

55、 组片内RAM地址0 0第0组00H07H0 1第1组08H0FH1 0第2组10H17H1 1第3组18H1FH表2-4 寄存器组选择表OV:做加法或减法时,由硬件置位或清零,以指示运算结果是否溢出。OV=1反映运算结果超出了累加器的数值范围(无符号数的范围为0255,以补码形式表示一个有符号数的范围为-128+127)。进行无符号数的加法或减法时,OV的值与进位位C的值相同;进行有符号数的加法时,如最高位、次高位之一有进位,或做减法时,如最高位、次高位之一有借位,OV被置位,即OV的值为最高位和次高位的异或(C7C6)。P(PSW.0)奇偶标志位。表明累加器A中内容的奇偶性,如果A中有奇数

56、个“1”,则P置“1”,否则置“0”。凡是改变累加器A中内容的指令均会影响P标志位。此标志位对串行通信中的数据传输有重要的意义,在串行通信中常采用奇偶校验的办法来校验数据传输的可靠性。(4)数据指针DPTR(83H、82H):数据指针是单片机中唯一一个用户可操作的16位寄存器。编程时,DPTR既可以按16位寄存器使用,也可以将两个8位寄存器分开使用,即:DPH(83H)代表DPTR高位字节DPL(82H)代表DPTR低位字节DPTR通常在访问外部数据存储器、外部I/O端口时作地址指针使用(把地址赋值给DPTR),也在程序存储器进行查表时作基址,DPTR的寻址范围为64 KB(216)。(5)堆

57、栈指针SP(81H):堆栈操作是在内存RAM区专门开辟出来的按照“先进后出”原则进行数据存取的一种工作方式,主要用于子程序调用及返回、中断处理断点的保护及返回,它在完成子程序嵌套和多重中断处理中是必不可少的。为保证逐级正确返回,进入栈区的“断点”数据应遵循“先进后出”的原则。SP用来指示堆栈所处的位置,在进行操作之前,先用指令给SP赋值,以规定栈区在RAM区的起始地址(栈底层)。当数据推入栈区后,SP的值也自动随之变化。MCS-51单片机系统复位后,SP初始化为07H(在通用寄存器区0组R7),实际编程时,最好先将SP设置到RAM地址的高端,如对于8031/8051/8751/AT89C51等

58、,设置在60H以上。对于8032/8052/8752/AT89C52则设置成A0H等。如SP不在RAM地址的高端,则很容易破坏用户放在RAM中的临时数据,程序调试时,这种错误相对比较隐蔽,不太容易被发现。综上所述,片内数据存储器可以用表2-5表示。表2-5 MCS-51 片内RAM结构地 址 范 围功能或名称80HFFHSFR、数据缓冲区30H7FH数据缓冲区20H2FH位寻址区18H1FH工作寄存器3组,R0R710H17H工作寄存器2组,R0R708H0FH工作寄存器1组,R0R700H07H工作寄存器0组,R0R7(6)程序计数器PC:PC(Program Counter)是一个16位专

59、用寄存器,可寻址范围是0000H0FFFFH,共64 KB。PC用于存放CPU下一条要执行的指令地址,CPU 要执行哪条指令时,就把该条指令所在的单元的地址送上地址总线。在顺序执行程序中,当PC的内容被送到地址总线后会自动加1,即(PC) (PC)+1,又指向CPU 下一条要执行的指令地址。需要注意的是用户无法通过指令改变PC中的数值,也即PC是不可操作的。 2.4.1 时钟与时序1时钟 单片机内部每个部件要想协调一致地工作,必须在统一口令时钟信号的控制下工作。单片机工作所需要的时钟信号有两种产生方式,即内部时钟方式和外部时钟方式。图2-13(a)是内部时钟方式:单片机内部有一个用于构成振荡器

60、的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端,这个放大器与作为反馈元件的片外晶振一起构成自激振荡器。在该图中,电容C1和C2取30 pF左右,晶体的振荡频率范围是1.2 MHz12 MHz(AT89C51/52最高工作频率达24 MHz),晶体振荡频率高,则系统的时钟频率也高,单片机运行速度也就快。在通常应用情况下,MCS-51单片机使用振荡频率为6 MHz或12 MHz,在通信系统中则常用11.0592 MHz,这样可使误差最小。 图2-13(b)是外部时钟方式:时钟信号来自外部的振荡电路(大多数情况是来自另外单片机的时钟信号,以保持多片CPU工作同步),外接

温馨提示

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

评论

0/150

提交评论