2.2 STC8A8K64S4A12的增强型8051内核
2.2.1 STC8A8K64S4A12单片机的引脚及功能
STC8A8K64S4A12单片机是宏晶科技推出的新一代单时钟/机器周期(1T)8051单片机,一般不需要外部晶振和外部复位电路即可工作,具有高速、低功耗及超强抗干扰等特点,在相同的工作频率下,STC8系列单片机比传统的8051快约12倍。STC8A8K64S4A12单片机常见的封装形式有LQFP-64和DIP-40。STC8A8K64S4A12单片机的引脚图如图2-9所示。
与标准8051单片机有所不同或者改进的引脚描述如下。
1.复位引脚
STC8A8K64S4A12单片机内部集成MAX810专用复位电路,时钟频率在12 MHz以下时,复位脚可接1 kΩ电阻再接地,也可以使用普通8051的复位电路(参见图2-3)。
2.外接晶体引脚
STC8A8K64S4A12单片机是1时钟周期/机器周期(简称1T)的8051单片机,系统时钟兼容标准的8051单片机。系统时钟有3个时钟源可供选择:内部24 MHz高精度IRC、内部32 kHz的低速IRC、外部4~33 MHz晶振或外部时钟信号。用户可通过程序分别使能和关闭各个时钟源,内部提供时钟分频以达到降低功耗的目的。
利用ISP工具对STC8A8K64S4A12单片机下载用户程序时,可以在选项中设置选择使用外部晶体振荡器时钟或者使用内部R/C振荡器时钟。
3.输入/输出(I/O)及复用功能引脚
STC8A8K64S4A12单片机最多可以有59根I/O口线,这些I/O口线可设置成4种模式:准双向口/弱上拉(标准8051输出口模式)、推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)、开漏输出。复位后,在用户程序的开始部分,应首先根据需要设置单片机I/O口线的工作模式。每根I/O口线驱动能力均可达到20mA,但整个芯片最大不得超过90mA。许多I/O口线具有复用功能,各个I/O口的详细介绍请参阅第3章内容。
图2-9 STC8A8K64S4A12单片机的引脚图
a)LQFP-64封装引脚图
图2-9 STC8A8K64S4A12单片机的引脚图(续)
b)LIP-40封装引脚图
2.2.2 STC8A8K64S4A12单片机的增强型8051内核
标准8051的一个机器周期是12个时钟周期,STC8A8K64S4A12单片机是1时钟周期/机器周期(简称1T)的8051单片机,在同样的外部时钟频率下执行同样的代码,其指令执行速度要比标准8051单片机快约12倍。执行指令时序图如图2-10所示。标准8051单片机把1个振荡周期(也就是时钟周期)定义为1拍,1个节拍用1P表示,1拍是单片机执行指令可识别的最小时间单位。2拍定义为一个状态周期,1个状态周期用1S表示,分别称为S1~S6。1个状态周期的时间等于振荡周期的2倍。6个状态周期定义为1个机器周期,机器周期是为单片机完成1条指令而划分的可数的时间单位,由12个振荡周期构成,分别为S1P1、S1P2、…、S6P1和S6P2。完成1条指令的时间总是等于1个或几个机器周期。
图2-10 指令执行时序图
STC8A8K64S4A12单片机的机器周期由1个时钟周期构成,也就是说,一个时钟周期就是一个机器周期,这样当用户在较低的外部时钟频率下运行时,与标准8051内核相比,不仅降低了系统噪声和电源功耗,而且提高了处理能力。
STC8A8K64S4A12单片机的内部结构框图如图2-11所示。
除了执行指令速度提高以外,由图 2-11可以看出,与标准 8051单片机相比,STC8A8K64S4A12单片机在标准8051单片机的基础上增加了如下资源。
1.集成了程序Flash存储器
程序Flash存储器用于存放用户程序、数据和表格等信息。STC8A8K64S4A12单片机集成了64 KB的程序Flash存储器,地址为0000H~FFFFH,支持ISP/IAP,并且支持用户配置成EEPROM,大小可变,512字节单页擦除,擦写次数可达10万次以上,提高了使用的灵活性和方便性。由于STC8A8K64S4A12单片机已经集成了8051单片机可以寻址的最大程序空间,因此,该单片机没有提供访问外部程序存储器的总线,不能访问外部程序存储器。64 KB的程序空间对于一般的应用已经足够,不需要用户进行程序存储器扩展。STC8A8K64S4A12单片机集成的中断资源较多,因此,从0003H开始的中断向量也比标准8051单片机多。
图2-11 STC8A8K64S4A12单片机的内部结构框图
2.数据存储器
数据存储器也称为随机存取数据存储器,可用于存放程序执行的中间结果和过程数据。STC8A8K64S4A12单片机的数据存储器在物理和逻辑上都分为两个地址空间:内部256字节RAM(这部分和8052单片机相同)和内部8192字节的扩展RAM。
其中,内部RAM的高128字节的数据存储器与特殊功能寄存器(SFRs)地址重叠,实际使用时通过不同的寻址方式加以区分。
STC8A8K64S4A12单片机集成的8192字节扩展RAM如图2-12所示。访问内部扩展RAM的方法和传统8051单片机访问外部扩展RAM的方法相同,但是不影响P 0口(数据总线和低8位地址总线)、P2口(高8位地址总线)以及RD、WR和ALE等端口上的信号。
图2-12 STC8A8K64S4A12单片机集成的8192字节扩展RAM
在汇编语言中,内部扩展RAM可以通过以下MOVX指令访问:
在C语言中,可使用xdata/pdata声明存储类型即可,如:
其中,pdata即为xdata的低256字节,在C语言中定义变量为pdata类型后,编译器会自动将变量分配在XDATA的0000H~00FFH区域,并使用MOVX@Ri,A和MOVX A@Ri进行访问。xdata关键字更加常用。
单片机内部扩展RAM是否可以访问,由辅助寄存器AUXR中的EXTRAM位控制。AUXR1的各位定义如下:
其中,EXTRAM是扩展RAM访问控制位,EXTRAM=0时访问内部扩展RAM,当访问地址超出内部扩展RAM的地址时,系统会自动切换到外部扩展RAM。EXTRAM=1时访问外部扩展RAM,内部扩展RAM被禁用。
STC8A8K64S4A12单片机内部集成的8192字节扩展RAM对于一般应用都能满足要求,一般不再需要外部扩展RAM,这大大简化了应用系统的设计。如果确实需要外部扩展RAM,则可以使用总线进行扩展。STC8A8K64S4A12封装引脚数为40及其以上的单片机具有扩展64 KB外部数据存储器的能力。访问外部数据存储器期间,WR/RD/ALE信号要有效。STC8A8K64S4A12新增了一个控制外部64 KB字节数据总线速度的特殊功能寄存器BUS_SPEED。BUS_SPEED(总线速度控制寄存器)各位定义如下:
1)RW_S[1:0]:RD/WR控制线选择位。为00时P4.4为RD,P4.3为WR;为01时P3.7为RD,P3.6为WR;为10时P4.2为RD,P4.0为WR;为11时表示保留。
2)SPEED[1:0]:总线读写速度控制(读写数据时控制信号和数据信号的准备时间和保持时间)。00表示1个时钟;01表示2个时钟;10表示4个时钟;11表示8个时钟。
3)增加了I/O口数量。STC8A8K64S4A12单片机除了包含标准8051单片机的P0~P3口外,还扩展集成了P4~P7口。许多I/O口具有复用功能。
4)增加了定时/计数器数量。STC8A8K64S4A12单片机除了包含标准8051单片机的定时/计数器T0和T1外,还扩展集成了定时/计数器T2、T3和T4。
5)增加了异步串行通信接口数量。STC8A8K64S4A12单片机除了包含标准8051单片机的异步串行接口(简称串口,在STC8A8K64S4A12单片机中称为串口1)外,还扩展集成了串口2、串口3和串口4。
6)增加了SPI和I2C接口。
7)增加了可编程计数器阵列(PCA)模块。
8)增加了A/D转换器(ADC)模块。
除了上述模块以外,还增加了看门狗、内部复位逻辑、内部RC振荡器、掉电唤醒专用定时器等模块。
和标准8051单片机相比,STC8A8K64S4A12单片机集成了更多的外设资源。因此,特殊功能寄存器也较多。STC8A8K64S4A12单片机的特殊功能寄存器及其在单片机复位时的值(简称复位值)见表2-3和表2-4,详细的使用方法在后面的章节中介绍。
表2-3 STC8A8K64S4A12单片机的特殊功能寄存器及其在单片机复位时的值
(续)
(续)
(续)
表2-4为扩展特殊寄存器(扩展SFR),逻辑地址位于XDATA区域,访问前需要将P_SW2寄存器的最高位(EAXFR)置“1”,然后使用MOVX A,@DPTR和MOVX @DPTR,A指令进行访问。
表2-4 STC8A8K64S4A12单片机的扩展特殊功能寄存器及其在单片机复位时的值
(续)
(续)
(续)
注:“x”表示该位的值不确定。
对于新增加的特殊功能寄存器,需要进行声明然后才能使用。例如:使用串口2控制寄存器S2CON前,在汇编语言程序中,使用S2CON DATA 9AH或者S2CON EQU 9AH进行定义。
在C语言中,可以使用 sfr S2CON = 0x9a;进行声明。
为了便于使用,本书将所有的特殊功能寄存器的汇编语言格式定义存放在文件STC8. INC中,将对应C语言格式的定义存放在文件stc8. h中,读者可以从本书的课程网站(http://course. sdu. edu. cn/mcu. html)中下载使用。