标题：AT89S51
主要性能特点
1、4k Bytes Flash片内程序存储器；
2、128 bytes的随机存取数据存储器（RAM）；
3、32个外部双向输入/输出（I/O）口；
4、2个中断优先级、2层中断嵌套中断；
5、6个中断源；
6、2个16位可编程定时器/计数器；
7、2个全双工串行通信口；
8、看门狗（WDT）电路；
9、片内振荡器和时钟电路；
10、与MCS-51兼容；
11、全静态工作：0Hz-33MHz；
12、三级程序存储器保密锁定；
13、可编程串行通道；
14、低功耗的闲置和掉电模式。
管脚说明
VCC：电源电压输入端。
GND：电源地。
P0口：P0口为一个8位漏级开路双向I/O口，每脚可吸收8TTL门电流。当P1口的管脚第一次写1时，被定义为高阻输入。P0能够用于外部程序数据存储器，它可以被定义为数据/地址的低八位。在FIASH编程时，P0 口作为原码输入口，当FIASH进行校验时，P0输出原码，此时P0外部必须被拉高。  PDIP封装的AT89S51管脚图P1口：P1口是一个内部提供上拉电阻的8位双向I/O口，P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后，被内部上拉为高，可用作输入，P1口被外部下拉为低电平时，将输出电流，这是由于内部上拉的缘故。在FLASH编程和校验时，P1口作为第八位地址接收。
P2口：P2口为一个内部上拉电阻的8位双向I/O口，P2口缓冲器可接收，输出4个TTL门电流，当P2口被写“1”时，其管脚被内部上拉电阻拉高，且作为输入。并因此作为输入时，P2口的管脚被外部拉低，将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时，P2口输出地址的高八位。在给出地址“1”时，它利用内部上拉优势，当对外部八位地址数据存储器进行读写时，P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口：P3口管脚是8个带内部上拉电阻的双向I/O口，可接收输出4个TTL门电流。当P3口写入“1”后，它们被内部上拉为高电平，并用作输入。作为输入，由于外部下拉为低电平，P3口将输出电流（ILL）这是由于上拉的缘故。P3口除了作为普通I/O口，还有第二功能：
P3.0 RXD（串行输入口）
P3.1 TXD（串行输出口）
P3.2 /INT0（外部中断0）
P3.3 /INT1（外部中断1）
P3.4 T0（T0定时器的外部计数输入）
P3.5 T1（T1定时器的外部计数输入）
P3.6 /WR（外部数据存储器的写选通）
P3.7 /RD（外部数据存储器的读选通）
P3口同时为闪烁编程和编程校验接收一些控制信号。
I/O口作为输入口时有两种工作方式，即所谓的读端口与读引脚。读端口时实际上并不从外部读入数据，而是把端口锁存器的内容读入到内部总线，经过某种运算或变换后再写回到端口锁存器。只有读端口时才真正地把外部的数据读入到内部总线。89C51的P0、P1、P2、P3口作为输入时都是准双向口。除了P1口外P0、P2、P3口都还有其他的功能。 
RST：复位输入端，高电平有效。当振荡器复位器件时，要保持RST脚两个机器周期的高电平时间。
ALE/PROG：地址锁存允许/编程脉冲信号端。当访问外部存储器时，地址锁存允许的输出电平用于锁存地址的低位字节。在FLASH编程期间，此引脚用于输入编程脉冲。在平时，ALE端以不变的频率周期输出正脉冲信号，此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是：每当用作外部数据存储器时，将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时， ALE只有在执行MOVX，MOVC指令是ALE才起作用。另外，该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止，置位无效。
PSEN：外部程序存储器的选通信号，低电平有效。在由外部程序存储器取指期间，每个机器周期两次/PSEN有效。但在访问外部数据存储器时，这两次有效的/PSEN信号将不出现。
EA/VPP：外部程序存储器访问允许。当/EA保持低电平时，则在此期间外部程序存储器（0000H-FFFFH），不管是否有内部程序存储器。注意加密方式1时，/EA将内部锁定为RESET；当/EA端保持高电平时，此间内部程序存储器。在FLASH编程期间，此引脚也用于施加12V编程电源（VPP）。
XTAL1：片内振荡器反相放大器和时钟发生器的输入端。
XTAL2：片内振荡器反相放大器的输出端。
下载程序
AT89SXX系列单片机实现了ISP下载功能，故而取代了89CXX系列的下载方式，也是因为这样，ATMEL公司已经停止生产89CXX系列的单片机，现在市面上的AT89CXX多是停产前的库存产品。
2控制线，共4根。
（1）输入：
RST——复位输入信号，高电平有效。在振荡器工作时，在RST上作用两个机器周期以上的高电平，将器件复位。
EA/Vpp——片外程序存储器访问允许信号，低电平有效。在编程时，其上施加12V的编程电压。
（2）输入，输出：
ALE/PROG——地址锁存允许信号，输出。用做片外存储器访问时，低字节地址锁存。ALE以1/6的振荡频率稳定速率输出，可用做对外输出的时钟或用于定时。在EPROM编程期间，作输入。输入编程脉冲。ALE可以驱动8个LSTTL负载。
（3）输出：
PSEN——片外程序存储器选通信号，低电平有效。在从片外程序存储器取指期间，在每个机器周期中，当PSEN有效时，程序存储器的内容被送上P0口（数据总线）。PSEN可以驱动8个LSTTL负载。
3 I/O口：4个口，32根
单片机51系列共有四个8位双向并行I/O通道口，分别是P0、P1、P2、P3，各具有特殊的电路结构，每位均有自己的锁存器、输出驱动器和输入缓冲器。这种结构，在数据输出时可锁存，即输出新的数据之前，通道口上原数据一直保持不变，但对输入信息是不锁存的，因此从外部输入的信息必须保持到取数指令执行完为止。在这四个8位双向并行I/O通道口中，我们应该选择哪一个通道口作为输入信号和输出信号的端口呢？下面我们先来了解一下四个通道口的结构。
（1）P0口介绍 
P0口在访问外部存储器时，P0口既是一个真正的双向数据总线口，又是从分时输出8位地址口。它包括一个输出锁存器，两个三态缓冲器，一个输出驱动电路和一个输出控制电路
(2）P1口介绍 
P1口是专门为用户使用的I/O口，是准双向口，P1口为8位准双向口，每一位均可单独定义为输入或输出口。在编程校验期间，用做输入低位字节地址。P1口可以驱动4个LSTTL负载。
(3）P2口介绍 
P2口也是双向口。它是供系统扩展时输出高8位地址。如果没有系统扩展时，也可以作为用户的I/O口使用。P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15，P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。外部的程序存储器由PSEN信号选通，数据存储器则由WR和RD读写信号选通，因为2=64k，所以89S51最大可外接64kB的程序存储器和数据存储器
(4）P3口介绍
P3口是个双功能口，第一功能作通用I/O口，第二功能是作变异功能用，为适应引脚的第二功能的需要，增加了第二功能控制逻辑，在真正的应用电路中，第二功能显得更为重要。由于第二功能信号有输入输出两种情况，我们分别加以
说明。
P3口的输入输出及P3口锁存器、中断、定时/计数器、串行口和特殊功能寄存器有关，P3口的第一功能和P1口一样可作为输入输出端口，同样具有字节操作和位操作两种方式，在位操作模式下，每一位均可定义为输入或输出。
表1P3口的第二功能
端口引脚
功能特征
P3.0
串行输入口（RXD）
P3.1
串行输出口(TXD)
P3.2
外中断0(INT0)
P3.3
外中断1(INT1)
P3.4
定时/计数器0的外部输入口(T0)
P3.5
定时/计数器1的外部输入口(T1)
P3.6
外部数据存储器写选通(WR)
P3.7
外部数据存储器读选通(RD)
现在我们已经对四个8位双向并行I/O口有了初步的了解。根据以上的介绍我们知道只有P1口是标准的I/O口，所以我们选用P0口作为数据端口，P0口可逐位分别定义各口线为输入或输出线。
3.1.289S51单片机的中断系统
本次毕业设计的汽车多功能报警器是利用外部中断触发单片机中断处理程序，以实现防盗报警的功能。所以，以下内容是对89S51单片机的中断系统的介绍。
1中断：程序执行过程中，允许外部或内部事件通过硬件打断程序的执行，使其转向为处理内部事件的中断服务程序中去；完成中断服务的程序后，CPU继续原来被打断的程序，这样的过程称为中断过程。
2中断源：能产生中断的外部和内部事件。
89S51有5个中断源：
(1) INT0：外部中断0请求，低电平有效。通过P3.2引脚输入。
(2)INT1：外部中断1请求，低电平有效。通过P3.3引脚输入。
(3)T0：定时器/计数器0溢出中断请求。
(4)TI：定时器/计数器1溢出中断请求。
(5)TXD/RXD：串行口中断请求。当串行口完成一帧数据的发送或接收时，便请求中断。
每一个中断源都对应一个中断请求标志位，它们设置在特殊功能寄存器TCON和SCON中。当这些中断源请求中断时，相应的标志分别有TCON和SCON中的相应位来锁存。
389S51中断系统有以下4个特殊功能寄存器：
（1）定时器控制寄存器TCON（用6位）；
（2）串行口控制寄存器SCON（用2位）；
（3）中断允许寄存器IE；
（4）中断优先级寄存器IP。
其中，TCON和SCON只有一部分用于中断控制。通过对以上各特殊功能寄存器的各位进行置位或复位等操作，可实现各种中断控制功能。
4中断的响应过程及中断矢量地址 
中断处理过程可分为3个阶段：中断响应、中断处理和中断返回。89C51的CPU在每个机器周期的S5P2期间顺序采样每个中断源，CPU在下一个机器周期S6期间按优先级顺序查询中断标志。如查询到某个中断标志为1，则将在接下来的机器周期S1期间按优先级进行中断处理。中断系统通过硬件自动将相应的中断矢量地址装入PC，以便进入相应的中断服务程序。表2既是各个中断源对应的中断矢量地址。
由于89S51系列单片机的两个相邻的中断源中断服务程序入口地址相距只有八个单元，一般的中断服务程序是容纳不下的，通常是在相应的中断服务程序入口地址中放一条常跳转指令LJMP，这样就可以转到64KB任何可用区域了。
表2 中断源及其对应的矢量地址
中断源
中断矢量地址
外部中断0（）
0003H
定时器/计数器0（T0）
000BH
外部中断1（）
0013H
定时器/计数器1（T1）
001BH
串行口中断（RI、TI）
0023H
中断服务程序从矢量地址开始执行，一直到返回指令RETI为止。RETI指令的操作一方面告诉中断系统该中断服务程序已执行完毕，另一方面把原来压入堆栈保护断点地址从栈顶弹出，装入程序寄存器PC，使程序返回到被中断的程序断点处继续执行。
5 在编写中断服务程序时应注意：
（1）在中断矢量地址单元处存放一条无条件转移指令（如LJMP ××××H），使中断程序可灵活的安排在64KB程序存储器的任何空间。
（2）在中断服务程序中，用户应注意用软件保护现场，以免中断返回后丢失原寄存器、累加器中的信息。
（3）若要在执行当前中断程序时禁止更高优先级中断，则可先用软件关闭CPU中断或禁止某中断源中断，在中断返回前在开放中断。
AT89S51单片机的优势性能强大AT89S51具有完整的输入输出、控制端口、以及内部程序存储空间。与我们通常意义上的微机原理类似，可以通过外接A/D，D/A转换电路及运放芯片实现对传感器传送信息的采集，且能够提供以点阵或LCD液晶及外接按键实现人机交互，能对内部众多I/O端口连接步进电机对外围设备进行精确操控，具有强大的工控能力。易于学习AT89S51系列单片机编写程序的基本流程。其语法结构与我们常用的计算机C语言基本相同，不同之处在于增加了控制具体引脚工作的语句和命令，相对于计算机C语言，单片机C语言更简练和明确.可以控制每个引脚的输入输出状态。其主要语句集中在例如：“ifelse”、“while”、“for”等循环与判断语句上，相比计算机C语言更简单。有过计算机C语言学习经历经过一段时间的熟悉就能够熟练进行编程.
使用AT89S51系列单片机编程，可以在没有实物单片机的情况下在普通电脑上进行程序编写甚至是调试工作。一般工作中使用Keil公司开发的51单片机编程软件进行编程，它采用目前流行的开友环境，集编辑，编译和仿真于一体。在该软件上用户可以编写汇编语言或C语言源程序，并利用该软件生成单片机能运行的程序。价格低廉AT89S51芯片价格便宜，适合对大批量的计量仪器进行规模化改造，其单片售价不超过5元。