《单片机原理及应用chp101》由会员分享,可在线阅读,更多相关《单片机原理及应用chp101(26页珍藏版)》请在金锄头文库上搜索。
1、 第10章 AT89C2051 Flash单片机 AT89C系列与MCS51系列单片机相比有两大优势:第一,片内程序存储器采用闪速存储器,使程序的写入更加方便;第二,提供了更小尺寸的芯片(AT89C20511051),使整个硬件电路的体积更小。 AT89C系 列 单 片 机 有 4种 型 号 : AT89C51、 AT89C52、AT89C1051、AT89C2051,其中AT89C20511051是ATMEL公司AT89C系列的新成员。它以较小的体积、良好的性能价格比倍受青睐,在家电产品、工业控制、计算机产品、医疗器械、汽车工业等应用方面成为用户降低成本的首选器件。这里以AT89C2051为
2、代表对AT89C系列单片机作一阐述。10.1 10.1 AT89C2051AT89C2051内部结构与功能内部结构与功能 10.1.1 AT89C2051主要性能 AT89C2051是ATMEL公司生产的带2K字节闪速可编程可擦除只读存储器(EEPROM)的8位单片机,它具有如下主要特性:和MCS-51产品的兼容 2K字节可重编程闪速存储器耐久性:1,000写擦除周期 2.7V6V的操作范围全静态操作:0Hz24MHz 两级加密程序存储器1288位内部RAM 15根可编程I/O引线两个16位定时器/计数器 六个中断源可编程串行UART通道 直接LED驱动输出片内模拟比较器 低功耗空载和掉电方式
3、 图10.1 AT89C2051的结构框图10.1.2 AT89C2051的结构框图 AT89C2051是一带有2K字节闪速可编程可擦除只读存储体(EEPROM)的低电压,高性能8位CMOS微型计算机。如图10.2所示。它采用ATMEL的高密非易失存储技术制造并和工业标准MCS51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和闪速存储器,ATMEL AT89C2051是一强劲的微型计算机,它对许多嵌入式控制应用提供一高度灵活和成本低的解决办法。图10.2 AT89C2051内部结构图 此外,从AT89C2051内部结构图也可看出,其内部结构与8051内部结构基本一致(除模拟比较器外
4、),引脚RST、XTAL1、XTAL2的特性和外部连接电路也完全与51系列单片机相应引脚一致,但P1口、P3口有其独特之处。10.1.3 AT89C2051的引脚说明 AT89C2051是一个有20个引脚的芯片,引脚如图10.1所示,与8051内部结构进行对比可发现,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚,因而芯片尺寸有所减少。 AT89C2051芯片的20个引脚功能为: 1. Vcc:电源电压。 2. GND:地。 3. P1口:P1口是一8位双向I/O口。口引脚P1.2P1.7提供内部上拉电阻。 4. P3口:P3口的P3.0P3.5、P3.7
5、是带有内部上拉电阻的七个双向I/0引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。 P3口还用于实现AT89C2051的各种功能,如下表10-1所示。 P3口还接收一些用于闪速存储器编程和程序校验的控制信号。 5. RST:复位输入。 6. XTAL1:作为振荡器反相放大器的输入和内部时钟发生器的输入。 7. XTAL2:作为振荡器反相放大器的输出。表10-1 P3口的功能 从上述引脚说明可看出,AT89C2051没有提供外部扩展存储器与I/O设备所需的地址、数据、控制信号,因此利用AT89C2051构成的单片机应用系统不能在AT89C2051之外扩展存储器
6、或I/O设备,也即AT89C2051本身即构成了最小单片机系统。P3口引脚功能P3.0RXD(串行输入端口)P3.1TXD(串行输出端口)P3.2INT0(外中断0)P3.3INT1(外中断1)P3.4TO(定时器0外部输入)P3.5T1(定时器1外部输入)10.2 振荡器和专用寄存器功能10.2.1振荡器特征 图10.3 振荡的外部连接方法 图10.4 外部时钟驱动结构10.2.2专用功能寄存器(SFR) AT89C2051中特殊功能寄存器描述如表10-2所示,它们共占用了19字节,其功能与8051SFR功能相对应。表10-2 专用寄存器地址和复位值寄存器符号寄存器地址复位值寄存器符号寄存器
7、地址复位值B0F0H00000000TMOD89H00000000ACC0E0H00000000TL08AH00000000PSW0D0H00000000TL18BH00000000IP0B8H00000TH08CH00000000P30B0H11111111TL08DH00000000IE0A8H000000SP82H00000111SCON98H00000000DPL83H00000000SBUF99HDPH84H00000000P190H11111111PCON87H00000TCON88H0000000010.3 10.3 指令约束条件和指令约束条件和CPUCPU的工作方式的工作方式1
8、0.3.1指令约束条件指令约束条件 AT89C2051是ATMEL微控制器家族经济中低价成员。它含有2K字节的闪速程序存储器,完全和MCS51结构兼容并可用MCS51指令集进行编程。但是在使用有关指令进行编程时,程序员必须记住些注意事项。 跳转或分支相关的全部指令必须进行空间约束,这样目的地址就会落在AT89C2051 2K字节的物理程序存储器空间内。这一点编程人员必须注意。例如,对于2K字节存储器的AT89C2051来说,LJMP 7E0H是一有效的指令而LJMP 900H则是无效的。 1. 1. 分支指令 对于LCALL、LJMP、ACALL、AJMP、SJMP、JMP A+DPTR等指令
9、,只要编程人员记住这些分支指令的目的地址落在程序存储器大小的物理范围内(89C2051的00H至7FFH单元),这些无条件分支指令就会正确执行。违背物理空间的限制会引起不可知的程序出错。 2. 2. 和MOVX相关的指令,数据存储器 AT89C2051包 含 128字 节 内 部 数 据 存 储 器 。 这 样 ,AT89C205l中的堆栈深度局限于内部RAM的128字节范围内。它既不支持外部数据存储器的访问,也不支持外部程序存储器的执行。因此,程序中不应包括MOVX指令。10.3.2 程序存储器加密位 可对芯片上的两个加密位不进行编程(U)或进行编程(P)来获得下表10-3所列的功能:表10
10、-3 加密位程序加密位保护类型方式LB1LB2123UPPUUP没有程序加密功能。禁止进一步进行闪速编程。同方式2,还禁止校验。10.3.3 10.3.3 CPUCPU工作方式工作方式 1. 空闲方式 当利用软件使空闲方式位IDL(PCON0)1时,单片机进入空闲方式。此时,CPU处于休眠状态,而片内所有其他外围设备保持工作状态,片内RAM和所有特殊功能寄存器内容保持不变。 2. 掉电方式 掉电方式由掉电方式位PD(PCON.1)1设置。此时,振荡器停止工作,设置掉电方式的指令成为最后执行的1条指令,片内RAM和特殊功能寄存器内容保持不变。10.4 10.4 对对FlashFlash存储器的编
11、程存储器的编程10.4.1编程闪速存储器编程闪速存储器 AT89C2051内Flash存储器的编程和校验如图10.5、图10.6、图10.7所示。 1. 内部地址计数器:AT89C2051包含一内部EEPROM地址计数器,它总是在RST上升沿复位到000H并在XTAL1引脚有一正跳变脉冲时进行计数。 2. 编程算法:要编程AT89C2051,则建议下列步骤。 (1) 上电次序: 在和GND引脚之间加上电源; 设置RST和XTAL1为GND; 所有其它引脚浮空,至少等待10ms。 (2) 设置RST引脚为高H,设置P3.2引脚为高H。 (3) 对引脚P3.3,P3.4,P3.5,P3.7加上逻辑
12、电平高H或低L的正确组合,来选择EEPROM编程方式如表10.4中所示中的一种编程操作。 编程和校验存储器阵列,由下列(4)(10)点实现: (4) 在000H单元对P1.0Pl.7加人数据代码字节。 (5) 升高RST到12V来激活编程。 (6) 使P3.2跳变一次来编程EEPROM阵列中的一字节或者加密位。写字节周期是自身定时的,一般需用l.2ms。 (7) 校验已被编程的数据,使RST从12V降到逻辑电平H并设置P33P37引脚到正确的电平。可在P1口引脚输出数据。 (8) 在下一地址单元编程字节,使XTAL1跳变一次提升内部地址计数器。对P1口引脚加入新数据。 (9) 重复步骤5至8,
13、对整个2K字节阵列改变数据并提升地址计数器或者一直到目标文件的结束。 (10) 下电次序: 设置XTAL1为“L” 设置RST为“L” 浮空所有其它I/0引脚 关闭电源 图10.5 Flash存储器编程结构 图10.6 Flash存储器校验结构 3. 数据查询:AT89C2051具有指示写周期结束的数据查询功能。在写周期期间,对最后写入字节的试图读将令P1.7上写入数据的操作结束。一旦写周期完成,则全部输出端的真实数据有效,同时下一个周期开始。数据查询可在写周期被初始化的任一时刻开始。 4. RDY/BSY:字节编程的进度还可由“/ ”输出信号监控,编程期间,P3.1引脚在P3.2变“高”后被
14、拉低来指示“ ”。P3.1在编程结束时被再次拉高来指示“”。 5. 程序校验:如果加密位LB1和LB2没进行编程,则代码数据可通过校验数据线读回: (1) 使RST从L变到H,复位内部地址计数器000H。 (2) 对读代码数据加入正确的控制信号并在P1口引脚读输出数据。 (3) 使XTAL1引脚跳变一次来提升内部地址计数器。 (4) 在P1 口引脚读下一个代码数据字节。 (5) 重复步骤(3)和(4)直到读完整个阵列。 加密位不可直接进行校验。加密位的校验可通过对存储器的校验和写入状态来得到。 6. 片擦除:利用控制信号的正确组合并保持P3.2引脚10ms的低电平就可电擦除整个EEPROM阵列
15、(2K字节)和两个加密位。代码阵列在片擦除操作中写入全“1”并必须在任何非空存储器字节可被再编程之前执行。 7. 读特征字节:除P3.5和P3.7必须被拉成逻辑低电平外,读特征字节的过程和单元000H,001H以及002H的正常校验过程相同。返回值如下: (000H)=1EH指示产品由ATMEL制造 (001H)=21H指示89C2051单片机图10.7 AT89C2051的校验与编程波形10.4.2 编程接口 闪速阵列中的每一代码字节可进行写入并且整个阵列可用控制信号的正确组合进行擦除。写操作周期是自身定时的,一旦初始化它将自动定时到操作完成。表10-4 闪速编程方式 方式RSTP3.2/P
16、ROGP3.3P3.4P3.5P3.7写代码数据12VLHHH读代码数据HHLLHH写加密 位-112VHHHH位-212VHHLL片擦除12VHLLL读特征字节HHLLLL【例10-1】要求:P1口做输出口,接八个发光二极管,编写程序,使发光二极管循环点亮。一、硬件电路设计二、程序清单ORG OOOOHSTART:MOVA,#01H;使L1灯亮,其它不亮LOOP:MOV P1,A;从P1口输出到发光二极管MOV R1,#10H;延时1秒DEL1:MOV R2,#200DEL2:MOVR3,#126DEL3:DJNZ R3,DEL3DJNZR2,DEL2DJNZ R1,DEL1RL A;左移一位,下一个发光二极管亮AJMPLOOP;循环END