51单片机教程第二讲——外部引脚
想必在这个时候,你对单片机有了一定的了解,但是我还是有必要讲讲单片机的基本结构。
单片机是由中央处理器(CPU)、程序存储器(ROM)、数据存储器(RAM)、串行接口、并行I/O接口、定时/计数器、中断系统等几个大单元,以及数据总线、地址总线、控制总线组成的。基本框架如图所示:
好了这上面是来自书上的资料,想必看到这里你也懒得在看了,所以我们直接切入今天的正题吧,这些单元你暂时不用管他们是怎么回事,毕竟没有人会把一块51系列单片机拆开来然后让你辨认哪些是哪些。所以从直观之用的角度来说你有必要记住单片机40个引脚的用途,上图能加深你对单片机的理解。如果你对上图没有感觉,那么不用担心,我们看接下来的内容。
今天我们主要讲的还是PID封装40个引脚的。(点击可放大图片)
1.凡是芯片都是要上电才能工作的,因此单片机也专门用2个接口来接电源(Vcc)和地(Vss),这就是20脚和40脚,刚好两个是对角线 。
2.由于单片机需要时钟才能工作。以AT89S52为例,时钟方式有两种(一般都有两种):片内时钟——在18和19脚接石英晶体(0~33MHz)和振荡电容(10pF~30pF);片外时钟——将XTAL2(18脚)悬空,外部时钟信号(0~33MHz)从XTAL1(19脚)输入。
3.正如前一章所讲的,单片机的核心在于控制,如何做到控制呢。这个问题早有人想到了,要做到控制必须得到外部信号,同时也能给外部提供信号,所以你需要大量的I/O(Input/Output)接口,由于单片机的数据是八位的,什么是8位呢?用八个二进制数据表示一个数字,这个数字由于只能是八位二进制的自然只能从0~255了(如果你想使用诸如1000这样较大的数字,以后会讲,别着急)。
于是乎控制开始了,举个例子来说,你要点亮一盏灯,你就可以让和你的灯相连的端口提供一个“有效”电平就可以了(由于实际电路中接法各异,不可能说只有高电平才能让灯亮,所以此处说是“有效”)。当你的电路连接方法只要某一个端口输出高电平时,灯能亮,那么只要通过编程的方法让这个端口输出高电平就好了。
然而在接下来的这些端口中你应该选择哪一个或者哪一些是可以供你选择的呢?答案是一般来说有8*4=32个(由于驱动灯是一件容易的事情,所以不用I/O口也可以,如果使用I/O口的话就是32个供你选择)
这32个端口有区别吗?
答案是肯定的,但是端口的区别不会影响驱动灯的效果。它们的区别在于结构上,使用上基本没有区别。
这32个端口能分成几类呢?
看你怎么分了,不同的要求能有不同的分法。按组分的话那就有4组了:P0、P1、P2、P3,刚好每组8个,以P0为例刚好是P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7,注意哦,刚好和上面所谓的数据是8位的一致,别以为这是巧合,所谓的数据是8位的的就是用这些端口配合内部的存储结构来实现了,所以理解这些端口才是王道,比如说你对P1口赋值30(10进制数)则转换成二进制就是0001 1110 P1.0就是最低位的0(低电平)P1.1为第二位的1(高电平),以此类推。当然如果你水平够高可以配合使用2组或者更多端口来实现16位或者更多位的数据,不过记住了这个输入的数据在内存(专门用来存放数据的内存)中还是以八位的方式来存储的,所以你要使用的时候一定要经过一些处理,这里不做赘述。同时为了保证你能很好的理解,P0、P1、P2、P3端口另外的区别将在本章最后面经行补充。
至此,你已经可以很容易的记清楚单片机上2+2+8*4=36个管脚的作用了。剩下4个是什么呢
4.控制、复位(RST)和选通引脚
RST:9脚,单片机内部CPU的复位信号输入端。
在单片机的振荡器启动后,该引脚置2个机器周期以上的高电平,便可以复位。
注:特殊功能寄存器AUXR中的DISRT0位可以使复位无效。在默认的DISRT0位状态下,RST引脚上的高电平有效。至于这个AUXT你暂时不用管,知道有这么一个东西就成,名字记不住也别在意,后面的教程会有较详细的说明。
-EA/VPP(前面有“-”表示低电平有效,本横杠应该在EA上面):31脚,-EA为访问内部或者外部程序选择信号,在Flash编程时,提供FLash电压VPP。
由于我们编写的程序不一定在单片机内部,所以需要使用外部程序时,-EA必须保持低电平(E为extend 拓展的首字母,A为 address的首字母)此时单片机访问的外部程序存储器,注意,只是程序存储,不是数据存储,至于怎么访问,还要注意以上I/O的连接方法,访问哪个,要和29脚配合。这个只是控制端口,控制单片机自己。
当-EA接高电平时CPU先从0000H单元开始,执行内部程序存储程序,如果外部还有拓展程序存储器,则CPU在执行完内部程序存储器程序后(理解有困难,找个本子记下来,由于单独解释有点麻烦,暂时不解释,以后会明白的),自动转向执行外部程序存储器程序。对片内Flash编程时,此引脚用于输入编程允许电压。另外,如果单片机的保密位被编程,则复位时,内部会锁存-EA端的状态。
ALE/-PROG(-PROG表示低电平有效):30脚 ALE为地址锁存使能端(ALE–Address Lock Enable)和变成脉冲输入端
当访问外部程序存储器时,ALE(地址锁存)的负跳变将低8位地址打入锁存;而访问内部外部程序存储器时,ALE端将有一个1/6振荡频率的正脉冲信号,该信号可以用于外部计数或时钟信号。当访问外部数据存储器(执行MOVX类指令)时,ALE会跳过一个脉冲。
在Flash编程时,该引脚用于输入编程脉冲(-PROG)。
-PSEN:29脚,外部程序存储器选通信号
当单片机访问外部程序存储器,读取指令码时,每个机器周期产生2次有效信号,即此脚输出2个负脉冲选通信号;在执行片内程序存储器读取指令码时,不产生此脉冲;在读写外部数据时,也不产生-PSEN
至此,单片机上所有的引脚都介绍完了,此时你看到了单片机40个引脚应是如下图所示:
怎么?发现不对?嗯,这就对了,因为只有这几个端口还真不能完成所有的控制功能。因此把单片机P3的一组端口作为复用端口,以便达到目的。这8个端口功能由低位到高位分别是:RDX、TDX、-INT0、-INT1、T0、T1、-WR、-RD。作用的话暂时不说了,很明显由于每个端口独立,也就是说每个端口有单独的作用,肯定是用来作为信号指示用的。只有0和1两种状态嘛。
终于功德圆满。40个引脚全部介绍完毕,全图如下:
关于内部的结构,将在下一讲中说明。