AT89C52 中文资料 AT89C52 的中文资料 AT89C52 是美国 Atmel 公司生产的低电压 高性能 CMOS 8 位单片机, 片内含 8KB 的可反复檫写的程序存储器和 12B 的随机存取数据存储器 (RAM), 器件采用 Atmel 公司的高密度 非易失性存储技术生产, 兼容标准 MCS- 51 指令系统, 片内配置通用 8 位中央处理器 (CPU) 和 Flash 存储单元, 功能强大的 AT89C52 单片机可灵活应用于各种控制领域 AT89C52 单片机属于 AT89C51 单片机的增强型, 与 Intel 公司的 80C52 在引脚排列 硬件组成 工作特点和指令系统等方面兼容 其主要工作特性是 : 片内程序存储器内含 8KB 的 Flash 程序存储器, 可擦写寿命为 1000 次 ; 片内数据存储器内含 256 字节的 RAM; 具有 32 根可编程 I/O 口线 ; 具有 3 个可编程定时器 ; 中断系统是具有 8 个中断源 6 个中断矢量 2 个级优先权的中断结构 ; 串行口是具有一个全双工的可编程串行通信口 ; 具有一个数据指针 DPTR; 低功耗工作模式有空闲模式和掉电模式 ; 具有可编程的 3 级程序锁定位 ; AT89C52 工作电源电压为 5(1+0.2)V, 且典型值为 5V; AT89C52 最高工作频率为 24MHz 单片机正常工作时, 都需要有一个时钟电路和一个复位电路 本设计中选择了内部时钟方式和按键电平复位电路, 来构成单片机的最小电路 如图 3.1 所示 功能特性描述 AT89S52 是一种低功耗 高性能 CMOS8 位微控制器, 具有 8K 在系统可编程 Flash 存储器 使用 Atmel 公司高密度非易失性存储器技术制造, 与工业 80C51 产品指令和引脚完全兼容 片上 Flash 允许程序存储器在系统可编程, 亦适于常规编程器 在单芯片上, 拥有灵巧的 8 位 CPU 和在系统可编程 Flash, 使得 AT89S52 为众多嵌入式控制应用系统提供高灵活 超有效的解决方案 AT89S52 具有以下标准功能 : 8k 字节 Flash,256 字节 RAM,32 位 I/O 口线, 看门狗定时器,2 个数据指针, 三个 16 位定时器 / 计数器, 一个 6 向量 2 级中断结构, 全双工串行口, 片内晶振及时钟电路
另外,AT89S52 可降至 0Hz 静态逻辑操作, 支持 2 种软件可选择节电模式 空闲模式下,CPU 停止工作, 允许 RAM 定时器/ 计数器 串口 中断继续工作 掉电保护方式下,RAM 内容被保存, 振荡器被冻结, 单片机一切工作停止, 直到下一个中断或硬件复位为止 8 位微控制器 8K 字节在系统可编程 AT89C52 是 51 系列单片机的一个型号, 它是 ATMEL 公司生产的 AT89C52 是一个低电压, 高性能 CMOS 8 位单片机, 片内含 8k bytes 的可反复擦写的 Flash 只读程序存储器和 256 bytes 的随机存取数据存储器 (RAM), 器件采用 ATMEL 公司的高密度 非易失性存储技术生产, 兼容标准 M CS- 51 指令系统, 片内置通用 8 位中央处理器和 Flash 存储单元, 功能强大的 AT89C52 单片机可为您提供许多较复杂系统控制应用场合 AT89C52 有 40 个引脚,32 个外部双向输入 / 输出 (I/O) 端口, 同时内含 2 个外中断口,3 个 16 位可编程定时计数器,2 个全双工串行通信口,2 个读写口线,AT89C52 可以按照常规方法进行编程, 也可以在线编程 其将通用的微处理器和 Flash 存储器结合在一起, 特别是可反复擦写的 Flash 存储器可有效地降低开发成本 AT89C52 有 PDIP PQFP/TQFP 及 PLCC 等三种封装形式, 以适应不同产品的需求 主要功能特性 : 兼容 MCS51 指令系统 8k 可反复擦写 (>1000 次 )Flash ROM 32 个双向 I/O 口 256x8bit 内部 RAM 3 个 16 位可编程定时 / 计数器中断 时钟频率 0-24MHz 2 个串行中断 可编程 UART 串行通道 2 个外部中断源 共 6 个中断源 2 个读写中断口线 3 级加密位 低功耗空闲和掉电模式 软件设置睡眠和唤醒功能 AT89C52 各引脚功能及管脚电压概述 :AT89C52P 为 40 脚双列直插封装的 8 位通用微处理器, 采用工业标准的 C51 内核, 在内部功能及管脚排布上与通用的 8xc52 相同, 其主要用于会聚调整时的功能控制 功能包括对会聚主 IC 内部寄存器 数据 RAM 及外部接口等功能部件的初始化, 会聚调整控制, 会聚测试图控制, 红外遥控信号 IR 的接收解码及与主板 CPU 通信等 主要管脚有 :XTAL1(19 脚 ) 和 XTAL2(18 脚 ) 为振荡器输入输出端口, 外接 12MHz 晶振 RST/Vpd(9 脚 ) 为复位输入端口, 外接电阻电容组成的复位电路 VCC(40 脚 ) 和 VSS(20 脚 ) 为供电端口, 分别接 +5V 电源的正负端 P0~P3 为可编程通用 I/O 脚, 其功能用途由软件定义, 在本设计中,P0 端口 (32~39 脚 ) 被定义为 N1 功能控制端口, 分别与 N1 的相应功能管脚相连接,13 脚定义为 IR 输入端,10
脚和 11 脚定义为 I2C 总线控制端口, 分别连接 N1 的 SDAS(18 脚 ) 和 SCLS(19 脚 ) 端口,12 脚 27 脚及 28 脚定义为握手信号功能端口, 连接主板 CPU 的相应功能端, 用于当前制式的检测及会聚调整状态进入的控制功能 P0 口 :P0 口是一组 8 位漏极开路型双向 I/O 口, 也即地址 / 数据总线复用口 作为输出口用时, 每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路, 对端口 P0 写 1 时, 可作为高阻抗输入端用 在访问外部数据存储器或程序存储器时, 这组口线分时转换地址 ( 低 8 位 ) 和数据总线复用, 在访问期间激活内部上拉电阻 在 Flash 编程时,P0 口接收指令字节, 而在程序校验时, 输出指令字节, 校验时, 要求外接上拉电阻 P1 口 :P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动 ( 吸收或输出电流 )4 个 TTL 逻辑 门电路 对端口写 1, 通过内部的上拉电阻把端口拉到高电平, 此时可作输入口 作输入口使用时, 因为内部存在上拉电阻, 某个引脚被外部信号拉低时会输出一个电流 (IIL) 与 AT89C51 不同之处是,P1.0 和 P1.1 还可分别作为定时 / 计数器 2 的外部计数输入 (P1.0/T2) 和输入 (P1.1/T2EX), 参见表 1 Flash 编程和程序校验期间,P1 接收低 8 位地址 表.P1.0 和 P1.1 的第二功能 引脚号功能特性 P1.0 T2, 时钟输出 P1.1 T2EX( 定时 / 计数器 2) P2 口 :P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动 ( 吸收或输出电流 )4 个 TTL 逻辑门电路 对端口 P2 写 1, 通过内部的上拉电阻把端口拉到高电平, 此时可作输入口, 作输入口使用时, 因为内部存在
上拉电阻, 某个引脚被外部信号拉低时会输出一个电流 (IIL) 在访问外部程序存储器或 16 位地址的外部数据存储器 ( 例如执行 MOVX @DPTR 指令 ) 时,P2 口送出高 8 位地址数据 在访问 8 位地址的外部数据存储器 ( 如执行 MOVX @RI 指令 ) 时,P2 口输出 P2 锁存器的内容 Flash 编程或校验时,P2 亦接收高位地址和一些控制信号 P3 口 :P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口 P3 口输出缓冲级可驱动 ( 吸收或输出电流 )4 个 TTL 逻辑门电路 对 P3 口写入 1 时, 它们被内部上拉电阻拉高并可作为输入端口 此时, 被外部拉低的 P3 口将用上拉电阻输出电流 (IIL) P3 口除了作为一般的 I/O 口线外, 更重要的用途是它的第二功能 P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号 RST: 复位输入 当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位 ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE( 地址锁存允许 ) 输出脉冲用于锁存地址的低 8 位字节 一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号, 因此它可对外输出时钟或用于定时目的 要注意的是 : 每当访问外部数据存储器时将跳过一个 ALE 脉冲 对 Flash 存储器编程期间, 该引脚还用于输入编程脉冲 (PROG) 如有必要, 可通过对特殊功能寄存器 (SFR) 区中的 8EH 单元的 D0 位置位, 可禁止 ALE 操作 该位置位后, 只有一条 MOVX 和 MOVC 指令才能将 ALE 激活 此外, 该引脚会被微弱拉高, 单片机执行外部程序时, 应设置 ALE 禁止位无效 PSEN: 程序储存允许 (PSEN) 输出是外部程序存储器的读选通信号, 当 AT89C52 由外部程序存储器取指令 ( 或数据 ) 时, 每个机器周期两次 PSEN 有效, 即输出两个脉冲 在此期间, 当访问外部数据存储器, 将跳过两次 PSEN 信号 EA/VPP: 外部访问允许 欲使 CPU 仅访问外部程序存储器 ( 地址为 0000H FFFFH),EA 端必须保持低电平 ( 接地 ) 需注意的是: 如果加密位 LB1 被编程, 复位时内部会锁存 EA 端状态 如 EA 端为高电平 ( 接 Vcc 端 ),CPU 则执行内部程序存储器中的指令 Flash 存储器编程时, 该引脚加上 +12V 的编程允许电源 Vpp, 当然这必须是该器件是使用 12V 编程电压 Vpp
XTAL1: 振荡器反相放大器的及内部时钟发生器的输入端 XTAL2: 振荡器反相放大器的输出端 特殊功能寄存器 : 在 AT89C52 片内存储器中,80H-FFH 共 128 个单元为特殊功能寄存器 (SFE),SFR 的地址空间映象如表 2 所示 并非所有的地址都被定义, 从 80H FFH 共 128 个字节只有一部分被定义, 还有相当一部分没有定义 对没有定义的单元读写将是无效的, 读出的数值将不确定, 而写入的数据也将丢失 不应将数据 1 写入未定义的单元, 由于这些单元在将来的产品中可能赋予新的功能, 在这种情况下, 复位后这些单元数值总是 0 AT89C52 除了与 AT89C51 所有的定时 / 计数器 0 和定时 / 计数器 1 外, 还增加了一个定时 / 计数器 2 定时/ 计数器 2 的控 制和状态位位于 T2CON( 参见表 3)T2MOD( 参见表 4), 寄存器对 (RCAO2H RCAP2L) 是定时器 2 在 16 位捕获方式或 16 位自动重装载方式下的捕获 / 自动重装载寄存器 数据存储器 : AT89C52 有 256 个字节的内部 RAM,80H-FFH 高 128 个字节与特殊功能寄存器 (SFR) 地址是重叠的, 也就是高 128 字节的 RAM 和特殊功能寄存器的地址是相同的, 但物理上它们是分开的 当一条指令访问 7FH 以上的内部地址单元时, 指令中使用的寻址方式是不同的, 也即寻址方式决定是访问高 128 字节 RAM 还是访问特殊功能寄存器 如果指令是直接寻址方式则为访问特殊功能寄存器 例如, 下面的直接寻址指令访问特殊功能寄存器 0A0H( 即 P2 口 ) 地址单元 MOV 0A0H,#data 间接寻址指令访问高 128 字节 RAM, 例如, 下面的间接寻址指令中,R0 的内容为 0A0H, 则访问数据字节地址为 0A0H, 而不是 P2 口 (0A0H) MOV @R0,#data 堆栈操作也是间接寻址方式, 所以, 高 128 位数据 RAM 亦可作为堆栈区使用 定时器 0 和定时器 1: