AT89C2051是美国爱特梅尔(ATMEL)半导体制造公司生产的一种高性能单片机。该单片机以与MCS-51系列单片机高度兼容、低功耗、可以在接近零频率下工作等诸多优点,而广泛应用于各类计算机系统、工业控制、电信设备、宇航设备及消费类产品中。由于ATMEL是全球最大的FLASH和E\(^{2}\)PROM生产制造公司,加之以其E2PROM技术与INTEL的80C31内核技术交换,使AIMEL拥有了80C31内核的使用权,其生产出的AT89C系列单片机不仅与80C31有极好的兼容性,而且具有极高的性能价格比。该系列单片机的可选种类有:AT89C1051、AT89C2051、AT89C51、AT89C52、AT89C55、AT89S8252等各档芯片,它们的差别仅在于其I/O口线数量、内部闪存容量、中断源和定时器个数不同,除此其它性能完全相同。下面主要以AT89C2051为例,详细介绍其与80C31的主要性能差别和应用,最后给出一个简单应用实例。
一、两种单片机的主要性能:
1.80C31的主要性能:
内部RAM128字节;内部ROM:无;工作电压:5V±5%;工作频率:12MHz(最大);程序加密:无;I/O口线:32位;定时器:2个;中断源:5个;可编程串行UART通道;输出口能否直接驱动LED:不能;片内有无模拟比较器:无;低功耗的闲置和掉电模式:仅有低功耗模式;外形尺寸:较大。
2.AT89C2051的主要性能
指令与MCS-51100%兼容;内带2K字节可编程闪速存储器(Flash Memory)可重复擦写1000次;数据保留时间:10年;工作电压范围:2.7V~6V;工作频率:0~24MHz;两级程序加密销定;128字节内部RAM;15条可编程双向I/O口线;两个16位定时器/计数器;5个中断源;可编程串行UART通道;输出口可直接驱动LED;片内含模拟比较器;低功耗的闲置和掉电模式;标准的DIP20封装,外形较小(与74LS373外型同)。
从以上两种单片的性能比较可以看出,AT89C2051单片机的优点体现在以下几个方面:
工作频率提高了,最大可以达到24MHz,这一点为一些需要高速控制的场合提供了方便;
工作电压范围变宽了,从2.7~6V,为电源的选择提供了极大的灵活性;
内部带有闪速程序存储器,方便了编程和开发;
两级程序加密锁定,增强了加密强度;
输出可以直接驱动LED,减少外围芯片,减化布线;
片内含模拟比较器,可方便地设计模拟比较电路;
另外,从两种单片机的I/O口线来看,似乎80C31要比AT89C2051多不少,但由于80C31无内部程序存储器,因此要用P0和P2口外扩程序存储器,故最后提供给用户使用的口线也只约20根左右。
AT89C2051是AT89C系列单片机中的一种派生产品,它是将AT89C51的P0口、P2口、EA-/Vpp、ALE/PROG、PSEN-口线简省后,形成的一种仅20个引脚的单片机,相当于早期IN-TEL8031的最小应用系统,这对于一些不太复杂的控制场合,仅用一片AST89C2051就足够了,是真正意义上的“单片机”。由于将多功能8位CPU和2k的闪速存储器集成在单个芯片中,使其成为一种高效的微控制器,为很多嵌入式控制系统提供了一种极佳的选择方案,使传统的51系列单片机的体积大、功耗大、可选模式少等诸多困扰设计工程师们的致命弱点不复存在。下面仅以AT89C2051为主,介绍其主要的技术特点与性能指标。
二、引脚性能介绍
该单片机引脚外形见图2。Vcc:供电电压,GND:接地。

P1口(P1.0~P1.7)是一个8位双向I/O口,其中P1.2至P1.7提供内部上拉电阻,P1.0和P1.1需外接上拉电阻。P1.0和P1.1也可作为片内精确模拟比较器的正向输入(AINO)和反向输入(AIN1)。P1口输出缓冲器能提供20mA的拉电流,可直接驱动LED。P1口写入“1”后可用作输入。
P3口:引脚P3.0至P3.7(P3.5除外)是7个带内部上拉电阻的双向I/O口线。原P3.6不能使用,已为片内硬接为内部比较器输入。与P1口相同,P3口也能提供20mA的拉电流,并可直接驱动LED显示器。与80C31相同,P3口也有第二功能:P3.0串行数据接收RXD;P3.1串行数据发送TXD;P3.2外部中断0申请INTO-;P3.3外部中断1申请INT1-;P3.4定时器/计数器0输入;P3.5定时器/计数器1输入;P3.6内部占用;P3.7无第二功能RD-。
另外,RST:复位输入,只要RST转为高电平,所有I/O口置1,当振荡器复位时,要保持RST引脚高电平两个机器周期。
XTAL1:反向振荡放大的输入及内部时钟电路的输入;
XTAL2:来自反向振荡放大器的输出。
特殊功能寄存器

被称为特殊功能寄存器(SFR)空间的片内存储区如图1所示。从图1可以看出不是所有的地址都被占用,未被占用的地址不能使用,对这些地址若强行写入数据,则读回的结果不能确定,这一点与80C31相同。
软件中不应对那些未列出的位置进行读写操作,因为将来ATMEL公司有可能对它们赋予一些新的器件特性。
三、程序存储器锁定
AT89C2051片内有两个锁定位,可以不编程(U),也可以编程(P),以获得一些附加的特性,如下列表:
编程锁定位 LB1 LB2 保护模式
1 U U 没有编程锁定特性
2 P U 禁止对闪速存储器进一步编程
3 P P 同模式2,同时禁止校验
四、闲置模式
在闲置模式下,CPU自身处于休眠状态,而片内所有其他外围设备保持工作状态。该模式是软件生成的,在该模式期间,片内RAM和所有特殊功能寄存器的内容都保持不变,闲置模式可以允许由中断或硬件复位终止。如果不采用外部上拉,P1.0和P1.1应置“0”,如果采用外部上拉,则置“1”。
必需注意,当闲置模式被硬件复位中止时,器件要从闲置处恢复程序的执行,执行两个机器周期后,内部复位算法才起作用。此时,硬件禁止访问内部RAM,但允许访问端口管脚。为了排除闲置被复位中止时对端口意外写入的可能性,跟在生成闲置模式后的指令不应是对端口管脚的读写操作。
五、掉电模式
在掉电模式下,振荡器停止工作,生成掉电状态的指令是最后执行的一条指令。片内RAM和特殊功能寄存器保持其值不变直到掉电模式终止。从掉电模式退出的唯一办法是硬件复位。复位将重新定义特殊功能寄存器(SFR),但不会影响片内RAM。在Vcc没有恢复到其正常工作电压之前,不应进行复位,且复位的保持时间应足够长,使振荡器能重新开始工作并稳定下来。
如果不采用外部上拉,P1.0和P1.1应置“0”,如果采用外部上拉,则置“1”。
六、最简应用

下面是AT89C2051的一个应用实例(图3),程序启动后,P1口上的8只发光二极管轮流闪烁3次。
程序清单如下:
org 0000h
mov p1,#00h
mov r0,#01h
again:mov a,r0
mov p1,a
acall time3
mov a,r0
rl a
mov r0,a
sjmp again
;闪烁3次
time3:mov r2,#06h
to: xrl pl,a
acall d500ms
djnz r2,to
ret
;延时500ms
d500ms:mov r5,#0ffh
loop2: mov r4,#0ffh
loop1: nop
nop
djnz r4,loop1
djnz r5,loop2
ret
end
(王传林 钱晓进)