RAM。
定时/计数器(Timer/Counter):
51系列的CPU有2个定时/计数器,而52系列CPU则有3个定时/计数器,每个定时/计数器又有多种模式可供选择。 串行接口(Serial Port):
8051可通过此接口与外部的计算机等设备连线交换信息,也可以通过此接口进行I/O的扩充。
并行输入/出端口(Parelled I/O):
不论是8051或8052单片机都有4个输入/出端口,总共有32个输入/出,而且每个点都可以单独定义成输入或输出。 控制总线(Bus Control):
当程序的空间超出MSC—51系列内存程序空间的限制时,会通过本单元的控制线路向外部送出地址线信号和控制信号,同时当程序执行MOVX @DPTR,A指令时,代表对外部数据内存做写入的运行,此时也要靠本单元送出必要的控制信号,才能达成外部READ与WRITE的运行请求。
8051运算处理单元(Core):
这是整个单片机的控制处理核心,它读取程序码,经过计算及处理后,将结果送到各个寄存器或输入/输出端口上,并且接受内部和外部的中断信号,然后执行特定的中断服务程序。只要加入电源并且石英晶体开始运行后,本单元就一直不停地工作着,通常我们所谓的死机是指本单元跳入一个未知没有出口的循环中执行,而不是指CPU停止一切的运行,不再执行任何程序。 累加器(Accumulator):
累加器是众多寄存器中最重要的一个寄存器,通常以简写Acc代表累加器,8051的指令中有许多指令和Acc寄存器有关,也有多个指令非通过Acc不可,基本上,8051的指令中赋予Acc 累加器的权限最大。Intel公司建议程序的执行尽量以Acc为主。 B寄存器(B Register):
B寄存器是一个一般用途的工作寄存器,当8051使用乘除指令时,则一定要通过B寄存器来做运算。
中断优先顺序控制寄存器(IPC,Interrupt Priority Control):
这个寄存器中存放中断时的优先顺序表,若对应的位设成1时,代表中断有较高的中断优先权。
允许中断控制寄存器(IEC,Interrupt Enable Control):
此寄存器内含系统允许中断的中断源设置值,8051共有5个中断可供选择,8052则有6个中断源,IEC寄存器内另有一个位简称EA位,若EA=0时就禁止系统所有的中断要求。
6
串行输出入缓冲寄存器(SBUF,Serial Buffer):
所有待送出或刚进入的串行数据值都存放在此寄存器中,8051的串行通信是非常简单的,只要一设置完通信协议后,再执行一个MOVSBUF,A指令,就可立即将并行数据值转化成串行数据送到外部。
串行通信控制寄存器 (SCON,Serial ControL或称UART):
此寄存器主要在设置串行通信的模式,当串行数据已经送完或数据已收妥时,会有对应的位被设置成1,这些位也可以当成中断要求信号,请求CPU执行特定的串行中断服务程序。
定时/计数控制寄存器(TCON,Timer/Counter Control):
这个寄存器可以控制定时/计数器的打开或关闭,若一经打开且计数到溢位时,TCON上亦有对应的位被设成1,CPU必须针对此位的状态,决定是否重新设置定时/计数值。 堆栈指标寄存器(SP,Stack Pointer):
8051利用SP指引最近一次存入堆栈内的地址,每当我们在程序中调用其他子程序时,原程序的返回地址就会自动存入内部DATA MEMORY组成的堆栈(Stack)中,而当子程序执行到RET指令时,CPU会自动由堆栈中取回原先存入的返回地址,继续执行原程序。每当CPU将8位值存入堆栈时,我们称之为PUSH(推入),这时SP值会增加1,反之堆栈中取回8位值时,则称之为POP(提回),此时SP值会减少1。
在写8051单片机的控制程序时,在程序起始状态阶段一定要设置SP值,以便程序有足够的堆栈空间,也可以利用软件程序随时机动调整的堆栈指标SP的值。 特殊功能寄存器区(SFR,Special Function Register)
8051单片机内部将多个寄存器统称成SFR,代表其特定的功能,甚至Port0、Port1、Port3也都是属SFR 的成员之一,在这些SFR 中有部分的寄存器可以进行位寻址,表 4.1是这些SFR 寄存器的整理,其中加(*)记号的寄存器可进行位寻址。
表3.1 可进行位寻址的SFR 寄存器
SFR 寄存器 算术运算寄存器 指标类寄存器 并行输入/出端口 中断控制寄存器 定时/计数寄存器 串行通信寄存器
部分可进行位寻址的寄存器 Acc(*)、B(*)、PSW(*) SP、DPL、DPH
P0(*)、P1(*)、P2(*)、P3(*) IP(*)、IE(*)
TMOD、TCON(*)、TL0、TH0、TL1、TH1 SCON(*)、SBUF
3.2.2 AT89S51单片机简介
AT89S5l是新型高档单片机。 它的主要特性是:
7
片内含有 32 KB的 Flash程序存储器,擦写周期为 1000次; 片内数据存储器内含512字节的RAM;
具有可编程32线I/O口(P0,P1,P2和P3口); 具有3个可编程定时器T0,T1和T2;
中断系统是具有8个中断源、6个中断矢量、2级中断优先权的中断结构; 具有一个全双工 UART串行口;
低功耗工作方式为空闲模式和掉电模式; 具有双数据指针DPTR0和DPTR1; 具有3级程序锁定位; 具有硬件看门狗定时器WDT;
AT89S51工作电源为4.0~5.5V(AT89LV51RC为2.7~5.5V); AT89S51最高工作频率为33MHZ(AT89LV51RC为12MHZ); 具有断电标志POF.
3.2.3 AT89S5l与51系列单片机相比具有如下特点
① 程序存储器由 8 KB增加到32 KB;
② 片内数据存储器由256宇节增加到512字节; ③ 数据指针由1个增加到2个;
④ 增加了看门狗定时器,CPU在执行程序过程中,由于瞬时的干扰使程序陷入死循环状态,WDT(Watchdog Timer)是使CPU摆脱这种困境而自动恢复的一种方法;
⑤ 退出掉电方式由单纯硬件复位方式增加到硬件复位和中断两种方式; ⑥ 新增加了断电标志POF.
8
3.2.4 89S51的内部框图
外时钟源振荡器和时钟电路程序存储器(4KB)数据存储器(128字节)外部事件计数两个16位定时器/计数器CPU中断控制总线扩展控制器并行可编程I/O口可编程串行口
图3.2.3 89S51的内部框图
引脚排列及功能:
AT89S51有3种封装形式:PDIP.PLCC和TQFP.PDIP封装的引脚排列如图所示。
S2SW_PBS1SW_PBP1.6P1.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.71234567813121514VCC31X1X2191891716P10P11P12P13P14P15P16P17INT1INT0T1T0EA/VPC130 pFX1GNDC330 pFCRYSTAL12MX2VCCS3SW_PB+C1P00P01P02P03P04P05P06P07AT89S51P20P21P22P23P24P25P26P2739383736353433322122232425262728D0D1D2D3D4D5D6D7A8A9A10A11A12A13A14A15X1X2RESETRDWR10 ?FRXDTXDALE/PPSEN10113029R110 k?GND 图3.2.4 单片机电路板
①I/O口线
9
P0口——8位、漏极开路的双向 1/O口。
当使用片外存储器及外扩 I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码宇节;在程序校验时,P0口可输出指令字节(这时需要加外部上拉电阻)。
P0口也可作通用I/O口使用.但需加上拉电阻.变为准双向口。当作为普通输入时,应将 输出锁存器置1. PO口可驱动8个 TTL负载. P1口——8位、准双向I/O口,具有内部上拉电阻。
P1口是为用户准备的 1/O双向口。在编程和校验时,可用做输入低8位地址。用做输入时,应先将输出锁存器置1. P1口可驱动4个TTL负载。
表4.2 P1.0 P1.1替代功能
引 脚 P1.0
替代功能 T2
说 明
定时器2的外部事件输入端; 可编脉冲输出端
定时器 2的捕捉/重装触发器
P1.1
P2口——8位、准双向 1/O口.具有内部上位电阻.
当使用片外存储器或外扩1/O口时.P2口输出高8位地址。在编程/校验时.P2口可接收高字节地址和某些控制信号。
T2EX
输入端;
定时器2的计数方向控制端
P2口也可作普通I/O口使用。用做输入时,应先将输出锁存器置1. P2口可驱动4个TTL负载。
P3口——8位、准双向 1/O口,具有内部上拉电阻。
P3口可作为普通1/O口。用做输入时,应先将输出锁存器置 1.在编程/校验时.P3口接收某些控制信号。它可驱动4个TTL负载。
P3口还提供各种替代功能。
表3.3 P3口替代功能
P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7
10
RXD(串行输入口) TXD(串行输出口)
——
INT0(外部中断0)
——
INT1(外部中断1) T0(记时器0外部输入) T1(记时器1外部输入)
——
WR(外部数据存储器写选通)
——
RD(外部数据存储器读选通)