61阅读

中文搜索引擎指南-Google通配符的意义与用法--中文搜索引擎指南网

发布时间:2017-09-18 所属栏目:信息与通信

一 : Google通配符的意义与用法--中文搜索引擎指南网

Google一次检索限制在10个单词以内,检索词超过10个将被忽略,此规则不把通配符*包括在内,据此可以检索超过10个单词的特定语句。如检索"There’s a lady who’s sure all that glitters is gold and she’s buying a stairway to heaven",google会在“gold”之后截止超量单词,按常规检索方法,一般用"glitters is gold"或"buying a stairway"进行检索,如得不到预想结果,可增加检索词,如用:"buying a stairway to heaven" 替代"buying a stairway"再次检索,如此需多次输入并进行大量的结果甄别,费时费力,而使用通配符就简捷得多,用"* * lady * sure * * glitters * gold * she’s buying * stairway * heaven"搜索,其结果在首页第一项便满足检索需求。

查找派生词组和了解主题信息,使用通配符也极为方便。如:"take * of"可以查到诸如Take Charge of、Take Control of、take advantage of、Take control of、take command of等等以Take...of组成的词组;而

"* About Search Engines"的搜索结果要比"Search Engines"更具体、贴切和实用。

通配符“*”可以在intitle:、site:等搜索语法中使用,如:intitle:"the* of new york"、site:us "* * search engine * *" 等等。

通配符“*”也支持也中文搜索,一个“*”代替一个汉字,但在实际使用中其功能远不及英文搜索。

二 : STC89C52RC_中文指南_

STC89C51RC / RD+ 系列单片机中文指南                         ---无法解密

---低功耗,超低价                        ---高速,高可靠

---强抗静电,强抗干扰

STC89C51RC,

STC89C52RC,

STC89C53RC,STC89LE51RCSTC89LE52RCSTC89LE53RC

STC89C54RD+,STC89LE54RD+

STC89C58RD+,STC89LE58RD+

STC89C516RD+,STC89LE516RD+STC89LE516AD,STC89LE58AD

STC89LE54AD,STC89LE52AD

STC12C2052,STC12C4052

STC12C2052AD,STC12C4052AD

国内技术支援:宏晶科技(深圳)

www.MCU-Memory.com       support@mcu-memory.comUpdate date: 2005-12-24

stc89c52中文资料 STC89C52RC_中文指南_

:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技

选择STC89C52RC系列   STC89C58RD+系列单片机的理由:

STC 89系列单片机,高速、高可靠、在线编程

提升的是性能,降低的是成本

★加密性强,无法解密

★超强抗干扰:

1、高抗静电(ESD保护)2、轻松过2KV/4KV快速脉冲干扰(EFT测试)

3、宽电压,不怕电源抖动4、宽温度范围,-40℃~85℃

5、I/O口经过特殊处理6、单片机内部的电源供电系统经过特殊处理

7、单片机内部的时钟电路经过特殊处理8、单片机内部的复位电路经过特殊处理9、单片机内部的看门狗电路经过特殊处理 ★三大降低单片机时钟对外部电磁辐射的措施:     —— 出口欧美的有力保证

1、禁止ALE输出;2、如选6时钟/机器周期,外部时钟频率可降一半;3、单片机时钟振荡器增益可设为1/2gain。(www.61k.com) ★超低功耗:

1、掉电模式:       典型功耗   <0.1μA 2、空闲模式:     典型功耗   2mA

3、正常工作模式: 典型功耗    4mA - 7mA 4、掉电模式可由外部中断唤醒,适用于电池

供电系统,如水表、气表、便携设备等。★在系统可编程,无需编程器,可远程升级★可送STC-ISP下载编程器,1万片/人/天★可供应内部集成MAX810专用复位电路的单片机,

只有D版本才有内部集成专用复位电路,原复位

电路可以保留,也可以不用,不用时RESET脚直

接短到地关于单片机说明:<管脚与流行的8051兼容>    大客户超低价

DIP-40,PLCC-44,PQFP-44封装(RC/RD+系列PLCC、PQFP有P4口地址E8H,AD系列P4口为C0H)

RC/RD+系列PLCC、PQFP多两个外部中断P4.2/INT3,P4.3/INT2。 P4口均可位寻址5V: 5.5V~3.8V乃至3.4V(24M以下);3V: 3.6V~2.4V乃至2.0V,仅针对RC/RD+系列

时钟/机器周期”和“12时钟/机器周期”可在ISP编程时反复设置,新的设置冷启动后才生效另 STC89LE516AD、58AD、54AD、52AD、51AD系列单片机,带高速A/D转换

T2/P1.0 VCC     P0.0/AD0

3                 P0.1/AD14                  P0.2/AD25                 P0.3/AD36                P0.4/AD47                 P0.5/AD58          P0.6/AD69           P0.7/AD7 10          EA11          12           PSEN P2.7/A1514         P2.6/A1415            P2.5/A13P2.4/A12 P2.3/A1118          P2.2/A1020             P2.0/A8

1.4

1.31.21.1/T2EX1.0/T24.2/INT3DD0.0/AD00.1/AD10.2/AD20.3/AD31.4

1.31.21.1/T2EX1.0/T24.2/INT3VDDP0.0/AD00.1/AD10.2/AD20.3/AD3

DIP-40

新客户请直接联系深圳以获得更好的技术支持和服务

stc89c52中文资料 STC89C52RC_中文指南_

欢迎海内外厂家前来洽谈合作

南京办:Tel:025-86893767    86893566     Fax:025-86893757 传真至深圳申请STC单片广州办:Tel:020-38851405   38850557     Fax:020-38850581宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)2

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

领导业界革命    覆盖市场需求

STC 12C5410AD系列 1T 8051 单片机

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

1个时钟/机器周期,高速、高可靠,4路PWM/PCA,8路高速A/D转换

宏晶科技是新一代增强型8051单片机标准的制定者,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆盖全国。(www.61k.com)在保

证质量的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。目前,全力推出“1个时钟/机器周期”的单片机,全面提升8051单片机性能。欢迎海内外厂家前来洽谈合作!新客户请直接联系深圳,以获得更好的技术支持与服务。

●高速:1个时钟/机器周期,RISC型8051内核,速度比普通8051快12倍●宽电压:5.5~3.4V,2.0~3.8V(STC12LE5410AD系列)●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)●工作频率:0~35MHz,相当于普通8051:0~420MHz      ---实际可到48MHz,相当于8051: 0~576MHz

●时钟:外部晶体或内部RC振荡器可选,在ISP编程时设置

●12K/10K/8K/6K/4K/2K字节片内Flash程序存储器,擦写次数10万次以上●512字节片内RAM数据存储器●芯片内E2PROM功能

●ISP / IAP,在系统可编程/在应用可编程

●10位ADC,8通道,STC12C2052AD系列为8位ADC ●4通道捕获/比较单元(PWM/PCA/CCU),STC12C2052AD系列为2通道

---也可用来再实现4个定时器或4个外部中断(支持上升沿/下降沿中断)●2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器●硬件看门狗(WDT)●高速SPI通信端口

●全双工异步串行口(UART),兼容普通8051的串口

●先进的RISC精简指令集结构,兼容普通8051指令集

4组8个8位通用工作寄存器(共32个通用寄存器)●通用I/O口(27/23个),复位后为: 准双向口/弱上拉(普通8051传统I/O口)     可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏由:

★加密性强,无法解密

★超强抗干扰:

1、高抗静电(ESD保护)

2、轻松过4KV快速脉冲干扰(EFT测试)3、宽电压,不怕电源抖动4、宽温度范围,-40℃~85℃5、I/O口经过特殊处理

6、单片机内部的电源供电系统经过特殊处理7、单片机内部的时钟电路经过特殊处理8、单片机内部的复位电路经过特殊处理9、单片机内部的看门狗电路经过特殊处理

★1个时钟/机器周期,可用低频晶振,大幅降低EMI      ---出口欧美的有力保证★超低功耗:

1、掉电模式:       典型功耗   <0.1μA2、空闲模式:    典型功耗   <1.3mA

3、正常工作模式: 典型功耗   2.7mA - 7mA4、掉电模式可由外部中断唤醒,适用于电池  供电系统,如水表、气表、便携设备等。★在系统可编程,无需编程器,可远程升级★可送STC-ISP下载编程器,1万片/人/天

★内部集成MAX810专用复位电路,原复位电路可以S

2CTC1

10

3.8币

人民,52

南京办:Tel:025-86893767    86893566     Fax:025-86893757   传真至深圳申请STC单片机广州办:Tel:020-38851405   38850557     Fax:020-38850581  样片及ISP下载线/编程工具

新客户请直接联系深圳以获得更好的技术支持和服务 欢迎海内外厂家前来洽谈合作

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

领导业界革命    覆盖市场需求

STC 12C2052AD系列 1T 8051 单片机

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

1个时钟/机器周期,高速、高可靠,4路PWM/PCA,8路高速A/D转换

宏晶科技是新一代增强型8051单片机标准的制定者,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆盖全国。(www.61k.com)在保

证质量的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。目前,全力推出“1个时钟/机器周期”的单片机,全面提升8051单片机性能。欢迎海内外厂家前来洽谈合作!新客户请直接联系深圳,以获得更好的技术支持与服务。

●高速:1个时钟/机器周期,RISC型CPU内核,速度比普通8051快12倍●宽电压:5.5~3.4V,2.0~3.8V(STC12LE2052AD系列)

●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)●工作频率:0~35MHz,相当于普通8051:0~420MHz

●时钟:外部晶体或内部RC振荡器可选,在ISP编程时设置

●2K/4K/8K/10K/12K片内Flash程序存储器,擦写次数10万次以上●256/512字节片内RAM数据存储器●芯片内E2PROM功能

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

●ISP / IAP,在系统可编程

●8通道高精度8位ADC,STC12C5410AD系列为10位精度ADC●2通道捕获/比较单元(CCU/PCA/PWM),STC12C5410AD系列为4通道

---也可用来再实现2/4个定时器或2/4个外部中断(支持上升沿/下降沿中断)●2个硬件16位定时器,兼容普通8051的定时器,2路PCA还可再实现2个定时器●硬件看门狗(WDT)●高速SPI通信端口

●全双工异步串行口(UART),兼容普通8051的串口

●先进的RISC精简指令集结构,兼容普通8051指令集

4组8个8位通用工作寄存器(共32个通用寄存器)●通用I/O口(27/23个),复位后为: 准双向口/弱上拉(普通8051传统I/O口)      可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏由:

★加密性强,无法解密

★超强抗干扰:

STC

10C21

52

民币人,

3.

8元

1、高抗静电(ESD保护)

2、轻松过4KV快速脉冲干扰(EFT测试)3、宽电压,不怕电源抖动4、宽温度范围,-40℃~85℃5、I/O口经过特殊处理

6、单片机内部的电源供电系统经过特殊处理7、单片机内部的时钟电路经过特殊处理8、单片机内部的复位电路经过特殊处理9、单片机内部的看门狗电路经过特殊处理

★1个时钟/机器周期,可用低频晶振,大幅降低EMI      ---出口欧美的有力保证★超低功耗:

1、掉电模式:       典型功耗   <0.1μA2、空闲模式:    典型功耗   <1.3mA3、正常工作模式: 典型功耗    2.7mA - 7mA4、掉电模式可由外部中断唤醒,适用于电池  供电系统,如水表、气表、便携设备等。★在系统可编程,无需编程器,可远程升级★可送STC-ISP下载编程器,1万片/人/天

★内部集成MAX810专用复位电路,原复位电路可以南京办:Tel:025-86893767    86893566     Fax:025-86893757   传真至深圳申请STC单片机广州办:Tel:020-38851405   38850557     Fax:020-38850581  样片及ISP下载线/编程工具

新客户请直接联系深圳以获得更好的技术支持和服务欢迎海内外厂家前来洽谈合作

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

目录

STC89C51RC/RD+系列单片机宣传资料.....................................................2STC12C5410AD系列单片机宣传资料........................................................3STC12C2052AD系列单片机宣传资料........................................................4目录.....................................................................................5STC89C51RC/RD+系列 单片机 简介.......................................................6STC89C51RC/RD+系列 单片机 选型.......................................................7STC89C51RC / RD+ 系列单片机 管脚图 编译器及仿真器...................................8STC89C51 RC / RD+系列单片机封装尺寸图................................................9STC89C51RC/RD+系列 单片机 命名规则..................................................12STC89系列单片机的优点及特性...........................................................13STC ISP下载编程及应用电路(针对D版单片机,大批量供货).............................14STC ISP下载编程及应用电路(针对C版单片机,老产品)...............................15STC ISP下载编程及应用电路(针对B版单片机,老产品)...............................16典型MCU/DSP/uC复位、电源监控、外部看门狗专用电路.................................17STC89C51RC / RD+系列单片机ISP下载用户程序编程原理 注意事项.......................18STC89C51RC / RD+ 系列单片机在系统可编程控制软件(STC-ISP)的使用说明...........19特殊功能寄存器映像 说明   SFR Mapping...............................................22降低单片机时钟对外界的电磁辐射 (EMI)---三大措施.....................................25STC89C51RC / RD+ 系列单片机内部扩展RAM的使用/禁止................................26双数据指针DPTR0,DPTR1的使用.........................................................33扩展P4口的使用(可以位寻址)...........................................................34看门狗应用..............................................................................35中断系统................................................................................38PCON寄存器的高级应用,上电复位标志,进入掉电模式.....................................39STC89C51RC/RD+ 系列单片机如何从掉电模式唤醒.........................................40STC单片机定时器0/1/2的使用..........................................................42STC89C51 RC / RD+ 系列 ISP / IAP / EEPROM 应用...................................62STC89C51 RC / RD+ 系列 IAP / EEPROM 应用汇编简介..................................67STC89C51 RC / RD+系列单片机电气特性.................................................74附录A STC89LE516AD、58AD、54AD、52AD系列单片机指南...............................76附录B 为什么少数用户的普通8051程序烧录后,不能运行.................................84附录C STC89C51 RC / RD+系列单片机ISP(DIY).......................................85附录D 如何实现运行中不停电自定义下载,无仿真器时方便调试............................89附录E Keil C51高级语言编程的软件如何减少代码长度...................................90附录F STC89C51RC/RD+系列单片机做仿真器须知.........................................91附录G STC高性能SRAM选型一览表.......................................................92附录H STC单片机配套工具及价格........................................................93附录I STC12C5410简介(1T)...........................................................94附录J 指令系统与程序设计.............................................................179

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243         STC89C51RC/RD+系列 单片机简介

STC89C51RC/RD+系列单片机是兼容8051内核的单片机,是高速/低功耗的新一代8051单片机,12时钟/机器周期和6时钟/机器周期可反复设置,最新的D版本内部集成MAX810专用复位电路。[www.61k.com)特点:

1. 增强型6时钟/机器周期,12时钟/机器周期 8051 CPU

2. 工作电压:5.5V - 3.4V(5V单片机)  /  3.8V - 2.0V(3V单片机)

3. 工作频率范围:0 - 40 MHz,相当于普通8051的  0~80MHz.实际工作频率可达48MHz.

4. 用户应用程序空间 4K / 8K / 15K / 16K / 20K / 32K / 64K 字节

5. 片上集成 512 字节 / 1280字节 RAM

6. 通用I/O口(32/36个),复位后为: P1/P2/P3/P4是准双向口/弱上拉(普通8051传统I/O口)     P0口是开漏输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器

可通过串口(P3.0/P3.1)直接下载用户程序,8K程序3秒即可完成一片

8. EEPROM 功能

9. 看门狗

10.内部集成MAX810专用复位电路(D版本才有),外部晶体20M以下时,可省外部复位电路11.共3个16位定时器/计数器

12.外部中断2路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒13. 通用异步串行口(UART)

14.工作温度范围: 0 - 75℃ / -40 - +85℃

15.封装: PDIP-40,PLCC-44,PQFP-44

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)6

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C51RC/RD+系列单片机选型一览表

型    号

最高时钟

频 率Hz  5V

STC89C51    RCSTC89C52    RCSTC89C53    RC

0-80M0-80M0-80M

3V

Flash程序存储器字节4K8K15K16K20K32K63K

0-80M0-80M0-80M0-80M0-80M0-80M

4K8K14K16K32K63K

RAM

看双PIIEEP

数据降低

门倍4SAROM

存储器EMI

狗速口PP字节

字节5125125121280128012801280512512512128012801280

√√√√√√√√√√√√√

√√√√√√√√√√√√√√√

2K+2K+

中优定A

据串口

断先时/

指UART

源级器D

针 2 2 2

1ch1ch1ch1ch1ch1ch1ch1ch1ch1ch1ch1ch1ch

843843843843843843843843843843843843843

STC89C54    RD+0-80MSTC89C55    RD+0-80MSTC89C58    RD+0-80MSTC89C516  RD+STC89LE51  RCSTC89LE52  RCSTC89LE53  RCSTC89LE54  RD+STC89LE58  RD+STC89LE516RD+

0-80M

√√√√√16K+ 2√√√√√16K+ 2√√√√√16K+ 2√√√√√√√√√√√√√√√√√√√√

stc89c52中文资料 STC89C52RC_中文指南_

2K+2K+

2 2 2 2

√√√√√16K+ 2√√√√√16K+ 2√√√√√

0-90M64K512√√√ 21ch643√

STC89LE516X20-90M64K512√√√√ 21ch643√

选用STC单片机的理由:降低成本,提升性能,原有程序直接使用,硬件无需改动。(www.61k.com)STC公司鼓励

您放心大胆选用PLCC,  PQFP小型封装, 3.3V工作电压单片机,使您的产品更小,更轻,功耗更低。

如果相关新增功能没有用到,则不需看相应部分。用STC提供的STC-ISP.exe工具将您原有的代码下载进

STC 相关的单片机即可,或用通用编程器编程。

STC89LE516AD

RC/RD+系列为真正的看门狗,缺省为关闭(冷启动)    Flash次以上,STC89C51RC/RD+系列单片机出厂时就已完全加密,无法解密内部

用户程序是用ISP/IAPCC-

44,PQFP-44。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

STC89C51RC / RD+ 系列单片机 管脚图

/P3.6 1 2                               4 4 P1.4

/P3.7 1 3                                   4 3 P1.3

XTAL2 1 4                                   4 2 P1.2

XTAL1 1 5                                   4 1 P1.1/T2EX

VSS 1 6                                   4 0 P1.0/T2

P4.0 1 7                                   3 9 P4.2/INT3

A8/P2.0 1 8                                   3 8 VDD

1937     A9/P2.1                                       P0.0/AD0     A10/P2.2 2 0                                   3 6 P0.1/AD1

A11/P2.3 2 1                                   3 5 P0.2/AD2

2 2                                   3     A12/P2.4  4 P0.3/AD3

PQFP-44

0-20MHz0-16.5M0-12MHz0-10MHz

0-80MHz0-66MHz0-48MHz0-40MHz

0-40MHz0-33MHz0-24MHz0-20MHz

XTAL1                                      3P1.1/T2EX21

P4.0                                    1P4.2/23

4 3P0.0/AD025A9/P2.1

A10/P2.2                                     4 2P0.1/AD126

A11/P2.3                                     4 1P0.2/AD227

4 0P0.3/AD328A12/P2.4                                    /P3.6 1 8                                   6 P1.4

19RD/P3.7                                     5 P1.3

4P1.2XTAL2 2 0

VSS                                      2P1.0/T222

P0.6/AD6

P0.7/AD7 P4.1ALE/PROGP2.7/A15P2.6/A14P2.5/A13

A8/P2.0 4 4VDD2 4

P0.4/AD4P0.5/AD5 PLCC-44

关于编译器/汇编器:

T2/P1.0 VCC

2         P0.0/AD0

3          P0.1/AD14

5           P0.3/AD3 6          P0.6/AD6 9          P0.7/AD7 10           EA  ALE/PROG12            PSEN 13         P2.7/A15 14         P2.6/A14P2.5/A13 16         P2.4/A12 17         P2.3/A1118          P2.2/A10P2.1/A920          P2.0/A8

1.任何老的编译器/汇编器均可使用

Keil C51中: Device选择标准的Intel8052

头文件包含标准的 <reg52.h>2.新增特殊功能寄存器如要用到,则用 “sfr”及“sbit”声明地址即可3.汇编中用“data”,或“EQU”声明地址

关于工作电压/时钟频率:RC/RD+系列是真正的6T单片机,兼容普通的12时钟/机器周期

内核实际6T               现有老版5V单片机,无版本号工作电压

现有新版5V单片机(B版)

双倍速单倍速单倍速双倍速

实际内核实际内核实际内核实际内核

IAP/ISP可以相当于外部时钟相当于相当于外部时钟相当于

运行时钟运行时钟运行时钟运行时钟

普通8052普通8052普通8052普通8052

0-24MHz0-20MHz0-18MHz0-12MHz

0-12MHz0-10MHz0-9MHz0-6MHz

0-48MHz0-40MHz0-36MHz0-24MHz

0-24MHz0-20MHz0-18MHz0-12MHz

0-40MHz0-33MHz0-24MHz0-20MHz

0-40MHz0-33MHz0-24MHz0-20MHz

读,编程,擦除读,编程,擦除读,编程,擦除读(不要编程/擦除)

DIP-40

关于仿真及仿真器:

1.任何老的仿真器均可使用

2.老的仿真器仿真他可仿真的基本功能3.新增特殊功能用ISP下载看结果即可4.STC8051专用仿真器也已推出,人民币1950

5.5V - 4.5V0-24MHz5.5V - 3.8V0-20MHz5.5V - 3.6V0-18MHz5.5V - 3.4V0-12MHz

3V: 3.6 - 2.4V(可外部24MHz,双倍速48MHz),2.3-1.9V时不要进行IAP擦除/编程关于看门狗:RC/RD+系列为真正的看门狗,缺省为关闭(冷启动),启动后无法关闭。[www.61k.com)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

A.看门狗溢出复位无法关看门狗(C版);C.带电工作时,外部复位无法关看门狗(C版)E.外部干扰无法关看门狗

B.单片机软复位无法关看门狗(C版)D.软件无法关看门狗

F.只有给单片机彻底断电,才可以

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC 8051 封装尺寸图

DIP40: plastic dual in-line package;40 leads(600 mil)

lane

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

DIMENSIONS(inch dimensions are derived from the original mm dimensions)

UNIT

Amax.

A1min.

A2max.

b1

D(1)

E(1)

e1

ME

MH

Z(1)max.

mminches

4.70.19

0.510.020

4.00.16

1.701.140.0670.045

0.530.380.0210.015

0.360.230.0140.009

52.551.52.0672.028

14.113.70.560.54

2.540.10

15.240.60

3.603.050.140.12

15.817.42

0.254

15.2415.900.620.60

0.690.63

0.01

2.250.089

Note

1.Plastic or metal protrusion of 0.25 mm maximum per side are not included

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)9

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

PLCC44: plastic leaded chip carrier;44 leads

3)

detail X

Note

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)10

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

PQFP44

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

Notes:

1.Dimension D & E do not include interlead flash.

2.Dimension b does not include dambar protrusion/intrusion.

3.Controlling dimension Millimeter

4.General appearance spec. should be based on final visual inspection spec.

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

11

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243       STC89C51RC/RD+系列 单片机 命名规则

种封装:如

度范围:

40℃ ~ +85℃

0℃ ~ 70℃

25MHz

40MHz

50MHz

是8K字节, 53是15K字节

是32K字节,516是64K字节

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)12

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

超低功耗  ---- STC89C51RC / RD+ 系列单片机

1.掉电模式:

典型功耗    < 0.1uA,   可由外部中断唤醒,中断返回后,继续执行原程序

2.空闲模式:

典型功耗    2mA

3.正常工作模式:

典型功耗    4mA - 7mA

4.掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备

超强抗干扰  ---- STC89C51RC / RD+ 系列单片机1. I/O口

输入/输出口经过特殊处理,很多干扰是从I/O进去的,每个I/O均有对VCC/对GND

二级管箝位保护。(www.61k.com]

2. 电源

单片机内部的电源供电系统经过特殊处理,很多干扰是从电源进去的

3. 时钟

单片机内部的时钟电路经过特殊处理,很多干扰是从时钟部分进去的

4. 看门狗

单片机内部的看门狗电路经过特殊处理,打开后无法关闭,可放心省去外部看门狗

5. 复位电路

单片机内部的复位电路经过特殊处理,很多干扰是从复位电路部分进去的,STC89C51RC/RD+系列单片机为高电平复位。推荐外置复位电路为MAX810/STC810,STC6344,

STC6345,813L,706P;也可用R/C复位,10uF电容/10k电阻,22uF/8.2k等。

新版本D版本内部含有专用复位电路,外部复位电路可以继续保留,也可以不用,不用时复位脚直接短到地。

6. 宽电压,不怕电源抖动5V: 6v - 3.4v3V: 4v - 2.0v

7. 高抗静电(高ESD保护),轻松过4000V快速脉冲干扰(严格的日本及欧洲EFT标准)

降低单片机对外部的电磁辐射 (EMI)---三大措施1. 禁止ALE时钟信号输出:

RC/RD+系列8051 单片机 扩展RAM管理及禁止ALE输出 特殊功能寄存器   只写

MnemonicAddName

AUXR

MOV  7 6 - 5 - 4 - 3 - 2 -    1 0Reset value8EhAuxiliary  Register  0 -EXTRAMALEOFFxxxx,xx00禁止ALE信号输出(应用示例供参考,汇编语言):AUXR,  #00000001B;  ALEOFF位置“1”,禁止ALE时钟输出

2. 外部时钟频率降一半,6T模式: 传统的8051为每个机器周期12时钟,如将STC的增强型8051单片机在ISP烧录程序时设为双倍速(即6T模式,每个机器周期6时钟),则可将单片机外部时钟频率降低一半,有效的降低单片机时钟对外界的辐射

3. 单片机内部时钟振荡器增益降低一半:

利于降低EMI,16M以上选择 full gain。在ISP烧录程序时将OSCDN设为1/2 gain可以有效的降低单片机时钟高频部分对外界的辐射,单片机外部晶振频率<16MHz时,可将OSCDN设为1/2 gain,有

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)13

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC单片机典型应用电路(89C51RC/RD+系列,D版)

STC 单片机在线编程线路, STC RS-232 转换器

关于晶振电路:

OSCDN,晶体振荡器增益控制 = full gain,  R33  =  0  -  160欧姆(可以不用)X1C1,C2R1

2-25MHz<= 47pF不用

26-30MHz <=10pF  6.8K

31-35MHz <=10pF  5.1K

36-39MHz <=10pF  4.7K

40-43MHz  <=10pF   3.3K

44-48MHz  <=5pF   3.3K

针对C版 STC 89C51RC/RD+,STC89LE51RC/RD+ 系列单片机推荐晶体振荡电路

OSCDN(OSC Control),振荡器增益 = 1/2 gain,  R33  =  0 - 160欧姆(可不用)X1C1,C2R1

2-25MHz <=47pF不用

26-30MHz <=5pF6.8K

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

31-35MHz不用5.1K

36-39MHz不用4.7K

40-43MHz不用3.3K

44-48MHz不用3.3K

针对C版 STC 89C51RC/RD+,STC89LE51RC/RD+ 系列单片机推荐晶体振荡电路

1.STC单片机D版本的,R33可以短路,也可以上160欧姆以下的电阻,C1也可以不上。[www.61k.com]

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)14

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC单片机典型应用电路(89C51RC/RD+系列,C版)

STC 单片机在线编程线路, STC RS-232 转换器

关于晶振电路:

OSCDN,晶体振荡器增益控制 = full gain,  R33  =  0  -  160欧姆(可以不用)X1C1,C2R1

2-25MHz<= 47pF不用

26-30MHz <=10pF  6.8K

31-35MHz <=10pF  5.1K

36-39MHz <=10pF  4.7K

40-43MHz  <=10pF   3.3K

44-48MHz  <=5pF   3.3K

针对C版 STC 89C51RC/RD+,STC89LE51RC/RD+ 系列单片机推荐晶体振荡电路

OSCDN(OSC Control),振荡器增益 = 1/2 gain,  R33  =  0 - 160欧姆(可不用)X1C1,C2R1

2-25MHz <=47pF不用

26-30MHz <=5pF6.8K

31-35MHz不用5.1K

36-39MHz不用4.7K

40-43MHz不用3.3K

44-48MHz不用3.3K

针对C版 STC 89C51RC/RD+,STC89LE51RC/RD+ 系列单片机推荐晶体振荡电路

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)15

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC  ISP编程典型应用电路(89C51RC/RD+系列,B版)

stc89c52中文资料 STC89C52RC_中文指南_

STC 单片机在线编程线路, STC RS-232 转换器

关于晶振电路:

OSCDN(OSC Control),晶体振荡器增益控制 = full gain,  R33 = 160欧姆(附近)X1C1,C2R1

2-25MHz<=47pF不用

26-30MHz<=10pF6.8K

31-35MHz<=10pF5.1K

36-39MHz<=10pF4.7K

40-43MHz<=10pF3.3K

44-48MHz<=5pF3.3K

针对A版/B版 STC 89C51RC/RD+,STC89LE51RC/RD+ 系列单片机推荐晶体振荡电路

OSCDN(OSC Control),晶体振荡器增益控制 = 1/2 gain,  R33 = 160欧姆(附近)X1C1,C2R1

2-25MHz<=47pF不用

26-30MHz<=5pF6.8K

31-35MHz不用5.1K

36-39MHz不用4.7K

40-43MHz不用3.3K

44-48MHz不用3.3K

针对A版/B版 STC 89C51RC/RD+,STC89LE51RC/RD+ 系列单片机推荐晶体振荡电路

1.推荐在XTAL2管脚串一个160 - 120 欧姆的电阻再到晶振的管脚,可限制晶振驱动电平,并有利于晶体起振,这对低频晶振尤其重要,如果这样XTAL1管脚旁的C1推荐上。(www.61k.com)

2.如果XTAL2管脚不串一个160欧姆的电阻的话,C1不上,C2上47pF - 180pF。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

16

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

典型MCU/DSP/uC复位、电源监控、外部看门狗专用电路1.高电平复位信号输出

人民币1元

上电复位, 掉电复位

stc89c52中文资料 STC89C52RC_中文指南_

上电复位, 掉电复位,外部手动复位,稳压块前端掉电检测

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

1

上电复位, 掉电复位电源稳压块前端掉电检测,高/低电平2路复位信号输出

上电复位, 掉电复位,外部手动复位,电源稳压块前端掉电检测,外部硬件看门狗

stc89c52中文资料 STC89C52RC_中文指南_

2.低电平复位信号输出

上电复位, 掉电复位

stc89c52中文资料 STC89C52RC_中文指南_

上电复位, 掉电复位,外部手动复位,稳压块前端掉电检测

1

1

上电复位, 掉电复位,外部手动复位,电源稳压块前端掉电检测,

外部硬件看门狗

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

高/低电平2路复位信号输出

使用外部专用复位电路的好处:(推荐使用STC6344,STC6345,STC810)

1.确保上电时,在用户设定的电源电压之上,时钟振荡稳定后,单片机才开始工作2.确保掉电时,在用户设定的电源电压之下,立即让单片机复位,以免单片机误动作3.具有电源稳压块前端掉电检测的专用复位电路,确保掉电前有充分的时间保存数据

4.复位门槛电压可选: L:4.63V; M:4.38V; J: 4.00V; T:3.08V; S:2.93V; R:2.63V

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

17

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243 STC89C51RC/RD+系列单片机 ISP编程 原理 注意事项

stc89c52中文资料 STC89C52RC_中文指南_

为什么有些用户下载程序不成功(在宏晶提供的下载板上)

1.可能电脑端的STC-ISP控制软件要升级,现须升级到STC-ISP-3.1

2.现在单片机端(下位机)ISP软件是3.2C,解决了少数电脑慢,通信连不上的问题.

3.运行用户程序时,可到40M/80MHz,但ISP下载程序以前的版本软件只能到33M/66MHz

4.少数客户的PLCC-44,PQFP-44转DIP-40的转换座走线过长,造成时钟振荡不稳定,下载不成功。[www.61k.com]5.也有电脑USB电源供电不足的,可用万用表测一下,看5V部分是否在4.5V以上。

6.可能单片机内部没有ISP引导码,或PC串口波特率达不到115200,选57600试一下。

7.电脑端的ISP控制软件STC-ISP-V3.1加了一些功能,欢迎测试。

为什么有些用户下载程序不成功(在用户自己的系统上)

1.可能用户板上有外部看门狗,需不让其起作用,另要查时钟、复位是否正常。

2.可能用户板上P3.0/RxD,P3.1/Txd除了接RS-232转换器外,还接了RS-485等电路,需要将其断开。用户系统接了RS-485/RS-232电路的,推荐在选项中选择下次冷启动时需P1.0/P1.1=0.0才判是否下载程序。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)18

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC 89C51RC/RD+ 系列单片机在系统可编程的使用

---将用户代码下载进单片机内部,不用编程器

STC单片机在线编程线路, STC RS-232 转换器

STC单片机在线编程线路, STC RS-232 转换器

stc89c52中文资料 STC89C52RC_中文指南_

上面左图适用如下型号:STC89C51RC,STC89LE51RC,STC89C54RD+,STC89LE54RD+,STC89C516RD,

STC89C52RC,STC89LE52RC,STC89C58RD+,STC89LE58RD+,

STC89C53RCSTC89LE53RCSTC89C516RD+STC89LE516RD+

STC89C58RD  (老产品,不要选)

STC89LV516RD,STC89LV58RD  (老产品,不要选)上面右图适用如下型号:

STC89LE516AD,STC89LE516X2,STC89LE58AD,STC89LE54AD,STC89LE52AD,LE51AD

STC89系列单片机大部分具有在系统可编程(ISP)特性,ISP 的好处是:省去购买通用编程器,单片机在用户系统上即可下载/烧录用户程序,而无须将单片机从已生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。(www.61k.com)有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小了新产品由于软件缺陷带来的风险。由于可以将程序直接下载进单片机看运行结果故也可以不用仿真器。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

大部分STC89系列单片机在销售给用户之前已在单片机内部固化有ISP系统引导程序,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,故无须编程器(速度比通用编程器快)。不要用通用编程器编程,否则有可能将单片机内部已固化的ISP系统引导程序擦除,造成无法使用STC提供的ISP软件下载用户的程序代码。

如何获得及使用STC提供的ISP下载工具(STC-ISP.exe软件):(1). 获得STC提供的ISP下载工具(软件)

登陆 www.MCU-Memory.com 网站,从STC半导体专栏下载PC(电脑)端的ISP程序,然后  将其自解压,再安装即可(执行setup.exe),注意随时更新软件。(2). 使用STC-ISP下载工具(软件),请随时更新,目前已到Ver3.1版本(2005/12/7),支持 *.Hex(Intel 16 进制格式)文件,RC/RD+系列单片机的底层软件版本为Ver3.2C(旧版可更换)。    请随时注意升级PC(电脑)端的ISP程序,现 Ver3.1欢迎测试。

单片机底层软件版本为Ver3.2C的单片机,PC(电脑)端的ISP程序应用Ver3.1以上

(3).已经固化有ISP引导码,并设置为上电复位进入ISP的STC89C51RC/RD+系列单片机出厂时就已完全加密,需要单片机内部的电放光后上电复位(冷起动)才运行系统ISP程序。

stc89c52中文资料 STC89C52RC_中文指南_

(4).可能用户板上P3.0/RxD,P3.1/Txd除了接RS-232转换器外,还接了RS-485等电路,需要将其断开。用户系统接了RS-485电路的,推荐在选项中选择下次冷启动时需P1.0/P1.1=0.0才判是否下载程序。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)19

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

要调几个文件进缓冲区,如EEPROM里的

数据文件需要和应用程序文件一次同时

ISP下载编程进单片机:

除每次均要指定缓冲区起始地址外,第

二次及以后不能清缓冲区

如可将要写入EEPROM区的数据文件调入

从缓冲区2000H/8000H开始的地方,并不

清缓冲区,然后和应用程序一起写入

用户根据实际使用效果选择限制最高通信

波特率,如57600,38400,19200

如P3.0/P3.1外接RS-485/RS-232等通信

电路,建议选择如P1.0/P1.1不同时等

于0/0,则直接运行用户程序,跨过系

统ISP引导程序

后才生效开发调试时,可考虑选择此项大批量生产时使用

Step1/步骤1:选择你所使用的单片机型号,如STC89C58RD+, STC89LE516AD等

Step2/步骤2:打开文件,要烧录用户程序,必须调入用户的程序代码(*.bin, *.hex)Step3/步骤3:选择串行口,你所使用的电脑串口,如串行口1--COM1, 串行口2--COM2,...

有些新式笔记本电脑没有RS-232串行口,可买一条USB-RS232转接器,人民币50元左右。(www.61k.com]

有些USB-RS232转接器,不能兼容,可让宏晶帮你购买经过测试的转换器。

Step4/步骤4:设置是否双倍速,双倍速选中Double Speed即可

STC89C51RC/RD+系列可以反复设置 双倍速/单倍速,新的设置停电后重新冷启动后才能生效    STC89LE516AD为单倍速,STC89LE516X2 为双倍速,用户自己无法指定双倍速/单倍速

STC89C516RD系列出厂时为单倍速,用户可指定设为双倍速,如想从双倍速恢复成单倍速,则    需用通用编程器擦除整个晶片方可,这会将单片机内部已烧录的ISP引导程序擦除。一般使用   缺省设置即可,无须设置。

OSCDN: 单片机时钟振荡器增益降一半

选 1/2 gain 为降一半,降低EMI;选 full gain(全增益)为正常状态。

Step5/步骤5:选择“Download/下载”按钮下载用户的程序进单片机内部,

可重复执行Step5/步骤5, 也可选择“Re-Download/重复下载”按钮

下载时注意看提示,主要看是否要给单片机上电或复位, 下载速度比一般通用编程器快。

一般先选择“Download/下载”按钮,然后再给单片机上电复位(先彻底断电),而不要先上电关于硬件连接:

(1). MCU/单片机  RXD(P3.0)  ---  RS-232转换器  ---  PC/电脑  TXD(COM Port Pin3)(2). MCU/单片机  TXD(P3.1)  ---  RS-232转换器  ---  PC/电脑  RXD(COM Port Pin2)(3). MCU/单片机  GND        ----------------------  PC/电脑  GND(COM Port Pin5)

(4). STC89LE516AD/X2系列单片机冷启动时需要P1.0, P1.1 = 0, 0 ;上电复位才进入ISP 模式,下

载完后释放P1.0,P1.1, STC89LE516AD/X2运行用户程序.

STC89C51RC/RD+系列单片机不需要P1.0,P1.1 = 0,0,但软件可选下次需要。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

STC89LE516AD,STC89LE516X2,STC89LE58AD,STC89LE54AD必需要P1.0,P1.1 = 0,0

(5). RS-232转换器可选用SP232/MAX232/STC232(4.5-5.5V),SP3232/MAX3232/STC3232(3V-5.5V).

SP232/MAX232/STC232尽量选用SOP封装(窄体,SP232EEN)。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)20

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

如用户系统没有RS-232接口,

可使用STC-ISP Ver 2.0B.PCB演示板作为编程工具

STC-ISP Ver 2.0B PCB 板可完成下载/烧录用户程序的功能。(www.61k.com]

在STC-ISP Ver 2.0B PCB 板完成下载/烧录:

关于硬件连接:

(1.) 根据单片机的工作电压选择单片机电源电压

A.5V单片机,短接JP1的MCU-VCC, 5V电源管脚

B.3V单片机,短接JP1的MCU-VCC, 3.3V电源管脚

(2.) 根据单片机的工作电压选择复位信号

A. 5V单片机,短接JP2的MCU-RST, 5V/MCU-RST信号管脚

B. 3.3V单片机,短接JP2的MCU-RST, 3.3V/MCU-RST信号管脚

(3.)连接线(宏晶提供)

A.将一端有9芯连接座的插头插入PC/电脑RS-232串行接口插座用于通信

B.将同一端的USB插头插入PC/电脑USB接口用于取电

C.将只有一个USB插头的一端插入宏晶的STC-ISP Ver 2.0B PCB板USB1插座用于RS-232通

信和供电,此时+5V Power灯亮(D10,USB接口有电)

(4.)其他插座不需连接

(5.)SW1开关处于非按下状态,此时MCU-VCC Power灯不亮(D9), 没有给单片机通电

(6.)SW3开关

处于非按下状态,P1.0, P1.1 = 1, 1,不短接到地。

适用于:STC89C51RC / RD+, /RD 系列单片机

处于按下状态,P1.0, P1.1 = 0, 0,短接到地。

适用于:STC89LE516AD, STC89LE58AD, STC89LE54AD, STC89LE516X2

(7.)将单片机插进U1-Socket锁紧座,锁紧单片机

(8.)关于软件:选择“Download/下载”( 必须在给单片机上电之前让PC先发一串合法下载命令)(9.)按下SW1开关,给单片机上电复位, 此时MCU-VCC Power灯亮(D9)

此时STC 单片机进入ISP 模式(STC89C51RC/RD+系列冷启动进入ISP)

(10.)下载成功后,再按SW1开关,此时SW1开关处于非按下状态,MCU-VCC Power灯不亮(D9),

给单片机断电,取下单片机。

利用STC-ISP Ver 2.0B PCB 板进行RS-232转换

单片机在用户自己的板上完成下载/烧录:

1.U1-Socket锁紧座不得插入单片机

2.将用户系统上的电源(MCU-VCC,GND)及单片机的P3.0/RXD,P3.1/TXD接入转换板CN2插座   这样用户系统上的单片机就具备了与PC/电脑进行通信的能力

3. 将用户系统的单片机的P1.0,P1.1接入转换板CN2插座(仅STC89LE516AD/X2系列需要)    4.SW3开关处于按下状态,P1.0, P1.1 = 0, 0,短接到地。仅STC89LE516AD/X2系列需要

5.关于软件:选择“Download/下载”

6.给单片机系统上电复位(注意是从用户系统自供电,不要从电脑USB取电,电脑USB座不插)

7.下载程序时,如用户板有外部看门狗电路,不得启动,单片机必须有正确的复位,但不能在ISP

下载程序时被外部看门狗复位,可将外部看门狗电路WDI端/或WDO端浮空

8. 如有RS-485晶片连到P3.0/Rxd,P3.1/Txd,在下载时应将其断开。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)21

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

特殊功能寄存器映像  SFR Mapping

STC89C51RC, STC89C52RC, STC89C53RC, STC89C54RD+,STC89C58RD+,STC89C516RD+STC89LE51RC,STC89LE52RC,STC89LE53RC,STC89LE54RD+,STC89LE58RD+,STC89LE516RD

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)22

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

RC/RD+系列8051 单片机内核特殊功能寄存器   C51 Core SFRs

MnemonicAddNameACCBPSWSPDPLDPH

E0hAccumulatorF0hB Register

D0hProgram Status Word81h82h83h

Stack PointerData Pointer Low ByteData Pointer High Byte

7 6 5 4 3 2 1 0Reset Value0000,00000000,0000

CYACF0RS1RS0OV F1 P0000,00000000,01110000,00000000,0000

RC/RD+系列8051 单片机系统管理特殊功能寄存器System Management SFRs

MnemonicAddNamePCONAUXRAUXR1

87hPower  Control

7 6 - -

5 - -

4 - -

3 -

2 -

1 0IDLDPS

Reset value00x1,0000xxxx,0xx0

SMOD SMOD0 -POFGF1GF0   PD

GF2 -

8EhAuxiliary  Register  0 -A2hAuxiliary  Register  1 -

EXTRAMALEOFFxxxx,xx00

不同:STC89LE516AD / 89LE516X2系列单片机没有EXTRAM控制位.

RC/RD+系列8051 单片机 中断 特殊功能寄存器Interrupt SFRs

MnemonicAddIEIPIPHXICON

A8hB8hB7hC0h

Name

Interrupt  EnableInterrupt  Priority  LowInterrupt  Priority  HighAuxiliary  Interrupt  Control

7EA -PX3

6 - -EX3

5ET2PT2IE3

4ESPS

3ET1PT1

2EX1PX1EX2

1ET0PT0IE2

0EX0PX0IT2

Reset Value0000,0000xx00,00000000,0000

PX3HPX2HPT2HPSHPT1HPX1HPT0HPX0H0000,0000

IT3PX2

不同:STC89LE516AD系列单片机没有(XICON,PX3H,PX2H),因为P4.2/P4.3无中断.

RC/RD+系列8051 单片机 I/O 口 特殊功能寄存器   Port SFRs

MnemonicP0P1P2P3P4

Add80h90hA0hB0hE8h

Name

8-bit  Port 08-bit  Port 18-bit  Port 28-bit  Port 34-bit  Port 4

Reset Value1111,11111111,11111111,11111111,1111xxxx,1111

P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0 -

P4.3P4.2P4.1P4.0

不同:STC89LE516AD / 89LE516X2 系列单片机P4口地址为C0h,而不是E8h.

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)23

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

RC/RD+系列 8051 单片机 串行口 特殊功能寄存器    Serial I/O Port SFRs

MnemonicAddSCONSBUFSADENSADDR

98h99hB9hA9h

Name

Serial  ControlSerial  Data  BufferSlave  Address  MaskSlave  Address

7SM0/FE

6SM1

5SM2

4REN

3TB8

2RB8

1TI

0RI

Reset Value0000,0000xxxx,xxxx0000,00000000,0000

RC/RD+系列 8051 单片机 定时器 特殊功能寄存器    Timer SFRs

MnemonicAddTCONTMODTL0TH0TL1TH1T2CONT2MODRCAP2LRCAP2HTL2TH2

88h89h8Ah8Ch8Bh8DhC8hC9hCAhCBhCChCDh

Name

6TR1

5TF0

4TR0

3IE1

2IT1

1IE0

0IT0M0

M0_0

Reset Value0000,00000000,00000000,00000000,00000000,00000000,0000

TF2 -

EXF2 -

RCLKTCLKEXEN2TR2 -

C/T2#CP/RL2#0000,0000T2OE

DCEN

xxxx,xx000000,00000000,00000000,00000000,0000

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

Timer / Counter 0 and 1 ControlTF1Timer / Counter 0 and 1 ModesTimer / Counter 0 Low ByteTimer / Counter 0 High ByteTimer / Counter 1 Low ByteTimer / Counter 1 High ByteTimer / Counter 2 ControlTimer / Counter 2 ModeTimer / Counter 2

Reload/Capture  Low ByteTimer / Counter 2

Reload/Capture  High ByteTimer / Counter 2 Low ByteTimer / Counter 2 High Byte

GATEC/T#M1M0GATEC/T#M1GATE1C/T1#M1_1M1_0GATE0C/T0#M0_1

RC/RD+系列 8051单片机 看门狗定时器 特殊功能寄存器 Watch Dog Timer SFRs

MnemonicAddName

Watch-Dog-TimerControl register

7 -

6 -

5 4 3 2 1 0Reset Value

WDT_CONTRE1hEN_WDTCLR_WDTIDLE_WDTPS2PS1PS0xx00,0000

RC/RD+系列 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs

MnemonicISP_DATA

AddE2h

Name

ISP/IAP  Flash  Data  RegisterISP/IAP  Flash  Address  HighISP/IAP  Flash  Address  LowISP/IAP  Flash  Command  RegisterISP/IAP  Flash  Command  TriggerISP/IAP  Control  Register

ISPENSWBSSWRST -

WT2

WT1

WT0

MS2

MS1

MS0

Reset Value1111,11110000,00000000,0000xxxx,x000xxxx,xxxx000x,x000

ISP_ADDRHE3hISP_ADDRLE4hISP_CMDISP_TRIG

E5hE6h

ISP_CONTRE7h

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)24

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243     降低单片机对系统的电磁干扰 (EMI)---

1.禁止ALE信号输出,适用型号:三大措施

STC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC89LE53RC

STC89C54RD+,STC89C58RD+,STC89C516RD+,STC89LE54RD+,STC89LE58RD+,STC89LE516RD+  STC89LE516AD / X2 系列 (注:此系列单片机无EXTRAM控制位)

RC/RD+系列8051 单片机 扩展RAM管理及禁止ALE输出 特殊功能寄存器只写

MnemonicAddName

AUXR  7 6 - 5 - 4 - 3 - 2 -    1 0Reset value8EhAuxiliary  Register  0 -EXTRAMALEOFFxxxx,xx00

禁止ALE信号输出(应用示例供参考,C语言):

sfr

AUXR=AUXR=0x01;0x8e;/* 声明AUXR 寄存器的地址 */

/* ALEOFF位置1,禁止ALE信号输出,提升系统的EMI性能,复位后为0,ALE信号正常输出 */

禁止ALE信号输出(应用示例供参考,汇编语言):

AUXREQU

MOV8Eh;   或AUXRDATA8EhAUXR,#00000001B;  ALEOFF位置“1”,禁止ALE信号输出,提升了系统的EMI性能

2.  外部时钟频率降一半,6T模式: 传统的8051为每个机器周期12时钟,如将STC的增强型8051单片机在ISP烧录程序时设为双倍速(及6T模式,每个机器周期6时钟),则可将单片机外部时钟频率降低一半,有效的降低单片机时钟对外界的干扰

3.  单片机内部时钟振荡器增益降低一半:在ISP烧录程序时将OSCDN设为1/2 gain可以

有效的降低单片机时钟高频部分对外界的辐射,但此时外部晶振频率尽量不要高于24MHz。(www.61k.com)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)25

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C51RC/RD+ 系列单片机扩展RAM的使用STC89C51RC/RD+ 系列单片机扩展RAM的禁止

适用型号:

STC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC89LE53RC

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

STC89C54RD+,STC89C58RD+,STC89C516RD+,STC89LE54RD+,STC89LE58RD+,STC89LE516RD+

普通89C51,89C52系列单片机的内部RAM只有128(89C51)/256(89C52)供用户使用

1).低128字节的内部RAM(地址:00H~7FH),可直接寻址或间接寻址,(data/idata)

2).高128字节的内部RAM(地址:80H~FFH),只能间接寻址(普通89C51没有),(idata)   3).特殊功能寄存器SFR(地址:80H~FFH),只能直接寻址,(data)

特殊功能寄存器SFR和高128字节的内部RAM是通过寻址方式来区分的,传统的8051系列单片机只有128-256字节RAM供用户使用,在此情况下STC公司响应广大用户的呼声,在一些单片机内部增加了扩展RAM。[www.61k.com]STC89C58RD+系列单片机扩展了1024个字节RAM,共1280字节RAM;STC89C52RC系列扩展了256个字节RAM,共512字节RAM。访问内部扩展RAM时,不影响P0口/P2口/P3.6/P3.7。

RC/RD+系列8051 单片机 扩展RAM管理及禁止ALE只写

MnemonicAddName

AUXR8EhAuxiliary  Register  0  7 - 6 - 5 - 4 - 3 - 2 -    1 0Reset valueEXTRAMALEOFFxxxx,xx00

Symbol符号Function功能

EXTRAMInternal/External RAM access内部/外部 RAM 存取

0: 内部扩展的EXT_RAM可以存取.

RD+系列单片机

在00H到3FFH单元(1024字节),使用MOVX @DPTR指令访问,超过400H的地址空间

总是访问外部数据存储器(含400H单元),MOVX @Ri只能访问00H到FFH单元

RC系列单片机

在00H到FFH单元(256字节),使用MOVX @DPTR指令访问,超过100H的地址空间

总是访问外部数据存储器(含100H单元),MOVX @Ri只能访问00H到FFH单元

1: External data memory access.

外部数据存储器存取,禁止访问内部扩展RAM,此时MOVX @DPTR / MOVX @Ri的

8052单片机使用同普通

ALEOFFDisable/enable ALE.

0: ALE is emitted at a constant rate of 1/3 the oscillator frequency in

6 clock mode, 1/6 fosc in 12 clock mode

ALE脚输出固定的1/6晶振频率信号在12时钟模式时,在6时钟模式时输出固定 的1/3晶振频率信号.

1: ALE is active only during a MOVX or MOVC instruction.

ALE脚仅在执行MOVX or MOVC指令时才输出信号,好处是:降低了系统对外界的EMI.

注解:STC89LE516AD,STC89LE516X2 系列无EXTRAM控制位,仅有ALEOFF控制位。

STC89LE516AD/X2系列用  MOVX A, @Ri / MOVX @Ri, A指令固定访问内部扩展的EXTRAM,

用  MOVX  A, @DPTR / MOVX@DPTR,A指令固定访问外部RAM.

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)26

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

应用示例供参考(汇编):

访问内部扩展的EXTRAM

;新增特殊功能寄存器声明(汇编方式)

AUXRDATA8EH;        或者用    AUXREQU   8EH   定义

MOVAUXR,#00000000B;  EXTRAM位清为”0”, 其实上电复位时此位就为”0”.

;MOVX  A,  @DPTR / MOVX @DPTR,A指令可访问内部扩展的EXTRAM

;RD+系列为(00H - 3FFH,共1024字节)

;RC系列为(00H - FFH,共256字节)

;MOVX  A,  @Ri / MOVX  A, @Ri 指令可直接访问内部扩展的EXTRAM

;使用此指令 RD+系列 只能访问内部扩展的EXTRAM(00H - FFH,共256字节)

;写芯片内部扩展的EXTRAM

MOVDPTR,#address

MOVA,#value

MOVX@DPTR,A

;读芯片内部扩展的EXTRAM

MOV

MOVX

RD+系列

; 如果 #address < 400H,则在EXTRAM位为”0”时,访问物理上在内部,逻辑上在外部的

此EXTRAM

; 如果 #address >= 400H,则总是访问物理上外部扩展的RAM或I/O空间(400H--FFFFH)RC系列

; 如果 #address < 100H,则在EXTRAM位为”0”时,访问物理上在内部,逻辑上在外部的

此EXTRAM

; 如果 #address >= 100H,则总是访问物理上外部扩展的RAM或I/O空间(100H--FFFFH)DPTR,A,#address@DPTR禁止访问内部扩展的EXTRAM MOVAUXR,#00000010B;  EXTRAM控制位设置为”1”, 禁止访问EXTRAM,以防冲突

有些用户系统因为外部扩展了I/O 或者用片选去选多个RAM 区,有时与此内部扩展的EXTRAM逻辑地址上有冲突,将此位设置为”1”, 禁止访问此内部扩展的EXTRAM就可以了.

大实话 :  其实不用设置AUXR寄存器即可直接用MOVX @DPTR指令访问此内部扩展的EXTRAM,超过此RAM

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

空间,将访问片外单元.如果系统外扩了SRAM,而实际使用的空间小于1024/256字节,则可直接

将此SRAM省去,比如省去STC62WV256,IS62C256,UT6264等. 另外尽量用 MOVX A, @Ri /

MOVX @Ri, A指令访问此内部扩展的EXTRAM,这样只能访问256字节的扩展EXTRAM,但可与很

多单片机兼容。[www.61k.com)如STC89LE516AD/X2系列MOVX A, @Ri / MOVX @Ri, A指令只能固定访问内

部扩展的EXTRAM, MOVX  A,  @DPTR / MOVX

应用示例供参考(C 语言):

/*访问内部扩展的EXTRAM */

/*  RD+系列为(00H - 3FFH, 共1024字节扩展的EXTRAM) */

/*  RC 系列为(00H -  FFH, 共256字节扩展的EXTRAM)  */

/*新增特殊功能寄存器声明(C 语言方式)*/

sfrAUXR=0x8e/*如果不需设置AUXR就不用声明AUXR*/

AUXR=0x00;/*0000,0000  EXTRAM位清0, 其实上电复位时此位就为0 */

unsigned char  xdata  sum,loop_counter, test_array[128];

/*  将变量声明成 xdata 即可直接访问此内部扩展的EXTRAM*/ @DPTR,A指令固定访问外部RAM.

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)27

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243/*  写芯片内部扩展的EXTRAM*/

sum=0;

loop_counter

test_array[0]==128;5;

/*  读芯片内部扩展的EXTRAM*/

sum=test_array[0];

/*  RD+系列:

如果 #address < 400H,则在EXTRAM位为”0”时,访问物理上在内部,逻辑

上在外部的此EXTRAM

如果#address>=400H,则总是访问物理上外部扩展的RAM或I/O空间(400H-FFFFH)

RC系列:

如果 #address < 100H,则在EXTRAM位为”0”时,访问物理上在内部,逻辑

上在外部的此EXTRAM

如果#address>=100H,总是访问物理上外部扩展的RAM或I/O空间(100H--FFFFH)

*/禁止访问内部扩展的EXTRAM, AUXR=0x02;/*0000,0010, EXTRAM位设为”1”, 禁止访问EXTRAM,以防冲突 */有些用户系统因为外部扩展了I/O 或者用片选去选多个RAM 区,有时与此内部扩展的EXTRAM逻辑上有冲突,将此位设置为”1”, 禁止访问此内部扩展的EXTRAM就可以了.

AUXR是只写寄存器

所谓只写,就是直接用“MOV AUXR, #data”去写,而不要用含读的操作如“或,与,入栈”因为他不让你读,如去读,读出的数值不确定,用含读的操作如“或,与,入栈”,会达不到需要的效果。[www.61k.com]

单片机C版本和以前版本的区别(关于内部扩展RAM)传统的8051,内部无扩展RAM,而STC89C51RC/RD+系列单片机内部均已扩展了RAM,少数客户的老产品P0/P2是作为总线用的而不是作为普通I/O口用,有些需要用软件关闭此内部扩展RAM。而客户的源程序早已遗失,或开发工程师早已离职,所以STC89C51RC/RD+系列单片机为了解决此问题,推出C版本以供用户在ISP下载程序时就可选择关闭此内部扩展RAM,以达到完全兼容以前的老产品的目的。

一般不要在ISP下载程序时就选择关闭此内部扩展RAM,因为流行用法是复位后缺省是允许访问扩展RAM,复位后AUXR.1/AUXR.EXTRAM = 0, 选择关闭此内部扩展RAM,则本来是:在ISP下载程序时选择

“允许访问内部扩展RAM”

AUXR.1/AUXR.EXTRAM = 0

AUXR.1/AUXR.EXTRAM = 1

将都是既可以读又可以写。在ISP下载程序时选择“禁止访问内部扩展RAM”是禁止访问内部扩展RAM是允许访问内部扩展RAM是允许访问内部扩展RAM是禁止访问内部扩展RAM另STC89C51RC/RD+系列单片机C版本以前的单片机“AUXR寄存器是只写特性”,现C版本及以后的版本

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)28

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C58RD+系列单片机内部扩展RAM演示程序/* ---  STC International Limited ---------------- */

/* ---  Web : www.mcu-memory.com  ---------------- */

/* ---  xdata test ------------------------------- */

/* ---  宏晶科技 姚永平  设计 2005/6/1   ---------- */

/* ---  STC89C54RD+, STC89C58RD+, STC89C516RD+ --- */

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

/* ---  STC89LE54RD+,STC89LE58RD+,STC89LE516RD+ -- */

/* ---  Mobile: 13922805190 ---------------------- */

/* ---  Fax: 0755-82944243 ----------------------- */

/* ---  Tel: 0755-82908285 ----------------------- */

/* ---  Web  : www.mcu-memory.com ---------------- */

#include <reg52.h>

#include <intrins.h>        /* use _nop_() function */

sfr AUXR = 0x8e;

sfr AUXR1 = 0xa2;

sfr P4 = 0xe8;

sfr XICON = 0xc0;

sfr IPH = 0xb7;

sfr WDT_CONTR = 0xe1;

sfr ISP_DATA = 0xe2;

sfr ISP_ADDRH = 0xe3;

sfr ISP_ADDRL = 0xe4;

sfr ISP_CMD = 0xe5;

sfr ISP_TRIG = 0xe6;

sfr ISP_CONTR = 0xe7;

sbit ERROR_LED = P1^5;

sbit OK_LED = P1^7;

void main()

unsigned int array_point = 0;

/* 测试数组 Test_array_one[512],Test_array_two[512]*/

unsigned char xdata Test_array_one[512]        =

0x00,     0x01,     0x02,     0x03,     0x04,     0x05,     0x06,     0x07,        0x08,     0x09,     0x0a,     0x0b,     0x0c,     0x0d,     0x0e,     0x0f,        0x10,     0x11,     0x12,     0x13,     0x14,     0x15,     0x16,     0x17,        0x18,     0x19,     0x1a,     0x1b,     0x1c,     0x1d,     0x1e,     0x1f,        0x20,     0x21,     0x22,     0x23,     0x24,     0x25,     0x26,     0x27,宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)29

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243        0x28,     0x29,     0x2a,     0x2b,     0x2c,     0x2d,     0x2e,     0x2f,        0x30,     0x31,     0x32,     0x33,     0x34,     0x35,     0x36,     0x37,        0x38,     0x39,     0x3a,     0x3b,     0x3c,     0x3d,     0x3e,     0x3f,        0x40,     0x41,     0x42,     0x43,     0x44,     0x45,     0x46,     0x47,        0x48,     0x49,     0x4a,     0x4b,     0x4c,     0x4d,     0x4e,     0x4f,        0x50,     0x51,     0x52,     0x53,     0x54,     0x55,     0x56,     0x57,        0x58,     0x59,     0x5a,     0x5b,     0x5c,     0x5d,     0x5e,     0x5f,        0x60,     0x61,     0x62,     0x63,     0x64,     0x65,     0x66,     0x67,        0x68,     0x69,     0x6a,     0x6b,     0x6c,     0x6d,     0x6e,     0x6f,        0x70,     0x71,     0x72,     0x73,     0x74,     0x75,     0x76,     0x77,        0x78,     0x79,     0x7a,     0x7b,     0x7c,     0x7d,     0x7e,     0x7f,        0x80,     0x81,     0x82,     0x83,     0x84,     0x85,     0x86,     0x87,        0x88,     0x89,     0x8a,     0x8b,     0x8c,     0x8d,     0x8e,     0x8f,        0x90,     0x91,     0x92,     0x93,     0x94,     0x95,     0x96,     0x97,        0x98,     0x99,     0x9a,     0x9b,     0x9c,     0x9d,     0x9e,     0x9f,        0xa0,     0xa1,     0xa2,     0xa3,     0xa4,     0xa5,     0xa6,     0xa7,        0xa8,     0xa9,     0xaa,     0xab,     0xac,     0xad,     0xae,     0xaf,        0xb0,     0xb1,     0xb2,     0xb3,     0xb4,     0xb5,     0xb6,     0xb7,        0xb8,     0xb9,     0xba,     0xbb,     0xbc,     0xbd,     0xbe,     0xbf,        0xc0,     0xc1,     0xc2,     0xc3,     0xc4,     0xc5,     0xc6,     0xc7,        0xc8,     0xc9,     0xca,     0xcb,     0xcc,     0xcd,     0xce,     0xcf,        0xd0,     0xd1,     0xd2,     0xd3,     0xd4,     0xd5,     0xd6,     0xd7,        0xd8,     0xd9,     0xda,     0xdb,     0xdc,     0xdd,     0xde,     0xdf,        0xe0,     0xe1,     0xe2,     0xe3,     0xe4,     0xe5,     0xe6,     0xe7,        0xe8,     0xe9,     0xea,     0xeb,     0xec,     0xed,     0xee,     0xef,        0xf0,     0xf1,     0xf2,     0xf3,     0xf4,     0xf5,     0xf6,     0xf7,        0xf8,     0xf9,     0xfa,     0xfb,     0xfc,     0xfd,     0xfe,     0xff,        0xff,     0xfe,     0xfd,     0xfc,     0xfb,     0xfa,     0xf9,     0xf8,        0xf7,     0xf6,     0xf5,     0xf4,     0xf3,     0xf2,     0xf1,     0xf0,        0xef,     0xee,     0xed,     0xec,     0xeb,     0xea,     0xe9,     0xe8,        0xe7,     0xe6,     0xe5,     0xe4,     0xe3,     0xe2,     0xe1,     0xe0,        0xdf,     0xde,     0xdd,     0xdc,     0xdb,     0xda,     0xd9,     0xd8,        0xd7,     0xd6,     0xd5,     0xd4,     0xd3,     0xd2,     0xd1,     0xd0,        0xcf,     0xce,     0xcd,     0xcc,     0xcb,     0xca,     0xc9,     0xc8,        0xc7,     0xc6,     0xc5,     0xc4,     0xc3,     0xc2,     0xc1,     0xc0,        0xbf,     0xbe,     0xbd,     0xbc,     0xbb,     0xba,     0xb9,     0xb8,        0xb7,     0xb6,     0xb5,     0xb4,     0xb3,     0xb2,     0xb1,     0xb0,        0xaf,     0xae,     0xad,     0xac,     0xab,     0xaa,     0xa9,     0xa8,        0xa7,     0xa6,     0xa5,     0xa4,     0xa3,     0xa2,     0xa1,     0xa0,        0x9f,     0x9e,     0x9d,     0x9c,     0x9b,     0x9a,     0x99,     0x98,        0x97,     0x96,     0x95,     0x94,     0x93,     0x92,     0x91,     0x90,        0x8f,     0x8e,     0x8d,     0x8c,     0x8b,     0x8a,     0x89,     0x88,        0x87,     0x86,     0x85,     0x84,     0x83,     0x82,     0x81,     0x80,        0x7f,     0x7e,     0x7d,     0x7c,     0x7b,     0x7a,     0x79,     0x78,        0x77,     0x76,     0x75,     0x74,     0x73,     0x72,     0x71,     0x70,        0x6f,     0x6e,     0x6d,     0x6c,     0x6b,     0x6a,     0x69,     0x68,        0x67,     0x66,     0x65,     0x64,     0x63,     0x62,     0x61,     0x60,        0x5f,     0x5e,     0x5d,     0x5c,     0x5b,     0x5a,     0x59,     0x58,宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)30

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243        0x57,     0x56,     0x55,     0x54,     0x53,     0x52,     0x51,     0x50,        0x4f,     0x4e,     0x4d,     0x4c,     0x4b,     0x4a,     0x49,     0x48,        0x47,     0x46,     0x45,     0x44,     0x43,     0x42,     0x41,     0x40,        0x3f,     0x3e,     0x3d,     0x3c,     0x3b,     0x3a,     0x39,     0x38,        0x37,     0x36,     0x35,     0x34,     0x33,     0x32,     0x31,     0x30,        0x2f,     0x2e,     0x2d,     0x2c,     0x2b,     0x2a,     0x29,     0x28,        0x27,     0x26,     0x25,     0x24,     0x23,     0x22,     0x21,     0x20,        0x1f,     0x1e,     0x1d,     0x1c,     0x1b,     0x1a,     0x19,     0x18,        0x17,     0x16,     0x15,     0x14,     0x13,     0x12,     0x11,     0x10,        0x0f,     0x0e,     0x0d,     0x0c,     0x0b,     0x0a,     0x09,     0x08,        0x07,     0x06,     0x05,     0x04,     0x03,     0x02,     0x01,     0x00    };

unsigned char xdata Test_array_two[512]        =

0x00,     0x01,     0x02,     0x03,     0x04,     0x05,     0x06,     0x07,        0x08,     0x09,     0x0a,     0x0b,     0x0c,     0x0d,     0x0e,     0x0f,        0x10,     0x11,     0x12,     0x13,     0x14,     0x15,     0x16,     0x17,        0x18,     0x19,     0x1a,     0x1b,     0x1c,     0x1d,     0x1e,     0x1f,        0x20,     0x21,     0x22,     0x23,     0x24,     0x25,     0x26,     0x27,        0x28,     0x29,     0x2a,     0x2b,     0x2c,     0x2d,     0x2e,     0x2f,        0x30,     0x31,     0x32,     0x33,     0x34,     0x35,     0x36,     0x37,        0x38,     0x39,     0x3a,     0x3b,     0x3c,     0x3d,     0x3e,     0x3f,        0x40,     0x41,     0x42,     0x43,     0x44,     0x45,     0x46,     0x47,        0x48,     0x49,     0x4a,     0x4b,     0x4c,     0x4d,     0x4e,     0x4f,        0x50,     0x51,     0x52,     0x53,     0x54,     0x55,     0x56,     0x57,        0x58,     0x59,     0x5a,     0x5b,     0x5c,     0x5d,     0x5e,     0x5f,        0x60,     0x61,     0x62,     0x63,     0x64,     0x65,     0x66,     0x67,        0x68,     0x69,     0x6a,     0x6b,     0x6c,     0x6d,     0x6e,     0x6f,        0x70,     0x71,     0x72,     0x73,     0x74,     0x75,     0x76,     0x77,        0x78,     0x79,     0x7a,     0x7b,     0x7c,     0x7d,     0x7e,     0x7f,        0x80,     0x81,     0x82,     0x83,     0x84,     0x85,     0x86,     0x87,        0x88,     0x89,     0x8a,     0x8b,     0x8c,     0x8d,     0x8e,     0x8f,        0x90,     0x91,     0x92,     0x93,     0x94,     0x95,     0x96,     0x97,        0x98,     0x99,     0x9a,     0x9b,     0x9c,     0x9d,     0x9e,     0x9f,        0xa0,     0xa1,     0xa2,     0xa3,     0xa4,     0xa5,     0xa6,     0xa7,        0xa8,     0xa9,     0xaa,     0xab,     0xac,     0xad,     0xae,     0xaf,        0xb0,     0xb1,     0xb2,     0xb3,     0xb4,     0xb5,     0xb6,     0xb7,        0xb8,     0xb9,     0xba,     0xbb,     0xbc,     0xbd,     0xbe,     0xbf,        0xc0,     0xc1,     0xc2,     0xc3,     0xc4,     0xc5,     0xc6,     0xc7,        0xc8,     0xc9,     0xca,     0xcb,     0xcc,     0xcd,     0xce,     0xcf,        0xd0,     0xd1,     0xd2,     0xd3,     0xd4,     0xd5,     0xd6,     0xd7,        0xd8,     0xd9,     0xda,     0xdb,     0xdc,     0xdd,     0xde,     0xdf,        0xe0,     0xe1,     0xe2,     0xe3,     0xe4,     0xe5,     0xe6,     0xe7,        0xe8,     0xe9,     0xea,     0xeb,     0xec,     0xed,     0xee,     0xef,        0xf0,     0xf1,     0xf2,     0xf3,     0xf4,     0xf5,     0xf6,     0xf7,        0xf8,     0xf9,     0xfa,     0xfb,     0xfc,     0xfd,     0xfe,     0xff,        0xff,     0xfe,     0xfd,     0xfc,     0xfb,     0xfa,     0xf9,     0xf8,宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)31

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243        0xf7,     0xf6,     0xf5,     0xf4,     0xf3,     0xf2,     0xf1,     0xf0,        0xef,     0xee,     0xed,     0xec,     0xeb,     0xea,     0xe9,     0xe8,        0xe7,     0xe6,     0xe5,     0xe4,     0xe3,     0xe2,     0xe1,     0xe0,        0xdf,     0xde,     0xdd,     0xdc,     0xdb,     0xda,     0xd9,     0xd8,        0xd7,     0xd6,     0xd5,     0xd4,     0xd3,     0xd2,     0xd1,     0xd0,        0xcf,     0xce,     0xcd,     0xcc,     0xcb,     0xca,     0xc9,     0xc8,        0xc7,     0xc6,     0xc5,     0xc4,     0xc3,     0xc2,     0xc1,     0xc0,        0xbf,     0xbe,     0xbd,     0xbc,     0xbb,     0xba,     0xb9,     0xb8,        0xb7,     0xb6,     0xb5,     0xb4,     0xb3,     0xb2,     0xb1,     0xb0,        0xaf,     0xae,     0xad,     0xac,     0xab,     0xaa,     0xa9,     0xa8,        0xa7,     0xa6,     0xa5,     0xa4,     0xa3,     0xa2,     0xa1,     0xa0,        0x9f,     0x9e,     0x9d,     0x9c,     0x9b,     0x9a,     0x99,     0x98,        0x97,     0x96,     0x95,     0x94,     0x93,     0x92,     0x91,     0x90,        0x8f,     0x8e,     0x8d,     0x8c,     0x8b,     0x8a,     0x89,     0x88,        0x87,     0x86,     0x85,     0x84,     0x83,     0x82,     0x81,     0x80,        0x7f,     0x7e,     0x7d,     0x7c,     0x7b,     0x7a,     0x79,     0x78,        0x77,     0x76,     0x75,     0x74,     0x73,     0x72,     0x71,     0x70,        0x6f,     0x6e,     0x6d,     0x6c,     0x6b,     0x6a,     0x69,     0x68,        0x67,     0x66,     0x65,     0x64,     0x63,     0x62,     0x61,     0x60,        0x5f,     0x5e,     0x5d,     0x5c,     0x5b,     0x5a,     0x59,     0x58,        0x57,     0x56,     0x55,     0x54,     0x53,     0x52,     0x51,     0x50,        0x4f,     0x4e,     0x4d,     0x4c,     0x4b,     0x4a,     0x49,     0x48,        0x47,     0x46,     0x45,     0x44,     0x43,     0x42,     0x41,     0x40,        0x3f,     0x3e,     0x3d,     0x3c,     0x3b,     0x3a,     0x39,     0x38,        0x37,     0x36,     0x35,     0x34,     0x33,     0x32,     0x31,     0x30,        0x2f,     0x2e,     0x2d,     0x2c,     0x2b,     0x2a,     0x29,     0x28,        0x27,     0x26,     0x25,     0x24,     0x23,     0x22,     0x21,     0x20,        0x1f,     0x1e,     0x1d,     0x1c,     0x1b,     0x1a,     0x19,     0x18,        0x17,     0x16,     0x15,     0x14,     0x13,     0x12,     0x11,     0x10,        0x0f,     0x0e,     0x0d,     0x0c,     0x0b,     0x0a,     0x09,     0x08,        0x07,     0x06,     0x05,     0x04,     0x03,     0x02,     0x01,     0x00    };

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

ERROR_LED = 1;

OK_LED = 1;

for(array_point=0; array_point<512; array_point++)

if(Test_array_one[array_point]!=Test_array_two [array_point]){

ERROR_LED = 0;

OK_LED = 1;

break;

else{

OK_LED = 0;

ERROR_LED = 1;

while(1);

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)32

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243          双数据指针DPTR0,DPTR1的使用

适用型号:

STC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC89LE53RC

STC89C54RD+,STC89C58RD+,STC89C516RD+,STC89LE54RD+,STC89LE58RD+,STC89LE516RD+ STC89LE516AD,STC89LE516X2

RC/RD+/AD/X2 系列8051 单片机 双数据指针 特殊功能寄存器

MnemonicAddName

AUXR1  7 6 - 5 - 4 - 3 2    1   - 0Reset valueA2hAuxiliary  Register  1 -GF2 -DPSxxxx,0xx0Symbol符号Function功能

GF2General purpose user-defined flag. 通用功能用户自定义位

DPSDPTR registers select bit. DPTR 寄存器选择位

0: DPTR0 is selected       DPTR0被选择

1: DPTR1 is selected       DPTR1被选择

此系列单片机有两个16-bit 数椐指针,DPTR0,DPTR1.当DPS选择位为0时,选择DPTR0, 当DPS选择位为1时,选择DPTR1.

AUXR1特殊功能寄存器,位于A2H单元,其中的位不可用布尔指令快速访问.但由于DPS位位于bit0,故对AUXR1寄存器用INC指令,DPS位便会反转,由0变成1或由1变成0,即可实现双数椐指针的快速切换.

应用示例供参考:

;新增特殊功能寄存器定义

AUXR1DATA0A2H

MOV

MOV

MOV

MOVX

MOV

MOV

MOVX

INC

MOV

MOVX

INC

MOVX

INC

MOVX

INC

MOVXAUXR1,#0DPTR,A,#1FFH#55H;将1FFH单元置为55H; 置DPTR0为2FFH;将2FFH单元置为0AAH; 此时DPS为1,DPTR1有效#1FFH@DPTR; 置DPTR1为1FFH; 读DPTR1数椐指针指向的1FFH单元的内容,累加器A变为55H.; 此时DPS为0,DPTR0有效@DPTR; 读DPTR0数椐指针指向的2FFH单元的内容,累加器A变为0AAH.; 此时DPS为1,DPTR1有效@DPTR; 读DPTR1数椐指针指向的1FFH单元的内容,累加器A变为55H.; 此时DPS为0,DPTR0有效@DPTR; 读DPTR0数椐指针指向的2FFH单元的内容,累加器A变为0AAH.;此时DPS为0,DPTR0有效;置DPTR0为1FFH@DPTR,ADPTR,A,#2FFH#0AAH@DPTR,AAUXR1DPTR,A,AUXR1A,AUXR1A,AUXR1A,

结论: 与Philips使用方式一致宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)33

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

P4 口 (可以位寻址,可像操作P1/P2/P3一样操作P4口)

RC/RD+系列8051 单片机 I/O 口 特殊功能寄存器   Port SFRs

MnemonicP0P1P2P3P4

Add80h90hA0hB0hE8h

Name

8-bit  Port 08-bit  Port 18-bit  Port 28-bit  Port 34-bit  Port 4

0P0.0P1.0P2.0P3.0P4.0

Reset Value1111,11111111,11111111,11111111,1111xxxx,1111

P0.7P0.6P1.7P1.6P2.7P2.6P3.7P3.6 -

P0.5P0.4P0.3P0.2P0.1P1.5P1.4P1.3P1.2P1.1P2.5P2.4P2.3P2.2P2.1P3.5P3.4P3.3P3.2P3.1 -

P4.3P4.2P4.1

汇编语言:

P4MOVMOVSETBCLRMOV

DATAA,P4,P4.0P4.0P4,

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

0E8H;P4

;;;#0AH;#0AH;

or

P4

EQU

0E8H

Read P4 status to Accumulator.Output data “A”through P4.0 - P4.3P4.0 = 1P4.0 = 0

Output data “A”through P4.0 - P4.3

C语言:

sfr

P4

0xe8;C语言中声明P4口特殊功能寄存器地址

注:STC89LE516AD,STC89LE516X2,STC89LE58AD,STC89LE54AD的P4口地址在C0h。[www.61k.com)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)34

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243                看门狗应用

适用型号:

STC89C51RC,STC89C52RC,STC89C53RC,STC89LE51RC,STC89LE52RC,STC89LE53RC

STC89C54RD+,STC89C58RD+,STC89C516RD+,STC89LE54RD+,STC89LE58RD+,STC89LE516RD+        宏晶技术支持,请直接向宏晶采购晶片,而不要通过中间商,支持我们更好地服务

RC/RD+系列 8051单片机 看门狗定时器 特殊功能寄存器 Watch Dog Timer SFR

MnemonicAddName

Watch-Dog-Timer

Control register 7 - 6 - 5 4 3 2 1 0Reset ValueWDT_CONTRE1hEN_WDTCLR_WDTIDLE_WDTPS2PS1PS0xx00,0000Symbol符号Function功能

EN_WDTEnable WDT bit. When set, WDT is started

看门狗允许位, 当设置为“1”时,看门狗启动。[www.61k.com)

CLR_WDTWDT clear bit. When set, WDT will recount. Hardware will automatically clear

看门狗清“0”位,当设为“1”时,看门狗将重新计数。硬件将自动清“0”此位。

IDLE_WDT

mode

看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在“空闲模式”计数

当清“0”该位时, 看门狗定时器在“空闲模式”时不计数PS2, PS1, PS0 Pre-scale value of Watchdog timer is shown as the bellowed table:            看门狗定时器预分频值,如下表所示PS2

1PS1 0 0 1 1 0 0 1 1PS0 0 1 0 1 0 1 0 1Pre-scale预分频    2    4    8    16    32    64    128    256WDT Period @20MHzand 12 clocks mode       39.3 mS       78.6 mS     157.3 mS     314.6 mS     629.1 mS        1.25S        2.5S        5S            this bit.When set, WDT is enabled in IDLE mode. When clear, WDT is disabled in IDLE

The WDT period is determined by the following equation 看门狗溢出时间计算

看门狗溢出时间=( N x Pre-scale x 32768) / Oscillator frequency

N = 12, 当在12 clock mode时,N = 6,当在6 clock mode 时

设时钟为12MHz,12时钟模式

看门狗溢出时间 = ( 12 x Pre-scale x 32768) / 12000000 = Pre-scale x 393216 / 12000000

PS2

1PS1 0 0 1 1 0 0 1 1PS0 0 1 0 1 0 1 0 1Pre-scale预分频    2    4    8    16    32    64    128    256WDT Period @12MHzand 12 clocks mode       65.5 mS     131.0 mS     262.1 mS     524.2 mS      1.0485S      2.0971S      4.1943S      8.3886S

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)35

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    设时钟为11.0592MHz, 12时钟模式

看门狗溢出时间 = (12 x Pre-scale x 32768) / 11059200 = Pre-scale x 393216 / 11059200PS2

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

1PS1 0 0 1 1 0 0 1 1PS0 0 1 0 1 0 1 0 1Pre-scale预分频    2    4    8    16    32    64    128    256WDT Period @11.0592MHzand  12  clocks  mode       71.1 mS     142.2 mS     284.4 mS     568.8 mS      1.1377S      2.2755S      4.5511S      9.1022S

汇编语言程序示例

WDT_CONTR

;复位入口

ORG

LJMP

ORG

Initial:

MOV

Main_Loop:

LCALL

LCALL

MOV

LJMPWDT_CONTR,#00110100B ;  喂狗,  不要用 ORL    WDT_CONTR,  #00010000BMain_LoopDisplay_LoopKeyboard_Loop0060HWDT_CONTR,#00110100B; Load initial value 看门狗定时器控制寄存器初始化0000HInitialDATA0E1H ;    或者   WDT_CONTREQU   0E1H               ; EN_WDT = 1, CLR_WDT = 1, IDLE_WDT = 0, PS2 = 1, PS1 = 0, PS0 = 0

C语言程序示例

#include<reg52.h>

sfrWDT_CONTR=0xe1;

void main()

{   …

WDT_CONTR

*/

while(1){

display();

keyboard();

WDT_CONTR

}=0x34;  /* 喂狗,  不要用  WDT_CONTR=WDT_CONTR |0x10;*/=0x34;/* 0011,0100 EN_WDT = 1,CLR_WDT = 1, IDLE_WDT = 0, PS2 = 1, PS1 = 0, PS0 = 0

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)36

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;本程序用于验证 STC89C/LE51RC/RD+ 系列单片机的看门狗及其溢出时间计算公式

;看门狗及其溢出时间 = (N * Pre_scale *32768)/Oscillator frequency

;  N = 12, 当在 12 clock mode 时, N = 6, 当在 6 clock mode 时。(www.61k.com)

WDTCR      EQU      0E1H          ;看门狗地址

LED        EQU      P1.5          ;用 P1.5 控制发光二级管

Pre_scale_Word  EQU   0x35      ;清0、启动看门狗,预分频数=64

;f=18.432MHz、12clock mode 时

;   看门狗溢出时间 = (12 * 64 * 32768)/18432000 = 1.36S

ORG   0000H

AJMP  main

ORG   0100H

main:

CLR   LED                    ;点亮 LED

ACALL delay                 ;延时,让 LED 亮大约 1S 的时间

MOV   WDTCR, #Pre_scale_Word ;启动看门狗,若注释掉本条指令即不启动狗,

;LED 只会亮一次

SETB  LED                      ;熄灭 LED

wait:

SJMP  wait         ;跳转到本语句(停机),等待看门狗溢出复位, 复位后将再次点亮 LEDdelay:

MOV   R0, #0

MOV   R1, #0

MOV   R2, #15

delay_loop:

DJNZ  R0, delay_loop

DJNZ  R1, delay_loop

DJNZ  R2, delay_loop

RET

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)37

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

中断

RC/RD+系列8051 单片机 中断 特殊功能寄存器Interrupt SFRs

MnemonicAddIEIPIPHXICON

A8hB8hB7hC0h

Name

Interrupt  EnableInterrupt  Priority  LowInterrupt  Priority  HighAuxiliary  Interrupt  Control

7EA -PX3

6 - -EX3

5ET2PT2IE3

4ESPS

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

3ET1PT1

2EX1PX1EX2

1ET0PT0IE2

0EX0PX0IT2

Reset Value0000,0000xx00,00000000,0000

PX3HPX2HPT2HPSHPT1HPX1HPT0HPX0H0000,0000

IT3PX2

中断与普通8052完全兼容,优先级可设为4级,另增加2个外部中断INT2/P4.3,INT3/P4.2。(www.61k.com)

Interrupt Source中断源/INT0Timer 0/INT1Timer 1UARTTimer 2/INT2/INT3

VectorAddress中断

向量地址0003H000BH0013H001BH0023H002BH0033H003BH

PollingSequence中断

查询次序0(最优先)1234567(最低)

Interrupt

优先级3

Request优先级2

最高

中断请求1,01,01,01,01,01,01,01,0

1,11,11,11,11,11,11,11,1

IE0TF0IE1IF1RI + TITF2 + EXF2IE2IE3

中断

优先级设置PX0H,PX0PT0H,PT0PX1H,PX1PT1H,PT1PSH,  PSPT2H,PT2PX2H,PX2PX3H,PX3

优先级0最低0,00,00,00,00,00,00,00,0

优先级1

0,10,10,10,10,10,10,10,1

XICON(扩展中断控制)寄存器,控制外部中断INT2/INT3

NameFunctionPX3EX3IE3IT3PX2EX2IE2IT2

External interrupt 3 priority high if setExternal interrupt 3 enable if set

IE3 is set/cleared automatically by hardware when interrupt is detected/serviced

External interrupt 3 is falling-edge/low-level triggered when this bit is set/cleared by softwareExternal interrupt 2 priority high if setExternal interrupt 2 enable if set

IE2 is set/cleared automatically by hardware when interrupt is detected/serviced

External interrupt 2 is falling-edge/low-level triggered when this bit is set/cleared by software

PXH3External interrupt 3 priority highest if setPXH2External interrupt 2 priority highest if set

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)38

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243  PCON寄存器的高级应用,上电复位标志,进入掉电模式MnemonicAddName

PCON87hPower  Control  7SMOD 6 5 4 3 2    1 0IDL

stc89c52中文资料 STC89C52RC_中文指南_

Reset value00x1,0000 SMOD0 -POFGF1GF0   PD

POF:上电复位标志位,单片机停电后,上电复位标志位为1,可由软件清0。[www.61k.com]

实际应用:要判断是上电复位(冷启动),还是外部复位脚输入复位信号产生的复位,还是内部看门狗复位,可通过如下方法来判断:

PD:将其置1时,进入Power Down模式,可由外部中断低电平触发中断模式唤醒。

进入掉电模式时,外部时钟停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。IDL:将其置1时,进入IDLE模式(空闲),除CPU不工作外,其余仍继续工作。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)39

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C51RC/RD+ 系列单片机如何从掉电模式唤醒

;*************************************************************************

;Wake Up Idle and Wake Up Power Down

;*************************************************************************

ORG   0000H

AJMP MAIN

ORG   0003H

int0_interrupt:

CLR   P1.7          ;点亮 P1.7 LED 表示已响应 int0 中断

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

ACALL delay         ;延时是为了便于观察, 实际应用不需延时

CLR   EA            ;关闭中断, 简化实验. 实际应用不需关闭中断

RETI

ORG   0013H

int1_interrupt:

CLR   P1.6          ;点亮 P1.6 LED 表示已响应 int1 中断

ACALL delay         ;延时是为了便于观察, 实际应用不需延时

CLR   EA            ;关闭中断, 简化实验. 实际应用不需关闭中断

RETI

ORG   0100H

delay:

CLR   A

MOV   R0, A

MOV   R1, A

MOV   R2, #02

delay_loop:

DJNZ  R0, delay_loop

DJNZ  R1, delay_loop

DJNZ  R2, delay_loop

RET

main:

MOV   R3, #0        ;P1 LED 递增方式变化, 表示程序开始运行

main_loop:

MOV   A, R3

CPL   A

MOV   P1, A

ACALL delay

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)40

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    INC   R3

MOV   A, R3

SUBB  A, #18H

JC    main_loop

MOV   P1, #0FFH     ;熄灭全部灯表示进入 Power Down 状态

CLR   IT0           ;设置低电平激活外部中断

;   SETB  IT0           ;下降沿激活不了 Power Down 状态下的外部中断。(www.61k.com]原因是

;MCU 判断下降沿需要 2 个机器周期, 而此时 CLOCK 已停止,                       ;MCU 无法运行 2 个机器周期。

SETB  EX0           ;允许外部中断0

CLR   IT1           ;设置低电平激活外部中断

;   SETB  IT1           ;下降沿激活不了 Power Down 状态下的外部中断, 原因同上

SETB  EX1           ;允许外部中断1

SETB  EA            ;开中断, 若不开中断就不能唤醒 Power Down

;下条语句将使 MCU 进入 idle 状态或 Power Down 状态

;低电平激活外部中断可以将 MCU 从 Power Down 状态中唤醒

;其方法为:将外部中断脚拉低

MOV   A, PCON       ;令 PD=1, 进入 Power Down 状态, PD = PCON.2

ORL   A, #02H

MOV   PCON, A

MOV   PCON, #01H    ;删除本语句前的";", 同时将前3条语句前加上注释符号";",                        ;令 IDL=1, 可进入 idle 状态, IDL = PCON.1

MOV   P1, #0DFH     ;请注意:

; 1.外部中断使MCU退出 Power Down 状态,执行本条指令后

;响应中断, 表现为P1.5与P1.7的LED同时亮(INT0唤醒)

; 2.外部中断使MCU退出 idle 状态,先响应中断然后再执行本                        ;条指令, 表现为P1.7的LED先亮(INT0唤醒)P1.5的LED后亮WAIT1:

SJMP  WAIT1         ;跳转到本语句, 停机

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)41

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C51RC/RD+系列单片机定时器的使用

定时器0和1

定时和计数功能由特殊功能寄存器TMOD的控制位进行选择,TMOD寄存器的各位信息如下表所列。(www.61k.com)可以看出,2个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和2都相同,模式3不同,各模式下的功能如下所述。

寄存器TMOD各位的功能描述

TMOD     地址:89H

不可位寻址复位值:00H

stc89c52中文资料 STC89C52RC_中文指南_

定时器1

TMOD.7/

TMOD.3/

TMOD.6/符号       功能GATEGATE定时器0TMOD.7控制定时器1,置1时只有在INT1脚为高及TR1控制位置1时才TMOD.3控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才TMOD.6控制定时器1用作定时器或计数器,清零则用作定时器(从内                    可打开定时器/计数器1。                    可打开定时器/计数器0。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

部系统时钟输入),置1用作计数器(从T1/P3.5脚输入)TMOD.2/TMOD.2控制定时器0用作定时器或计数器,清零则用作定时器(从内

部系统时钟输入),置1用作计数器(从T0/P3.4脚输入)

TMOD.5/TMOD.4  M1、M0

0    0

0    1

1    0

1    1

TMOD.1/TMOD.0  M1、M0

0    0定时器/计数器1模式选择13位定时器/计数器,兼容8048定时器模式,TL1只用低5位参与分16位定时器/计数器,TL1、TH1全用8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1。定时器/计数器1此时无效(停止计数)。定时器/计数器0模式选择13位定时器/计数器,兼容8048定时器模式,TL0只用低5位参与分                   频,TH1整个8位全用。

频,TH0整个8位全用。

0    116位定时器/计数器,TL0、TH0全用

1    08位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0。                1    1定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时器/计

数器,通过标准定时器0的控制位控制。TH0仅作为一个8位定时器,                         由定时器1的控制位控制。

1.模式0

将定时器设置成模式0时类似8048定时器,即8位计数器带32分频的预分频器。下图所示为模式0工作方式。此模式下,定时器配置为13位的计数器,由TLn的低5位和THn的8位所构成。TLn低5位溢出向THn进位,THn计数溢出置位TCON中的溢出标志位TFn(n=0,1)。GATE=0时,如TRn=1,则定时器计数。GATE=1时,允许由外部输入INT1控制定时器1,INT0控制定时器0,这样可实现脉宽测量。TRn为TCON寄存器内的控制位,TCON寄存器各位的具体功能描述见TCON寄存器各位的具体功能描述表。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)42

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

中断

* 在6时钟模式下,d=6;在12时钟模式下,d=12。[www.61k.com]

图   定时器/计数器0和定时器/计数器1的模式0   :   13位定时/计数器

表  寄存器TCON各位的功能描述

TCON  地址:88H

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位不定,可将其忽略。置位运行标志(TRn)不能清零此寄存器。模式0的操作对于定时器0及定时器1都是相同的。2个不同的GATE位(TMOD.7和TMOD.3)分别分配给定时器1及定时器0。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)43

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442432.模式1

模式1除了使用了THn及TLn全部16位外,其他与模式0完全相同。(www.61k.com]

stc89c52中文资料 STC89C52RC_中文指南_

中断

* 在6时钟模式下,d=6;在12时钟模式下,d=12。

图   定时器/计数器0和定时器/计数器1的模式1   :   16位定时/计数器

3.模式2

此模式下定时器/计数器0和1作为可自动重装载的8位计数器(TLn),如下图所示。TLn的溢出不仅置位TFn,而且将THn内容重新装入TLn,THn内容由软件预置,重装时THn内容不变。模式2的操作对于定时器0及定时器1是相同的。

中断* 在6时钟模式下,d=6;在12时钟模式下,d=12。

图   定时器/计数器0和1的模式2

stc89c52中文资料 STC89C52RC_中文指南_

:  8位自动重装载

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)44

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442434.模式3

对定时器1,在模式3时,定时器1停止计数,效果与将TR1设置为0相同。(www.61k.com)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

对定时器0,此模式下定时器0的TL0及TH0作为2个独立的8位计数器。下图为模式3时的定时器0逻辑图。TL0占用定时器0的控制位:C/、GATE、TR0及TF0。TH0限定为定时器功能(计数器周期),占用定时器1的TR1及TF1。此时,TH0控制定时器1中断。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

模式3是为了增加一个附加的8位定时器/计数器而提供的,使单片机具有三个定时器/计数器。模式3只适用于定时器/计数器0,定时器T1处于模式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率发生器),而T0可作为两个定时器用。

中断

* 在6时钟模式下,d=6;在12时钟模式下,d=12。

图   定时/计数器0的模式3   :   两个8位计数器

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)45

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243                 定时器应用举例

【例1】 定时/计数器编程,定时/计数器的应用编程主要需考虑:根据应用要求,通过程序初始化,正确设置控制字,正确计算和计算计数初值,编写中断服务程序,适时设置控制位等。(www.61k.com)通常情况下,设置顺序大致如下:

1)工作方式控制字(TMOD、T2CON)的设置;

2)计数初值的计算并装入THx、TLx、RCAP2H、RCAP2L;

3)中断允许位ETx、EA的设置,使主机开放中断;

4) 启/停位TRx的设置等。

现以定时/计数器0或1为例作一简要介绍。

8051系列单片机的定时器/计数器0或1是以不断加1进行计数的,即属加1计数器,因此,就不能直接将实际的计数值作为计数初值送入计数寄存器THx、TLx中去,而必须将实际计数值以28、213、216为模求补,以其补码作为计数初值设置THx和TLx。

设:实际计数值为X,计数器长度为n(n=8、13、16),则应装入计数器THx、TLx中的计数初值为2n-x,式中2n为取模值。例如,工作方式0的计数长度为13位,则n=13,以213为模,工作方式1的计数长度为16,则n=16,以216为模等等。所以,计数初值为(x)= 2n-x。

对于定时模式,是对机器周期计数,而机器周期与选定的主频密切相关。因此,需根据应用系统所选定的主频计算出机器周期值。现以主频6MHz为例,则机器周期为:

一个机器周期=12

主振频率=12

6×106μs=2μs

实际定时时间Tc = x?Tp

式中Tp为机器周期,Tc为所需定时时间,x为所需计数次数。Tp和Tp一般为已知值,在求出Tp后即可求得所需计数值x,再将x求补码,即求得定时计数初值。即

(x)补= 2n - x

例如,设定时时间Tc = 5ms,机器周期TP = 2μs,可求得定时计数次数x =5ms

2μs= 2500次

设选用工作方式1,则n=16,则应设置的定时时间计数初值为:(x)补= 216 - x=65536-2500=63036,还需将它分解成两个8位十六进制数,分别求得低8位为3CH装入TLx,高8位为F6H装入THx中。

工作方式0、1、2的最大计数次数分别为8192、65536和256。

对外部事件计数模式,只需根据实际计数次数求补后变换成两个十六进制码即可。

【例2】 定时/计数器应用编程,设某应用系统,选择定时/计数器1定时模式,定时时间Tc =10ms,主频频率为12MHz,每10ms向主机请求处理。选定工作方式1。计算得计数初值:低8位初值为F0H,高8位初值为D8H。

(1)初始化程序

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)46

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

所谓初始化,一般在主程序中根据应用要求对定时/计数器进行功能选择及参数设定等预置程序,本例初始化程序如下:

START:

;主程序段

SP,#60HTMOD,#10HTH1,#0D8HTL1,#0F0H

;设置堆栈区域

;选择T1、定时模式,工作方式1;设置高字节计数初值;设置低字节计数初值;;

MOVMOVMOVMOV

SETBEASETBET1

开中断

;其他初始化程序

;启动T1开始计时

SETBTR1

(2)中断服务程序INTT1:

PUSHAPUSH DPLPUSH DPH

;;;

;继续主程序

现场保护

MOVMOV

TL1,#0F0HTH1,#0D8H

;;

重新置初值

;中断处理主体程序

DPHDPLA

POPPOPPOPRETI

;;;返回

现场恢复

这里展示了中断服务子程序的基本格式。[www.61k.com]8052系列单片机的中断属于矢量中断,每一个矢量中断源只留有8个字节单元,一般是不够用的,常需用转移指令转到真正的中断服务子程序区去执行。

【例3】 对外部正脉冲测宽。选择定时/计数器2进行脉宽测试较方便,但也可选用定时/计数器0或定时/计数器1进行测宽操作。本例选用定时/计数器0(T0)以定时模式,工作方式1对INT0引脚上的正脉冲进行脉宽测试。

设置GATE为1,机器周期TP为1μs。本例程序段编制如下:

INTT0:

MOV

TMOD,#09H

;设T0为定时方式1,GATE为1

stc89c52中文资料 STC89C52RC_中文指南_

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)47

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MOV

MOV

CLR

LOP1:

LOP2:JBJNBTL0,#00HTH0,#00HEX0P3.2,LOP1P3.2,LOP2     ;     ;}TH0,TL0清0;关INT0中断;等待INT0引低电平;等待INT0引脚高电平

;启动T0开始计数

;等待INT0低电平

;停止T0计数

;低字节计数值送A

;高字节计数值送B

;计算脉宽和处理SETBTR0LOP3:JBCLRMOVMOVP3.2,LOP3TR0A,TL0B,TH0

【例4】 利用定时/计数器0或定时/计数器1的Tx端口改造成外部中断源输入端口的应用设计。(www.61k.com)在某些应用系统中常会出现原有的两个外部中断源INT0和INT1不够用,而定时/计数器有多余,则可将Tx用于增加的外部中断源。现选择定时/计数器1为对外部事件计数模式工作方式2(自动再装入),设置计数初值为FFH,则T1端口输入一个负跳变脉冲,计数器即回0溢出,置位对应的中断请求标志位TF1为1,向主机请求中断处理,从而达到了增加一个外部中断源的目的。应用定时/计数器1(T1)的中断矢量转入中断服务程序处理。其程序示例如下:

(1)主程序段:

ORG0000H

;转主程序AJMPMAIN

ORG001BH

LJMPINTER…

ORG

MAIN:…    ;转T1中断服务程序…0100;主程序入口

MOV

MOV

MOV

MOV…SP,#60HTMOD,#60HTL1,#0FFHTH1,#0FFH

;开中断

;开定时/计数器1中断

;启动定时/计数器1计数;设置堆栈区;设置定时/计数器1,计数方式2;设置计数常数SETBEASETBET1SETBTR1

(2)中断服务程序(具体处理程序略)

ORG

INTER:1000H;

;…PUSHAPUSHDPLPUSHDPH}现场入栈保护

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)…48

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

POPPOPPOPRETI

……

中断处理主体程序;

DPHDPLA

;;;

现场出栈复原

;返回

这是中断服务程序的基本格式。[www.61k.com]

【例5】 某应用系统需通过P1.0和P1.1分别输出周期为200μs和400μs的方波。为此,系统选用定时器/计数器0(T0),定时方式3,主频为6MHz,TP=2μs,经计算得定时常数为9CH和38H。

本例程序段编制如下:(1)初始化程序段

PLT0:MOV

MOVMOV

TMOD,#03HTL0,#9CHTH0,#38H

;设置T0定时方式3    ;设置TL0初值    ;设置TH0初值

;;;

SETBEASETBET0SETBET1SETBTR0SETBTR1

开中断

;启动;启动

(2)中断服务程序段1)

MOV

CPL

……

TL0,#9CHP1.0

INT0P:

;重新设置初值

;对P1.0输出信号取反

RETI

;返回

2)

INT1P

MOVCPL

……

TH0,#38HP1.1

;重新设置初值

;对P1.1输出信号取反

RETI

;返回

49

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

在实际应用中应注意的问题如下。(www.61k.com]

(1)定时/计数器的实时性

定时/计数器启动计数后,当计满回0溢出向主机请求中断处理,由内部硬件自动进行。但从回0溢出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不同,一般需延时3个机器周期以上,这就给实时处理带来误差。大多数应用场合可忽略不计,但对某些要求实时性苛刻的场合,应采用补偿措施。

这种由中断响应引起的时间延时,对定时/计数器工作于方式0或1而言有两种含义:一是由于中断响应延时而引起的实时处理的误差;二是如需多次且连续不间断地定时/计数,由于中断响应延时,则在中断服务程序中再置计数初值时已延误了若干个计数值而引起误差,特别是用于定时就更明显。

例如选用定时方式1设置系统时钟,由于上述原因就会产生实时误差。这种场合应采用动态补偿办法以减少系统始终误差。所谓动态补偿,即在中断服务程序中对THx、TLx重新置计数初值时,应将THx、TLx从回0溢出又重新从0开始继续计数的值读出,并补偿到原计数初值中去进行重新设置。可考虑如下补偿方法:

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

CLR

MOV

ADD

MOV

MOV…EAA,TLxA,#LOWTLx,AA,#HIGH;禁止中断;读TLx中已计数值;LOW为原低字节计数初值;设置低字节计数初值;原高字节计数初值送A

;高字节计数初值补偿

;置高字节计数初值

;开中断ADDCA,THxMOVTHx,ASETBEA

(2)动态读取运行中的计数值

在动态读取运行中的定时/计数器的计数值时,如果不加注意,就可能出错。这是因为不可能在同一时刻同时读取THx和TLx中的计数值。比如,先读TLx后读THx,因为定时/计数器处于运行状态,在读TLx时尚未产生向THx进位,而在读THx前已产生进位,这时读得的THx就不对了;同样,先读THx后读TLx也可能出错。

一种可避免读错的方法是:先读THx,后读TLx,将两次读得的THx进行比较;若两次读得的值相等,则可确定读的值是正确的,否则重复上述过程,重复读得的值一般不会再错。此法的软件编程如下:

RDTM:  MOV A,THx

MOV R0,TLx

CJNEA,THx,RDTM;读取THx存A中;读取TLx存R0中   ;比较两次THx值,若相等,则读得的值正

;确,程序往下执行,否则重读

MOV R1,A    ;将THx存于R1中

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)……50

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243              STC 定时器2的操作

定时器2是一个16位定时/计数器。(www.61k.com]通过设置特殊功能寄存器T2CON中的C/T2位,可将其作为定时器或计数器(特殊功能寄存器T2CON的描述如表1所列)。定时器2有3种操作模式:捕获、自动重新装载(递增或递减计数)和波特率发生器,这3种模式由T2CON中的位进行选择(如表1所列)。                  表1 特殊功能寄存器T2CON的描述

T2CON  地址=0C8H  可位寻址                                      复位值=00H

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

符 号      位                                名称和意义

T2CON.7

T2CON.6定时器2溢出标志。定时器2溢出时置位,必须由软件清除。当RCLK或TCLK=1时,TF2将不会置位定时器2外部标志。当EXEN2=1且T2EX的负跳变产生捕获或重装时,

EXF2置位。定时器2中断使能时,EXF2=1将使CPU从中断向量处执

行定时器2中断子程序。EXF2位必须用软件清零。在递增/递减计数器

模式(DCEN=1)中,EXF2不会引起中断

RCLK

TCLK

EXEN2T2CON.5T2CON.4T2CON.3接收时钟标志。RCLK置位时,定时器2的溢出脉冲作为串行口模式1和模式3的接收时钟。RCLK=0时,将定时器1的溢出脉冲作为接收时钟发送时钟标志。TCLK置位时,定时器2的溢出脉冲作为串行口模式1和模式3的发送时钟。TCLK=0时,将定时器1的溢出脉冲作为发送时钟定时器2外部使能标志。当其置位且定时器2未作为串行口时钟时,允

许T2EX的负跳变产生捕获或重装。EXEN2=0时,T2EX的跳变对定时器2

无效

TR2

C/T2T2CON.2T2CON.1定时器2启动/停止控制位。置1时启动定时器定时器/计数器选择。(定时器2)

0=内部定时器(OSC/12或OSC/6)

1=外部事件计数器(下降沿触发)

CP/RL2T2CON.0捕获/重装标志。置位:EXEN2=1时,T2EX的负跳变产生捕获。清零:

EXEN2=0时,定时器2溢出或T2EX的负跳变都可使定时器自动重装。当

RCLK=1或TCLK=1时,该位无效且定时器强制为溢出时自动重装

表2  定时器2工作方式

1.捕获模式

在捕获模式中,通过T2CON中的EXEN2设置2个选项。如果EXEN2=0,定时器2作为一个16位定时器或计数器(由T2CON中C/T2位选择),溢出时置位TF2(定时器2溢出标志位)。该位可用于产生中断(通过使能IE寄存器中的定时器2中断使能位)。如果EXEN2=1,与以上描述相同,但增加了一个特性,即外部输入T2EX由1变零时,将定时器2中TL2和TH2的当前值各自捕获到RCAP2L和宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)51TF2EXF2

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243RCAP2H。[www.61k.com]另外,T2EX的负跳变使T2CON中的EXF2置位,EXF2也像TF2一样能够产生中断(其向量与定时器2溢出中断地址相同,定时器2中断服务程序通过查询TF2和EXF2来确定引起中断的事件),捕获模式如图1所示。在该模式中,TL2和TH2无重新装载值,甚至当T2EX产生捕获事件时,计数器仍以T2EX的负跳变或振荡频率的1/12(12时钟模式)或1/6(6时钟模式)计数。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

* 在6时钟模式下,d=6;在12时钟模式下,d=12。

图1   定时器2捕获模式

2.自动重装模式(递增/递减计数器)

16位自动重装模式中,定时器2可通过C/T2配置为定时器/计数器,编程控制递增/递减计数。计数的方向是由DCEN(递减计数使能位)确定的,DCEN位于T2MOD寄存器中,T2MOD寄存器各位的功能描述如表3所示。当DCEN=0时,定时器2默认为向上计数;当DCEN=1时,定时器2可通过T2EX确定递增或递减计数。图2显示了当DCEN=0时,定时器2自动递增计数。在该模式中,通过设置EXEN2位进行选择。如果EXEN2=0,定时器2递增计数到0FFFFH,并在溢出后将TF2置位,然后将RCAP2L和RCAP2H中的16位值作为重新装载值装入定时器2。RCAP2L和RCAP2H的值是通过软件预设的。                  表3  定时器2模式(T2MOD)控制寄存器的描述

T2MOD  地址=0C9H                            复位值=XXXX XX00B

不可位寻址

7       6      5       4       3       2      1      0

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

—         不可用,保留将来之用*              T2OE        定时器2输出使能位

DCEN       向下计数使能位。定时器2可配置成向上/向下计数器

*用户勿将其置1。这些位在将来80C51系列产品中用来实现新的特性。在这种情况下,以         后用到保留位,复位时或非有效状态时,它的值应为0;而这些位为有效状态时,它的值        为1。从保留位读到的值是不确定的。

如果EXEN2=1,16位重新装载可通过溢出或T2EX从1  0的负跳变实现。此负跳变同时将EXF2置位。如果定时器2中断被使能,则当TF2或EXF2置1时产生中断。在图3中,DCEN=1时,定时器2可递增或递减计数。此模式允许T2EX控制计数的方向。当T2EX置1时,定时器2递增计数,计数到0FFFFH后溢出并置位TF2,还将产生中断(如果中断被使能)。定时器2的溢出将使RCAP2L和RCAP2H中的16位值作为重新装载值放入TL2和TH2。

当T2EX置零时,将使定时器2递减计数。当TL2和TH2计数到等于RCAP2L和RCAP2H时,定时器产宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)52

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

* 在6时钟模式下,d=6;在12时钟模式下,d=12。(www.61k.com)

图2  定时器2自动重装模式(DCEN=0)

递减计数重装* 在6时钟模式下,d=6;在12时钟模式下,d=12。

图3  定时器2自动重装模式(DCEN=1)

生中断。

3.波特率发生器模式

寄存器T2CON的位TCLK和(或)RCLK允许从定时器1或定时器2获得串行口发送和接收的波特率。当TCLK=0时,定时器1作为串行口发送波特率发生器;当TCLK=1时,定时器2作为串行口发送波特率发生器。RCLK对串行口接收波特率有同样的作用。通过这2位,串行口能得到不同的接收和发送波特率,一个通过定时器1产生,另一个通过定时器2产生。

如图4所示为定时器2工作在波特率发生器模式。与自动重装模式相似,当TH2溢出时,波特率发生器模式使定时器2寄存器重新装载来自寄存器RCAP2H和RCAP2L的16位的值,寄存器RCAP2H和RCAP2L的值由软件预置。当工作于模式1和模式3时,波特率由下面给出的公式所决定:

定时器1

stc89c52中文资料 STC89C52RC_中文指南_

时钟

时钟

可作为一个额外的外部中断

* 在6时钟模式下,d=1;在12时钟模式下,d=2。

图4   定时器2波特率发生器模式

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

53

stc89c52中文资料 STC89C52RC_中文指南_

当定时器2作为定时器时,它的操作不同于波特率发生器。[www.61k.com]通常定时器 2作为定时器,它会在每个机器周期递增(1/6或1/12振荡频率)。当定时器2作为波特率发生器时,它在6时钟模式下,以振荡器频率递增(12时钟模式时为1/12振荡频率)。

这时的波特率公式如下:

振荡器频率模式1和模式3的波特率=                       n×[65536—(RCAP2H,RCAP2L)]

式中:n=16(6时钟模式)或32(12时钟模式);RCAP2H,RCAP2LRCAP2H和RCAP2L的内容,为16位无符号整数。

如图4所示,定时器2是作为波特率发生器,仅当寄存器T2CON中的RCLK和(或)TCLK=1时,定时器2作为波特率发生器才有效。注意:TH2溢出并不置位TF2,也不产生中断。这样当定时器2作为波特率发生器时,定时器2中断不必被禁止。如果EXEN2(T2外部使能标志)被置位,在T2EX中由1到0的转换会置位EXF2(T2外部标志位),但并不导致(TH2,TL2)重新装载(RCAP2H,RCAP2L)。当定时器2用作波特率发生器时,如果需要,T2EX可用做附加的外部中断。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

当计时器工作在波特率发生器模式下,则不要对TH2和TL2进行读/写,每隔一个状态时间(fosc/2)或由T2进入的异步信号,定时器2将加1。在此情况下对TH2和TH1进行读/写是不准确的;可对RCAP2寄存器进行读,但不要进行写,否则将导致自动重装错误。当对定时器2或寄存器RCAP进行访问时,应关闭定时器(清零TR2)。表4列出了常用的波特率和如何用定时器2得到这些波特率。

4.波特率公式汇总

定时器2工作在波特率发生器模式,外部时钟信号由T2脚进入,这时的波特率公式如下:

定时器2溢出率波特率=                                       16

如果定时器2采用内部时钟信号,则波特率公式如下:

fosc               波特率=                       n×[65536—(RCAP2H,RCAP2L)]

表4  由定时器2产生的常用波特率

波特率                                         定时器2振荡器频率

/MHz12时钟模式    6时钟模式                         RCAP2H        RCAP2L

375 000      750 000            12               FF           FF

9 600       19 200            12               FF           D9

2 800        9 600            12               FF           B2

2 400        4 800            12               FF           64

1 200        2 400            12               FE           C8

300          600            12               FB           1E

110          220            12               F2           AF

300          600             6               FD           8F

110          220             6               F9           57

式中:n=32(12时钟模式)或16(6时钟模式),fosc=振荡器频率。

自动重装值可由下式得到:

RCAP2H,RCAP2L=65536—[fosc/(n×波特率)]

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)54

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    5.定时器/计数器2的设置

除了波特率发生器模式,T2CON不包括TR2位的设置,TR2位需单独设置来启动定时器。[www.61k.com]如表5和表6分别列出了T2作为定时器和计数器的具体设置方法。

表5  T2

stc89c52中文资料 STC89C52RC_中文指南_

作为定时器的设置

① 仅当定时器溢出时进行捕获和重装。

② 当定时/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获和重装(定时器2用于

波特率发生器模式时除外)。

表6   T2作为计数器设置

stc89c52中文资料 STC89C52RC_中文指南_

注①和注②同表5的注①和注②。

6.可编程时钟输出

STC89C51RC/RD+系列单片机,可设定定时/计数器2,通过P1.0输出时钟。P1.0除作通用I/O口外还有两个功能可供选用:用于定时/计数器2的外部计数输入和定时/计数器2时钟信号输出。图5为时钟输出和外部事件计数方式示意图。

T2EX(P1.1)中断请求

* d=1,6时钟/机器周期;d=2,12时钟/机器周期

图5   定时器2时钟输出和外部事件计数方式示意图

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)55

stc89c52中文资料 STC89C52RC_中文指南_

2发生器,而T2CON.2位TR2控制时钟信号输出开始或结束(TR2为启/停控制位).由主振频率(fosc)和定时/计数器2定时、自动再装入方式的计数初值决定时钟信号的输出频率。[www.61k.com]其设置公式如下:

fosc              时钟信号输出频率=                       n×[65536—(RCAP2H×RCAP2L)]

* n=2,6时钟/机器周期;n=4,12时钟/机器周期

从公式可见,在主振频率(fosc)设定后,时钟信号输出频率就取决于定时计数初值的设定。    在时钟输出模式下,计数器回0溢出不会产生中断请求。这种功能相当于定时/计数器2用作波特率发生器,同时又可以作时钟发生器。但必须注意,无论如何波特率发生器和时钟发生器不能单独确定各自不同的频率。原因是两者都用同一个陷阱寄存器RCAP2H、RCAP2L,不可能出现两个计数初值。宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)56

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;/* ---  STC International Limited ---------------- */

;/* ---  宏晶科技 姚永平  设计 2004/9/11   V1.0 ---- */

;/* ---  RD+/RC系列   Timer2  Operation ----------- */

;/* ---  STC89C54RD+, STC89C58RD+, STC89C516RD+ --- */

;/* ---  STC89LE54RD+,STC89LE58RD+,STC89LE516RD+ -- */

;/* ---  STC89C51RC,  STC89C52RC,  STC89C53RC ----- */

;/* ---  STC89LE51RC, STC89LE52RC, STC89LE53RC ---- */

;/* ---  Mobile: 13922805190 ---------------------- */

;/* ---  Fax: 0755-82944243 ----------------------- */

;/* ---  Tel: 0755-82908285 ----------------------- */

;/* ---  Web  : www.mcu-memory.com ---------------- */

;-----Timer 2 做波特率发生器 -------------------------

;-----本程序不提供技术支持,一定要自己测试--------------

;定义特殊功能寄存器

;与 RS232口、TIMER2 有关的特殊功能寄存器

T2CON                   EQU 0C8H

TR2                     EQU T2CON.2   ;TR2 是 T2CON 特殊功能寄存器的第 2 位

RCAP2L                  EQU 0CAH

RCAP2H                  EQU 0CBH

TH2                     EQU 0CDH

TL2                     EQU 0CCH

;------------------------------------------------

;设置波特率自动重装数

RELOAD_COUNT_HIGH       EQU  0FFH

;使用以下参数必须将 RELOAD_COUNT_HIGH 设置为 0FFH

;RELOAD_COUNT_LOW        EQU  0FAH    ;Fosc = 22.1184MHz, Baud = 115200

;RELOAD_COUNT_LOW        EQU  0EEH    ;Fosc = 22.1184MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  0F0H    ;Fosc = 20.000MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  0F6H    ;Fosc = 12.000MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  0FDH    ;Fosc = 11.059MHz, Baud = 115200

;RELOAD_COUNT_LOW        EQU  0F7H    ;Fosc = 11.059MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  0F8H    ;Fosc = 10.000MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  0FBH    ;Fosc = 6.000MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  0FCH    ;Fosc = 5.000MHz, Baud = 38400

;RELOAD_COUNT_LOW        EQU  070H    ;Fosc = 11.059MHz, Baud = 2400

;--------------

;计算自动重装数:

;--------------

;晶体频率: Fosc

;波特率:   Baud

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)57

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;自动重装数:   RELOAD = INT(Fosc/Baud/32 + 0.5), INT 表示取整运算(舍去小数)

;将自动重装数转换成 16 进制, 用 10000H 减自动重装数, 存入 RCAP2H, RCAP2L

;计算实际的波特率: Baud = Fosc/RELOAD/32, 如果误差>3.5要更改波特率.

;例: Fosc = 22.1184MHz, Baud = 115200

;  RELOAD = INT( 22118400/115200/32 + 0.5)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;         = INT( 6.5 )

;         = 6

;         = 0006H

; 10000H - 0006H = FFFAH

;   MOV   RCAP2H, #0FFH

;   MOV   RCAP2L, #0FAH

;例: Fosc = 20.MHz, Baud = 57600 (Baud=115200时误差太大)

;  RELOAD = INT( 20000000/57600/32 + 0.5)

;         = INT( 10.85 + 0.5 )

;         = INT( 11.35 )

;         = 11

;         = 000BH

; 10000H - 000BH = FFF5H

;   MOV   RCAP2H, #0FFH

;   MOV   RCAP2L, #0F5H

;--------------------------------------------

ORG   0000H

AJMP  MAIN

;--------------------------------------------

ORG   0023H                     ;RS232 串口中断

AJMP  UART

NOP

NOP

;--------------------------------------------

MAIN:

MOV   SP, #0E0H

ACALL Initial_UART              ;初始化串口

MOV   R0, #30H                  ;发送 10 个字符 '0123456789'

MOV   R2, #10

LOOP:

MOV   A, R0

ACALL Send_One_Byte             ;发送一个字节

INC   R0

DJNZ  R2, LOOP

WAIT1:

SJMP  WAIT1                     ;跳转到本行, 无限循环

;------------------------------------------------

UART:                               ;串口中断服务程序

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)58

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    JBC   RI, UART_1

RETI                            ;发送时使用的是查询方式,不使用中断

UART_1:                             ;接收一个字节. 此时 RI 已被清0

PUSH  ACC

MOV   A, SBUF                   ;取接收到的字节

ACALL Send_One_Byte             ;回发收到的字节

POP   ACC

RETI

;------------------------------------------------

Initial_UART:                       ;初始化串口

;       Bit:   7       6     5     4     3     2     1    0

; SCON       SM0/FE   SM1   SM2   REN   TB8   RB8    Tl   Rl

MOV   SCON, #50H                ; 0101,0000 8位可变波特率, 无奇偶校验

Init_RS232_1:

MOV   A, #RELOAD_COUNT_HIGH     ;波特率自动重装数

MOV   RCAP2H, A

MOV   TH2, A

MOV   A, #RELOAD_COUNT_LOW

MOV   RCAP2L, A

MOV   TL2, A

MOV   T2CON, #0x34              ;使用 T2 作波特率发生器

SETB  ES                        ;允许串口中断

SETB  EA                        ;开总中断

RET

;------------------------------------------------

Send_One_Byte:                      ;发送一个字节

CLR   ES

CLR   TI                        ;清零串口发送中断标志

MOV   SBUF, A

WAIT2:

JNB   TI, WAIT2                 ;等待发送完毕

CLR   TI                        ;清零串口发送中断标志

SETB  ES

RET

;------------------------------------------------

END

;------------------------------------------------

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)59

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;------------------------------------------------------------------------------;本程序演示了如何使用定时器2的时钟/脉冲输出功能,在P1.0口输出

;------------------------------------------------------------------------------;定义特殊功能寄存器

;与 RS232口、TIMER2 有关的特殊功能寄存器

T2CON                   EQU 0C8H

T2MOD                   EQU 0C9H

TR2                     EQU T2CON.2   ;TR2 是 T2CON 特殊功能寄存器的第 2 位

RCAP2L                  EQU 0CAH

RCAP2H                  EQU 0CBH

TH2                     EQU 0CDH

TL2                     EQU 0CCH

;定时器/计数器2控制寄存器 T2CON

;                   D7     D6    D5    D4    D3    D2     D1     D0       Reset Value;  位地址           CF     CE    CD    CC    CB    CA    C9     C8

; T2CON(C8H)       TF2    EXF2  RCLK  TCLK  EXEN2  TR2   C/T2  CP/RL2        00;T2MOD寄存器

;                   D7     D6    D5    D4    D3    D2     D1     D0       Reset Value; T2CON(C9H)        -      -     -     -     -     -     T2OE   DCEN       xxxxxx00b;------------------------------------------------

ORG   0000H

AJMP  MAIN

;------------------------------------------------

ORG   0100H

MAIN:

MOV   SP, #0E0H

MOV   P1, #0FFH                 ;熄灭 P1 口的发光二级管

ACALL SET_T2_OUT_MODE           ;设置T2为高速脉冲输出方式

MOV   DPTR, #0FFF0H             ;设置 T2 脉冲输出速率

ACALL SET_T2_OUT_SPEED

WAIT1:

SJMP  WAIT1                    ;可加入此行,用频率计或其它仪器测量 P1.0 的                                    ;输出信号,验证脉冲输出频率的计算公式

ACALL DELAY

ACALL PAUSE                     ;暂停输出, 便于观察

MOV   DPTR, #0FFE0H             ;设置 T2 脉冲输出速率, 比前一次降低一半

ACALL SET_T2_OUT_SPEED

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)60

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    ACALL DELAY

ACALL PAUSE                     ;暂停输出, 便于观察

MOV   DPTR, #0FFD0H;设置 T2 脉冲输出速率, 比前一次降低 1/3

ACALL SET_T2_OUT_SPEED

ACALL DELAY

ACALL PAUSE                     ;暂停输出, 便于观察

WAIT2:

SJMP  WAIT2                      ;跳转到本行, 无限循环

;------------------------------------------------

DELAY:

MOV   R1, #0

MOV   R2, #0

MOV   R3, #30

DELAY_LOOP:

DJNZ  R1, DELAY_LOOP

DJNZ  R2, DELAY_LOOP

DJNZ  R3, DELAY_LOOP

RET

;------------------------------------------------

SET_T2_OUT_MODE:                    ;设置T2为脉冲输出方式

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV   T2CON, #0                 ;设置T2为定时器方式

MOV   T2MOD, #02                ;0000, 0010 允许 T2 溢出脉冲由 P1.0 输出    RET

;------------------------------------------------

;脉冲输出频率由振荡器频率和 T2 的捕获寄存器 RCAP2H、RCAP2L 的重新装入值确定,

;计算公式:

;     脉冲输出频率 = 振荡器频率/ (n*(65536 - RCAP2H,RCAP2L)

;公式中 n = 2, 在 6 Clock 模式; n = 4, 在 12 Clock 模式

;       RCAP2H,RCAP2L 是由 RCAP2H 和 RCAP2L 组成的 16 位无符号整数,

;入口: DPTR = 重装数

;对寄存器RCAP2H,RCAP2L不要送FFFFh,否则无脉冲输出

SET_T2_OUT_SPEED:                   ;设置 T2 脉冲输出速率

CLR   TR2                       ;停止 T2 工作

MOV   RCAP2H, DPH

MOV   RCAP2L, DPL

SETB  TR2                       ;启动 T2

RET

;------------------------------------------------

PAUSE:                              ;暂停输出

CLR   TR2                       ;停止 T2 工作

MOV   P1, #0FFH                 ;熄灭 P1 口的发光二级管

ACALL DELAY

RET

;------------------------------------------------

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)61

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C51 RC / RD+ 系列 ISP / IAP 应用

STC89C51 RC / RD+ 系列 内部EEPROM的应用

-- 利用IAP技术可实现EEPROM,内部Flash擦写次数为100,000次以上

RC/RD+系列 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs

Mnemonic

ISP_DATAAddNameE2hISP/IAP  Flash  Data  Register 7 6 5 4 3 2 1 0Reset Value1111,1111

0000,0000

0000,0000

- - - - -MS2MS1MS0xxxx,x000

xxxx,xxxx

ISPENSWBSSWRST - -WT2WT1WT0000x,x000ISP_ADDRHE3hISP/IAP  Flash  Address  HighISP_ADDRLE4hISP/IAP  Flash  Address  LowISP_CMDISP_TRIGE5hISP/IAP  Flash  Command  RegisterE6hISP/IAP  Flash  Command  TriggerISP_CONTRE7hISP/IAP  Control  Register

ISP_DATA:ISP/IAP操作时的数据寄存器。(www.61k.com]

ISP/IAP从Flash读出的数据放在此处,向Flash写的数据也需放在此处

ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位。

ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位。

ISP_CMD:ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。B7

-B6 - - - -B5 - - - -B4 - - - -B3B2B1 - - - - 0 0 0 0 0 0 1 1B0命令 /  操作  模式选择 0 1 0 1Standby    待机模式,无ISP操作AP-Flash / Data-Flash  Read对用户的应用程序Flash区及数据Flash区字节读AP-Flash / Data-Flash  Program对用户的应用程序Flash区及数据Flash区字节编程AP-Flash / Data-Flash  Sector Erase

对用户的应用程序Flash区及数据Flash区扇区擦除         保留命令 选择

程序在系统ISP程序区时可以对用户应用程序区/数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除;程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除。已经固化有ISP引导码,并设置为上电复位进入ISP的STC89C51RC/RD+系列单片机出厂时就已完全加密。ISP_TRIG:ISP/IAP操作时的命令触发寄存器。

在ISPEN(ISP_CONTR.7) = 1时,对ISP_TRIG先写入46h,再写入B9h,

ISP/IAP命令才会生效。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)62

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

ISP_CONTR:ISP/IAP控制寄存器。[www.61k.com)

B7ISPEN

B6SWBS

B5

B4

B3  -

B2 WT2

B1 WT1

B0 WT0

Reset Value000x,x000

SWRST  -

ISPEN:ISP/IAP 功能允许位。0:禁止ISP/IAP编程改变Flash,1:允许编程改变FlashSWBS:软件选择从用户主程序区启动(0),还是从ISP程序区启动(1)。SWRST:

0: 不操作;

1: 产生软件系统复位,硬件自动清零。

设置等待时间WT2 0 0 0 0

WT1 1 1 0 0

WT0 1 0 1 0

CPU   等待时间(机器周期)Read6112243

Program3060120240

Sector Erase5471109422188543769

Recommended System Clock5MHz10MHz20MHz40MHz

STC89C51RC,STC89LE51RC单片机内部可用Data Flash(EEPROM)的地址:

第一扇区起始地址2000h

结束地址21FFh

第二扇区起始地址2200h

结束地址23FFh

第三扇区起始地址2400h

结束地址25FFh

第四扇区起始地址2600h

结束地址27FFh

每个

扇区512字节建议同一次修改的数据放在同一扇区

第五扇区起始地址2800h

结束地址29FFh

第六扇区起始地址2A00h

结束地址2BFFh

第七扇区起始地址2C00h

结束地址2DFFh

第八扇区起始地址2E00h

结束地址2FFFh

STC89C52RC,STC89LE52RC单片机内部可用Data Flash(EEPROM)的地址:

第一扇区起始地址2000h

结束地址21FFh

第二扇区起始地址2200h

结束地址23FFh

第三扇区起始地址2400h

结束地址25FFh

第四扇区起始地址2600h

结束地址27FFh

每个扇区512字节建议同一次修改的数据放在同一扇区

第五扇区起始地址2800h

结束地址29FFh

第六扇区起始地址2A00h

结束地址2BFFh

第七扇区起始地址2C00h

结束地址2DFFh

第八扇区起始地址2E00h

结束地址2FFFh

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)63

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C54RD+,STC89LE54RD+单片机内部可用Data Flash(EEPROM)的地址:

第一扇区起始地址8000h起始地址8800h起始地址9000h起始地址9800h起始地址A000h起始地址A800h起始地址B000h起始地址B800h起始地址C000h起始地址C800h起始地址D000h起始地址D800h起始地址E000h起始地址E800h起始地址F000h

结束地址81FFh结束地址89FFh结束地址91FFh结束地址99FFh结束地址A1FFh结束地址A9FFh结束地址B1FFh结束地址B9FFh结束地址C1FFh结束地址C9FFh结束地址D1FFh结束地址D9FFh结束地址E1FFh结束地址E9FFh结束地址F1FFh

第二扇区起始地址8200h起始地址8A00h起始地址9200h起始地址9A00h起始地址A200h起始地址AA00h起始地址B200h起始地址BA00h起始地址C200h起始地址CA00h起始地址D200h起始地址DA00h起始地址E200h起始地址EA00h起始地址F200h

结束地址83FFh结束地址8BFFh结束地址93FFh结束地址9BFFh结束地址A3FFh结束地址ABFFh结束地址B3FFh结束地址BBFFh结束地址C3FFh结束地址CBFFh结束地址D3FFh结束地址DBFFh结束地址E3FFh结束地址EBFFh结束地址F3FFh

第三扇区起始地址8400h起始地址8C00h起始地址9400h起始地址9C00h起始地址A400h起始地址AC00h起始地址B400h起始地址BC00h起始地址C400h起始地址CC00h起始地址D400h起始地址DC00h起始地址E400h起始地址EC00h

结束地址85FFh结束地址8DFFh结束地址95FFh结束地址9DFFh结束地址A5FFh结束地址ADFFh结束地址B5FFh结束地址BDFFh结束地址C5FFh结束地址CDFFh结束地址D5FFh结束地址DDFFh结束地址E5FFh结束地址EDFFh

第四扇区起始地址8600h起始地址8E00h起始地址9600h起始地址9E00h起始地址A600h起始地址AE00h起始地址B600h起始地址BE00h起始地址C600h起始地址CE00h起始地址D600h起始地址DE00h起始地址E600h起始地址EE00h

结束地址87FFh结束地址8FFFh结束地址97FFh结束地址9FFFh结束地址A7FFh结束地址AFFFH结束地址B7FFH结束地址BFFFH结束地址C7FFH结束地址CFFFH结束地址D7FFH结束地址DFFFH结束地址E7FFH结束地址EFFFH

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

每个

扇区512字节建议同一次修改的数据放在同一扇区

第五扇区        第六扇区        第七扇区        第八扇区

第九扇区        第十扇区        第十一扇区        第十二扇区

第十三扇区        第十四扇区        第十五扇区        第十六扇区

第十七扇区        第十八扇区        第十九扇区        第二十扇区

第二十一扇区        第二十二扇区        第二十三扇区        第二十四扇区

第二十五扇区        第二十六扇区        第二十七扇区        第二十八扇区

第二十九扇区        第三十扇区        第三十一扇区        第三十二扇区

第三十三扇区        第三十四扇区        第三十五扇区        第三十六扇区

第三十七扇区        第三十八扇区        第三十九扇区        第四十扇区

第四十一扇区        第四十二扇区        第四十三扇区        第四十四扇区

第四十五扇区        第四十六扇区        第四十七扇区        第四十八扇区

第四十九扇区        第五十扇区        第五十一扇区        第五十二扇区

第五十三扇区        第五十四扇区        第五十五扇区        第五十六扇区

第五十七扇区        第五十八扇区

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)64

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C55RD+,STC89LE55RD+单片机内部可用Data Flash(EEPROM)的地址:

第一扇区起始地址8000h起始地址8800h起始地址9000h起始地址9800h起始地址A000h起始地址A800h起始地址B000h起始地址B800h起始地址C000h起始地址C800h起始地址D000h起始地址D800h起始地址E000h起始地址E800h起始地址F000h

结束地址81FFh结束地址89FFh结束地址91FFh结束地址99FFh结束地址A1FFh结束地址A9FFh结束地址B1FFh结束地址B9FFh结束地址C1FFh结束地址C9FFh结束地址D1FFh结束地址D9FFh结束地址E1FFh结束地址E9FFh结束地址F1FFh

第二扇区起始地址8200h起始地址8A00h起始地址9200h起始地址9A00h起始地址A200h起始地址AA00h起始地址B200h起始地址BA00h起始地址C200h起始地址CA00h起始地址D200h起始地址DA00h起始地址E200h起始地址EA00h起始地址F200h

结束地址83FFh结束地址8BFFh结束地址93FFh结束地址9BFFh结束地址A3FFh结束地址ABFFh结束地址B3FFh结束地址BBFFh结束地址C3FFh结束地址CBFFh结束地址D3FFh结束地址DBFFh结束地址E3FFh结束地址EBFFh结束地址F3FFh

第三扇区起始地址8400h起始地址8C00h起始地址9400h起始地址9C00h起始地址A400h起始地址AC00h起始地址B400h起始地址BC00h起始地址C400h起始地址CC00h起始地址D400h起始地址DC00h起始地址E400h起始地址EC00h

结束地址85FFh结束地址8DFFh结束地址95FFh结束地址9DFFh结束地址A5FFh结束地址ADFFh结束地址B5FFh结束地址BDFFh结束地址C5FFh结束地址CDFFh结束地址D5FFh结束地址DDFFh结束地址E5FFh结束地址EDFFh

第四扇区起始地址8600h起始地址8E00h起始地址9600h起始地址9E00h起始地址A600h起始地址AE00h起始地址B600h起始地址BE00h起始地址C600h起始地址CE00h起始地址D600h起始地址DE00h起始地址E600h起始地址EE00h

结束地址87FFh结束地址8FFFh结束地址97FFh结束地址9FFFh结束地址A7FFh结束地址AFFFH结束地址B7FFH结束地址BFFFH结束地址C7FFH结束地址CFFFH结束地址D7FFH结束地址DFFFH结束地址E7FFH结束地址EFFFH

每个

扇区512字节建议同一次修改的数据放在同一扇区

第五扇区        第六扇区        第七扇区        第八扇区

第九扇区        第十扇区        第十一扇区        第十二扇区

第十三扇区        第十四扇区        第十五扇区        第十六扇区

第十七扇区        第十八扇区        第十九扇区        第二十扇区

第二十一扇区        第二十二扇区        第二十三扇区        第二十四扇区

第二十五扇区        第二十六扇区        第二十七扇区        第二十八扇区

第二十九扇区        第三十扇区        第三十一扇区        第三十二扇区

第三十三扇区        第三十四扇区        第三十五扇区        第三十六扇区

第三十七扇区        第三十八扇区        第三十九扇区        第四十扇区

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

第四十一扇区        第四十二扇区        第四十三扇区        第四十四扇区

第四十五扇区        第四十六扇区        第四十七扇区        第四十八扇区

第四十九扇区        第五十扇区        第五十一扇区        第五十二扇区

第五十三扇区        第五十四扇区        第五十五扇区        第五十六扇区

第五十七扇区        第五十八扇区

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)65

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C58RD+,STC89LE58RD+单片机内部可用Data Flash(EEPROM)的地址:

第一扇区起始地址8000h起始地址8800h起始地址9000h起始地址9800h起始地址A000h起始地址A800h起始地址B000h起始地址B800h起始地址C000h起始地址C800h起始地址D000h起始地址D800h起始地址E000h起始地址E800h起始地址F000h

结束地址81FFh结束地址89FFh结束地址91FFh结束地址99FFh结束地址A1FFh结束地址A9FFh结束地址B1FFh结束地址B9FFh结束地址C1FFh结束地址C9FFh结束地址D1FFh结束地址D9FFh结束地址E1FFh结束地址E9FFh结束地址F1FFh

第二扇区起始地址8200h起始地址8A00h起始地址9200h起始地址9A00h起始地址A200h起始地址AA00h起始地址B200h起始地址BA00h起始地址C200h起始地址CA00h起始地址D200h起始地址DA00h起始地址E200h起始地址EA00h起始地址F200h

结束地址83FFh结束地址8BFFh结束地址93FFh结束地址9BFFh结束地址A3FFh结束地址ABFFh结束地址B3FFh结束地址BBFFh结束地址C3FFh结束地址CBFFh结束地址D3FFh结束地址DBFFh结束地址E3FFh结束地址EBFFh结束地址F3FFh

第三扇区起始地址8400h起始地址8C00h起始地址9400h起始地址9C00h起始地址A400h起始地址AC00h起始地址B400h起始地址BC00h起始地址C400h起始地址CC00h起始地址D400h起始地址DC00h起始地址E400h起始地址EC00h

结束地址85FFh结束地址8DFFh结束地址95FFh结束地址9DFFh结束地址A5FFh结束地址ADFFh结束地址B5FFh结束地址BDFFh结束地址C5FFh结束地址CDFFh结束地址D5FFh结束地址DDFFh结束地址E5FFh结束地址EDFFh

第四扇区起始地址8600h起始地址8E00h起始地址9600h起始地址9E00h起始地址A600h起始地址AE00h起始地址B600h起始地址BE00h起始地址C600h起始地址CE00h起始地址D600h起始地址DE00h起始地址E600h起始地址EE00h

结束地址87FFh结束地址8FFFh结束地址97FFh结束地址9FFFh结束地址A7FFh结束地址AFFFH结束地址B7FFH结束地址BFFFH结束地址C7FFH结束地址CFFFH结束地址D7FFH结束地址DFFFH结束地址E7FFH结束地址EFFFH

每个

扇区512字节建议同一次修改的数据放在同一扇区

第五扇区        第六扇区        第七扇区        第八扇区

第九扇区        第十扇区        第十一扇区        第十二扇区

第十三扇区        第十四扇区        第十五扇区        第十六扇区

第十七扇区        第十八扇区        第十九扇区        第二十扇区

第二十一扇区        第二十二扇区        第二十三扇区        第二十四扇区

第二十五扇区        第二十六扇区        第二十七扇区        第二十八扇区

第二十九扇区        第三十扇区        第三十一扇区        第三十二扇区

第三十三扇区        第三十四扇区        第三十五扇区        第三十六扇区

第三十七扇区        第三十八扇区        第三十九扇区        第四十扇区

第四十一扇区        第四十二扇区        第四十三扇区        第四十四扇区

第四十五扇区        第四十六扇区        第四十七扇区        第四十八扇区

第四十九扇区        第五十扇区        第五十一扇区        第五十二扇区

第五十三扇区        第五十四扇区        第五十五扇区        第五十六扇区

第五十七扇区        第五十八扇区

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)66

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89C51 RC / RD+ 系列 IAP 应用汇编简介

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

STC89C51 RC / RD+ 系列 内部EEPROM的应用

;用DATA还是EQU声明新增特殊功能寄存器地址要看你用的汇编器/编译器

ISP_DATAISP_ADDRHISP_ADDRLISP_CMDISP_TRIGISP_CONTR

DATADATADATADATADATADATA

0E2h;或0E3h;或0E4h;或0E5h;或0E6h;或0E7h;或EQU23

ISP_DATAISP_ADDRHISP_ADDRLISP_CMDISP_TRIGISP_CONTR

EQUEQUEQUEQUEQUEQU

0E2h0E3h0E4h0E5h0E6h0E7h

;定义ISP/IAP命令及等待时间

ISP_IAP_BYTE_READ

ISP_IAP_BYTE_PROGRAMEQUISP_IAP_SECTOR_ERASEEQUWAIT_TIME;字节读

MOVMOVCLR

stc89c52中文资料 STC89C52RC_中文指南_

MOV

ORLMOV      MOV

MOV

ISP_ADDRH,#BYTE_ADDR_HIGH;送地址高字节ISP_ADDRL,#BYTE_ADDR_LOW

stc89c52中文资料 STC89C52RC_中文指南_

EA

ISP_CONTR,#WAIT_TIME ;设置等待时间ISP_CONTR,#10000000B ;允许ISP/IAP操作ISP_CMD,

EQU

1;字节读

;字节编程,前提是该字节是空,0FFh;扇区擦除,要某字节为空,要擦一扇区

;设置等待时间,40MHz以下0,20M以下1,;

10MHz以下2,5M以下3

关中断,此时各中断请求,会被挂起,一开中断,立即响应

此两句可以合成一句,并且只送一次就够了

#ISP_IAP_BYTE_READ ;送字节读命令,命令不需改变时,不需重新送命令

;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此;送完B9h后,ISP/IAP命令立即被触发起动

ISP_TRIG,#46hISP_TRIG,#0B9h

;CPU等待IAP动作完成后,才会继续执行程序,要先关中断(EA),

;再送46h,B9h到ISP/IAP触发寄存器,起动ISP/IAP命令,关中断在触发之前即可

NOPMOV     MOV

A,ISP_DATA

;数据读出到ISP_DATA寄存器后,CPU继续执行程序;将读出的数据送往Acc

;以下语句可不用,只是出于安全考虑而已

ISP_CONTR,#00000000B      ;禁止ISP/IAP操作MOVISP_CMD,#00000000B      ;去除ISP/IAP命令

;MOVISP_TRIG,#00000000B      ;防止ISP/IAP命令误触发;MOVISP_ADDRH,#0;MOVISP_ADDRL,#0SETBEA

;送地址高字节单元为00,指向非EEPROM区;送地址低字节单元为00,防止误操作

;开中断,CPU处理完ISP/IAP动作即可开中断

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)67

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;字节编程,该字节为FFh/空时,可对其编程,否则不行,要先执行扇区擦除

MOV

MOV

MOV

CLR

stc89c52中文资料 STC89C52RC_中文指南_

MOV

ORL

MOV

MOV

MOVISP_DATA,#ONE_DATA;送字节编程数据到ISP_DATAISP_ADDRH,

stc89c52中文资料 STC89C52RC_中文指南_

ISP_ADDRL,#BYTE_ADDR_LOW ;送地址低字节EA;ISP_CONTR,#WAIT_TIME ;设置等待时间ISP_CONTR,#10000000B ;允许ISP/IAP操作ISP_CMD,#ISP_IAP_BYTE_PROGRAM关中断,此时各中断请求,会被挂起,一开中断,立即响应此两句可以合成一句,并且只送一次就够了;送字节编程命令ISP_TRIG,#46hISP_TRIG,#0B9h;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此;送完B9h后,ISP/IAP命令立即被触发起动

;CPU等待IAP动作完成后,才会继续执行程序,要先关中断(EA),

;再送46h,B9h到ISP/IAP触发寄存器,起动ISP/IAP命令,关中断在触发之前即可

NOP

MOV    ;字节编程成功后,CPU继续执行程序ISP_CONTR,#00000000B     ;禁止ISP/IAP操作;以下语句可不用,只是出于安全考虑而已

MOVISP_CMD,#00000000B     ;去除ISP/IAP命令

;MOVISP_TRIG,#00000000B     ;防止ISP/IAP命令误触发

;MOVISP_ADDRH,#0

;MOVISP_ADDRL,#0

SETBEA;送地址高字节单元为00,指向非EEPROM区,防止误操作;送地址低字节单元为00,指向非EEPROM区,防止误操作;开中断,CPU处理完ISP/IAP动作即可开中断

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

----------------------------------------------------小常识: (STC单片机的Data Flash 当EEPROM功能使用)

3个基本命令----字节读,字节编程,扇区擦除

字节编程:如果该字节是“1111,1111B”,则可将其中的“1”编程为“0”,如果该

字节中有位为“0”,则须先将整个扇区擦除,因为只有“扇区擦除”才可以将“0”

变为“1”。(www.61k.com)

扇区擦除:只有“扇区擦除”才可能将“0”擦除为“1”。

大建议:

1.同一次修改的数据放在同一扇区中,单独修改的数据放在另外的扇区,就不须读出保护。

2.如果一个扇区只用一个字节,那就是真正的EEPROM,STC单片机的Data Flash比外部EEPROM要快很多,读一个字节/编程一个字节/擦除一个扇区大概是10uS/60uS/10mS。

3.如果同一个扇区中存放了一个以上的字节,某次只需要修改其中的一个字节或一部分字节时,则另外的不需要修改的数据须先读出放在STC 单片机的RAM中,然后擦除整个扇区,再将需要保留的数据和需修改的数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便(不需读出一大堆需保留数据)。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)68

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;扇区擦除,没有字节擦除,只有扇区擦除,512字节/扇区,

;建议同一次修改的数据放在同一个扇区

;如果要对某个扇区进行擦除,而其中有些字节的内容需要保留,则需将其先读到单片机

;内部的RAM中保存,再将该扇区擦除,然后将须保留的数据写回该扇区,所以每个扇区;中用的字节数越少越好,操作起来越灵活越快

;强烈建议同一次修改的数据放在同一个扇区

MOV

MOV

CLR

MOV

ORL

MOV

MOV

MOVISP_ADDRH,#SECTOR_FIRST_BYTE_ADDR_HIGH ;送扇区起始地址高字节ISP_ADDRL,#SECTOR_FIRST_BYTE_ADDR_LOW  ;送扇区起始地址低字节EA;关中断,此时各中断请求,会被挂起,一开中断,立即响应ISP_CONTR,#WAIT_TIME ;设置等待时间此两句可以合成一句,

stc89c52中文资料 STC89C52RC_中文指南_

ISP_CONTR,#10000000B ;允许ISP/IAPISP_CMD,并且只送一次就够了地址需要改变时才需重新送地址#ISP_IAP_SECTOR_ERASE ;送扇区擦除命令,命令不需改变时,不需重新送命令;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此;送完B9h后,ISP/IAP命令立即被触发起动ISP_TRIG,#46hISP_TRIG,#0B9h

;CPU等待IAP动作完成后,才会继续执行程序,要先关中断(EA),

;再送46h,B9h到ISP/IAP触发寄存器,起动ISP/IAP命令,关中断在触发之前即可

NOP

;以下语句可不用,只是出于安全考虑而已

MOV

MOVISP_CONTR,#00000000B;禁止ISP/IAP操作ISP_CMD,#00000000B     ;去除ISP/IAP命令

;送地址高字节单元为00,指向非EEPROM区

;送地址低字节单元为00,防止误操作;扇区擦除成功后,CPU继续执行程序;MOVISP_TRIG,  #00000000B      ;防止ISP/IAP命令误触发;MOVISP_ADDRH,#0;MOVISP_ADDRL,#0

;从用户应用程序区(AP区)软件复位并切换到ISP程序区开始执行程序

MOVISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位)

;从ISP程序区软件复位并切换到用户应用程序区(AP区)开始执行程序

MOVISP_CONTR,#00100000B;SWBS = 0(选择AP

stc89c52中文资料 STC89C52RC_中文指南_

区), SWRST = 1(软复位)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)69

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;本程序演示STC89C51RC/RD+系列单片机EEPROM/IAP功能

;------------------------------------------------

;定义与IAP有关的特殊功能寄存器

ISP_DATA        EQU 0E2H

ISP_ADDRH       EQU 0E3H

ISP_ADDRL       EQU 0E4H

ISP_CMD         EQU 0E5H

ISP_TRIG        EQU 0E6H

ISP_CONTR       EQU 0E7H

;------------------------------------------------

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;定义常量

;------------------------

;Flash 操作等待时间

;ENABLE_ISP      EQU 83H            ;<5MHz

;ENABLE_ISP      EQU 82H            ;<10MHz

;ENABLE_ISP      EQU 81H            ;<20MHz

;ENABLE_ISP      EQU 80H            ;>20MHz

DEBUG_DATA      EQU 5AH

;------------------------

;选择 MCU 型号

DATA_FLASH_START_ADDRESS EQU 2000H ;STC89C/LE52RC

;------------------------------------------------

ORG   0000H

AJMP  main

;------------------------------------------------

ORG   0100H

main:

MOV     P1,#0F0H;演示程序开始工作

LCALLDelay

MOV     P1,#0FH

LCALLDelay

MOV;延时;演示程序开始工作;延时  SP,#0E0H;堆栈指针指向 0E0H 单元

;************************************************

;读回写入 flash 的第1个字节

MAIN1:

MOV   DPTR, #DATA_FLASH_START_ADDRESS

LCALL byte_read

MOV  40H, A                ;值送40H 单元保存

CJNE  A, #DEBUG_DATA, DATA_NOT_EQU_DEBUG_DATA

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)70

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243DATA_IS_DEBUG_DATA:

MOV  P1,  #01111111B  ; (DATA_FLASH_START_ADDRESS) = #5A, 亮P1.7

LCALL Delay;延时

MOV  A, 40H   ;值从40H 单元送 ACC

CPL     A

MOV     P1,A    ;数据是对的,送 P1显示

WAIT1:

SJMP    WAIT1   ;数据是对的,送 P1显示,并在此停止

DATA_NOT_EQU_DEBUG_DATA:

MOV     P1,  #11110111B ;(DATA_FLASH_START_ADDRESS) != #5A, 亮P1.3

LCALLDelay

MOV;延时  A,   40H ;值从40H 单元送 ACC

CPL      A

MOV     P1,  A  ;数据不对,送 P1显示

LCALLDelay;延时

MOV     DPTR,#DATA_FLASH_START_ADDRESS

ACALL sector_erase  ;擦除扇区, (DATA_FLASH_START_ADDRESS) != #DEBUG_DATA    MOV     DPTR, #DATA_FLASH_START_ADDRESS

MOV     A,    #DEBUG_DATA           ;写入 flash 的数据为 DEBUG_DATA

ACALL   byte_program                ;字节编程

MOV     P1,   #11011111B            ;先亮P1.3 ,再亮 P1.5

WAIT2:

SJMP    WAIT2       ;字节编程后在此停止

;************************************************

;------------------------------------------------

;读一字节

;调用前需打开 IAP 功能

;入口:DPTR = 字节地址

;返回:A = 读出字节

byte_read:

MOV     ISP_CONTR,  #ENABLE_ISP     ;打开 IAP 功能, 设置 Flash 操作等待时间    MOV     ISP_CMD,    #01             ;Select Read AP Mode

MOV     ISP_ADDRH,  DPH             ;Fill page address in ISP_ADDRH & ISP_ADDRL    MOV     ISP_ADDRL,  DPL

CLR     EA

MOV     ISP_TRIG,   #46H            ;Trigger ISP processing

MOV     ISP_TRIG,   #0B9H           ;Trigger ISP processing

NOP

MOV     A,   ISP_DATA               ;数据在ISP_DATA

SETB    EA

;Now in processing.(CPU will halt here before completing)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)71

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    ACALL IAP_Disable               ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    RET

;------------------------------------------------

;字节编程

;调用前需打开 IAP 功能

;入口:DPTR = 字节地址, A=须编程字节的数据

byte_program:

MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间

MOV   ISP_CMD, #02H             ;Select Byte Program Mode

MOV   ISP_ADDRH, DPH            ;Fill page address in ISP_ADDRH & ISP_ADDRL    MOV   ISP_ADDRL, DPL

MOV   ISP_DATA, A               ;数据进ISP_DATA

CLR   EA

MOV   ISP_TRIG, #46H            ;Trigger ISP processing

MOV   ISP_TRIG, #0B9H           ;Trigger ISP processing

NOP

SETB  EA

ACALL IAP_Disable               ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    RET

;------------------------------------------------

;擦除扇区, 入口:DPTR = 扇区地址

sector_erase:

MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间

MOV   ISP_CMD, #03H             ;Select Page Erase Mode

MOV   ISP_ADDRH, DPH            ;Fill page address in ISP_ADDRH & ISP_ADDRL    MOV   ISP_ADDRL, DPL

CLR   EA

MOV   ISP_TRIG, #46H            ;Trigger ISP processing

MOV   ISP_TRIG, #0B9H           ;Trigger ISP processing

NOP

SETB  EA

ACALL IAP_Disable               ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    RET

;------------------------------------------------

trigger_ISP:

CLR  EA

MOV  ISP_TRIG, #46H             ;Trigger ISP processing

MOV  ISP_TRIG, #0B9H            ;Trigger ISP processing

NOP

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)72

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    SETB  EA

RET

;------------------------------------------------

IAP_Disable:                        ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    MOV   ISP_CONTR, #0             ;关闭 IAP 功能

MOV   ISP_CMD, #0

MOV   ISP_TRIG, #0

RET

;------------------------------------------------

Delay:

CLR   A

MOV   R0, A

MOV   R1, A

MOV   R2, #20H

Delay_Loop:

DJNZ  R0, Delay_Loop

DJNZ  R1, Delay_Loop

DJNZ  R2, Delay_Loop

RET

;------------------------------------------------

END

;************************************************

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)73

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

STC89C51 RC/RD+系列单片机交直流特性

ELECTRICAL CHARACTERISTICSAbsolute Maximum RatingsParameter

Storage temperatureOperating Temperature(I)Operating Temperature(C)DC Power Supply(5V MCU)DC Power Supply(3V MCU)Voltage on any Pin

SymbolTSTTATA

VDD - VSSVDD - VSS

MIN-55-400-0.3-0.3-0.5

MAX+125+85+70+6.0+4.0+5.5

UNIT℃℃℃VVV

DC Specification(5V MCU)

SymbolVDDIPWDNIIDLEICCVIL1VIL2VIH1VIH2

Parameter

Operating VoltagePower Down CurrentIdle CurrentOperating CurrentInput low voltage

(P0,1,2,3,4)Input low voltage(RESET,XTAL1)Input High voltage(P0,1,2,3,4,/EA)Input High voltage(RESET)

Sinking Currentfor Output Low(P1,P2,P3,P4)Sinking Currentfor Output Low(P0,ALE,PSEN)Sourcing Currentfor Output High(P1,P2,P3,P4)Sourcing Currentfor Output High(ALE,PSEN)Logic 0 inputcurrent

(P1,2,3,4)

Logic 1 to 0

transition current(P1,2,3,4)

2.03.0

Specification

Min.3.8

Typ.5.00.42.04 mA

200.81.5Max.5.5

UnitVuAmAmAVVVV

5V5V5V5V5V5V5V

Test

Condition

IOL146mA5V

IOL2812mA5V

IOH1150220uA5V

IOH21420mA5V

IIL1850uAVPIN=0V

ITL270600uAVPIN=2V

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)74

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

DC Specification(3.3V MCU)

SymbolVDDIPWDNIIDLEICCVIL1VIL2VIH1VIH2

Parameter

Operating VoltagePower Down CurrentIdle CurrentOperating CurrentInput low voltage

(P0,1,2,3,4)Input low voltage(RESET,XTAL1)Input High voltage(P0,1,2,3,4,/EA)Input High voltage(RESET)

Sinking Currentfor Output Low(P1,P2,P3,P4)Sinking Currentfor Output Low(P0,ALE,PSEN)Sourcing Currentfor Output High(P1,P2,P3,P4)Sourcing Currentfor Output High(ALE,PSEN)Logic 0 inputcurrent(P1,2,3,4)

Logic 1 to 0

transition current(P1,2,3,4)

SpecificationMin.1.8

Typ.3.30.42.04 mA

150.81.5

2.03.0

Max.3.6

UnitVuAmAmAVVVV

Test

Condition

3.3V3.3V3.3V3.3V3.3V3.3V3.3V

IOL12.54mA3.3V

IOL258mA3.3V

IOH14070uA3.3V

IOH2813mA3.3V

IIL850uAVPIN=0V

ITL110600uAVPIN=2V

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)75

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

附录A:     STC89LE516AD系列单片机手册

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

STC 具有A/D转换功能的单片机选型指南

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)76

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

特殊功能寄存器映像  SFR Mapping

stc89c52中文资料 STC89C52RC_中文指南_

STC89LE516AD,STC89LE58AD,STC89LE54AD,STC89LE52AD,STC89LE51AD为单倍速

因AD系列用户ISP设不了双倍速,故有一STC89LE516AD的双倍速版本(6T)STC89LE516X2是同一芯片,只是出厂时就设为双倍速了。(www.61k.com)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)77

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89LE516AD / X2 系列单片机 管脚图

XTAL1  3 P1.1/T2EX/ADC12 1                                  1 9                                  /P3.7  5 P1.3/ADC3/P3.6 1 8                                   6 P1.4/ADC4

XTAL2  4 P1.2/ADC22 0                                  VSS 2 2                                   2 P1.0/T2/ADC0

4 1P0.2/AD22 7                                   A11/P2.3 4 2P0.1/AD12 6                                   A10/P2.2

4 0P0.3/AD32 8                                   A12/P2.4

A9/P2.1                                     4 3P0.0/AD025

P4.0  1 P4.22 3                                PLCC-44

4 4VDD2 4                                   A8/P2.0

XTAL1 1 5

stc89c52中文资料 STC89C52RC_中文指南_

4 1P1.1/T2EX/ADC1

/P3.6 1 2                               4 4 P1.4/ADC4

1 3                                   4/P3.7  3 P1.3/ADC3

XTAL2 1 4                                   4 2 P1.2/ADC2

16                                    4 0P1.0/T2/ADC0VSS

2 0                                    3 6P0.1/AD1A10/P2.2

P4.1P2.7/A15P2.6/A14P2.5/A13

A/D转换典型应用线路:按键扫描

工作电压: 3.6V - 2.4V,  可低至2.4V - 1.9V

10K

I/O口: P0,P2,P3,P4口可以承受5V输入。(www.61k.com)         P1口不要接到5V系统,只能接3.3V系统.P4口: 地址在C0H, P4.3 - P4.0A/D转换在P1口, P1.0 - P1.7八路。

10K

A8/P2.0 1 8                                   3 8 VDD

VCC

P0.0/AD0

P0.1/AD1 P0.2/AD2 P0.3/AD3 6         P0.4/AD4P0.5/AD5 P0.6/AD6

9            3P0.7/AD7 10         11           1 2          P2.7/A15 14         P2.6/A1415           P2.5/A13 P2.4/A12 17           P2.3/A1118        P2.2/A1019         2P 2.1/A920         P2.0/A8

A/D

10K

10K

10K

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

2 1                                    3 5P0.2/AD2A11/P2.3

2 2                                   3A12/P2.4  4 P0.3/AD3

A9/P2.1 1 9                                    3 7P0.0/AD0

P4.0 1 7                                   3 9 P4.2

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

DIP-40

PQFP-44

78

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC89LE516AD系列单片机 ISP下载编程典型应用电路

STC单片机在线编程线路, STC    RS-232 转换器

R33  =  0  -  160 欧姆,推荐用此电阻,可以不用 X1C1,C2R1

2-3MHz47pF不用

4-9MHz20pF不用

10-18MHz19-26MHz10pF不用

不用不用

27-34MHz10pF6.8K

35-39MHz10pF5.1K

40-43MHz10pF3.3K

44-48MHz5pF3.3K

任何一种复位后,如P1.1/P1.0 = 0,0则进入系统ISP监控程序。(www.61k.com)

任何一种复位后,如P1.1,P1.0 不同时为0,则不进入系统ISP监控程序。

注意与STC89C51RC/RD+系列单片机的不同,RC/RD+系列是冷启动进入系统ISP监控程序。

使用STC89LE516AD系列单片机时,尽量将P1.0/P1.1中的一个管脚空着,免得不需要进入系统ISP监控程序时,由于P1.1/P1.0 = 0,0复位后进入系统ISP监控程序。

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)79

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

1.STC89LE516AD系列单片机扩展AUX-RAM的使用

STC89LE516AD/X2系列单片机内部的RAM为512字节(256+256),即扩展了256字节的AUX-RAM,其访

问方式为:

汇编语言:  (访问内部扩展的256字节AUX-RAM)

MOVX   @Ri,  A   ;   将累加器A的值送至@Ri指向的单元, i = 0, 1        MOVX   A,    @Ri ;   将@Ri指向的单元的值读到累加器A, i = 0, 1

STC89LE516AD/X2系列单片机用“MOVX  A, @Ri”,“MOVX  A, @Ri”指令访问不到外部64K数据空间。[www.61k.com]

汇编语言:  (访问外部64K数据空间)

MOVX   @DPTR,  A     ;   将累加器A的值送至@DPTR指向的单元        MOVX   A,      @DPTR ;   将@DPTR指向的单元的值读到累加器A

STC89LE516AD/X2系列单片机用“MOVX  A, @DPTR”,“MOVX  A, @DPTR”指令访问不到内部扩展的256字节AUX-RAM。C语言:

用pdata 声明的变量访问单片机内部扩展的256字节AUX-RAM用xdata 声明的变量访问单片机外部64K数据空间

2.双数据指针 及  AUXR1寄存器

AUXR1

A2hAuxiliary  Register  1 -

-DPSxxxx,xxx0

DPS = 0 时选择 DPTR0, DPS = 1 时选择 DPTR1可以用 “INC AUXR1” 快速切换 DPTR0 / DPTR1

3.禁止ALE输出 及  AUXR1寄存器

AUXR8EhAuxiliary  Register  0 - - - - - - -ALEOFFxxxx,xxx0

ALEOFF = 0, ALE信号正常输出。

ALEOFF = 1, 禁止ALE信号输出。但在访问外部数据空间及外部程序空间时有信号输出。

4.中断 及  中断优先级控制寄存器 IP / IPH

中断与普通8052完全兼容,优先级可设为4级,通过增加的IPH寄存器

MnemonicAddIEIPIPH

A8hB8hB7h

Name

Interrupt  EnableInterrupt  Priority  LowInterrupt  Priority  High

7EA - -

6 - - -

5ET2PT2

4ESPS

3ET1PT1

2EX1PX1

1ET0PT0

0EX0PX0

Reset Value0000,0000xx00,0000

PT2HPSHPT1HPX1HPT0HPX0Hxx00,0000

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)80

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

Interrupt Source中断源/INT0Timer 0/INT1Timer 1UARTTimer 2

VectorAddress中断向量地址0003H000BH0013H001BH0023H002BH

PollingSequence中断

查询次序123456

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

中断

优先级设置

PX0H,PX0PT0H,PT0  PX1H,PX1  PT1H,PT1Interrupt

优先级0优先级3

优先级1优先级2Request

最低最高

中断请求0,00,00,00,00,00,0

0,10,10,10,10,10,1

1,01,01,01,01,01,0

1,11,11,11,11,11,1

IE0TF0IE1IF1RI + TITF2 + EXF2

PSH,  PS

PT2H,PT2

4.A/D 及  A/D转换寄存器 ADC_CONTR/ADC_DATA/P1_ADC_EN

STC89LE516AD/X2在P1口,有8位精度的高速A/D转换器, P1.7 - P1.0共8路

电压输入型,可做按键扫描,电池电压检测,频谱检测等。[www.61k.com]17个机器周期可完成一次转换,时钟在40MHz以下时。

Mnemonic

Add

Name

允许P1.x成为A/D口A/D 转换控制寄存器A/D 转换结果寄存器

7 - -

6 - -

5- -

3ADC_P13 -

1CHS1 -

0CHS0 -

Reset Valuexxx0,00000000,0000

P1_ADC_EN97hADC_CONTRC5hADC_DATA

C6h

ADC_P17 ADC_P16ADC_P15ADC_P14

ADC_P12ADC_P11ADC_P100000,0000 -

ADC_FLAGADC_STARTCHS2

P1_ADC_EN 特殊功能寄存器:  P1.x作为A/D 转换输入通道来用允许特殊功能寄存器

允许P1.x成为A/D口ADC_P17 ADC_P16ADC_P15ADC_P14ADC_P13ADC_P12ADC_P11ADC_P100000,0000相应位为“1”时,对应的P1.x口作为A/D转换使用,内部上拉电阻自动断开ADC_CONTR 特殊功能寄存器:  A/D转换控制特殊功能寄存器

A/D 转换控制寄存器 - --ADC_FLAGADC_STARTCHS2CHS1CHS0xxx0,0000

CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0

CHS200001111

CHS100110011

CHS001010101

Analog Input Channel Select

模拟输入通道选择选择选择选择选择选择选择选择选择

P1.0 作为A/D输入来用P1.1 作为A/D输入来用P1.2 作为A/D输入来用P1.3 作为A/D输入来用P1.4 作为A/D输入来用P1.5 作为A/D输入来用P1.6 作为A/D输入来用P1.7 作为A/D输入来用

ADC_START: 模拟/数字转换(ADC)启动控制位,设置为“1”时,开始转换ADC_FLAG:   模拟/数字转换结束标志位,当A/D转换完成后,ADC_FLAG = 1。ADC_DATA  特殊功能寄存器:  A/D转换结果特殊功能寄存器

A/D 转换结果寄存器 - - - - - - - -0000,0000

模拟/数字转换结果计算公式如下: 结果 = 256 x Vin / Vcc

Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

81

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243/* ------------- 宏晶科技   2005/1/5      A/D转换C语言示例 ------------ */

/* ---Mobile: 13922805190, Tel: 0755 - 82908285,  Fax: 0755 - 82944243  */

/* ----Website: www.mcu-memory.com   Email: support@mcu-memory.com  --- */

//   ADC DEMO 程序演示 STC89LE516AD/X2 系列 MCU 的 A/D 转换功能。[www.61k.com) 时钟   11.0592MHz//  转换结果以 16 进制形式输出到串行口,可以用串行口调试程序观察输出结果。

#include <reg52.H>

#include <intrins.H>

//定义与 ADC 有关的特殊功能寄存器

sfr

sfr

sfrP1_ADC_ENADC_CONTRADC_DATA===0x97;               // A/D 转换功能允许寄存器0xC5;               // A/D 转换控制寄存器0xC6;               // A/D 转换结果寄存器

typedef    unsigned char   INT8U;

typedef    unsigned int    INT16U;

void delay(INT8U delay_time)            // 延时函数

INT8U

INT16Un;m;

for (n=0; n<delay_time; n++)

for (m=0; m<10000; m++);

void initiate_RS232 (void)          // 串口初始化

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

ES = 0;                         // 禁止串口中断

SCON = 0x50;                    // 0101,0000  8位数据位, 无奇偶校验

T2CON = 0x34;                   // 0011,0100, 由T2作为波特率发生器

RCAP2H = 0xFF;                  // 时钟11.0592MHz,  9600 波特率

RCAP2L = 0xDB;

ES = 1;                         // 允许串口中断

void Send_Byte(INT8U one_byte)      // 发送一个字节

TI = 0;                         // 清零串口发送中断标志

SBUF = one_byte;

while (TI == 0);

TI = 0;                         // 清零串口发送中断标志

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)82

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243INT8U get_AD_result(INT8U channel)

INT8U AD_finished

ADC_DATA= 0;

//选择 A/D 当前通道

//使输入电压达到稳定

//0000,1000 令 ADC_START = 1, 启动A/D转换

//等待A/D转换结束    ADC_CONTR  = channel;    delay(1);    ADC_CONTR |= 0x08;    AD_finished = 0;    while ( AD_finished == 0 )

AD_finished = (ADC_CONTR & 0x10);  //0001,0000, ADC_FLAG ==1 测试A/D转换结束否    }

ADC_CONTR &= 0xF7;                  //1111,0111 令 ADC_START = 0, 关闭A/D转换,    return (ADC_DATA);

void main()

initiate_RS232();

P1=P1|0x63;   // 0110,0011,要设置为 A/D 转换的P1.x口,先设为高

P1_ADC_EN = 0x63;      //0110,0011, P1 的P1.0,P1.1,P1.5,P1.6设置为 A/D 转换输入脚                           //断开P1.0,P1.1,P1.5,P1.6内部上拉电阻

while(1)

Send_Byte(get_AD_result(0));//P1.0 为 A/D 当前通道, 测量并发送结果

delay(0x200);

Send_Byte(get_AD_result(1));//P1.1 为 A/D 当前通道, 测量并发送结果

delay(0x200);

Send_Byte(get_AD_result(5));//P1.5 为 A/D 当前通道, 测量并发送结果

delay(0x200);

Send_Byte(get_AD_result(6));//P1.6 为 A/D 当前通道, 测量并发送结果

delay(0x200);

Send_Byte(0);               //连续发送 4 个 00H, 便于观察输出显示

Send_Byte(0);

Send_Byte(0);

Send_Byte(0);

delay(0x200);               //延时

delay(0x200);

delay(0x200);

delay(0x200);

delay(0x200);

delay(0x200);

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)83=0;            // 存储 A/D 转换标志  // 返回 A/D 转换结果

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

附录B:为什么少数用户的普通8051程序烧录后,不能运行

1. 增强型的STC89C58RD+,STC89C52RC系列单片机内部扩展了AUX-RAM.

型号STC89C51RCSTC89LE51RCSTC89C52RCSTC89LE52RCSTC89C53RCSTC89LE53RCSTC89C54RD+STC89LE54RD+STC89C58RD+STC89LE58RD+STC89C516RD+

内部扩展RAM256    字节256    字节256    字节256    字节256    字节256    字节1024  字节1024  字节1024  字节1024  字节1024  字节

占外部64K数据空间0000H - 00FFH0000H - 00FFH0000H - 00FFH0000H - 00FFH0000H - 00FFH0000H - 00FFH0000H - 03FFH0000H - 03FFH0000H - 03FFH0000H - 03FFH0000H - 03FFH0000H - 03FFH

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOVX  @DPTR / xdata地址>=100H,才访问外部地址>=100H,才访问外部地址>=100H,才访问外部地址>=100H,才访问外部地址>=100H,才访问外部地址>=100H,才访问外部地址>=400H,才访问外部地址>=400H,才访问外部地址>=400H,才访问外部地址>=400H,才访问外部地址>=400H,才访问外部地址>=400H,才访问外部0000-FFFFH,均访问外部0000-FFFFH,均访问外部

MOVX  @Ri  / pdata只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM只访问内部扩展RAM

STC89LE516RD+1024  字节STC89LE516ADSTC89LE516X2

256   字节256   字节

STC89C52RC / STC89C58RD+系列

如果用户的单片机 P0 / P2 口是作为普通I/O口(输入/输出口)用的,无冲突

如果用户的单片机 P0 / P2 口是作为总线扩展用的,外部扩展器件的地址在内部扩展RAM之上,无冲突

如果用户的单片机 P0 / P2 口是作为总线扩展用的,访问外部扩展器件的地址在内部扩展RAM的范围内,则访问的是内部扩展的AUX-RAM,所以有些系统用户要禁止内部扩展RAM

MnemonicAddNameAUXR

7 6 -

5 -

4 -

3 -

2 -

1 0Reset value

8EhAuxiliary  Register  0 -EXTRAMALEOFFxxxx,xx00

将AUXR寄存器的EXTRAM设为1,即可禁止内部扩展的AUX-RAM,使之与标准8052一样。(www.61k.com)STC89LE516AD / STC89LE516X2系列AUXR寄存器无EXTRAM控制位,通过寻址方式区分

,“MOVX @Ri”固定访问内部扩展RAM,“MOVX, @DPTR”固定访问外部扩展64K数据空间,详见相应部分说明。

2.晶振 / 时钟电路

STC89C52RC / STC89C58RD+ 现系列时钟电路部分请参照相应部分典型应用线路,用示波器查看时钟是

否正常。

3.复位电路

电阻/电容复位的值为  电阻 = 10k, 电容 = 10uF。如为用外部专用芯片复位,RESET管脚(复位脚)不要加任何上拉/下拉电阻。详见相应部分说明

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)84

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

附录C: STC89C51 RC / RD+ 系列 单片机 ISP (DIY)

自己动手写自己的ISP,写自己的远程升级程序还需了解的信息,只提供给策略性伙伴用户程序区空间和ISP程序区空间:

型号STC89C51RCSTC89LE51RCSTC89C52RCSTC89LE52RC

用户应用程序区AP Space 地址0000H - 0FFFH0000H - 0FFFH0000H - 1FFFH0000H - 1FFFH

用户应用程序区AP Space 地址0000H - 3BFFH0000H - 3BFFH0000H - 37FFH0000H - 37FFH0000H - 33FFH0000H - 33FFH0000H - 2BFFH0000H - 2BFFH

ISP 引导区空间(ISP Space)0 K目前

版本禁止ISP/IAP操作

1K(ISP/IAP)3800H - 3BFFH3800H - 3BFFH3800H - 3BFFH3800H - 3BFFH

2 K(ISP/IAP)3400H - 3BFFH3400H - 3BFFH3400H - 3BFFH3400H - 3BFFH

4K(ISP/IAP)2C00H - 3BFFH2C00H - 3BFFH2C00H - 3BFFH2C00H - 3BFFH

型号STC89C53RCSTC89LE53RCSTC89C53RCSTC89LE53RCSTC89C53RCSTC89LE53RCSTC89C53RCSTC89LE53RC

ISP 引导区空间(ISP Space)0 K

目前版本禁止ISP/IAP操作

3800H - 3BFFH3800H - 3BFFH

3400H - 3BFFH3400H - 3BFFH

2C00H - 3BFFH2C00H - 3BFFH

1K(ISP/IAP)

2 K(ISP/IAP)

4K(ISP/IAP)

型号STC89C54RD+STC89LE54RD+STC89C58RD+STC89LE58RD+

用户应用程序区AP Space 地址0000H - 3FFFH0000H - 3FFFH0000H - 7FFFH0000H - 7FFFH

用户应用程序区AP Space 地址0000H - FBFFH0000H - FBFFH0000H - F7FFH0000H - F7FFH0000H - F3FFH0000H - F3FFH0000H - EBFFH0000H - EBFFH

ISP 引导区空间(ISP Space),从ISP区启动MCU才有IAP功能0 K目前

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

版本禁止ISP/IAP操作

1K(ISP/IAP)F800H - FBFFHF800H - FBFFHF800H - FBFFHF800H - FBFFH

2 K(ISP/IAP)F400H - FBFFHF400H - FBFFHF400H - FBFFHF400H - FBFFH

4K(ISP/IAP)EC00H - FBFFHEC00H - FBFFHEC00H - FBFFHEC00H - FBFFH

型号STC89C516RD+STC89LE516RD+STC89C516RD+STC89LE516RD+STC89C516RD+STC89LE516RD+STC89C516RD+STC89LE516RD+

ISP 引导区空间(ISP Space),从ISP区启动MCU才有IAP功能0 K

目前版本禁止ISP/IAP操作

F800H - FBFFHF800H - FBFFH

F400H - FBFFHF400H - FBFFH

EC00H - FBFFHEC00H - FBFFH

1K(ISP/IAP)

2 K(ISP/IAP)

4K(ISP/IAP)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)85

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243 动手写自己的ISP还必需要的工具,只提供给策略性伙伴                   -----STC89C51RC / RD+ 系列单片机专用烧录器(200元)    STC89C51RC / RD+ 系列单片机出厂时一般都固化有ISP引导码程序,如只烧录普通的用户程序,则只需将P3.0/P3.1经过RS-232转换器连到电脑的RS-232串口,通过STC-ISP下载软件打开用户程序下载就可以了。(www.61k.com)如果不用STC的ISP程序而要编写自己的ISP程序,

则需要STC89C51RC / RD+ 系列单片机专用烧录器,才可将用户的ISP程序烧录进单片机内部,软件使用STC MCU Programmer

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

编程工具。

方式一:用户主应用程序和ISP程序一起烧录,上电复位后程序从ISP区开始运行一.三个加密项全部加密0开始,清缓冲

区调入用户主应用程序

三.选定ISP空间从那里开始,

不清缓冲区调入ISP程序,保留

已调入的程序,用户ISP空间可

选0/1K/2K/4K

四.选择从ISP区启动

五.烧录程序

也可直接调入ISP程序至ISP区,选择从ISP程序区启动,再烧录。用户主应用程序由用户自己编的ISP程序下载。还可以把ISP区当成用户程序区,把余下的空间当成Data Flash 数据空间。如STC89C516RD+,4K ISP区当用户程序使用,余下59K当EEPROM用。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)86

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    方式二:用户主应用程序和ISP程序一起烧录,上电复位后程序从用户主应用程序区开始运行(但单片机ISP空间大小必须要选择1K/2K/4K,否则只能当成无ISP/IAP的单片机使用

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

一.三个加密项全部加密

二.缓冲区从0开始,清缓冲

区调入用户主应用程序

三.选定ISP空间从那里开始,

不清缓冲区调入用户自己的ISP

程序,保留已调入的程序四.选择从用户主应用程序区

启动

五.烧录程序

已加过密的单片机,或已设置过ISP空间为1k/2k/4k,上电复位从ISP空间启动的单片机,重新烧录程序时,要先将整个芯片擦除,再停电(单片机电放光后),再上电,再重烧程序,才会写对。[www.61k.com]擦除整个芯片后,重新允许读出芯片内容的状态,是停电后再上电才能生效。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)87

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243用户写自己的ISP程序的格式:

ISP_DATA EQU 0E2H;申明ISP_DATA寄存器地址,或ISP_DATA DATA 0E2H

ISP_ADDRH EQU 0E3H;申明ISP_ADDRH寄存器地址,或用 DATA 申明

ISP_ADDRL EQU 0E4H;申明ISP_ADDRL寄存器地址,或用 DATA 申明

ISP_CMD

ISP_TRIG EQU 0E5H;申明ISP_CMD寄存器地址,或用 DATA 申明 EQU 0E6H;申明ISP_TRIG寄存器地址,或用 DATA 申明

ISP_CONTR EQU 0E7H;申明ISP_CONTR寄存器地址,或用 DATA 申明

ORG

LJMP

ORG

LJMP

ORG

LJMP

ORG

LJMP

ORG

INIT_MCU:

MOV

......

......

;收到外部命令要更新“用户主应用程序区” (AP区)

......

UPDATE_USER_AP_CODE:

......  ; 更新用户程序区(AP),用ISP/IAP对用户AP区操作,物理地址从0开始

From_ISP_to_AP_Soft_Reset:

MOV

ENDASMISP_CONTR,#00100000B;更新完用户程序区后,从ISP区软复位到AP区SP,#0E0H;0000H;INIT_MCU0003H;  ISP程序的外部中断0入口地址,逻辑上是从“0003H”开始INT_0000BH;  ISP程序定时器0中断入口地址,逻辑上是从“000BH”开始TIMER_00023H;  ISP程序的串口中断入口地址,逻辑上也是从“0023H”开始Serial_Port_INT0050H;初始化单片机ISP程序的入口地址,逻辑上也是从“0”开始

;将以上ISP程序烧录到单片机的ISP区就可已了。(www.61k.com]

----------------------------------------------------也可以在用户程序区收到命令后,从AP区软复位到ISP区。

From_AP_to_ISP_Soft_Reset:

MOVISP_CONTR,#01100000B;在AP区收到命令后,从AP区软复位到ISP区

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)88

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243附录D: 如何实现运行中自定义下载,无仿真器时方便调试自定义下载原理:STC-ISP.exe软件

1.STC-ISP.exe软件,可由用户设置,按UART/RS-232的格式向用户程序发送命令

波特率:  38400bps,  19200bps,  9600bps, 4800bps,  2400bps,  1200bps等

奇偶校验位:  无,  偶校验,    奇校验

数据位几位:  8位, 7位,6位,5位, 等

停止位几位:  1位, 1.5位,2

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

位,等

2.需向用户程序发送的命令用户可在上图自定义下载命令输入窗口中输入(HEX)

命令之间建议加一个空格,也可不加,STC-ISP.exe会处理,上例为发送自定义命令

12H,34H,56H,78H,0ABH,0CDH,0EFH,  12H,34H,56H,78H,0ABH,0CDH,0EFH

3.用户程序中应加入收到自定义下载命令,延时一秒,软复位到系统ISP程序区的程序

4.将以上含有接收自定义下载命令的用户程序先用老方法下载进STC单片机内部:

STC89C51RC,STC89C52RC,STC89C53RC,STC89C54RD+,STC89C58RD+,STC89C516RD+

STC89LE52RC,STC89LE53RC,STC89LE54RD+,STC89LE58RD+,STC89LE516RD+

这样以上型号的STC单片机就具有了“不停电/运行中/自定义下载功能”

6.以下选好型号,打开文件...,

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

在自定义下载中设置相关选项,选择“发送”即可,

STC-ISP.exe在“发送”完用户自

定义下载命令后,就会转去调用老的

那一套下载命令,而不管用户单片机

程序收到命令没有。(www.61k.com]不过这个转换有

些电脑有时需要将近1S的时间,所以

用户应用程序要延时1S,否则系统

ISP程序收不到下载命令,又会回到

用户应用程序。

7.调试程序时,还可以在选项中选

择“每次下载前自动重新调入文件”,

这样你每次修改原文件并从新编译/

汇编后生成的*.hex,*.bin文件就不

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

要再次手工调入了,生产时不要用。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)89

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243附录E: Keil C51高级语言编程的软件如何减少代码长度1.在“Project”菜单中选择“Options for Target”

2.在“Options for Target”中选择“C51”3.选择按空间大小, 9级优化程序

4.重新编译程序即可。(www.61k.com)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

90

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

附录F:(写给用STC89C51RC/RD+系列单片机做仿真器的朋友)     STC89C51 RC / RD+ 系列 单片机 做仿真器须知

1.对Flash的IAP字节读/字节编程/扇区擦除等待机器周期

设置等待时间WT2 0 0 0 0

1 1 0 0

1 0 1 0

CPU   等待时间(机器周期)

ProgramSector Erase3060120240

5471109422188543769

Recommended System Clock5MHz10MHz20MHz40MHz

6112243

WT1WT0Read

512Byte/Sector

2.程序在ISP区可对用户AP区进行IAP读/编程/扇区擦除3.程序在用户AP区不可对ISP区进行IAP操作。[www.61k.com]4.程序在ISP/AP区可对Data Flash区进行IAP操作。5.可从ISP区软复位到AP区,也可从AP区软复位到ISP区。

MnemonicISP_DATA

AddName

E2hISP/IAP  Flash  Data  Register

4 3 2

Reset Value1111,11110000,00000000,0000

- -MS2MS1MS0xxxx,x000

xxxx,xxxx

ISPENSWBSSWRST - -WT2WT1WT0000x,x000

ISP_ADDRHE3hISP/IAP  Flash  Address  HighISP_ADDRLE4hISP/IAP  Flash  Address  LowISP_CMDISP_TRIG

E5hISP/IAP  Flash  Command  Register -E6hISP/IAP  Flash  Command  Trigger

ISP_CONTRE7hISP/IAP  Control  Register

;从用户应用程序区(AP区)软件复位并切换到ISP程序区开始执行程序

MOV    MOV

ISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位)

;从ISP程序区软件复位并切换到用户应用程序区(AP区)开始执行程序

ISP_CONTR,#00100000B;SWBS = 0(选择AP区), SWRST = 1(软复位)

软复位后所有的寄存器复位,可在软复位前将需保存的SFR的值,保存在RAM或DATA Flash中,建议

采用STC89C58RD+设计。

STC89C58RD+50-C-PI:  独立32k字节用户程序区,独立可选0/1/2/4k字节系统ISP区。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

独立27k字节数据Flash区

只有选择1/2/4k字节ISP区,并选择上电复位从ISP区启动,晶片IAP功能才起作用

工作电压:5.5v - 3.4v, 不要过低,否则工作不了。5V串2个1N4001二极管是3.6V

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)91

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

附录G:     STC 高性能SRAM选型一览表

型号STC62WV256STC62WV1024STC62WV2568STC62WV5128STC62WV1M8STC62WV6416

容量  32K x 8128K x  8256K x  8512K x  8   1M x  8 64K x  8

工作电压温度速度推荐封状SOP/TSOP/DIP

供货现货

STC62WV256

2.4 - 5.5V-40℃~85℃70nS2.4 - 5.5V-40℃~85℃70nS2.4 - 5.5V-40℃~85℃70nS2.4 - 5.5V-40℃~85℃70nS2.4 - 5.5V-40℃~85℃70nS2.4 - 5.5V-40℃~85℃70nS

2                WESOP/STSOP/TSOP现货STSOP-32STSOP/SOP-32TSOP2-44TSOP2-44TSOP2-44TSOP2-44TSOP2-44TSOP2-44

现货现货订货现货现货现货现货现货

SOP-28

STC62WV12816128K x 162.4 - 5.5V-40℃~85℃70nSSTC62LV12816128K x 162.4 - 3.6V-40℃~85℃70nSSTC62WV25616256K x 162.4 - 5.5V-40℃~85℃70nSSTC62WV51216512K x 162.4 - 5.5V-40℃~85℃70nS

13

STC62WV1024

STC62WV1024

STC62WV1M8

1                                             OEA10DQ7DQ6DQ3GND10           DQ211                                            DQ1 12                                            13                                            14                                            15              A216                                           5                           7               4   10                           11   12                           24    12               13               20                                      DQ3

13                          14                                                   NC                        NC                        18  19  20                                                   TSOP / STSOP-32

SOP-32TSOP-Ⅱ-44

STC62WV5128

DQ5VCC                           GND10            12                                                                             14                                            16                                           STSOP-32

STC62WV12816

9                                          11                           13                           14                           15                  16                           17                          18                                                  A9                 21                  A1122                  NC

STC62WV25616

STC62WV51216

9                                                                                                                                         17                           19                           20                           21                           22                                                                                                                                       17  20                  21                  22                  TSOP-Ⅱ-44TSOP-Ⅱ-44TSOP-Ⅱ-44

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)92

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

附录H:        STC 单片机配套工具价格

1.STC单片机ISP下载编程工具,人民币50元(可申请样品)

2.STC单片机ISP到ISP脱机下载工具,人民币200元(脱机就是量产时无须电脑)

3.STC单片机专用烧录器,人民币200元(有些用户生产时希望擦除ISP,或要烧录自己开发的ISP程序,用户自己开发的ISP程序可与用户应用程序一起烧录)4.STC-单片机仿真器,人民币1950元,测试中

STC89C51RC/RD+系列 5V单片机批量价格,1K以下零售加0.3元,快递费25元

型号

STC89C51RCSTC89C51RCSTC89C51RCSTC89C51RCSTC89C51RCSTC89C51RCSTC89C52RCSTC89C52RCSTC89C52RCSTC89C52RCSTC89C52RCSTC89C52RCSTC89C53RCSTC89C53RCSTC89C53RCSTC89C53RCSTC89C53RCSTC89C53RCSTC89C54RD+STC89C54RD+STC89C54RD+STC89C54RD+STC89C54RD+STC89C54RD+STC89C58RD+STC89C58RD+STC89C58RD+STC89C58RD+STC89C58RD+STC89C58RD+STC89C516RD+STC89C516RD+STC89C516RD+STC89C516RD+STC89C516RD+STC89C516RD+STC89LE516ADSTC89LE58ADSTC89LE54ADSTC89LE52ADSTC89LE51AD

尾缀40C-PDIP40C-PLCC40C-PQFP40I-PDIP40I-PLCC40I-PQFP40C-PDIP40C-PLCC40C-PQFP40I-PDIP40I-PLCC40I-PQFP40C-PQFP40C-PLCC40C-PQFP40I-PQFP40I-PLCC40I-PQFP40C-PQFP40C-PLCC40C-PQFP40I-PQFP40I-PLCC40I-PQFP40C-PQFP40C-PLCC40C-PQFP40I-PDIP40I-PLCC40I-PQFP40C-PDIP40C-PLCC40C-PQFP40I-PDIP40I-PLCC40I-PQFP

封装DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44DIP-40PLCC-44PQFP-44

商规/工规商规商规商规工规工规工规商规商规商规工规工规工规商规商规商规工规工规工规商规商规商规工规工规工规商规商规商规工规工规工规商规商规商规工规工规工规

单价4.7元5.2元5.6元5.5元5.7元6.0元5.4元6.0元6.0元6.7元6.7元7.0元8.0元8.0元8.0元9.0元9.0元9.0元9.0元9.0元9.0元11元11元11元12元12元12元15元15元15元13.5元13.5元13.5元17元17元17元14元12.5元11元9元8元

RAM字节512512512512512512512512512512512512512512512512512512128012801280128012801280128012801280128012801280128012801280128012801280

Flash程序4K4K4K4K4K4K8K8K8K8K8K8K15K15K15K15K15K15K16K16K16K16K16K16K32K32K32K32K32K32K63K63K63K63K63K63K

有有有有有有有有有有有有有有有有有有有有有有有有P4口

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)93

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243附录       I:  STC12C5410AD系列 1T 单片机简介

STC12C5410系列单片机是单时钟/机器周期(1T)的兼容8051内核单片机,是高速/低功耗的新一代8051单片机,全新的流水线/精简指令集结构,内部集成MAX810专用复位电路。[www.61k.com)

特点:

1. 增强型 1T 流水线/精简指令集结构 8051 CPU

2. 工作电压:5.5V - 3.4V(5V单片机)  /  3.8V - 2.0V(3V单片机)

3. 工作频率范围:0 - 35 MHz,相当于普通8051的  0~420MHz.实际工作频率可达48MHz.4. 用户应用程序空间12K / 10K / 8K / 6K / 4K / 2K 字节

5. 片上集成 512 字节 RAM

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

6. 通用I/O口(27/23个),复位后为: 准双向口/弱上拉(普通8051传统I/O口)     可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏

每个I/O口驱动能力可达20mA,但整个芯片最大不得超过55mA

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器

可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片

8. EEPROM 功能

9. 看门狗

10.内部集成MAX810专用复位电路(外部晶体20M以下时,可省外部复位电路)

11.时钟源:外部高精度晶体/时钟,内部R/C 振荡器

用户在下载用户程序时,可选择是使用内部R/C振荡器还是外部晶体/时钟

常温下内部R/C 振荡器频率为:5.2MHz ~ 6.8MHz

精度要求不高时,可选择使用内部时钟,但因为有温漂,应认为是4MHz ~ 8MHz

12.共2个16位定时器/计数器

13.外部中断2路,下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平唤醒14.PWM(4路)/PCA(可编程计数器阵列),也可用来再实现4个定时器

---也可用来再实现4个定时器或4个外部中断(上升沿中断/下降沿中断均可支持)15.ADC, 10位精度ADC,共8路

16. 通用异步串行口(UART)

17.SPI同步通信口, 主模式/从模式

18.工作温度范围: 0 - 75℃ / -40 - +85℃

19.封装: PDIP-28,SOP-28,PDIP-20,SOP-20,PLCC-32,TSSOP-20(超小封状,定货)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)94

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列 1T 单片机管脚图

P2.2P2.3RSTRxD/P3.0TxD/P3.1

XTAL2XTAL1INT0/P3.2INT1/P3.3ECI/T0/P3.4

PWM1/PCA1/CEX1/T1/P3.5PWM3/PCA3/CEX3/P2.4

P2.5VSS

128VDDP2.1

P2.0/CEX2/PCA2/PWM2P1.7/SCLK/ADC7P1.6/MISO/ADC6P1.5/MOSI/ADC5P1.4/SS/ADC4P1.3/ADC3P1.2/ADC2P1.1/ADC1P1.0/ADC0

P3.7/CEX0/PCA0/PWM0P2.7P2.6

P2.2P2.3RSTRxD/P3.0TxD/P3.1

XTAL2XTAL1ECI/T0/P3.4

PWM1/PCA1/CEX1/T1/P3.5PWM3/PCA3/CEX3/P2.4

P2.5VSS

128VDDP2.1

P2.0/CEX2/PCA2/PWM2P1.7/SCLKP1.6/MISOP1.5/MOSIP1.4/SSP1.3P1.2P1.1P1.0

P3.7/CEX0/PCA0/PWM0P2.7P2.6

DIP-28(窄体)/ SOP-28

DIP-28(窄体)/ SOP-28

DIP-20/SOP-20

234567891011121314

27262524232221201918171615

234567891011121314

27262524232221201918171615

STC12C5410AD(有A/D转换)STC12C5410(无A/D转换)

VCC VCC

2          P1.7/SCLK 2          P1.7/SCLK/ADC7

3          P1.6/MISO 3          P1.6/MISO/ADC6

4          P1.5/MOSI P1.5/MOSI/ADC5

5          P1.4/SS 5          P1.4/SS/ADC4

6          P1.3 6          P1.3/ADC3

7          P1.2 7          P1.2/ADC2

8          P1.1 8          P1.1/ADC1

P1.0 9          P1.0/ADC0

10         P3.7/CEX0/PWM0 10         P3.7/CEX0/PCA0/PWM0

DIP-20/SOP-20

STC12C5410AD(有A/D转换)STC12C5410(无A/D转换)

4   3  2  1 32  31 30

TxD/P3.1

P0.0XTAL2XTAL1P0.1ECI/T0/P3.4

PWM1/PCA1/CEX1/T1/P3.5

5678910111213

14 15 16 17 18 19 20

292827

P1.7/SCLK/ADC7P1.6/MISO/ADC6P1.5/MOSI/ADC5P0.3

P1.4/SS/ADC4P1.3/ADC3P0.2P1.2/ADC2P1.1/ADC1

P2.0/CEX2/PCA2/PWM2

262524232221ADC0/P1.0

P3.0/RxD

P2.3

P2.2P2.6

PLCC-32

PWM3/PCA3/CEX3/P2.4

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

PWM0/PCA0/CEX0/P3.7

P2.5

P2.7

VSS

P2.1

RST

VDD

95

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列 1T 单片机封装尺寸图

32-PIN PLASTIC LEAD CHIP CARRIER (PLCC)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

0.485 inch(12.32 mm)

stc89c52中文资料 STC89C52RC_中文指南_

0.106 (2.69)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

BSC.

0.140 (3.56)

28-PIN PLASTIC DUAL-IN-LINEPACKAGE (PDIP)

28-PIN SMALL OUTLINE PACKAGE (SOP)

0.020 (0.508)0.014 (0.350)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

00.014(0.356)0.008(0.203)

0.0276 (0.700)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)96

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

20P3, 20-lead, 0.300" Wide, Plastic Dual InlinePackage (PDIP-20)

Dimensions in Inches and (Millimeters)

JEDEC STANDARD MS-001 AD

stc89c52中文资料 STC89C52RC_中文指南_

20S, 20-lead, 0.300" Wide, Plastic Gull WIng SmallOutline (SOIC-20 / SOP-20)

Dimensions in Inches and (Millimeters)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

0.014(0.356)0.008(0.203)

0.015 (0.381)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)97

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列的TSSOP-20封装需订货

PACKAGE:PLASTIC SHRINK SMALL OUTLINE(TSSOP-20,6.4mm×6.4mm)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)98

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列单片机选型一览表

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

工作

电压(V)

STC12C5401STC12C5401ADSTC12C5402STC12C5402ADSTC12C5404STC12C5404ADSTC12C5406STC12C5406ADSTC12C5408STC12C5408ADSTC12C5410STC12C5410ADSTC12C5412STC12C5412ADSTC12LE5401STC12LE5401ADSTC12LE5402STC12LE5402ADSTC12LE5404STC12LE5404ADSTC12LE5406STC12LE5406ADSTC12LE5408STC12LE5408ADSTC12LE5410STC12LE5410ADSTC12LE5412STC12LE5412AD

5.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.45.5 - 3.42.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.82.0 - 3.8

Flash

程序SRAMPCA

时UARTA/D

存储器字节PWM

字节1K1K2K2K4K4K6K6K8K8K10K10K12K12K1K1K2K2K4K4K6K6K8K8K10K10K12K12K

512512512512512512512512512512512512512512512512512512512512512512512512512512512512

2222222222222222222222222222

有有有有有有有有有有有有有有有有有有有有有有有有有有有有

4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路4路

有有有有有有有有有有有有有有有

I/O

看门狗有有有有有有有有有有有有有有有有有有有有有有有有有有有有

内置复位有有有有有有有有有有有有有有有有有有有有有有有有有有有有

EEPROM有有有有有有有有有有有有有有有有有有有有有有有有有有有有

SPI

封装20-Pin

封装28-Pin

封装32-Pin

27/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/2327/23

有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32有DIP/SOP/TSSOPDIP/SOPPLCC-32

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)99

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243       STC12C5410AD系列 单片机 命名规则

管脚数

如20,28,32

种封装:如

IP,SOP,PLCC,TSSOP

度范围:

40℃ ~ +85℃

0℃ ~ 70℃

12MHz

35MHz

48MHz

转换功能

A/D转换

8K字节

是12K字节

是4路

2MHz时:

8051的8~12倍

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)100

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列 单片机 典型应用电路(28Pin)            ----通过RS-232转换器连接电脑就可以下载程序

此线路已做成一个STC12C5410AD系列单片机 ISP下载编程工具,可直接赠送给客户    用户在自己的目标系统上,如将P3.0/P3.1经过RS-232电平转换器转换后连接到电脑的普通RS-

232串口,就可以在系统编程/升级用户软件。[www.61k.com]建议如果用户板上无RS-232电平转换器,应引出一个

插座,含 Gnd / P3.1 / P3.0 / Vcc 四个信号线,当然如能引出Gnd / P3.1 / P3.0 / Vcc / P1.1 / P1.0 六个信号线为最好,这样就可以在用户系统上直接编程了。关于ISP编程的原理及应用指南详见附录部分“STC12C5410AD系列单片机 ISP 编程 原理 工具使用说明”部分。另外我们有标准化的编程下载工具,用户可以在上面编程后再插到目标系统上,也可以借用它上面的RS-232电平转换器连接到电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多,故无须买通用编程器。

电脑端STC-ISP软件从网站www.MCU-Memory.com下载

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

101

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列 单片机 典型应用电路(20Pin)            ----通过RS-232转换器连接电脑就可以下载程序

此线路已做成一个STC12C5410AD系列单片机 ISP下载编程工具,可直接赠送给客户    用户在自己的目标系统上,如将P3.0/P3.1经过RS-232电平转换器转换后连接到电脑的普通RS-

232串口,就可以在系统编程/升级用户软件。[www.61k.com]建议如果用户板上无RS-232电平转换器,应引出一个插座,含 Gnd / P3.1 / P3.0 / Vcc 四个信号线,当然如能引出Gnd / P3.1 / P3.0 / Vcc / P1.1 / P1.0 六个信号线为最好,这样就可以在用户系统上直接编程了。关于ISP编程的原理及应用指南

详见附录部分“STC12C5410AD系列单片机 ISP 编程 原理 工具使用说明”部分。另外我们有标准化的编程下载工具,用户可以在上面编程后再插到目标系统上,也可以借用它上面的RS-232电平转换器连接到电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多,故无须买通用编程器。

stc89c52中文资料 STC89C52RC_中文指南_

电脑端STC-ISP软件从网站www.MCU-Memory.com下载

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)102

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

指令系统分类总结

如果按功能分类,STC89/12系列单片机指令系统可分为:1.数据传送类指令;

传统 12T 8051

3.逻辑操作类指令;4.控制转移类指令;5.布尔变量操作类指令。(www.61k.com)

按功能分类的指令系统表如下表所示。

stc89c52中文资料 STC89C52RC_中文指南_

TC12C5410AD系列

2.算术操作类指令;

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)103

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

算术操作类指令

逻辑操作类指令

stc89c52中文资料 STC89C52RC_中文指南_

104

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

控制转移类指令

stc89c52中文资料 STC89C52RC_中文指南_

布尔变量操作类指令

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)105

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

特殊功能寄存器映像  SFR Mapping

stc89c52中文资料 STC89C52RC_中文指南_

特别标出部分为在Intel 8052基础上新增加的特殊功能寄存器,一般用户可不管

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)106

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列 8051 单片机内核特殊功能寄存器   C51 Core SFRs

MnemonicACCBPSWSPDPLDPH

AddE0hF0hD0h81h82h83h

Name

AccumulatorB Register

Program Status WordStack Pointer

Data Pointer Low ByteData Pointer High Byte

CY

AC

F0

RS1

RS0

OV

F1

Reset Value0000,00000000,00000000,00000000,01110000,00000000,0000

STC12C5410AD系列8051 单片机系统管理特殊功能寄存器System Management SFRs

MnemonicAddNamePCONAUXRCLK_DIV

87hPower  ControlC7hClock  Divder

7SMOD-

6 SMOD0-

5 LVDF-

4POF-

3GF1-

2GF0 ELVDICLKS2

1   PD-CLKS1

0IDL-CLKS0

Reset value0011,00000000,00xxxxxx,x000

8EhAuxiliary  Register T0x12 T1x12 UART_M0x6 EADCI ESPI

STC12C5410AD系列8051 单片机 I/O 口 特殊功能寄存器   Port SFRs

MnemonicP0P0M0P0M1P1P1M0P1M1P2P2M0P2M1P3P3M0P3M1

Add80h93h94h90h91h92hA0h95h96hB0hB1hB2h

8-bit  Port 3

P3.7

P3.5

P3.4

P3.3

P3.2

P3.1

P3.0

8-bit  Port 2

P2.7

P2.6

P2.5

P2.4

P2.3

P2.2

P2.1

P2.0

8-bit  Port 1

P1.7

P1.6

P1.5

P1.4

P1.3

P1.2

P1.1

P1.0

Name8-bit  Port 0

7-

6-

5-

4-

3P0.3

2P0.2

1P0.1

0P0.0

Reset Valuexxxx,11110000,00000000,00001111,11110000,00000000,00001111,11110000,00000000,00001x11,11110000,00000000,000

stc89c52中文资料 STC89C52RC_中文指南_

STC12C5410AD系列 8051 单片机 定时器 特殊功能寄存器    Timer SFRs

MnemonicAddTCONTMODTL0TH0TL1TH1AUXR

88h89h8Ah8Ch8Bh8Dh8Eh

Name

Timer / Counter 0 and 1 ControlTimer / Counter 0 and 1 ModesTimer / Counter 0 Low ByteTimer / Counter 0 High ByteTimer / Counter 1 Low ByteTimer / Counter 1 High ByteAuxiliary  Register

T0x12T1x12UART_M0x6

EADCI

ESPI

ELVDI

7TF1

6TR1

5TF0M1

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

M1_1

4TR0M0M1_0

3IE1

2IT1

1IE0M1

M0_1

0IT0M0M0_0

Reset Value0000,00000000,00000000,00000000,00000000,00000000,00000000,00xx

GATEC/T#GATE1C/T1#GATEC/T#GATE0C/T0#

STC12C5410AD系列 8051 单片机 串行口 特殊功能寄存器    Serial I/O Port SFRs

MnemonicAddSCONSBUFSADENSADDRAUXR

98h99hB9hA9h8Eh

Name

Serial  ControlSerial  Data  BufferSlave  Address  MaskSlave  AddressAuxiliary  Register

T0x12

T1x12

UART_M0x6

EADCIESPIELVDI

7SM0/FE

6SM1

5SM2

4REN

3TB8

2RB8

1TI

0RI

Reset Value0000,0000xxxx,xxxx0000,00000000,00000000,00xx

107

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD系列 1T 8051 单片机 中断 特殊功能寄存器Interrupt SFRs

MnemonicIEIPIPHAUXRSPSTATCCONCMODCCAPM0CCAPM1CCAPM2CCAPM3PCON

AddName

A8hInterrupt  EnableB8hB7h

Interrupt  Priority

Low

Interrupt  PriorityHigh

7EA - -T0x12ADC_POWERSPIFCF CIDL----SMOD

6 EPCA_LVD PPCA_LVD

5EADC_SPIPADC_SPI

4ESPSPSHEADCIADC_FLAG

---CAPN0CAPN1CAPN2CAPN3POF

3ET1PT1PT1HESPIADC_START

-CCF3 -MAT0MAT1MAT2MAT3GF1

2EX1PX1PX1HELVDICHS2 -CCF2

1ET0PT0PT0H -CHS1-CCF1

0EX0PX0PX0H -CHS0-CCF0ECFECCF0ECCF1ECCF2ECCF3IDL

Reset Value0000,0000xx00,00000000,00000000,00xx0xx0,000000xx,xxxx00xx,xx000xxx,x000x000,0000x000,0000x000,0000x000,00000011,0000

PPCA_LVDHPADC_SPIH   T1x12 SPEED1 WCOL CR -ECOM0ECOM1ECOM2ECOM3 SMOD0

UART_M0x6SPEED0 -- -CAPP0CAPP1CAPP2CAPP3 LVDF

8EhAuxiliary  Register84hSPI Status RegisterD8hPCA Control RegisterD9hPCA Mode RegisterDAhDBhDChDDh

PCA Module 0

Mode RegisterPCA Module 1Mode RegisterPCA Module 2Mode RegisterPCA Module 3Mode Register

ADC_CONTRC5hA/D 转换控制寄存器

CPS1CPS0TOG0TOG1TOG2TOG3GF0

PWM0PWM1PWM2PWM3   PD

87hPower  Control

STC12C5410AD系列 8051 单片机 PCA/PWM 特殊功能寄存器    PCA/PWM SFRs

MnemonicCCONCMODCCAPM0CCAPM1CCAPM2CCAPM3CLCHCCAP0LCCAP0HCCAP1LCCAP1HCCAP2LCCAP2HCCAP3LCCAP3HPCA_PWM0PCA_PWM1PCA_PWM2PCA_PWM3

AddD8hD9hDAhDBhDChDDhE9hF9hEAhFAhEBhFBhEChFChEDhFDhF2hF3hF4hF5h

Name

PCA Control RegisterPCA Mode RegisterPCA Module 0

Mode RegisterPCA Module 1Mode RegisterPCA Module 2Mode RegisterPCA Module 3Mode RegisterPCA Base Timer LowPCA Base Timer HighPCA Module-0 CaptureRegister Low

PCA Module-0 CaptureRegister High

PCA Module-1 CaptureRegister Low

PCA Module-1 CaptureRegister High

PCA Module-2 CaptureRegister Low

PCA Module-2 CaptureRegister High

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

PCA Module-3 CaptureRegister Low

PCA Module-3 CaptureRegister High

PCA PWM Mode

Auxiliary Register 0PCA PWM Mode

Auxiliary Register 1PCA PWM Mode

Auxiliary Register 2PCA PWM Mode

Auxiliary Register 3

----

----

----

----

----

----

EPC0HEPC1HEPC2HEPC3H

7CF CIDL----

6 CR -ECOM0ECOM1ECOM2ECOM3

5- -CAPP0CAPP1CAPP2CAPP3

4--CAPN0CAPN1CAPN2CAPN3

3CCF3 -MAT0MAT1MAT2MAT3

2CCF2 CPS1TOG0TOG1TOG2TOG3

1CCF1CPS0PWM0PWM1PWM2PWM3

0CCF0ECF

Reset value00xx,00000xxx,x000

ECCF0x000,0000ECCF1x000,0000ECCF2x000,0000ECCF3x000,0000

0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000

EPC0Lxxxx,xx00EPC1Lxxxx,xx00EPC2Lxxxx,xx00EPC3Lxxxx,xx00

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)108

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243STC12C5410AD系列 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRsMnemonic

ISP_DATAAddNameE2hISP/IAP  Flash  Data  Register 7 6 5 4 3 2 1 0Reset Value1111,1111

0000,0000

0000,0000

- - -- -

1-WT2MS1WT1MS0xxxx,x000xxxx,xxxxISPENSWBSSWRST CMD_FAILWT00000,1000ISP_ADDRHE3hISP/IAP  Flash  Address  HighISP_ADDRLE4hISP/IAP  Flash  Address  LowISP_CMDISP_TRIGE5hISP/IAP  Flash  Command  RegisterE6hISP/IAP  Flash  Command  TriggerISP_CONTRE7hISP/IAP  Control  Register

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)109

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

中断

STC12C5410AD系列 1T 8051 单片机 中断 特殊功能寄存器Interrupt SFRs

MnemonicIEIPIPHAUXRSPSTATCCONCMODCCAPM0CCAPM1CCAPM2CCAPM3PCON

AddName

A8hInterrupt  EnableB8hB7h

Interrupt  Priority

Low

Interrupt  PriorityHigh

7EA - -T0x12ADC_POWERSPIFCF CIDL----SMOD

6 EPCA_LVD PPCA_LVD

5EADC_SPIPADC_SPI

4ESPSPSHEADCIADC_FLAG

---CAPN0CAPN1CAPN2CAPN3POF

3ET1PT1PT1HESPIADC_START

-CCF3 -MAT0MAT1MAT2MAT3GF1

2EX1PX1PX1HELVDICHS2 -CCF2

1ET0PT0PT0H -CHS1-CCF1

0EX0PX0PX0H -CHS0-CCF0ECFECCF0ECCF1ECCF2ECCF3IDL

Reset Value0000,0000xx00,00000000,00000000,00xx0xx0,000000xx,xxxx00xx,00000xxx,x000x000,0000x000,0000x000,0000x000,00000011,0000

PPCA_LVDHPADC_SPIH   T1x12 SPEED1 WCOL CR -ECOM0ECOM1ECOM2ECOM3 SMOD0

UART_M0x6SPEED0 -- -CAPP0CAPP1CAPP2CAPP3 LVDF

8EhAuxiliary  Register84hSPI Status RegisterD8hPCA Control RegisterD9hPCA Mode RegisterDAhDBhDChDDh

PCA Module 0

Mode RegisterPCA Module 1Mode RegisterPCA Module 2Mode RegisterPCA Module 3Mode Register

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

ADC_CONTRC5hA/D 转换控制寄存器

CPS1CPS0TOG0TOG1TOG2TOG3GF0

PWM0PWM1PWM2PWM3   PD

87hPower  Control

STC12C5410AD系列 中断与普通8051完全兼容,优先级可设为4级。[www.61k.com]

VectorInterrupt

Address

Source

中断

中断源

向量地址/INT0Timer 0/INT1Timer 1UARTADC/SPIPCA/LVD

0003H000BH0013H001BH0023H002BH0033H

PollingSequence中断查询次序123456

中断

优先级设置

Interrupt

优先级3优先级0

Request优先级1优先级2

最高最低

中断请求0,00,00,00,00,0

0,10,10,10,10,10,10,1

1,01,01,01,01,01,01,0

1,11,11,11,11,11,11,1

IE0TF0IE1IF1RI + TIADC_FLAG + SPIFCF +

CCF0 + CCF1 + CCF2 + CCF3+ LVDF

0(最优先)PX0H,PX0

PT0H,PT0PX1H,PX1PT1H,PT1PSH,  PS

PADC_SPIH,PADC_SPI0,0PPCA_LVDH,PPCA_LVD0,0

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)110

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

PCA/PWM 特殊功能寄存器 , 其中部分位与PCA中断有关

MnemonicAddNameCCONCMODCCAPM0CCAPM1CCAPM2CCAPM3CLCHCCAP0LCCAP0HCCAP1LCCAP1HCCAP2LCCAP2HCCAP3LCCAP3H

D8hPCA Control RegisterD9hPCA Mode RegisterDAhDBhDChDDh

PCA Module 0

Mode RegisterPCA Module 1Mode RegisterPCA Module 2Mode RegisterPCA Module 3Mode Register

7CF CIDL----

6 CR -

5- -

4--

3CCF3 -

2CCF2 CPS1TOG0TOG1TOG2TOG3

1CCF1CPS0PWM0PWM1PWM2PWM3

0CCF0ECF

Reset value00xx,00000xxx,x000

ECOM0CAPP0CAPN0MAT0ECOM1CAPP1CAPN1MAT1ECOM2CAPP2CAPN2MAT2ECOM3CAPP3CAPN3MAT3

ECCF0x000,0000ECCF1x000,0000ECCF2x000,0000ECCF3x000,0000

0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000

E9hPCA Base Timer LowF9hPCA Base Timer HighEAhFAhEBhFBhEChFChEDhFDh

PCA Module-0 CaptureRegister LowPCA Module-0 CaptureRegister HighPCA Module-1 CaptureRegister LowPCA Module-1 CaptureRegister HighPCA Module-2 CaptureRegister LowPCA Module-2 CaptureRegister HighPCA Module-3 CaptureRegister LowPCA Module-3 CaptureRegister HighPCA PWM Mode

Auxiliary Register 0PCA PWM Mode

Auxiliary Register 1PCA PWM Mode

Auxiliary Register 2PCA PWM Mode

Auxiliary Register 3

----

----

----

----

----

----

PCA_PWM0F2hPCA_PWM1F3hPCA_PWM2F4hPCA_PWM3F5h

EPC0HEPC0Lxxxx,xx00EPC1HEPC1Lxxxx,xx00EPC2HEPC2Lxxxx,xx00EPC3HEPC3Lxxxx,xx00

STC12C5410AD系列8051 单片机SPI功能模块特殊功能寄存器  其中SPIF位与中断有关

MnemonicAddNameSPCTLSPSTATSPDAT

84hSPI Status Register86hSPI Data Register

7 6 5 -

4 -

3 -

2 -

1-

0-

Reset value00xx,xxxx0000,0000

85hSPI Control RegisterSSIG SPEN DORDMSTRCPOLCPHASPR1SPR00000,0000

SPIF WCOL

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)111

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243         定时器0/定时器1,UART串口的速度MnemonicAddName

AUXR 7 6 5 4EADCI 3ESPI 2ELVDI 1 0Reset Value - -0000,00xx8EhAuxiliary  RegisterT0x12T1x12UART_M0x6

定时器0和定时器1:

STC12C5410AD系列是 1T 的8051单片机,为了兼容传统8051,定时器0和定时器1复位后是传统8051的速度,即12分频,这是为了兼容传统8051。(www.61k.com]但也可不进行12分频,实现真正的1T。

T0x12:   0, 定时器0是传统8051速度,12分频;1, 定时器0的速度是传统8051的12倍,不分频T1x12:   0, 定时器1是传统8051速度,12分频;1, 定时器1的速度是传统8051的12倍,不分频UART串口的模式0:

STC12C2052AD系列是 1T 的8051单片机,为了兼容传统8051,UART串口复位后是兼容传统8051的。UART_M0x6:   0, UART串口的模式0是传统12T的8051速度,12分频;

1, UART串口的模式0的速度是传统12T的8051的6倍,2分频

EADCI:      0, 禁止A/D 中断; 1,允许A/D中断

ESPI:        0, 禁止SPI 中断; 1,允许SPI中断

ELVDI:      0, 禁止低压中断; 1,允许低压中断。

5V 单片机,3.7V以下为低压,3V 单片机,2.4V以下为低压,

如ELVDI=1(允许低压中断),则会产生低压中断

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)112

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

系统工作时钟

STC12C5410AD系列是 1T 的8051单片机,系统时钟兼容传统8051。[www.61k.com]

现出厂标准配置是使用芯片内部的R/C振荡器,5V 单片机常温下频率是5.65MHz - 5.95MHz,因为随着温度的变化,内部R/C振荡器的频率会有一些温飘,故内部R/C振荡器只适用于对时钟频率要求不敏感的场合。

在对STC12C5410AD系列单片机进行ISP下载用户程序时,可以在选项中选择:

“下次冷启动后时钟源为外部晶体或时钟”

这样下载完用户程序后,停电,再冷启动后单片机的工作时钟使用的就不是内部R/C振荡器,而是外部晶体振荡后产生的高精度时钟了(接在XTAL1/XTAL2管脚上),也可以直接从XTAL1脚输入外部时钟,XTAL2脚浮空。

如果还要设置成使用内部R/C振荡器,在对STC12C5410AD系列单片机进行ISP下载用户程序时,可振荡器”以在选项中选择:

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

系统时钟分频寄存器

MnemonicCLK_DIV

AddName

C7hClock  Divder

7-

6-

5-

4-

3-

2CLKS2

1CLKS1

0CLKS0

Reset valuexxxx,x000

如用户系统希望大幅降低功耗,还可对系统时钟进行分频。

CLKS200001111

CLKS100110011

CLKS001010101

CPU的实际工作时钟

系统时钟(外部时钟或内部R/C振荡时钟)系统时钟/2系统时钟/4系统时钟/8系统时钟/16系统时钟/32系统时钟/64系统时钟/128

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)113

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

I/O口结构

I/O口配置

STC12C5410AD系列单片机其所有I/O口均可由软件配置成4种工作类型之一,如下表所示。[www.61k.com]4种类型分别为:准双向口(标准8051输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。每个口由2个控制寄存器中的相应位控制每个引脚工作类型。STC12C5410AD系列单片机上电复位后为准双向口(标准8051输出模式)模式。

I/O口工作类型设定

stc89c52中文资料 STC89C52RC_中文指南_

P3口设定 <P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0>

stc89c52中文资料 STC89C52RC_中文指南_

P2口设定 <P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0>

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

P1口设定 <P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0>

P0口设定 <P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0>

举例:

MOVP1M0,#11000000B

MOVP1M1,#10100000B

;P1.7为开漏,P1.6为高阻输入,P1.5为强推挽输出,P1.4/P1.3/P1.2/P1.1/P1.0为弱上拉

stc89c52中文资料 STC89C52RC_中文指南_

注意:

虽然每个I/O口在弱上拉时都能承受20mA的灌电流(还是要加限流电阻,如1K,560Ω等),在强推挽输出时都能输出20mA的拉电流,但是整个芯片的工作电流推荐不要超过55mA。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)114

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442431.准双向口输出配置

准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。[www.61k.com)这是因为当口线输出为1时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。准双向口有3个上拉晶体管适应不同的需要。

在3个上拉晶体管中,有1个上拉晶体管称为“弱上拉”,当口线寄存器为1且引脚本身也为1时打开。此上拉提供基本驱动电流使准双向口输出为1。如果一个引脚输出为1而由外部装置下拉到低时,弱上拉关闭而“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门槛电压以下。

第2个上拉晶体管,称为“极弱上拉”,当口线锁存为1时打开。当引脚悬空时,这个极弱的上拉源产生很弱的上拉电流将引脚上拉为高电平。

第3个上拉晶体管称为“强上拉”。当口线锁存器由0到1跳变时,这个上拉用来加快准双向口由逻辑0到逻辑1转换。当发生这种情况时,强上拉打开约2个机器周期以使引脚能够迅速地上拉到高电平。    准双向口输出如下图所示。

stc89c52中文资料 STC89C52RC_中文指南_

VDDVDD

stc89c52中文资料 STC89C52RC_中文指南_

STC12LE2052系列单片机为3V器件,如果用户在引脚加上5V电压,将会有电流从引脚流向VDD,这样导致额外的功率消耗。因此,建议不要在准双向口模式中向3V单片机引脚施加5V电压,如使用的话,要加限流电阻,或用二极管做输入隔离,或用三极管做输出隔离。

准双向口带有一个施密特触发输入以及一个干扰抑制电路。

2.开漏输出配置

当口线锁存器为0时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出时,这种配置方式必须有外部上拉,一般通过电阻外接到VDD。这种方式的下拉与准双向口相同。输出口线配置如下图所示。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)115

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243开漏端口带有一个施密特触发输入以及一个干扰抑制电路。(www.61k.com]

3.仅为输入(高阻)配置

输入口配置如下图所示。

输入口带有一个施密特触发输入以及一个干扰抑制电路。

4.推挽输出配置

推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为1时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。

推挽引脚配置如下图所示。

stc89c52中文资料 STC89C52RC_中文指南_

VDD

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)116

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

A/D 及 A/D转换控制寄存器 ADC_CONTR/ADC_DATA

STC12C5410AD系列带A/D转换的单片机在P1口,有8路10位高速A/D转换器, 速度可达100KHz。[www.61k.com)P1.7 - P1.0共8路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位后P1口为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。需作为A/D使用的口需先将其设置为高阻输入或开漏模式。在P1M0、P1M1中对相应的位进行设置。

Mnemonic

AddName

3 - -

2 - -

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

1 - -

0 - -

Reset Valuexxxx,xxxxxxxx,xxxx

7   6 5 4ADC_CONTRC5hA/D 转换控制寄存器 ADC_POWER SPEED1SPEED0ADC_FLAGADC_DATAC6hA/D 转换结果寄存器,高8位 -   - - -

ADC_LOW2BEhA/D 转换结果寄存器,低2位 - - - -  ADC_CONTR 特殊功能寄存器:  A/D转换控制特殊功能寄存器ADC_STARTCHS2CHS1CHS00xx0,0000

A/D 转换控制寄存器 ADC_POWERSPEED1SPEED0ADC_FLAGADC_STARTCHS2CHS1CHS00xx0,0000

CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0

CHS200001111

CHS100110011

CHS001010101

AnalogInputChannelSelect模拟输入通道选择选选选选选选选选

择择择择择择择择

P1.0 作P1.1 作P1.2 作P1.3 作P1.4 作P1.5 作P1.6 作P1.7 作

为为为为为为为为

A/D输A/D输A/D输A/D输A/D输A/D输A/D输A/D输

入入入入入入入入

来来来来来来来来

stc89c52中文资料 STC89C52RC_中文指南_

用用用用用用用用

ADC_START: 模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换,转换结束后为0。ADC_FLAG:   模数转换器转换结束标志位,当A/D转换完成后,ADC_FLAG = 1,要由软件清0。

不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,

当A/D转换完成后,ADC_FLAG = 1,一定要软件清0。SPEED1,SPEED0:模数转换器转换速度控制位

SPEED11100

SPEED01010

A/D转

210个时钟周期转换一次CPU工作频率20MHz时,A/D转换速度约100KHz420个630个840个

时时时

钟钟钟

周周周

期期期

转转转

换换换

一一一

次次次

ADC_POWER:   ADC电源控制位。    0:关闭ADC电源;1:打开A/D转换器电源

启动AD转换前一定要确认AD电源已打开,AD转换结束后关闭AD电源可降低功耗,也可不关闭。   初次打开内部A/D转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D转换

建议启动A/D转换后,在A/D转换结束之前,不改变任何I/O口的状态,有利于高精度A/D转换ADC_DATA / ADC_LOW2  特殊功能寄存器:  A/D转换结果特殊功能寄存器

ADC_DATAADC_LOW2

C6hA/D 转换结果寄存器,全部8位有效,为10位A/D转换结果的高8位BEhA/D 转换结果寄存器,只有低2位有效,为10位A/D转换结果的低2位

- - - - - - - -xxxx,xxxx x x x x x

x - -xxxx,xxxx

模拟/数字转换结果计算公式如下:结果 ( ADC_DATA[7:0],ADC_LOW2[1:0] ) = 256 x Vin / Vcc

Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。取ADC_DATA的8位为ADC转换的高8位,取ADC_LOW2的低2位为ADC转换的低2位,则为10位精度。如果舍弃ADC_LOW2的低2位,只用ADC_DATA寄存器的8位,则A/D转换结果为8位精度。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

117

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243            A/D转换功能汇编程序示例

; ------------------------- 宏晶科技   2005/12/2 --------------------

; --------------------Mobile:0755-82948409,13922805190----------------

; ----------------------Email: support@mcu-memory.com-------------------

;ADC DEMO_5410_ASM.ASM 汇编程序演示 STC12C5410AD 系列 MCU 的 A/D 转换功能。(www.61k.com)

;转换结果以 16 进制形式输出到串行口,可以用串行口调试程序观察输出结果。

;时钟 18.432MHz, 波特率 = 9600。

;各通道转换结果轮流在 P1 口用 LED 显示, 通道号同时在 P3.2 -- P3.5 LED 显示。

;---------------------------------------------------------------------

;定义与 ADC 有关的特殊功能寄存器

ADC_CONTR   EQU     0C5H             ;A/D 转换控制寄存器

ADC_DATA    EQU     0C6H            ;A/D 转换结果寄存器,为10位A/D转换结果的高8位ADC_LOW2    EQU     0BEH ;A/D 转换结果寄存器,低2位有效,为10位A/D转换结果的低2位                          ;如果不用ADC_LOW2的低2位,只用ADC_DATA的8位,则为8位A/D转换P1M0        EQU      91H             ;P1口模式寄存器0

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

P1M1        EQU      92H             ;P1口模式寄存器1

;---------------------------------------------------------------------

;定义变量

counter                 EQU 30H

display_AD_channel_ID   EQU 31H      ;当前通道号

AD_channel_1_result     EQU 32H      ;各通道 A/D 转换结果

AD_channel_2_result     EQU 33H

AD_channel_3_result     EQU 34H

AD_channel_4_result     EQU 35H

AD_channel_temp         EQU 36H

;---------------------------------------------------------------------

main:

ACALL initiate_RS232

MOV   display_AD_channel_ID, #0

MOV   counter, #0

main_loop1:

ACALL set_P1_ADC_channels        ;将 P1.1 -- P1.4 设置为适宜 A/D 转换的模式    MOV   A, #01H                    ;P1.1 为 A/D 当前通道, 测量电压并发送结果

ACALL get_AD_result_and_send_it

MOV   A, #02H                    ;P1.2 为 A/D 当前通道, 测量电压并发送结果

ACALL get_AD_result_and_send_it

MOV   A, #03H                    ;P1.3 为 A/D 当前通道, 测量电压并发送结果

ACALL get_AD_result_and_send_it

MOV   A, #04H                    ;P1.4 为 A/D 当前通道, 测量电压并发送结果

ACALL get_AD_result_and_send_it

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)118

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    MOV   A, #00H                    ;连续发送 4 个 00H, 便于观察输出显示

ACALL Send_Byte

ACALL Send_Byte

ACALL Send_Byte

ACALL Send_Byte

INC   counter                    ;循环若干次后换通道

MOV   A, counter

CLR   C

SUBB  A, #06H

JC    main_1

MOV   counter, #0

INC   display_AD_channel_ID

ANL   display_AD_channel_ID, #03H

main_1:

ACALL set_P1_IO_port             ;P1 口设置为普通 I/O 模式

ACALL display

MOV   R2, #10

main_loop2:

MOV   A, #0A0H                   ;延时

ACALL delay

DJNZ  R2, main_loop2

SJMP  main_loop1

;---------------------------------------------------------------------

get_AD_result_and_send_it:           ;A = A/D 当前通道, 测量电压并发送结果

ACALL get_AD_result

ACALL Send_Byte

MOV   A, #1

ACALL delay

RET

;---------------------------------------------------------------------

get_AD_result:

ANL   ADC_CONTR, #0E0H           ;1110,0000 清 ADC_FLAG, ADC_START 位和低 3 位    ANL   A, #07H                    ;0000,0111 清0高5位

MOV   AD_channel_temp, A         ;暂存当前通道号

ORL   ADC_CONTR, A               ;设置 A/D 当前通道

MOV   A, #1                      ;延时, 使输入电压达到稳定

ACALL delay

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)119

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    CLR   A

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV   R7, A                      ;R7 用于检测 A/D 转换是否结束

MOV   ADC_DATA, A                ;清 A/D 转换结果寄存器

ORL   ADC_CONTR, #08H            ;0000,1000 令 ADCS = 1, 启动A/D转换,

wait_AD_finishe:

MOV   A, #10H                    ;0001,0000 测试A/D转换结束否

ANL   A, ADC_CONTR

JZ    wait_AD_finishe

ANL   ADC_CONTR, #0E7H           ;1110,0111 清 ADC_FLAG 位, 停止A/D转换    MOV   A, AD_channel_temp         ;取回当前通道号

DEC   A

ADD   A, #AD_channel_1_result

MOV   R0, A

MOV   A, ADC_DATA                ;保存、返回 A/D 转换结果

MOV   @R0, A

RET

;---------------------------------------------------------------------

display:

MOV   R2, display_AD_channel_ID  ;用 P3.2 -- P3.5 显示第几通道

INC   R2

SETB  C

CLR   A

display_loop:

RLC   A

CLR   C

DJNZ  R2, display_loop

RL    A

RL    A

CPL   A

ORL   P3, #3CH                   ;0011,1100 使 P3.2 -- P3.5 LED 熄灭

ANL   P3, A

MOV   A, display_AD_channel_ID   ;取相应通道的转换结果

ADD   A, #AD_channel_1_result

MOV   R0, A

MOV   A, @R0

CPL   A

MOV   P1, A                      ;显示转换结果

RET

;---------------------------------------------------------------------

set_P1_ADC_channels:                 ;将 P1.2 -- P1.5 设置为适宜 A/D 转换的模式

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)120

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    MOV   P1, #0FFH                  ;将 P1 口置高, 为 A/D 转换作准备

ORL   ADC_CONTR, #80H            ;1000,0000 打开 A/D 转换电源

MOV   P1M0, #1EH                 ;0001,1110, 用作 A/D 转换的 P1.x 口, 先设为开漏    MOV   P1M0, #1EH                 ;0001,1110, P1.2 -- P1.5 先设为开漏

;断开内部上拉电阻

MOV   A, #20H

ACALL delay

RET

;---------------------------------------------------------------------

set_P1_IO_port:                      ;P1 口设置为普通 I/O 模式

MOV   P1M0, #00H

MOV   P1M0, #00H

ANL   ADC_CONTR, #7FH            ;0111,1111 关闭 A/D 转换电源

RET

;---------------------------------------------------------------------

initiate_RS232:                      ;串口初始化

CLR   ES                         ;禁止串口中断

MOV   TMOD, #20H                 ;设置 T1 为波特率发生器

MOV   SCON, #50H                 ;0101,0000 8位数据位, 无奇偶校验

MOV   TH1, #0FBH                 ;18.432MHz 晶振, 波特率 = 9600

MOV   TL1, #0FBH

CLR   RI

SETB  TR1

SETB  ES                         ;允许串口中断

RET

;---------------------------------------------------------------------

Send_Byte:                           ;发送一个字节

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

CLR   TI                         ;清零串口发送中断标志

MOV   SBUF, A

Send_Byte_wait:                      ;等待发送完毕

JNB   TI, Send_Byte_wait

CLR   TI                         ;清零串口发送中断标志

RET

;---------------------------------------------------------------------

delay:                               ;延时

PUSH  02

PUSH  03

PUSH  04

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)121

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    MOV   R4, A

delay_loop1:

MOV   R2, #18H

MOV   R3, #0

delay_loop2:

DJNZ  R3, delay_loop2

DJNZ  R2, delay_loop2

DJNZ  R4, delay_loop1

POP   04

POP   03

POP   02

RET

;---------------------------------------------------------------------

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)122

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243                 看门狗应用

适用型号:  STC12C5410AD系列

MnemonicAddName

Watch-Dog-Timer

Control register 7 WDT_FLAG 6 - 5 4 3 2 1 0Reset ValueWDT_CONTRE1hEN_WDTCLR_WDTIDLE_WDTPS2PS1PS0xx00,0000

Symbol符号Function功能

WDT_FLAG    When WDT overflows, this bit is set. It can be cleared by software.

看门狗溢出标志位,当溢出时,该位由硬件置1,可用软件将其清0。(www.61k.com)

EN_WDT

CLR_WDTEnable WDT bit. When set, WDT is started看门狗允许位, 当设置为“1”时,看门狗启动。WDT clear bit. When set, WDT will recount. Hardware will automatically clear            this bit.

看门狗清“0”位,当设为“1”时,看门狗将重新计数。硬件将自动清“0”此位。

IDLE_WDTWhen set, WDT is enabled in IDLE mode. When clear, WDT is disabled in IDLE mode

看门狗“IDLE”模式位,当设置为“1”时,看门狗定时器在“空闲模式”计数

当清“0”该位时, 看门狗定时器在“空闲模式”时不计数PS2, PS1, PS0 Pre-scale value of Watchdog timer is shown as the bellowed table:

看门狗定时器预分频值,如下表所示PS2

1PS1 0 0 1 1 0 0 1 1PS0 0 1 0 1 0 1 0 1Pre-scale预分频    2    4    8    16    32    64    128    256WDT Period @20MHz       39.3 mS       78.6 mS     157.3 mS     314.6 mS     629.1 mS        1.25S        2.5S        5S

The WDT period is determined by the following equation 看门狗溢出时间计算

看门狗溢出时间 = (12 x Pre-scale x 32768) / Oscillator frequency

设时钟为12MHz:看门狗溢出时间 = (12 x Pre-scale x 32768) / 12000000 = Pre-scale x 393216 / 12000000

PS2

1PS1 0 0 1 1 0 0 1 1PS0 0 1 0 1 0 1 0 1Pre-scale预分频    2    4    8    16    32    64    128    256WDT Period @12MHz       65.5 mS     131.0 mS     262.1 mS     524.2 mS      1.0485S      2.0971S      4.1943S      8.3886S

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)123

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    设时钟为11.0592MHz:

看门狗溢出时间 = (12 x Pre-scale x 32768) / 11059200 = Pre-scale x 393216 / 11059200PS2

1PS1 0 0 1 1 0 0 1 1PS0 0 1 0 1 0 1 0 1Pre-scale预分频    2    4    8    16    32    64    128    256WDT Period @11.0592MHz       71.1 mS     142.2 mS     284.4 mS     568.8 mS      1.1377S      2.2755S      4.5511S      9.1022S

汇编语言程序示例

WDT_CONTR

;复位入口

ORG

LJMP

ORG

Initial:

MOV

Main_Loop:

LCALLDisplay_Loop

LCALL

MOV

LJMPWDT_CONTR,#00111100B ;  喂狗,  不要用 ORL    WDT_CONTR,  #00010000BMain_LoopKeyboard_LoopWDT_CONTR,#00111100B; Load initial value 看门狗定时器控制寄存器初始化               ; EN_WDT = 1, CLR_WDT = 1, IDLE_WDT = 1, PS2 = 1, PS1 = 0, PS0 = 00060HDATA0000HInitial0E1H ;    或者   WDT_CONTREQU   0E1H

C语言程序示例

#include<reg52.h>

sfrWDT_CONTR

void main()

{   …

WDT_CONTR=0x3c;=0xe1;

/* 0011,1100 EN_WDT = 1,CLR_WDT = 1,IDLE_WDT = 1,PS2 = 1,PS1 = 0,PS0 = 0 */while(1){

display();

keyboard();

WDT_CONTR

}=0x3c;  /* 喂狗,  不要用  WDT_CONTR=WDT_CONTR |0x10;*/

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)124

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;本程序用于验证 STC12C5410AD 系列单片机的看门狗及其溢出时间计算公式

;看门狗及其溢出时间 = (12 * Pre_scale *32768)/Oscillator frequency

WDTCR           EQU 0E1H ;看门狗地址

WDT_TIME_LED    EQU P1.5 ;用 P1.5 控制看门狗溢出时间指示灯,

;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示WDT_FLAG_LED    EQU P1.7 ;用 P1.7 控制看门狗溢出复位指示灯, 如点亮表示为看门狗溢出复位Last_WDT_Time_LED_Status  EQU 00H ;位变量, 存储看门狗溢出时间指示灯的上一次状态位;WDT 复位时间(Oscillator frequency = 18.432MHz):

;Pre_scale_Word  EQU 00111100B   ;清0、启动看门狗,预分频数=32   0.68S

Pre_scale_Word  EQU 00111101B   ;清0、启动看门狗,预分频数=64   1.36S

;Pre_scale_Word  EQU 00111110B   ;清0、启动看门狗,预分频数=128  2.72S

;Pre_scale_Word  EQU 00111111B   ;清0、启动看门狗,预分频数=256  5.44S

ORG   0000H

AJMP  MAIN

ORG   0100H

MAIN:

MOV   A, WDTCR              ;检测是否为看门狗复位

ANL   A, #10000000B

JNZ   WDT_Reset             ;WDTCR.7 = 1, 看门狗复位, 跳转到看门狗复位程序;上电复位, 冷启动, RAM 单元内容为随机值

SETB  Last_WDT_Time_LED_Status       ;上电复位,

;初始化看门狗溢出时间指示灯的状态位 = 1    CLR   WDT_TIME_LED                   ;上电复位, 点亮看门狗溢出时间指示灯

MOV   WDTCR, #Pre_scale_Word ;启动看门狗

WAIT1:

SJMP  WAIT1                 ;循环执行本语句(停机),等待看门狗溢出复位

;看门狗复位, 热启动, RAM 单元内容不变, 为复位前的值

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

WDT_Reset:                      ;看门狗复位, 热启动

CLR   WDT_FLAG_LED          ;点亮看门狗溢出复位指示灯

JB   Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED

;根据看门狗溢出时间指示灯的上一次状态位设置 WDT_TIME_LED 灯,

;若上次亮本次就熄灭, 若上次熄灭本次就亮

CLR   WDT_TIME_LED          ;上次熄灭本次点亮看门狗溢出时间指示灯

CPL   Last_WDT_Time_LED_Status ;将看门狗溢出时间指示灯的上一次状态位取反

WAIT2:

SJMP  WAIT2                 ;循环执行本语句(停机),等待看门狗溢出复位

Power_Off_WDT_TIME_LED:

SETB  WDT_TIME_LED          ;上次亮本次就熄灭看门狗溢出时间指示灯

CPL   Last_WDT_Time_LED_Status ;将看门狗溢出时间指示灯的上一次状态位取反

WAIT3:

SJMP  WAIT3                 ;循环执行本语句(停机),等待看门狗溢出复位

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)125

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243STC12C5410AD系列1T单片机通过外部中断从掉电模式唤醒;*************************************************************************

;Wake Up Idle and Wake Up Power Down

;*************************************************************************

ORG   0000H

AJMP MAIN

ORG   0003H

int0_interrupt:

CLR   P1.7          ;点亮 P1.7 LED 表示已响应 int0 中断

ACALL delay         ;延时是为了便于观察, 实际应用不需延时

CLR   EA            ;关闭中断, 简化实验. 实际应用不需关闭中断

RETI

ORG   0013H

int1_interrupt:

CLR   P1.6          ;点亮 P1.6 LED 表示已响应 int1 中断

ACALL delay         ;延时是为了便于观察, 实际应用不需延时

CLR   EA            ;关闭中断, 简化实验. 实际应用不需关闭中断

RETI

ORG   0100H

delay:

CLR   A

MOV   R0, A

MOV   R1, A

MOV   R2, #02

delay_loop:

DJNZ  R0, delay_loop

DJNZ  R1, delay_loop

DJNZ  R2, delay_loop

RET

main:

MOV   R3, #0        ;P1 LED 递增方式变化, 表示程序开始运行

main_loop:

MOV   A, R3

CPL   A

MOV   P1, A

ACALL delay

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)126

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    INC   R3

MOV   A, R3

SUBB  A, #18H

JC    main_loop

MOV   P1, #0FFH     ;熄灭全部灯表示进入 Power Down 状态

CLR   IT0           ;设置低电平激活外部中断

;   SETB  IT0           ;下降沿激活不了 Power Down 状态下的外部中断。[www.61k.com]原因是

;MCU 判断下降沿需要 2 个机器周期, 而此时 CLOCK 已停止,

;MCU 无法运行 2 个机器周期。

SETB  EX0           ;允许外部中断0

CLR   IT1           ;设置低电平激活外部中断

;   SETB  IT1           ;下降沿激活不了 Power Down 状态下的外部中断, 原因同上

SETB  EX1           ;允许外部中断1

;   SETB  ET0 ;如果是STC12C2052AD系列,要由外部中断1唤醒,“ET0=1”是必须的,硬件就这样做的              ;外部中断0就无此必要,建议Powerdown用外部中断0唤醒

SETB  EA            ;开中断, 若不开中断就不能唤醒 Power Down

;下条语句将使 MCU 进入 idle 状态或 Power Down 状态

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;低电平激活外部中断可以将 MCU 从 Power Down 状态中唤醒

;其方法为:将外部中断脚拉低

MOV   A, PCON       ;令 PD=1, 进入 Power Down 状态, PD = PCON.2

ORL   A, #02H

MOV   PCON, A

MOV   PCON, #01H    ;删除本语句前的";", 同时将前3条语句前加上注释符号";",

;令 IDL=1, 可进入 idle 状态, IDL = PCON.1

MOV   P1, #0DFH     ;请注意:

; 1.外部中断使MCU退出 Power Down 状态,执行本条指令后

;响应中断, 表现为P1.5与P1.7的LED同时亮(INT0唤醒)

; 2.外部中断使MCU退出 idle 状态,先响应中断然后再执行本

;条指令, 表现为P1.7的LED先亮(INT0唤醒)P1.5的LED后亮

WAIT1:

SJMP  WAIT1         ;跳转到本语句, 停机

END

;A版本和B版本建议不要用IDLE模式

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)127

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243STC12C5410AD系列1T单片机通过外部中断唤醒特别注意事项

---仅针对A版本

STC12Cxx 要Power Down < 0.1uA, 进入Power Down 之前

1.

如果您系统外部所接的口是输入,我们STC12Cxx 是输出,

请将我们的该I/O 设为 Push-Pull输出

外部是低,你就要为低; 外部是高,你就要为高, 否则就 > 0.1uA

如果是后续的版本,不一定要设置成Push-Pull输出,用弱上拉就可以了。[www.61k.com)

2.

如果您系统外部所接的口是输出,我们STC12Cxx 是输入,

请将我们的该I/O 设为 Only-Input,高阻仅为输入

如果是后续的版本,不一定要设置成Only-Input输出,用弱上拉就可以了。

3.

如果您系统外部所接的口是高阻,我们STC12Cxx ,

请将我们的该I/O 设为 Push-Pull输出

请不要将我们的该I/O 设为 Only-Input/高阻

如果是后续的版本,不一定要设置成Push-Pull输出,用弱上拉就可以了。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)128

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    STC12C5410AD 系列 1T 8051 单片机IAP 应用 STC12C5410AD系列 1T 8051单片机内部EEPROM的应用                  -- 利用IAP技术可实现EEPROM,内部Flash擦写次数为100,000次以上STC12C5410AD系列 1T 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs

Mnemonic

ISP_DATAAddNameE2hISP/IAP  Flash  Data  Register 7 6 5 4 3 2 1 0Reset Value1111,1111

0000,0000

0000,0000

- - - - -MS1MS0xxxx,xx00

xxxx,xxxx

ISPENSWBSSWRST CMD_FAIL 1WT2WT1WT00000,1000ISP_ADDRHE3hISP/IAP  Flash  Address  HighISP_ADDRLE4hISP/IAP  Flash  Address  LowISP_CMDISP_TRIGE5hISP/IAP  Flash  Command  Register -E6hISP/IAP  Flash  Command  TriggerISP_CONTRE7hISP/IAP  Control  Register

ISP_DATA:ISP/IAP操作时的数据寄存器。[www.61k.com)

ISP/IAP从Flash读出的数据放在此处,向Flash写的数据也需放在此处

ISP_ADDRH:ISP/IAP操作时的地址寄存器高八位。

ISP_ADDRL:ISP/IAP操作时的地址寄存器低八位。

ISP_CMD:ISP/IAP操作时的命令模式寄存器,须命令触发寄存器触发方可生效。

B7

-B6 - - - -B5 - - - -B4 - - - -B3 - - - -B2 - - - -B1 0 0 1 1B0 0 1 0 1命令 /  操作  模式选择Standby    待机模式,无ISP操作从用户的应用程序区对 "Data Flash/EEPROM区"进行字节读从用户的应用程序区对 "Data Flash/EEPROM区"进行字节编程从用户的应用程序区对 "Data Flash/EEPROM区"

进行扇区擦除         保留 命令

程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/字节编程/扇区擦除,STC12C5412AD/STC12LE5412AD除外。STC12C5410AD系列单片机出厂时就已完全加密。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

ISP_TRIG:ISP/IAP操作时的命令触发寄存器。

在ISPEN(ISP_CONTR.7) = 1时,对ISP_TRIG先写入46h,再写入B9h,

ISP/IAP命令才会生效。

ISP_CONTR:ISP/IAP控制寄存器。

B7 B6 B5 B4 B3 B2

WT2 B1 WT1 B0 WT0Reset Value0000,1000ISPENSWBSSWRST  CMD_FAIL 1

ISPEN:

SWRST:ISP/IAP 功能允许位。0:禁止ISP/IAP编程改变Flash,1:允许编程改变Flash0: 不操作;1: 产生软件系统复位,硬件自动清零。SWBS:软件选择从用户主程序区启动(0),还是从ISP程序区启动(1)。

CMD_FAIL: 如果送了ISP/IAP命令,并对ISP_TRIG送46h/B9h触发失败,则为1,需由         软件清零。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)129

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

设置等待时间WT2  1  1  1  1  0  0  0  0

WT1  1  1  0  0  1  1  0  0

WT0  1  0  1  0  1  0  1  0

CPU   等待时间( CPU 的工作时钟 )Read22222222

Program55110165330660110013201760

Sector Erase210124202463036126072252144420240504288672384

Recommended System Clock1MHz2MHz3MHz6MHz12MHz20MHz24MHz30MHz

STC12C5410AD系列单片机内部可用Data Flash(EEPROM)的地址(与程序空间是分开的):如果对应用程序区进行IAP写数据,则该语句会被单片机忽略,继续执行下一句。(www.61k.com]程序在用户应用程序区(AP区)时,仅可以对Data Flash(EEPROM)进行IAP/ISP操作。但STC12C5412AD/STC12LE5412AD在应用程序区可以修改应用程序区(灵活)。STC12C5410AD,STC12C5410,STC12LE5410AD,STC12LE5410STC12C5408AD,STC12C5408,STC12LE5408AD,STC12LE5408STC12C5406AD,STC12C5406,STC12LE5406AD,STC12LE5406STC12C5404AD,STC12C5404,STC12LE5404AD,STC12LE5404STC12C5402AD,STC12C5402,STC12LE5402AD,STC12LE5402STC12C5401AD,STC12C5401,STC12LE5401AD,STC12LE5401系列单片机内部可用Data Flash(EEPROM)的地址:

第一扇区

起始地址2800h

结束地址29FFh

第二扇区

起始地址2A00h

结束地址2BFFh

每个扇区 512字节共4个扇区建放用满由除越以

议在满则于,少内

同同,为擦所越较

一次一个当然2K字除是以每方便合理

修扇可节按个,。

改的数据区,不必全用,用EEPROM。扇区擦扇区用的256个字节

第三扇区

起始地址2C00h

结束地址2DFFh

第四扇区

起始地址2E00h

结束地址2FFFh

STC12C5412,STC12C5412AD,STC12LE5412,STC12LE5412AD单片机可对自身内部应用程序区进行IAP/ISP操作,故所有部分均可当Data Flash(EEPROM)使用,其地址如下:

第一扇区起始地址0000h起始地址0800h起始地址1000h起始地址1800h起始地址2000h起始地址2800h

结束地址01FFh结束地址09FFh第九扇区

结束地址11FFh结束地址19FFh结束地址21FFh结束地址29FFh

1200h起始地址1A00h起始地址2200h起始地址2A00h

第二扇区起始地址0200h起始地址0A00h起始地址

结束地址03FFh结束地址0BFFh第十扇区

结束地址13FFh结束地址1BFFh结束地址23FFh结束地址2BFFh

第三扇区起始地址0400h起始地址0C00h起始地址1400h起始地址1C00h起始地址2400h起始地址2C00h

结束地址05FFh结束地址0DFFh结束地址15FFh结束地址1DFFh结束地址25FFh结束地址2DFFh

第四扇区起始地址0600h起始地址0E00h起始地址1600h起始地址1E00h起始地址2600h起始地址2E00h

结束地址07FFh结束地址0FFFh

每个扇区512字节建修放扇用可议改在区满全同的同,,用一数一不当次据个必然

结束地址17FFh结束地址1FFFh结束地址27FFh结束地址2FFFh

第五扇区第六扇区        第七扇区       第八扇区

第十一扇区第十二扇区

第十三扇区第十四扇区第十五扇区第十六扇区

第十七扇区第十八扇区第十九扇区第二十扇区

第二十一扇区第二十二扇区第二十三扇区第二十四扇区

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)130

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410AD 系列 IAP 应用汇编简介STC12C5410AD 系列 内部EEPROM的应用

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

;用DATA还是EQU声明新增特殊功能寄存器地址要看你用的汇编器/编译器

ISP_DATAISP_ADDRHISP_ADDRLISP_CMDISP_TRIGISP_CONTR

DATADATADATADATADATADATA

0E2h;或0E3h;或0E4h;或0E5h;或0E6h;或0E7h;或

ISP_DATAISP_ADDRHISP_ADDRLISP_CMDISP_TRIGISP_CONTR

EQUEQUEQUEQUEQUEQU

0E2h0E3h0E4h0E5h0E6h0E7h

;定义ISP/IAP命令及等待时间

ISP_IAP_BYTE_READ

EQU

123

;字节读

;字节编程,前提是该字节是空,0FFh;扇区擦除,要某字节为空,要擦一扇区;设置等待时间,30MHz以下0,24M以下1,

ISP_IAP_BYTE_PROGRAMEQUISP_IAP_SECTOR_ERASEEQUWAIT_TIME

EQU

;20MHz以下2,12M以下3,6M以下4,3M以下5,2M以下6,1M以下7,

;字节读

MOVMOVMOVORLMOV     MOV     MOV

ISP_ADDRH,#BYTE_ADDR_HIGH     ;送地址高字节ISP_ADDRL,#BYTE_ADDR_LOW

;送地址低字节

地址需要改变时才需重新送地址

ISP_CONTR,#WAIT_TIME;设置等待时间ISP_CONTR,#10000000B;允许ISP/IAP操作ISP_CMD,ISP_TRIG,ISP_TRIG,

#ISP_IAP_BYTE_READ;送字节读命令,命令不需改变时,不需重新送命令#46h

;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此

#0B9h;送完B9h后,ISP/IAP命令立即被触发起动

;CPU等待IAP动作完成后,才会继续执行程序。[www.61k.com]     NOP

MOV

A,

ISP_DATA

;数据读出到ISP_DATA寄存器后,CPU继续执行程序     ;将读出的数据送往Acc

;以下语句可不用,只是出于安全考虑而已     MOV

MOVMOV

ISP_CONTR,#00000000B     ;禁止ISP/IAP操作ISP_CMD,

#00000000B     ;去除ISP/IAP命令

ISP_TRIG,#00000000B     ;防止ISP/IAP命令误触发

;MOVISP_ADDRH,#0 ;送地址高字节单元为00,指向非EEPROM区;MOVISP_ADDRL,#0 ;送地址低字节单元为00,防止误操作

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)131

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;字节编程,该字节为FFh/空时,可对其编程,否则不行,要先执行扇区擦除

MOV

MOV

MOV

MOV

ORL

MOV

MOV

MOVISP_DATA,#ONE_DATA ;送字节编程数据到ISP_DATA,只有数据改变时才需重新送ISP_ADDRH,#BYTE_ADDR_HIGH;送地址高字节ISP_ADDRL,#BYTE_ADDR_LOW;送地址低字节ISP_CONTR,#WAIT_TIME;设置等待时间ISP_CONTR,#10000000B;允许ISP/IAP操作ISP_CMD,地址需要改变时才需重新送地址

stc89c52中文资料 STC89C52RC_中文指南_

此两句可合成一句,并且只送一次就够了#ISP_IAP_BYTE_PROGRAM     ;送字节编程命令  ;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此ISP_TRIG,#46hISP_TRIG,#0B9h       ;送完B9h后,ISP/IAP命令立即被触发起动

;CPU等待IAP动作完成后,才会继续执行程序.

NOP;字节编程成功后,CPU继续执行程序

;以下语句可不用,只是出于安全考虑而已

MOV

MOV

MOVISP_CONTR,#00000000B;禁止ISP/IAP操作ISP_CMD,#00000000B;去除ISP/IAP命令ISP_TRIG,#00000000B;防止ISP/IAP命令误触发

;送地址高字节单元为00,指向非EEPROM区,防止误操作

;送地址低字节单元为00,指向非EEPROM区,防止误操作;MOVISP_ADDRH,#0;MOVISP_ADDRL,#0

----------------------------------------------------小常识: (STC单片机的Data Flash 当EEPROM功能使用)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

3个基本命令----字节读,字节编程,扇区擦除

字节编程:如果该字节是“1111,1111B”,则可将其中的“1”编程为“0”,如果该

字节中有位为“0”,则须先将整个扇区擦除,因为只有“扇区擦除”才可以将“0”

变为“1”。(www.61k.com)

扇区擦除:只有“扇区擦除”才可能将“0”擦除为“1”。

大建议:

1.同一次修改的数据放在同一扇区中,不是同一次修改的数据放在另外的扇区,就不须读出保护。

2.如果一个扇区只用一个字节,那就是真正的EEPROM,STC单片机的Data Flash比外部EEPROM要快很多,读一个字节/编程一个字节/擦除一个扇区大概是10uS/60uS/10mS。

3.如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不需要修改的数据须先读出放在STC 单片机的RAM中,然后擦除整个扇区,再将需要保留的数据和需修改的数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便(不需读出一大堆需保留数据)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)132

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;扇区擦除,没有字节擦除,只有扇区擦除,512字节/扇区,每个扇区用得越少越方便

;如果要对某个扇区进行擦除,而其中有些字节的内容需要保留,则需将其先读到单片机

;内部的RAM中保存,再将该扇区擦除,然后将须保留的数据写回该扇区,所以每个扇区;中用的字节数越少越好,操作起来越灵活越快.

MOV

MOV

MOV

ORL

MOV

MOV

MOVISP_ADDRH,

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

ISP_ADDRL,ISP_CONTR,#WAIT_TIME;设置等待时间ISP_CONTR,#10000000B;允许ISP/IAPISP_CMD,ISP_TRIG,ISP_TRIG,此两句可以合成一句,并且只送一次就够了#ISP_IAP_SECTOR_ERASE;送扇区擦除命令,命令不需改变时,不需重新送命令#46h;先送46h,再送B9h到ISP/IAP触发寄存器,每次都需如此#0B9h;送完B9h后,ISP/IAP命令立即被触发起动

;CPU等待IAP动作完成后,才会继续执行程序.

NOP

;以下语句可不用,只是出于安全考虑而已

MOV

MOV

MOVISP_CONTR,#00000000B     ;禁止ISP/IAP操作ISP_CMD,#00000000B     ;去除ISP/IAP命令;扇区擦除成功后,CPU继续执行程序ISP_TRIG,#00000000B     ;防止ISP/IAP命令误触发

;送地址高字节单元为00,指向非EEPROM区

;送地址低字节单元为00,防止误操作;MOVISP_ADDRH,#0;MOVISP_ADDRL,#0

;从用户应用程序区(AP区)软件复位并切换到ISP程序区开始执行程序

MOVISP_CONTR,#01100000B;SWBS = 1(选择ISP区), SWRST = 1(软复位)

;从ISP程序区软件复位并切换到用户应用程序区(AP区)开始执行程序

MOVISP_CONTR,#00100000B;SWBS = 0(选择AP区), SWRST = 1(软复位)

;使用ISP/IAP功能的朋友尽量给13922805190(姚工)一个电话交流一下

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)133

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;STC12C5410AD系列单片机EEPROM/IAP功能程序演示

;------------------------------------------------

;定义与IAP有关的特殊功能寄存器

ISP_DATA        EQU 0E2H

ISP_ADDRH       EQU 0E3H

ISP_ADDRL       EQU 0E4H

ISP_CMD         EQU 0E5H

ISP_TRIG        EQU 0E6H

ISP_CONTR       EQU 0E7H

;------------------------------------------------

;定义常量

;------------------------

;Flash 操作等待时间

;ENABLE_ISP      EQU 80H            ;<30MHz

;ENABLE_ISP      EQU 81H            ;<24MHz

ENABLE_ISP      EQU 82H            ;<20MHz

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;ENABLE_ISP      EQU 83H            ;<12MHz

;ENABLE_ISP      EQU 84H            ;<6MHz

;ENABLE_ISP      EQU 85H            ;<3MHz

;ENABLE_ISP      EQU 86H            ;<2MHz

;ENABLE_ISP      EQU 87H            ;<1MHz

DEBUG_DATA       EQU 5AH

;------------------------

;选择 MCU 型号

DATA_FLASH_START_ADDRESS EQU 1000H ;STC12C2052AD

;------------------------------------------------

ORG   0000H

AJMP  main

;------------------------------------------------

ORG   0100H

main:

MOV    P1,#0F0H     ;演示程序开始工作

LCALL Delay

MOV    P1,#0FH

LCALL Delay

MOV SP,  #0E0H;延时     ;演示程序开始工作;延时;堆栈指针指向 0E0H 单元

;************************************************

;读回写入 flash 的第1个字节

MAIN1:

MOV    DPTR, #DATA_FLASH_START_ADDRESS

LCALL  byte_read

MOV    40H, A                ;值送40H 单元保存

CJNE   A, #DEBUG_DATA, DATA_NOT_EQU_DEBUG_DATA

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)134

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243DATA_IS_DEBUG_DATA:

MOV P1,  #01111111B  ; (DATA_FLASH_START_ADDRESS) = #5A, 亮P1.7

LCALL  Delay;延时

MOV A, 40H   ;值从40H 单元送 ACC

CPL    A

MOV   P1,A    ;数据是对的,送 P1显示

WAIT1:

SJMP  WAIT1   ;数据是对的,送 P1显示,并在此停止

DATA_NOT_EQU_DEBUG_DATA:

MOV    P1,  #11110111B ;(DATA_FLASH_START_ADDRESS) != #5A, 亮P1.3

LCALLDelay

MOV;延时 A,   40H  ;值从40H 单元送 ACC

CPL    A

MOV   P1,  A    ;数据不对,送 P1显示

LCALL Delay;延时

MOV    DPTR,#DATA_FLASH_START_ADDRESS

ACALL  sector_erase  ;擦除扇区, (DATA_FLASH_START_ADDRESS) != #DEBUG_DATA    MOV    DPTR, #DATA_FLASH_START_ADDRESS

MOV    A,    #DEBUG_DATA           ;写入 flash 的数据为 DEBUG_DATA

ACALL  byte_program                ;字节编程

MOV    P1,   #11011111B            ;先亮P1.3 ,再亮 P1.5

WAIT2:

SJMP   WAIT2       ;字节编程后在此停止

;************************************************

;------------------------------------------------

;读一字节

;调用前需打开 IAP 功能

;入口:DPTR = 字节地址

;返回:A = 读出字节

byte_read:

MOV     ISP_CONTR,  #ENABLE_ISP     ;打开 IAP 功能, 设置 Flash 操作等待时间    MOV     ISP_CMD,    #01             ;Select Read AP Mode

MOV     ISP_ADDRH,  DPH             ;Fill page address in ISP_ADDRH & ISP_ADDRL    MOV     ISP_ADDRL,  DPL

CLR     EA

MOV     ISP_TRIG,   #46H            ;Trigger ISP processing

MOV     ISP_TRIG,   #0B9H           ;Trigger ISP processing

NOP

MOV     A,   ISP_DATA               ;数据在ISP_DATA

SETB    EA

;Now in processing.(CPU will halt here before completing)

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)135

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    ACALL IAP_Disable               ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    RET

;------------------------------------------------

;字节编程

;调用前需打开 IAP 功能

;入口:DPTR = 字节地址, A=须编程字节的数据

byte_program:

MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间

MOV   ISP_CMD, #02H             ;Select Byte Program Mode

MOV   ISP_ADDRH, DPH            ;Fill page address in ISP_ADDRH & ISP_ADDRL    MOV   ISP_ADDRL, DPL

MOV   ISP_DATA, A               ;数据进ISP_DATA

CLR   EA

MOV   ISP_TRIG, #46H            ;Trigger ISP processing

MOV   ISP_TRIG, #0B9H           ;Trigger ISP processing

NOP

SETB  EA

ACALL IAP_Disable               ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    RET

;------------------------------------------------

;擦除扇区, 入口:DPTR = 扇区地址

sector_erase:

MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间

MOV   ISP_CMD, #03H             ;Select Page Erase Mode

MOV   ISP_ADDRH, DPH            ;Fill page address in ISP_ADDRH & ISP_ADDRL    MOV   ISP_ADDRL, DPL

CLR   EA

MOV   ISP_TRIG, #46H            ;Trigger ISP processing

MOV   ISP_TRIG, #0B9H           ;Trigger ISP processing

NOP

SETB  EA

ACALL IAP_Disable               ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    RET

;------------------------------------------------

trigger_ISP:

CLR  EA

MOV  ISP_TRIG, #46H             ;Trigger ISP processing

MOV  ISP_TRIG, #0B9H            ;Trigger ISP processing

NOP

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)136

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    SETB  EA

RET

;------------------------------------------------

IAP_Disable:                        ;关闭 IAP 功能, 清与 ISP 有关的特殊功能寄存器    MOV   ISP_CONTR, #0             ;关闭 IAP 功能

MOV   ISP_CMD, #0

MOV   ISP_TRIG, #0

RET

;------------------------------------------------

Delay:

CLR   A

MOV   R0, A

MOV   R1, A

MOV   R2, #20H

Delay_Loop:

DJNZ  R0, Delay_Loop

DJNZ  R1, Delay_Loop

DJNZ  R2, Delay_Loop

RET

;------------------------------------------------

END

;************************************************

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)137

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

STC12C5410AD系列单片机定时器的使用

定时器0和1

定时和计数功能由特殊功能寄存器TMOD的控制位进行选择,TMOD寄存器的各位信息如下表所列。(www.61k.com)可以看出,2个定时/计数器有4种操作模式,通过TMOD的M1和M0选择。2个定时/计数器的模式0、1和2都相同,模式3不同,各模式下的功能如下所述。

寄存器TMOD各位的功能描述

TMOD     地址:89H

不可位寻址复位值:00H

stc89c52中文资料 STC89C52RC_中文指南_

定时器1

TMOD.7/

TMOD.3/

TMOD.6/符号       功能GATEGATE定时器0TMOD.7控制定时器1,置1时只有在INT1脚为高及TR1控制位置1时才TMOD.3控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才TMOD.6控制定时器1用作定时器或计数器,清零则用作定时器(从内                    可打开定时器/计数器1。                    可打开定时器/计数器0。

部系统时钟输入),置1用作计数器(从T1/P3.5脚输入)TMOD.2/TMOD.2控制定时器0用作定时器或计数器,清零则用作定时器(从内

部系统时钟输入),置1用作计数器(从T0/P3.4脚输入)

TMOD.5/TMOD.4  M1、M0

0    0

0    1

1    0

1    1

TMOD.1/TMOD.0  M1、M0

0    0定时器/计数器1模式选择13位定时器/计数器,兼容8048定时器模式,TL1只用低5位参与分16位定时器/计数器,TL1、TH1全用8位自动重装载定时器,当溢出时将TH1存放的值自动重装入TL1。定时器/计数器1此时无效(停止计数)。定时器/计数器0模式选择13位定时器/计数器,兼容8048定时器模式,TL0只用低5位参与分                   频,TH1整个8位全用。

频,TH0整个8位全用。

0    116位定时器/计数器,TL0、TH0全用

1    08位自动重装载定时器,当溢出时将TH0存放的值自动重装入TL0。                1    1定时器0此时作为双8位定时器/计数器。TL0作为一个8位定时器/计

数器,通过标准定时器0的控制位控制。TH0仅作为一个8位定时器,                         由定时器1的控制位控制。

1.模式0

将定时器设置成模式0时类似8048定时器,即8位计数器带32分频的预分频器。下图所示为模式0工作方式。此模式下,定时器配置为13位的计数器,由TLn的低5位和THn的8位所构成。TLn低5位溢出向THn进位,THn计数溢出置位TCON中的溢出标志位TFn(n=0,1)。GATE=0时,如TRn=1,则定时器计数。GATE=1时,允许由外部输入INT1控制定时器控制定时器0,这样可实现脉宽测量。TRn为TCON寄存器内的控制位,TCON寄存器各位的具体功能描述见TCON寄存器各位的具体功能描述表。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)138

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

中断

* 在T0x12 = 0模式下,d=12(12时钟模式);  在T0x12 = 1模式下,d=1(1T)。[www.61k.com]

图   定时器/计数器0和定时器/计数器1的模式0   :   13位定时/计数器

表  寄存器TCON各位的功能描述

TCON  地址:88H

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

该13位寄存器包含THn全部8个位及TLn的低5位。TLn的高3位不定,可将其忽略。置位运行标志(TRn)不能清零此寄存器。模式0的操作对于定时器0及定时器1都是相同的。2个不同的GATE位(TMOD.7和TMOD.3)分别分配给定时器1及定时器0。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)139

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442432.模式1

模式1除了使用了THn及TLn全部16位外,其他与模式0完全相同。[www.61k.com)

stc89c52中文资料 STC89C52RC_中文指南_

中断

* 在T0x12 = 0模式下,d=12(12时钟模式);  在T0x12 = 1模式下,d=1(1T)。

图   定时器/计数器0和定时器/计数器1的模式1   :   16位定时/计数器

3.模式2

此模式下定时器/计数器0和1作为可自动重装载的8位计数器(TLn),如下图所示。TLn的溢出不仅置位TFn,而且将THn内容重新装入TLn,THn内容由软件预置,重装时THn内容不变。模式2的操作对于定时器0及定时器1是相同的。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

中断* 在T0x12 = 0模式下,d=12(12时钟模式);  在T0x12 = 1模式下,d=1(1T)。

图   定时器/计数器0和1的模式2

stc89c52中文资料 STC89C52RC_中文指南_

:  8位自动重装载

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)140

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442434.模式3

对定时器1,在模式3时,定时器1停止计数,效果与将TR1设置为0相同。[www.61k.com)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

对定时器0,此模式下定时器0的TL0及TH0作为2个独立的8位计数器。下图为模式3时的定时器0逻辑图。TL0占用定时器0T、GATE、TR0、INT0及TF0。TH0限定为定时器功能(计数器周期),占用定时器1的TR1及TF1。此时,TH0控制定时器1中断。

模式3是为了增加一个附加的8位定时器/计数器而提供的,使单片机具有三个定时器/计数器。模式3只适用于定时器/计数器0,定时器T1处于模式3时相当于TR1=0,停止计数(此时T1可用来作串行口波特率发生器),而T0可作为两个定时器用。

中断

* 在T0x12 = 0模式下,d=12(12时钟模式);  在T0x12 = 1模式下,d=1(1T)。

图   定时/计数器0的模式3   :   两个8位计数器

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)141

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243                 定时器应用举例

【例1】 定时/计数器编程,定时/计数器的应用编程主要需考虑:根据应用要求,通过程序初始化,正确设置控制字,正确计算和计算计数初值,编写中断服务程序,适时设置控制位等。[www.61k.com]通常情况下,设置顺序大致如下:

1)工作方式控制字(TMOD、T2CON)的设置;

2)计数初值的计算并装入THx、TLx、RCAP2H、RCAP2L;

3)中断允许位ETx、EA的设置,使主机开放中断;

4) 启/停位TRx的设置等。

现以定时/计数器0或1为例作一简要介绍。

8051系列单片机的定时器/计数器0或1是以不断加1进行计数的,即属加1计数器,因此,就不能直接将实际的计数值作为计数初值送入计数寄存器THx、TLx中去,而必须将实际计数值以28、213、216为模求补,以其补码作为计数初值设置THx和TLx。

设:实际计数值为X,计数器长度为n(n=8、13、16),则应装入计数器THx、TLx中的计数初值为2n-x,式中2n为取模值。例如,工作方式0的计数长度为13位,则n=13,以213为模,工作方式1的计数长度为16,则n=16,以216为模等等。所以,计数初值为(x)= 2n-x。

对于定时模式,是对机器周期计数,而机器周期与选定的主频密切相关。因此,需根据应用系统所选定的主频计算出机器周期值。现以主频6MHz为例,则机器周期为:

12

主振频率

实际定时时间Tc = x?Tp

式中Tp为机器周期,Tc为所需定时时间,x为所需计数次数。Tp和Tp一般为已知值,在求出Tp后即可求得所需计数值x,再将x求补码,即求得定时计数初值。即126×106一个机器周期==μs=2μs

(x)补= 2n - x

例如,设定时时间Tc = 5ms,机器周期TP = 2μs,可求得定时计数次数x =5ms

2μs= 2500次

设选用工作方式1,则n=16,则应设置的定时时间计数初值为:(x)补= 216 - x=65536-2500=63036,还需将它分解成两个8位十六进制数,分别求得低8位为3CH装入TLx,高8位为F6H装入THx中。

工作方式0、1、2的最大计数次数分别为8192、65536和256。

对外部事件计数模式,只需根据实际计数次数求补后变换成两个十六进制码即可。

【例2】 定时/计数器应用编程,设某应用系统,选择定时/计数器1定时模式,定时时间Tc =10ms,主频频率为12MHz,每10ms向主机请求处理。选定工作方式1。计算得计数初值:低8位初值为F0H,高8位初值为D8H。

(1)初始化程序

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)142

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

所谓初始化,一般在主程序中根据应用要求对定时/计数器进行功能选择及参数设定等预置程序,本例初始化程序如下:

START:

;主程序段

SP,#60HTMOD,#10HTH1,#0D8HTL1,#0F0H

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;设置堆栈区域

;选择T1、定时模式,工作方式1;设置高字节计数初值;设置低字节计数初值;;

MOVMOVMOVMOV

SETBEASETBET1

开中断

;其他初始化程序

;启动T1开始计时

SETBTR1

(2)中断服务程序INTT1:

PUSHAPUSH DPLPUSH DPH

;;;

;继续主程序

现场保护

MOVMOV

TL1,#0F0HTH1,#0D8H

;;

重新置初值

;中断处理主体程序

DPHDPLA

POPPOPPOPRETI

;;;返回

现场恢复

这里展示了中断服务子程序的基本格式。(www.61k.com]8052系列单片机的中断属于矢量中断,每一个矢量中断源只留有8个字节单元,一般是不够用的,常需用转移指令转到真正的中断服务子程序区去执行。

【例3】 对外部正脉冲测宽。选择定时/计数器2进行脉宽测试较方便,但也可选用定时/计数器0或定时/计数器1进行测宽操作。本例选用定时/计数器0(T0)以定时模式,工作方式1对INT0引脚上的正脉冲进行脉宽测试。

设置GATE为1,机器周期TP为1μs。本例程序段编制如下:

INTT0:

MOV

TMOD,#09H

;设T0为定时方式1,GATE为1

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)143

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MOV

MOV

CLR

LOP1:

LOP2:JBJNBTL0,#00HTH0,#00HEX0P3.2,LOP1P3.2,LOP2     ;     ;}TH0,TL0清0;关INT0中断;等待INT0引低电平;等待INT0引脚高电平

;启动T0开始计数

;等待INT0低电平

;停止T0计数

;低字节计数值送A

;高字节计数值送B

;计算脉宽和处理SETBTR0LOP3:JBCLRMOVMOVP3.2,LOP3TR0A,TL0B,TH0

【例4】 利用定时/计数器0或定时/计数器1的Tx端口改造成外部中断源输入端口的应用设计。(www.61k.com)在某些应用系统中常会出现原有的两个外部中断源INT0和INT1不够用,而定时/计数器有多余,则可将Tx用于增加的外部中断源。现选择定时/计数器1为对外部事件计数模式工作方式2(自动再装入),设置计数初值为FFH,则T1端口输入一个负跳变脉冲,计数器即回0溢出,置位对应的中断请求标志位TF1为1,向主机请求中断处理,从而达到了增加一个外部中断源的目的。应用定时/计数器1(T1)的中断矢量转入中断服务程序处理。其程序示例如下:

(1)主程序段:

ORG0000H

;转主程序AJMPMAIN

ORG001BH

LJMPINTER…

ORG

MAIN:…    ;转T1中断服务程序…0100;主程序入口

MOV

MOV

MOV

MOV…SP,#60HTMOD,#60HTL1,#0FFHTH1,#0FFH

;开中断

;开定时/计数器1中断

;启动定时/计数器1计数;设置堆栈区;设置定时/计数器1,计数方式2;设置计数常数SETBEASETBET1SETBTR1

(2)中断服务程序(具体处理程序略)

ORG

INTER:1000H;

;…PUSHAPUSHDPLPUSHDPH}现场入栈保护

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)…144

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

POPPOPPOPRETI

……

中断处理主体程序;

DPHDPLA

;;;

现场出栈复原

;返回

这是中断服务程序的基本格式。(www.61k.com)

【例5】 某应用系统需通过P1.0和P1.1分别输出周期为200μs和400μs的方波。为此,系统选用定时器/计数器0(T0),定时方式3,主频为6MHz,TP=2μs,经计算得定时常数为9CH和38H。

本例程序段编制如下:(1)初始化程序段

PLT0:MOV

MOVMOV

TMOD,#03HTL0,#9CHTH0,#38H

;设置T0定时方式3    ;设置TL0初值    ;设置TH0初值

;;;

SETBEASETBET0SETBET1SETBTR0SETBTR1

开中断

;启动;启动

(2)中断服务程序段1)

MOV

CPL

……

TL0,#9CHP1.0

INT0P:

;重新设置初值

;对P1.0输出信号取反

RETI

;返回

2)

INT1P

MOVCPL

……

TH0,#38HP1.1

;重新设置初值

;对P1.1输出信号取反

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

RETI

;返回

145

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

在实际应用中应注意的问题如下。[www.61k.com)

(1)定时/计数器的实时性

定时/计数器启动计数后,当计满回0溢出向主机请求中断处理,由内部硬件自动进行。但从回0溢出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不同,一般需延时3个机器周期以上,这就给实时处理带来误差。大多数应用场合可忽略不计,但对某些要求实时性苛刻的场合,应采用补偿措施。

这种由中断响应引起的时间延时,对定时/计数器工作于方式0或1而言有两种含义:一是由于中断响应延时而引起的实时处理的误差;二是如需多次且连续不间断地定时/计数,由于中断响应延时,则在中断服务程序中再置计数初值时已延误了若干个计数值而引起误差,特别是用于定时就更明显。

例如选用定时方式1设置系统时钟,由于上述原因就会产生实时误差。这种场合应采用动态补偿办法以减少系统始终误差。所谓动态补偿,即在中断服务程序中对THx、TLx重新置计数初值时,应将THx、TLx从回0溢出又重新从0开始继续计数的值读出,并补偿到原计数初值中去进行重新设置。可考虑如下补偿方法:

CLR

MOV

ADD

MOV

MOV…EAA,TLxA,#LOWTLx,AA,#HIGH;禁止中断;读TLx中已计数值;LOW为原低字节计数初值;设置低字节计数初值;原高字节计数初值送A

;高字节计数初值补偿

;置高字节计数初值

;开中断ADDCA,THxMOVTHx,ASETBEA

(2)动态读取运行中的计数值

在动态读取运行中的定时/计数器的计数值时,如果不加注意,就可能出错。这是因为不可能在同一时刻同时读取THx和TLx中的计数值。比如,先读TLx后读THx,因为定时/计数器处于运行状态,在读TLx时尚未产生向THx进位,而在读THx前已产生进位,这时读得的THx就不对了;同样,先读THx后读TLx也可能出错。

一种可避免读错的方法是:先读THx,后读TLx,将两次读得的THx进行比较;若两次读得的值相等,则可确定读的值是正确的,否则重复上述过程,重复读得的值一般不会再错。此法的软件编程如下:

RDTM:  MOV A,THx

MOV R0,TLx

CJNEA,THx,RDTM;读取THx存A中;读取TLx存R0中   ;比较两次THx值,若相等,则读得的值正

;确,程序往下执行,否则重读

MOV R1,A    ;将THx存于R1中

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)……146

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC12C5410系列单片机PWM/PCA应用

STC12C5410AD系列 1T  8051 单片机 PCA/PWM 特殊功能寄存器    PCA/PWM SFRs

MnemonicAddNameCCONCMODCCAPM0CCAPM1CCAPM2CCAPM3CLCHCCAP0LCCAP0HCCAP1LCCAP1HCCAP2LCCAP2HCCAP3LCCAP3H

D8hPCA Control RegisterD9hPCA Mode RegisterDAhDBhDChDDh

PCA Module 0

Mode RegisterPCA Module 1Mode RegisterPCA Module 2Mode RegisterPCA Module 3Mode Register

7CF CIDL----

6 CR -

5- -

4--

3CCF3 -

2CCF2 CPS1TOG0TOG1TOG2TOG3

1CCF1CPS0PWM0PWM1PWM2PWM3

0CCF0ECF

Reset value00xx,00000xxx,x000

ECOM0CAPP0CAPN0MAT0ECOM1CAPP1CAPN1MAT1ECOM2CAPP2CAPN2MAT2ECOM3CAPP3CAPN3MAT3

ECCF0x000,0000ECCF1x000,0000ECCF2x000,0000ECCF3x000,0000

0000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,0000

E9hPCA Base Timer LowF9hPCA Base Timer HighEAhFAhEBhFBhEChFChEDhFDh

PCA Module-0 CaptureRegister LowPCA Module-0 CaptureRegister HighPCA Module-1 CaptureRegister LowPCA Module-1 CaptureRegister HighPCA Module-2 CaptureRegister LowPCA Module-2 CaptureRegister HighPCA Module-3 CaptureRegister LowPCA Module-3 CaptureRegister HighPCA PWM Mode

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

Auxiliary Register 0PCA PWM Mode

Auxiliary Register 1PCA PWM Mode

Auxiliary Register 2PCA PWM Mode

Auxiliary Register 3

----

----

----

----

----

----

PCA_PWM0F2hPCA_PWM1F3hPCA_PWM2F4hPCA_PWM3F5h

EPC0HEPC0Lxxxx,xx00EPC1HEPC1Lxxxx,xx00EPC2HEPC2Lxxxx,xx00EPC3HEPC3Lxxxx,xx00

CMOD - PCA模式 寄存器的位分配 (地址:D9H)

位符号

7CIDL

6-

5-

4-

3-

2CPS1

1CPS0

0ECF

CMOD - PCA模式 寄存器的位描述 (地址:D9H)

位76 - 32 - 10

符号CIDL-CPS1,CPS0

ECF

描述

计数器阵列空闲控制:CIDL=0时,空闲模式下PCA计数器继续工作。[www.61k.com]CIDL=1时,空闲模式下PCA计数器停止工作。保留为将来之用。

PCA计数脉冲选择(见下表)。

PCA计数溢出中断使能:ECF=1时,使能寄存器CCON  CF位的中断。ECF=0时,禁止该功能。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)147

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

CMOD - PCA计数器阵列的计数脉冲选择 (地址:D9H)

CPS10011

CPS00101

1,内部时钟,Fosc/2

2,定时器0溢出,由于定时器0可以工作在1T方式,所以可以达

到计一个时钟就溢出,频率反而是最高的,可达到Fosc3,ECI/P3.4脚的外部时钟输入(最大速率=Fosc/2)

选择PCA时钟源输入

0,内部时钟,Fosc/12

CCON - PCA控制寄存器的位分配 (地址:D8H)

位符号

7CF

6CR

5-

4-

3-

2-

1CCF1

0CCF0

CCON - PCA控制寄存器的位描述 (地址:D8H)

位7

符号CF

描述

PCA计数器阵列溢出标志。(www.61k.com)计数值翻转时该位由硬件置位。如果CMOD寄存器的ECF位置位,CF标志可用来产生中断。CF位可通过硬件或软件置位,但只可通过软件清零。

PCA计数器阵列运行控制位。该位通过软件置位,用来起动PCA计数器阵列计数。该位通过软件清零,用来关闭PCA计数器。保留位,保留为将来使用。

PCA模块1中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。

PCA模块0中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软件清零。

65 - 210

CR-CCF1CCF0

CCAPMn - PCA比较/捕获模块寄存器的位分配(CCAPM0地址:0DAH;CCAPM1地址:0DBH)

位符号

7-

6ECOMn

5CAPPn

4CAPNn

3MATn

2TOGn

1PWMn

0ECCFn

CCAPMn - PCA比较/捕获模块寄存器的位描述  ( n:0,1,2,3 )

位76543210

符号-ECOMnCAPPnCAPNnMATnTOGnPWMnECCFn

保留为将来之用。

描述           n : 0,1,2,3

使能比较器。ECOMn=1时使能比较器功能。正捕获。CAPPn=1时使能上升沿捕获。负捕获。CAPNn=1时使能下降沿捕获。

匹配。当MATn=1时,PCA计数值与模块的比较/捕获寄存器的值的匹配将置位CCON寄存器的中断标志位CCFn。

翻转。当TOGn=1时,PCA计数值与模块的比较/捕获寄存器的值的匹配将使CEXn脚翻转。(CEX0/P3.7,CEX1/P3.5)

脉宽调节模式。当PWMn=1时,使能CEXn脚用作脉宽调节输出。

使能CCFn中断。使能寄存器CCON的比较/捕获标志CCFn,用来产生中断。

PCA模块工作模式(CCAPMn寄存器,n:0,1,2,3)

ECOMn0XXX111

CAPPn0101000

CAPNn0011000

MATn0000110

TOGn0000010

PWMn0000001

ECCFn0XXXXX0

无此操作

模块功能

16位捕获模式,由CEXn的上升沿触发16位捕获模式,由CEXn的下降沿触发16位捕获模式,由CEXn的跳变触发16位软件定时器16位高速输出8位PWM

148

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243STC12C5410AD系列单片机可编程计数器阵列(PCA)

PCA含有一个特殊的16位定时器,有4个16位的捕获/比较模块与之相连。[www.61k.com]每个模块可编程工作在4种模式下:上升/下降沿捕获、软件定时器、高速输出或可调制脉冲输出。模块0连接到P3.7(CEX0/PCA0/PWM0),模块1连接到P3.5(CEX1/PCA1/PWM1)。模块2连接到P2.0(CEX2/PCA2/PWM2),模块3连接到P2.4(CEX3/PCA3/PWM3).寄存器CH和CL的内容是正在自由递增计数的16位PCA定时器的值。PCA定时器是4个模块的公共时间基准,可通过编程工作在:1/12振荡频率、1/2振荡频率、定时器0溢出或ECI脚的输入(P3.4)。定时器的计数源由CMOD SFR的CPS1和CPS0位来确定(见CMOD特殊功能寄存器说明)。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

Programmable  Counter  Array

PCA  Timer/Counter

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)149

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    CMOD SFR还有2个位与PCA相关。(www.61k.com]它们分别是:CIDL,空闲模式下允许停止PCA;ECF,置位时,使能PCA中断,当PCA定时器溢出将PCA计数溢出标志CF(CCON SFR)置位。

CCON SFR包含PCA的运行控制位(CR)和PCA定时器标志(CF)以及各个模块的标志(CCF1/CCF0)。通过软件置位CR位(CCON.6)来运行PCA。CR位被清零时PCA关闭。当PCA计数器溢出时,CF位(CCON.7)置位,如果CMOD寄存器的ECF位置位,就产生中断。CF位只可通过软件清除。CCON寄存器的位0~1是PCA各个模块的标志(位0对应模块0,位1对应模块1),当发生匹配或比较时由硬件置位。这些标志也只能通过软件清除。所有模块共用一个中断向量。PCA的中断系统如图所示。的每个模块都对应一个特殊功能寄存器。它们分别是:模块0对应CCAPM0,模块1对应    PCA

CCAPM1,模块2对应CCAPM2,模块3对应CCAPM3.特殊功能寄存器包含了相应模块的工作模式控制位。   当模块发生匹配或比较时,ECCFn位(CCAPMn.0,n=0,1,2,3由工作的模块决定)使能CCON SFR的CCFn标志来产生中断。

PWM(CCAPMn.1)用来使能脉宽调制模式。

当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果TOG位(CCAPMn.2)置位,模块的CEXn输出将发生翻转。

当PCA计数值与模块的捕获/比较寄存器的值相匹配时,如果匹配位MATn(CCAPMn.3)置位,CCON寄存器的CCFn位将被置位。

CAPNn(CCAPMn.4)和CAPPn(CCAPMn.5)用来设置捕获输入的有效沿。CAPNn位使能下降沿有效,CAPPn位使能上升沿有效。如果两位都置位,则两种跳变沿都被使能,捕获可在两种跳变沿产生。   通过置位CCAPMn寄存器的ECOMn位(CCAPMn.6)来使能比较器功能。

每个PCA模块还对应另外两个寄存器,CCAPnH和CCAPnL。当出现捕获或比较时,它们用来保存16位的计数值。当PCA模块用在PWM模式中时,它们用来控制输出的占空比。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)150

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243PCA捕获模式

要使一个PCA模块工作在捕获模式(下图),寄存器CCAPMn的两位(CAPNn和CAPPn)或其中任何一位必须置1。(www.61k.com)对模块的外部CEXn输入(CEX0/P3.7,CEX1/P3.5,CEX2/P2.0,CEX3/P2.4口)的跳变进行采样。当采样到有效跳变时,PCA硬件就将PCA计数器阵列寄存器(CH和CL)的值装载到模块的捕获寄存器中(CCAPnL和CCAPnH)。

PCA Capture Mode (PCA

stc89c52中文资料 STC89C52RC_中文指南_

捕获模式图)

如果CCON SFR的位CCFn和CCAPMn SFR的位ECCFn位被置位,将产生中断。

stc89c52中文资料 STC89C52RC_中文指南_

16位软件定时器模式

通过置位CCAPMn寄存器的ECOM和MAT位,可使PCA模块用作软件定时器(下图)。PCA定时器的值与模块捕获寄存器的值相比较,当两者相等时,如果位CCFn(在CCON SFR中)和位ECCFn(在CCAPMn SFR中)都置位,将产生中断。

PCA Software Timer Mode/软件定时器模式/PCA比较模式

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)151

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243高速输出模式

该模式中(下图),当PCA计数器的计数值与模块捕获寄存器的值相匹配时,PCA模块的CEXn输出将发生翻转。(www.61k.com)要激活高速输出模式,模块CCAPMn SFR的TOG,MAT和ECOM位必须都置位。

stc89c52中文资料 STC89C52RC_中文指南_

PCA High-Speed Output Mode / PCA高速输出模式

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

脉宽调节模式

所有PCA模块都可用作PWM输出(下图)

stc89c52中文资料 STC89C52RC_中文指南_

。输出频率取决于PCA定时器的时钟源。

PCA PWM mode / 可调制脉冲宽度输出模式

由于所有模块共用仅有的PCA定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化的,与使用的捕获寄存器{EPCnL,CCAPnL}有关。当 CL SFR的值小于{EPCnL,CCAPnL}时,输出为低,当PCA CL SFR的值等于或大于{EPCnL,CCAPnL}时,输出为高。当CL的值由FF变为00溢出时,{EPCnH,CCAPnH}的内容装载到{EPCnL,CCAPnL}中。这样就可实现无干扰地更新PWM。要使能PWM模式,模块CCAPMn寄存器的PWMn和ECOMn位必须置位。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)152

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243 STC12C5410AD系列单片机PCA/PWM新增特殊功能寄存器声明;PCA_5410AD_SFR.ASM, PCA/PWM新增特殊功能寄存器声明

;定义 STC12C2052 系列 MCU 特殊功能寄存器

EPCA     EQU   IE.6             ;PCA 中断屏蔽位。[www.61k.com)

CH       EQU    0F9H             ;PCA 计数器高8位。

CL       EQU    0E9H             ;PCA 计数器低8位。

;------------------------

CCON     EQU    0D8H             ;PCA 控制寄存器。

CCF0     EQU   CCON.0           ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。CCF1     EQU   CCON.1           ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。CR       EQU   CCON.6           ;1:允许 PCA 计数器计数, 必须由软件清0。

CF       EQU   CCON.7           ;PCA计数器溢出标志,由硬件或软件置位,必须由软件清0。;------------------------

CMOD     EQU   0D9H             ;PCA 工作模式寄存器。

;CMOD.7     CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。;CMOD.2     CPS1: PCA 计数器脉冲源选择位 1。

;CMOD.1     CPS0: PCA 计数器脉冲源选择位 0。

;           CPS1  CPS0

;            0      0    内部时钟, fosc/12。

;            0      1    内部时钟, fosc/2。

;            1      0    Timer0 溢出。

;            1      1    由 ECI/P3.4 脚输入的外部时钟。

;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。

;------------------------

CCAP0H   EQU   0FAH             ;PCA 模块0的捕捉/比较寄存器高 8 位。

CCAP1H   EQU   0FBH             ;PCA 模块1的捕捉/比较寄存器高 8 位。

CCAP0L   EQU   0EAH             ;PCA 模块0的捕捉/比较寄存器低 8 位。

CCAP1L   EQU   0EBH             ;PCA 模块1的捕捉/比较寄存器低 8 位。

;------------------------

PCA_PWM0   EQU   0F2H             ;PCA 模块0 PWM 寄存器。

PCA_PWM1   EQU   0F3H             ;PCA 模块1 PWM 寄存器。

;PCA_PWMn:    7      6      5      4      3      2      1      0

;             -      -      -      -      -      -    EPCnH  EPCnL

;B7-B2: 保留

;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。

;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。

;------------------------

CCAPM0   EQU   0DAH             ;PCA 模块0的工作模式寄存器。

CCAPM1   EQU   0DBH             ;PCA 模块1的工作模式寄存器。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)153

stc89c52中文资料 STC89C52RC_中文指南_

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;CCAPMn:    7      6      5      4      3      2      1      0

;           -     ECOMn  CAPPn  CAPNn   MATn   TOGn   PWMn   ECCFn

;ECOMn = 1:允许比较功能。[www.61k.com)

;CAPPn = 1:允许上升沿触发捕捉功能。

;CAPNn = 1:允许下降沿触发捕捉功能。

;MATn  = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。

;TOGn  = 1:当匹配情况发生时, CEXn 将翻转。

;PWMn  = 1:将 CEXn 设置为 PWM 输出。

;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。

;  -  ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn

;  -    0      0      0     0     0     0     0   未启用任何功能。   00H

;  -    x      1      0     0     0     0     x   16位CEXn上升沿触发捕捉功能。   20H;  -    x      0      1     0     0     0     x   16位CEXn下降沿触发捕捉功能。   10H;  -    x      1      1     0    0     0     x   16位CEXn边沿(上、下沿)触发捕捉功能。30H

;  -    1      0      0     1     0     0     x   16位软件定时器。                48H;  -    1      0      0     1     1     0     x   16位高速脉冲输出。              4CH;  -    1      0      0     0     0     1     0   8位 PWM。                      42H宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)154

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;STC12C5410AD 系列单片机 PCA 功能PWM 示例程序,使用18.432MHz晶振。[www.61k.com)

;------------------------------------------------------------

#include <..\PCA_5410AD_SFR.ASM>    ;定义 PCA 特殊功能寄存器

;------------------------------------------------------------

;定义常量

;pulse_width_MAX = pulse_width_MIN 时, 输出脉冲宽度不变。

pulse_width_MAX   EQU   0F0H        ;PWM 脉宽最大值, 占空比 = 93.75%

pulse_width_MIN   EQU   10H         ;PWM 脉宽最小值, 占空比 = 6.25%

step              EQU   38H         ;PWM 脉宽变化步长

;------------------------------------------------------------

;定义变量

pulse_width     EQU  30H

;------------------------------------------------------------

ORG 0000H

AJMP  main

;------------------------------------------------------------

ORG 0050H

main:

MOV   SP, #0E0H

ACALL PCA_init

main_loop:

ACALL PWM

SJMP  main_loop

;------------------------------------------------------------

PCA_init:

MOV   CMOD, #80H;           ;PCA 在空闲模式下停止 PCA 计数器工作

;PCA 时钟模式为fosc/12

;禁止 PCA 计数器溢出中断

MOV   CCON, #00H           ;禁止 PCA 计数器工作, 清除中断标志、计数器溢出标志    MOV   CL, #00H              ;清0计数器

MOV   CH, #00H

;-------------------------

;设置模块0为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.7(第11脚)输出

MOV   CCAPM0, #42H          ;*** 示例程序核心语句, ---->0100,0010

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV   PCA_PWM0, #00H        ;*** 示例程序核心语句

;   MOV   PCA_PWM0, #03H       ;释放本行注释, PWM 输出就一直是 0, 无脉冲。

;-------------------------

;设置模块1为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.5(第9脚)输出

MOV   CCAPM1, #42H          ;*** 示例程序核心语句, ---->0100,0010

MOV   PCA_PWM1, #00H        ;*** 示例程序核心语句

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)155

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;   MOV   PCA_PWM1, #03H        ;释放本行注释, PWM 输出就一直是 0, 无脉冲。[www.61k.com]

SETB  EPCA                  ;开 PCA 中断

SETB  EA                    ;开总中断

SETB  CR                    ;将PCA 计数器打开

RET

;------------------------------------------------------------

PWM:                            ;用示波器进行观察较为理想。

;逐渐变亮。

MOV   A, #pulse_width_MIN   ;为输出脉冲宽度设置初值。

MOV   pulse_width, A        ;pulse_width 数字越大脉宽越窄,P3.5 的 LED 越亮。PWM_loop1:

MOV   A, pulse_width        ;判是否到达最大值。

CLR   C

SUBB  A, #pulse_width_MAX

JNC   PWM_a                 ;到达最大值就转到逐渐变暗。

MOV  A, pulse_width       ;设置脉冲宽度。数字越大、脉宽越窄、LED 越亮。    MOV   CCAP0H, A             ;*** 示例程序核心语句

MOV   CCAP1H, A             ;*** 示例程序核心语句

CPL   A                      ;用 P1 口的 LED 显示占空比,

MOV   P1, A                 ;占空比 = ( pulse_width/256 ) * 100%  。

MOV   A, pulse_width        ;计算下一次输出脉冲宽度数值。

ADD   A, #step

MOV   pulse_width, A

ACALL delay                 ;在一段时间内保持输出脉冲宽度不变。

SJMP  PWM_loop1

PWM_a:

;逐渐变暗。

MOV   A, #pulse_width_MAX   ;为输出脉冲宽度设置初值。

MOV   pulse_width, A        ;pulse_width 数字越大脉宽越窄,P3.5 的 LED 越亮。PWM_loop2:

MOV   A, pulse_width        ;判是否到达最小值。

CLR   C

SUBB  A, #pulse_width_MIN

JC    PWM_b                 ;到达最小值就返回。

JZ    PWM_b                 ;到达最小值就返回。

MOV  A, pulse_width       ;设置脉冲宽度。数字越大、脉宽越窄、LED 越亮。    MOV   CCAP0H, A              ;*** 示例程序核心语句

MOV   CCAP1H, A              ;*** 示例程序核心语句

CPL   A                      ;用 P1 口的 LED 显示占空比,

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)156

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    MOV   P1, A               ;占空比 = ( pulse_width/256 ) * 100%  。(www.61k.com)

MOV   A, pulse_width    ;计算下一次输出脉冲宽度数值。

CLR   C

SUBB  A, #step

MOV   pulse_width, A

ACALL delay             ;在一段时间内保持输出脉冲宽度不变。

SJMP  PWM_loop2

PWM_b:

RET

;------------------------------------------------------------

delay:

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

CLR   A

MOV   R1, A

MOV   R2, A

MOV   R3, #80H

delay_loop:

NOP

NOP

NOP

DJNZ  R1, delay_loop

DJNZ  R2, delay_loop

DJNZ  R3, delay_loop

RET

;------------------------------------------------------------

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)157

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    STC12C5410AD 系列单片机PWM输出C语言示例PWM输出C语言示例

#include<reg52.h>

sfr  CCON = 0xD8;

sfr  CMOD = 0xD9;

sfr  CCAP0L = 0xEA;

sfr  CCAP0H = 0xFA;

sfr  CCAPM0 = 0xDA;

sfr  CCAPM1 = 0xDB;

sbit  CR = 0xDE;

void main(void)

CMOD = 0x02; // Setup PCA timer

CL = 0x00;

CH = 0x00;

CCAP0L = 0xc0;  //Set the initial value same as CCAP0H

CCAP0H = 0xc0;  //25% Duty Cycle

CCAPM0 = 0x42;  //0100,0010  Setup PCA module 0 in PWM mode

CR = 1; //Start PCA Timer.

while(1){};

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)158

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    STC12C5410AD 系列单片机 PCA 的高速脉冲输出;******************************************************************************;                输出 125.0KHz 的脉冲(晶体频率 = 33.000MHz)

;示例程序: 使用 功能, 在P3.5(第9脚)输出

;         125.0KHz 的方脉冲。[www.61k.com]

;------------------------------------------------------------------------------;    程序中定义的常量 CCAPnL_Value 决定了 PCA 模块n 输出脉冲的频率 f:

;        f =  Fosc / (4 * CCAPnL_Value )

;           式中 Fosc = 晶体频率

;        CCAPnL_Value  =  Fosc / (4 * f)

;    如算出的结果不是整数,则进行取整 CCAPnL_Value =  INT(Fosc / (4 * f) + 0.5);        INT() 为取整数运算, 直接去掉小数。

;******************************************************************************;定义 STC12C5410 系列 MCU 特殊功能寄存器

IPH      EQU   0B7H              ;中断优先级高位寄存器

EPCA_LVD EQU   IE.6             ;PCA/LVD 中断允许位。

;要打开 PCA 中断还要打开相应的 ECF,ECCF0,ECCF1 位

;要打开 LVD 中断还要打开相应的 ELVDI 位

CH       EQU   0xF9             ;PCA 计数器高8位。

CL       EQU   0xE9             ;PCA 计数器低8位。

;------------------------

CCON     EQU   0D8H             ;PCA 控制寄存器。

CCF0     EQU   CCON.0           ;PCA 模块0 中断标志, 由硬件置位, 必须由软件清0。CCF1     EQU   CCON.1           ;PCA 模块1 中断标志, 由硬件置位, 必须由软件清0。CR       EQU   CCON.6           ;1:允许 PCA 计数器计数, 必须由软件清0。

CF       EQU   CCON.7           ;PCA计数器溢出标志,由硬件或软件置位,必须由软件清0。;------------------------

CMOD     EQU   0D9H             ;PCA 工作模式寄存器。

;CMOD.7     CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。;CMOD.2     CPS1: PCA 计数器脉冲源选择位 1。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;CMOD.1     CPS0: PCA 计数器脉冲源选择位 0。

;           CPS1   CPS0

;            0      0    内部时钟, fosc/12。

;            0      1    内部时钟, fosc/2。

;            1      0    Timer0 溢出。

;            1      1    由 ECI/P3.4 脚输入的外部时钟。

;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。

;------------------------

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)159

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243CCAP0H   EQU   0FAH             ;PCA 模块0的捕捉/比较寄存器高 8 位。(www.61k.com)

CCAP1H   EQU   0FBH             ;PCA 模块1的捕捉/比较寄存器高 8 位。

CCAP0L   EQU   0EAH             ;PCA 模块0的捕捉/比较寄存器低 8 位。

CCAP1L   EQU   0EBH             ;PCA 模块1的捕捉/比较寄存器低 8 位。

;------------------------

PCA_PWM0 EQU   0F2H             ;PCA 模块0 PWM 寄存器。

PCA_PWM1 EQU   0F3H             ;PCA 模块1 PWM 寄存器。

;PCA_PWMn:    7      6      5      4      3      2      1      0

;             -      -      -      -      -      -    EPCnH  EPCnL

;B7-B2: 保留

;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。

;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。

;------------------------

CCAPM0   EQU   0DAH             ;PCA 模块0的工作模式寄存器。

CCAPM1   EQU   0DBH             ;PCA 模块1的工作模式寄存器。

;CCAPMn:    7      6      5      4      3      2      1      0

;           -    ECOMn  CAPPn  CAPNn  MATn   TOGn   PWMn   ECCFn

;ECOMn = 1:允许比较功能。

;CAPPn = 1:允许上升沿触发捕捉功能。

;CAPNn = 1:允许下降沿触发捕捉功能。

;MATn  = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。

;TOGn  = 1:当匹配情况发生时, CEXn 将翻转。

;PWMn  = 1:将 CEXn 设置为 PWM 输出。

;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。

;ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn

;  0     0     0    0    0    0    0   0x00   未启用任何功能。

;  x     1     0    0    0    0    x   0x21   16位CEXn上升沿触发捕捉功能。

;  x     0     1    0    0    0    x   0x11   16位CEXn下降沿触发捕捉功能。

;  x     1     1    0    0    0    x   0x31   16位CEXn边沿(上、下沿)触发捕捉功能。;  1     0     0    1    0    0    x   0x49   16位软件定时器。

;  1     0     0    1    1    0    x   0x4d   16位高速脉冲输出。

;  1     0     0    0    0    1    0   0x42   8位 PWM。

;------------------------------------------------------------

;定义常量 CCAPnL_Value

;CCAPnL_Value 决定了模块1 输出脉冲的频率 f:

;        f =  Fosc / (4 * CCAPnL_Value )

;    式中 Fosc = 晶体频率

;    或  CCAPnL_Value  =  INT(Fosc / (4 * f) + 0.5)

;        INT() 为取整数运算。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)160

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243;    假定 fosc = 20MHz时, 要求 PCA 高速脉冲输出 125KHz 的方波:

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;        CCAPnL_Value = INT( 20000000/4/125000 + 0.5)

;                     = INT( 40 + 0.5)

;                     = INT( 40.5 )

;                     = 40

;                     = 28H

;    输出脉冲的频率 f  = 20000000/4/40

;                     = 125000 (125.0KHz)

;CCAPnL_Value  EQU 25H     ;25H = 37, fosc = 18.432MHz时, 高速脉冲输出 = 124.540KHz;CCAPnL_Value  EQU 28H     ;28H = 40, fosc = 20MHz时, 高速脉冲输出 = 125KHz

CCAPnL_Value   EQU 42H     ;42H = 66, fosc = 33MHz时, 高速脉冲输出 = 125KHz

;------------------------------------------------------------

ORG 0000H

AJMP  main

;------------------------------------------------------------

ORG  0033H                  ;interrupt 6

PCA_interrupt:

PUSH  ACC                   ;4 Clock

PUSH  PSW                   ;4 Clock

CLR   CCF1                  ;1 Clock, 清 PCA 模块 1 中断标志

MOV   A, #CCAPnL_Value ;2 Clock

ADD   A, CCAP1L             ;3 Clock

MOV   CCAP1L, A             ;3 Clock

CLR   A                     ;1 Clock

ADDC  A, CCAP1H             ;3 Clock

MOV   CCAP1H, A             ;3 Clock

POP   PSW                   ;3 Clock

POP   ACC                   ;3 Clock

RETI                        ;4 Clock

;此中断服务程序共用 34 Clock, 进入中断服务程序还要数个 Clock

;------------------------------------------------------------

ORG 0060H

main:

MOV   SP, #0E0H             ;设置堆栈指针

ACALL PCA_init              ;调用 PCA 初始化程序

main_loop:

NOP

NOP

NOP

SJMP  main_loop

;------------------------------------------------------------

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)161

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243PCA_init:                       ;PCA 初始化程序

MOV   CMOD, #00000010B     ;02H,PCA 计数器在空闲模式下继续工作, CIDL = 0                    ;PCA 计数器计数脉冲来源为系统时钟源fosc/2, CPS1, CPS0 = (0,1)                    ;禁止PCA计数器(CH, CL)计数溢出(CH, CL=0000H)中断, ECF = 0    MOV   CCON, #00H            ;清除 PCA 计数器(CH, CL)计数溢出中断标志, CF = 0                                ;停止 PCA 计数器(CH, CL)计数, CR = 0

;清除 模块1 中断标志, CCF1 = 0

;清除 模块0 中断标志, CCF0 = 0

MOV   CH, #00H              ;清0 PCA 计数器高 8 位

MOV   CL, #00H              ;清0 PCA 计数器低 8 位

;-------------------------

;设置模块1为高速脉冲输出模式, 脉冲在P3.5(第9脚)输出

MOV   CCAPM1, #01001101B    ;4DH, 设置 PCA 模块1为高速脉冲输出模式,允许触发中断;CCAPMn:    7      6      5      4      3      2      1      0

;           -    ECOMn  CAPPn  CAPNn  MATn   TOGn   PWMn   ECCFn

;           0      1      0      0      1      1      0      1

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV   CCAP1L, #CCAPnL_Value ;给模块1置初值, 此句不可少

MOV   CCAP1H, #0 ;给模块1置初值, 此句不可少

;其它中断服务可能会使模块1 高速脉冲输出的某个周期突然变得很大,因此必须将

;PCA 中断的优先级设置为唯一的最高级, 其它中断的优先级都要比它低。(www.61k.com)

MOV   IPH, #01000000B       ;PCA 中断的优先级设置为唯一的最高级

MOV   IP, #01000000B

SETB  EPCA_LVD              ;开 PCA 中断

SETB  EA                    ;开总中断

SETB  CR                    ;将PCA 计数器打开

RET

;------------------------------------------------------------

END

;------------------------------------------------------------

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)162

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243   STC12C5410AD系列编译器/汇编器,编程器,仿真器

STC 单片机应使用何种编译器/汇编器:

1.任何老的编译器/汇编器都可以支持,流行用Keil C51

2.把STC单片机,当成Intel的8052/87C52/87C54/87C58,Philips的P87C52/P87C54/P87C58就可以3.如果要用到扩展的专用特殊功能寄存器,直接对该地址单元设置就行了,当然先声明特殊功能寄存了

器的地址较好

编程烧录器:

我们有: STC12C5410AD 系列 ISP 经济型下载编程工具(人民币50元,可申请免费样品)

注意:有专门下载28PIN/20PIN的不同演示板,

28PIN是28PIN的演示板,20PIN是20PIN的演示板

仿真器:如您已有老的仿真器,可仿真普通8052的基本功能

STC12C5410AD系列单片机扩展功能如它仿不了

可以用 STC-ISP 直接下载用户程序看运行结果就可以了

无须添加新的设备

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)163

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243   STC12C5410AD系列单片机ISP编程原理 使用说明

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)164

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

STC 12C5410AD 系列单片机在系统可编程的使用

---将用户代码下载进单片机内部,不用编程器

STC12C5410AD系列单片机具有在系统可编程(ISP)特性,ISP 的好处是:省去购买通用编程器,单片机在用户系统上即可下载/烧录用户程序,而无须将单片机从已生产好的产品上拆下,再用通用编程器将程序代码烧录进单片机内部。[www.61k.com)有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市场的速度,减小了新产品由于软件缺陷带来的风险。由于可以在用户的目标系统上将程序直接下载进单片机看运行结果对错,故无须仿真器。

STC12系列单片机内部固化有ISP系统引导固件,配合PC端的控制程序即可将用户的程序代码下载进单片机内部,故无须编程器(速度比通用编程器快,几秒一片)。

如何获得及使用STC提供的ISP下载工具(STC-ISP.exe软件):(1). 获得STC提供的ISP下载工具(软件)

登陆 www.MCU-Memory.com 网站,从STC半导体专栏下载PC(电脑)端的ISP程序,然后  将其自解压,再安装即可(执行setup.exe),注意随时更新软件。(2). 使用STC-ISP下载工具(软件),请随时更新,目前已到Ver3.1版本以上,支持*.bin,

*.hex(Intel 16 进制格式)文件。

请随时注意升级PC(电脑)端的ISP程序。

(3).STC12C5410AD系列单片机出厂时就已完全加密。需要单片机内部的电放光后上电复位(冷起动)才运行系统ISP程序,如从 P3.0/RxD 检测到合法的下载命令流就下载用户程序,如检测不到就系统复位到用户程序区。

(4).如果用户板上P3.0/RxD,P3.1/Txd接了RS-485等电路,下载时需要将其断开。用户系统接了RS-485等通信电路,推荐在选项中选择下次冷启动时需P1.0/P1.1=0/0才判是否下载程序。

stc89c52中文资料 STC89C52RC_中文指南_

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)165

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

要调几个文件进缓冲区,如EEPROM里的

数据文件需要和应用程序文件一次同时

ISP下载编程进单片机:

除每次均要指定缓冲区起始地址外,第

二次及以后不能清缓冲区

如可将要写入EEPROM区的数据文件调入

从缓冲区2000H/8000H开始的地方,并不

清缓冲区,然后和应用程序一起写入

用户根据实际使用效果选择限制最高通信

波特率,如57600,38400,19200

如P3.0/P3.1外接RS-485/RS-232等通

信电路,建议选择如P1.0/P1.1不同时等

于0/0,则直接运行用户程序,跨过系统

ISP引导程序

新的设置冷启动(彻底停电后再上电)后

才生效开发调试时,可考虑选择此项大批量生产时使用

Step1/步骤1:选择你所使用的单片机型号,如STC12C5410,STC12C5410AD等

Step2/步骤2:打开文件,要烧录用户程序,必须调入用户的程序代码(*.bin, *.hex)

Step3/步骤3:选择串行口,你所使用的电脑串口,如串行口1--COM1, 串行口2--COM2,...

有些新式笔记本电脑没有RS-232串行口,可买一条USB-RS232转接器,人民币50元左右。[www.61k.com]

有些USB-RS232转接器,不能兼容,可让宏晶帮你购买经过测试的转换器。

Step4/步骤4:选择下次冷启动后,时钟源为“内部R/C振荡器”还是“外部晶体或时钟”。

Step5/步骤5:选择“Download/下载”按钮下载用户的程序进单片机内部,可重复执行               Step5/步骤5, 也可选择“Re-Download/重复下载”按钮

下载时注意看提示,主要看是否要给单片机上电或复位, 下载速度比一般通用编程器快。

一定要先选择“Download/下载”按钮,然后再给单片机上电复位(先彻底断电),而不要

先上电,先上电,检测不到合法的下载命令流,单片机就直接跑用户程序了。

关于硬件连接:

(1). MCU/单片机  RXD(P3.0)  ---  RS-232转换器  ---  PC/电脑  TXD(COM Port Pin3)(2). MCU/单片机  TXD(P3.1)  ---  RS-232转换器  ---  PC/电脑  RXD(COM Port Pin2)(3). MCU/单片机  GND        ----------------------  PC/电脑  GND(COM Port Pin5)(4). 如果您的系统P3.0/P3.1连接到 RS-485 电路,推荐

在选项里选则“下次冷启动需要P1.0/P1.1 = 0,0才判P3.0/RxD有无合法下载命令流”

这样冷启动后如 P1.0, P1.1 不同时0,单片机直接运行用户程序,免得由于RS-485总线上        的乱码造成单片机反复判断乱码是否为合法,浪费几百mS的时间

(5). RS-232转换器可选用STC232/MAX232/SP232(4.5-5.5V),STC3232/MAX3232/SP3232(3V-5.5V).

STC232/MAX232/SP232尽量选用SOP封装(窄体),STC3232尽量选用SOP封装(窄体).

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)166

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

如用户系统没有RS-232接口,

可使用STC-ISP Ver 3.0A.PCB演示板作为编程工具

STC-ISP Ver 3.0APCB 板如焊接的是STC12C5410AD的线路,则

可完成STC12C5410AD系列单片机的ISP下载编程/烧录用户程序的功能。(www.61k.com)在STC-ISP Ver 3.0A PCB 板完成下载/烧录:

关于硬件连接:

(1.) 根据单片机的工作电压选择单片机电源电压

A.5V单片机,短接JP1的MCU-VCC, +5V电源管脚

B.3V单片机,短接JP1的MCU-VCC, 3.3V电源管脚

(2.)连接线(宏晶提供)

A.将一端有9芯连接座的插头插入PC/电脑RS-232串行接口插座用于通信

B.将同一端的USB插头插入PC/电脑USB接口用于取电

C.将只有一个USB插头的一端插入宏晶的STC-ISP Ver 3.0A PCB板USB1插座用于RS-232通

信和供电,此时USB +5V Power灯亮(D43,USB接口有电)

(3.)其他插座不需连接

(4.)SW1开关处于非按下状态,此时MCU-VCC Power灯不亮(D41), 没有给单片机通电

(5.)SW3开关

处于非按下状态,P1.0, P1.1 = 1, 1,不短接到地。

处于按下状态,P1.0, P1.1 = 0, 0,短接到地。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

如果单片机已被设成“下次冷启动P1.0/P1.1 = 0,0才判P3.0/RxD有无合法下载命令流”    就必须将SW3开关处于按下状态,让单片机的P1.0/P1.1短接到地

(6.)将单片机插进U1-Socket锁紧座,锁紧单片机,注意单片机是20-PIN,而U1-Socket锁紧座    是40-PIN,我们的设计是靠下插,靠近晶体的那一端插。

(7.)关于软件:选择“Download/下载”( 必须在给单片机上电之前让PC先发一串合法下载命令)(8.)按下SW1开关,给单片机上电复位, 此时MCU-VCC Power灯亮(D41)

此时STC 单片机进入ISP 模式(STC12C5410AD系列冷启动进入ISP)

(9.)下载成功后,再按SW1开关,此时SW1开关处于非按下状态,MCU-VCC Power灯不亮(D41),

给单片机断电,取下单片机。

利用STC-ISP Ver 3.0A PCB 板进行RS-232转换

单片机在用户自己的板上完成下载/烧录:

1.U1-Socket锁紧座不得插入单片机

2.将用户系统上的电源(MCU-VCC,GND)及单片机的P3.0/RXD,P3.1/TXD接入转换板CN2插座   这样用户系统上的单片机就具备了与PC/电脑进行通信的能力

3. 将用户系统的单片机的P1.0,P1.1接入转换板CN2插座(如果需要的话)

4.如须P1.0, P1.1 = 0, 0,短接到地,可在用户系统上将其短接到地,或将P1.0/P1.1也从       用户系统上引到STC-ISP Ver3.0A PCB 板上,将SW3开关按下,则P1.0/P1.1=0,0。

5.关于软件:选择“Download/下载”

6.给单片机系统上电复位(注意是从用户系统自供电,不要从电脑USB取电,电脑USB座不插)

7.下载程序时,如用户板有外部看门狗电路,不得启动,单片机必须有正确的复位,但不能在ISP

下载程序时被外部看门狗复位,如有,可将外部看门狗电路WDI端/或WDO端浮空

8. 如有RS-485晶片连到P3.0/Rxd,P3.1/Txd,或其他线路,在下载时应将其断开。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)167

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243              内部数据RAM存储器

内部数据RAM存储器

STC12C5410AD系列单片机内部有256字节常规的RAM,256字节的扩展RAM

器件的内部常规数据存储器由3部分组成:

1.低128字节RAM(00H~7FH),可直接和间接寻址,用“MOV”和“MOV @Ri”

2.高128字节RAM(80H~FFH),间接寻址,用“MOV @Ri”

3.特殊功能寄存器(80H~FFH),只可直接寻址, 用“MOV”

由于高128字节RAM和SFR(特殊功能寄存器)占用相同的地址,因此高128字节RAM空间必须用间接寻址(MOV @Ri)来区分。[www.61k.com]特殊功能寄存器(80H~FFH),只可直接寻址(用“MOV”)来区分。尽管RAM和SFR的地址相同,但它们在物理上是独立的。

扩展数据RAM

STC12C5410AD系列有256字节的扩展RAM,称其为XRAM(附加RAM),用“MOVX”寻址。扩展的256字节RAM(0000H~00FFH),通过MOVX

stc89c52中文资料 STC89C52RC_中文指南_

指令间接寻址。

使用“MOVX  @DPTR” / “MOVX  @Ri”

C语言中,可使用xdata声明存储类型即可,如:

unsigned char xdata  i = 0;

FFH(直接寻址)

特殊功能寄存器

(SFR)00FFH

80H

7FH80H扩展RAM256字节

(外部间接寻址)0000H

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)168

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243        内部常规256字节RAM间接寻址测试程序TEST_CONSTEQU

;TEST_RAMEQU

ORG0000H5AH03H

LJMPINITIAL

ORG

INITIAL:0050H

MOV

MOV

MOV

MOV

MOV

CLR

MOVR0,R1,R2,A,AA,#253#3H#0FFHR2TEST_ALL_RAM:TEST_ONE_RAM:@R1,A@R1

2H,ERROR_DISPLAYCJNEA,

DJNZR2,

INCR1

DJNZR0,

OK_DISPLAY:

MOV

Wait1:P1,TEST_ONE_RAMTEST_ALL_RAM#11111110B

SJMPWait1

ERROR_DISPLAY:

MOV

MOV

Wait2:A,P1,R1A

SJMPWait2

END

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)169

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

串行外围接口(SPI)

STC12C5410AD系列单片机还提供另一种高速串行通信接口——SPI 接口。[www.61k.com)SPI是一种全双工、高速、同步的通信总线,有两种操作模式:主模式和从模式。在主模式中支持高达3Mbit/s 的速率(工作频率为12MHz时,如果CPU主频采用20MHz到36MHz,则可更高,从模式时速度无法太快,Fosc/8以内较好),还具有传输完成标志和写冲突标志保护。

STC12C5410AD系列 1T 8051单片机SPI功能模块特殊功能寄存器  SPI Management SFRs

MnemonicAddSPCTLSPSTATSPDAT

85h84h86h

Name

SPI Control RegisterSPI Status RegisterSPI Data Register

7SSIGSPIF

6 SPEN WCOL

5 DORD -

4MSTR -

3 -

2 -

1-

0-

Reset value00xx,xxxx0000,0000

MISOP1.6MOSIP1.5SPICLKP1.7P1.4

CPOLCPHASPR1SPR00000,0000

SPI 接口有4SS/P1.4。

● SPICLK, MOSI 和MISO 通常和两个或更多SPI 器件连接在一起。数据通过MOSI由主机传送到从机,通过MISO

由从机传送到主机。SPICLK 信号在主模式时为输出,在从模式时为输入。如果SPI 系统被禁止,即SPEN  (SPCTL.6)=0(复位值),这些管脚都可作为I/O 口使用。

● /SS为从机选择管脚。在典型的配置中,SPI主机使用I/O 口选择一个SPI器件作为当前的从机。  SPI从器件通过其/SS脚确定是否被选择。如果满足下面的条件之一,/SS就被忽略:  -如果SPI系统被禁止,即SPEN(SPCTL.6)=0(复位值)

-如果SPI配置为主机,即MSTR(SPCTL.4)=1,并且P1.4 配置为输出(通过P1M0.4 和P1M1.4)  -如果/SS脚被忽略,即SSIG(SPCTL.7)位=1,该脚配置用于I/O口功能。

注:即使SPI被配置为主机(MSTR=1),它仍然可以通过拉低/SS 脚配置为从机(如果P1.4 配置为输入且SSIG=0)。要使能该特性,应当置位SPIF(SPSTAT.7)。   典型连接如SPI图1~3所示。

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)170

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

SPI 控制寄存器的位分配(SPCTL-地址:85h)

位符号复位

7SSIG

6SPEN0

5DORD0

4MSTR

3CPOL

2CPHA

1SPR10

0SPR00

SPI 控制寄存器的位描述(SPCTL – 地址:85h)

位0

符号SPR0

SPR1, SPR0:

0        0       -CPU_CLK/4  0        1       -CPU_CLK/16  1        0       -CPU_CLK/64  1        1       -CPU_CLK/128

SPI 时钟相位选择(见SPI图4~图7):1:数据在SPICLK 的前时钟沿驱动,并在后时钟沿采样。[www.61k.com]

0:数据在/SS 为低(SSIG=00)时被驱动,在SPICLK 的后时钟沿被改变,并在前时钟沿被采样。(注:SSIG=1 时的操作未定义)

SPI 时钟极性(见SPI图4~图7):1:SPICLK 空闲时为高电平。SPICLK 的前时钟沿为下降沿而后沿为上升沿。0:SPICLK 空闲时为低电平。SPICLK 的前时钟沿为上升沿而后沿为下降沿。主/从模式选择(见SPI 主从选择表)。

SPI 数据顺序:

1:数据字的LSB(最低位) 最先发送;0:数据字的MSB(最高位) 最先发送。SPI 使能。1:SPI 使能。

0:SPI 被禁止,所有SPI 管脚都作为I/O 口使用。

/SS 忽略。

1:MSTR(位4)确定器件为主机还是从机。

0:/SS 脚用于确定器件为主机还是从机。/SS 脚可作为I/O 口使用(见SPI 主从选择表)。

描 述

SPR0/SPR1是SPI 时钟速率选择控制位。

1SPR1

2CPHA

345

CPOLMSTRDORD

3SPEN

7SSIG

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)171

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

SPI 状态寄存器的位分配(SPSTAT – 地址:84h)

位符号复位

7SPIF0

6WCOL0

5-X

4-X

3-X

2-X

1-X

0-X

SPI 状态寄存器的位描述(SPSTAT – 地址:84h)

位7

符号SPIF

符号

SPI 传输完成标志。[www.61k.com]当一次串行传输完成时,SPIF 置位,并当ESPI

和EA 都置位时产生中断。当SPI 处于主模式且SSIG=0 时,如果/SS 为输入并被驱动为低电平,SPIF 也将置位。SPIF标志通过软件向其写入“1”清零。SPI 写冲突标志。在数据传输的过程中如果对SPI 数据寄存器SPDAT 执行写操作,WCOL 将置位。WCOL 标志通过软件向其写入“1”清零。保留

65 - 0

WCOL-

SPI 数据寄存器的位分配(SPDAT – 地址:86h)

位符号复位

7MSB0

6543210LSB

0000000

SPDAT.7 - SPDAT.0:      传输的数据位Bit7~Bit0

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)172

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

SPI图1  SPI 单主机-单从机 配置

在上图SPI图1中,从机的SSIG(SPCTL.7)为0,/SS 用于选择从机。(www.61k.com)SPI 主机可使用任何端口

(包括P1.4/SS)来驱动/SS脚。

SPI图2  SPI 双器件配置(可器件可互为主从)

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

上图SPI图2所示为两个器件互为主从的情况。当没有发生SPI操作时,两个器件都可配置为主机

(MSTR=1),将SSIG清零并将P1.4(/SS)配置为准双向模式。当其中一个器件启动传输时,它可将P1.4配置为输出并驱动为低电平,这样就强制另一个器件变为从机。

主机

从机

SPI 图3 SPI 单主机-多从机 配置

在上图SPI图3中,从机的SSIG(SPCTL.7)为0,从机通过对应的/SS 信号被选中。SPI主机可

使用任何端口(包括/SS 脚。

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

173

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

对SPI 进行配置

下表 所示为主/从模式的配置以及模式的使用和传输方向。(www.61k.com]     SPI 主从模式选择

SPEN011

SSIGX00

/SS 脚P1.4P1.401

MSTRX00

主或从模式SPI 功能禁止从机模式从机模式未被选中

MISOP1.6P1.6输出高阻

MOSIP1.5P1.5输入输入

SPICLKP1.7P1.7输入输入

备注

SPI 禁止。P1.4/P1.5/P1.6/P1.7作为普通I/O口使用

选择作为从机

未被选中。MISO 为高阻状态,以避免总线冲突P1.4/ SS 配置为输入或准双向口。SSIG 为0。如果择/SS 被驱动为低电平,则被选择作为从机。当SS 变为低电平时,MSTR将清零。

注:当/SS处于输入模式时,如被驱动为低电平且SSIG=0 时,MSTR 位自动清零。

当主机空闲时MOSI 和SPICLK 为高阻态以避免总线冲突。用户必须将SPICLK 上拉或下拉(根

据CPOL-SPCTL.3 的取值)以避免SPICLK出现悬浮状态。

作为主机激活时,MOSI 和SPICLK 为推挽输出

1001—>0从机模式输出输入输入

主(空闲)

主(激活)

11

11

P1.4P1.4

01

从主

输出输入输入

高阻高阻

输出输入输出

输出输入输出

作为从机时的额外注意事项

当CPHA=0 时,SSIG 必须为0,/SS 脚必须取反并且在每个连续的串行字节之间重新设置为高电平。如果SPDAT 寄存器在/SS有效(低电平)时执行写操作,那么将导致一个写冲突错误。CPHA=0 且SSIG=0时的操作未定义。

当CPHA=1 时,SSIG 可以置位。如果SSIG=0,/SS 脚可在连续传输之间保持低有效(即一直固定为低电平)。这种方式有时适用于具有单固定主机和单从机驱动MISO 数据线的系统。作为主机时的额外注意事项

在SPI中,传输总是由主机启动的。如果SPI使能(SPEN=1)并选择作为主机,主机对SPI 数据寄存器的写操作将启动SPI 时钟发生器和数据的传输。在数据写入SPDAT 之后的半个到一个SPI 位时间后,数据将出现在MOSI 脚。

需要注意的是,主机可以通过将对应器件的/SS 脚驱动为低电平实现与之通信。写入主机SPDAT寄存器的数据从MOSI 脚移出发送到从机的MOSI 脚。同时从机SPDAT 寄存器的数据从MISO 脚移出发送到主机的MISO 脚。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

传输完一个字节后,SPI时钟发生器停止,传输完成标志(SPIF)置位并产生一个中断(如果SPI中断使能)。主机和从机CPU 的两个移位寄存器可以看作是一个16 循环移位寄存器。当数据从主机移位传送到从机的同时,数据也以相反的方向移入。这意味着在一个移位周期中,主机和从机的数据相互交换。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)174

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

通过/SS 改变模式

如果SPEN=1, SSIG=0且MSTR=1,SPI使能为主机模式。[www.61k.com)/SS脚可配置为输入或准双向模式。这种情况下,另外一个主机可将该脚驱动为低电平,从而将该器件选择为SPI 从机并向其发送数据。   为了避免争夺总线,SPI系统执行以下动作:

1)MSTR清零并且CPU变成从机。这样SPI就变成从机。MOSI 和SPICLK强制变为输入模式,而MISO则变为输出模式。

2)SPSTAT的SPIF标志位置位。如果SPI中断已被使能,则产生SPI中断。

用户软件必须一直对MSTR位进行检测,如果该位被一个从机选择所清零而用户想继续将SPI作为主机,这时就必须重新置位MSTR,否则就进入从机模式。写冲突

SPI在发送时为单缓冲,在接收时为双缓冲。这样在前一次发送尚未完成之前,不能将新的数据写入移位寄存器。当发送过程中对数据寄存器进行写操作时,WCOL位(SPSTAT.6)将置位以指示数据冲突。在这种情况下,当前发送的数据继续发送,而新写入的数据将丢失。

当对主机或从机进行写冲突检测时,主机发生写冲突的情况是很罕见的,因为主机拥有数据传输的完全控制权。但从机有可能发生写冲突,因为当主机启动传输时,从机无法进行控制。

接收数据时,接收到的数据传送到一个并行读数据缓冲区,这样将释放移位寄存器以进行下一个数据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据,否则,前一个接收数据将丢失。

WCOL可通过软件向其写入“1”清零。数据模式

时钟相位位(CPHA)允许用户设置采样和改变数据的时钟边沿。时钟极性位CPOL允许用户设置时钟极性。 SPI图

stc89c52中文资料 STC89C52RC_中文指南_

MISO(输出)SS(如果SSIG(1)

未定义

SPI 图4  SPI 从机传输格式(CPHA=0)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)175

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

(如果SSIG

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

(1)

未定义

SPI 图5  SPI 从机传输格式(CPHA=1)

MOSI(输出)(如果SSIG时钟周期12345678

MOSI(输出)MISO(输入)(如果SSIG SPI 图7  SPI 主机传输格式(CPHA=1)

SPI时钟预分频器选择

SPI时钟预分频器选择是通过SPCTL寄存器中的SPR1-SPR0 位实现的

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)176

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

用串行口扩展I/O接口

STC12Cxxxx串行口的方式0可用于I/O扩展。[www.61k.com]如果在应用系统中,串行口未被占用,那么将它用来扩展并行I/O口是一种经济、实用的方法。

在操作方式0时,串行口作同步移位寄存器,其波特率是固定的,为fosc/12(fosc为振荡器频率)。数据由RXD端(P3.0)出入,同步移位时钟由TXD端(P3.1)输出。发送、接收的是8位数据,低位在先。

一、用74LS165扩展并行输入口

下图是利用两片74LS165扩展二个8位并行输入口的接口电路图。

stc89c52中文资料 STC89C52RC_中文指南_

74LS165是8位并行置入移位寄存器。当移位/入寄存器;当S=1,且时钟禁止端(第15脚)为低电平时,允许时钟输入,这时在时钟脉冲的作用下,数据将由QA到QH方向移位。

上图中,TXD(P3.1)作为移位脉冲输出端与所有74LS165的移位脉冲输入端CP相连;RXD(P3.0)作为串行输入端与74LS165的串行输出端QH相连;P1.0用来控制74LS165的移位与置入而同相连;74LS165的时钟禁止端(15脚)接地,表示允许时钟输入。当扩展多个8位输入口时,两芯片的首尾(Q

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

与S

IN

)相连。

下面的程序是从16位扩展口读入5组数据(每组二个字节),并把它们转存到内部RAM 20H开始的单元中。

MOV

START:

MOV

CLR

R7,#05HRO,#20HP1.0

R1,#02H

SCON,#00010000BRI,WAITRI

A,SBUF@R0,A

;设置读入组数

;设置内部RAM数据区首址;并行置入数据,S/L=0;允许串行移位S/=1

;设置每组字节数,即外扩74LS165的个数;设串行方式0,允许接收,启动接收过程;未接收完一帧,循环等待;清RI标志,准备下次接收;读入数据;送至RAM缓冲区;指向下一个地址

;为读完一组数据,继续;5组数据未读完重新并行置入;对数据进行处理

SETB P1.0

MOV

RXDATA:MOVWAIT:

JNBCLRMOVMOV

INCR0

DJNZR1,RXDATADJNZR7,START……

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)177

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

上面的程序对串行接收过程采用的是查询等待的控制方式,如有必要,也可改用中断方式。(www.61k.com]从理论上讲,按上图方法扩展的输入口几乎是无限的,但扩展的越多,口的操作速度也就越慢。

二、用74LS164扩展并行输出口

74LS164是8位串入并出移位寄存器。下图是利用74LS164扩展二个8位输出口的接口电路。

stc89c52中文资料 STC89C52RC_中文指南_

当单片机串行口工作在方式0的发送状态时,串行数据由P3.0(RXD)送出,移位时钟由P3.1(TXD)送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入74LS164中。需要指出的是,由于74LS164无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场合,在74LS164的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。    下面是将RAM缓冲区30H、31H的内容串行口由74LS164并行输出的子程序。

START:

MOVMOVMOV

SEND:WAIT:

MOVMOVJNBCLRINCDJNZRET

R7,#02HR0,#30HSCON,#00HA,@R0SBUF,ATI,WAITTIR0R7,SEND

;启动串行口发送过程

;一帧数据未发送完,循环等待;取下一个数

;设置要发送的字节个数;设置地址指针;设置串行口方式0

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)178

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243附录J:          指令系统与程序设计

执行软件是微型计算机与通用数字集成电路的主要区别,也是微电子技术区别于通用电器和电子技术的根本特征。[www.61k.com]

软件是由具有一定意义的指令组成的。一台计算机所执行的指令集合就是它的指令系统。指令系统是计算机厂商定义的,它成为应用计算机必须理解和遵循的标准。每种计算机都有自己专用的指令系统。

指令常以英文名称或缩写形式作为助记符。用助记符表示的指令称为汇编语言,用汇编语言编写的程序称为汇编语言程序。

目前单片机主要使用汇编语言,指令系统的学习和应用是使用单片机的重要前提。

STC89系列单片机与MCS-51系列在软件上完全兼容,编制的汇编语言程序可运行于这两种系列单片机。也就是说,STC89系列单片机采用的也是MCS-51指令系统。本章详细介绍该指令系统及其编程方法。

1  指令格式及其符号说明

指令的表示方法称为指令格式。一条指令通常由两部分组成:操作码和操作数。操作码规定指令执行什么操作,而操作数是操作的对象。操作数可以是一个具体的数据,也可以是存储数据的地址或寄存器。指令的基本格式如下:操作码操作数(地址码、寄存器或立即数)

汇编语言编写的程序必须翻译成单片机可执行的机器码。根据机器码的长短,可分为单字节、双字节和3字节等不同长度的指令。

1. 单字节指令

指令系统中有些指令的功能很专一而明确,不需要具体指定操作数,便形成了单字节指令。单字节指令的机器码只有一个字节,操作码和操作数同在其中。例如,指令INC DPTR,功能为数据指针加1,指令码为

1010       0011A3H

有些指令的操作数在工作寄存器R0~R7中,寄存器的编码可用3位二进制数表示。例如,指令MOV A,Rn,功能是工作寄存器向累加器传输数据,指令码为

1110       1rrr

用rrr表示工作寄存器的二进制编码。对于不同的工作寄存器,单字节的机器码如下表所列。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)179

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

指令MOV A,Rn指令码

指令

MOV   A,R0

MOV   A,R1

MOV   A,R2

MOV   A,R3

MOV   A,R4

MOV   A,R5

MOV   A,R6

MOV   A,R7指令码(机器码)二进制1110   10001110   10011110   10101110   10111110   11001110   11011110   11101110   1111十六进制E8HE9HEAHEBHECHEDHEEHEFH

2. 双字节指令

双字节指令的第一字节是操作码,第二字节是操作数。[www.61k.com)例如,指令MOV A,#data,功能是将立即数传送到A,指令码为

0111      0100

立即数

例如,指令MOV A,#35H的指令码为7435H。

3. 3字节指令

3字节指令中,操作码占一字节,操作数占两字节。其中操作数既可以是数据,也可以是地址。例如,指令ANL direct,#data,功能是直接地址单元中的内容与立即数进行“与”操作,结果存于直接地址单元,指令码为

0101      0011

直接地址

立即数

例如,指令ANL 35H,#20H的机器码为533520H。

在介绍指令之前,先将指令中使用的一些符号意义作简要说明。

lRn——当前工作寄存器R0~R7,即n=0~7,在指令中表示寄存器寻址方式。

lRi——间接寻址的寄存器R0和R1,即i=0,1,在指令中表示间接寻址方式。

ldirect——8位直接地址,在指令中表示直接寻址方式,寻址范围为00H~FFH。

l#data——8位立即数,表示立即数寻址方式。

l#data16——16位立即数,表示立即数寻址方式。

laddr16——16位目的地址,只限用于LCALL和LJMP指令。

laddr11——11位目的地址,只限用于ACALL和AJMP指令。

lrel——相对转移指令中的偏移量,为8位带符号补码数,在指令中表示相对寻址方式。lDPTR——数据指针,16位。

lbit——内部数据RAM和特殊功能寄存器中的可寻址位。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)180

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243lA——表示累加器。(www.61k.com]

lACC——直接寻址方式的累加器。

lB——寄存器B。

lC——进位标志位,可作为位处理器的位累加器,也称为累加位。在指令中代表CY。l@——间址寄存器的前缀标志。

l/——加在位地址前面,表示该位状态取反。

l(X)——某个寄存器或某地址单元中的内容。

l((X))——由X间接寻址单元中的内容。

l←——箭头右边的内容传送到箭头左边的存储器单元或寄存器中,即表示数据的传送方向。l→——箭头左边的内容传送到箭头右边的存储器单元或寄存器中,即表示数据的传送方向。

2 寻址方式

指令执行是都要应用操作数。指令必须指明如何取得操作数,也必须指明程序转移目的地址。所谓寻址,就是如何指定操作数所在的单元,或者如何指定程序转移的目的地址。根据指定的方法不同,形成了不同的寻址方式。MCS-51指令系统有7种不同的寻址方式,下面分别介绍。1. 寄存器寻址方式

寄存器寻址时,指令中操作数为某一寄存器的内容。指定了寄存器,就指定了操作数。该寻址方式中,用符号名称表示寄存器。

寄存器寻址方式所使用的寄存器包括:

1) 工作寄存器R0~R7,只能寻址当前寄存器组,即由PSW中的RS1和RS0位的状态对应的当前寄存器组。

2) 部分特殊功能寄存器,例如A、AB寄存器对以及数据指针DPTR等。

例如:

INC R0;(R0)←(R0)+1

其功能是把寄存器R0的容量加1,再送回R0中。由于操作数在R0中,指定了R0,也就得到了操作数。

2. 直接寻址方式

直接寻址时,指令中操作数部分直接给出了操作数地址。例如:

MOV A,4AH;(A)←(4AH)

该指令的功能是把片内RAM 4AH单元的内容送入累加器A。指定了地址4AH,也就的到了操作数。    直接寻址中的操作数以存储单元形式出现,因此直接寻址方式只能用8位二进制数表示的地址,寻址范围只限于内部RAM,即:

1) 片内RAM低128单元,在指令中直接以单元地址形式给出。

2)特殊功能寄存器。特殊功能寄存器除了用单元地址形式给出外,还可以用寄存器的名称符号表示。应当指出,直接寻址方式是访问特殊功能寄存器的主要方法。例如:

MOV A,P1  ;(A)←(P1)

MOV A,90H ;(A)←(90H)

由于SFR P1的地址为90H,两条指令本质上是一样的,有相同的机器码,都是直接寻址方式。

3. 寄存器间接寻址方式

寄存器间接寻址时,指令中给出的寄存器内容为操作数地址,而不是操作数本身,即寄存器

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)181

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243为地址指针。[www.61k.com]

为区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址中,应在寄存器的名称前加前缀@。例如:

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV  R1,#60H

MOV  A,@R1

该指令的功能是将60H单元的内容送入累加器A。

2) 外部数据RAM空间的256个单元。例如:

MOVX  A,@R1

由R1中内容指定的外RAM单元内容送入累加器A。

用DPTR作间址寄存器,其形式为@DPTR,可寻址外部RAM 64 KB(0000H~FFFH)。例如:    MOVX  @DPTR,A

将累加器的内容传送到由DPTR内容指定的片外RAM16位地址单元。

堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针(SP)作间址寄存器的间接寻址方式,只不过SP不出现在堆栈操作指令中。

4. 立即寻址方式

立即寻址方式是由指令直接给定操作数的方式。例如:

MOV  A,#48H;(A)← #48H

其中#作为立即数的标志符。指令的功能是将数据48H送入累加器A。

除8位立即数外,MCS-51指令系统中还有一条16位立即数传送指令,以#data16

表示16位立即数。该指令为

MOV  DPTR,#data16

其功能是将16位立即数送入数据指针DPTR。例如:

MOV  DPTR,#1234H

其功能是将12H送入DPH,34H送入DPL。

5. 变址寻址方式

变址寻址方式是以程序计数器PC或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,这两者内容之和为有效地址。例如:假定指令执行前(A)= 54H,(DPTR)= 3F21H,执行指令

MOVC  A,@A+DPTR

其功能是将程序存储器3F75H单元的内容读入累加器A。

这类寻址方式特别适用于查表。DPTR可指向64KB存储空间;@A+PC指向以PC当前值为起始地址的256个字节单元。

对变址寻址方式说明如下:

1) 变址寻址方式只能对程序存储器寻址,或者说它是专门针对程序存储器的寻址方式。    2) 变址寻址指令只有3条,即

MOVC  A,@A+DPTR

MOVC  A,@A+PC

JMP      @A+DPTR

前两条是程序存储器指令,最后一条是无条件转移指令。

3) 变址寻址方式中的A、DPTR以及PC中的内容为无符号数。

4) 尽管变址寻址方式比较复杂,但变址寻址的指令却都是单字节指令。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)182

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442436. 位寻址方式

位寻址时,操作数是二进制数表示的地址,其位地址出现在指令中。(www.61k.com]例如:

CLR  bit

该指令使地址为bit的位单元清0。

位寻址的寻址范围如下:

1) 片内RAM中的位寻址区。 其单元地址为20H~2FH,共16个单元128位,位地址为

00H~7FH。对这128位的寻址可使用直接地址表示。

2) 特殊功能寄存器的可寻址位。对这些寻址位在指令中常用以下几种表示方法:

l直接使用位地址,例如PSW中的位5地址为D5H;

l位名称表示法,例如PSW的位5是F0标志位,可使用F0表示;

l特殊功能寄存器符号名称加位数的表示方法,例如PSW的位5可表示成PSW.5。

7. 相对寻址方式

前面介绍的6种寻址方式主要解决操作数的给出问题,而相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。

相对寻址是以PC的相对值为基地址,加上指令中所给定的偏移量,形成有效转换地址。偏移量是带符号的8位二进制数,以补码的形式出现。因此,程序的转移范围为+127~-128。转移目的地址可用如下公式表示:

目的地址=转移指令所在地址+转移指令字节数+rel

例如:

SJMP  rel;(PC)←(PC)+ 2 + rel

执行这条指令时,程序转移到指令PC值加2再加rel的方向地址处。其中,2为该指令的字节长度,rel以8位带符号的补码形式出现。

3 指令分类介绍

MCS-51指令系统共有111条指令,分为5大类:

l数据传送类指令(29条);

l算术运算类指令(24条);

l逻辑运算及移位类指令(24条);

l控制转移类指令(17条);

l位操作类指令(17条)。

1 数据传送类指令

数据传送操作属于复制性质,而不是搬家性质。一般传送类指令的助记符号为MOV,通用格式为                  MOV <目的操作数>,<源操作数>

传送指令中有从右向左传送数据的约定,即指令的右边操作数为源操作数,表达的是数据的来源,而左边的操作数为目的操作数,表达的是传送数据的目的地址。

源操作数可以是:累加器A、工作寄存器Rn、直接地址direct、间址寄存器和立即数。目

的操作数可以是:累加器A、工作寄存器Rn、直接地址direct和间址寄存器。两者只差一个立即数。    在数据传送操作中,除了奇偶标志P外,一般不影响程序状态字PSW(指令直接访问PSW除外)。1. 一般传送指令

(1) 以累加器A为目的操作数的传送指令

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)183

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV  A,RnMOV  A,direct

MOV  A,@RiMOV  A,#vdata

;(A)←(Rn);(A)←(direct);(A)←((Ri));(A)←#data

(2) 以工作寄存器为目的操作数的传送指令

MOV  Rn,AMOV  Rn,directMOV  Rn,#data

;(Rn)←(A);(Rn)←(direct)

;(A)←#data

(3) 以直接地址为目的操作数的传送指令

MOV  direct,AMOV  direct,Rn

;(direct)←(A);(direct)←(Rn)

MOV  direct,@Ri;(direct)←(Ri)

MOV  direct1,direct2;(direct1)←(direct2)

MOV  direct,#data; (direct)←#data   (4) 以寄存器间接地址为目的操作数的传送指令

MOV  @Ri,A

;((Ri))←(A)

MOV  @Ri,direct;((Ri))←(direct)

MOV  @Ri,#data;((Ri))←#data

例1 把25H和10H数据分别送到片内RAM20H和25H单元;把CAH送P1口;将P1口内容

送P2口;将RAM20H单元内容送以R0间址的存储单元。[www.61k.com)

MOV  20H,#25HMOV  25H,#10HMOV  P1,#0CAHMOV  P2,P1MOV  @R0,20H

;(20H)←#25H;(25H)←#10H;(P1)←#0CAH;(P2)←P1;((R0))←(20H)

操作数的寻址方式如下表所列。

例1操作数寻址方式

指令MOV  20H,#25HMOV  25H,#10HMOV  P1,#0CAHMOV P2,P1MOV  @R0,20H

目的操作数直接寻址直接寻址直接寻址直接寻址间接寻址

源操作数立即寻址立即寻址立即寻址直接寻址直接寻址

2. 16位地址指针传送指令

MOV  DPTR,#data16;(DPTR)←#data16

这条指令的功能是将16位常数送入数据指针DPTR。这是MCS-51指令系统中惟一一条16位数

据传送指令。DPTR由DPH和DPL组成。该指令将高8位立即数送入DPH,低8位立即数送入DPL。例如:

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

184

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    MOV  DPTR,#1992H

也可写成两条8位传送指令:

MOV  DPH,#19H

MOV  DPL,#92H;(DPH)←#19H,(DPL)←#92H

3. 栈操作指令

栈操作指令有进栈PUSH和出栈POP两条指令:

PUSH  direct;(SP)←(SP)+1;((SP))←(direct)

POP  direct;(direct)←((SP));(SP)←(SP)-1

栈操作指令的操作数有两种寻址方式:SP间接寻址(隐含在指令中)和直接寻址方式。(www.61k.com]例如:

PUSH  B;B为直接寻址方式

PUSH  DPH;DPH为直接寻址方式

对于工作寄存器的栈操作,只能使用Rn的当前直接地址,而不能用Rn名称,因为栈操作指

令不能区别Rn的当前组别。如果Rn工作在组1时,R1的直接地址为09H,对R1的直接地址为09H,对R1的栈操作应写成:PUSH 09H或POP 09H。

4. 累加器A数据交换指令

(1) 字节交换指令

XCH  A,Rn

XCH  A,direct

XCH  A,@Ri←;(A) →(Rn)←;(A)  (direct)→←;(A) (@Ri))→(

该指令的功能是将A与源操作数内容互相交换。

例2 设(A)= 92H,(R0)= 20H,(20H)= 12H,执行指令XCH A,@R0后,则(A)=12H,(20H)= 92H。

(2) 半字节交换指令

←    XCHD  A,@Ri;(A)0~3 (Ri))0~3→(

这条指令的功能是将A中的低4位与Ri间址单元内容的低4位交换,各自的高4位不变。

例3 设A中的内容为58H,(R0)= 20H,片内RAM 20H单元的内容为65H,执行XCHDA,@R0后,则A的内容为55H,片内RAM 20H单元内容为68H。

(3) 累加器A高4位与低4位相互交换指令

←    SWAP  A;(A)0~3 →(A)4~7

例如,设A中的内容为ABH,执行上述指令后,A中的内容就变为BAH。

5. 累加器A与外部RAM传送指令

MOVX  A, @Ri

MOVX  A, @DPTR

MOVX  @Ri,A

MOVX  @DPTR,A;(A)←((Ri));(A)←((DPTR));((Ri))←(A);((DPTR))←(A)

单片机与外部RAM进行数据交换时,只能通过累加器A。采用R0和R1作间址寄存器时,在给定P2情况下,可寻址外RAM的256个单元;采用DPTR作间址寄存器时,可寻址外RAM的64KB空间。

6. 累加器A与程序存储器传送指令

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)185

stc89c52中文资料 STC89C52RC_中文指南_

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243    MOVC  A, @A+DPTR;(A)←((A)+(DPTR))

MOVC  A, @A+PC;(A)←((A)+(PC))

上述两条适龄以DPTR或PC作为基址寄存器,A中的内容为8位无符号数(A称为变址寄存

器),将基址寄存器内容与A中的内容相加,得到一个16位地址,将该地址指出的程序存储器单元的内容送入累加器A。(www.61k.com)

例4  程序存储器中有一字形表的首地址为0198H,若要调用表中第一字符,则可用下列指令:

MOV  DPTR, #0198H

MOV  A, #00H;设置地址指针;设置变形首址

MOVC  A, @A+DPTR;寻找字形码

MOVX  @R0, A;字形码送外字形口

例5  根据累加器A的内容(0~3)找出由伪令DB所定义的4个字符中的一个。

START:INC A

MOVC A,@A+PC

RET

DB29H

DB0A2H

DB92H

DB45H

DB是伪指令,功能是将右边的单字节数据存入其左边标号地址单元内。如果DB左边没有标号,则DB伪指令的右边字节数据在DB指令的当前地址连续存放。

该子程序在MOVC指令前面有一条INC A指令,其作用是跳过表格中的RET指令。如果指令MOVC所在地址与表格首地址由若干字节隔开,就需要在累加器A中加上相应的数目。本例中A的取值限定在0~3。在调用上述子程序时,若(A)= 02H,则在执行完这段程序后,A中的内容为92H。    PC的当前值是指读取“MOVC A,@A+PC”后的PC值,即该指令下面的指令所对应的地址。由于“MOVC A,@A+PC”为单字节指令,将该指令所在地址加1,即为PC当前值指向指令RET所在地址。;(A)←(A)+1,单字节指令;(PC)←(PC)+1,(A)←((A)+(PC)),单字节指令;单字节指令

2 算术运算类指令

MCS-51指令系统具有较强的加、减、乘、除四则运算指令,但只有8位数据运算指令,没有16位数据运算指令。

1. 加法类指令

(1) 加法指令

ADD

ADD

ADDA,RnA,directA,@Ri;(A)←(A)+(Rn);(A)←(A)+(direct);(A)←(A)+((Ri))

ADDA,#data;(A)←(A)+#data

上述指令的功能是将累加器A中的内容与源操作数相加,结果存于A中。

当相加结果的第3位和第7位有进位时,分别将AC和CY置1,否则清0。

无符号数相加后,若CY=1,表示溢出;CY=0,表示无溢出。

对于带符号数相加结果的溢出,取决于第7位和第6位。若第7位有进位而第6位没进位,或第7位没进位而第6位有进位,则OV=1;若第7位和第6位都有进位,或都没进位,则OV=0。OV=1表示两个正数相加而和变为负数,或两个负数相加而和变为正数的错误结果。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)186

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243例如:(A)=0C2H,(R0)=0A9H,执行ADD A,R0指令,过程表示为

1100 0010

+)   1010 1001

10110 1011

运算结果(A)=6BH,(AC)=0,(CY)=1,(OV)=1。(www.61k.com]若0C2H和0A9H是两个无符号数,则结果是正确的;若0C2H和0A9H是两个带符号的数,由于有溢出,则表明结果是错误的,因为两个负数相加的结果不可能的到正数。

例6  片内RAM 40H和41H单元分别放两个加数,相加结果存放在41H和40H单元。

编制程序如下:

MOVR0,#40H;设置地址指针

MOV

INC

ADD

DEC

MOV

INC

JC

MOV

RET

LOOP:MOV@R0,#00H;存放和的高字节

RET

(2) 带进位的加法指令

ADDCA,Rn

ADDCA,direct

ADDCA,@Ri

ADDCA,#data;(A)←(A)+(Rn)+(CY);(A)←(A)+(direct)+(CY);(A)←(A)+((Ri))+(CY);(A)←(A)+#data+(CY)A, @R0R0A, @R0R0@R0,AR0LOOP;取第一个加数;修改地址指针;两数相加;修改地址指针;存放和的低字节;修改地址指针;有进位则转@R0,#00H;存放和的高字节

上述4条指令的操作数除了需要加上进位CY外,其余与ADD的4条指令的操作相同。

例7 设A中的内容为C3H,R0的内容为AAH,CY=1,执行指令ADDC A,R0的过程为

11000011

10101010

+)   1

101101110

结果:A中的内容为6EH,(AC)=0,(CY)=1,(OV)=1。

(3) 加1指令

INC

INC

INC

INC

INCARndirect@RiDPTR;(A)←(A)+1;(Rn)←(Rn)+1;(direct)←(direct)+1;((Ri))←((Ri))+1;(DPTR)←(DPTR)+1

INC指令是把指定的单元内容加1,结果仍存原单元中。加1指令除影响奇偶标志P外,运算

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

结果不影响其他标志位。

加1指令为,当目的操作数是P0~P3口时,数据来自端口锁存器(即为SFR),结果仍写回端

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)187

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

口锁存器。(www.61k.com)这类以端口为目的操作数的指令被称为“读-修改-写”指令。

例8  设DPTR的内容为12FEH,执行下列指令:

INCDPTR;(DPH)←12H,(DPL)←FFHINC

DPTR

;(DPH)←13H,(DPL)←00H

INCDPTR;(DPH)←13H,(DPL)←01H(4) 二-十进制调整指令

DAA

这是一条专用指令,用于对BCD码十进制加法运算的结果进行修正。MCS-51指令系列系统中没有十进制(BCD)的加法指令,只能借助于二进制加法指令。然而,二进制数的加法用于十进制加法运算时,有时会产生错误结果。例如:

1) 6+3=92) 8+7=15

0110+)0011

1001

1000+)0111

1111

3) 8+9=17

1000+)1001   10001

其中:1)的运算是正确的,因为9的BCD码就是1001;2)的运算结果是不正确的,因为BCD码没有1111;3)的运算结果也是错误的,因为运算结果是11,而不是17。

出错的原因在于,BCD码是4位的二进制编码,而4位二进制编码共有16个编码,但BCD

码只用了其中的10个,剩下的6个没有用。通常把这6个没有用的编码(1010,1011,1100,1101,1110,1111)称为无效码。

在BCD码的加法运算中,凡是结果已进入或跳过无效编码区时,其结果都是错误的。相加的结果大于9,说明已进入无效编码区;相加的结果有进位,说明已跳过无效编码区。但不管是哪一种出错情况,相加结果都比正确值小6。出错是由6个无效编码造成的。

为此,对BCD码运算结果进行“加6”调整,才能得到正确的结果。“加6”的条件是:1) (A)3~0 >9或(AC)=1;2) (A)7~4 >9或(CY)=1。十进制调整指令不影响溢出标志。

例9 设累加器A的内容为1000 1000B(即 BCD码88),工作寄存器R5的内容为1001 1001B(即 BCD码99),(CY)=1。执行下列指令:

ADDCA,R5

DAA

第一条加法指令执行后,A中的内容为0010 0010B;(CY)=1,(AC)=1。然后执行十进制调整指令DA A。因为(CY)=1,(AC)=1,所以高4位和低4位均自动加6调整,即

(A)=1000 1000   (R5)=1001 1001+)

10010 0010调整+)   0110 0110

1 1000 1000

BCD122BCD66BCD188BCD99

BCD88

以上所讲的十进制调整的原理和方法,在具体操作时是通过片内硬件逻辑电路实现的。例10 设一个加数存于40H和41H单元,另一个加数存于42H和43H单元,和存于40H和41H单元。4位BCD码的加法程序如下(假定相加的结果仍为4位BCD码):MOVR0,#40H;R0指向加数低字节

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)188

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MOV

MOV

ADD

DA

MOV

INC

INC

MOV

DA

MOV

RETR1,#42HA,@R0A,@R1A@R0,AR0R1A,@R0;R1指向另一个加数低字节;个位、十位数相加;十进制调整;存低位和于40H单元;指针指向百位、千位数ADDCA,@R1A@R0,A;百位、千位数相加;存高位和于41H单元

2. 减法类指令

(1) 带借位减法指令

SUBBA,Rn

SUBBA,direct

SUBBA,@Ri

SUBBA,#data;(A)←(A)—(Rn)—(CY);(A)←(A)—(direct)—(CY);(A)←(A)—((Ri))—(CY);(A)←(A)—#data—(CY)

如果第7位借位,则(CY)=1,否则(CY)=0;若第3位有借位,则(AC)=1,

否则(AC)=0;溢出标志OV用于带符号的整数减法,若第7位和第6位中只有一位有借位,而另一位没有借位,则(OV)=1。(www.61k.com)(OV)=1表示一个正数减去一个负数结果为负数,或一个负数减去一个正数为正数的错误结果。当无符号数运算时,溢出标志无意义。

例11 设累加器A中的内容为0ECH,寄存器R5中的内容为75H,(CY)=1,执行指令

SUBB A,R5,其运算操作过程为

1110 1100

-)

-)0111 01010111 0111  1=(CY)

0111 0110

结果:(A)=76H,(CY)=0,(AC)=0(OV)=1。

(2) 减1指令

DEC

DEC

DEC

DECARndirect@Ri;(A)←(A)-1;(Rn)←(Rn)-1;(direct)←(direct)-1;((Ri))←((Ri))-1

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

减1指令的功能是指令单元的内容减1,结果存于原单元中。除了标志P外,本指令不影响其他标志位。

当减1指令的目的操作数是P0~P3端口时,该指令属于“读-修改-写”指令,即将端口

数据读出,减1,又送回原端口。

3. 乘法和除法指令

(1) 乘法指令

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)189

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MULAB;(B15~8 A7~0)←(A)×(A)

将A和B的无符号数相乘,16位乘积的低8位存于A,高8位存于B。[www.61k.com)乘法指令影响3个标

志位:(CY)=0;若(B)=0,则(OV)=0,若若(B)≠0,则(OV)=1;P标志仍按A中的内容设置。

(2) 除法指令

DIVAB;(A)←商,(B)←余数

将A中的8位无符号数除以B中的8为2无符号数,商存于A,余数存于B。

DIV操作影响3个标志位:(CY)=0;(B)=0(即非法)时(OV)=1,表明除法没有意义,

而其他情况下(OV)=0;P标志仍取决于A的内容。

3  逻辑运算及移位类指令

MCS-51指令系统能对位和字节操作数进行基本的逻辑运算。下面介绍字节操作数的逻辑运算,有关位操作将在后面介绍。

1.逻辑“与”运算指令

ANL

ANL

ANL

ANL

ANL

ANLA,RnA,directA,@RiA,#datadirect,Adirect,#data;(A)←(A)∧(Rn);(A)←(A)∧(direct);(A)←(A)∧((Ri));(A)←(A)∧#data;(direct)←(direct)∧(A);(direct)←(direct)∧#data

(A)=1010 1101

∧)(R4)=0110 0101

(A)=0010 0101例12  已知(A)=1010 1101B,(R4)=0110 0101B。执行指令ANL A,R4的过程为

2.逻辑“或”运算指令

ORL

ORL

ORL

ORL

ORL

ORLA,RnA,directA,@RiA,#datadirect,Adirect,#data;(A)←(A)∨(Rn);(A)←(A)∨(direct);(A)←(A)∨((Ri));(A)←(A)∨#data;(direct)←(direct)∨(A);(direct)←(direct)∨#data

例13  将累加器A的高5位送到P1口的高5位,而P1口的低3位保持不变。程序如下:

MOVR2,A;暂存A的内容

ANL

ANL

ORL

MOVA,#0F8HP1,#07HP1,AA,R2;取A的高5位;取P1的低3位;组合P1口内容;恢复A的内容

3.逻辑“异或”指令

“异或”操作也是按位进行的。当两个操作数相同时,结果为0;不同时,结果为1。运算符号为⊕。

XRLA,Rn;(A)←(A)⊕(Rn)

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)190

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

XRL

XRL

XRL

XRLA,directA,@RiA,#datadirect,A;(A)←(A)⊕(direct);(A)←(A)⊕((Ri));(A)←(A)⊕#data;(direct)←(direct)⊕(A)

XRLdirect,#data;(direct)←(direct)⊕#data

使用“异或”指令可判别两个数是否相等。(www.61k.com]若相等,则结果为全0。利用本指令可对目的操作数的某些位取反或保留:用1去“异或”的位,则取反;用0去“异或”的位,则保留。

在MCS-51指令系统中的逻辑“与”、“或”、“异或”运算时,当目的操作数为P0~P3

端口时,指令属于“读-修改-写”指令。

4. 累加器清0及取反指令

CLR

CLRAA;(A)←#00H;(A)←(A)

MCS-51指令系统没有“求补”指令,若需要进行“求补”运算,可用“取反加1”运

算规则实现。

5. 移位指令

MCS-51指令系统的移位操作只对累加器A进行,有左、右小循环和左、右大循环4种:左小循环

右小循环

左大循环

右大循环RLRRRLCRRCAAAA

以上4条指令的操作过程,如下图所示。

stc89c52中文资料 STC89C52RC_中文指南_

stc89c52中文资料 STC89C52RC_中文指南_

RLA

stc89c52中文资料 STC89C52RC_中文指南_

RLCA

stc89c52中文资料 STC89C52RC_中文指南_

RRA

RRCA

移位指令示意图

4  控制转移类类指令

程序的顺序执行是靠PC自动加1实现的。要改变程序的执行顺序,实现分支转向,应通过

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)191

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

强迫改变PC值的方法来实现。(www.61k.com)这就是控制转移类指令的基本功能。

共有两类转移:无条件转移和有条件转移。

1. 无条件转移指令

(1) 长转移指令LJMPaddr16

;(PC)←addr16

这是一条3字节指令,指令执行后把16位地址(addr16)送入PC,从而实现了程序的转移。因为转移范围大,可达64KB,故称为“长转移”。

(2) 绝对转移指令

LJMPaddr11;(PC)←(PC)+2,(PC)10~0←addr11

AJMP指令提供11位地址去替换PC的低11位地址内容,形成新的PC值,即转移目的地址。AJMP是一条双字节指令,指令的格式为

第一字节第二字节

A10A7

A9A6

A8A5

0A4

0A3

0A2

0A1

1A0

指令提供的11位地址中,A7~A0在第二字节,A10~A8则占据第一字节的高3位,而指令

操作码只占第一字节的低5位(00001)。AJMP指令的功能是构造程序转移目的地址,实现程序的转移。其构造新地址的方法是:以指令提供的11位地址(A10~A0)去替换PC的低11位,形成新的PC值,即转移目的地址。但要注意,被替换的PC值是AJMP指令的地址加2的PC值,即指向AJMP下条指令的PC值,称为PC当前值。例如,在程序存储器的2070H单元存放一条绝对转移指令:

2070H

AJMP

NEWAD

标号地址NEWAD的低11位地址为16AH=001 0110 1010B,构成的指令代码为216AH,即

00

01

11

00

01

00

01

10

程序计数器PC加2的内容为:0010 0000 0111 0010B=2072H,以11位绝对地址(16AH)代替PC中的低11位,形成的转移目的地址为:0010 0001 0110 1010B=216AH。

addr11是无符号整数,最小值为000H,最大值为7FFH,因此绝对转移指令所能转移的最大范围是2KB。对于“2070H AJMP NEWAD”指令,其转移范围是2000H~27FFH。

(3) 短转移指令SJMPrel

SJMP是相对寻址方式的双字节指令,其中rel为相对偏移量。指令的功能是按计算得到转移目的地址,实现程序转移。计算公式为

目的地址=(PC)+2+rel

其中,PC称为源地址,即指令“SJMP rel”所在程序单元的地址;偏移量rel是一个带符号的8位二进制补码数。如果rel为正,则向前转移;如果rel为负,则向后转移。计算偏移量的公式为

rel=目的地址-(源地址+2)

若相对转移指令是3字节指令,则偏移量为

rel=目的地址-(源地址+3)例: 在835AH处有SJMP指令835AH

SJMP

35H

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)192

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

源地址=835AH,rel=35H且为正,则目的地址=835AH+02H+35H=8391H,即程序转移到

8391H地址。(www.61k.com]

例:  在835AH处的SJMP指令为

835AHSJMP0E7H

rel=0E7H且为负数19H的补码,因此目的地址=835AH+02H-19H=8343H,即程序转移到8343H

处。

若rel=FEH,为负数02H的补码,则目的地址=PC+02-02=PC,即目的地址和指令源地址相

同,程序就在该指令上踏步,即

HERE:SJMPHERE或HERE:SJMP¥

在MCS-51指令系统中,以¥代表指令源地址。

若rel=00H,则目的地址=PC+02H,即目的地址为下一条指令地址。如:

SJMP00H

NEXT:MOVA,#00H

程序转移到NEXT处。

(4) 变址寻址转移指令

JMP@A+DPTR;(PC)←(A)+(DPTR)

以DPTR内容为基础(称为基址),A中的内容作为变址。当DPTR固定时,A中赋值不同,

可以实现程序的对分支转移。其计算公式为

转移目的地址=(A)+(DPTR)

这种由基址寄存器(DPTR)和变址寄存器(A)共同实现的间址方式,称为变址寻址。

2. 条件转移指令

执行条件转移指令时,如指令中规定的条件满足,则进行程序转移;否则,程序顺利执行。(1) 累加器判零转移指令

JZ

JNZrelrel;若(A)=0,则(PC)←(PC)+2+rel,即转移;否则(PC)←(PC)+2,即顺序执行;若(A)≠0,则(PC)←(PC)+2+rel,即转移

;否则(PC)←(PC)+2,即顺序执行

上述两条指令均为双字节指令。第一条指令转移条件是(A)=0,第二条指令转移条件是

(A)≠0,A中的内容为转移指令前面最后一条指令的执行结果。单片机的程序状态字PSW中没有零标志,只能用累加器的内容为零(非零)作为判断条件。

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

(2) 比较条件转移指令

比较条件转移指令是把两个操作数进行比较,以是否相等作为条件来控制程序转移。共有4

条指令:

CJNEA,#data,rel;累加器内容与立即数不等则转移,否则顺序执行

CJNEA,direct,rel;累加器内容与内RAM中指定单元内容不等则转移,否则顺序执行

CJNERn,#data,rel;工作寄存器内容与立即数不等则转移,否则顺序执行

CJNE@Ri,#data,rel;内部RAM中指定单元(间址形式)内容与立即数不等则转移,否则顺序执行上述4条指令是3字节指令,具有数值比较和程序转移两方面功能。

两个操作数比较结果影响CY标志,但不影响操作数中的内容。当左操作数=右操作数时,

(CY)=0,程序顺序执行;当左操作数>右操作数时,(CY)=0,程序转移执行;当左操作数<右操作数时,(CY)=1,程序转移执行。

(3) 减1条件转移指令

这是一组把减1与条件转移两种功能结合在一起的指令,共有两条。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)193

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

l寄存器减1条件转移指令(双字节指令)为

DJNZRn,rel;(Rn)←(Rn)-1

若(Rn)≠ 0,则(PC)←(PC)+2+rel,即程序转移;若(Rn)= 0,则(PC)←(PC)+2,即程序顺序执行。(www.61k.com)l直接寻址单元减1条件转移指令(3字节指令)为DJNZdirect,rel;(direct)←(direct)-1

若(direct)≠ 0,则(PC)←(PC)+ 3 + rel,即程序转移;

若(direct)= 0,则(PC)←(PC)+3,即程序执行。

这两条指令主要用于控制程序循环。如预先把寄存器或内部RAM单元赋值循环次数,利用减1条件转移指令,以减1后是否为0作为转移条件,即可实现按次数控制循环。

例: 将外部RAM地址为1100H~11FFH的256个单元清0,试编制实现程序。

MOVR7,#00H;置计数初值

MOVMOVINCRET

A, #00HDPTR,#1100HDPTR

;计数值减1,不为0则循环;返回

;清0单元首地址;清0

LOOP:MOV @DPTR,A

DJNZR7,LOOP

3.子程序调用及返回指令

从主程序转向子程序的指令称为子程序调用指令;从子程序返回主程序的指令称为返回指令。

调用指令与钻仪指令的主要区别是转移指令不保存返回地址,而子程序调用指令在转向目的地址的同时,必须保留返回地址(称为断点地址),以便执行返回指令时回到主程序断点的位置。通

常采用堆栈技术保存断点地址,这样可以允许多重子程序调用(在子程序中再次调用子程序)。

(1)绝对调用指令(双字节指令)ACALL addr11

;(PC)←(PC)+2,(SP)←(SP)+1,(SP)←(PC)7~0;(SP)←(SP)+1,(SP)←(PC)15~8;(PC)10~0←addr11,(PC)15~11保留

该指令格式为

第一字节第二字节

A10A7

A9A6

A8A5

1A4

0A3

0A2

0A1

1A0

指令代码中提供了子程序入口地址的低11位。这11位地址的A7~A0占据指令的第二字节,A10~A8占据指令的第一字节的高3位,低5位为操作码。指令的调用范围为2KB。

为了实现直程序调用,该指令共完成两项操作:

断点保护  断点保护是通过自动方式的堆栈操作实现的。即把加2以后的PC值(称为PC当前值)自动送入栈区保存起来,待子程序返回时再送回PC。

构造目的地址  目的地址的构造是在PC加2的基础上,以提供的11位地址取代PC当前值中的低11位,PC的高5位保持不变。

例: 在程序存储器8100H单元处有一条绝对调用指令,确定子程序目的地址。

8100HACALL48FH

由于48FH=0100 1000 1111B,即addr11的高3位(A10 A9 A8)=100,因此指令第一字节为91H,第二字节为8FH,即机器码为918FH。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)194

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

PC的当前值PC=8102H=1000 0001 0000 0010指令提供的低11位地址替换PC中的低11位

后,形成的目的地址是

1000 0100 1000 1111B=848FH

即被调用的子程序入口地址为848FH。(www.61k.com]本指令的地址为8100H,不变的高5位是1000B,因此本指令的调用范围是8000H~87FFH(2 KB).

(2)长调用指令(3字节指令)

ACALL addr16;(PC)←(PC)+3,(SP)←(SP)+1,(SP)←(PC)7~0

;(SP)←(SP)+1,(SP)←(PC)15~8

;(PC)←addr16

子程序入口地址在指令中直接给出.指令执行后,断点进栈保存,addr16作为子程序入口地址.本指令的调用范围是64KB(0000H~FFFH),使用比较方便,但3字节指令较ACALL指令占有较多的存储空间.

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

例18  已知下列程序段:

ORG

MOV

……

ORG0200H

START:LCALLMIR

……

RET

MIR

END

程序执行结果:(SP)=62H,(61H)=03H,(62H)=02H,(PC)=8100H。

(3)返回指令

l子程序返回指令

RET;(PC)15~8←(SP),(SP)←(SP)-1,(PC)←(SP),(SP)←(SP)-17~0

l中断返回指令为

RETI;(PC)15~8←(SP),(SP)←(SP)-1,(PC)←(SP),(SP)←(SP)-17~0

子程序返回和中断返回指令的功能都是从堆栈中取出16位断点地址送PC,使子程序返回主程序。RET指令安排在子程序出口处,RETI指令安排在中断服务程序出口处。

此外,RETI指令还具有清除中断响应时被触发的优先级状态,开放较低级中断和恢复中断逻辑等功能。

例19 已知(SP)=62H,(62H)=07H,(61H)=30H,执行RET指令后,其结果是:(SP)=60H,(PC)=0730H,即CPU从0730H处开始执行程序。EQU8100H0100HSP,#60H

4.空操作指令

NOP;(PC)←(PC)+1

空操作指令也是一条控制指令,控制CPU不做任何操作,只消耗一个机器周期的时间。空

操作指令是单字节指令,依次执行后PC加1,时间 延续一个机器周期。NOP指令常用于程序的等待或时间的延迟。

5  位操作类指令

位操作(又称位处理)就是以位(bit)为单位进行的运算和操作。位变量也称为布尔变量或开关变量。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)195

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MCS-51指令系统适用位操作的地址空间是片内RAM 20H~2FH单元(位地址为00H~7FH)以及SFR区中可寻址的位。[www.61k.com)

1.位传送指令

MOVC,bit;(CY)←(bit)

MOVbit,C;(bit)←(CY)

bit表示位地址。位传送就是可寻址的位与CY之间的相互传送。由于没有可寻址位之间的

直接传送指令,因此位之间无法实现直接传送。如果需要位之间传送,必须以CY作中介实现。

例:将位地址为20H的内容传送到位地址5AH。编制程序如下:

MOV10H,C;暂存CY内容

MOV

MOV

MOVC,20H5AH,CC,10H;20H位送CY;CY送5AH位;恢复CY内容

2.位置位和复位指令

SETBC

SETBbit

CLR

CLRCbit;(CY)←1;(bit)←1;(CY)←0;(bit)←0

3.位运算指令

位运算都是逻辑运算,有“与”、“或”、“非”3种,共6条指令

ANL

ANL

ORL

ORL

CPL

CPLC,bitC,/bitC,bitC,/bitCbit;(CY)←(CY)∧(bit);(CY)←(CY)∧(bit);(CY)←(CY)∨(bit);(CY)←(CY)∨(bit);(CY)←(CY);(CY)←(bit)

“/bit”表示位中内容的“非”,运算后bit中的内容不取反,保持原内容不变。

在位操作指令中,没有位的“异或”运算,需要时可由上述多条位操作指令实现。此外,

通过位逻辑运算,可对各种组合逻辑电路进行模拟,即用软件方法来获得组合电路的逻辑功能。

例21 用位运算指令实现“异或”操作:

D=E⊕B

由于D=E⊕B=EB+EB,实现的程序如下:

MOVC,B

ANL

MOV

MOV

ANL

ORL

MOVC,/E;(CY)←D,CC,EC,/B;(CY)←C,DD,C4.位控制转移指令位控制转移指令就是以位的状态作为实现程序转移的判断条件。

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)196

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

(1)以C状态为条件的转移指令(双字节指令)

JC

JNCrelrel;若(CY)=1,则(PC)←(PC)+2+rel,即转移;若(CY)=0,则(PC)←(PC)+2,即程序顺序执行;若(CY)=0,则(PC)←(PC)+2+rel,即转移

;若(CY)=1,则(PC)←(PC)+2,即程序顺序执行

(2)以bit状态为条件的转移指令(3字节指令)

JB

JNB

JBCbit,rel;若(bit)=1,则(PC)←(PC)+3+rel,即转移;若(bit)=0,则(PC)←(PC)+3,即程序顺序执行bit,relbit,rel;若(bit)=0,则(PC)←(PC)+3+rel,即转移;若(bit)=1,则(PC)←(PC)+3,即程序顺序执行;若(bit)=1,则(PC)←(PC)+3+rel,即转移,且同时伴随着清bit位,即(bit)=0

;若(bit)=0,则(PC)←(PC)+3,即程序顺序执行

JBC指令中,若可寻位为1时,则转移,并同时清该位。(www.61k.com]当bit是P0~P3端口中某一位

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

时,该指令称为:“读-修改-写”指令。

4 汇编语言程序设计

用助记符表示的指令就是计算机的汇编语言,每一条指令就是汇编语言的一条语句。

所谓程序设计就是编写计算机程序。汇编语言程序设计就是使用汇编指令来编写计算机程序。1  汇编语言的特点及其语句格式

1.汇编语言的特点

汇编语言有以下特点

1) 助记符指令与机器指令一一对应,所以用汇编语言编写的程序占用存储器空间小,运

行速度快,可编写出最优化程序。

2)汇编语言是面向计算机的。汇编语言的程序设计人员必须对计算机硬件有相当深入的了解。3) 汇编语言能直接访问存储器及接口电路,也能处理中断,因此汇编语言程序能直接管理

和控制硬件设备。

4)各种计算机都有自己的汇编语言,不同计算机的汇编语言之间不能通用,因此汇编语言缺乏通用性,程序不易移植。

2.汇编语言的语句格式

各种计算机汇编语言的语句格式及语法规则基本相同。MCS-51汇编语言的语句格式为

[标号]:[操作码][目的操作数],[源操作数];[注释]

其中每部分也称为字段。各部分之间用一个空格或字段分界符分隔。常用的字段分界符有冒号“:”、逗号“,”和分号“;”。

(1)标号

标号用来说明指令的地址,用于其他语句对该句的访问。标号有以下规定:

1)标号由1~8个字母和数符组成,字母打头,冒号“:”结束,中间允许数字符号。

标号中的字符个数不超过8个,若超过8个,则以前面的8个字符有效,后面的字符不起作用。

2)不能用本汇编语言已经定义的符号作为标号,如指令助记符、伪指令以及寄存器的符号名称符。

3)同一标号在一个程序中只能定义一次,不能重复定义。

4)一条语句可以有标号,也可以没有标号,取决于本程序中有无语句访问这条语句。

(2)操作码

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)197

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243操作码是汇编语句格式中惟一不能空缺的部分,用于规定语句执行的操作内容。[www.61k.com]

(3)操作数

操作数用于表明指令操作的数据或数据存储地址。操作数可以是空白,也可以是一项、两项,各操作数之间用逗号分开。MCS-51指令系统的操作数有寄存器、立即数、直接、间接等7种寻址方式。

操作数与操作码之间用空格分开。

(4)注释

注释不属于语句的功能部分,只是对语句的解释说明,只要用“;”号开头,即表明以下为注释的内容。使用注释可使程序文件编制显得更加清楚,帮助程序人员阅读程序。注释可有可无,长度不限,一行不够时可以换行接着写,但换行时要注意在开头使用“;”号。

(5)分界符

分界符(分隔符)用于把语句格式中的各部分隔开,以便区分,包括空格、冒号、分号或逗号等多种符号。

冒号(:)——用于标号之后。

空格( )——用于操作码和操作数之间。

分号(;)——用于注释之前。

逗号(,)——用于操作数之间。

3.汇编语言程序设计的特点

汇编语言程序设计有以下特点:

1) 在程序中要对存取数据的存储器单元地址以及寄存器等作出明确分配。

2) 设计人员对单片机应用系统的硬件结构要有详细了解,以便在程序中熟练使用。

3) 设计程序要尽量采用模块化结构,便于阅读和修改。

4) 在满足工艺要求和便于阅读的基础上,尽量选用字节少,工作进行效率高的指令和结

构形式。

2  汇编语言程序的基本结构形式

一般把程序结构分为3种形式:顺序结构、分支结构和循环结构。

1.顺序结构

顺序结构是最简单的程序结构,在顺序程序中无分支、循环和调用子程序,程序是逐条顺序执行的。

例22 被加数存于片内RAM 32H,31H和30H;加数存于片内RAM 35H,34H和H;相加

之和存于片内RAM 32H,31H和30H;进位存于00H单元,试编制程序。

START:  MOV

MOV

MOV

ADD

MOV

INC

INC

MOV

ADDC

MOVR0,#30HR1,#33HA,@R0A,@R1@R0,AR0R1A,@R0A,@R1@R0,A;中间字节相加;存中间字节相加结果;低字节相加;存低字节相加结果;被加数低字节地址;加数低字节地址

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)198

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

INC

INC

MOV

ADDC

MOV

CLR

ADDC

MOV

RETR0R1A,@R0A,@R1@R0,AAA,#00H00H,A;高字节相加;存高字节相加结果;存进位

2.分支结构

分支结构是通过转移指令实现的。(www.61k.com]根据程序的功能特点,又可分为单分支程序、多分支

程序等。

例23 假定在外RAM 2000H,2001H,2002H的3个连续单元中,2000H和2001H单元存放

着两个无符号数,要求找出其中较大者并存于2002H单元。其程序如下:

ORG

START:CLR

MOV

MOV

INC0100HCDPTR,#2000HR2,ADPTR;设置数据指针;取第一个数;暂存于R2;数据指针加1

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

;取第二个数

;两数比较

;第二个数大则转LOOP1

;第一个数大则交换

;存大数MOVXA,@DPTRMOVXA,@DPTRSUBBA,R2JNCLOOP1LOOP0:XCHINCA,R2DPTRMOVX@DPTR,A

LOOP1:RETMOVXA,@DPTR

SJMPLOOP0

3.循环结构

循环是为了重复执行一个程序段。在汇编语言中可以通过条件判断循环是否结束。

例 将内部RAM 20H为起始地址的数据串(最大长度为32字节)传送到外部RAM

2000H为首地址的区域,直到发现“¥” 字符的ASCⅡ码为止。其程序如下:

MOV

MOV

MOV

LOOP0:MOV

XRL

JZ

MOVR0,#20HDPTR,#2000HR7,#20HA,R0A,#24HLOOP1A,@R0;判断是否为“¥”字符;内RAM数据串首地址;外RAM数据串首地址;最大数据串长度

MOVX@DPTR,A

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)199

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

INC

INC

DJNZ

LOOP1:RETR0DPTRR7,LOOP0

5 汇编语言的伪指令与汇编

用指令系统编写的汇编语言程序称为源程序,必须将其翻译成机器码(称为目标程序),单片机方可执行。[www.61k.com]源程序转换成目标程序的过程是由通用计算机执行一种特定的翻译程序(称为汇编程序)自动完成的。这个翻译过程称为汇编。

1  汇编语言的伪指令

源程序中应有向汇编程序发出指示信息,告诉汇编程序如何完成汇编工作的控制命令,称之为伪指令。伪指令具有控制汇编程序的输入/输出、定义数据和符号、条件汇编和分配存储空间等功能。不同的汇编语言的伪指令也有所不同,但一些基本的东西却是相同的。

伪指令是由程序员发给汇编程序的命令,也称为汇编命令或汇编程序控制指令。只有在汇编前的源程序中才有伪指令,汇编后得到的目标程序(机器码)中没有伪指令相应的机器代码。

下面介绍MCS-51汇编语言程序中常见的伪指令。

1.ORG汇编起始地址命令

在汇编语言源程序的开始,通常都要用一条ORG(Origin)伪指令规定程序的起始地址。命令格式为

[标号]:ORG [地址]

其中:[标号]是选择项,根据需要选用;[地址]项通常为16绝对地址,但也可以使用标号或表达式。例如:

ORG

START:MOV

……

即规定标号START代表地址8000H,目标程序的第一条指令从8000H开始。8000HA,#00H

2.END汇编终止命令

END(END of assembly)是汇编语言源程序的结束标志,在整个源程序中只能有一条

END命令,且位于程序的最后。如果END命令出现在中间,则其后面的源程序汇编时将不予处理。命令格式为

[标号]:END

命令中的[标号]是选择项。这个标号应是源程序第一条指令的符号地址。例如:

START:ORGMOV

MOV

MOV

LOOP:MOV

INC

RET

END8100HA,#00HR7,#10HR0,#20H@R0,AR0DJNZR7,LOOP

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)200

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442433.EQU赋值命令

EQU(Equate)命令用于给标号赋值。(www.61k.com)赋值以后,其符号值在整个程序中有效。命令格式为

[字符名称]EQU[赋值项]

其中,[赋值项]可以是常数、地址、标号或表达式。其值为8位或16位而进制数。赋值以后的字符名称既可以作立即数使用,也可以作地址使用。例如:

START:

LOOP:ORGMOVLCALL

DJNZ

RET

DELAY

END6000HR7,#05HDELAYR7,LOOPEQU1880H

4.DB定义字节命令

DB(Define Byte)命令用于从指定的地址开始,在程序存储器的连续单元中定义字节数据。命令格式为

[标号]:DB  [8位数据表]

字节数据可以是一字节常数或字符,或用逗号分开的字符串,或用引号括起来的字符串。

例如:

DB“How are you?”

把字符串中的字符按ASCⅡ码存于连续的ROM单元中。

常使用本命令存放数据表格,例如存放数码管显示的十六进制数的形码,可使用多条DB命

令定义:

DB

DB

DB

DB3FH,06H,5BH,4FH66H,6DH,7DH,07H7FH,6FH,77H,7CH0C0H,0F9H,0A4H,0B0H

5.DW定义字命令

DW(Define Word)命令用于从指定地址开始,在程序存储器的连续单元中定义16位的数据字。命令格式为

[标号]:DW   [16位数据表]

存放时,数据的高8位在前(低地址),低8位在后(高地址)。例如:

DW

DW

DW

DW“AA”“A”“ABC”;存入41H,41H;存入00H,41H;不合法,因超过两个字节100H,1ACH,814;按顺序存入01H,00H,01H,ACH,FCH,DCH

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

DB和DW定义的数据表,数的个数不得超过80个。如果数据的数目较多时,可使用多个定

义命令。在MCS-51程序设计中,常以DB定义数据,以DW是定义地址。

6.DS定义存储区命令

DS(Define Storage)命令用于从指定地址开始,保留指定树木的字节单元作为存储区,供程序运行使用。汇编时,这些单元不赋值。命令格式为

[标号]: DS   [16位数据表]

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)201

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

例如:

ADDTAL : DS

ORG

DS8100H08H20从标号ADDTBL带表的地址开始,保留20个连续的地址单元。(www.61k.com]又例如:

从8100H地址开始,保留8个连续的地址单元。

注意  DB,DW和DS命令只能对程序存储器使用,而不能对数据存储器使用。

6.BIT位定义命令

本命令用于给字符名称赋以位地址。命令格式为

[字符名称]BIT[位地址]

其中[位地址]可以是绝对地址,也可以是符号地址(即位符号名称)。例如:

AQBITP1.0

把P1.0的位地址赋给变量AQ。在其后的编程中,AQ就可以作为位地址(P1.0)使用。

2  汇编语言的汇编

将用助记符编写的源程序转换成机器码的过程称为汇编。汇编分为手工汇编和机器汇编。

对于简单的应用程序,可以通过查表翻译指令的方法将源程序翻译成机器码,称之为手工汇

编。

由于手工汇编是按绝对地址进行定位,所以手工汇编时要根据转移的目标地址计算转移指令

的偏移量,而且容易出错。此外,对于汇编后的目标程序,如须增加、删除和修改指令,就会引起以后各指令地址的改变,转移指令的偏移量也要重新计算。因此,手工汇编不是理想的方法,通常只用于小的程序。

编写完单片机的源程序之后,由于单片机本身软硬件资源所限,无法由单片机本身自动汇编

(机器汇编),只能借助于通用计算机对源程序进行汇编。

使用一种计算机的汇编程序去汇编另一种计算机源程序,具体说就是运行汇编程序进行汇编

的是一种计算机,而运行汇编得到目标程序的则是另一种计算机。这种使用一种计算机的汇编程序去汇编另一种计算机的源程序的汇编过程,被称为交叉汇编。单片机的机器汇编就是交叉汇编。

在交叉汇编之前,一般还要借助于通用计算机进行单片机的程序设计。通常使用编辑软件进

行源程序的编辑,以形成一个由汇编指令和伪指令组成的源程序文件。这个过程被称为机器编辑。

交叉汇编之后,再使用串行通信方法,把汇编得到的目标程序传送到单片机,进行程序的调

试和运行。

“机器编辑→交叉编辑→串行发送”,这3个过程构成了单片机软件设计的3个基本步骤。

源程序编写如下:

START:ORGMOV

MOV

LOOP:CLRMOV

MOV

INC

MOV8000HR0,#20HR7,#07HF0A,@R02BH,AR02AH,@R0

@R0CLRCSUBBA,

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)202

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

JCMOVDECMOV

INC

NEXT:HERE:

NEXT@R0,2BHR0@R0,2AHR0

SETBF0

DJNZR7,LOOPJB

F0,STARTSJMP¥END

手工汇编结果如下表所列。[www.61k.com]

手工汇编结果

目标程序部分地址800080028004800680078009800A800C800D800E801080128013801580168018801A801D

偏移1的计算:

源程序部分

标号START:

助记符指令MOV   R0,#20HMOV   R7,#07HCLR   F0

LOOP:

MOV   A,@R0MOV   2BH,AINC   R0MOV  2AH,@R0

CLR   CSUBB A,@R0JC   NEXTMOV  @R0,2BHDEC   R0MOV  @R0,2AHINC   R0SETB   FO

NEXT:

DJNZ   R7,LOOPJB   F0,START

HERE:

SJMP   ¥

偏移2偏移3偏移4偏移1备注

机器码78207F07C2D5E6F52B08862AC3964008A62B18A62A08D2D5DFEC20D5E380FE

rel1=目的地址-(源地址+2)=8018H-(800EH+2)=08H偏移2的计算:

rel2=目的地址-(源地址+2)=8006H-(8018H+2)=-14H

(-14H)补码=ECH

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)

203

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

偏移3的计算:

rel3=目的地址-(源地址+2)=8000H-(801AH+3)=-1DH(-1DH)补码=E3H

偏移4的计算:

rel4=目的地址-(源地址+2)=801DH-(801DH+2)=-2H

(-2H)补码=FEH

6 汇编语言程序设计举例

1  算术运算程序

1.加、减运算程序

(1)不带符号的多字节数加法

例 设有两个4字节的二进制数,分别存放在以30H和50H为起始地址的单元中(先存放低字节)。(www.61k.com)求这两个数的和,并将和存放在以30H为起始地址的单元中,试编制程序。

程序如下:

ORG

JAZ:

MOVMOVMOVLCALLJCMOV

SJMP

OVER:HERE:JAFA:JAADD:

MOVSJMPORGCLRMOVADDCMOVINCINCDJNZRET

2000H

R0,#30HR1,#50HR2,#04HJAFAOVER34H,#00HHERE34H,#01HHERE1000HCA,A,R0R1R2,JAADD

@R0@R1

;C清0

;取出加数一个字节;加上另一个数的一个字节;保存和

;修改加数的地址;没加完则继续;指向加数最低位;另一加数最低位;字节个数存于R2;调用加法子程序;有进位则转出;无进位清最低字节单元;最高字节单元为01H

@R0,A

(2)不带符号的两个多字节数减法

例 设有两个N字节无符号数分别存于内RAM单元中,低字节在前,高字节在后。由R0指定被减数单元地址,由R1指定减数单元地址,要求差值存放在原被减数单元中,假定最高字节没有错位。

程序如下:

CLRMOV

LOOP:

MOV

CR7,#NA,@R0

;设定N字节

;从低位取被减数字节

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)204

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

SUBBMOVINCINC

DJNZRET

(3)带符号数加、减运算

A,@R0@R0,AR0R1

R7,LOOP

;两位数减;保存差

对于带符号数的减法运算,只要将减数的符号位取反,就可把减法运算按加法运算处理。(www.61k.com)对于带符号数的加法运算,首先要进行两数符号的判定。如果两数符号相同,应进行两数相加,并以被加数符号为结果符号。

如果两数符号不同,应进行两数相减。如果相减的差为正,则差即为最后结果,并以被减数符号为结果符号;如果相减的差为负,则应将其差值取补,并把被减数的符号取反作为结果符号。

例27 假定20H和21H以及22H和23H分别存放两个16位的带符号二进制数,其中20H和22H的最高位为两数的符号位。请编写带符号双字节二进制数的加减法程序,以BUSB为减法程序入口,以BADD为加法程序入口,以内RAM 24H和25H保存运算结果。

程序如下:BUSB:

MOVCPLMOV

BADD:

MOVMOVMOVXRLMOVMOVCPLMOVMOVCLRMOVJC

JIA:

MOVADDMOVMOVADDCMOVJB

QWE:

MOVMOVMOVRET

A,22HACC.722H,AA,20HC,ACC.7F0,CA,22HC,ACC.7A,20HACC.720H,AA,22HACC.722H,AJIANA,21HA,23H25H,AA,20HA,22H

;高字节相加

24H,A;保存高字节和ACC.7,QAZ;符号位为1转溢出处理C,FOACC.7,C24H,A

;结果符号处理

;减数符号位取反进行加法;取被加数

;被加数符号位存于F0

;两数高字节“异或”

;两数同号(CY)=0,异号(CY)=1;取被加数

;被加数高字节符号位清0;取其数值部分;取加数

;加数高字节符号位清0;取其数值部分;两数异号转JIAN;两数同号进行加法;低字节相加;保存低字节和;取减数高字节

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)205

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

JIAN:MOVCLRSUBBMOV

MOVSUBBMOVJNB

A,21HCA,23H25H,AA,20HA,22H24H,AA,25H

A,#01H25H,AA,24HAA,#00H24H,AF0QWE

;两数异号进行减法;低字节相减;保存差;高字节相减;保存差;有借位,差值取补

ACC.7,QWE;没借位转QWE

BMP:MOV

CPLADDMOVMOVCPLADDCMOVCPLSJMP

QAZ:……

;符号位取反;溢出处理(从省略)

2.乘法运算

对于单字节乘法运算,使用一条乘法指令MUL AB即可;对于多字节的乘法就必须通过程序实现。[www.61k.com]

例 假设被乘数存放于R6和R7中,乘数存放于R4和R5中,乘积存放于40H,41H,

42H和43H中,低字节在前,双字节乘法结果最多为4字节。

双字节乘法按一般竖式相乘原理,设R6×R4=H64,L64;R7×R4=H74,L74;R5×R6=H56,L56;R7×R5=H75,L75。其中,H表示高字,L表示低字节。竖式乘法过程表示为

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

R7

×)

R5H74H56

H75

具体程序如下:

ORG

MUL16:

MOVMOVMOVMULMOVMOVMOV

0020HR0,#40HA,R6B,R4AB

@R0,AR3,BA,R7

;R6×R4=H64,L64;L64→(40H);H64→R3

;积地址指针

L75

(41H)

(40H)

(43H) (42H)

R6R4H64L74L56

L64

R6×R4R7×R4R5×R6R7×R5

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)206

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MOV

MUL

ADD

MOV

MOV

MOV

MOV

MOV

MUL

ADD

INC

MOV

MOV

MOV

ADDC

MOV

JNC

INC

NEXT:MOV

MOV

MUL

ADD

INC

MOV

MOV

ADDC

INC

MOV

RETB,R4ABA,R3R3,AA,#00HR2,AA,R6B,R5ABA,R3R0@R0,AR1,#00HA,R2A,BR2,ANEXTR1A,R7B,R5ABA,R2R0@R0,AA,BA,R1R0@R0,A;A→(42H);H75+R1+CY→A;R7×R5=H75,L75;L75+R2→A;H56+R2+CY→R2;R5×R6=H56,L56;L56+L74+H64→A;A→(41H);R7×R4=H74,L74;L74+H64→R3;H74+CY→R2

3.除法运算

对于单字节除法运算使用一条除法指令DIV AB即可;但对于多字节的除法就必须通过程序实现。(www.61k.com)

多字节除法的程序设计常采用“恢复余数法”,其设计思想是做减法。

仿照手工算法进行除法,设被除数为100011,除数为101,求100011B÷101B=?

stc89c52中文资料 STC89C52RC_中文指南_

-1×除数

-)   1 0 1     ……………2-2×余数

1 0 1   ……………余数

-)      1 0 1   ……………2-3×除数

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)207

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243   计算机除法运算采用“左移被除数相除法”。(www.61k.com)做除法前先将余数单元清0,在CY=0条件下,执行左循环移位,将被除数最高位移入余数单元最低位,被除数最低位变为0,然后用余数减去

除数。若够减,则此时被除数移位单元最低位置1,即商为1,同时用差取代余数;若不够减,则此时的被除数移位单元仍为0,即商为0。这样重复移位,做减法,直到被除数全部左移入余数单元。最后被除数移位单元变成了商数单元,余数单元存有余数。

设被除数为1011,除数为0101,余数单元全清0,下面是采用左移位除法过程。

第一次移位:余数单元=0001,被除数移位单元=0110,余数单元减去除数,不够减,继续左移。

第二次移位:余数单元=0010,被除数移位单元=1100,余数单元减去除数,不够减,继续左移。

第三次移位:余数单元=0101,被除数移位单元=1000,余数单元减去除数,够减且差为

0000,用此时的差值取代原来余数,并将被除数移位单元最低位置1,即余数单元=0000,被除数移位单元=1001,继续左移。

第四次移位:余数单元=0001,被除数移位单元=0010,移位完成,最后结果是:商为0010,余数为0001。

例 编写一个16位÷16位除法程序。假设被除数存于40H和41H中,除数存于44H

和45H中,商存于40H和41H中,余数存于42H和43H中。低字节在前,48H和49H为暂存单元。

程序如下:

ORG

DIV16:MOV

MOV

JNZ

INC

MOV

JNZ

CLR

MOV

MOV

RET

LOP0:MOV

MOV

JNZ

INC

MOV

JNZ

RET

LOP1:CLR

MOV

MOV

MOV

LOP2:CLR

MOVR0,#44HA,@R0LOP1R0A,@R0LOP1A42H,A43H,AR2,#10HCR3,#04H;清余数单元42H和43H;置移位次数;CY=0;除数为0则退出0059HR0,#40HA,@R0LOP0R0A,@R0LOP0A42H,A43H,A;被除数为0则退出

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)208

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOV

LOP3:

MOVRLC

MOVINCDJNZMOVMOVMOVCLRSUBBMOVINCINCMOVSUBBMOVJCMOVMOVMOVMOVINCINCMOVMOVMOVINC

LOP4:

MOVDJNZRETEND

R0,#40HA,@R0A

@R0,AR0R3,LOP3R0,#42HR1,#44HA,@R0CA,@R148H,AR0R1

A,@R0A,@R149H,ALOP4R0,#42HR1,#48HA,@R1@R0,AR0R1A,@R1@R0,AA,40HA40H,AR2,LOP2

;被除数地址指针

;余数单元,被除数单元左移一次

;余数单元减除数

;暂存差的低字节

;暂存差的高字节;不够减继续左移;够减时差值取代原余数

;够减时被除数单元加1;移位次数不到,继续

2  数制转换程序

1.十六进制数转换成ASCⅡ码

例 在片内RAM 20H单元中存有2位十六进制数,将其转换成ASCⅡ码,并存于21H和22H两个单元中。[www.61k.com)

程序如下:

MOV

MAIN:

PUSHLCALLPOPMOV

SP,#3FH20HHASC21HA,20H

;十六进制数进栈;调用转换子程序

;第一位转换结果送21H单元;再取原十六进制数

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)209

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

SWAPPUSHLCALL

POPRET

HASC:

DECDECPOPANLADDMOVCPUSHINCINCRET

ASCTAB:

AACCHASC22HSPSPACCA,#0FHA,#07HA,@A+PCACCSPSP

;高低半字节交换;交换后的十六进制数进栈;调用转换子程序

;第二位转换结果送22H单元;跨过断点保护对象;弹出转换数据;屏蔽高4位

;修改变址寄存器内容;查表

;查表结果进栈

;修改堆栈指针回到断点保护内容

DB“0,1,2,3,4,5,6,7”;ASCⅡ码表DB“8,9,A,B,C,D,E,F”

2.ASCⅡ码转换成十六进制数

例 将外部RAM 30H~3FH单元中的ASCⅡ码依次转换为十六进制数,并存入内RAM60H~67H单元中。(www.61k.com)

程序如下:

MAIN:MOV

MOV

MOV

LOOPA:

LCALLSWAPMOVINCLCALLXCHDINCINCDJNZRET

TRAN:

CLRMOVXSUBBCJNESJMP

LOOPB:LOOPC:DONE:

JCSUBBRET

A,@R0A,#30HA,#0AH,LOOPBLOOPCDONEA,#07H

;取ASCⅡ码;减去30H

R0,#30HR1,#60HR7,#08HTRANA

@R1,AROTRANA,@R1ROR1

R7,LOOPA

;调用转换子程序;十六进制数拼装;设置ASCⅡ码地址指针;设置十六进制数地址指针

;需拼装的十六进制数的字节数;调用转换子程序;A中高低4位交换;存于内部RAM

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)210

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-829442433  定时程序

在单片机应用系统中,定时功能除可使用定时器/计数器实现外,还可使用定时程序完成。(www.61k.com]定时程序是典型的循环程序,是通过执行一个具有固定延迟时间的循环体来实现延时的。

1.单循环定时程序

MOV

LOOP:NOP

NOP

DJNZ

RET

NOP指令的机器周期为1,DJNZ指令的机器周期为2,则一次循环共4个机器周期。如果单

片机的晶振频率为6MHz,则一个机器周期是2μs,因此一次循环的延迟时间为8μs。定时程序的总延迟时间是循环程序段的整数倍,该程序的延迟时间为8×TIME(μs)。这个程序的最长延时时间为256×8=2048μs。R7,LOOPR7,#TIME

2.较长时间的定时程序

为了加长定时时间,通常采用多重循环的方法。如下面的双重循环的定时程序,最长可延时262 914个机器周期,即525 828μs或大约526ms(晶振频率为6MHz)。

MOVR7,#TIME1;1个机器周期

LOOP1:MOV

NOP

NOP

DJNZ

DJNZ

RET

最长定时时间计算公式为

(256×4+2+1)×256×2+4=525 828μsR6,LOOP2R7,LOOP1R6,#TIME2;1个机器周期;1个机器周期;1个机器周期;2个机器周期;2个机器周期;2个机器周期

3.以一个基本的延时程序满足不同的定时要求

如果系统中有多个定时需要,可以先设计一个基本的延时程序,使其延迟时间为各定时时间的最大公约数,然后以此基本程序作为子程序,通过调用的方法实现所需要的不同定时。例如:要求的定时时间分别为5s,10s和20s,设计一个1s延时子程序DELAY,则不同定时的调用情况表示如下(晶振频率为6MHz):

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

MOVR5,#05H

LOOP1:LCALL

DJNZ

RET

MOV

LOOP2:LCALL

DJNZ

RET

LOOP3:MOVLCALL

DJNZR5,#14HDELAYR5,LOOP3;延时20sDELAYR5,LOOP1R5,#0AHDELAYR5,LOOP2;延时10s;延时5s

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)211

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

RET

DELAY:

LOOPA:

LOOPB:MOVMOVNOP

NOP

NOP

NOP

NOP

NOP

DJNZ

DJNZ

RET

延时时间为

(250×8+2+1)×250×2+4=1 001 504μs≈1sR6,LOOPBR7,LOOPAR7,#0FAHR6,#0FAH

4.查表程序

预先把数据形式存放在程序存储器中,然后使用程序读出。[www.61k.com)这种能读出表格数据的程序被称为查表程序。MCS-51指令系统准备了专用的查表指令:

MOVCA,@A+DPTR

MOVCA,@A+PC

这两个MOVC指令的功能是完全相同的。它们在不改变DPTR和PC的状态下,只根据A的内容就可以取出表格中的数据。但这两条指令在具体使用上也存在差异。前一条指令的基址寄存器DPTR能提供16位基址,而且还能在使用前给DPTR赋值,查表空间可达64KB。后一条指令是以PC作为基址寄存器,虽然也能提供16位地址,但PC不能被赋值,所以其基址值是固定的。由于A的内容为8位无符号数,因次只能在当前指令下面的256个地址单元内进行查表,即数据只能放在该指令后面的256个地址单元之内,而且表格只能被程序段所使用。

例 设有一个巡回检测报警装置,需要对16路输入值进行比较,当每一路输入值等于

或超过该路的报警值时,实现报警。下面根据这一要求,编制一个查表程序。

设Xi为路数,查表是Xi按0,1,2,…,15(i=15)取数,表中报警值是2字节数,依Xi顺序列成表格放在TAB中。进入查表程序之前,路数Xi放在R2中,其输入值存于R0和R1当中,查表结果若许报警,将P1.0置1,否则清0。

ORG

TB1:MOV

ADD

MOV

MOV

MOVC

MOV

INC

MOV

MOVC

MOV

CLR1000HA,R2A,R2R2,A;路数Xi→R2→A;R2+R2→A;A→R2DPTR,#TAB;取数据表首地址A,@A+DPTR;取出高字节R4,AR2A,R2R3,AC;高字节→R4;地址指向低字节A,@A+DPTR;取出低字节;低字节→R3

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)212

stc89c52中文资料 STC89C52RC_中文指南_

宏晶科技:www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243

MOVSUBBMOVSUBB

JNCCLR

LOOP:

RETSETBRETORG

TAB:DW

DWDWDWEND

A,R0A,R3A,R1A,R4LOOPP1.0P1.0

;当前输入值与报警值比较;低字节相减;高字节相减

;输入值<报警值;返回

;输入值≥报警值;返回

2000H

05F0H,0E89H,0A69H,1EAAH

0D9BH,7F93H,0373H,26D7H2710H,9E3FH,1A66H,22E3H1174H,16EFH,33E4H,6CA0H

5  数据极值查找程序

极值查找就是在指定的数据区中挑出最大值或最小值。[www.61k.com)

例 片内RAM 20H单元开始存放8个无符号8位二进制数,找出其中的最大值。极值查找操作的主要内容是进行数值大小的比较。假定在比较过程中,以A存放大数,与之逐个比较的另一个数放在3AH单元中。比较结束后,把查找到的最大数送到3BH单元中。

程序如下:

MOVMOVMOV

LOOP:

INCMOVCJNE

CHK:LOOP1:

SJMPJNCMOVDJNZMOVRET

R0,#20HR7,#08HA,@R0R03AH,@R0A,3AH,CHKLOOP1LOOP1A,@R0R7,LOOP3BH,A

;读下一个数;数值比较;A值大则转;大数送A;继续比较;数据区首地址;数据区长度;读第一个数

宏晶科技:专业单片机/存储器供应商   www.MCU-Memory.com   STC 增强型8051单片机中文指南(RC/RD+系列)213

stc89c52中文资料 STC89C52RC_中文指南_

[www.61k.com]

扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图

三 : 常用中英文搜索引擎指南

1常用中英文搜索引擎指南

??中文搜索引擎及目 录??

百度

http://www.61k.com

百度搜索引擎拥有目前世界上最大的中文搜索引擎,总量超过3亿页以上,并且还在保持快速的增长。百度搜索引擎具有高准确性、高查全率、更新快以及服务稳定的特点,能够帮助广大网民快速的在浩如烟海的互联网信息中找到自己需要的信息,因此深受网民的喜爱。

Google

http://www.61k.comintl/zh-CN/

Google的使命就是要为您提供网上最好的查询服务,促进全球信息的交流。Google开发出了世界上最大的搜索引擎,提供了最便捷的网上信息查询方法。通过对40多亿网页进行整理,Google可为世界各地的用户提供适需的搜索结果,而且搜索时间通常不到半秒。现在,Google每天需要提供2亿次查询服务。

一搜

http://www.61k.com

“一搜”是雅虎中国推出的一个中文搜索网站。目前设立了网页、图片、MP3和网址四个频道。“一搜”采用雅虎花费数十亿美元打造出的搜索技术(YST),用户可以抓取到全球50亿网页(其中3亿个中文网页)、9000万张图片、100多万个免费音乐的海量资料。

中国搜索

http://www.61k.com

2003年12月23日,刚刚上市的慧聪国际集团重拳出击,原慧聪搜索正式独立运作,成立了中国搜索,全力打造中文搜索第一品牌。

搜狐搜索

http://www.61k.com

2004年8月3日,搜狐正式推出全新独立域名专业搜索网站“搜狗”,成为全球首家第三代中文互动式搜索引擎服务提供商。提供全球网页,新闻,商品,分类网站等搜索服务。

新浪网搜索引擎

http://cha.sina.com.cn/

提供网站、网页、新闻、软件、游戏等查询服务。有16大类目录,一万多个细目和数十万个网站。其网页搜索结果由中国搜索提供。

网易搜索引擎

http://so.163.com/

网易在国内首创“网易开放式目录管理系统(ODP)”。提供网页搜索、分类网站、图片搜索、时尚搜索,其网页搜索结果由Google提供。

其它搜索引擎

TOM搜索引擎

http://i.tom.com/

提供网页、网站、图片、MP3、新闻搜索,其网页搜索结果由百度搜索提供。

21CN搜索引擎

http://search.21cn.com/

提供 网页、网站、图片、MP3、FLASH、电影、软件、影集搜索,其网页搜索结果由百度提供。

QQ搜索引擎

http://search.qq.com/

提供网页搜索,其网页搜索结果由百度搜索提供。

2??繁体搜索引擎??

Yahoo!

http://tw.yahoo.com/

提供类目检索、网站检索功能。目录分类合理细致,网站提要简明扼要。支持简体中文、繁体中文、英文和数字关键词搜索。网站检索结果数量较多,以台湾网站为主,精确度一般。搜索结果后有相关网页、相关新闻链接,可转向openfind全文检索和本站新闻检索。条件查询功能完备。检索时有“完全比对”和“模糊查询”选项。设有“新奇”(新站)、“摩登”(酷站)目录。

Openfind全球搜寻

这是一个由Openfind提供的测试网站(BetaTest),提供全球网页搜寻、全球华文网站搜寻服务。

Openfind搜寻引擎

提供类目搜索、网站检索、全文检索功能,类目搜索,网页全文检索功能强大,中文网页收录丰富,支持简体中文、繁体中文、英文和数字关键词搜索。极具特色的台湾BBS网路论坛搜寻,收录台湾BBS网站中的文章,提供一份按照主题分类的BBS讨论组文章目录。

蕃薯藤搜寻

简体中文、繁体中文和英文三个版本。提供类目搜索、网站检索、全文检索、直接到达、BBS搜寻功能。支持简体中文、繁体中文、英文和数字关键词搜索。BBS搜寻有类目检索,

还有讨论群、全部、标题、作者、内文、来源以及时间等选项查询。有新站、酷站、热门站等目录。

PChome网络家庭

提供目录浏览、关键字查询及图片搜索。

3??英文搜索引擎及目录??

Google

http://www.61k.com

Yahoo

http://www.61k.com

AskJeeves

http://www.61k.com

AllTheWeb.com

http://www.61k.com

AOLSearch

http://aolsearch.aol.com(internal)

http://search.aol.com/(external)

HotBot

http://www.61k.com

MSNSearch

http://search.msn.com

Teoma

http://www.61k.com

AltaVista

http://www.61k.com

Gigablast

http://www.61k.com

LookSmart

http://www.61k.com

Lycos

http://www.61k.com

OpenDirectory

http://dmoz.org/

NetscapeSearch

http://search.netscape.com

2??网上图象搜索??

图象是互联网上重要的信息资源。同文本文献相比,图象资料直观逼真、形象生动,既与其它类型的信息资源相互补充,更是一种独立的信息载体。目前,在网上检索文字资料较为方便,大多搜索引擎都提供网页文件(doc、html、txt、pdf...)检索,而图象检索工具则较为少见。由于检索技术与手段相对滞后,数以亿记的网上图象远未被人们认识和利用。然而,人们在工作、学习和研究中却经常需要查找和利用图象资料,如国庆活动需要历任国家领导人的照片和历史事件图片;学习天文课程需要星球、星座与星云的相关图片资料;研究海洋生物需要各种海洋鱼类的活体与标本图象...。查找网络图象资料需要特定的检索工具---图象搜索引擎,只有了解相关搜索引擎的特点和性能,掌握其检索方法和技巧,才能快速、准确地在网上检索出所需图象资料。

1、Google图象搜索http://images.google.com)

Google是由斯坦福大学博士生LarryPage与SergeyBrin于1998年9月发明的关键词搜索引擎,支持包括简、繁体中 文等132种语言的,图象搜索是其四大功能模块之一。图像搜索的工作原理是利用网络蜘蛛(SmartSpider)技术,通过分析页面上图像附近的文字、图像标题以及许多其它元素来确定图像的内容,并使用复杂的算法删除重复信息,并确保在搜索结果中首先显示质量最好的图像。据称,Google图像搜索可以搜索超过3.9亿个图像。用户在关键词框内输入描述图象内容的关键词,便可得到最贴切的相关内容。搜索结果提供了一个很直观的缩略图版以及对这个缩略图片的简单描述,比如图像文件的大小、名称等。

在Google文本搜索中使用的所有操作符都可以用于图像搜索。如“+”或空格表示逻辑‘与’操作,一般用空格代表,“-”表示逻辑‘非’操作(“+”和“-”号是英文字符),大写的“OR”

表示逻辑‘或’操作。“site:”,将搜索范围限定为某一特定网站上的图像,例如,在央视网站中查找其主持人白岩松的图片资料,可输入[site:cctv.com白岩松]。“filetype:”用来指定文件类型扩展名,例如, 要查看格式为.jpg的花朵(flower)的图像,则在搜索框中输入flowerfiletype:jpg]。

在“高级图像搜索”中,用户可利用“必须和下列的全部字词有关系”、“必须和下列的字句完全符合”、“只要和下列的任何一个字词有关系”、及“和下列字词无关”四个输入框很方便地对图象进行扩检、缩检、模糊检索和精确检索;利用图象特征复选框可定义图像大小(任意大小、缩小图示、小型、中型、大型、特大型、桌面大小)、图像类型(JPC、GIF、PNG)、图像颜色(所有颜色、黑白图象、灰阶图象、全彩图象),在“网域”框中输入网址以显示特定站点或域内的图像。

在搜索结果页中,单击图片的缩略图就会看到放大的图像,还可以看到原始图像所在的页面。但是,Google图像搜索服务提供的图像可能受版权保护,若要去除版权图像,请转到,上面有相关的指导信息。

2、百度图象搜索http://image.baidu.com)

百度搜索引擎是世界最大的中文搜索引擎,图象搜索是百度搜索引擎的新增功能,它从1亿5千万个中文网页中提取各类图片,建成世界第一的中文图片库,库存图片26万件。 百度图象搜索无“高级搜索”功能,但它的“图片搜索分类目录”和两个“指南”颇具特色。目录分:美女明星、帅哥明星、风景名胜、电影、电视剧、动漫卡通、游戏、卡通人物八项,其中“女明星、帅哥明星”包括在“明星、人物图片搜索指南”中,“风景名胜”是“风景图片搜索指南”主要内容;“电影”、“电视剧”详列中外影视,海报、剧照、插图应有尽有;“动漫卡通”、“游戏”、“卡通人物”列目精详得当,极为实用。“明星、人物图片搜索指南”将知名度或查询率较高的文娱明星和中外政治、文化、科技人物分类列目,“风景图片搜索指南”按地区列举国内(包括香港、澳门、台湾)名胜古迹,国外著名景观不分国别直接罗列。美中不足的是“目录”和“指南”下的细目未按一定次序(如拼音或字顺)排列,有待进一步改进。

3??MP3搜索引擎??

中文

1、百度MP3搜索?argse=music3721&name=

5、慧聪MP3搜索

10、全智能方程式MP3搜索

18、91F.NETmp3搜索

21、强力MP3搜索

22、【月下弦】MP3搜索

23、hao77MP3搜索

25、千度MP3搜索

29、好123网址之家mp3搜索

30、2971bMP3搜索

集成了音乐情缘、mp3bok、清清音乐、寂寞男孩、梦想家搜寻网、MP3日报等MP3搜索引擎。

英文

31、MP3.comhttp://www.61k.com

32、Lycos'sMP3Searchhttp://mp3.lycos.com/

33、SavvySearchMP3

http://www.61k.comsearch?cat=74&go=no

34、MusicMatch

http://mp3.musicmatch.com/artists/artists.cgi

35、2Look4http://www.61k.com

36、Audiofindhttp://www.61k.com

37、theaudiodinerhttp://www.61k.com

38、CyberTropixhttp://www.61k.com

39-www.61k.com-、Emusichttp://www.61k.com

40、GoodNoisehttp://www.61k.com

4??中外著名少儿搜索引擎??

中文少儿搜索引擎、学生资源搜索引擎、中国学生网提供的搜索引擎,可以按关键词、地区、

分类搜索。

新浪少儿搜索

由新浪搜索引擎推出的一个搜索适合于儿童内容(包含中、英文内容)的分类目录引擎,可以通过网上教育、科普知识、组织机构、卡通漫画大观、儿童文学、体育活动、电脑与游戏、娱乐与休闲、艺术走廊、生活服务、新闻与媒体等11个分类目录进行查找,也可以直接输入关键词进行查找,还设有安徒生、电子贺卡、个人主页、足球明星的快速查找目录。

中国虎娃

专供儿童使用的分类检索引擎,分类比较全面,有高级搜索功能并且有虎娃小铭儿童健康育儿论坛少儿搜索宝宝风采爸妈天地等栏目

易佳

儿童搜索引擎,有中文简体、繁体、英语多个语言版本,可以制作个人搜索引擎,并且过滤了不健康网站

小蕃薯搜寻引擎(繁体)

台湾蕃薯藤搜索引擎附属的儿童搜索引擎,提供分类目录浏览和关键词检索。

英文少儿搜索引擎

Yahooligans

最权威的英文儿童资料搜索引擎。雅虎专门为7-12岁儿童设计的搜索引擎,所有网页都是有人工筛选,放置在专为儿童编制的目录下,以供检索。

AskJeevesForKids

儿童自然语言搜索引擎,可输入关键词,或进行提问式检索

KidsClick!

美国RamapoCatskill

(NY)图书馆专门为儿童设计的网页搜索引擎,有一个15大类,包含600多个主题的分类目录。可按类目分层浏 览,也可按主题的字母顺序在目录中查询。关键词查询的“高级检索”支持逻辑运算符,“输出结果限制”较有特色,氛围普通阅读、2年级以上、3-6年级、7年级以上三个级别和有无图片均可、少量图片、许多图片三种。

AOLNetFindKidsOnly

英国AOL公司的儿童搜索引擎,所有链接网址对儿童安全而使用。

FamilyWebFiles

专为儿童编制的网址分类目录搜索引擎

迪斯尼儿童搜索引擎(英文)

迪斯尼公司的网站引擎,界面精美,输入关键词或按类查询一切关于迪斯尼的问题都可找到答案。

本文标题:中文搜索引擎指南-Google通配符的意义与用法--中文搜索引擎指南网
本文地址: http://www.61k.com/1062741.html

61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1