1 产品信息 1.1 产品资源 1.2 WS51F0030 管脚定义 封装类型: TSSOP20 2 WS51F0030 总体架构 2.1 8051 内核 2.1.1 简介 标准 8051 即 MCS-51 为 12 周期的 8051 CPU ,而 WS51F0030 系列芯片采用的是单周期 8051 CPU ,完全兼容 MCS-51 指令集。 2.1.2 寻址方式 8051 的内核寻址方式有:立即寻址、直接寻址、间接寻址、寄存器寻址、相对寻址、变址寻址和位寻址。 立即寻址 立即寻址是在指令操作数中直接给出参与运算的操作数,指令举例如下: MOV A, #60H (这条指令把 60H 直接送到累加器 A ) 直接寻址 直接寻址指令操作数给出的是参与运算操作数的地址。直接寻址方式只能用于特殊功能寄存器、内部数据区和位地址空间,而特殊功能寄存器和位地址空间只能用直接寻址方式访问。指令举例如下: ANL 50H , #91H (把 50H 单元中的数与 91H 相“与”,结果存放在 50H 单元中,其中 50H 为内部 RAM 的地址) 间接寻址 间接寻址采用 R0 或 R1 前添加” @ ”符号来表示。假设 R1 中的数据是 40H ,内部数据存储器 40H 单元的数据为 55H ,则指令为 MOV A , @R1 (把数据 55H 传送至累加器 A ) 寄存器寻址 寄存器寻址对选定的工作寄存器 R7-R0 、累加器 A 、通用寄存器 B 、地址寄存器和进位 C 中的数进行操作,其中寄存器 R7-R0 由指令码的低 3 位表示, ACC 、 B 、 DPTR 及进位 C 隐含在指令码中。因此,寄存器寻址也包含一种隐含寻址方式。工作寄存器工作区由状态寄存器 PSW 的 RS1 、 RS0 决定。指令操作数的寄存器均指当前工作区的寄存器。 INC R0 ( R0 中的数据 +1 写回 R0 ) 相对寻址 相对寻址是将程序计数器 PC 中的当前值与指令第二字节给出的数相加,其结果作为转移指令的 转移地址。转移地址也成为转移目的地址, PC 中的当前值成为基地址,指令第二字节给出的数成为偏移量。由于目的地址是相对于 PC 中的基地址而言,所以这种寻址方式成为相对寻址。偏移量为带符号的数,所能表示的范围为 +127--128 。这种寻址方式主要用于转移指令。 JC $+50H (表示若进位位 C 为 0 ,则程序计数器 PC 中的内容不改变,即不转移。若进位位 C 为 1 ,则以 PC 中的当前值及基地址,加上偏移量 50H 后得到的结果作为该转移指令的目的地址) 变址寻址 在变址寻址方式中,指令操作数制定一个存放变址基址的变址寄存器。变址寻址时,偏移量与变址基值相加,其结果作为操作数的地址。变址寄存器有程序计数器 PC 和地址寄存器 DPTR 。 MOVC A , @A+DPTR (表示累加器 A 为偏移量寄存器,其内容与地址寄存器 DPTR 中的内容相加,其结果作为操作数的地址,取出该单元中的数送入累加器 A 中) 位寻址 位寻址是指对一些可进行位操作的内部 RAM 和特殊功能寄存器进行位操作时的寻址方式。在进行位操作时,借助于进位位 C 作为位操作累加器,指令操作数直接给出该位的地址,然后根据操作码对该位进行位操作。 MOV C , 20H (将地址为 20H 的位操作寄存器值送入进位位 C 中) 2.1.3 寄存器描述 程序计数器 PC 程序计数器 PC 寄存器为 16 位,是专门用来控制指令执行顺序的寄存器,它没有寄存器地址。单片机上电或复位后, PC 值为 0 ,单片机从零地址开始执行程序。 累加器 ACC 累加器 ACC 是一个常用的专用寄存器,指令系统中采用 A 作为累加器的助记符,常用于存放算术或逻辑运算的操作数及运算结果。 通用寄存器 B B 在乘除法运算中需要和 ACC 配合使用。 MUL AB 指令把 ACC 和 B 中 8 位无符号数相乘,所得的 16 位乘积的低字节存放在 A 中,高字节存放在 B 中。 DIV AB 指令用 B 除以 A ,整数商存放在 A 中,余数存放在 B 中。寄存器 B 还可以用作通用暂存寄存器。 堆栈指针 SP 堆栈指针 SP 是一个 8 位专用寄存器。它指示出堆栈顶部在内部 RAM 块中的位置。系统复位后, SP 初始化位 07H ,使得堆栈事实上由 08H 单元开始,考虑 08H-1FH 单元分别属于工作寄存器组 1-3 ,若在程序设计中用到这些区,则 SP 改变为 80H 或更大的为宜。在程序调试中,经常出现堆栈溢出的情况,为了方便找到程序故障,设置了一个记录堆栈的寄存器 SPMAX , 可以通过 Debug 接口读出,地址 0x1A 。 数据指针 DPTR 数据指针 DPTR0/DPTR1 是两个 16 位专用寄存器,它们的高位字节寄存器用 DP0H/DP1H 表示,低位字节寄存器用 DP0L/DP1L 表示,通过 DPS(PSW.1) 可选择使用 DPTR0/DPTR1 。每个 DPTR 既可以作为一个 16 位寄存器来处理,也可以作为 2 个独立的 8 位寄存器 DP0H/DP1H 和 DP0L/DP1L 来处理。 状态寄存器 PSW 状态寄存器 PSW 是 CPU 的状态寄存器。在 CPU 做算术运算或者逻辑运算时,对应的 PSW 状态位会发生改变。 2.3 存储器分布 WS51F0030 系列芯片内含 256B 内部 RAM 、 1KB 外部 RAM 、特殊功能寄存器 (SFR) 、 128B EEPROM 、 2KB NVR 和 16KB Flash ROM ,存储器地址分配如下: l 低 128B 的内部 RAM (地址: 00H - 7FH )可直接寻址或间接寻址 l 高 128B 的内部 RAM (地址: 80H - FFH )只能间接寻址 l 1KB 的外部 RAM (地址: 0000H - 03FFH )可通过 MOVX 指令间接寻址,可映射到程序地址空间 8000H-83FFH ,也可直接作为程序空间 0000H-03FFH l 特殊功能寄存器 (SFR) (地址: 80H - FFH )可直接寻址 l 扩展特殊功能寄存器 (XSFR) (从 8000H 开始),通过 MOVX 指令寻址 l 128B EEPROM 用于存储数据,不需要擦除操作,直接改写即可 l 2KB NVR 包含 16 个扇区,主要用于系统配置数据 l 16KB Flash ROM (地址: 0000H-3FFFH ),通过 MOVC 指令可访问