摘要 MCS51单片机是目前国内实用最广泛的一种单片机型,全球各单片机生产厂商在MCS51内核基础上,派生了大量的51内核系列单片机,极大地丰富了MCS51的种群。其中,STC公司推出了了STC89系列单片机,增加了大量的新功能,提高了51的性能,是MCS51家族中的佼佼者。文章主要介绍了该单片机种与MCS51的不同之处,并根据笔者的实践,提出了一些需要注意的地方。
关键词 MCS51 单片机 ISP IAP
引言
随着电子技术的迅速发展,单片机技术的出现给现代工业测控领域带来了一次新的技术革命。目前,单片机以其高可靠性、高性能价格比,在工业控制系统、数据采集系统、智能化仪器仪表、办公自动化等诸多领域得到极为广泛的应用,并已走入家庭,洗衣机、空调等,到处都可见到单片机的踪影。
在单片机家族的众多成员中,MCS51系列单片机以其优越的性能、成熟的技术及高可靠性和高性能价格比,迅速占领了工业测控和自动化工程应用的主要市场,成为国内单片机应用领域中的主流。世界各大单片机厂商都在MCS51上投入了大量的资金和人力,围绕51内核,衍生出许多品种,增强51单片机的各种功能。MCS51家族是目前在单片机领域发展最快的一个品种。
这里要向大家推荐的是新近由STC公司推出的高性价比的STC89系列单片机。
STC89系列单片机的性能
STC89系列单片机是MCS-51系列单片机的派生产品。它们在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。下表是STC89系列单片机资源一览表。
型 号 |
最高时钟
频率Hz |
Flash
存储器 |
RAM |
串口UART |
中断源 |
优先级 |
数据指针 |
降低EMI |
低压复位 |
看门狗 |
双倍速 |
P4口 |
SPI |
ISP |
IAP |
A/D |
5V |
3V |
STC89C516 RD |
40M |
|
64K+8K |
1KB |
1ch+ |
8 |
4 |
2 |
ü |
ü |
ü |
ü |
|
|
ü |
ü |
|
STC89LV516 RD |
|
33M |
64K+8K |
1KB |
1ch+ |
8 |
4 |
2 |
ü |
ü |
ü |
ü |
|
|
ü |
ü |
|
STC89C8 RD |
40M |
|
64K+8K |
1KB |
1ch+ |
8 |
4 |
2 |
ü |
ü |
ü |
ü |
|
|
ü |
ü |
|
STC89LV8 RD |
|
33M |
64K+8K |
1KB |
1ch+ |
8 |
4 |
2 |
ü |
ü |
ü |
ü |
|
|
ü |
ü |
|
STC89C8 RD2 |
40M |
|
64K+8K |
1KB |
1ch+ |
10 |
4 |
2 |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
|
STC89LV58 RD2 |
|
33M |
64K+8K |
1KB |
1ch+ |
10 |
4 |
2 |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
|
STC89C54 RD2 |
40M |
|
64K+8K |
1KB |
1ch+ |
10 |
4 |
2 |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
|
STC89LV54 RD2 |
|
33M |
64K+8K |
1KB |
1ch+ |
10 |
4 |
2 |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
|
STC89C52 RD2 |
40M |
|
64K+8K |
1KB |
1ch+ |
10 |
4 |
2 |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
|
STC89LV52 RD2 |
|
33M |
64K+8K |
1KB |
1ch+ |
10 |
4 |
2 |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
ü |
|
STC89C51 |
40M |
|
64K+8K |
128 |
1ch |
8 |
2 |
1 |
ü |
|
|
|
|
|
|
|
|
STC89C516RD |
2.4-3.6V,45/90M |
64K+8K |
512 |
1ch+ |
8 |
4 |
2 |
ü |
|
ü |
ü |
|
|
ü |
|
ü |
主要特性:
u 80C51核心处理器单元;
u 3V/5V工作电压,操作频率0~33MHz(STC89LE516AD最高可达90MHz);5V工作电压,操作频率0~40MHz;
u 大容量内部数据RAM:1K字节RAM;
u 64/32/16/8kB片内Flash程序存储器,具有在应用可编程(IAP) ,在系统可编程(ISP),可实现远程软件升级,无需编程器;
u 支持12时钟(默认)或6时钟模式;
u 双DPTR数据指针;
u SPI(串行外围接口)和增强型UART ;
u PCA(可编程计数器阵列),具有PWM的捕获/比较功能;
u 4个8位I/O口,含3个高电流P1口,可直接驱动LED;
u 3个16位定时器/计数器;
u 可编程看门狗定时器(WDT);
u 低EMI方式(ALE禁止);
u 兼容TTL和COMS逻辑电平;
u 掉电检测和低功耗模式等。
下面主要介绍STC89系列单片机有特色之处及需要注意的地方。
一、 1k bit片内RAM(数据存储器)
普通8051系列单片及片内RAM只有128(8051)或256(8052)字节,
1、低128字节(地址:00H~7FH),可直接或间接寻址;
2、高128字节(地址:80H~FFH),只可间接寻址;
STC89系列单片机另外增加了768字节的片内扩展RAM,以解决众多技术人员在编程时的RAM资源严重缺乏的问题。
768字节的片内扩展RAM(地址:000H~2FFH)与外部扩展RAM地址重叠,单片机可通过软件设置AUXR.1,决定是否使用片内扩展RAM,以防止可能的与外部扩展RAM的冲突,默认为使用片内扩展RAM。
片内扩展RAM的访问采用间接寻址,可通过
①、MOVX A,@DPTR 或 MOVX @DPTR ,A 指令访问片内扩展RAM(00H~2FFH,共768字节);
②、MOVX A,@Ri 或 MOVX @Ri,A 指令访问片内扩展RAM(00H~FFH,共256字节)。
当DPTR≥300H时,系统访问外部扩展RAM。
注意:在使用第二种指令时,特别要注意是使用MOV还是MOVX,MOV访问的是片内RAM,MOVX访问的是片内扩展RAM,刚刚接触此类单片机的技术人员最容易在这里犯错误。
二、 64/32/16/8K片内Flash(程序存储器)与ISP功能
STC89系列单片机按芯片型号分别有64/32/16/8K片内Flash,分为2个Flash存储块:Block0和Block1。2个Flash存储块在物理上Block0在前,Block1在后。通过REMAP功能可以将Flash块重定位。下图显示的是STC89C58的程序存储器结构
使用过SST89系列单片机的用户要注意与STC89区别:
①、Block1大小不同;
②、Block扇区大小不同;
③、指令及SFR的不同。
STC89有2个配置位SC0,SC1控制上电复位/外部复位后程序是从Block0还是Block1启动。
①对于STC89C58,SC0,SC1同时起作用:
SC1,SC0=0,0 程序是从Block0启动;
SC1,SC0=1,1 程序是从Block1启动,这时Block1物理上在后8K(E000H~FFFFH),逻辑上又影象到前8K(0000H~1FFFH),Block0前8K对于PC指针不可见。
②对于STC89C16,只有SC0起作用:
SC0=0 程序是从Block0启动;
SC0=1 程序是从Block1启动,这时Block1逻辑上影象到前8K(0000H~1FFFH),将Block0前8K单元覆盖。
型 号 |
Block0地址空间 |
Block1前4k地址 |
Block1后4k地址 |
STC89C52RD2/89LV52RD2 |
0000 - 1FFFH |
E000 - EFFFH |
F000 - FFFFH |
STC89C54RD2/89LV54RD2 |
0000 - 3FFFH |
E000 - EFFFH |
F000 - FFFFH |
STC89C58RD2/89LV58RD2 |
0000 – 7FFFH |
E000 - EFFFH |
F000 - FFFFH |
STC89C58RD/89LV58RD |
0000 – 7FFFH |
E000 - EFFFH |
F000 - FFFFH |
STC89C516RD/89LV516RD |
0000 - FFFFH |
0000 – 0FFFH |
1000 – 1FFFH |
刚刚接触STC89系列单片机的技术人员可能对其REMAP功能不理解,通过了解ISP就会明白REMAP的作用。
ISP主要应用于在线(或远程)升级,通过执行ISP引导码改写用户程序,无须编程器,无须亲临现场。STC89系列单片机在出厂时,片内已经烧录有ISP引导码,占用Block1的程序空间前2K字节,并设置为从Block1启动。启动时,首先执行ISP引导码,确认是程序下载,还是正常启动。无论是程序下载还是正常启动,ISP引导码最后总是将REMAP取消,恢复Block0在前8K的地址空间,进而执行Block0中的用户程序,即用户程序总是放在Block0的00H开始的单元,除非用户自行修改了ISP引导码。
三、STC89系列单片机IAP技术
IAP功能就是在应用可编程,利用该功能,就可将本不具有EEPROM的单片机具有相当于EEPROM的功能,而且存储空间远大于EEPROM。IAP不能对自身所在的Block编程,即当程序运行在Block0时,可编程的是Block1;当程序运行在Block1时,可编程的是Block0。根据这个特点,通过REMAP功能可设置在应用编程的Flash的大小。对STV89C58来说,
①、当程序运行于Block0时,可拥有6~8k的Flash EEPROM(一般使用);
②、当程序运行于Block1时,可拥有近32k的Flash EEPROM(需要技巧或更改ISP引导码);
技巧:对于想使用32K的Flash EEPROM,又不想更改ISP引导码的用户,可以这样设计程序,在用户程序开始处,通过REMAP功能将Block1影象到前8K,并将影象指令之后的程序烧录在Block1中即可。程序流程定位:Block1(ISP引导码) à Block0(用户程序REMAP部分)à Block1(用户程序)
要使用IAP功能,必须启用IAP功能。STC89的超级Flash配置存储器SFCF的bit6位用来开关IAP功能,0关闭,1开启,程序启动时默认关闭。
IAP功能所涉及到的SFR有:
SFCF DATA 0B1H ;超级Flash配置存储器
SFCM DATA 0B2H ;超级Flash命令存储器
SFAL DATA 0B3H ;超级Flash地址低字节存储器
SFAH DATA 0B4H ;超级Flash地址高字节存储器
SFDT DATA 0B5H ;超级Flash数据存储器
SFST DATA 0B6H ;超级Flash状态存储器
(一)、IAP的主要功能有:
(1)片擦除。命令格式:
ORL SFCF,#040H ;启动IAP
MOV SFDT,#55H
MOV SFCM,#01H ;写入命令字
;查询SFST.2,等待芯片擦除结束,
(2)块擦除。命令格式:
ORL SFCF,#040H ;启动IAP
MOV SFAH,#0F0H/#00H ;擦队block0/block1
MOV SFDT,#55H
MOV SFCM,#0DH ;写放命令字
;查询SFST.2,等待芯片擦除结束,
(3)扇区擦除。命令格式:
ORL SFCF,#040H ;启动IAP
MOV SFAH,区段地址高字节
MOV SFAL,区段地址低字节
MOV SFCM,#0BH ;写入命令字
;查询SFST.2,等待芯片擦除结束,
(4)字节编程。命令格式:
ORL SFCF,#040H ;启动IAP
MOV SFAH,要编程地址高字节
MOV SFAL,要编程地址低字节
MOV SFDT,要编程的数据
MOV SFCM,#0EH ;写放命令字
;查询SFST.2,等待芯片擦除结束,
(5)字节校验。命令格式:
ORL SFCF,#040H ;启动IAP
MOV SFAH,要校验数据的地址高字节
MOV SFAH,要校验数据的地址低字节
MOV SFCM,#0CH ;写放命令字
NOP
MOV A,SFDT ;A保存规定单元地址读出的内容
(二)、使用IAP需要注意:
1、启动IAP请使用ORL指令,尽量不要使用MOV指令,否则(尤其对初次使用本单片机者)及易造成系统软件复位、程序存储器REMAP等;
2、IAP编程的数据读出,请使用字节校验指令,避免使用MOVC指令。MOVC指令在IAP中较数场合(尤其是有地址重叠的地方)不能读出正确的数值;
3、IAP编程不要忘记打开IAP功能(数据读出时也需要)。
(三)、IAP功能的用途:
①、通过IAP功能可以不需编程器就可做单片机实验。这对初次学习单片机的人们,尤其对学校单片机的教学带来极大的方便,是一种最低成本的单片机开发手段。
②、可以对产品的软件进行升级。不需外加监控芯片,只是通过串行口便可将PC机内的产品升级软件下载到产品中去,而实现产品软件升级换代。在自己的实验室便可通过Modem对远方的产品进行软件升级。这将是以后电子产品的必然趋势。
③、还可以在线对产品参数进行修改。可实现在线对现场历史数据的存储、曲线参数校正等功能。适用于一些需经常改变数据的应用产品(如计费器、门禁系统及需要升级的产品等)及需远距离改变设备参数的产品(遥控设备等)。
四、 可编程计数器阵列
8051单片机片内有2个定时器/计数器,8052则有三个,满足一般拥护的需求,但在某些特殊场合却略显资源紧张,STC89额外提供了一个可以无须CPU参与、独立工作的可编程计数器阵列(PCA)。
STC89的可编程计数器阵列(PCA)是一个16比特的定时器,拥有5个16比特捕捉/比较模块,每个模块均可有以下几种模式:
n 上升沿和/或下降沿捕捉;
n 软件定时器;
n 高速输出;
n 看门狗定时器(仅模块4);
n 脉宽调制器(PWM)
可编程计数器阵列的时钟可如下选择:
可编程计数器阵列在很少的CPU开销下比普通的定时器/计数器提供了更多的定时功能。它的优点包括减少软件开销及提高精度。
PCA可提供除波特率发生器外,T0,T1,T2定时器所能提供的功能。
PCA捕捉功能可以同时捕捉输入脉冲的上升沿及下降沿,非常适合用来检测脉冲宽度和频率;在软件解码PT2262时,具有相当好的表现,省却了大量的CPU管理时间。
由于具有上升沿捕捉功能,PCA还可以用作上升沿的中断,以弥补8052只有下降沿中断的缺陷,在8052中有时你不得不另加一个反相器以符合MCS51的要求。
PWM功能可用于控制电动机调速等。
五、 复位电路
STC89在8051基础上增加了多个复位功能,以提高单片机的抗干扰能力。
1、上电复位:基本同8051相似,但同时增加了一项功能,就是软件可编程在复位时从REST脚输出32个复位脉冲,去复位外部设备,保证外部设备的同步,省却外部复位电路;
2、软件复位:8051没有软件复位功能,技术人员一般需要自行设置较多SFR值,模拟软件复位,STC89只需改变一个位状态即可完成软件复位,减少软件开销。
3、欠压检测与复位
8051没有欠压检测功能,在遭遇欠压时,单片机无法正常工作,端口状态不定,极易造成外围设备的损坏。STC89的欠压检测与复位可在一定程度上避免此类事件发生。STC89在检测到欠压条件时产生一个中断通知或产生一个复位信号,复位单片机。欠压中断通知是一个很实用的功能,由于掉电通知到掉电还有以段时间,它可以让程序在即将掉电时,及时保存那些必要的参数,避免以写不必要的损失。
结束语
STC89的优点不是三言两语就能说的清楚的,更多的信息可参考STC89数据手册。
STC89在8051基础上增加了许多功能,极大地提高了MCS51家族的性能。STC89由美国设计,在台湾生产,是目前在相同性能条件下价格最优的一个品种。STC89的高性能、低价格,必定能为使用MCS51家族产品的技术人员带来相当的技术和经济的效益。当然,对于一个新的品种,它的新特性、新功能和可靠性还有待于我们去实践、去发掘。
参考:1、STC89C51 DATASHEET;
2、STC89系列单片机使用指南;