一 : 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"搜索,其结果在首页第一项便满足检索需求。二 : 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
宏晶科技
选择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
新客户请直接联系深圳以获得更好的技术支持和服务
欢迎海内外厂家前来洽谈合作
南京办: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 单片机
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+系列)
3
stc89c52中文资料 STC89C52RC_中文指南_
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
领导业界革命 覆盖市场需求
STC 12C2052AD系列 1T 8051 单片机
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+系列)
4
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√√√√√√√√√√√√√√√√√√√√
2K+2K+
2 2 2 2
√√√√√16K+ 2√√√√√16K+ 2√√√√√
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+系列)
7
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.只有给单片机彻底断电,才可以
8
宏晶科技:专业单片机/存储器供应商 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
DIMENSIONS(inch dimensions are derived from the original mm dimensions)
UNIT
Amax.
A1min.
A2max.
b
b1
c
D(1)
E(1)
e
e1
L
ME
MH
W
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_中文指南_
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
PLCC44: plastic leaded chip carrier;44 leads
3)
detail X
Note
宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC 增强型8051单片机中文指南(RC/RD+系列)10
stc89c52中文资料 STC89C52RC_中文指南_
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
PQFP44
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_中文指南_
宏晶科技: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_中文指南_
宏晶科技: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_中文指南_
宏晶科技: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_中文指南_
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
STC ISP编程典型应用电路(89C51RC/RD+系列,B版)
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元
上电复位, 掉电复位
上电复位, 掉电复位,外部手动复位,稳压块前端掉电检测
扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图
1
上电复位, 掉电复位电源稳压块前端掉电检测,高/低电平2路复位信号输出
上电复位, 掉电复位,外部手动复位,电源稳压块前端掉电检测,外部硬件看门狗
2.低电平复位信号输出
上电复位, 掉电复位
上电复位, 掉电复位,外部手动复位,稳压块前端掉电检测
1
1
上电复位, 掉电复位,外部手动复位,电源稳压块前端掉电检测,
外部硬件看门狗
高/低电平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_中文指南_
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243 STC89C51RC/RD+系列单片机 ISP编程 原理 注意事项
为什么有些用户下载程序不成功(在宏晶提供的下载板上)
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 转换器
上面左图适用如下型号: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程序。
(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_中文指南_
宏晶科技: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
宏晶科技:专业单片机/存储器供应商 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
7
6
5
4
3
2
1
0
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
7
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
7
6
5
4
3
2
1
0
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
7
6
5
4
3
2
1
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
0
0
0
0
1
1
1
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
0
0
0
0
1
1
1
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引脚图
0
0
0
0
1
1
1
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
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
定时器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
该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]
中断
* 在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
: 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)
对定时器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
扩展: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
符 号 位 名称和意义
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引脚图
2
* 在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
— 不可用,保留将来之用* 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_中文指南_
* 在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
时钟
时钟
可作为一个额外的外部中断
* 在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
作为定时器的设置
① 仅当定时器溢出时进行捕获和重装。
② 当定时/计数器溢出并且T2EX(P1.1)发生电平负跳变时产生捕获和重装(定时器2用于
波特率发生器模式时除外)。
表6 T2作为计数器设置
注①和注②同表5的注①和注②。
6.可编程时钟输出
STC89C51RC/RD+系列单片机,可设定定时/计数器2,通过P1.0输出时钟。P1.0除作通用I/O口外还有两个功能可供选用:用于定时/计数器2的外部计数输入和定时/计数器2时钟信号输出。图5为时钟输出和外部事件计数方式示意图。
T2EX(P1.1)中断请求
2
* d=1,6时钟/机器周期;d=2,12时钟/机器周期
图5 定时器2时钟输出和外部事件计数方式示意图
宏晶科技:专业单片机/存储器供应商 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
MOV
ORLMOV MOV
MOV
ISP_ADDRH,#BYTE_ADDR_HIGH;送地址高字节ISP_ADDRL,#BYTE_ADDR_LOW
EA
;
ISP_CONTR,#WAIT_TIME ;设置等待时间ISP_CONTR,#10000000B ;允许ISP/IAP操作ISP_CMD,
EQU
0
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
MOV
ORL
MOV
MOV
MOVISP_DATA,#ONE_DATA;送字节编程数据到ISP_DATAISP_ADDRH,
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 ;设置等待时间此两句可以合成一句,
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
区), 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系列单片机手册
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
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
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监控程序。
宏晶科技:专业单片机/存储器供应商 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- -
4
3ADC_P13 -
2
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
编程工具。
方式一:用户主应用程序和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引脚图
)
一.三个加密项全部加密
二.缓冲区从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
位,等
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.以下选好型号,打开文件...,
在自定义下载中设置相关选项,选择“发送”即可,
STC-ISP.exe在“发送”完用户自
定义下载命令后,就会转去调用老的
那一套下载命令,而不管用户单片机
程序收到命令没有。(www.61k.com]不过这个转换有
些电脑有时需要将近1S的时间,所以
用户应用程序要延时1S,否则系统
ISP程序收不到下载命令,又会回到
用户应用程序。
7.调试程序时,还可以在选项中选
择“每次下载前自动重新调入文件”,
这样你每次修改原文件并从新编译/
汇编后生成的*.hex,*.bin文件就不
要再次手工调入了,生产时不要用。
宏晶科技:专业单片机/存储器供应商 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引脚图
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
7
6
5
4 3 2
1
0
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)
0.485 inch(12.32 mm)
0.106 (2.69)
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)
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
20S, 20-lead, 0.300" Wide, Plastic Gull WIng SmallOutline (SOIC-20 / SOP-20)
Dimensions in Inches and (Millimeters)
0
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)
宏晶科技:专业单片机/存储器供应商 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_中文指南_
宏晶科技: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_中文指南_
宏晶科技: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电平转换器连接到电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多,故无须买通用编程器。
电脑端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)
按功能分类的指令系统表如下表所示。
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
算术操作类指令
逻辑操作类指令
104
宏晶科技:专业单片机/存储器供应商 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
控制转移类指令
布尔变量操作类指令
宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC 增强型8051单片机中文指南(RC/RD+系列)105
stc89c52中文资料 STC89C52RC_中文指南_
宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
特殊功能寄存器映像 SFR Mapping
特别标出部分为在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
P
7
6
5
4
3
2
1
0
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
0
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下载用户程序时,可振荡器”以在选项中选择:
系统时钟分频寄存器
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口工作类型设定
P3口设定 <P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0>
P2口设定 <P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0>
扩展:stc89c52rc / stc89c52rc中文资料 / 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为弱上拉
注意:
虽然每个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个机器周期以使引脚能够迅速地上拉到高电平。 准双向口输出如下图所示。
VDDVDD
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时提供持续的强上拉。推挽模式一般用于需要更大驱动电流的情况。
推挽引脚配置如下图所示。
VDD
宏晶科技:专业单片机/存储器供应商 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输
入入入入入入入入
来来来来来来来来
用用用用用用用用
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
0
0
0
0
1
1
1
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
0
0
0
0
1
1
1
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
0
0
0
0
1
1
1
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的应用
;用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
0
;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,地址需要改变时才需重新送地址
此两句可合成一句,并且只送一次就够了#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中,然后擦除整个扇区,再将需要保留的数据和需修改的数据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便(不需读出一大堆需保留数据)
。
宏晶科技:专业单片机/存储器供应商 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,
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
定时器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
该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)
中断
* 在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
: 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)
对定时器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
宏晶科技:专业单片机/存储器供应商 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引脚图
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
捕获模式图)
如果CCON SFR的位CCFn和CCAPMn SFR的位ECCFn位被置位,将产生中断。
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位必须都置位。
PCA High-Speed Output Mode / PCA高速输出模式
扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图
脉宽调节模式
所有PCA模块都可用作PWM输出(下图)
。输出频率取决于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编程原理 使用说明
宏晶科技:专业单片机/存储器供应商 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才判是否下载程序。
扩展:stc89c52rc / stc89c52rc中文资料 / stc89c52rc引脚图
宏晶科技:专业单片机/存储器供应商 www.MCU-Memory.com STC 增强型8051单片机中文指南(RC/RD+系列)165
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
指令间接寻址。
使用“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所示。
宏晶科技:专业单片机/存储器供应商 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
0
6SPEN0
5DORD0
4MSTR
0
3CPOL
0
2CPHA
1
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 双器件配置(可器件可互为主从)
上图SPI图2所示为两个器件互为主从的情况。当没有发生SPI操作时,两个器件都可配置为主机
(MSTR=1),将SSIG清零并将P1.4(/SS)配置为准双向模式。当其中一个器件启动传输时,它可将P1.4配置为输出并驱动为低电平,这样就强制另一个器件变为从机。
主机
从机
SPI 图3 SPI 单主机-多从机 配置
在上图SPI图3中,从机的SSIG(SPCTL.7)为0,从机通过对应的/SS 信号被选中。SPI主机可
使用任何端口(包括/SS 脚。
宏晶科技:专业单片机/存储器供应商 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从机模式输出输入输入
主(空闲)
1
0
1
1
主(激活)
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图
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
(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位并行输入口的接口电路图。
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引脚图
H
与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位输出口的接口电路。
当单片机串行口工作在方式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+)
1
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条指令的操作过程,如下图所示。
RLA
RLCA
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
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=?
-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
C
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亿页以上,并且还在保持快速的增长。百度搜索引擎具有高准确性、高查全率、更新快以及服务稳定的特点,能够帮助广大网民快速的在浩如烟海的互联网信息中找到自己需要的信息,因此深受网民的喜爱。
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??英文搜索引擎及目录??
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通配符的意义与用法--中文搜索引擎指南网61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1