0
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心
发布
  • 发文章

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
STC12C5A08S2-35I-LQFP44

STC12C5A08S2-35I-LQFP44

  • 厂商:

    STC(宏晶科技)

  • 封装:

    LQFP44_10X10MM

  • 描述:

    STC12C5A08S2 LQFP44 1.25KB 3.3~5.5V

  • 数据手册
  • 价格&库存
STC12C5A08S2-35I-LQFP44 数据手册
    STC12C5A60S2 系列单片机器件手册     STC12C5201AD 系列单片机器件手册                         --- 1 个时钟 / 机器周期 8051                          --- 无法解密                          --- 低功耗,超低价                         --- 高速,高可靠                         --- 强抗静电,强抗干扰 STC12C5A08CCP, 12C5A08AD,  12C5A08S2 STC12C5A16CCP, 12C5A16AD,  12C5A16S2 STC12C5A20CCP, 12C5A20AD,  12C5A20S2 STC12C5A32CCP, 12C5A32AD,  12C5A32S2 STC12C5A40CCP, 12C5A40AD,  12C5A40S2 STC12C5A48CCP, 12C5A48AD,  12C5A48S2 STC12C5A52CCP, 12C5A52AD,  12C5A52S2 STC12C5A56CCP, 12C5A56AD,  12C5A56S2 STC12C5A60CCP, 12C5A60AD,  12C5A60S2 STC12C5A62CCP, 12C5A62AD,  12C5A62S2 全部中国大陆本土独立自主知识产权,技术处于全球领先水 平,请全体中国人民支持,您的支持是中国大陆本土企业统 一全球市场的有力保证. 宏晶 STC 单片机官方网站: www.STCMCU.com(最新网站) www.MCU-Memory.com(原有网址) Update date: 2009-11-23     STC12C5A60S2 系列单片机器件手册     STC12C5201AD 系列单片机器件手册                         --- 1 个时钟 / 机器周期 8051                          --- 无法解密                          --- 低功耗,超低价                         --- 高速,高可靠                         --- 强抗静电,强抗干扰 STC12C5201, 12C5201PWM, 12C5201AD STC12C5202, 12C5202PWM, 12C5202AD STC12C5204, 12C5204PWM, 12C5204AD STC12C5205, 12C5205PWM, 12C5205AD STC12C5206, 12C5206PWM, 12C5206AD STC12LE5201,12LE5201PWM,12LE5201AD STC12LE5202,12LE5202PWM,12LE5202AD STC12LE5204,12LE5204PWM,12LE5204AD STC12LE5205,12LE5205PWM,12LE5205AD STC12LE5206,12LE5206PWM,12LE5206AD 全部中国大陆本土独立自主知识产权,技术处于全球领先水 平,请全体中国人民支持,您的支持是中国大陆本土企业统 一全球市场的有力保证. 宏晶 STC 单片机官方网站:  www.STCMCU.com(最新网站) www.MCU-Memory.com(原有网址) Update date: 2009-11-23 目录 第 1 章   宏晶 STC 全系列超豪华阵容单片机选型指南 .......................................... 2      1.1   STC12C5A60S2 系列单片机选型指南,多串口,高速 A/D 转换,最多有 44 个 I/O .............. 6      1.2    STC12C5201AD 系列单片机选型指南,小封装,低管脚数,高速 A/D 转换(30 万次 /S) .......8      1.3   STC11/10xx 系列单片机选型指南 .................................................. 10      1.4   STC90 系列单片机选型指南,可直接取代传统 89 系列 ..................................12      1.5   STC12C5620AD 系列单片机选型指南,可直接取代 STC12C5410AD/2052AD 系列 ..............13      1.6   STC12C5410AD/2052AD 系列单片机选型指南 ......................................... 15      1.7   STC89 系列单片机选型指南 ........................................................17 第 2 章  STC12 系列单片机总体介绍 ......................................................... 18      2.1   STC12 系列单片机简介 ........................................................... 18            2.1.1  STC12C5201AD 系列单片机简介...............................................18            2.1.2  STC12C5A60S2 系列单片机简介...............................................19      2.2   STC12 系列单片机选型一览表 ..................................................... 20            2.2.1  STC12C5201AD 系列单片机选型一览表.........................................20            2.2.2  STC12C5A60S2 系列单片机选型一览表.........................................21      2.3   STC12 系列单片机管脚图 ......................................................... 23            2.3.1 STC12C5201AD 系列单片机管脚图 .............................................23            2.3.2 STC12C5A60S2 系列单片机管脚图 .............................................27      2.4   STC12 系列单片机封装尺寸图 ..................................................... 30            2.4.1 STC12C5201AD 系列单片机封装尺寸图 ........................................ 30            2.4.2 STC12C5A60AD/S2 系列单片机封装尺寸图 ......................................38      2.5   STC12 系列单片机命名规则 ....................................................... 42            2.5.1 STC12C5201AD 系列单片机命名规则 .......................................... 42            2.5.2 STC12C5A60S2 系列单片机命名规则 .......................................... 43      2.6   STC12 系列单片机典型应用电路 ................................................... 44            2.6.1 STC12C5201AD 系列单片机 28 脚典型应用电路 .................................. 44            2.6.2 STC12C5201D 系列单片机 20 脚典型应用电路 ................................... 45            2.6.3 STC12C5201AD系列单片机32脚综合应用线路图................................. 46            2.6.4 STC12C5A60S2 系列单片机 40 脚典型应用线路图.................................47      2.7 新增第二复位功能脚(可以不用),低于1.33V复位,通过2个电阻分压可任意调整复位门槛电压...48        2.8   指令系统分类总结,与普通 8051 二进制代码完全兼容,执行速度大幅提升 .............. 49      2.9   特殊功能寄存器映像 ............................................................. 53      2.10  中断优先级及中断寄存器 ......................................................... 57            2.10.1 中断优先级 .............................................................. 57            2.10.2 新增加的几个中断控制位 .................................................. 59      2.11  定时器 0/1 及 UART 串口的速度与普通 8051 兼容,但也可快 12 倍 ........................ 60      2.12  STC12 系列单片机内部 / 外部工作时钟可选 .......................................... 61      2.13  时钟分频寄存器,可将时钟分成较低频率工作 ....................................... 61      2.14  可编程时钟输出 CLKOUT0/CLKOUT1/CLKOUT2  .........................................62      2.15  新增额外外部中断,及可将 CPU 从掉电模式唤醒的管脚  ............................. 64      2.16  外部低压检测,增加了外部低压检测比较功能,可产生中断........................... 65      2.17  STC12C5A60AD 系列单片机内部扩展 1K RAM 的使用 ....................................67      2.18  STC12C5A60AD系列双数据指针的应用...............................................  74      2.19  外部64K 数据总线的速度控制 ......................................................75      2.20   P4 口 /P5 口的使用 ...............................................................76      2.21  可将 SPI/PCA/PWM 及第二个串口分别单独从 P1 口设置到 P4 口 .......................... 77      2.22  串行口 1 使用独立波特率发生器作为波特率发生器 ....................................78      2.23  串行口 2 的使用 .................................................................85      2.24  每个单片机具有全球唯一身份证号码(ID 号)......................................... 98      2.25  如何知道单片机内部的 R/C 振荡器频率(内部时钟频率).................................98 第 3 章  STC12 系列单片机的 I/O 口结构 ..................................................... 99      3.1   I/O 口各种不同的工作模式及配置介绍 ............................................. 99      3.2   I/O 口各种不同的工作模式结构框图 .............................................. 100      3.3   一种典型三极管控制电路 ........................................................ 102      3.4   典型发光二极管控制电路 ........................................................ 102      3.5   混合电压供电系统 3V/5V 器件 I/O 口互连 .......................................... 102      3.6   如何让 I/O 口上电复位时为低电平 ................................................ 102      3.7   PWM 输出时 I/O 口的状态 ......................................................... 102      3.8   I/O 口直接驱动 LED 数码管应用线路图 ............................................. 103      3.9   I/O 口直接驱动 LCD 应用线路图 ................................................... 104      4.0   A/D 做按键扫描应用线路图 ...................................................... 105 第 4 章  STC12 系列单片机的看门狗及软件复位 .............................................. 106      4.1   STC12 系列单片机看门狗应用及测试程序 ........................................... 106            4.1.1 看门狗应用介绍 .......................................................... 106            4.1.2 一个完整的看门狗测试程序,在宏晶的下载板上可以直接测试 .................. 108      4.2   如何用软件实现系统复位 ........................................................ 110      4.3   热启动复位和冷启动复位 ........................................................ 110      4.4   第二复位功能脚,低于 1.33V 复位,通过 2 个电阻分压可任意调整复位门槛电压..........111 第 5 章  STC12 系列单片机的 EEPROM 的应用 ................................................. 112      5.1   IAP 及 EEPROM 新增特殊功能寄存器介绍 ............................................ 112      5.2   STC12C5201AD系列单片机EEPROM地址.............................................. 114      5.3   STC12C5A60S2系列单片机EEPROM地址...............................................115      5.4   IAP及EEPROM汇编简介............................................................ 117      5.5   一个完整的 EEPROM 测试程序,用宏晶的下载板可以直接测试 ......................... 120 第 6 章  STC12 系列单片机的定时器应用 .................................................... 124      6.1   定时器 0/1 的介绍 .............................................................. 124      6.2    定时器 0/1 应用程序举例 ........................................................ 128     6.3  用定时器 1 做波特率发生器(一个完整的测试程序,在宏晶的下载板上可以直接测试).. 133 第 7 章  STC12 系列单片机的 A/D 转换 ...................................................... 140      7.1    STC12C5202AD 系列单片机 A/D 转换相关寄存器 ...................................... 140      7.2    STC12C5A60AD/S2 系列单片机 A/D 转换相关寄存器 ...................................142      7.3    典型 A/D 转换应用线路 .......................................................... 144      7.4   A/D 转换模块的参考电压源 ...................................................... 145      7.5   一个完整的 A/D 转换测试程序,在宏晶的下载板上直接测试通过 ...................... 145 第 8 章  STC12 系列单片机的 PCA/PWM 应用 .................................................. 149      8.1   PCA/PWM 寄存器列表 ............................................................ 149      8.2   PCA/PWM 功能介绍 .............................................................. 151      8.3   用 PCA 功能扩展外部中断的示例程序 .............................................. 156      8 .4   用 PCA 功能做定时器的示例程序(可实现 4 个 16 位定时器) ........................... 160      8.5   PWM 输出 C 语言示例程序 ........................................................ 165     8.6    P CA/PWM 新增特殊功能寄存器声明(汇编)......................................... 166      8.7   PWM 输出汇编语言示例程序 ...................................................... 168      8 .8    用 PCA 做高速脉冲输出的示例程序(输出 125KHz 的方波) ........................... 171       8.9     用定时器 0 的溢出作为 PCA 模块的时钟输入,实现可调频率 PWM 并用 PCA 再实现定时器....175      8.10    利用 PWM 实现 D/A 功能的典型应用电路图 .......................................... 182 第 9 章  STC12 系列单片机的省电模式(掉电模式和空闲模式) .................................. 183      9.1   PCON 寄存器的高级应用,上电复位标志,如何进入掉电模式和空闲模式 ............... 183      9.2   进入掉电模式后由外部中断唤醒 CPU 测试程序(C 语言) ............................... 184      9.3   进入掉电模式后由外部中断唤醒测试程序(汇编语言) ................................ 187 第 10 章   STC12C5201AD 系列单片机电气特性 ................................................. 189 第 11 章  STC12 系列单片机开发 / 编程工具说明 .............................................. 191     11.1  在系统可编程(ISP)原理,官方演示工具使用说明   ................................ 191            11.1.1 在系统可编程(ISP)原理使用说明 ....................................... 191              11.1.2 STC12C5201AD 系列在系统可编程(ISP)典型应用线路图 ..................... 192           11.1.3 STC12C5A60S2 系列在系统可编程(ISP)典型应用线路图 ..................... 193            11.1.4 电脑端的 ISP 控制软件界面使用说明 ........................................ 194            11.1.5 宏晶科技的 ISP 下载编程工具硬件使用说明 .................................. 195            11.1.6 用户板如果没有 RS-232 转换器,如何用宏晶科技的 ISP 下载板做 RS-232 通信转换 . 195      11.2  编译器 / 汇编器,编程器,仿真器(无仿真器如何调试程序) .......................... 196      11.3  自定义下载演示程序(实现不停电下载) ............................................ 197 第 1 2 章  同步串行外围接口(S P I)及测试程序 ........................................... 201       12.1  SPI 功能模块特殊功能寄存器设置................................................. 201      12.2  SPI 功能测试程序 1(适用于单主单从系统,汇编语言).............................. 208       12.3  SPI 功能测试程序2(适用于单主多从系统, 汇编语言)..................................215        12.4  SPI 功能测试程序3(适用于单主单从系统,C语言)......................................222 附录 A    内部常规 256 字节 RAM 间接寻址测试程序  ...........................................232 附录 B    用串行口扩展 I/O 接口 .......................................................... 233 附录 C    利用 STC 单片机普通 I/O 口驱动 LCD 显示 ........................................... 235 附录 D    一个 I/O 口驱动发光二极管并扫描按键 ............................................. 241 附录 E    STC12C5201AD 系列单片机应用注意事项 ............................................ 242 附录 F    STC12C5Axx 系列单片机取代传统 8051 单片机注意事项 ............................... 243 附录 G    如何采购 ...................................................................... 245 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 超强抗干扰 无法解密 宏晶新一代 8051 单片机      8051 单片机全球第一品牌,中国大陆本土 MCU 领航者 宏晶 STC12C5A60S2 系列 2-3 个串口 1T 8051 单片机   1 个时钟 / 机器周期,高速、高可靠,2 路 P W M,8 路 1 0 位高速 A / D 转换,2 5 万次 / 秒 宏晶科技是新一代增强型8051单片机标准的制定者和领导厂商,现已成长为全球最大的8051单片机设计公司,致力于提供满足中国市场需求的世界级高性能 单片机技术,采用宏晶最新第六代加密技术的 STC12C5A60S2 系列单片机无法解密。在高品质的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。 现全力推出“1 个时钟 / 机器周期”的单片机,全面提升 8051 单片机性能。新客户请直接联系深圳,以获得更好的技术支持与服务。 CPU 时钟 另特别增加 无 Port4,Port5 法 可配置 I/O 口 解 密 宏晶 STC12C5A08S2-35C-LQFP44,  RMB 5.0 元起 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/TxD2/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 1 2 3 4 5 6 7 8 9 10 11 宏晶 STC12C5A16S 2-35C-LQFP44, RMB 5.5 元起 STC12C5A60S2/AD/PWM 系列主要性能: ●高速:1 个时钟 / 机器周期,增强型 8051 内核,速度比普通 8051 快 8~12 倍 ●宽电压:5.5~3.3V,2.2~3.6V(STC12LE5A60S2 系列) ●增加第二复位功能脚(高可靠复位,可调整复位门槛电压,频率<12MHz 时,无需此功能) ●增加外部掉电检测电路,可在掉电时,及时将数据保存进EEPROM,正常工作时无需操作EEPROM ●低功耗设计:空闲模式,(可由任意一个中断唤醒) ●低 功耗设计:掉电模式(可由外部中断唤醒),可支持下降沿 / 上升沿和远程唤醒 ●工作频率:0~35MHz,相当于普通 8051:0~420MHz ●时钟:外部晶体或内部 RC 振荡器可选,在 ISP 下载编程用户程序时设置 ● 8/16/20/32/40/48/52/56/60/62K 字节片内 Flash 程序存储器,擦写次数 10 万次以上 ● 1280 字节片内 RAM 数据存储器 ●芯片内 EEPROM 功能,擦写次数 10 万次以上 ● ISP / IAP,在系统可编程 / 在应用可编程,无需编程器 / 仿真器 ● 8 通道,10 位高速 ADC,速度可达 25 万次 / 秒,2 路 PWM 还可当 2 路 D/A 使用 ● 2 通道捕获 / 比较单元(PWM/PCA/CCP ),       --- 也可用来再实现 2 个定时器或 2 个外部中断(支持上升沿 / 下降沿中断) ● 4 个 16 位定时器,兼容普通 8051 的定时器 T0/T1,2 路 PCA 实现 2 个定时器 ●可编程时钟输出功能,T0 在 P3.4 输出时钟,T1 在 P3.5 输出时钟,BRT 在 P1.0 输出时钟 ●硬件看门狗(W D T ) ●高速 SPI 串行通信端口 ●全双工异步串行口(UART),兼容普通 8051 的串口 ●先进的指令集结构,兼容普通 8051 指令集,有硬件乘法 / 除法指令 ●通用 I/O 口(36/40/44 个),复位后为:  准双向口 / 弱上拉(普通 8051 传统 I/O 口)       可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏        每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 100mA LQ F P - 4 4 XTAL1 可配置振荡器 封装形式: PDIP-40 LQFP-44 PLCC-44 LQFP-48 PDIP-48 P0/P1/P2/P3 可配置 I/O 口 增加 P4 口 XTAL2 晶体或 谐振器 高速 SPI 有 40 个 I/O 并可位寻址 片内 R/C 振荡器 超 强 抗 干 扰 36 35 34 33 32 31 30 29 28 27 26 25 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 33 32 31 30 29 28 27 26 25 24 23 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 电源监控: 1.上电复位 2.掉电复位 3.外部可调复位 门槛电压复位 3.外部掉电检测 低 功 耗 1 2 3 4 5 6 7 8 9 10 11 12 LQFP-48 WDT 硬件看门狗 P5.3 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/TxD2/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 Timer 0 Timer 1 2 路 PCA 还可当 2 个定时器使用 增 加 P 4 /P5 口 有 44 个 I/O 口 并可位寻址 内部 大容量 EEPROM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0/TxD2 P1.2/ADC2/ECI/RxD2 P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/RxD2/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 2路 PWM/PCA/CCP 捕获 / 比较单元 可当 8-16位 D/A 使用 CLKOUT2/ADC0/P1.0 ADC1/P1.1 RxD2/ECI/ADC2/P1.2 TxD2/CCP0/ADC3/P1.3  SS/CCP1/ADC4/P1.4 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 WR/P3.6 P0.4/AD4 RD/P3.7 P0.5/AD5 XTAL2 P0.6/AD6 XTAL1 P0.7/AD7 Gnd EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P5.1  44  43  42  41  40  39  38  37  36  35  34 宽 电 压 数据 RAM 1280 字节 每片单片机具有全球唯一身份证号码(ID 号) 无法解密,加密坚不可摧 P5.2 P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0/TxD2 P1.2/ADC2/ECI/RxD2 P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/RxD2/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 8 通道 高速 10 位 A/D 25 万次 / 秒 可实现12-16 位A/D 48 47 46 45 44 43 42 41 40 39 38 37 高 可 靠 13 14 15 16 17 18 19 20 21 22 23 24  Flash  程序存储器 8/16/20/32/40K 48/52/56/60/62K C C P :是英文单词的缩写 Capture(捕获) Compare(比较) PWM(脉宽调制) WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 P5.0 高 速 2-3 个串口 高速独立 波特率发生器 ISP / IAP DIP-40,增 加 P 4 口,有 36 个 I/O 单时钟 1T 8051  CPU 最快指令快 24 倍 12 13 14 15 16 17 18 19 20 21 22 传统 8051 单片机划时代升级换代产品,管脚完全兼容,请直接取代传统 89C51/89S51 系列单片机 复位脚:烧录程序时如设置为 I/O 口,        可当 I/O 口使用或浮空 EX_LVD:是外部低压检测中断 / 比较器 不用的 I/O 口:浮空即可 使用 LQFP48/PDIP48 封装时,最多有 44 个 I/O 口 使用 LQFP44 封装时,最多有 40 个 I/O 口 使用 PDIP40 封装时,最多有 36 个 I/O 口 选 择 S T C 12C5A60S2/AD/PWM 系 列 单 片 机 的 理 由 : ★ 无法解密,采用宏晶最新第六代加密技术 ★ 超 强 抗 干 扰 ,整机轻松过 2 万伏静电测试 ★ 速度快, 1 个时钟 / 机器周期,可用低频晶振,大幅降低 E M I       --- 出口欧美的有力保证 ★ 支持掉电唤醒的管脚:INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0, CCP0/P1.3( 或 P4.2),CCP1/P1.4(或 P4.3),EX_LVD/P4.6 ★ 超低功耗: 掉电模式:外部中断唤醒功耗 <0.1uA,支持下降沿 / 上升沿 / 低电平和远程唤醒 适用于电池供电系统 ,如水表、气表、便携设备等 。 空闲模式: 典型功耗 <1.3mA, 正常工作模式:2mA - 7mA ★ 输入 / 输出口多,最多有 44 个 I/O 口,A/D 做按键扫描还可以节省很多 I/O ★ 在系统可编程, 无需编程器, 无需仿真器,可远程升级 ★ 可送 STC-ISP 下载编程器,1 万片 / 人 / 天 ★ 内部集成高可靠复位电路,外部复位电路可彻底省掉,当然也可以继续用 外部复位电路 宏晶 STC 单片机官方网站:www.STCMCU.com    技术支持:13922805190 深  圳:Tel:0755-82948411     82948412      Fax:0755-82944243   82905966 8051 单片机全球第一品牌 中国大陆本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服务 广州办:Tel:020-87501705    85518657      Fax:020-85517881 上海办:Tel:021-53560136    53560138     Fax:021-53080587 北京办:Tel:010-62538687     62634001      Fax:010-62538683 免费索取      从网上下载样品申请单,    传真至深圳申请 STC 单片机   样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   6 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243          宏晶科技 STC12C5A60AD/S2 系列单片机选型一览表 型 号 Flash 定  程序 时 工作 SRAM 存储 器 电压(V) 字节 器 T0 字节 T1 P C A 定 时 器 U A R T 独 立 波 特 率 发 生 器 A/D D PCA 8路 P EEP 16位 25万 T ROM PWM 次每 R 8位 秒 I/O 外部 内 可调 看 置 复位 门 复 门槛 狗 位 电压 封装 外部 封装 实时 封装 44-Pin 48-Pin 低压 40-Pin 40个I/O 44个I/O 检测 36个I/O LQFP44 LQFP48 中断 PLCC44 PDIP48 STC12C5A60AD系列单片机选型一览(另有3V低电压系列单片机可供用户选择) STC12C5A08PWM 5.5 - 3.5 8K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A08AD 5.5 - 3.5 8K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A08S2 5.5 - 3.5 8K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A16AD 5.5 - 3.5 16K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A16S2 5.5 - 3.5 16K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A20AD 5.5 - 3.5 20K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A20S2 5.5 - 3.5 20K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A32AD 5.5 - 3.5 32K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A32S2 5.5 - 3.5 32K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A40AD 5.5 - 3.5 40K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A40S2 5.5 - 3.5 40K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A48AD 5.5 - 3.5 48K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A48S2 5.5 - 3.5 48K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A52AD 5.5 - 3.5 52K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A52S2 5.5 - 3.5 52K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A56AD 5.5 - 3.5 56K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A56S2 5.5 - 3.5 56K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A60AD 5.5 - 3.5 60K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A60S2 5.5 - 3.5 60K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A16PWM 5.5 - 3.5 16K 1280 有 2 1 有 2 有 2路 STC12C5A20PWM 5.5 - 3.5 20K 1280 有 2 1 有 2 有 2路 STC12C5A32PWM 5.5 - 3.5 32K 1280 有 2 1 有 2 有 2路 STC12C5A40PWM 5.5 - 3.5 40K 1280 有 2 1 有 2 有 2路 STC12C5A48PWM 5.5 - 3.5 48K 1280 有 2 1 有 2 有 2路 STC12C5A52PWM 5.5 - 3.5 52K 1280 有 2 1 有 2 有 2路 STC12C5A56PWM 5.5 - 3.5 56K 1280 有 2 1 有 2 有 2路 STC12C5A60PWM 5.5 - 3.5 60K 1280 有 2 1 有 2 有 2路 STC12C5A62PWM 5.5 - 3.5  62K 1280 有 2 1 有 2 2路 36/40/44 有 有 有 有 PDIP40 全有 全有 STC12C5A62AD 5.5 - 3.5 62K 1280 有 2 1 有 2 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有 IAP12C5A62S2 5.5 - 3.5  62K 1280 有 2 2 有 2 2路 10位 36/40/44 有 有 有 有 PDIP40 全有 全有     STC12C5A60S2 系列单片机单片机 P4.7/RST 脚做 I/O 口使用时,必须外接晶振,内部 RC 振荡 器无效。为防止第一次在用户目标板上因为 P4.7/RST 脚被外围器件拉高,造成无法下载用户程 序,建议用户在 P4.7/RST 脚接一个 470 欧姆到 1K 的下拉电阻。 以上只列举了 STC12C5A60S2 系列部分 5 伏型号,3V 单片机型号请参阅 STC12C5A60S2 系列用户手册。 更多型号请登陆宏晶科技官方网站   www.STCMCU.com  下载更多资料 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  7 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 超强抗干扰 无法解密 宏晶新一代 8051 单片机      8051 单片机全球第一品牌,中国大陆本土 MCU 领航者 宏晶 STC12C5201AD 系列 1T 8051 单片机,超低价 A/D 转换单片机 1 个时钟 / 机器周期,高速、高可靠,2 路 P W M ,8 路 8 位高速 A / D 转换,3 0 万次每秒 宏晶科技是新一代增强型8051单片机标准的制定者和领导厂商,现已成长为全球最大的8051单片机设计公司,致力于提供满足中国市场需求的世界级高性能 单片机技术,采用宏晶最新第六代加密技术的 STC12C5201AD 系列单片机无法解密。在高品质的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。 现全力推出“1 个时钟 / 机器周期”的单片机,全面提升 8051 单片机性能。新客户请直接联系深圳,以获得更好的技术支持与服务。 每片单片机具有全球唯一身份证号码(ID 强烈推荐选择 SOP-16/20/28/LQFP32 贴片封装 RxD/P3.0 8 通道 高速 8 位 A/D 30 万次 / 秒 TxD/P3.1 XTAL2 XTAL1 INT1/P3.3 1K 字节 EEPROM 低 功 耗 XTAL2 晶体或 谐振器 XTAL1 可配置振荡器 无 法 解 密 Timer 0 Timer 1 2 路 PCA 还可当 2 个定时器使用 Port1,Port3 可配置 I/O 口 TxD/P3.1 P0.0 XTAL2 XTAL1 INT0/P3.2 P0.1 INT1/P3.3 CLKOUT0/ECI/T0/P3.4 Port2,Port0 可配置 I/O 口 大客户特价支持 CPU 时钟 宏晶 STC12C5201AD 系列主要性能: DIP-18 SOP20/DIP20/LSSOP20 SOP28/SKDIP28 LQFP32/SOP32 1 2 3 4 5 6 7 8 无 法 解 密 24 23 22 21 20 19 18 ●高速:1 个时钟 / 机器周期,增强型 8051 内核,速度比普通 8051 快 8~12 倍 ●宽电压:5.5~3.3V,2.2~3.6V(STC12LE5201AD 系列) ●增加第二复位功能脚(内部高可靠复位,可调整复位门槛电压,频率<12MHz 时,无需此功能) ●增加外部掉电检测电路(P1.2),可在掉电时,及时将数据保存进EEPROM(正常工作时无需操作EEPROM) ●外部低压掉电检测(P1.2/EX_LVD) ●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒) ●工作频率:0~35MHz,相当于普通 8051:0~420MHz ●时钟:外部晶体或内部 RC 振荡器可选,在 ISP 下载编程用户程序时设置 ● 1K/2K/4K/5K/6K 字节片内 Flash 程序存储器,擦写次数 10 万次以上 ● 256 字节片内 RAM 数据存储器 ●芯片内 EEPROM 功能,擦写次数 10 万次以上 ● ISP / IAP,在系统可编程 / 在应用可编程,无需编程器 / 仿真器 ● 8 通道,8 位高速 ADC,速度可达 30 万次 / 秒,2 路 PWM 还可当 2 路 D/A 使用 ● 2 通道捕获 / 比较单元(PWM/PCA/CCP ),       --- 也可用来再实现 2 个定时器或 2 个外部中断(支持上升沿 / 下降沿中断) ● 4 个 16 位定时器,兼容普通 8051 的定时器 T0/T1,2 路 PCA 实现 2 个定时器 ●可编程时钟输出功能,T0 在 P3.4 输出时钟,T1 在 P3.5 输出时钟 ●硬件看门狗(W D T ) ●全双工异步串行口(UART),兼容普通 8051 的串口 ●先进的指令集结构,兼容普通 8051 指令集       有硬件乘法 / 除法指令 ●通用 I/O 口(27/23/15 个),复位后为:  准双向口 / 弱上拉(普通 8051 传统 I/O 口)       可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏        每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 无 法 解 密 28 27 26 25 24 23 22 21 20 19 18 17 16 15 VCC P2.1 P2.0 P1.7/ADC7 P1.6/ADC6 P1.5/ADC5 P1.4/ADC4 P1.3/ADC3 P1.2/ADC2/EX_LVD/RST2 P1.1/ADC1 P1.0/ADC0 P3.7/CCP0 P2.7 P2.6 RST      1         20      VCC 无 RxD/P3.0      2         19      P1.7/ADC7 P1.6/ADC6 法 TxD/P3.1       3         18      P1.6/ADC6 P1.5/ADC5 P0.3 XTAL2      4         17      P1.5/ADC5 解 P1.4/ADC4 XTAL1       5         16      P1.4/ADC4 密 P1.3/ADC3 INT0/P3.2       6         15      P1.3/ADC3 P0.2 P1.2/ADC2/EX_LVD/RST2 INT1/P3.3       7         14      P1.2/ADC2/EX_LVD P1.1/ADC1 CLKOUT0/ECI/T0/P3.4       8         13      P1.1/ADC1 CLKOUT1/CCP1/T1/P3.5       9         12      P1.0/ADC0 Gnd      10        11      P3.7/CCP0 ISP/IAP 片内 R/C 振荡器 超 强 抗 干 扰 SOP-16,DIP-16 LQFP-32 ISP/IAP 电源监控: 1.外部掉电检测 2.上电复位 3.掉电复位 Gnd 25 26 27 28 29 30 31 32 WDT 硬件看门狗 CLKOUT0/ECI/T0/P3.4 高速 UART 全双工串行口 ISP / IAP P2.2 P2.3 P1.7/ADC7 RST RxD/P3.0 P1.6/ADC6 TxD/P3.1 P1.5/ADC5 XTAL2 P1.2/ADC2/EX_LVD/RST2 XTAL1 P1.1/ADC1 INT0/P3.2 INT1/P3.3 P1.0/ADC0 CLKOUT0/ECI/T0/P3.4 P3.7/CCP0 CLKOUT1/CCP1/T1/P3.5 P2.4 封装形式: P2.5 SOP16/DIP16 Gnd VCC P3.0/RxD RST P2.3 P2.2 Vcc P2.1 P2.0 P1.7/ADC7 宽 电 压 数据 RAM 256 字节 16 无 法 15 解 14 密 13 12 11 10 9 ISP/IAP 1 2 3 4 5 6 7 8 RST 9 10 11 12 13 14 15 16 高 可 靠 2路 PWM/PCA/CCP 捕获 / 比较单元 可当 8-16 位 D/A 使用 ISP/IAP  Flash(10 万次) 程序存储器 1/2/4/5/6K 高 速 CLKOUT1/CCP1/T1/P3.5 P2.4 P2.5 Gnd P2.6 P2.7 CCP0/P3.7 ADC0/P1.0 单时钟 1T 8051  CPU 最快指令快 24 倍 号),无法解密,加密坚不可摧 C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM脉宽调制) SOP-28 / SKDIP-28(窄体) SOP-20,DIP-20 宏晶 STC12C5201AD-35C-SOP16, RMB 2.49 元起 宏晶 STC12C5204AD-35C-LQFP32,RMB 3.99 元起  ★如选 32-Pin,推荐优选 LQFP32 ★如果 I/O 口不够用,可以用 2 到 3 根普通 I/O 口线 外接 7 4 H C 1 6 4 / 1 6 5 / 5 9 5 (均可级联)来扩展 I / O 口, 还可用 A / D 做按键扫描来节省 I / O 口 选 择 宏晶 S T C 12C5201AD 系 列 单 片 机 的 理 由 : ★ 无法解密,采用宏晶最新第六代加密技术 ★ 超强抗干扰: 1 、高 抗 静 电 ( E S D 保 护 ),整机轻松过 2 万伏静电测试 2 、轻松过 4KV 快速脉冲干扰(EFT 测试) 3 、宽 电 压 , 不 怕 电 源 抖 动 4 、宽 温 度 范 围, - 4 0 ℃ ~ 8 5 ℃ ★ 1 个时钟 / 机器周期,可用低频晶振,大幅降低 E M I       --- 出口欧美的有力保证 ★ 超低功耗: 1 、掉电模式:         典型功耗    <0.1 μ A 2 、空闲模式:      典型功耗   1.8mA 3、正常工作模式:  典型功耗   2.7mA - 7mA 4 、掉电模式可由外部中断唤醒,适用于电池   供电系统,如水表、气表、便携设备等。 ★ 在系统可编程, 无需编程器, 无需仿真器,可远程升级 ★ 可送 STC-ISP 下载编程器,1 万片 / 人 / 天 ★ 内部集成高可靠复位电路,外部复位电路可彻底省掉,当然也 可以继续用外部复位电路   宏晶 STC 单片机官方网址:www.STCMCU.com    技术支持:13922805190 深  圳:Tel:0755-82948411     82948412      Fax:0755-82944243   82905966 8051 单片机全球第一品牌 中国大陆本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服务 广州办:Tel:020-87501705    85518657      Fax:020-85517881 上海办:Tel:021-53560136    53560138     Fax:021-53080587 北京办:Tel:010-62538687     62634001      Fax:010-62538683 免费索取      从网上下载样品申请单,    传真至深圳申请 STC 单片机   样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   8 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243       宏晶科技 STC12C5201AD 系列单片机选型一览表 -型 号 P U Flash 定 C A  程序 时 工作 SRAM A R 存储 器 电压(V) 字节 定 T 器 T0 时串 字节 T1 器口 D PCA P EEP 16位 A/D T ROM PWM 8路 R 8位 I/O 内 看 置 门 复 狗 位 外 部 低 封装 封装 压 16-Pin 18-Pin 检 测 封装 20-Pin 封装 28-Pin 封装 32-Pin STC12C5201AD/PWM系列单片机选型一览 STC12C5201 5.5 - 3.3 1K 256 有 有 1 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12C5201PWM 5.5 - 3.3 1K 256 有 2 有 1 有 2路 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12C5201AD 5.5 - 3.3 1K 256 有 2 有 1 有 2路 8位 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12C5202 5.5 - 3.3 2K 256 有 有 1 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP LQFP/SOP STC12C5202PWM 5.5 - 3.3 2K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP LQFP/SOP STC12C5202AD 5.5 - 3.3 2K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP LQFP/SOP STC12C5204 5.5 - 3.3 4K 256 有 有 1 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP LQFP/SOP STC12C5204PWM 5.5 - 3.3 4K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP LQFP/SOP STC12C5204AD 5.5 - 3.3 4K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP LQFP/SOP STC12C5205 5.5 - 3.3 5K 256 有 有 1 11/13/15/23/27 有 有 有 SOP/DIP DIP STC12C5205PWM 5.5 - 3.3 5K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP STC12C5205AD 5.5 - 3.3 5K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP STC12C5206 5.5 - 3.3 6K 256 有 DIP STC12C5206PWM 5.5 - 3.3 6K 256 有 2 有 1 2路 STC12C5206AD 5.5 - 3.3 6K 256 有 2 有 1 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP 有 1 11/13/15/23/27 有 有 有 SOP/DIP 11/13/15/23/27 有 有 有 SOP/DIP 需P1.0/P1.1 = 0/0和外部时钟才可以下 载用户程序(无ID号) 可在程序区修改程序区 DIP 需P1.0/P1.1 = 0/0和外部时钟才可以下 载用户程序(无ID号) DIP STC12LE5201AD/PWM系列单片机选型一览 STC12LE5201 3.6 - 2.2 1K 256 有 有 1 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12LE5201PWM 3.6 - 2.2 1K 256 有 2 有 1 有 2路 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12LE5201AD 3.6 - 2.2 1K 256 有 2 有 1 有 2路 8位 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12LE5202 3.6 - 2.2 2K 256 有 有 1 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5202PWM 3.6 - 2.2 2K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5202AD 3.6 - 2.2 2K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5204 3.6 - 2.2 4K 256 有 有 1 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5204PWM 3.6 - 2.2 4K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5204AD 3.6 - 2.2 4K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5205 3.6 - 2.2 5K 256 有 有 1 11/13/15/23/27 有 有 有 SOP/DIP DIP STC12LE5205PWM 3.6 - 2.2 5K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP STC12LE5205AD 3.6 - 2.2 5K 256 有 2 有  1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP STC12LE5206 3.6 - 2.2 6K 256 有 DIP STC12LE5206PWM 3.6 - 2.2 6K 256 有 2 有 1 2路 STC12LE5206AD 6K 256 有 2 有 1 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP 3.6 - 2.2 有 1 11/13/15/23/27 有 有 有 SOP/DIP 11/13/15/23/27 有 有 有 SOP/DIP 需P1.0/P1.1 = 0/0和外部时钟才可以下 载用户程序(无ID号) 可在程序区修改程序区 DIP 需P1.0/P1.1 = 0/0和外部时钟才可以下 载用户程序(无ID号) DIP 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  9 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 超强抗干扰 无法解密  宏晶新一代 8051 单片机       8051 单片机全球第一品牌,中国 MCU 领航者 宏晶 STC11/10xx 系列 1T 8051 单片机     1 个时钟 / 机器周期,高速、高可靠 宏晶科技是新一代增强型8051单片机标准的制定者和领导厂商,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆 盖全国。在高品质的基础上, 以极低的价格和完善的服务赢得了客户的长期信赖。现全力推出“1 个时钟 / 机器周期”的单片机, 全面提升 8 0 5 1 单片机 性能。欢迎海内外厂家前来洽谈合作! 新客户请直接联系深圳, 以获得更好的技术支持与服务。每片单片机具有全球唯一身份证号码(ID 号) 传统 8051 单片机划时代升级换代产品,管脚完全兼容, 请直接取代传统 89C51/89S51 系列单片机 1 18 2 17 TxD/P3.1 3 16 P1.6/RxD/INT XTAL2 4 15 P1.5 XTAL1 5 14 P1.4 13 P1.2 12 P1.1 11 P1.0 Gnd 8 11 10 9 串口做主机通信时,可控制串口通信在 [RxD/P3.0,TxD/P3.1]和[RxD/P1.6,TxD/P1.7] 之间任意切换,实现 2 组串口。 建议用户将串口设在[RxD/P1.6,TxD/P1.7] 6 7 CLKOUT1/INT/T1/P3.5 8 Gnd 9 10 P3.7 20 VCC 19 P1.7/TxD 1 2 TxD/P3.1 3 XTAL2 4 CLKOUT1/INT/T1/P3.5 Gnd 5 6 7 8 9 10 14 P1.5 INT/RxD/P1.6 TxD/P1.7 P1.6/RxD/INT P4.7/RST INT/RxD/P3.0 P1.5 P4.3 TxD/P3.1 P1.4 INT0/P3.2 INT1/P3.3 P1.3 CLKOUT0/INT/T0/P3.4 CLKOUT1/INT/T1/P3.5 P1.2 13 P1.1 12 P1.0 11 P3.7 18 17 16 15 1 2 3 4 5 6 7 8 9 10 11 33 32 31 30 29 28 27 26 25 24 23 P0.4 P0.5 P0.6 P0.7 NA/P4.6 P4.1 ALE/P4.5 NA/P4.4 P2.7 P2.6 P2.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P4.0 P2.0 P2.1 P2.2 P2.3 P2.4 P3.6/RST INT/RxD/P3.0 P1.4 P1.3 P1.2 P1.1 P1.0/CLKOUT2 P4.2 VCC P0.0 P0.1 P0.2 P0.3 INT1/P3.3 CLKOUT0/INT/T0/P3.4 无 XTAL1 法 INT0/P3.2 解 STC11F02-35C-SOP20 RMB : 2.50 元 INT1/P3.3 密 直接取代 89C2051 CLKOUT0/INT/T0/P3.4 宏晶 STC11/10xx 系列主要性能: 7 12  44  43  42  41  40  39  38  37  36  35  34 6 VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 NA/P4.6 ALE/P4.5 NA/P4.4 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 12 13 14 15 16 17 18 19 20 21 22 INT1/P3.3 CLKOUT0/INT/T0/P3.4 13 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 LQ FP-44 CPU 时钟 5 14 增加 P4 口 XTAL1 可配置振荡器 XTAL1 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 VCC 有 40 个 I/O 并可位寻址 晶体或 谐振器 电源监控: 1.掉电检测 2.上电复位 3.掉电复位 4.内部高可靠复 位,彻底省掉 外部复位 4 SOP-20 / DIP-20 XTAL2 WDT 硬件看门狗 XTAL2 有16 个I/O 口 片内 R/C 振荡器 超 强 抗 干 扰 内部 大容量 EEPROM 3 DIP-18 另特别增加 Port4 可配置 I/O 口 低 功 耗 2 TxD/P3.1 SOP-16 / DIP-16 P0/P1/P2/P3 可配置 I/O 口 宽 电 压 Timer 0 Timer 1 独立波特率 发生器 掉电唤醒 专用定时器 INT/RxD/P3.0 16 有 14 个 I/O 口 数据 RAM 1280/512/256 字节 高 可 靠 1-2 个 UART/ 串口 高速独立 波特率发生器 ISP / IAP 1 有 12 个 I/O 口  Flash(10 万次)  程序存储器 1/2/3/4/5/8/16K  20/32/40/62K... 高 速 P3.6/RST DIP40,增 加 P 4 口,有 36 个 I/O P3.6/RST INT/RxD/P3.0 CLKOUT2/P1.0 P1.1 P1.2 P1.3 P1.7/TxD P1.4 P1.5 P1.6/RxD/INT INT/RxD/P1.6 P1.5 TxD/P1.7 P4.7/RST P1.2 INT/RxD/P3.0 P1.1 TxD/P3.1 INT0/P3.2 P1.0 INT1/P3.3 P3.7 CLKOUT0/INT/T0/P3.4 CLKOUT1/INT/T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 VCC XTAL1 Gnd P1.7/TxD STC11F01-35C-SOP16 RMB : 1.99 元 单时钟 1T 8051  CPU 最快指令快 24 倍 无法解密,加密坚不可摧 STC10F04-35C-LQFP44, RMB : 2.99 元 ●高速:1 个时钟 / 机器周期,增强型 8051 内核,速度比普通 8051 快 8~12 倍 复位脚:烧录程序时如设置为 I/O 口,可当 I/O 口使用或浮空 ●宽电压:5.5~4.1V/3.7V,3.6V~2.4V/2.1V(STC11/10L 系列) ●低功耗设计:空闲模式( 可由任意一个中断唤醒) 不用的 I/O 口:浮空即可 ●低功耗设计:掉电模式(可由任意一个外部中断唤醒,可支持下降沿 / 低电平 使用 LQFP44 封装时,最多有 40 个 I/O 口              和远程唤醒,STC11xx 系列还可通过内部专用掉电唤醒定时器唤醒) ●支持掉电唤醒的管脚: INT0/P3.2,INT1/P3.3,T0/P3.4,T1/P3.5,RxD/P3.0(或 RxD/P1.6) 使用 PDIP40 封装时,最多有 36 个 I/O 口 ●工作频率:0~35MHz,相当于普通 8051:0~420MHz ●时钟:外部晶体或内部 RC 振荡器可选,在 ISP 下载编程用户程序时设置 ★ 加密性强,无法解密,采用宏晶最新第六代加密技术 ● 1/2/3/4/5/6/8/16/32/52/62K 字节片内 Flash 程序存储器,擦写次数 10 万次以上 ● 1280/256 字节片内 RAM 数据存储器 ★ 超 强 抗干扰,超强抗静电,整机可轻松过 2 万伏静电测试 ●芯片内 EEPROM 功能,擦写次数 10 万次以上 ★ 速度快, 1 个时钟 / 机器周期,可用低频晶振,大幅降低 E M I ● ISP / IAP,在系统可编程 / 在应用可编程,无需编程器 / 仿真器       --- 出口欧美的有力保证 ● 2 个 16 位定时器,兼容普通 8051 的定时器 T0/T1 ★ 输入 / 输出口多,最多有 40 个 I/O,复位脚如当 I/O 口使用,可省去外部复位电路 ● 1 个独立波特率发生器(故无需 T 2 做波特率发生器),缺省是 T 1 做波特率发生器 ★ 超低功耗: ●可编程时钟输出功能,T0 在 P3.4 输出时钟,T1 在 P3.5 输出时钟,BRT 在 P1.0 输出时钟 掉电模式:外部中断唤醒功耗 <0.1uA,支持下降沿 / 低电平和远程唤醒 ●硬件看门狗(W D T )          STC11xx 系列增加了掉电唤醒专用定时器,启动掉电唤醒定时器 ●全双工异步串行口(UART),兼容普通 8051,可当 2 个串口使用(串口可在 P3 与 P1 之间任意切换)           典型功耗<2uA ●先进的指令集结构,兼容普通 8051 指令集,有硬件乘法 / 除法指令         适用于电池供电系统,如水表、气表、便携设备等。 ●通用 I / O 口(3 6 / 4 0 个),复位后为:  准双向口 / 弱上拉(普通 8 0 5 1 传统 I / O 口) 空闲模式:     典型功耗 <1.3mA 正常工作模式: 2mA - 7mA 可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏 ★ 在系统可编程, 无需编程器, 无需仿真器,可远程升级 每个 I/O 口驱动能力均可达到 20mA,44/40 管脚的 IC 建议整个芯片不要超过 120mA, ★ 可送 STC-ISP 下载编程器,1 万片 / 人 / 天         20/18/16 管脚的 IC 建议整个芯片不要超过 60mA ★ 内部集成高可靠复位电路,复位脚设置为 I / O 口使用时,复位脚可浮空 选 择 宏晶 S T C 11/10xx 系 列 单 片 机 的 理 由 : 宏晶 STC 单片机官方网站:www.STCMCU.com    技术支持:13922805190 8051 单片机全球第一品牌 中国大陆本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服务 直接取代 89C51/S51 的       宏晶 STC10F04-35C-LQFP44,      RMB:2.99 元 直接取代 89C52/S52 的       宏晶 STC10F08-35C-LQFP44,      RMB:3.50 元 直接取代 89C54/78E54 的     宏晶 STC10F12-35C-LQFP44,      RMB:4.30 元 直接取代 89C54/78E54 的     宏晶 STC10F12XE-35C-LQFP44,    RMB:4.50 元 直接取代 89C54/78E54 的     宏晶 STC11F16XE-35C-LQFP44,    RMB:4.99 元 直接取代 89C58/78E58 的     宏晶 STC11F32XE-35C-LQFP44,    RMB:5.80 元 直接取代 89C516/78E516 的   宏晶 STC11F60XE-35C-LQFP44,    RMB:6.30 元 免费索取      从网上下载样品申请单,    传真至深圳申请 STC 单片机   样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   10 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 宏晶采用最新第六代加密技术的 STC11F/10Fxx 系列单片机选型一览表 直接取代全球各厂家均已被解密的 89 系列单片机 Flash  程序 存储器 字节 工作 电 压 (V)     型 号 SRAM 字节 EEP ROM 定 时 器 T0 T1 UART 串口 有独 立波 特率 发生 器 D P T R 中 断 优 先 级 内 部 低 压 中 断 支持 掉电 唤醒 外部 中断 掉电 唤醒 专用 定时 器 内置 复位 并可 选择 复位 门槛 电压 看 门 狗 封装 40-Pin 36个 I/O 封装 44-Pin 40个 I/O STC11F60XE系 列 单 片 机 选 型 一 览(另 有 3V低 压 系 列 单 片 机 可 供 选 择 ) STC11F60XE 5.5 - 4.1/3.7 60K 1280 1K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F56XE 5.5 - 4.1/3.7 56K 1280 5K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F52XE 5.5 - 4.1/3.7 52K 1280 9K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F48XE 5.5 - 4.1/3.7 48K 1280 13K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F40XE 5.5 - 4.1/3.7 40K 1280 21K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F32XE 5.5 - 4.1/3.7 32K 1280 29K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F20XE 5.5 - 4.1/3.7 20K 1280 29K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F16XE 5.5 - 4.1/3.7 16K 1280 32K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC STC11F08XE 5.5 - 4.1/3.7 8K 1280 32K 有 1-2个 2 2 有 5个 有 有 有 PDIP/QFN LQFP/PLCC 有 可在程序区修改程序区 需 P1.0/P1.1 = 0/0和 外 部时钟才可以下载用户 程 序 (无 ID号 ) IAP11F62X 5.5 - 4.1/3.7 62K 1280   IAP 有 1-2个 2 2 有 5个 有 有 STC10Fxx系 列 单 片 机 选 型 一 览(另 有 3V低 压 系 列 单 片 机 可 供 选 择 ) STC10F04 5.5 - 3.8/3.3 4K 256 - 有 1-2个 2 2 有 5个 - 有 有 PDIP/QFN LQFP/PLCC STC10F04XE 5.5 - 3.8/3.3 4K 512   5K 有 1-2个 2 2 有 5个 - 有 有 PDIP/QFN LQFP/PLCC STC10F08 5.5 - 3.8/3.3 8K 256 - 有 1-2个 2 2 有 5个 - 有 有 PDIP/QFN LQFP/PLCC STC10F08XE 5.5 - 3.8/3.3 8K 512   5K 有 1-2个 2 2 有 5个 - 有 有 PDIP/QFN LQFP/PLCC STC10F12 5.5 - 3.8/3.3 12K 256 - 有 1-2个 2 2 有 5个 - 有 有 PDIP/QFN LQFP/PLCC STC10F12XE 5.5 - 3.8/3.3 12K 512   1K 有 1-2个 2 2 有 5个 - 有 有 PDIP/QFN LQFP/PLCC IAP10F14X 5.5 - 3.8/3.3 14K 512   IAP 有 1-2个 2 2 有 5个 - 有 有 可在程序区修改程序区 需 P1.0/P1.1 = 0/0和 外 部时钟才可以下载用户 程 序 ( 无 ID号 )     型 号 工作 电压(V) Flash  程序 SRAM 存储器 字节 字节 EEP ROM 定 时 器 T0 T1 UART 串口 无独 立波 特率 发生 器 内 中 部 D 断 低 P 优 压 T 先 中 R 级 断 支持 掉电 唤醒 外部 中断 掉电 唤醒 专用 定时 器 内置 复位 并可 看 选择 门 复位 狗 门槛 电压 封装 16-Pin 12个I/O 封装 封装 18-Pin 20-Pin 14个I/O 16 个I/O STC11F02E系列单片机选型一览(另有3V低压系列单片机可供选择,并且有STC11F02系列不带内部EEPROM,价格更低) STC11F01E 5.5 - 4.1/3.5 1K 256 2K 有 1-2个 1 2 有 5个 有 有 有 SOP/DIP SOP/DIP SOP/DIP STC11F02E 5.5 - 4.1/3.5 2K 256 2K 有 1-2个 1 2 有 5个 有 有 有 SOP/DIP SOP/DIP SOP/DIP STC11F03E 5.5 - 4.1/3.5 3K 256 2K 有 1-2个 1 2 有 5个 有 有 有 SOP/DIP SOP/DIP SOP/DIP STC11F04E 5.5 - 4.1/3.5 4K 256 1K 有 1-2个 1 2 有 5个 有 有 有 SOP/DIP SOP/DIP SOP/DIP STC11F05E 5.5 - 4.1/3.5 5K 256 1K 有 1-2个 1 2 有 5个 有 有 需P1.0/P1.1 = 0/0和外部时 有 钟才可以下载用户程序 IAP11F06 6K 256 IAP 有 1-2个 1 2 有 5个 有 有 可在程序区修改程序区 有 需P1.0/P1.1 = 0/0和外部时 钟才可以下载用户程序 5.5 - 4.1/3.5 以上只列举了 STC11/10xx 系列部分 5 伏型号,3V 单片机型号请参阅 STC11/10xx 系列单片机用户手册, 更多型号请登陆宏晶科技官方网站   www.STCMCU.com  下载更多资料 QFN-40Pin 封装外形尺寸 5 x 5mm, 管脚间距 0.4mm. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  11 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 宏晶 STC 90C51 系 列 单 片 机 , 高 可 靠 、 在 线 编 程 STC90C51 系列解决了全球各厂家 89 系列均已被解密的问题,软硬件完全兼容 内置系统 SRAM 字节 闪存 ISP 监控程序 P4口地址 0E8H INT2/P4.3 INT3/P4.2 P4 口均可位寻址 P0 高速 ( 0 - 80M ),高可靠  集成 MAX810    √    掉电模式: < 0.1μ A,   空闲模式: 2mA P2 P4.0—P4.6 P3 UART(串口) 双数据 3 个定时器 指针 七个附送   I/O 端口 专用复位电路 12MHz 以下复位脚 可直接接地 单倍速和双倍速可 “I S P ”反复设置 + 低功耗, 超低价     封装形式:       LQFP-44     PDIP-40     PLCC-44     型 号 工作 电 压 (V) Flash  程序 存储 器 字节 SRAM 字节 EEP ROM 定 时 器 双 倍 速 I/O 口 支持 掉电 唤醒 外部 中断 STC90C51 5.5 - 3.8 4K 256 - 3个 有 39个 4个 内 置 看 复 门 位 狗 I S P I LQFP A 商规 P 价格 STC90C51 RC 5.5 - 3.8 4K 512 5K 3个 有 39个 4个 有 有 有 有 3.30 5.5 - 3.8 8K 256 - 3个 有 39个 4个 有 有 有 有 3.30 STC90C52 RC 5.5 - 3.8 8K 512 5K 3个 有 39个 4个 有 有 有 有 3.50 STC90C10 RC 5.5 - 3.8 10K 512 3K 3个 有 39个 4个 有 有 有 有 4.30 12K 512 1K 3个 有 39个 4个 有 有 有 有 4.30 13K 512 - 3个 有 39个 4个 有 有 有 - STC90C54 RD+ 5.5 - 3.8 16K 1280 45K 3个 有 39个 4个 有 有 有 有 4.99 STC90C58 RD+ 5.5 - 3.8 32K 1280 29K 3个 有 39个 4个 有 有 有 有 5.50 STC90C510RD+ 5.5 - 3.8 40K 1280 21K 3个 有 39个 4个 有 有 有 有 5.80 STC90C512RD+ 5.5 - 3.8 48K 1280 13K 3个 有 39个 4个 有 有 有 有 5.80 STC90C514RD+ 5.5 - 3.8 56K 1280 5K 3个 有 39个 4个 有 有 有 有 5.80 STC90C516RD+ 5.5 - 3.8 61K 1280 - 3个 有 39个 4个 有 有 有 - 5.80 关于单片机说明:<管脚与流行的 8051 兼容>    大客户超低价 T1OUT 14 C2+ R1IN 13 5 C2- R1OUT 12 6 V- 7 T2OUT 8 R2IN T1IN 11 PC_RxD (COM Pin2) 5 PC_TxD (COM Pin3) MCU_RxD (P3.0) MCU_TxD (P3.1) T2IN 10 R2OUT 2 3 Vcc Gnd 9 P3.0 Vcc VCC P3.1 XTAL2 90C52RC 90C58RD+ 90LE52RC XTAL1 90LE516RD+ GND RESET Vcc + P1.4 P1.3 P1.2 P1.1/T2EX P1.0/T2 P4.2/INT3 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 39 38 37 36 35 34 33 32 31 30 29 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 C1- 4 +    3 编  如 就 程锁  用 是 紧 编 座 程 器 0.1uF GND 15 10μF 10K 33 32 31 30 29 28 27 26 25 24 23 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P4.6/EA P4.1 ALE/P4.5 P4.4/PSEN P2.7/A15 P2.6/A14 P2.5/A13 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P4.4/EA P4.1 ALE/P4.5 P4.6/PSEN P2.7/A15 P2.6/A14 P2.5/A13 T2/P1.0 T2EX/P1.1 P1.2 P1.3  P1.4 P1.5 P1.6 P1.7 RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PDIP-40,增加 P4 口,有 35 个 I/O V+ ( 2 7 8 9 10 11 12 13 14 15 16 17 PLCC-44 0.1uF Vcc 16 ( 0.1uF C1+ P1.5 P1.6 P1.7 RST RxD/P3.0 INT2/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 增加 P4 口 有 39 个 I/O 并可位寻址 10uF 1 1 2 3 4 5 6 7 8 9 10 11 ★尽量不选落后的 PDIP 和 PLCC 封装★ DIP-40,PLCC-44,LQFP-44 封装(RC/RD+ 系列 PLCC、LQFP 有 P4 口地址 E8H RC/RD+ 系列 PLCC、LQFP 多两个外部中断 P4.2/INT3,P4.3/INT2。 P4 口均可位寻址 5V: 5.5V~3.8V;3V: 3.8V~2.4V(仅针对 RC/RD+ 系列) √    真正的看门狗,可放心省去外部看门狗,缺省为关闭,打开后无法关闭。单倍速和双倍速可反复设置 √    “6 时钟 / 机器周期”和“12 时钟 / 机器周期”可在 ISP 编程时反复设置,新的设置冷启动后才生效 STC  单片机在线编程典型线路 P1.5 P1.6 P1.7 RST RxD/P3.0 INT2/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 4.30 LQ FP-44 5.5 - 3.8 5.5 - 3.8 ★强烈推荐 LQFP44 小型封装★ 增加 P4 口 有 39 个 I/O 并可位寻址 STC90C53 RC STC90C13 RC PC / 电脑 串口 原复位电路可以保留,也可以不用,不用时 RESET 脚接 1K 电阻到地 有 有 有 有 2.99 STC90C52 STC3232,STC232,MAX232,SP232 ★ 三大降低单片机时钟对外部电磁辐射的措施:      —— 出口欧美的有力保证 P4(E8H) 1 、禁止 A L E 输出; 2 、如选 6时钟/ 机器周期,外部时钟频率可降一半; 3 、单片机时钟振荡器增益可设为 1/2gain。 ★ 超低功耗: 1 、掉电模式:        典型功耗    <0.1 μ A 2 、正常工作模式:  典型功耗     4mA - 7mA 3 、掉电模式可由外部中断唤醒,适用于电池     供电系统,如水表、气表、便携设备等。 ★ 在系统可编程,无需编程器,无需仿真器 ★ 可送 STC-ISP 下载编程器,1 万片 / 人 / 天 ★ 内部有简单复位,时钟频率在 6MHz 以下时,可使用内部复位 P1.4 P1.3 P1.2 P1.1/T2EX P4.2/INT3 P1.0/T2 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 Data Flash STC WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 IAP P1 并行端口  6  5  4  3  2  1  44  43  42  41  40 E2PROM 四个 8 位 微处理器 18 19 20 21 22 23 24 25 26 27 28 8051 看门狗 选 择 S T C 90C51 系 列 单片机的理 由 : ★ 软硬件完全兼容全球各厂家均已被解密的 8 9 系列单片机,可完全直接取代。 ★ 内部复位比 89 系列好 超 强 抗 干 扰: 1 、高 抗 静 电 ( E S D 保 护 ) 2 、轻松过 2KV/4KV 快速脉冲干扰(EFT 测试) 3 、宽 电 压 , 不 怕 电 源 抖 动 4 、宽 温 度 范 围 , - 4 0 ℃ ~ 8 5 ℃  44  43  42  41  40  39  38  37  36  35  34 8/16/32/64k 12 13 14 15 16 17 18 19 20 21 22 1280 字节 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P4.6/EA ALE/P4.5 P4.4/PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 推荐优先选择采用宏晶最新第六代加密技术,STC11/10xx 系列单片机取 代全球各厂家均已被解密的 89 系列    网址:www.STCMCU.com     技术支持:13922805190 深  圳:Tel:0755-82948411     82948412      Fax:0755-82944243   82905966 8051 单片机全球第一品牌  中国大陆本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服 广州办:Tel:020-87501705    85518657      Fax:020-85517881 上海办:Tel:021-53560136    53560138     Fax:021-53080587 北京办:Tel:010-62538687     62634001      Fax:010-62538683 免费索取  从网上下载样品申请单,  传真至深圳申请 STC 单片机  样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   12 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 超强抗干扰 无法解密 宏晶新一代 8051 单片机 宏晶 STC12C5620AD 系列1T 8051 单片机,直接取代传统的 12C5410/2052AD 系列 1 个时钟 / 机器周期,高速、高可靠,4 路 P W M ,8 路 1 0 位 A / D 转换 宏晶科技是新一代增强型8051单片机标准的制定者和领导厂商,现已成长为全球最大的8051单片机设计公司,致力于提供满足中国市场需求的世界级高性能 单片机技术,采用最新第六代加密技术的 STC12C5620AD 系列单片机无法解密。在高品质的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。现 全力推出“1 个时钟 / 机器周期”的单片机, 全面提升 8 0 5 1 单片机性能。新客户请直接联系深圳, 以获得更好的技术支持与服务。 推荐选择 SOP-20/28,LQFP32 贴片封装,传统插件 DIP 封装稳定供货 STC12C5616AD-35C-LQFP32, RMB :5.50 元 高 可 靠 片内 R/C 振荡器 XTAL2 晶体或 可配置振荡器 谐振器 XTAL1 CPU 时钟 封装形式: SOP20/DIP20/TSSOP20 SOP28/SKDIP28 LQFP32/SOP32 SPI 超 强 抗 干 扰 无 法 解 密 Port1,Port3 可配置 I/O 口 Port2,Port0 可配置 I/O 口 大客户特价支持 STC12C5620AD 系列主要性能: ●高速:1 个时钟 / 机器周期,增强型 8051 内核,速度比普通 8051 快 8~12 倍 ●宽电压:5.5~3.5V,2.2~3.6V(STC12LE5624AD 系列) ●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒) ●工作频率:0~35MHz,相当于普通 8051:0~420MHz ●时钟:外部晶体或内部 RC 振荡器可选,在 ISP 下载编程用户程序时设置 ● 30K/28K/24K/20K/16K/12K/8K/4K 字节片内 Flash 程序存储器,擦写次数 10 万次以上 ● 256+512 字节片内 RAM 数据存储器 ●芯片内 EEPROM 功能 ● ISP / IAP,在系统可编程 / 在应用可编程,无需编程器 / 仿真器 ● 10 位 ADC,8 通道。4 路 PWM 还可当 4 路 D/A 使用 ● 4 通道捕获 / 比较单元(PWM/PCA/CCU)       --- 也可用来再实现 4 个定时器或 4 个外部中断(支持上升沿 / 下降沿中断) ● 6 个 16 位定时器,兼容普通 8051 的定时器 T0/T1,4 路 PCA 也是 4 个定时器 ●可编程时钟输出功能,T0 可在 P1.0 输出时钟,T1 可在 P1.1 输出时钟 ●硬件看门狗(W D T ) ●高速 SPI 通信端口 ●全双工异步串行口(UART),兼容普通 8051 的串口 ●先进的指令集结构,兼容普通 8051 指令集       有硬件乘法 / 除法指令 ●通用 I/O 口(27/23/15 个),复位后为:准双向口 / 弱上拉(普通 8051 传统 I/O 口)       可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏       每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA TxD/P3.1 P0.0 XTAL2 XTAL1 INT0/P3.2 P0.1 INT1/P3.3 ECI/T0/P3.4 1 2 3 4 5 6 7 8 无法解密 LQFP-32 27 个 I/O 电源监控 (上电复位, 掉电复位) Timer 0 Timer 1 CLKOUT0 CLKOUT1 低 功 耗 25 26 27 28 29 30 31 32 WDT 硬件看门狗 高速 UART 全双工串行口 ISP / IAP 9 10 11 12 13 14 15 16 4K 字节 EEPROM 宽 电 压 可当 12-16 位 A/D 24 23 22 21 20 19 18 17 P1.6/MISO/ADC6 P1.5/MOSI/ADC5 P0.3 P1.4/SS/ADC4 P1.3/ADC3 P0.2 P1.2/ADC2 P1.1/ADC1/CLKOUT1 PWM1/PCA1/T1/P3.5 PWM3/PCA3/P2.4 P2.5 Gnd P2.6 P2.7 PWM0/PCA0/P3.7 CLKOUT0/ADC0/P1.0 数据 RAM 768 字节 8 通道 10 位 A/D 10 万次 / 秒 P2.2      1         28      VCC RST      1         20      VCC P2.3      2         27      P2.1 无 无 RST      3         26      P2.0/PCA2/PWM2 RxD/P3.0      2         19      P1.7/SCLK/ADC7 法 TxD/P3.1      3         18      P1.6/MISO/ADC6 RxD/P3.0      4         25      P1.7/SCLK/ADC7 法 TxD/P3.1       5         24      P1.6/MISO/ADC6 解 XTAL2      4         17      P1.5/MOSI/ADC5 解 XTAL2       6         23      P1.5/MOSI/ADC5 XTAL1      5         16      P1.4/SS/ADC4 密 密 XTAL1      7         22      P1.4/SS/ADC4 INT0/P3.2      6         15      P1.3/ADC3 INT1/P3.3      7         14      P1.2/ADC2 INT0/P3.2      8         21      P1.3/ADC3 ECI/T0/P3.4      8         13      P1.1/ADC1/CLKOUT1 INT1/P3.3      9         20      P1.2/ADC2 PWM1/T1/P3.5      9         12      P1.0/ADC0/CLKOUT0 ECI/T0/P3.4      10        19      P1.1/ADC1/CLKOUT1 Gnd      10        11      P3.7/PWM0 PWM1/PCA1/T1/P3.5      11        18      P1.0/ADC0/CLKOUT0 PWM3/PCA3/P2.4      12        17      P3.7/PCA0/PWM0 SOP-20,DIP-20,TSSOP20 P2.5      13        16      P2.7 Gnd       14        15      P2.6 超小封装TSSOP-20,6.4mm x 6.4mm P3.0/RxD RST P2.3 P2.2 Vcc P2.1 P2.0/PCA2/PWM2 P1.7/SCLK/ADC7  Flash  程序存储器 4/8/12/16K 20/24/28/30K     4 路 PWM/PCA/CCU 捕获 / 比较单元 可当 8-16 位 D/A ISP/IAP 高 速 ISP/IAP 单时钟 1T 8051  CPU 最快指令快 24 倍 SOP-28 / SKDIP-28(窄体)  ★如选 32-Pin,推荐选 LQFP-32, ★ 如果 I/O 口不够用,可以用 2 到 3 根普通 I/O 口线 外接 7 4 H C 1 6 4 / 1 6 5 / 5 9 5 (均可级联)来扩展 I / O 口, 还可用 A / D 做按键扫描来节省 I / O 口 选 择 S T C 12C5620AD 系 列 单 片 机 的 理 由 : ★ 无法解密,采用宏晶最新第六代加密技术 ★ 超强抗干扰: 1 、高 抗 静 电 ( E S D 保 护 ) 2 、轻松过 4KV 快速脉冲干扰(EFT 测试) 3 、宽 电 压 , 不 怕 电 源 抖 动 4 、宽 温 度 范 围, - 4 0 ℃ ~ 8 5 ℃ ★ 1 个时钟 / 机器周期,可用低频晶振,大幅降低 E M I       --- 出口欧美的有力保证 ★ 超低功耗: 1 、掉电模式:         典型功耗    <0.1 μ A 2 、空闲模式:      典型功耗   1.8mA 3、正常工作模式:  典型功耗   2.7mA - 7mA 4 、掉电模式可由外部中断唤醒,适用于电池   供电系统,如水表、气表、便携设备等。 ★ 在系统可编程, 无需编程器, 无需仿真器,可远程升级 ★ 可送 STC-ISP 下载编程器,1 万片 / 人 / 天 ★ 内部集成专用复位电路,有 2 级复位门槛电压可选,24MHz 以下可放心使用 内部复位,外部复位电路可以保留,也可以不用(复位脚直接接地) 宏晶 STC 单片机官方网站: www.STCMCU.com    技术支持:13922805190 深  圳:Tel:0755-82948411     82948412      Fax:0755-82944243   82905966 全球最大的 8051 单片机设计公司 中国大陆本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服务 广州办:Tel:020-87501705    85518657      Fax:020-85517881 上海办:Tel:021-53560136    53560138     Fax:021-53080587 北京办:Tel:010-62538687     62634001      Fax:010-62538683 免费索取      从网上下载样品申请单,    传真至深圳申请 STC 单片机   样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   13 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243            宏晶科技 STC12C5620AD 系列单片机选型一览表 型 号 工作 电压(V) Flash 时 定  程序 钟 SRAM UART 时 存储 输 字节 器 器 出 字节 PCA 16位 PWM 8位 A/D 8路 I/O 看 门 狗 内 置 复 位 EEP ROM S P I 封装 20-Pin 封装 28-Pin 封装 32-Pin STC12C5624AD系列单片机选型一览 STC12C5601 5.5 - 3.5 1K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5601AD 5.5 - 3.5 1K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5602 5.5 - 3.5 2K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5602AD 5.5 - 3.5 2K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5604 5.5 - 3.5 4K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5604AD 5.5 - 3.5 4K 768 6 有 有 4路 10位 27/23/15 有 有 有 STC12C5605 5.5 - 3.5 5K 768 6 有 有 4路 27/23/15 有 有 STC12C5605AD 5.5 - 3.5 5K 768 6 有 有 4路 10位 27/23/15 有 有 IAP 有 需使用外部 时钟,需P1.0/P1.1 = 0/0 才可以 下载用户程序,可在用户程序 IAP 有 区直接修改用户程序, STC12C5608 5.5 - 3.5 8K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5608AD 5.5 - 3.5 8K 768 6 有 有 4路 10位 27/23/15 有 有 有 STC12C5612 5.5 - 3.5 12K 768 6 有 有 4路 27/23/15 有 有 STC12C5612AD 5.5 - 3.5 12K 768 6 有 有 4路 10位 27/23/15 有 有 IAP 有 需使用外部 时钟,需P1.0/P1.1 = 0/0 才可以 下载用户程序,可在用户程序 IAP 有 区直接修改用户程序 STC12C5616 5.5 - 3.5 16K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5616AD 5.5 - 3.5 16K 768 6 有 有 4路 10位 27/23/15 有 有 有 STC12C5620 5.5 - 3.5 20K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5620AD 5.5 - 3.5 20K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5624 5.5 - 3.5 24K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5624AD 5.5 - 3.5 24K 768 6 有 有 4路 10位 27/23/15 有 有 有 STC12C5628 5.5 - 3.5 28K 768 6 有 有 4路 27/23/15 有 有 STC12C5628AD 5.5 - 3.5 28K 768 6 有 有 4路 10位 27/23/15 有 有 IAP 有 需使用外部 时钟,需P1.0/P1.1 = 0/0 才可以 下载用户程序,可在用户程序 IAP 有 区直接修改用户程序 STC12C5630 5.5 - 3.5 30K 768 6 有 有 4路 27/23/15 有 有 STC12C5630AD 5.5 - 3.5 30K 768 6 有 有 4路 10位 27/23/15 有 有 STC12LE5601 3.6 - 2.2 1K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5601D 3.6 - 2.2 1K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP IAP 有 需使用外部 时钟,需P1.0/P1.1 = 0/0 才可以 下载用户程序,可在用户程序 IAP 有 区直接修改用户程序 STC12LE5624AD系列单片机选型一览 STC12LE5602 3.6 - 2.2 2K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5602AD 3.6 - 2.2 2K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5604 3.6 - 2.2 4K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5604AD 3.6 - 2.2 4K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5605 3.6 - 2.2 4K 768 6 有 有 4路 27/23/15 有 有 有 STC12LE5605AD 3.6 - 2.2 4K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 需使用外部 时钟,需P1.0/P1.1 = 0/0 才可以 下载用户程序,可在用户程序 有 区直接修改用户程序 STC12LE5608 3.6 - 2.2 8K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5608AD 3.6 - 2.2 8K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5612 3.6 - 2.2 12K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5612AD 3.6 - 2.2 12K 768 6 有 有 4路 10位 27/23/15 有 有 有 STC12LE5616 3.6 - 2.2 16K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5616AD 3.6 - 2.2 16K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5620 3.6 - 2.2 20K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5620AD 3.6 - 2.2 20K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5624 3.6 - 2.2 24K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5624AD 3.6 - 2.2 24K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5628 3.6 - 2.2 28K 768 6 有 有 4路 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5628AD 3.6 - 2.2 28K 768 6 有 有 4路 10位 27/23/15 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5630 3.6 - 2.2 30K 768 6 有 有 4路 27/23/15 有 有 - STC12LE5630AD 3.6 - 2.2 30K 768 6 有 有 4路 10位 27/23/15 有 有 - 有 需使用外部 时钟,需P1.0/P1.1 = 0/0 才可以 下载用户程序,可在用户程序 有 区直接修改用户程序 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  14 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 宏晶科技,已成长为全球最大的 8051 单片机设计公司 宏晶 STC12C5410AD/2052AD 系列 1T 8051 单片机 1 个时钟 / 机器周期,高速、高可靠,4 路 P W M ,8 路 1 0 位 A / D 转换 宏晶科技是新一代增强型8051单片机标准的制定者和领导厂商,致力于提供满足中国市场需求的世界级高性能单片机技术,在业内处于领先地位,销售网络覆 盖全国。在高品质的基础上,以极低的价格和完善的服务赢得了客户的长期信赖。在广受欢迎的 STC89C51 全系列单片机的基础上,现全力推出“1 个时 钟 / 机器周期”的单片机,全面提升 8051 单片机性能。欢迎海内外厂家前来洽谈合作!新客户请直接联系深圳,以获得更好的技术支持与服务。 尽量优先选择成本更低, 抗干扰能力更强, 采用最新第六代加密技术的宏晶最新一代 STC11xx/12C52xx/12C56xx 三大系列取代,原有老产品继续长期生产 P2.1 P2.0/PCA2/PWM2 P1.7/SCLK/ADC7 26 25 ECI/T0/P3.4 Vcc INT1/P3.3 27 6 P2.2 P0.1 28 5 P2.3 INT0/P3.2 29 4 RST 3 XTAL1 P1.5/MOSI/ADC5 22 P0.3 21 P1.4/SS/ADC4 20 P1.3/ADC3 19 P0.2 7 18 P1.2/ADC2 8 17 P1.1/ADC1 ●高速:1 个时钟 / 机器周期,增强型 8051 内核,速度比普通 8051 快 8~12 倍 ●宽电压:5.5~3.5V,2.2~3.8V(STC12LE5410AD 系列) ●低功耗设计:空闲模式,掉电模式(可由外部中断唤醒) ●工作频率:0~35MHz,相当于普通 8051:0~420MHz ●时钟:外部晶体或内部 RC 振荡器可选,在 ISP 下载编程用户程序时设置 ● 16K/12K/10K/8K/6K/4K/2K 字节片内 Flash 程序存储器,擦写次数 10 万次以上 ● 512 字节片内 RAM 数据存储器 ●芯片内 EEPROM 功能 ● ISP / IAP,在系统可编程 / 在应用可编程,无需编程器 / 仿真器 ● 10 位 ADC,8 通道,STC12C2052AD 系列为 8 位 ADC。4 路 PWM 还可当 4 路 D/A 使用 ● 4 通道捕获 / 比较单元(PWM/PCA/CCU) ,STC12C2052AD 系列为 2 通道       --- 也可用来再实现 4 个定时器或 4 个外部中断(支持上升沿 / 下降沿中断) ● 6 个 16 位定时器,兼容普通 8051 的定时器 T0/T1,4 路 PCA 也是 4 个定时器 ●硬件看门狗(W D T ) ●高速 SPI 通信端口 ●全双工异步串行口(UART),兼容普通 8051 的串口 ●先进的指令集结构,兼容普通 8051 指令集           4 组 8 个 8 位通用工作寄存器(共 32 个通用寄存器)         有硬件乘法 / 除法指令 ●通用 I/O 口(27/23/15 个),复位后为:  准双向口 / 弱上拉(普通 8051 传统 I/O 口)       可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏        每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不得超过 55mA 2 05 1 2C C1 T S 币 民 人 , ADC0/P1.0 15 14 13 12 11 9 STC12C5410/STC12C2052 系列主要性能: 16 P1.6/MISO/ADC6 23 PWM0/PCA0/P3.7 CPU 时钟 XTAL2 Gnd       14        15      P2.6 24 P2.7 XTAL1 可配置振荡器 2 P2.6 晶体或 谐振器 1 P0.0 Gnd XTAL2 无 法 解 密 Port2,Port0 可配置 I/O 口 TxD/P3.1 PWM1/PCA1/T1/P3.5 片内 R/C 振荡器 Port1,Port3 可配置 I/O 口 LQFP-32 电源监控 (上电复位, 掉电复位) 30 SPI 超 强 抗 干 扰 P2.5 WDT 硬件看门狗 Timer 0 Timer 1 P3.0/RxD 低 功 耗 PWM1/PCA1/T1/P3.5      11        18      P1.0/ADC0/CLKOUT0 PWM3/PCA3/P2.4      12        17      P3.7/PCA0/PWM0 SOP-20,DIP-20 P2.5      13        16      P2.7 超小封装TSSOP-20,6.4mm X 6.4mm,定货 31 1K 字节 EEPROM UART 全双工串行口 ISP / IAP 32 宽 电 压 数据 RAM 512/256 字节 8 通道 高速 A/D 10 高 可 靠 SOP-28 / SKDIP-28(窄体) RST      1         20      VCC P2.2      1         28      VCC RxD/P3.0      2         19      P1.7/SCLK/ADC7 P2.3      2         27      P2.1 TxD/P3.1      3         18      P1.6/MISO/ADC6 RST      3         26      P2.0/PCA2/PWM2 XTAL2      4         17      P1.5/MOSI/ADC5 RxD/P3.0      4         25      P1.7/SCLK/ADC7 XTAL1      5         16      P1.4/SS/ADC4 TxD/P3.1      5         24      P1.6/MISO/ADC6 INT0/P3.2      6         15      P1.3/ADC3 XTAL2      6         23      P1.5/MOSI/ADC5 INT1/P3.3      7         14      P1.2/ADC2 XTAL1      7         22      P1.4/SS/ADC4 ECI/T0/P3.4      8         13      P1.1/ADC1/CLKOUT1 INT0/P3.2      8         21      P1.3/ADC3 PWM1/T1/P3.5      9         12      P1.0/ADC0/CLKOUT0 INT1/P3.3      9         20      P1.2/ADC2 Gnd      10        11      P3.7/PWM0 ECI/T0/P3.4      10        19      P1.1/ADC1/CLKOUT1 PWM3/PCA3/P2.4  Flash  程序存储器 1/2/4/8/10/12K 4路 PWM/PCA/CCU 捕获 / 比较单元 ISP/IAP 高 速 ISP/IAP 单时钟 1T 8051  CPU 尽量优先选择成本更低,抗干扰能力更强, 采用最新第六代加密技术的宏晶最新一代 STC11xx/12C52xx/12C56xx三大系列取代, 原有老产品继续长期生产 选 择 S T C 12C5410AD 系 列 单 片 机 的 理 由 : ★ 加密性强 ★ 超强抗干扰: 8 3. 元 1 、高 抗 静 电 ( E S D 保 护 ) 2 、轻松过 4KV 快速脉冲干扰(EFT 测试) 3 、宽 电 压 , 不 怕 电 源 抖 动 4 、宽 温 度 范 围, - 4 0 ℃ ~ 8 5 ℃ ★ 1 个时钟 / 机器周期,可用低频晶振,大幅降低 E M I       --- 出口欧美的有力保证 ★ 超低功耗: 1 、掉电模式:         典型功耗    <0.1 μ A 2 、空闲模式:      典型功耗   1.8mA 3、正常工作模式:  典型功耗   2.7mA - 7mA 4 、掉电模式可由外部中断唤醒,适用于电池   供电系统,如水表、气表、便携设备等。 ★ 所有封装均符合欧盟 RoHS 要求 ★ 在系统可编程, 无需编程器, 无需仿真器,可远程升级 ★ 可送 STC-ISP 下载编程器,1 万片 / 人 / 天 宏晶 STC 单片机官方网站:www.STCMCU.com     技术支持:13922805190 深  圳:Tel:0755-82948411     82948412      Fax:0755-82944243   82905966 8051 单片机全球第一品牌 中国本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服务 广州办:Tel:020-87501705    85518657      Fax:020-85517881 上海办:Tel:021-53560136    53560138     Fax:021-53080587 北京办:Tel:010-62538687     62634001      Fax:010-62538683 免费索取      从网上下载样品申请单,    传真至深圳申请 STC 单片机   样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   15 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243           STC12C5410AD / 2052AD系列单片机选型一览表 型 号 工作 电压(V) Flash PCA 时  程序 定 16 SRAM 钟 存储 时 UART 位 字节 输 器 器 PWM 出 字节 8位 A/D 8路 I/O 内 看 S 置 EEP 门 P 复 ROM 狗 I 位 封装 20-Pin 封装 28-Pin 封装 32-Pin STC12C2052AD系列单片机选型一览 STC12C1052 5.5 - 3.5 1K 256 4 有 有 2路 STC12C1052AD 5.5 - 3.5 1K 256 4 有 有 2路 STC12C2052 5.5 - 3.5 2K 256 4 有 有 2路 STC12C2052AD 5.5 - 3.5 2K 256 4 有 有 2路 STC12C4052 5.5 - 3.5 4K 256 4 有 有 2路 STC12C4052AD 5.5 - 3.5 4K 256 4 有 有 2路 STC12C5052 5.5 - 3.5 5K 256 4 有 有 2路 STC12C5052AD 5.5 - 3.5 5K 256 4 有 有 2路 STC12LE1052 2.2 - 3.8 1K 256 4 有 有 2路 STC12LE1052AD 2.2 - 3.8 1K 256 4 有 有 2路 STC12LE2052 2.2 - 3.8 2K 256 4 有 有 2路 STC12LE2052AD 2.2 - 3.8 2K 256 4 有 有 2路 STC12LE4052 2.2 - 3.8 4K 256 4 有 有 2路 STC12LE4052AD 2.2 - 3.8 4K 256 4 有 有 2路 STC12LE5052 2.2 - 3.8 5K 256 4 有 有 2路 STC12LE5052AD 2.2 - 3.8 5K 256 4 有 有 2路 8位 8位 8位 8位 8位 8位 8位 8位 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 15 有 有 15 有 有 有 有 SOP/TSSOP/DIP          管脚兼容          89C2051 有 有 SOP/TSSOP/DIP 有 有 SOP/TSSOP/DIP          超强抗干扰 15 有 有 15 有 有 有 有 SOP/TSSOP/DIP          无法解密 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP 15 有 有 有 有 SOP/TSSOP/DIP STC12C5410AD系列单片机选型一览 STC12C5402 5.5 - 3.5 2K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5402AD 5.5 - 3.5 2K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5404 5.5 - 3.5 4K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5404AD 5.5 - 3.5 4K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5406 5.5 - 3.5 6K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5406AD 5.5 - 3.5 6K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5408 5.5 - 3.5 8K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5408AD 5.5 - 3.5 8K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5410 5.5 - 3.5 10K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5410AD 5.5 - 3.5 10K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5412 5.5 - 3.5 12K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5412AD 5.5 - 3.5 12K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5402 2.2 - 3.8 2K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5402AD 2.2 - 3.8 2K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5404 2.2 - 3.8 4K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5404AD 2.2 - 3.8 4K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5406 2.2 - 3.8 6K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5406AD 2.2 - 3.8 6K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5408 2.2 - 3.8 8K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5408AD 2.2 - 3.8 8K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5410 2.2 - 3.8 10K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5410AD 2.2 - 3.8 10K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5412 2.2 - 3.8 12K 512 6 有 有 4路 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5412AD 2.2 - 3.8 12K 512 6 有 有 4路 10位 27/23 有 有 有 有 SOP/TSSOP/DIP SOP/SKDIP SOP/LQFP 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  16 宏晶单片机官方网站:www.STCMCU.com         Mobile:13922805190(姚永平)         Tel:0755-82948411    Fax: 0755-82944243 STC 89 系 列 单 片 机 , 兼容普通 8051,现加密性不够强 请使用第六代加密技术无法解密的 STC11/10xx 系列取代,1T 8051 管脚兼容, 或用 STC90C51 系列(软硬件完全兼容)取代全球各厂家均已被解密的 89 系列 1280 字节 8/16/32/64k 内置系统 SRAM 字节 闪存 ISP 监控程序 P4口地址 0E8H INT2/P4.3 INT3/P4.2 P4 口均可位寻址 P0 Data Flash 集成 MAX810 IAP STC 由于全球各厂家 89 系列单片机均已被解密, 请立即使用宏晶科技采用第六代加密技术设 计的 STC11/10xx 系列单片机取代已被解密的 全球各厂家 8 9 系列单片机。 P1 并行端口 低功耗, 超低价 P2 + P4.0—P4.3 高速 ( 0 - 90M ),高可靠     √    掉电模式: < 0.1μ A,   空闲模式: 2mA 四个附送   P3 STC11/10xx 系列是 1T 的 8051,增加了很多 新特性,如:I / O 口驱动能力更强,不容 易坏,P 0 口有上拉,所有的口都有四种模 式,看门狗更可靠,内部复位高可靠,可 以彻底放心省掉外部复位,速度快,功耗 低,有内部时钟,对时钟精度要求不高时, 可以省掉外部时钟。 P4(E8H) I/O 端口 专用复位电路 单倍速和 双倍速可 “I S P ” 反复设置 双数据 3 个定时器 指针  最 高 时 钟 看 双 P  I  I E2P  A   Flash   RAM  降低    频 率 Hz 门 倍 4 S A ROM  /   字节  EMI 狗 速 口 P P 字节  D   5V   3V   存储器 512 √ √ √ √ √ √ 2K+ 8K 512 √ √ √ √ √ √ 2K + STC 89C53 RC 0~80M 15K 512 √ √ √ √ √ √ STC 89C54 RD+ 0~80M 16K 1280 √ √ √ √ √ √ STC 89C55 RD+ 0~80M 20K 1280 √ √ √ √ √ √ 16K+ STC 89C58 RD+  0~80M 32K 1280 √ √ √ √ √ √ 16K+ STC 89C516 RD+ 0~80M 64K 1280 √ √ √ √ √ √ STC 89LE51 RC          0~80M 4K 512 √ √ √ √ √ √ 2K+ STC 89LE52 RC   0~80M 8K 512 √ √ √ √ √ √ 2K+ 16K+ 0~80M 15K 512 √ √ √ √ √ √ STC 89LE54 RD+   0~80M 16K 1280 √ √ √ √ √ √ 16K+ STC 89LE58 RD+   0~80M 32K 1280 √ √ √ √ √ √ 16K+ STC 89LE516 RD+ 0~80M 64K √ √ √ √ √ √ STC 89LE53 RC 1280 P1.4 P1.3 P1.2 P1.1/T2EX P1.0/T2 P4.2/INT3 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 4K 0~80M P1.5 P1.6 P1.7 RST RxD/P3.0 INT2/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 1 2 3 4 5 6 7 8 9 10 11 LQ FP-44 0~80M RC PQ FP-44 RC STC 89C52 增加 P4 口 并可位寻址 STC 89C51 或用软硬件完全兼容的 STC90C51 系列取代。 33 32 31 30 29 28 27 26 25 24 23 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA P4.1 ALE PSEN P2.7/A15 P2.6/A14 P2.5/A13 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 型   号 UART(串口)  44  43  42  41  40  39  38  37  36  35  34 E2PROM 四个 8 位 微处理器 12 13 14 15 16 17 18 19 20 21 22 8051 看门狗 关于单片机说明:<管脚与流行的 8051 兼容>    大客户超低价 传统的 PLCC 和 PDIP 封装稳定供货 C2+ R1IN 13 5 C2- R1OUT 12 6 V- 7 T2OUT 8 R2IN 14 T1IN 11 Gnd PC_RxD (COM Pin2) MCU_RxD (P3.0) MCU_TxD (P3.1) T2IN 10 R2OUT 5 PC_TxD (COM Pin3) 9 P3.0 Vcc VCC P3.1 XTAL2 89C52RC 89C58RD+ 89LE52RC XTAL1 89LE516RD+ GND RESET P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA P4.1 ALE PSEN P2.7/A15 P2.6/A14 P2.5/A13 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 4 GND 15 T1OUT    0.1uF C1- 39 38 37 36 35 34 33 32 31 30 29 Vcc + 10μF 10K T2/P1.0 T2EX/P1.1 P1.2 P1.3  P1.4 P1.5 P1.6 P1.7 RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PDIP-40 V+ 3 2 3 Vcc ( 2 + PLCC-44 0.1uF Vcc 16 ( 0.1uF C1+ 7 8 9 10 11 12 13 14 15 16 17 增加 P4 口 并可位寻址 10uF 1 P1.5 P1.6 P1.7 RST RxD/P3.0 INT2/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 T0/P3.4 T1/P3.5 18 19 20 21 22 23 24 25 26 27 28 PC / 电脑 串口 STC3232,STC232,MAX232,SP232 编  如 就 程锁  用 是 紧 编 座 程 器 STC  单片机在线编程典型线路  6  5  4  3  2  1  44  43  42  41  40 P1.4 P1.3 P1.2 P1.1/T2EX P1.0/T2 P4.2/INT3 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 DIP-40,PLCC-44,LQFP-44 封装(RC/RD+ 系列 PLCC、LQFP 有 P4 口地址 E8H RC/RD+ 系列 PLCC、LQFP 多两个外部中断 P4.2/INT3,P4.3/INT2。 P4 口均可位寻址 5V: 5.5V~3.8V;3V: 3.8V~2.4V(仅针对 RC/RD+ 系列) √    真正的看门狗,可放心省去外部看门狗,缺省为关闭,打开后无法关闭。单倍速和双倍速可反复设置 √   “6 时钟 / 机器周期”和“12 时钟 / 机器周期”可在 I S P 编程时反复设置,新的设置冷启动后才生效 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EA ALE PSEN P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 另有:STC89LE516AD 系列单片机 宏晶 STC 单片机官方网站:www.STCMCU.com     技术支持:13922805190 深  圳:Tel:0755-82948411     82948412      Fax:0755-82944243   82905966 8051 单片机全球第一品牌 中国本土 MCU 领航者  新客户请直接联系深圳以获得更好的技术支持和服务 广州办:Tel:020-87501705    85518657      Fax:020-85517881 上海办:Tel:021-53560136    53560138     Fax:021-53080587 北京办:Tel:010-62538687     62634001      Fax:010-62538683 免费索取  从网上下载样品申请单,  传真至深圳申请 STC 单片机  样片及 ISP 下载线 / 编程工具 宏晶:全球最大的 8051 单片机设计公司   宏晶单片机官方网站: www.STCMCU.com  STC12C5201AD 系列 1T 8051单片机中文指南   17 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        第二章    STC12 系列单片机总体介绍       2.1.1   STC12C5201AD 系列 1T 单片机简介     STC12C5201AD 系列单片机是宏晶科技生产的单时钟 / 机器周期(1T)的单片机,是高速 / 低功耗 / 超强抗 干扰的新一代 8051 单片机,指令代码完全兼容传统 8051,但速度快 8-12 倍。内部集成 MAX810 专用复位电 路,2 路 PWM,8 路高速 8 位 A/D 转换(300K/S),针对电机控制,强干扰场合。 1.  增强型 8051 CPU,1T,单时钟 / 机器周期,指令代码完全兼容传统 8051 2 .   工作电压: STC12C5201AD 系列工作电压: 5.5V -   3 . 3 V (5 V 单片机) STC12LE5201AD 系列工作电压:3.6V -   2 . 2 V (3 V 单片机) 3.  工作频率范围:0 - 35MHz,相当于普通 8051 的  0~420MHz 4.  用户应用程序空间 1K / 2K / 4K / 5K / 6K 字节...... 5.  片上集成 256 字节 RAM 6.  通用 I/O 口(27/23/15/13/11 个),复位后为:  准双向口 / 弱上拉(普通 8051 传统 I/O 口)      可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏        每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不要超过 55mA 7 .  I S P (在系统可编程)/ I A P (在应用可编程),无需专用编程器,无需专用仿真器    可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片 8.  有 EEPROM 功能 9.   看门狗 10. 内部集成 MAX810 专用复位电路(外部晶体 20M 以下时,复位脚可直接 1K 电阻到地) 11. 内置一个掉电检测电路,在 P1.2 口有一个低压门槛比较器           5V 单片机为 1.32V,误差为 +/-5%,3.3V 单片机为 1.30V,误差为 +/-3% 12. 时钟源:外部高精度晶体 / 时钟,内部 R/C  振荡器(温漂为 +/-5% 到 +/-10% 以内)           用户在下载用户程序时,可选择是使用内部 R/C 振荡器还是外部晶体 / 时钟           常温下内部 R/C 振荡器频率为:5.0V 单片机为: 11MHz ~ 15.5MHz           3.3V 单片机为:  8MHz ~ 12MHz          精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准 13. 共 4 个 16 位定时器     两个与传统 8051 兼容的定时器 / 计数器,16 位定时器 T0 和 T1     再加上 2 路 PCA 模块可再实现 2 个 16 位定时器 14. 2 个时钟输出口,可由 T0 的溢出在 P3.4/T0 输出时钟,可由 T1 的溢出在 P3.5/T1 输出时钟 15. 外部中断 I/O 口 6 路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的 PCA 模块,     Power Down 模式可由外部中断唤醒,     INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5, RxD/P3.0, PCA0/P3.7, PCA1/P3.5 16. PWM(2 路)/PCA(可编程计数器阵列,2 路)         --- 也可用来当 2 路 D/A 使用         --- 也可用来再实现 2 个定时器         --- 也可用来再实现 2 个外部中断(上升沿中断 / 下降沿中断均可分别或同时支持) 17. A/D 转换, 8 位精度 ADC,共 8 路,转换速度可达 300K/S(每秒钟 30 万次) 18. 通用全双工异步串行口(UART),由于 STC12 系列是高速的 8051,可再用定时器或 PCA 软件实现多串口 19. 工作温度范围: -40 - +85℃(工业级) / 0 - 75℃(商业级) 20. 封装:LQFP-32,SOP-32/28/20/16, SKDIP-28,PDIP-20/18/16,LSSOP-20(超小封状 6.4mm × 6.4mm)     LQFP/SOP32 有 27 个 I/O 口,SOP28/SKDIP28 有 23 个 I/O 口,SOP20/LSSOP20/PDIP20 有 15 个 I/O 口,    DIP18 有 13 个 I/O 口,SOP16/DIP16 有 11 个 I/O 口。I/O 口不够时,可用 2 到 3 根普通 I/O 口线外接    74HC164/165/595(均可级联)来扩展 I/O 口,    还可用 A/D  做按键扫描来节省 I/O 口,或用双 CPU,三线通信,还多了串口。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  18 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243       2.1.2  STC12C5A60S2 系列 1T 单片机简介     STC12C5A60S2/AD/PWM 系列单片机是宏晶科技生产的单时钟 / 机器周期(1T)的单片机,是高速 / 低功耗 / 超强抗干扰的新一代 8051 单片机,指令代码完全兼容传统 8051,但速度快 8-12 倍。内部集成 MAX810 专用 复位电路,2 路 PWM,8 路高速 10 位 A/D 转换(250K/S),针对电机控制,强干扰场合。 1.  增强型 8051 CPU,1T,单时钟 / 机器周期,指令代码完全兼容传统 8051 2 .   工作电压: STC12C5A60S2 系列工作电压: 5.5V -   3 . 3 V (5 V 单片机) STC12LE5A60S2 系列工作电压:3.6V -   2 . 2 V (3 V 单片机) 3.  工作频率范围:0 - 35MHz,相当于普通 8051 的  0~420MHz 4.  用户应用程序空间 8K /16K / 20K / 32K / 40K / 48K / 52K / 60K / 62K 字节...... 5.  片上集成 1280 字节 RAM 6.  通用 I/O 口(36/40/44 个),复位后为:  准双向口 / 弱上拉(普通 8051 传统 I/O 口)    可设置成四种模式:准双向口 / 弱上拉,推挽 / 强上拉,仅为输入 / 高阻,开漏     每个 I/O 口驱动能力均可达到 20mA,但整个芯片最大不要超过 55mA 7 .  I S P (在系统可编程)/ I A P (在应用可编程),无需专用编程器,无需专用仿真器    可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片 8.  有 EEPROM 功能(STC12C5A62S2/AD/PWM 无内部 EEPROM) 9.   看门狗 10. 内部集成 MAX810 专用复位电路(外部晶体 12M 以下时,复位脚可直接 1K 电阻到地) 11. 外部掉电检测电路: 在 P4.6 口有一个低压门槛比较器            5V 单片机为 1.32V,误差为 +/-5%,3.3V 单片机为 1.30V,误差为 +/-3% 12. 时钟源:外部高精度晶体 / 时钟,内部 R/C  振荡器(温漂为 +/-5% 到 +/-10% 以内)            用户在下载用户程序时,可选择是使用内部 R/C 振荡器还是外部晶体 / 时钟            常温下内部 R/C 振荡器频率为:5.0V 单片机为: 11MHz ~ 15.5MHz            3.3V 单片机为:  8MHz ~ 12MHz           精度要求不高时,可选择使用内部时钟,但因为有制造误差和温漂,以实际测试为准 13. 共 4 个 16 位定时器     两个与传统 8051 兼容的定时器 / 计数器,16 位定时器 T0 和 T1,没有定时器 2,但有独立波特率发生器     做串行通讯的波特率发生器     再加上 2 路 PCA 模块可再实现 2 个 16 位定时器 14. 2 个时钟输出口,可由 T0 的溢出在 P3.4/T0 输出时钟,可由 T1 的溢出在 P3.5/T1 输出时钟 15. 外部中断 I/O 口 7 路,传统的下降沿中断或低电平触发中断,并新增支持上升沿中断的 PCA 模块,     Power Down 模式可由外部中断唤醒,      INT0/P3.2, INT1/P3.3, T0/P3.4, T1/P3.5, RxD/P3.0,     CCP0/P1.3(也可通过寄存器设置到 P4.2 ), CCP1/P1.4 (也可通过寄存器设置到 P4.3) 16. PWM(2 路)/PCA(可编程计数器阵列,2 路)         --- 也可用来当 2 路 D/A 使用         --- 也可用来再实现 2 个定时器         --- 也可用来再实现 2 个外部中断(上升沿中断 / 下降沿中断均可分别或同时支持) 17. A/D 转换, 10 位精度 ADC,共 8 路,转换速度可达 250K/S(每秒钟 25 万次) 18. 通用全双工异步串行口(UART),由于 STC12 系列是高速的 8051,可再用定时器或 PCA 软件实现多串口 19. STC12C5A60S2 系列有双串口,后缀有 S2 标志的才有双串口,RxD2/P1.2(可通过寄存器设置到 P4.2),      TxD2/P1.3(可通过寄存器设置到 P4.3) 20. 工作温度范围: -40 - +85℃(工业级) / 0 - 75℃(商业级) 21. 封装:PDIP-40,LQFP-44,LQFP-48     I/O 口不够时,可用 2 到 3 根普通 I/O 口线外接    74HC164/165/595(均可级联)来扩展 I/O 口,    还可用 A/D  做按键扫描来节省 I/O 口,或用双 CPU,三线通信,还多了串口。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  19 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243          2.2    STC12 系列单片机选型一览表 2.2.1  STC12C5201AD 系列单片机选型一览表 P U 定 Flash C A 时  程序 A R SRAM 器 存储 定 T 字节 T0 器 时串 T1 字节 器口 D P T R PCA EEP 16位 A/D ROM PWM 8路 8位 看 门 狗 内 置 复 位 内 部 低 压 检 测 封装 16-Pin 封装 18-Pin 封装 20-Pin 有 SOP/DIP DIP SOP/LSSOP/DIP 有 SOP/DIP DIP SOP/LSSOP/DIP 封装 28-Pin 封装 32-Pin 型 号 工作 电压(V) STC12C5201 5.5 - 3.3 1K 256 有 11/13/15 有 有 STC12C5201PWM 5.5 - 3.3 1K 256 有 2 有 1 有 2路 11/13/15 有 有 STC12C5201AD 5.5 - 3.3 1K 256 有 2 有 1 有 2路 8位 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12C5202 5.5 - 3.3 2K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5202PWM 5.5 - 3.3 2K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5202AD 5.5 - 3.3 2K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5204 5.5 - 3.3 4K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5204PWM 5.5 - 3.3 4K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5204AD 5.5 - 3.3 4K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5205 5.5 - 3.3 5K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5205PWM 5.5 - 3.3 5K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5205AD 5.5 - 3.3 5K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12C5206 5.5 - 3.3 6K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP 可在应用程序区修改应用程序 STC12C5206PWM 5.5 - 3.3 6K 256 有 2 有 1 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP 可在应用程序区修改应用程序 STC12C5206AD 5.5 - 3.3 6K 256 有 2 有 1 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP 可在应用程序区修改应用程序 STC12LE5201 3.6 - 2.2 1K 256 有 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12LE5201PWM 3.6 - 2.2 1K 256 有 2 有 1 有 2路 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12LE5201AD 3.6 - 2.2 1K 256 有 2 有 1 有 2路 8位 11/13/15 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP STC12LE5202 3.6 - 2.2 2K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5202PWM 3.6 - 2.2 2K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5202AD 3.6 - 2.2 2K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5204 3.6 - 2.2 4K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5204PWM 3.6 - 2.2 4K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5204AD 3.6 - 2.2 4K 256 有 2 有 1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5205 3.6 - 2.2 5K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5205PWM 3.6 - 2.2 5K 256 有 2 有 1 有 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5205AD 3.6 - 2.2 5K 256 有 2 有  1 有 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP SOP/LSSOP/DIP SOP/SKDIP SOP/LQFP STC12LE5206 3.6 - 2.2 6K 256 有 11/13/15/23/27 有 有 有 SOP/DIP DIP 可在应用程序区修改应用程序 STC12LE5206PWM 3.6 - 2.2 6K 256 有 2 有 1 2路 11/13/15/23/27 有 有 有 SOP/DIP DIP 可在应用程序区修改应用程序 STC12LE5206AD 3.6 - 2.2 6K 256 有 2 有 1 2路 8位 11/13/15/23/27 有 有 有 SOP/DIP DIP 可在应用程序区修改应用程序 I/O STC12C5201AD/PWM系列单片机选型一览 有 1 有 1 有 1 有 1 有 1 STC12LE5201AD/PWM系列单片机选型一览 有 1 有 1 有 1 有 1 有 1 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  20 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243         2.2.2 STC12C5A60AD系列单片机选型一览表 SRAM 字节 P 定 C 时 A 器 定 T0 时 T1 器 独 立 波 特 率 发 生 器 I/O 看 门 狗 内 置 复 位 外 部 低 压 检 测 封装 40-Pin 封装 44-Pin 封装 48-Pin 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 型 号 工作 电压(V) Flash  程序 存储 器 字节 STC12C5A08PWM 5.5 - 3.3 8K 1280 有 2 1 有 2 有 2路 STC12C5A08AD 5.5 - 3.3 8K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A08S2 5.5 - 3.3 8K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A16PWM 5.5 - 3.3 16K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A16AD 5.5 - 3.3 16K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A16S2 5.5 - 3.3 16K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 U A R T D P T R EEP ROM PCA 16位 PWM 8位 A/D 8路 STC12C5A60AD系列单片机选型一览 STC12C5A20PWM 5.5 - 3.3 20K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A20AD 5.5 - 3.3 20K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A20S2 5.5 - 3.3 20K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A32PWM 5.5 - 3.3 32K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A32AD 5.5 - 3.3 32K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A32S2 5.5 - 3.3 32K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A40PWM 5.5 - 3.3 40K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A40AD 5.5 - 3.3 40K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A40S2 5.5 - 3.3 40K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A48PWM 5.5 - 3.3 48K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A48AD 5.5 - 3.3 48K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A48S2 5.5 - 3.3 48K 1280 有 2 2 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A52PWM 5.5 - 3.3 52K 1280 有 2 1 有 2 有 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 STC12C5A52AD 5.5 - 3.3 52K 1280 有 2 1 有 2 有 2路 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 STC12C5A52S2 5.5 - 3.3 52K 1280 有 2 2 有 2 有 2路 STC12C5A56PWM 5.5 - 3.3 56K 1280 有 2 1 有 2 有 2路 STC12C5A56AD 5.5 - 3.3 56K 1280 有 2 1 有 2 有 2路 STC12C5A56S2 5.5 - 3.3 56K 1280 有 2 2 有 2 有 2路 STC12C5A60PWM 5.5 - 3.3 60K 1280 有 2 1 有 2 有 2路 STC12C5A60AD 5.5 - 3.3 60K 1280 有 2 1 有 2 有 2路 STC12C5A60S2 5.5 - 3.3 60K 1280 有 2 2 有 2 有 2路 STC12C5A62PWM 5.5 - 3.3  62K 1280 有 2 1 有 2 2路 STC12C5A62AD 5.5 - 3.3 62K 1280 有 2 1 有 2 2路 STC12C5A62S2 5.5 - 3.3  62K 1280 有 2 2 有 2 2路 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  21 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 独 立 波 特 率 发 生 器 I/O 看 门 狗 内 置 复 位 外 部 低 压 检 测 封装 40-Pin 封装 44-Pin 封装 48-Pin 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 10位 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 36/40/44 有 有 有 PDIP40 LQFP44 LQFP48 工作 电 压 (V) Flash  程序 存储 器 字节 SRAM 字节 P 定 C 时 A 器 定 T0 时 T1 器 STC12LE5A08PWM 3.6 - 2.2 8K 1280 有 2 1 有 2 有 2路 STC12LE5A08AD 3.6 - 2.2 8K 1280 有 2 1 有 2 有 2路 STC12LE5A08S2 3.6 - 2.2 8K 1280 有 2 2 有 2 有 2路 STC12LE5A16PWM 3.6 - 2.2 16K 1280 有 2 1 有 2 有 2路 STC12LE5A16AD 3.6 - 2.2 16K 1280 有 2 1 有 2 有 2路 STC12LE5A16S2 3.6 - 2.2 16K 1280 有 2 2 有 2 有 2路 STC12LE5A20PWM 3.6 - 2.2 20K 1280 有 2 1 有 2 有 2路 STC12LE5A20AD 3.6 - 2.2 20K 1280 有 2 1 有 2 有 2路 10位 STC12LE5A20S2 3.6 - 2.2 20K 1280 有 2 2 有 2 有 2路 10位 STC12LE5A32PWM 3.6 - 2.2 32K 1280 有 2 1 有 2 有 2路 STC12LE5A32AD 3.6 - 2.2 32K 1280 有 2 1 有 2 有 2路 STC12LE5A32S2 3.6 - 2.2 32K 1280 有 2 2 有 2 有 2路 STC12LE5A40PWM 3.6 - 2.2 40K 1280 有 2 1 有 2 有 2路 STC12LE5A40AD 3.6 - 2.2 40K 1280 有 2 1 有 2 有 2路 STC12LE5A40S2 3.6 - 2.2 40K 1280 有 2 2 有 2 有 2路 STC12LE5A48PWM 3.6 - 2.2 48K 1280 有 2 1 有 2 有 2路 STC12LE5A48AD 3.6 - 2.2 48K 1280 有 2 1 有 2 有 2路 STC12LE5A48S2 3.6 - 2.2 48K 1280 有 2 2 有 2 有 2路 STC12LE5A52PWM 3.6 - 2.2 52K 1280 有 2 1 有 2 有 2路 STC12LE5A52AD 3.6 - 2.2 52K 1280 有 2 1 有 2 有 2路 10位 STC12LE5A52S2 3.6 - 2.2 52K 1280 有 2 2 有 2 有 2路 10位 STC12LE5A56PWM 3.6 - 2.2 56K 1280 有 2 1 有 2 有 2路 STC12LE5A56AD 3.6 - 2.2 56K 1280 有 2 1 有 2 有 2路 STC12LE5A56S2 3.6 - 2.2 56K 1280 有 2 2 有 2 有 2路 STC12LE5A60PWM 3.6 - 2.2 60K 1280 有 2 1 有 2 有 2路 STC12LE5A60AD 3.6 - 2.2 60K 1280 有 2 1 有 2 有 2路 STC12LE5A60S2 3.6 - 2.2 60K 1280 有 2 2 有 2 有 2路 STC12LE5A62PWM 3.6 - 2.2  62K 1280 有 2 1 有 2 2路 STC12LE5A62AD 3.6 - 2.2 62K 1280 有 2 1 有 2 2路 10位 STC12LE5A62S2 3.6 - 2.2  62K 1280 有 2 2 有 2 2路 10位 型 号 U A R T D P T R EEP ROM PCA 16位 PWM 8位 A/D 8路 STC12C5A60AD系 列 单 片 机 选 型 一 览 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  22 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        2.3  STC12C5201AD 系列单片机管脚图及封装尺寸图 2.3.1 管脚图(所有封装形式均满足欧盟 RoHS 要求,LQFP-32 采用 Green 标准生产) 强烈推荐选择 SOP-16/20/28/32 贴片封装,传统的插件 DIP 封装稳定供货 STC12C5201 系列管脚图 1 2 3 4 5 6 7 8 9 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 Gnd P2.2 1 P2.3 2 RST 3 VCC RxD/P3.0 P1.7 TxD/P3.1 P1.6 XTAL2 P1.5 XTAL1 P1.4 INT0/P3.2 P1.3 INT1/P3.3 P1.2/EX_LVD/RST2     CLKOUT0/T0/P3.4 P1.1            CLKOUT1/T1/P3.5 P1.0                P2.4 P3.7 5 6 7 8 9 10 11 12 P1.5 P0.0 2 XTAL2 7 26 P0.3 XTAL2 3 XTAL1 8 25 P1.4 XTAL1 4 INT0/P3.2 9 24 P1.3 INT0/P3.2 5 23 P0.2 P0.1 6 INT1/P3.3 CLKOUT0/T0/P3.4 19 P3.7 15 18 P2.7 Gnd 16 17 P2.6 16 14 P2.5 P1.0 P2.4 P1.1 15 P1.0 P3.7 20 14 13 17 P2.7 CLKOUT1/T1/P3.5 P1.2/EX_LVD/RST2 8 13 P1.1 P2.6 21 18 12 12 P0.2 7 Gnd CLKOUT0/T0/P3.4 P1.3 19 11 P1.2/EX_LVD/RST2 P1.4 20 P2.5 22 P0.3 21 10 11 P1.5 22 9 INT1/P3.3 P1.6 23 P2.4 10 24 LQFP-32 P0.1 P2.6 P1.7 1 27 P2.7 15 P2.0 TxD/P3.1 6 16 25 P1.6 P0.0 P3.7 P2.1 P1.7 28 P1.0 17 26 29 5 P1.1 18 Vcc 4 TxD/P3.1 P1.2/EX_LVD/RST2 19 27 RxD/P3.0 P1.3 20 P2.2 P2.0 P1.4 21 28 30 P1.5 22 P2.3 3 P1.6 23 29 P2.1 RST P1.7 24 RST 31 25 30 32 2 SOP-32 1 P2.3 P2.0 P3.0/RxD VCC P2.2 P2.1 26 31 14 VCC 27 32 13 Gnd VCC P1.7 P1.6 P1.5 P1.4 P1.2/EX_LVD/RST2 P1.1 P1.0 P3.7 28 4 P2.5 18 17 16 15 14 13 12 11 10 SOP-28 / SKDIP-28(窄体) 20 19 18 17 16 15 14 13 12 11 VCC P1.7 P1.6 P1.5 P1.2/EX_LVD/RST2 P1.1 P1.0 P3.7 CLKOUT1/T1/P3.5 16 15 14 13 12 11 10 9 DIP-18 SOP-20 / DIP-20 1 2 3 4 5 6 7 8 9 10 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 Gnd SOP-16 / DIP-16 1 2 3 4 5 6 7 8 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT1/P3.3 CLKOUT0/T0/P3.4 Gnd STC12C5202 系列(无 A/D 转换,无 PWM 功能,无内部 EEPROM) STC12LE5202 系列(无 A/D 转换,无 PWM 功能,无内部 EEPROM) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  23 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM(脉宽调制) STC12C5201PWM 系列管脚图 P2.2 1 P2.3 2 RST 3 VCC RxD/P3.0 P1.7 TxD/P3.1 P1.6 XTAL2 P1.5 XTAL1 P1.4 INT0/P3.2 P1.3 INT1/P3.3 P1.2/EX_LVD/RST2     CLKOUT0/ECI/T0/P3.4 P1.1            CLKOUT1/CCP1/T1/P3.5 P1.0                P2.4 P3.7/CCP0 4 5 6 7 8 9 10 11 12 27 P1.5 TxD/P3.1 1 XTAL2 7 26 P0.3 P0.0 2 XTAL1 8 25 P1.4 XTAL2 3 INT0/P3.2 9 24 P1.3 XTAL1 4 23 P0.2 INT0/P3.2 5 P0.1 6 P3.7/CCP0 16 P2.7 15 P2.6 P1.7 6 P1.0 17 P2.0 P1.6 P0.0 P1.1 18 25 28 P1.2/EX_LVD/RST2 19 P2.1 5 P1.3 20 26 P1.7 TxD/P3.1 P1.4 21 Vcc 29 P1.5 22 27 4 P1.6 23 P2.2 P2.0 RxD/P3.0 P1.7 24 28 30 P2.0 25 P2.3 3 26 29 P2.1 RST P2.1 RST VCC 31 LQFP-32 32 2 SOP-32 1 P2.3 VCC 27 30 14 28 P3.0/RxD 13 Gnd VCC P1.7 P1.6 P1.5 P1.4 P1.2/EX_LVD/RST2 P1.1 P1.0 P3.7/CCP0 31 P2.5 P2.2 18 17 16 15 14 13 12 11 10 32 20 19 18 17 16 15 14 13 12 11 1 2 3 4 5 6 7 8 9 RST VCC RxD/P3.0 P1.7 TxD/P3.1 P1.6 XTAL2 P1.5 XTAL1 P1.2/EX_LVD/RST2 INT1/P3.3 P1.1 CLKOUT0/ECI/T0/P3.4 P1.0 CLKOUT1/CCP1/T1/P3.5 P3.7/CCP0 Gnd SOP-28 / SKDIP-28(窄体) SOP-20 / DIP-20 1 2 3 4 5 6 7 8 9 10 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT0/P3.2 INT1/P3.3 CLKOUT0/ECI/T0/P3.4 CLKOUT1/CCP1/T1/P3.5 Gnd 16 15 14 13 12 11 10 9 DIP-18 1 2 3 4 5 6 7 8 SOP-16 / DIP-16 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT1/P3.3 CLKOUT0/ECI/T0/P3.4 Gnd 24 P1.6 23 P1.5 22 P0.3 21 P1.4 20 P1.3 19 P0.2 13 20 P1.0 CLKOUT0/ECI/T0/P3.4 8 17 P1.1 P2.4 14 19 P3.7/CCP0 P2.5 15 18 P2.7 Gnd 16 17 P2.6 9 16 P1.2/EX_LVD/RST2 CLKOUT1/CCP1/T1/P3.5 P1.0 18 15 7 CCP0/P3.7 INT1/P3.3 14 P1.1 P2.7 21 13 12 P2.6 CLKOUT0/ECI/T0/P3.4 12 P1.2/EX_LVD/RST2 Gnd 22 11 11 P2.5 INT1/P3.3 10 10 CLKOUT1/CCP1/T1/P3.5 P2.4 P0.1 STC12C5202PWM 系列(无 A/D 转换,有 PWM 功能,有内部 EEPROM) STC12LE5202PWM 系列(无 A/D 转换,有 PWM 功能,有内部 EEPROM) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  24 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5201AD 系列管脚图 P2.2 1 P2.3 2 VCC RST P1.7/ADC7 RxD/P3.0 P1.6/ADC6 TxD/P3.1 P1.5/ADC5 XTAL2 P1.4/ADC4 XTAL1 P1.3/ADC3 INT0/P3.2 P1.2/ADC2/EX_LVD/RST2 INT1/P3.3 P1.1/ADC1     CLKOUT0/ECI/T0/P3.4 P1.0/ADC0            CLKOUT1/CCP1/T1/P3.5 P3.7/CCP0                P2.4 3 4 5 6 7 8 9 10 11 12 P1.5/ADC5 P0.0 2 XTAL2 7 26 P0.3 XTAL2 3 XTAL1 8 25 P1.4/ADC4 XTAL1 4 INT0/P3.2 9 24 P1.3/ADC3 INT0/P3.2 5 23 P0.2 P0.1 6 INT1/P3.3 CLKOUT0/ECI/T0/P3.4 P3.7/CCP0 18 P2.7 Gnd 16 17 P2.6 16 19 15 ADC0/P1.0 14 P2.5 15 P2.4 P1.1/ADC1 CCP0/P3.7 P1.0/ADC0 14 20 P2.7 13 17 13 CLKOUT1/CCP1/T1/P3.5 P1.2/ADC2/EX_LVD/RST2 8 P2.6 P1.1/ADC1 12 21 18 Gnd 12 P0.2 7 11 CLKOUT0/ECI/T0/P3.4 P1.3/ADC3 19 P2.5 P1.2/ADC2/EX_LVD/RST2 P1.4/ADC4 20 10 22 P0.3 21 9 11 P1.5/ADC5 22 P2.4 INT1/P3.3 P1.6/ADC6 23 CLKOUT1/CCP1/T1/P3.5 10 P2.7 P2.6 24 LQFP-32 P0.1 16 15 P1.7/ADC7 1 27 P3.7/CCP0 P2.0 TxD/P3.1 6 P1.0/ADC0 17 25 P1.6/ADC6 P0.0 P1.1/ADC1 18 P2.1 P1.7/ADC7 28 P1.2/ADC2/EX_LVD/RST2 19 26 29 5 P1.3/ADC3 20 Vcc 4 TxD/P3.1 P1.4/ADC4 21 27 RxD/P3.0 P1.5/ADC5 22 P2.2 P2.0 P1.6/ADC6 23 28 30 P1.7/ADC7 24 P2.3 3 P2.0 25 29 P2.1 RST 26 RST 31 SOP-32 32 2 P2.1 30 VCC 1 P2.3 VCC 27 P3.0/RxD 14 28 31 13 Gnd VCC P1.7/ADC7 P1.6/ADC6 P1.5/ADC5 P1.4/ADC4 P1.2/ADC2/EX_LVD/RST2 P1.1/ADC1 P1.0/ADC0 P3.7/CCP0 32 P2.5 P2.2 18 17 16 15 14 13 12 11 10 SOP-28 / SKDIP-28(窄体) 20 19 18 17 16 15 14 13 12 11 1 2 3 4 5 6 7 8 9 RST VCC RxD/P3.0 P1.7/ADC7 TxD/P3.1 P1.6/ADC6 XTAL2 P1.5/ADC5 XTAL1 P1.2/ADC2/EX_LVD/RST2 INT1/P3.3 P1.1/ADC1 CLKOUT0/ECI/T0/P3.4 P1.0/ADC0 CLKOUT1/CCP1/T1/P3.5 P3.7/CCP0 Gnd DIP-18 16 15 14 13 12 11 10 9 SOP-20 / DIP-20 1 2 3 4 5 6 7 8 9 10 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT0/P3.2 INT1/P3.3 CLKOUT0/ECI/T0/P3.4 CLKOUT1/CCP1/T1/P3.5 Gnd SOP-16 / DIP-16 1 2 3 4 5 6 7 8 RST RxD/P3.0 TxD/P3.1 XTAL2 XTAL1 INT1/P3.3 CLKOUT0/ECI/T0/P3.4 Gnd C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM(脉宽调制) STC12C5202AD 系列(有 A/D 转换,有 PWM 功能,有内部 EEPROM) STC12LE5202AD 系列(有 A/D 转换,有 PWM 功能,有内部 EEPROM) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  25 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 LQFP-32 管脚图 长 x 宽 = 9mm x 9mm, 高 < 1.6mm P2.2 Vcc P2.1 P2.0 P1.7 28 27 26 25 P1.2/EX_LVD/RST2 8 17 P1.1 P1.0 15 P3.7 14 P2.7 13 P2.1 P2.0 P1.7 27 26 25 P1.2/EX_LVD/RST2 8 17 P1.1 P1.0 15 CCP0/P3.7 16 18 14 CLKOUT0/ECI/T0/P3.4 P2.6 P0.2 7 P2.7 INT1/P3.3 Vcc P1.3 19 13 6 P2.6 P0.1 28 P1.4 20 12 5 11 INT0/P3.2 12 P0.3 21 Gnd 4 P2.5 XTAL1 11 P1.5 22 10 3 Gnd P1.6 23 9 XTAL2 P2.5 24 P2.4 2 STC12LE5201 系列(无 A/D 转换,无 PWM 功能,无内部 EEPROM),32-Pin CLKOUT1/CCP1/T1/P3.5 1 P0.0 STC12C5201 系列(无 A/D 转换,无 PWM 功能,无内部 EEPROM),32-Pin LQFP-32 TxD/P3.1 16 18 P2.2 CLKOUT0/T0/P3.4 P2.3 P0.2 7 P2.3 INT1/P3.3 29 P1.3 19 29 6 30 P0.1 30 P1.4 20 10 5 9 INT0/P3.2 P3.0/RxD P0.3 21 P2.4 4 CLKOUT1/T1/P3.5 XTAL1 RST P1.5 22 P3.0/RxD 3 31 P1.6 23 RST XTAL2 32 24 31 2 32 1 P0.0 LQFP-32 TxD/P3.1 C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM(脉宽调制) STC12C5201PWM 系列(无 A/D 转换,有 PWM 功能,有内部 EEPROM),32-Pin Vcc P2.1 P2.0 P1.7/ADC7 27 26 25 P0.2 7 18 P1.2/ADC2/EX_LVD/RST2 8 17 P1.1/ADC1 13 14 15 16 P2.7 PWM0/CCP0/P3.7 ADC0/P1.0 CLKOUT0/ECI/T0/P3.4 28 P1.3/ADC3 19 P2.6 INT1/P3.3 P2.2 6 P2.3 P0.1 29 P1.4/ADC4 20 12 5 11 INT0/P3.2 30 P0.3 21 Gnd 4 P2.5 XTAL1 RST P1.5/ADC5 22 10 3 P3.0/RxD P1.6/ADC6 23 9 XTAL2 31 24 P2.4 2 CLKOUT1/CCP1//T1/P3.5 1 P0.0 LQFP-32 TxD/P3.1 32 STC12LE5201PWM 系列(无 A/D 转换,有 PWM 功能,有内部 EEPROM),32-Pin STC12C5201AD 系列(有 A/D 转换,PWM 功能,有内部 EEPROM),32-Pin STC12LE5201AD 系列(有 A/D 转换,PWM 功能,有内部 EEPROM),32-Pin 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  26 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        2.3.2  STC12C5A60S2系列单片机管脚图 STC12C5A60 系列单片机管脚图  6  5  4  3  2  1  44  43  42  41  40 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 1 2 3 4 5 6 7 8 9 10 11 33 32 31 30 29 28 27 26 25 24 23 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 12 13 14 15 16 17 18 19 20 21 22 MOSI/P1.5 MISO/P1.6 SCLK/P1.7 P4.7/RST RxD/P3.0 SCLK/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5  44  43  42  41  40  39  38  37  36  35  34 P1.4/CCP1/SS P1.3/CCP0 P1.2/ECI P1.1 P1.0/CLKOUT2 P4.2/CCP0/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P5.2 P1.4/CCP1/SS P1.3/CCP0 P1.2/ECI P1.1 P1.0/CLKOUT2 P4.2/CCP0/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 48 47 46 45 44 43 42 41 40 39 38 37 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P5.1 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 P5.0 13 14 15 16 17 18 19 20 21 22 23 24 LQFP-48 36 35 34 33 32 31 30 29 28 27 26 25 39 38 37 36 35 34 33 32 31 30 29 Q FP-44 1 2 3 4 5 6 7 8 9 10 11 12 增加 P4 口 并可位寻址 P5.3 MOSI/P1.5 MISO/P1.6 SCLK/P1.7 P4.7/RST RxD/P3.0 SCLK/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 7 8 9 10 11 12 13 14 15 16 17 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 MOSI/P1.5 MISO/P1.6 SCLK/P1.7 P4.7/RST RxD/P3.0 SCLK/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 18 19 20 21 22 23 24 25 26 27 28 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 PLCC-44 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 增加 P4 口 并可位寻址 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PDIP-40 CLKOUT2/P1.0 P1.1 ECI/P1.2 CCP0/P1.3  SS/CCP1/P1.4 MOSI/P1.5 MISO/P1.6 SCLK/P1.7 P4.7/RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P1.4/CCP1/SS P1.3/CCP0 P1.2/ECI P1.1 P1.0/CLKOUT2 P4.2/CCP0/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM(脉宽调制) STC12C5A60PWM 系列(无第二串口,无 A/D 转换,有 PWM/PCA 功能,有内部 EEPROM) STC12LE5A60PWM 系列(无第二串口,无 A/D 转换,有 PWM/PCA 功能,有内部 EEPROM) 由 P4SW 寄存器设置(NA/P4.4,ALE/P4.5,EX_LVD/P4.6)三个端口的第二功能 Mnemonic Add Name  7 P4SW BBh Port - 4 switch  6  5  4  3  2  1  0 LVD_P4.6 ALE_P4.5 NA_P4.4 Reset Value x000,xxxx NA/P4.4:       0,复位后 P4SW.4 = 0,NA/P4.4 脚是弱上拉,无任何功能                1,通过设置 P4SW.4 = 1,将NA/P4.4 脚设置成I/O 口(P4.4) ALE/P4.5:      0,复位后 P4SW.5 = 0,ALE/P4.5 脚是 ALE 信号,只有在用 MOVX 指令访问片外扩展器件时才有信号输出                1, 通过设置 P4SW.5 = 1,将 ALE/P4.5 脚设置成 I/O 口(P4.5) EX_LVD/P4.6:   0,  复位后 P4SW.6 = 0,EX_LVD/P4.6 是外部低压检测脚,可使用查询方式或设置成中断来检测                1,通过设置 P4SW.6 = 1 将 EX_LVD/P4.6 脚设置成 I/O 口(P4.6) 在 ISP 烧录程序时设置 RST/P4.7 的第二功能 RST/P4.7 在 ISP 烧录程序时选择是复位脚还是 P4.7 口,如设置成 P4.7 口,必须使用外部时钟。 由 AUXR1 寄存器设置(PCA/PWM/SPI/UART2)是在 P1 口还是在 P4 口 Mnemonic Add Name 7 6  5 4 3  2 1 0 AUXR1 A2h Auxiliary register 1 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS Reset Value x000,00x0 PCA_P4:      0,复位后AUXR1.6 = 0,PCA/PWM 在P1 口              1,通过设置 AUXR1.6 = 1,将 PCA/PWM 从 P1 口切换到 P4 口 SPI_P4:      0,复位后 AUXR1.5 = 0,SPI 在 P1 口              1,通过设置 AUXR1.5 = 1,将 SPI 从 P1 口切换到 P4 口 S2_P4:       0,复位后 AUXR1.4 = 0,UART2/ 串口 2 在 P1 口(仅针对双串口单片机有效)              1,通过设置 AUXR1.4 = 1,将 UART2/ 串口 2 从 P1 口切换到 P4 口(仅针对双串口单片机有效) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  27 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5A60AD 系列单片机管脚图  6  5  4  3  2  1  44  43  42  41  40 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 7 8 9 10 11 12 13 14 15 16 17 39 38 37 36 35 34 33 32 31 30 29 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13  44  43  42  41  40  39  38  37  36  35  34 1 2 3 4 5 6 7 8 9 10 11 33 32 31 30 29 28 27 26 25 24 23 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 P5.0 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 12 13 14 15 16 17 18 19 20 21 22 48 47 46 45 44 43 42 41 40 39 38 37 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P5.1 13 14 15 16 17 18 19 20 21 22 23 24 LQFP-48 36 35 34 33 32 31 30 29 28 27 26 25 Q FP-44 1 2 3 4 5 6 7 8 9 10 11 12 增加 P4 口 并可位寻址 P5.3 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0 P1.2/ADC2/ECI P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P5.2 P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0 P1.2/ADC2/ECI P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 18 19 20 21 22 23 24 25 26 27 28 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 PLCC-44 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 增加 P4 口 并可位寻址 PDIP-40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLKOUT2/ADC0/P1.0 ADC1/P1.1 ECI/ADC2/P1.2 CCP0/ADC3/P1.3  SS/CCP1/ADC4/P1.4 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0 P1.2/ADC2/ECI P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM(脉宽调制) STC12C5A60AD 系列(无第二串口,有 A/D 转换,有 PWM/PCA 功能,有内部 EEPROM) STC12LE5A60AD 系列(无第二串口,有 A/D 转换,有 PWM/PCA 功能,有内部 EEPROM) 由 P4SW 寄存器设置(NA/P4.4,ALE/P4.5,EX_LVD/P4.6)三个端口的第二功能 Mnemonic Add Name P4SW BBh Port - 4 switch  7  6  5  4  3  2  1  0 LVD_P4.6 ALE_P4.5 NA_P4.4 Reset Value x000,xxxx NA/P4.4:       0,复位后 P4SW.4 = 0,NA/P4.4 脚是弱上拉,无任何功能                1,通过设置 P4SW.4 = 1,将NA/P4.4 脚设置成I/O 口(P4.4) ALE/P4.5:      0,复位后 P4SW.5 = 0,ALE/P4.5 脚是 ALE 信号,只有在用 MOVX 指令访问片外扩展器件时才有信号输出                1,通过设置 P4SW.5 = 1,将 ALE/P4.5 脚设置成 I/O 口(P4.5) EX_LVD/P4.6:   0, 复位后 P4SW.6 = 0,EX_LVD/P4.6 是外部低压检测脚,可使用查询方式或设置成中断来检测                1,通过设置 P4SW.6 = 1 将 EX_LVD/P4.6 脚设置成 I/O 口(P4.6) 在 ISP 烧录程序时设置 RST/P4.7 的第二功能 RST/P4.7 在 ISP 烧录程序时选择是复位脚还是 P4.7 口,如设置成 P4.7 口,必须使用外部时钟。 由 AUXR1 寄存器设置(PCA/PWM/SPI/UART2)是在 P1 口还是在 P4 口 Mnemonic Add Name 7 6  5 4 3  2 1 0 AUXR1 A2h Auxiliary register 1 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS Reset Value x000,00x0 PCA_P4:      0,复位后AUXR1.6 = 0,PCA/PWM 在P1 口              1,通过设置 AUXR1.6 = 1,将 PCA/PWM 从 P1 口切换到 P4 口 SPI_P4:      0,复位后 AUXR1.5 = 0,SPI 在 P1 口             1,通过设置 AUXR1.5 = 1,将 SPI 从 P1 口切换到 P4 口 S2_P4:       0,复位后 AUXR1.4 = 0,UART2/ 串口 2 在 P1 口(仅针对双串口单片机有效)             1,通过设置 AUXR1.4 = 1,将 UART2/ 串口 2 从 P1 口切换到 P4 口(仅针对双串口单片机有效) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  28 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5A60S2 系列单片机管脚图  6  5  4  3  2  1  44  43  42  41  40 VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 7 8 9 10 11 12 13 14 15 16 17 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4  44  43  42  41  40  39  38  37  36  35  34 P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0/TxD2 P1.2/ADC2/ECI/RxD2 P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/RxD2/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P5.2 P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0/TxD2 P1.2/ADC2/ECI/RxD2 P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/RxD2/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 1 2 3 4 5 6 7 8 9 10 11 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/TxD2/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 33 32 31 30 29 28 27 26 25 24 23 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 P5.0 WR/P3.6 RD/P3.7 XTAL2 XTAL1 Gnd SS/P4.0 A8/P2.0 A9/P2.1 A10/P2.2 A11/P2.3 A12/P2.4 12 13 14 15 16 17 18 19 20 21 22 48 47 46 45 44 43 42 41 40 39 38 37 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 P5.1 13 14 15 16 17 18 19 20 21 22 23 24 LQFP-48 36 35 34 33 32 31 30 29 28 27 26 25 Q FP-44 1 2 3 4 5 6 7 8 9 10 11 12 增加 P4 口 并可位寻址 P5.3 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/TxD2/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 EX_LVD/P4.6/RST2 P4.1/ECI/MOSI ALE/P4.5 NA/P4.4 P2.7/A15 P2.6/A14 P2.5/A13 39 38 37 36 35 34 33 32 31 30 29 18 19 20 21 22 23 24 25 26 27 28 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 SCLK/TxD2/CCP1/P4.3 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 PLCC-44 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 增加 P4 口 并可位寻址 PDIP-40 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 CLKOUT2/ADC0/P1.0 ADC1/P1.1 RxD2/ECI/ADC2/P1.2 TxD2/CCP0/ADC3/P1.3  SS/CCP1/ADC4/P1.4 MOSI/ADC5/P1.5 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 P4.7/RST RxD/P3.0 TxD/P3.1 INT0/P3.2 INT1/P3.3 CLKOUT0/T0/P3.4 CLKOUT1/T1/P3.5 WR/P3. RD/P3.6 XTAL27 XTAL1 Gnd P1.4/ADC4/CCP1/SS P1.3/ADC3/CCP0/TxD2 P1.2/ADC2/ECI/RxD2 P1.1/ADC1 P1.0/ADC0/CLKOUT2 P4.2/CCP0/RxD2/MISO VCC P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 C C P :是英文单词的缩写 Capture(捕获),Compare(比较),PWM(脉宽调制) STC12C5A60S2 系列(有第二串口,有 A/D 转换,有 PWM/PCA 功能,有内部 EEPROM) STC12LE5A60S2 系列(有第二串口,有 A/D 转换,有 PWM/PCA 功能,有内部 EEPROM) 由 P4SW 寄存器设置(NA/P4.4,ALE/P4.5,EX_LVD/P4.6)三个端口的第二功能 Mnemonic Add Name P4SW BBh Port - 4 switch  7  6  5  4  3  2  1  0 LVD_P4.6 ALE_P4.5 NA_P4.4 Reset Value x000,xxxx NA/P4.4:     0,复位后 P4SW.4 = 0,NA/P4.4 脚是弱上拉,无任何功能              1,通过设置 P4SW.4 = 1,将 NA/P4.4 脚设置成 I/O 口(P4.4) ALE/P4.5:    0,复位后 P4SW.5 = 0,ALE/P4.5 脚是 ALE 信号,只有在用 MOVX 指令访问片外扩展器件时才有信号输出              1,通过设置 P4SW.5 = 1,将 ALE/P4.5 脚设置成 I/O 口(P4.5) EX_LVD/P4.6: 0, 复位后 P4SW.6 = 0,EX_LVD/P4.6 是外部低压检测脚,可使用查询方式或设置成中断来检测              1,通过设置 P4SW.6 = 1 将 EX_LVD/P4.6 脚设置成 I/O 口(P4.6) 在 ISP 烧录程序时设置 RST/P4.7 的第二功能 RST/P4.7 在 ISP 烧录程序时选择是复位脚还是 P4.7 口,如设置成 P4.7 口,必须使用外部时钟。 由 AUXR1 寄存器设置(PCA/PWM/SPI/UART2)是在 P1 口还是在 P4 口 Mnemonic Add Name 7 6  5 4 3  2 1 0 AUXR1 A2h Auxiliary register 1 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS Reset Value x000,00x0 PCA_P4:      0,复位后AUXR1.6 = 0,PCA/PWM 在P1 口              1,通过设置 AUXR1.6 = 1,将 PCA/PWM 从 P1 口切换到 P4 口 SPI_P4:      0,复位后 AUXR1.5 = 0,SPI 在 P1 口              1,通过设置 AUXR1.5 = 1,将 SPI 从 P1 口切换到 P4 口 S2_P4:       0,复位后 AUXR1.4 = 0,UART2/ 串口 2 在 P1 口(仅针对双串口单片机有效)              1,通过设置 AUXR1.4 = 1,将 UART2/ 串口 2 从 P1 口切换到 P4 口(仅针对双串口单片机有效) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  29 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243              2.4  STC12 系列单片机封装尺寸图 2.4.1  STC12C5202AD 系列单片机封装尺寸图 SOP-16 封装尺寸图 E E1 16-PIN SMALL OUTLINE PACKAGE (SOP-16) D A A2  b  b1  C  C1  L2 b e  WITH PLATING  BASE METAL Φ  R A1 A3  R1  L  L1 COMMON DIMENSIONS ( UNITS OF MEASURE = MILLIMETER ) SYMBOL MIN NOM MAX A 1.35 1.60 1.75 A1 0.10 0.15 0.25 A2 1.25 1.45 1.65 A3 0.55 0.65 0.75 b 0.36 - 0.49 b1 0.35 0.40 0.45 c 0.16 - 0.25 c1 0.15 0.20 0.25 D 9.80 9.90 10.00 E 5.80 6.00 6.20 E1 3.80 3.90 4.00 e 1.27BSC L 0.45 0.60 0.80 L1 1.04REF L2 0.25BSC R 0.07 - - R1 0.07 - - Ф 6 ° 8 ° 1 0 ° 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  30 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 PDIP-16 封装尺寸图 Plastic Dual Inline Package (PDIP-16) Dimensions in Inches and (Millimeters) D E1 PIN1 A2 A A1 L b e b1 E eA eB COMMON DIMENSIONS ( UNITS OF MEASURE = MILLIMETER ) SYMBOL MIN NOM MAX A - - 4.80 A1 0.50 - - A2 3.10 3.30 3.50 b 0.38 - 0.55 b1 0.38 0.46 0.51 D 18.95 19.05 19.15 E 7.62 7.87 8.25 E1 6.25 6.35 6.45 e 2.54BSC eA 7.62BSC eB 7.62 8.80 10.90 L 2.92 3.30 3.81 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  31 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 PDIP-18 封装尺寸图 Plastic Dual Inline Package (PDIP-18) Dimensions in Inches and (Millimeters) A B MAX C D e b b1 E eB COMMON DIMENSIONS ( UNITS OF MEASURE = MILLIMETER ) SYMBOL MIN NOM MAX A 22.72 - 23.23 B 6.10 - 6.60 C 3.18 - 3.43 D 3.18 - 3.69 e - 2.54 - b 0.41 - 0.51 b1 1.27 - 1.78 E 7.49 - 8.00 eB 8.51 - 9.52 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  32 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 SOP-20 封装尺寸图 PDIP-20 封装尺寸图 Plastic Gull WIng Small Outline (SOIC-20 / SOP-20) Plastic Dual Inline Package (PDIP-20) Dimensions in Inches and (Millimeters) Dimensions in Inches and (Millimeters) 0.020 (0.508) 0.013 (0.330) 1.060 (26.9) 0.980 (24.9) 0.299 (7.60) 0.291 (7.39) PIN1 PIN1 0.420 (10.7) 0.393 (9.98) 0.280 (7.11) 0.240 (6.10) 0.090(2.29) MAX 0.900(22.86) REF 0.050 (1.27) 0.210(5.33) MAX 0.513 (13.0) 0.497 (12.6) 0.105 (2.67) 0.092 (2.34) 0.005(0.127) MIN SEATING PLANE 0.015(0.381)MIN 0.150 (3.81) 0.115 (2.92) 0.012 (0.305) 0.003 (0.076) 0 REF 8 0.100 (2.54) 0.070(1.78) 0.045(1.13) 0.325(8.26) 0.300(7.62) 0.013 (0.330) 0.009 (0.229) 0.014(0.356) 0.008(0.203) 0.035 (0.889) 0.015 (0.381) 0.022 (0.559) 0.014 (0.356) 0 REF 15 0.430(10.92)MAX 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  33 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 LSSOP-20 封装尺寸图 超小封装 LSSOP-20(仅为 6.4mm x 6.4mm),尺寸只有常规的 SOP-8 大小 PACKAGE:PLASTIC SHRINK SMALL OUTLINE(LSSOP-20,6.4mm × 6.4mm) MIN 0.05mm 0.65mm 6.50 ± 0.10mm 0.22 ± 0.05mm 1.50 ± 0.10mm 6.40 ± 0.20mm MAX 1.85mm 0.15-+ 0.10mm 0.05mm 5.72mm 4.40 ± 0.10mm  0.50 ± 0.20mm Φ 0°~ 8° 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  34 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 SOP-28 封装尺寸图 SKDIP-28 封装尺寸图 28-PIN SMALL OUTLINE PACKAGE (SOP-28) 28-PIN PLASTIC DUAL-IN-LINE PACKAGE (SKDIP-28) 0.020 (0.508) 0.014 (0.350) 1.445 (36.70) 1.455 (36.96) 0.299(7.60) 0.291(7.39) PIN1 0.280 (7.11) 0.240 (6.10) 0.420(10.7) 0.393(9.98) PIN1 0.090(2.29) MAX 1.300(33.02) REF 0.210(5.33) MAX 0.050 (1.270) 0.005(0.127) MIN SEATING PLANE 0.015(0.381)MIN 0.703 (17.856) 0.693 (17.602) 0.112 (2.844) 0.100 (2.540) 0.150 (3.81) 0.115 (2.92) 0.100 (2.54) 0.014 (0.350) 0.004 (0.102)  0  REF 10 0.013 (0.330) 0.009 (0.229) 0.0484 (1.228) 0.0276 (0.700) 0.022 (0.559) 0.014 (0.356) 0.070(1.78) 0.045(1.13) 0.325(8.26) 0.300(7.62) 0.014(0.356) 0.008(0.203) 0 REF 15 0.430(10.92)MAX 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  35 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 SOP-32 封装尺寸图 32-PIN SMALL OUTLINE PACKAGE (SOP-32) 0.020 (0.508) 0.014 (0.350) 0.299(7.60) 0.291(7.39) 0.420(10.7) 0.393(9.98) PIN1 0.050 (1.270) 0.829 (21.08) 0.822 (20.88) 0.112 (2.844) 0.100 (2.540) 0.014(0.350) 0.004(0.102)  0  REF 10 0.013 (0.330) 0.009 (0.229) 0.0484 (1.228) 0.0276 (0.700) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  36 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 LQFP-32 封装尺寸图  D  E1  E  D1 e b  A3  A2  A  A1  R1  R2  L2  L  L1  b  b1  C  C1  WITH PLATING  BASE METAL COMMON DIMENSIONS ( UNITS OF MEASURE = MILLIMETER ) SYMBOL MIN NOM MAX A - - 1.60 A1 0.05 - 0.15 A2 1.35 1.40 1.45 A3 0.59 0.64 0.69 b 0.32 - 0.43 b1 0.31 0.35 0.39 c 0.13 - 0.18 c1 0.12 0.127 0.134 D 8.80 9.00 9.20 D1 6.90 7.00 7.10 E 8.80 9.00 9.20 E1 6.90 7.00 7.10 e 0.80BSC L 0.45 0.60 0.75 L1 1.00REF L2 0.25BSC R1 0.08 - - R2 0.08 - 0.20 S 0.20 - - Ф 0 ° 3 . 5 ° Ф 1 0 ° − 7 ° − Ф 2 1 1 ° 1 2 ° 1 3 ° Ф 3 1 1 ° 1 2 ° 1 3 ° 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  37 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.4.2  STC12C5A60AD/S2 系列单片机封装尺寸图 PDIP-40 封装尺寸图 seating plane PDIP40: plastic dual in-line package;40 leads(600 mil) ME D A2 A L A1 c e Z b 40 (e1) MH W M b1 21 pin 1 index E 1 20 0 5 10mm scale DIMENSIONS(inch dimensions are derived from the original mm dimensions) UNIT A max. A1 min. A2 max. b b1 c D (1) E (1) e e1 L mm 4.7 0.51 4.0 1.70 1.14 0.53 0.38 0.36 0.23 52.5 51.5 14.1 13.7 2.54 15.24 3.60 3.05 15.8 17.42 0.254 15.24 15.90 2.25 inches 0.19 0.020 0.16 0.067 0.045 0.021 0.014 0.015 0.009 2.067 2.028 0.56 0.54 0.10 0.60 0.14 0.12 0.62 0.60 0.089 ME MH 0.69 0.63 W 0.01 Z (1) max. Note 1.Plastic or metal protrusion of 0.25 mm maximum per side are not included OUTLINE VERSION IEC JEDEC SOT129-1 051G08 MO-015 REFERENCES EIAJ SC-511-40  EUROPEAN PROJECTION ISSUE DATE 95-01-14 99-12-27 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  38 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 LQFP-44 OUTLINE PACKAGE LQFP-44 封装尺寸图  D  E1  E  D1 e b  A3  A2  A  A1  R1  R2  L2  L  L1  b  b1  C  C1  WITH PLATING  BASE METAL C O M M O N   D I M E N S I O N S ( U N I T S   O F   M E A S U R E   =   M I L L I M E T E R ) SYMBOL MIN NOM MAX A - - 1.20 A1 0.05 - 0.15 A2 0.95 1.00 1.05 A3 0.39 0.44 0.49 b 0.31 - 0.44 b1 0.30 0.35 0.40 c 0.13 - 0.18 c1 0.12 0.127 0.134 D 11.80 12.00 12.20 D1 9.90 10.00 10.10 E 11.80 12.00 12.20 E1 9.90 10.00 10.10 e 0.80BSC L 0.45 0.60 0.75 L1 1.00REF L2 0.25BSC R1 0.08 - - R2 0.08 - 0.20 S 0.20 - - Ф 0 ° 3 . 5 ° Ф 1 0 ° − 7 ° − Ф 2 1 1 ° 1 2 ° 1 3 ° Ф 3 1 1 ° 1 2 ° 1 3 ° 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  39 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 PLCC-44 OUTLINE PACKAGE PLCC-44 封装尺寸图 eE eD y X A 29 39 28 40 ZE bp b1 W M E HE 44 1 pin 1 index A e 18 6 β A4 A1 (A3) k1 LP k 17 7 e ZD D detail X V M A B HD V M B 0 10mm 5 scale DIMENSIONS( millimetre dimensions are derived from the original inch dimensions) UNIT mm  A  A1 max. A3 4.57 0.51 0.25 4.19 0.180 inches 0.020 0.01 0.165  A4 max. bp 0.53 3.05 0.33 b1 D(1) E(1) e eD eE HD HE k 0.81 16.66 16.66 16.00 16.00 17.65 17.65 1.22 1.27 14.99 14.99 17.40 17.40 1.07 0.66 16.51 16.51 k1 max. LP v w y 0.51 1.44 1.02 0.18 0.18 0.10 ZD(1) max. 2.16 ZE(1) max. β 2.16 0.021 0.032 0.656 0.656 0.630 0.630 0.695 0.695 0.048 0.057 0.007 0.007 0.004 0.085 0.085 0.12 0.05 0.020 0.040 0.013 0.026 0.650 0.650 0.590 0.590 0.685 0.685 0.042 45° Note 1.Plastic or metal protrusions of 0.01 inches maximum per side are not included OUTLINE VERSION IEC JEDEC SOT187-2 112E10 MO-047 REFERENCES EIAJ  EUROPEAN PROJECTION ISSUE DATE 97-12-16 99-12-27 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  40 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 LQFP-48 OUTLINE PACKAGE LQFP-48 封装尺寸图  D  E1  E  D1 e b  A3  A2  A  A1  R1  R2  L2  L  L1  b  b1  C  C1  WITH PLATING  BASE METAL SYMBOL A A1 A2 A3 b b1 c c1 D D1 E E1 e L L1 L2 R1 R2 S MIN - 0.05 1.35 0.59 0.18 0.17 0.13 0.12 8.80 6.90 8.80 6.90 0.45 0.08 0.08 0.20 NOM - - 1.40 0.64 - 0.20 - 0.127 9.00 7.00 9.00 7.00 0.50BSC 0.60 1.00REF 0.25BSC - - - MAX 1.60 0.15 1.45 0.69 0.27 0.23 0.18 0.134 9.20 7.10 9.20 7.10 0.75 - 0.20 - 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  41 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243              2.5  STC12 系列单片机命名规则 2.5.1  STC12C5201AD 系列单片机命名规则 S T C 1 2 x x  52 x x   x x  — 3 7  x - x x x x   x x 管脚数 如 1 6 , 1 8 ,2 0 ,2 8 ,3 2 何种封装:如 SOP,TSSOP,LQFP,PDIP,SKDIP 工作温度范围: I:工业级,-40℃  ~ +85℃ C:商业级,  0℃  ~ 70℃ 工作频率: 37:工作频率可到 37MHz 有 AD 字样:    有 A/D 转换,有 PWM,有内部 EEPROM, 有 PWM 字样:   无 A/D 转换,有 PWM,有内部 EEPROM, 无 AD/PWM 字样:无 A/D 转换,无 PWM,无内部 EEPROM, 程序空间大小, 如: 0 1 是 1 K 字节, 0 2 是 2 K 字节, 0 3 是 3 K 字节, 0 4 是 4 K 字节, 0 5 是 5 K 字节, 0 6 是 6 K 字节, RAM 是 256 字节 C: 5.5V ~ 3.3V LE:2.2V ~ 3.6V STC 1T 8051,同样的工作频率时,速度是普通 8051 的 8~12 倍 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  42 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.5.2  STC12C5A60AD/S2 系列单片机命名规则 S T C 1 2 x x  5A x x   x x —   3 5 x -  x x x x   x x 管脚数 如 40,44,48 何种封装:如 PDIP,LQFP,PLCC 工作温度范围: I:工业级,-40℃  ~ +85℃ C:商业级,  0℃  ~ 70℃ 工作频率: 35:工作频率可到 35MHz 有 S2 字样: 有 A/D 转换,有 PWM,有内部 EEPROM,有第二串口 有 AD 字样: 有 A/D 转换,有 PWM,有内部 EEPROM,无第二串口 有 PWM 字样:无 A/D 转换,有 PWM,有内部 EEPROM,无第二串口 程序空间大小, 如: 08 是 8K 字节,   16 是 16K 字节,  20 是 20K 字节, 32 是 32K 字节,  40 是 40K 字节, 48 是 48K 字节, 52 是 52K 字节,  60 是 60K 字节, 62 是 62K 字节, RAM 是 1280 字节 C: 5.5V ~ 3.3V LE:2.2V ~ 3.6V STC 1T 8051,同样的工作频率时,速度是普通 8051 的 8~12 倍 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  43 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     2.6   STC12C5201AD 系列单片机典型应用电路                  ---- 通过 RS-232 转换器连接电脑就可以下载程序 2.6.1  STC12C5201AD 系列单片机 28 脚典型应用电路 Vcc   MAX3232,MAX232,SP3232,SP232 通过电脑端的 PC / 电脑 串口 S T C - I S P 软件 10 μF VCC 16 2 V+ GND 15 3 C1- T1OUT 14 4 C2+ R1IN 13 5 C2- R1OUT 12 6 V- T1IN 11 7 T2OUT T2IN 10 + 8 R2IN Gnd PC_RxD (COM Pin2) “用户程序” 5 到 STC 单片机 建议用户在系统上 留此接口,可方便 在线下载用户程序 Reset U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 Gnd 9 R2OUT 控制下载 PC_TxD (COM Pin3) 0.1uF 0.1uF 2 3 Vcc 晶振频率在 12M 以下时: 可以不用 C1,R1 接 1K 电阻到地 Vcc USB +5V 系统电源 USB+5V T1OUT R1IN Gnd SW1 USB1 28 Pin Vin C1+ ( 0.1uF 1 STC12C5205/5206, STC12LE5205/5206下 载用户程序时需将 P1.0/P1.1 短接到地 Power On 电源开关 关于复位电路: 时钟频率高于 12MHz 时,建议使用第二复位功能脚 (STC12C5A60S2系列在RST2/EX_LVD/P4.6口  STC12C5201AD系列在RST2/EX_LVD/P1.2口) Vcc 1K 1   P2.2                          VCC  28 1K ( 2    P2.3                         P2.1  27 0.1 μF 3   RST                          P2.0  26 R1 10K + 10 μF ( 10μF + C1 4   RxD/P3.0               P1.7/ADC7  25 5   TxD/P3.1               P1.6/ADC6  24 <33pF <33pF 6   XTAL2                  P1.5/ADC5  23 7   XTAL1                  P1.4/ADC4  22 8   INT0/P3.2              P1.3/ADC3  21 9   INT1/P3.3      P1.2/ADC2/EX_LVD  20 10   ECI/T0/CLKOUT0/P3.4   P1.1/ADC1  19 11   PWM1/PCA1/T1/P3.5      P1.0/ADC0  18 12   P2.4             P3.7/PCA0/PWM0  17 13   P2.5                        P2.7  16 如果使用内部 R/C 振荡器时钟(室温情况下 5V 单片机为:11MHz~15.5MHz,3V 单片机为 8MHz~12MHz),XTAL1 和 XTAL2 脚浮空. 如果外部时钟频率在27MHz以上时,使用标称 频率就是基本频率的晶体,不要使用三泛 音的晶体,否则如参数搭配不当,就有可 能振在基频,此时实际频率就只有标称频 率的 1/3 了,或直接使用外部有源晶振,时 钟从 XTAL1 脚输入,XTAL2 脚必须浮空. 14   Gnd                         P2.6  15 使用编程锁紧座就是编程器 此线路已做成一个 STC12C5201AD 系列单片机 ISP 下载编程工具     用户在自己的目标系统上,如将 P3.0/P3.1 经过 RS-232 电平转换器转换后连接到电脑的普通 RS-232 串 口,就可以在系统编程 / 升级用户软件。 建议如果用户板上无 RS-232 电平转换器, 应引出一个插座,含 Gnd / P3.1 / P3.0 / Vcc 四个信号线,这样就可以在用户系统上直接编程了。当然如能引出 Gnd / P3.1 / P3.0 / Vcc / P1.1 / P1.0 六个信号线为好,因为可以通过 P1.0/P1.1 禁止 ISP 下载程序。如果能将 Gnd / P3.1 / P3.0 / Vcc / P1.1 / P1.0 / Reset 七个信号线引出就更好了,这样可以很方便的使用“脱机 下 载 板 ( 无 需 电 脑 )”。    关于 ISP 编程的原理及应用指南详见“STC12C5201AD 系列单片机开发 / 编程工具说明”部分。另外我 们有标准化的编程下载工具,用户可以在上面编程后再插到目标系统上,也可以借用它上面的 RS-232 电平 转换器连接到电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多, 故无须买第三方的高价编程器。     电脑端 STC-ISP 软件从网站 www.MCU-Memory.com 下载 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  44 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.6.2  STC12C5201AD 系列片机 20 脚典型应用电路 Vcc   MAX3232,MAX232,SP3232,SP232 PC / 电脑 串口 通过电脑端的 10 μF Vcc 16 2 V+ GND 15 3 C1- T1OUT 14 4 C2+ R1IN 13 5 C2- R1OUT 12 + 6 V- T1IN 11 7 T2OUT T2IN 10 8 R2IN Gnd PC_RxD (COM Pin2) 10μF C1 控制下载 5 “用户程序” 建议用户在系统上留 此接口,可方便在线 下载用户程序 Reset U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND R2OUT 9 晶振频率在 12M 以下时: 可以不用 C1,R1 接 1K 电阻到地 R1 Vcc S T C - I S P 软件 PC_TxD (COM Pin3) 0.1uF 0.1uF 2 3 Vcc 20 Pin 10K + 到 STC 单片机 USB +5V 系统电源 Vin C1+ ( 0.1uF 1 STC12C5205/5206, STC12LE5205/5206下 载用户程序时需将 P1.0/P1.1 短接到地 SW1 USB+5V T1OUT R1IN GND Power On 电源开关 USB1 关于复位电路: 时钟频率高于 12MHz 时,建议使用第二复位功能脚  STC12C5201AD系列在RST2/EX_LVD/P1.2口) Vcc 1  RST                          VCC   20 1K 1K 2  RxD/P3.0              P1.7/ADC7   19 <33pF <33pF 4  XTAL2                 P1.5/ADC5   17 0.1 μF + ( 3  TxD/P3.1             P1.6/ADC6   18 10 μF 5  XTAL1                 P1.4/ADC4   16 6  INT0/P3.2             P1.3/ADC3  15 7  INT1/P3.3     P1.2/ADC2/EX_LVD   14 8  ECI/T0/P3.4           P1.1/ADC1  13 9  PWM1/PCA1/T1/P3.5     P1.0/ADC0   12 如果使用内部 R/C 振荡器时钟(室温情 况下 5V 单片机为:11MHz~15.5MHz,3V 单片机为8MHz~12MHz),XTAL1和XTAL2 脚浮空. 如果外部时钟频率在 27MHz 以上时, 使用标称频率就是基本频率的晶 体,不要使用三泛音的晶体,否则 如参数搭配不当,就有可能振在基 频,此时实际频率就只有标称频率 的 1 / 3 了,或直接使用外部有源晶 振,时钟从 XTAL1 脚输入,XTAL2 脚必 须浮空. 10  Gnd              P3.7/PCA0/PWM0  11 使用编程锁紧座就是编程器     此线路已做成一个 STC12C5201AD 系列单片机 ISP 下载编程工具,可直接赠送给客户     用户在自己的目标系统上,如将 P3.0/P3.1 经过 RS-232 电平转换器转换后连接到电脑的普通 RS-232 串 口,就可以在系统编程 / 升级用户软件。建议如果用户板上无 R S - 2 3 2 电平转换器,应引出一个插座,含 Gnd / P3.1 / P3.0 / Vcc 四个信号线,这样就可以在用户系统上直接编程了。当然如能引出 Gnd / P3.1 / P3.0 / Vcc / P1.1 / P1.0 六个信号线为好,因为可以通过 P1.0/P1.1 禁止 ISP 下载程序。如果能将 Gnd / P3.1 / P3.0 / Vcc / P1.1 / P1.0 / Reset 七个信号线引出就更好了,这样可以很方便的使用“脱机 下 载 板 ( 无 需 电 脑 )”。    关于 ISP 编程的原理及应用指南详见“STC12C5201AD 系列单片机开发 / 编程工具说明”部分。另外我 们有标准化的编程下载工具,用户可以在上面编程后再插到目标系统上,也可以借用它上面的 RS-232 电平 转换器连接到电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多, 故无须买第三方的高价编程器。     电脑端 STC-ISP 软件从网站 www.STCMCU.com 下载 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  45 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.6.3  STC12C5A60S2 系列单片机 40 脚典型应用线路图 STC12C5205/5206, STC12LE5205/5206下 载用户程序时需将 P1.0/P1.1 短接到地 Vcc   MAX3232,MAX232,SP3232,SP232 PC / 电脑 串口 通过电脑端的 10 μF VCC 16 2 V+ GND 15 3 C1- T1OUT 14 4 C2+ R1IN 13 + 0.1uF C2- 6 V- T1IN 11 7 T2OUT T2IN 10 8 R2IN 5 “用户程序” Reset U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 Gnd 关于复位电路: 时钟频率高于 12MHz 时, 建议使用第二复位功能脚  STC12C5201AD 系列在RST2/P1.2 口 Power On 电源开关 USB+5V T1OUT R1IN Gnd USB1 行列式按键扫描电路,建议在行列的 两侧全部加上限流电阻 28 Pin Vcc SW1 到 STC 单片机 建议用户在系统上 留此接口,可方便 在线下载用户程序 9 USB +5V 系统电源 控制下载 PC_TxD (COM Pin3) R1OUT 12 R2OUT S T C - I S P 软件 Gnd PC_RxD (COM Pin2) 0.1uF 5 2 3 Vcc Vin C1+ ( 0.1uF 1 1K Vcc 1    P2.2                             VCC  32 1K 10μF + C1 0.1 μF + 10 μF ( ( 2    P2.3                            P2.1  31 3   RST                             P2.0  30 1K 10K R1 4   RxD/P3.0                   P1.7/ADC7  29 1K 5   TxD/P3.1                  P1.6/ADC6  28 6   P0.0                       P1.5/ADC5  27 <33pF 7   XTAL2                            P0.3  26 9   INT0/P3.2                 P1.3/ADC2  24 1K 10K SCL D/A PWM 做 D/A 输出 SK DC 15   P2.5                            P2.7  18 DI ORG 16   Gnd                             P2.6  17 DO 93C46(SPI 总线 OC 门开漏电路需加上拉电阻) 10K 使用编程锁紧座就是编程器 104 Vcc Vcc 10K 10K CS 14   P2.4                 P3.7/PCA0/PWM0  19 24C02(I2C 总线 OC 门 开漏电路需加上拉电阻) 104 VCC 13   PWM1/T1/CLKOUT1/P3.5     P1.0/ADC0  20 24C02 10K 10K 10K 10K 10K 12   ECI/T0/CLKOUT0/P3.4       P1.1/ADC1  21 SDA A2 10   P0.1                            P0.2     23 11   INT1/P3.3       P1.2/ADC2/LVD/RST2    22 10K A1 系统地 1K 8   XTAL1                     P1.4/ADC4   25 <33pF A0 1K 3.3K A/D 转换做按键扫描 4.7K 4.7K 0V 3.3K 3.3K 47pF 以上 1/2 Vcc 3.3K I/O 口驱动 NPN 三极管电路 I/O 口驱动 PNP 三极管电路 2/3 Vcc 3.3K 3/4 Vcc 3.3K 4/5 Vcc 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  46 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.6.4    STC12C5A60S2 系列单片机典型应用电路 STC 单片机在线编程线路, STC RS-232 转换器   STC3232,STC232,MAX232,SP232 0.1uF C1+ Vcc 16 Vcc 2 V+ GND 15 Gnd 3 C1- T1OUT 14 4 C2+ R1IN 13 5 C2- R1OUT 12 6 V- 7 T2OUT 8 R2IN T1IN 11 T2IN 10 R2OUT 2 3 PC_RxD (COM Pin2) USB +5V 5 PC_TxD (COM Pin3) SW1 用户程序下载工具,人民币 50 元 9 供用户将程序灌进单片机使用 Vcc 1K U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND Vcc 10K C1 R1 MCU_RxD (P3.0) MCU_TxD (P3.1) 关于复位电路: 时钟频率低于 12MHz 时,可以不用 C1,R1 接 1K 电阻到地 时钟频率高于 12MHz 时,建议使用第二复位功能脚 (STC12C5A60S2系列在RST2/EX_LVD/P4.6口  STC12C5201AD系列在RST2/EX_LVD/P1.2口) C2 <47pF USB+5V T1OUT R1IN GND USB1 X1 C3 <47pF 关于晶振电路: Power On 电源开关 此电路已做成一块 STC ISP 此部分与ISP下 载线路无关 Vcc 10μF Vin 1 PC / 电脑 串口 1 CLKOUT2/P1.0 2 P1.1 3 P1.2/RxD2 4 P1.3/TxD2 5 P1.4 6 7 P1.5 Vcc 40 P0.0/AD0 39 P0.1/AD1 38 C6 P0.2/AD2 37 P0.3/AD3 36 104 C5 10uF P0.4/AD4 35 P0.5/AD5 34 8 P1.6 P1.7 9 RST/P4.7 10 11 RxD/INT/P3.0 12 13 INT0/P3.2 14 CLKOUT0/T0/P3.4 15 CLKOUT1/T1/P3.5 16 WR/P3.6 17 RD/P3.7 18 XTAL2 19 20 XTAL1 Gnd TxD/P3.1 1K P0.6/AD6 33 P0.7/AD7 32 RST2/LVD/P4.6 31 ALE/P4.5 30 INT1/P3.3 NA/P4.4 29 P2.7/AD15 28 1K P2.6/AD14 27 P2.5/AD13 26 P2.4/AD12 25 P2.3/AD11 24 P2.2/AD10 23 P2.1/AD9 22 P2.0/AD8 21 U1,下载板是用的编程器用锁紧座,方便生产 如果外部时钟频率在 33MHz 以上时,建议直接使用外部有源晶振 如果使用内部 R/C 振荡器时钟(室温情况下 5V 单片机为:11MHz~15.5MHz,3V 单片机为 8MHz~12MHz),XTAL1 和 XTAL2 脚浮空. 如果外部时钟频率在 27MHz 以上时,使用标称频率就是基本频率的晶体,不要使用三泛音的晶体,否则如参数搭配不当,就有可能 振在基频,此时实际频率就只有标称频率的 1/3 了,或直接使用外部有源晶振,时钟从 XTAL1 脚输入,XTAL2 脚必须浮空. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  47 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.7                新增第二复位功能脚选择与应用 用户可以自己设置将 P4.6 (STC12C5A60S2 系列)脚或 者 P1.2(STC12C5201AD 系 列) 脚设置为第二复位脚, 关于复位电路: 时钟频率高于 12MHz 时,建议使用第二复位功能脚(STC12C5A60S2 系列在 RST2/EX_LVD/P4.6 口                                           STC12C5201AD 系列在 RST2/EX_LVD/P1.2 口) 利用增加的外部低压检测 LVD 功能作外部低压检测复位脚,典型应用线路图 7805 7805 VCC R1 104 20K VCC + + ( + ( 470uF ( ( + 470uF R1 20K R2 10K Gnd P4.6/RST2 Gnd P1.2/RST2 单片机 /MCU 104 R2 10K 单片机 /MCU STC12C5201AD系列外部低压检测LVD在P1.2口, STC12C5A60S2系列外部低压检测LVD在P4.6口, 可作第二复位功能脚 可作第二复位功能脚 上图中,稳压块 7805 后端的直流电是 5V,稳压块 7805 后端的直流电电掉到 4V 附近时,上图中的电阻 R1 和 R2 将 4V 附近的电压分压到低于低压检测门槛电压(1.33V 附近)。此时第二复位功能脚 RST2 就让 CPU 处 于复位状态,当稳压块 7805 后端的直流电压高于 4V 以上时,上图中的电阻 R1 和 R2 将 4V 的电压分压到高于低 压检测门槛电压(1.33V 附近),单片机就解除复位状态,恢复到正常工作状态. 7805 470uF 104 7805 VCC 470uF 104 VCC + R1 100K 以上 R2 ? Gnd P4.6/RST2 Gnd P1.2/RST2 单片机 /MCU + ( 100K 以上 ( R1 + ( ( + R2 ? 单片机 /MCU 如交流电在 220V 时,稳压块 7805 前端的直流电是 11V,当交流电降到 160V 时,稳压块 7805 前端的直流电 是 8.5V,上图中的电阻 R1 和 R2 将 8.5V 的电压分压到低于低压检测门槛电压(1.33V 附近)。此时第二复 位功能脚 RST2 就让 CPU 处于复位状态,当稳压块 7805 前端的直流电压高于 8.5V 以上时,上图中的电阻 R1 和 R2将8.5V的电压分压到高于低压检测门槛电压(1.33V附近),单片机就解除复位状态,恢复到正常工作状态. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  48 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     2.8  指令系统分类总结及与普通 8051 指令执行时间对比               --- 与 8051 指令代码完全兼容,但执行的时间效率大幅提升                --- 其中 INC DPTR 指令的执行速度大幅提升 24 倍               --- 共有 12 条指令,一个时钟就可以执行完成,平均速度快 8~12 倍 如果按功能分类,STC12C5A60S2 及 STC12C5201AD 系列单片机指令系统可分为: 1 . 数据传送类指令; 2 . 算术操作类指令; 3 . 逻辑操作类指令; 传统 12T 的 8051 STC12C5A60S2 系列 4 . 控制转移类指令; 指令执行所需时钟 指令执行所需时钟 5 . 布尔变量操作类指令。 按功能分类的指令系统表如下表所示。 助记符 MOV     A,Rn MOV     A,direct MOV     A,@Ri MOV     A,#data MOV     Rn,A MOV     Rn,direct MOV     Rn,#data MOV     direct,A MOV     direct,Rn MOV     direct,direct MOV     direct,@Ri MOV     direct,#data MOV     @Ri,A MOV     @Ri,direct MOV     @Ri,#data MOV     DPTR,#data16 MOVC    A,@A+DPTR  数据传送类指令 功能说明 寄存器内容送入累加器 直接地址单元中的数据送入累加器 间接RAM中的数据送入累加器 立即送入累加器 累加器内容送入寄存器 直接地址单元中的数据送入寄存器 立即数送入寄存器 累加器内容送入直接地址单元 寄存器内容送入直接地址单元 直接地址单元中的数据送入另一个直接 地址单元 间接RAM中的数据送入直接地址单元 立即数送入直接地址单元 累加器内容送间接RAM单元 直接地址单元数据送入间接RAM单元 立即数送入间接RAM单元 16位立即数送入地址寄存器 以DPTR为基地址变址寻址单元中的数据 送入累加器 字节数 12时钟/机器周期 1时钟/机器周期 效率 提升 所需时钟 所需时钟 1 2 1 2 1 2 2 2 2 12 12 12 12 12 24 12 12 24 1 2 2 2 2 4 2 3 3 12倍 6倍 6倍 6倍 6倍 6倍 6倍 4倍 8倍 3 24 4 6倍 2 3 1 2 2 3 24 24 12 24 12 24 4 3 3 3 3 3 6倍 8倍 4倍 8倍 4倍 8倍 1 24 4 6倍 MOVC    A,@A+PC 以PC为基地址变址寻址单元中的数据送 入累加器 1 24 4 6倍 MOVX    A,@Ri  逻辑上在外部的片内扩展RAM,(8位地 址)送入累加器 1 24 4 6倍 MOVX    A,@DPTR  逻辑上在外部的片内扩展RAM,(16位地 址)送入累加器 1 24 3 8倍 1 24 3 8倍 1 24 3 8倍 24 7 MOVX    @Ri,A MOVX    @DPTR ,A  累加器送逻辑上在外部的片内扩展RAM (8位地址) 累加器送逻辑上在外部的片内扩展RAM (16位地址) MOVX    A,@Ri  物理上在外部的片外扩展RAM,(8位地 址)送入累加器 1 MOVX    A,@DPTR  物理上在外部的片外扩展RAM,(16位地 址)送入累加器 1 MOVX    @Ri,A MOVX    @DPTR ,A  PUSH    direct POP     direct  累加器送物理上在外部的片外扩展RAM, (8位地址) 累加器送物理上在外部的片外扩展RAM, (16位地址) 直接地址单元中的数据压入堆栈 出栈送直接地址单元 *Note1 24 7 *Note1 1 24 7 *Note1 1 24 7 2 2 24 24 4 3 *Note1 6倍 8倍 Note1: 访问物理上在片外的扩展 RAM 所需时钟:7 + 2 x ALE_Bus_Speed + RW_Bus_Speed 其中 ALE_Bus_Speed 由 BUS_SPEED 控制寄存器中的 ALES1/ALES0 决定 其中 RW_Bus_Speed 由 BUS_SPEED 控制寄存器中的 RWS2/RWS1/RWS0 决定 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  49 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243  算术操作类指令 助记符 ADD     A,Rn ADD     A,direct ADD     A,@Ri ADD     A,#data ADDC    A,Rn ADDC    A,direct ADDC    A,@Ri ADDC    A,#data SUBB    A,Rn SUBB    A,direct SUBB    A,@Ri SUBB    A,#data INC     A INC     Rn INC     direct INC     @Ri DEC     A DEC     Rn DEC     direct DEC     @Ri INC     DPTR MUL     AB DIV     AB DA      A  功能说明 字节数 寄存器内容加到累加器 直接地址单元中的数据加到累加器 间接RAM中的数据加到累加器 立即加到累加器 寄存器内容带进位加到累加器 直接地址单元的内容带进位加到累加器 间接RAM内容带进位加到累加器 立即数带进位加到累加器 累加器带借位减寄存器内容 累加器带借位减直接地址单元的内容 累加器带借位减间接RAM中的内容 累加器带借位减立即数 累加器加1 寄存器加1 直接地址单元加1 间接RAM单元加1 累加器减1 寄存器减1 直接地址单元减1 间接RAM单元减1 地址寄存器DPTR加1 A乘以B A除以B 累加器十进制调整 1 2 1 2 1 2 1 2 1 2 1 2 1 1 2 1 1 1 2 1 1 1 1 1 12时钟/周期 1时钟/周期 提升 所需时钟 所需时钟 效率 12 2 6倍 12 3 4倍 12 3 4倍 12 2 6倍 12 2 6倍 12 3 4倍 12 3 4倍 12 2 6倍 12 2 6倍 12 3 4倍 12 3 4倍 12 2 6倍 12 2 6倍 12 3 4倍 12 4 3倍 12 4 3倍 12 2 6倍 12 3 4倍 12 4 3倍 12 4 3倍 24 1 24倍 48 4 12倍 48 5 9.6倍 12 4 3倍    逻辑操作类指令 助记符 ANL     A, Rn ANL     A, d irect ANL     A, @Ri ANL     A, # data ANL     direct, A ANL     direct, #data ORL     A, Rn ORL     A, d irect ORL     A, @Ri ORL     A, # data ORL     direct, A ORL     direct, #data XRL     A, Rn XRL     A, d irect XRL     A, @Ri XRL     A, # data XRL     direct, A XRL     direct, #data CLR     A CPL     A RL      A RLC     A RR      A RRC     A SWAP    A 功能说明 累加器与寄存器相“与” 累加器与直接地址单元相“与” 累 加 器 与 间 接 RAM单 元 相 “ 与 ” 累加器与立即数相“与” 直接地址单元与累加器相“与” 直接地址单元与立即数相“与” 累加器与寄存器相“或” 累加器与直接地址单元相“或” 累 加 器 与 间 接 RAM单 元 相 “ 或 ” 累加器与立即数相“或” 直接地址单元与累加器相“或” 直接地址单元与立即数相“或” 累加器与寄存器相“异或” 累加器与直接地址单元相“异或” 累 加 器 与 间 接 RAM单 元 相 “ 异 或 ” 累加器与立即数相“异或” 直接地址单元与累加器相“异或” 直接地址单元与立即数相“异或” 累 加 器 清 “ 0” 累加器求反 累加器循环左移 累加器带进位位循环左移 累加器循环右移 累加器带进位位循环右移 累加器半字节交换 字节数 1 2 1 2 2 3 1 2 1 2 2 3 1 2 1 2 2 3 1 1 1 1 1 1 1 12时 钟 /周 期所需时钟 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 24 12 12 12 12 12 12 12 1时 钟 /周 期 提 升 所需时钟 效率 2 6倍 3 4倍 3 4倍 2 6倍 4 3倍 4 6倍 2 6倍 3 4倍 3 4倍 2 6倍 4 3倍 4 6倍 2 6倍 3 4倍 3 4倍 2 6倍 4 3倍 4 6倍 1 12倍 2 6倍 1 12倍 1 12倍 1 12倍 1 12倍 1 12倍 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  50 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    控制转移类指令 助记符 ACALL    addr11 LCALL    addr16 RET RETI AJMP      addr11 LJMP      addr16 SJMP      re1 JMP       @A+DPTR JZ        re1 JNZ       re1 CJNE      A,direct,re1 CJNE      A,#data,re1 CJNE      Rn,#data,re1 CJNE      @Ri,#data,re1 DJNZ      Rn,re1 DJNZ      direct,re1 NOP 功能说明 字节数 绝对(短)调用子程序 长调用子程序 子程序返回 中断返回 绝对(短)转移 长转移 相对转移 相对于DPTR的间接转移 累加器为零转移 累加器非零转移 累加器与直接地址单元比较,不相等则转移 累加器与立即数比较,不相等则转移 寄存器与立即数比较,不相等则转移 间接RAM单元与立即数比较,不相等则转移 寄存器减1,非零转移 直接地址单元减1,非零转移 空操作 2 3 1 1 2 3 2 1 2 2 3 3 3 3 3 3 1 12时钟/周期 1时钟/周期 提升 所需时钟 所需时钟 效率 24 6 4倍 24 6 4倍 24 4 6倍 24 4 6倍 24 3 8倍 24 4 6倍 24 3 8倍 24 3 8倍 24 3 8倍 24 3 8倍 24 5 4.8倍 24 4 6倍 24 4 6倍 24 5 4.8倍 24 4 6倍 24 5 4.8倍 12 1 12倍    布尔变量操作类指令 助记符 CLR      C CLR      bit SETB     C SETB     bit CPL      C CPL      bit ANL      C,bit ANL      C,bit ORL      C,bit ORL      C,bit MOV      C,bit MOV      bit,C JC       re1 JNC      re1 JB       bit,re1 JNB      bit,re1 JBC      bit,re1 功能说明 清0进位位 清0直接地址位 置1进位位 置1直接地址位 进位位求反 直接地址位求反 进位位和直接地址位相“与” 进位位和直接地址位的反码相“与” 进位位和直接地址位相“或” 进位位和直接地址位的反码相“或” 直接地址位送入进位位 进位位送入直接地址位 进位位为1则转移 进位位为0则转移 直接地址位为1则转移 直接地址位为0则转移 直接地址位为1则转移,该位清0 字节数 1 2 1 2 1 2 2 2 2 2 2 2 2 2 3 3 3 12时钟/周期 1时钟/周期 提升 所需时钟 所需时钟 效率 12 1 12倍 12 4 3倍 12 1 12倍 12 4 3倍 12 1 12倍 12 4 3倍 24 3 8倍 24 3 8倍 24 3 8倍 24 3 8倍 12 3 4倍 24 3 8倍 24 3 8倍 24 3 8倍 24 4 6倍 24 4 6倍 24 5 4.8倍 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  51 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 指令执行速度效率提升总结: 指令系统共包括 1 1 1 条指令,其中: 执行速度快 24 倍的            共 1 条 执行速度快 12 倍的            共 12 条 执行速度快 9.6 倍的           共 1 条 执行速度快 8 倍的             共 20 条 执行速度快 6 倍的             共 38 条 执行速度快 4.8 倍的           共 4 条 执行速度快 4 倍的             共 21 条 执行速度快 3 倍的             共 14 条 根据对指令的使用频率分析统计,STC12 系列 1T 的 8051 单片机比普通的 8051 单片机在同样的工作频率 下运行速度提升了 8 ~1 2 倍。 指 令 执 行 时 钟 数 统 计 ( 供 参 考 ): 指令系统共包括 1 1 1 条指令,其中: 1 个时钟就可执行完成的指令    共 12 条 2 个时钟就可执行完成的指令    共 20 条 3 个时钟就可执行完成的指令    共 39 条 4 个时钟就可执行完成的指令    共 33 条 5 个时钟就可执行完成的指令    共 5 条 6 个时钟就可执行完成的指令    共 2 条 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  52 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243           2.9  特殊功能寄存器映像  SFR Mapping       Bit                                  Non  Bit  Addressable Addressable               不可以位操作(寄存器地址不可以被8整除的不可以进行位操作) 可位操作       0/8 F8h F0h E8h      1/9      3/B      4/C     5/D     6/E     7/F CH   CCAP0H   CCAP1H 0000,0000 0000,0000 0000,0000 FFh PCA_PWM0  PCA_PWM1 xxxx,xx00 xxxx,xx00 F7h       CL  CCAP0L  CCAP1L 0000,0000 0000,0000 0000,0000 EFh B 0000,0000           2/A E0h ACC 0000,0000 D8h CCON 00xx,xx00 D0h PSW 0000,0000 C8h P5 xxxx,1111 P5M1 P5M0 xxxx,0000 xxxx,0000 C0h P4 1111,1111 WDT_CONTR IAP_DATA IAP_ADDRH IAP_ADDRL IAP_CMD IAP_TRIG IAP_CONTR C7h xx00,0000 1111,1111 0000,0000 0000,0000 xxxx,xx00 xxxx,xxxx 0000,1000 B8h IP 0000,0000 B0h P3 1111,1111 P3M1 P3M0 P4M1 P4M0 IP2 IP2H  IPH B7h 0000,0000 0000,0000 0000,0000 0000,0000 xxxx,xx00 xxxx,xx00 0000,0000 A8h IE 0000,0000     SADDR       IE2 AFh xxxx,xx00 A0h P2 1111,1111 BUS_SPEED    AUXR1 xx10,x011 0000,0000  TEST_WDT A7h don't use 98h SCON 0000,0000     SBUF    S2CON     S2BUF      BRT xxxx,xxxx 0000,0000 xxxx,xxxx 0000,0000 90h  P1 1111,1111    P1M1     P1M0  P0M1  P0M0  P2M1  P2M0 CLK_DIV 97h 0000,0000 0000,0000 0000,0000 0000,0000 0000,0000 0000,0000 xxxx,x000 88h 80h E7h CMOD CCAPM0 CCAPM1 0xxx,0000 x000,0000 x000,0000 DFh D7h SADEN SPSTAT SPCTL SPDAT CFh 00xx,xxxx 0000,0100 0000,0000 P4SW ADC_CONTR ADC_RES ADC_RESL x000,xxxx 0000,0000 0000,0000 0000,0000 TCON     TMOD     TL0     TL1     TH0   0000,0000 0000,0000 0000,0000 0000,0000 0000,0000 P0 1111,1111 0/8    P1ASF 0000,0000 9Fh     TH1     AUXR WAKE_CLKO 8Fh 0000,0000 0000,0000 0000,0x00      SP      DPL      DPH 0000,0111 0000,0000 0000,0000      1/9      2/A      3/B BFh     PCON 87h 0011,0000      4/C     5/D     6/E     7/F   注意:寄存器地址能够被 8 整除的才可以进行位操作,不能够被 8 整除的不可以进行位操作 特别标出部分为在 Intel 8052 基础上新增加的特殊功能寄存器,一般用户可不管 新增特殊功能寄存器如何声明地址,举例如下: 汇编语言(新增 P4 口地址声明) : P4   EQU  0C0H C 语言 (新增 P4 口地址声明) :  sfr  P4  = 0xC0 sbit  P40 = 0xC0; sbit  P41 = 0xC1; sbit  P42 = 0xC2; 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  53 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5201AD 系列 8051 单片机内核特殊功能寄存器   C51 Core SFRs Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value ACC E0h Accumulator B F0h B Register PSW D0h Program Status Word SP 81h Stack Pointer 0000,0111 DPL 82h Data Pointer Low Byte 0000,0000 DPH 83h Data Pointer High Byte 0000,0000 0000,0000 0000,0000 CY AC F0 RS1 RS0 OV  F1  P 0000,0000 STC12C5201AD 系列 8051 单片机系统管理特殊功能寄存器 System Management SFRs Mnemonic Add Name   7  6  5  4 SMOD  SMOD0  LVDF PCON 87h Power  Control AUXR 8Eh Auxiliary  Register  T0x12  T1x12  UART_M0x6 CLK_DIV 97h Clock  Divder - -  3  2 1  0 Reset value POF GF1 GF0    PD IDL 0011,0000 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 - - CLKS2 CLKS1 CLKS0 xxxx,x000 - STC12C5201AD 系列 8051 单片机 I/O 口 特殊功能寄存器   Port SFRs Mnemonic Add       Name  7  6  5   4  3  2  1  0 Reset Value 8-bit  Port 0 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 1111,1111 P0 80h P0M1 93h 0000,0000 P0M0 94h 0000,0000 P1 90h P1M1 91h 8-bit  Port 1 P1.7 0000,0000 P1M0 92h 0000,0000 8-bit  Port 2 P1.6 P2.7 P1.5 P2.6 P1.4 P2.5 P1.3 P2.4 P1.2 P2.3 P1.1 P2.2 P1.0 P2.1 1111,1111 P2 A0h P2M1 95h P2.0 1111,1111 P2M0 96h P3 B0h P3M1 B1h 0000,0000 P3M0 B2h 0000,0000 0000,0000 0000,0000 8-bit  Port 3 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 1111,1111 STC12C5201AD 系列 8051 单片机 定时器 特殊功能寄存器    Timer SFRs Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value TCON 88h Timer / Counter 0 and 1 Control TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 TMOD 89h Timer / Counter 0 and 1 Modes M1 M1_1 M0 M1_0 GATE GATE0 C/T# C/T0# M1 M0_1 M0 M0_0 0000,0000 GATE C/T# GATE1 C/T1# TL0 8Ah Timer / Counter 0 Low Byte 0000,0000 TH0 8Ch Timer / Counter 0 High Byte 0000,0000 TL1 8Bh Timer / Counter 1 Low Byte 0000,0000 TH1 8Dh Timer / Counter 1 High Byte 0000,0000 AUXR 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM  S1BRS 0000,0000 STC12C5201AD 系列 8051 单片机 串行口 特殊功能寄存器    Serial I/O Port SFRs Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value SCON 98h Serial  Control SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000 SBUF 99h Serial  Data  Buffer xxxx,xxxx SADEN B9h Slave  Address  Mask 0000,0000 SADDR A9h Slave  Address AUXR 8Eh Auxiliary  Register 0000,0000 T0x12 T1x12 UART_M0x6  BRTR S2SMOD BRTx12  EXTRAM S1BRS 0000,0000 STC12C5201AD 系列 8051 单片机 看门狗定时器 特殊功能寄存器 Watch Dog Timer SFRs Mnemonic Add WDT_CONTR C1h Name       7  6    5      4      3  2  1  0 Reset Value Watch-Dog-Timer Control register  WDT_FLAG  - EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  54 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5201AD 系列 1T 8051 单片机 中断 特殊功能寄存器 Interrupt SFRs Mnemonic Add Name  7  6    5  4  3  2  1  0 Reset Value IE A8h Interrupt  Enable EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 IP Interrupt  Priority B8h Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IPH B7h Interrupt  Priority High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 TCON 88h Timer / Counter 0 and 1 Control TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 SCON 98h Serial  Control SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000 AUXR 8Eh Auxiliary  Register T0x12    T1x12 UART_M0x6 BRTR S2SMOD PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1 GF0 BRTx12 EXTRAM S1BRS PD CLK_Output WAKE_CLKO 8Fh Powerdown_Wakeup Control Register PCAWAKEUP RXD_PIN_IE T1_PIN_IE T0_PIN_IE LVD_WAKE  - ADC_CONTR BCh A/D 转换控制寄存器 ADC_POWER  SPEED1 ADC_START CHS2 SPEED0 ADC_FLAG IDL T1CLKO T0CLKO CHS1 CHS0 0000,0000 0011,0000 0000,0x00 0000,0000 CCON D8h PCA Control Register CF  CR - - - - CCF1 CCF0 00xx,xx00 CMOD D9h PCA Mode Register  CIDL  -  - -  CPS2  CPS1 CPS0 ECF 0xxx,0000 CCAPM0 DAh PCA Module 0 Mode Register - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 CCAPM1 DBh PCA Module 1 Mode Register - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 STC12C5201AD 系列 8051 单片机 PCA/PWM 特殊功能寄存器    PCA/PWM SFRs Mnemonic Add Name   7  6  5  4  3  2 1  0 Reset value CCON D8h PCA Control Register CF  CR - - - - CCF1 CCF0 00xx,xx00 CMOD D9h PCA Mode Register  CIDL  -  - - CPS2  CPS1 CPS0 ECF CCAPM0 DAh PCA Module 0 Mode Register - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 CCAPM1 DBh PCA Module 1 Mode Register - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 CL E9h PCA Base Timer Low 0000,0000 CH F9h PCA Base Timer High 0000,0000 CCAP0L EAh PCA Module-0 Capture Register Low 0000,0000 CCAP0H FAh PCA Module-0 Capture Register High 0000,0000 CCAP1L EBh PCA Module-1 Capture Register Low 0000,0000 CCAP1H FBh PCA Module-1 Capture Register High 0000,0000 PCA_PWM0 F2h PCA PWM Mode Auxiliary Register 0 - - - - - - EPC0H EPC0L xxxx,xx00 PCA_PWM1 F3h PCA PWM Mode Auxiliary Register 1 - - - - - - EPC1H EPC1L xxxx,xx00 0xxx,0000 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  55 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5201AD 系列 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs Mnemonic Add Name  7 IAP_DATA C2h ISP/IAP  Flash  Data  Register  6  5  4  3  2  1  0 Reset Value 1111,1111 IAP_ADDRH C3h ISP/IAP  Flash  Address  High 0000,0000 IAP_ADDRL C4h ISP/IAP  Flash  Address  Low 0000,0000 IAP_CMD C5h ISP/IAP  Flash  Command  Register IAP_TRIG C6h ISP/IAP  Flash  Command  Trigger  -  -  - -  - - MS1 MS0 xxxx,x000 xxxx,xxxx IAP_CONTR C7h ISP/IAP  Control  Register IAPEN SWBS SWRST  CMD_FAIL  - WT2 WT1 WT0 0000,x000 STC12C5201AD 系列 8051 单片机 时钟输出和掉电唤醒寄存器 Mnemonic Add Name       7 WAKE_CLKO 8Fh Clk_Output Powerdown_Wakeup Control register PCAWAKEUP        6  5       4  RXD_PIN_IE T1_PIN_IE  3  2  1 T0_PIN_IE  LVD_WAKE BRTCLKO T1CLKO  0 Reset Value T0CLKO 0000,0x00 STC12C5A60S2 系列单片机新增加的特殊功能寄存器 Mnemonic Add Name  7  6  5  4  3  2  1 P4.7 P4.6 P4.5 P4.4 P4.3 P4.2 P4.1  0 Reset Value P4 C0h 8 - bit Port 4 P4M1 B3h P4 Configuration 1 P4M0 B4h P4 Configuration 0 P4SW BBh Port - 4 switch P5 C8h 8 - bit Port 5 P5M1 C9h P5 Configuration 1 0000,0000 P5M0 CAh P5 Configuration 0 0000,0000 ADC_RESL BEh ADC Result low 0000,0000 SPSTAT CDh SPI Status register SPIF WCOL SPCTL CEh SPI Control register SSIG SPEN SPDAT CFh SPI Data register P4.0 1111,1111 0000,0000 0000,0000 LVD_P4.6 ALE_P4.5 NA_P4.4 - - - - x000,xxxx P5.3 P5.2 P5.1 P5.0 xxxx,1111 00xx,xxxx DORD MSTR CPOL CPHA SPR1 SPR0 0000.0100 0000,0000 AUXR1 A2h Auxiliary register 1 IE2 AFh Interrupt Enable 2 IP2 B5h 2rd Interrupt Priority Low register IP2H B6h 2rd Interrupt Priority High register S2CON 9Ah Serial 2 Control register S2BUF 9Bh Serial 2 Buffer xxxx,xxxx BRT 9Ch Serial 2 Baud-Rate timer 0000,0000 BUS_SPEED A1h Bus-Speed  Control PCA_P4 SPI_P4 S2_P4 GF2 ADRJ DPS 0000,0000 ESPI ES2 xxxx,xx00 PSPI PS2 xxxx,xx00 PSPIH PS2H xxxx,xx00 S2SM0 S2SM1 S2SM2 ALES1 S2REN ALES0 S2TB8 S2RB8 RWS2 S2TI RWS1 S2RI 0000,0000 RWS0 xx10,x011 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  56 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243           2.10  中断优先级及中断寄存器 2.10.1  中断优先级 STC12C5201AD 系列 STC12C5A60S2 系列单片机 中断优先级及中断查询次序,与 8051 完全兼容 Vector Interrupt Address Source 中断 中断源 向量地址 Polling 中断 Sequence 优先级设置 中断 (IPH,IP) 查询次序 Interrupt Interrupt Enable 优先级0 优先级3 优先级1 优先级2 Request Control Bit 最低 最高 中断请求标志位 中断允许控制位 /INT0 0003H 0(最优先) PX0H,PX0 0,0 0,1 1,0 1,1 IE0 EX0 / EA Timer 0 000BH 1 PT0H,PT0 0,0 0,1 1,0 1,1 TF0 ET0 / EA /INT1 0013H 2 PX1H,PX1 0,0 0,1 1,0 1,1 IE1 EX1 / EA Timer 1 001BH 3 PT1H,PT1 0,0 0,1 1,0 1,1 TF1 ET1 / EA UART 0023H 4 PSH,  PS 0,0 0,1 1,0 1,1 RI + TI ES / EA ADC 002BH 5 PADCH,PADC 0,0 0,1 1,0 1,1 ADC_FLAG EADC / EA LVD 0033H 6 PLVDH,PLVD 0,0 0,1 1,0 1,1 LVDF ELVD / EA PCA 003BH 7 PPCAH,PPCA 0,0 0,1 1,0 1,1 CF + CCF0 + CCF1 (ECF+ECCF0+ECCF1)/EA 以上是12C5202AD/12C5202PWM/12C5202系列和12C5A60S2/AD/PWM系列共有的中断 UART2 0043 8 PS2H,PS2 0,0 0,1 1,0 1,1 S2TI +S2RI ES2 / EA UART2是12C5A60S2系列独有的第二个串口中断(12C5A60AD系列/12C5A60PWM系列/12C5202AD系列没有UART2) SPI 004B 9 PSPIH,PSPI 0,0 0,1 1,0 1,1 SPIF ESPI / EA SPI是12C5A60S2/12C5A60AD/12C5A60PWM系列系列系列独有的SPI中断    通过设置新增加的特殊功能寄存器 IPH 中的相应位,可将中断优先级设为四级,如果只设置 IP,那么 中断优先级就只有两级,与传统 8 0 5 1 单片机两级中断优先级完全兼容。   如果使用 C 语言编程,中断查询次序号就是中断号,例如:             void  Int0_Routine(void) interrupt   0;             void  Timer0_Routine(void) interrupt 1;             void  Int1_Routine(void) interrupt   2;             void  Timer1_Routine(void) interrupt 3;             void  UART_Routine(void) interrupt   4;             void  ADC_Routine(void) interrupt    5;             void  LVD_Routine(void) interrupt    6;             void  PCA_Routine(void) interrupt    7;             void  UART2_Routine(void) interrupt  8;             void  SPI_Routine(void) interrupt    9; 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  57 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5201AD 系列和 STC12C5A60S2 系列 1T 8051 单片机 中断 特殊功能寄存器 Interrupt SFRs Mnemonic Add Name  7  6    5  4  3  2  1  0 Reset Value IE A8h Interrupt  Enable EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 IP Interrupt  Priority B8h Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IPH B7h Interrupt  Priority High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H IE2 AFh Interrupt Enable 2 ESPI ES2 xxxx,xx00 IP2 B5h PSPI PS2 xxxx,xx00 IP2H 2rd Interrupt B6h Priority High register PSPIH PS2H xxxx,xx00 TCON 88h IE0 IT0 0000,0000 SCON 98h Serial  Control SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000 AUXR 8Eh Auxiliary  Register T0x12    T1x12 UART_M0x6 BRTR S2SMOD BRTx12 PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1 GF0 CLK_Output WAKE_CLKO 8Fh Powerdown_Wakeup Control Register PCAWAKEUP RXD_PIN_IE T1_PIN_IE T0_PIN_IE LVD_WAKE ADC_CONTR BCh A/D 转换控制寄存器 ADC_POWER  SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0xx0,0000 CF  CR - - - - CCF1 CCF0 00xx,xx00  CIDL  -  - -  CPS2  CPS1 CPS0 ECF 0xxx,0000 2rd Interrupt Priority Low register Timer / Counter 0 and 1 Control TF1 TR1 TF0 TR0 IE1 IT1 EXTRAM  S1BRS PD IDL  BRTCLKO T1CLKO T0CLKO 0000,0000 0000,0000 0011,0000 0000,0x00 CCON D8h PCA Control Register CMOD D9h PCA Mode Register CCAPM0 PCA Module 0 DAh Mode Register - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 CCAPM1 DBh PCA Module 1 Mode Register - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 PCA/PWM 特殊功能寄存器 , 其中部分位与 PCA 中断有关 Mnemonic Add Name   7  6  5  4  3  2 1  0 CCON D8h PCA Control Register CF  CR - - - - CCF1 CCF0 00xx,xx00 Reset value CMOD D9h PCA Mode Register  CIDL  -  - - CPS2  CPS1 CPS0 ECF 0xxx,0000 CCAPM0 DAh PCA Module 0 Mode Register - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 CCAPM1 DBh PCA Module 1 Mode Register - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 CL E9h PCA Base Timer Low 0000,0000 CH F9h PCA Base Timer High 0000,0000 CCAP0L EAh PCA Module-0 Capture Register Low 0000,0000 CCAP0H FAh PCA Module-0 Capture Register High 0000,0000 CCAP1L EBh PCA Module-1 Capture Register Low 0000,0000 CCAP1H FBh PCA Module-1 Capture Register High 0000,0000 PCA_PWM0 F2h PCA PWM Mode Auxiliary Register 0 - - - - - - EPC0H EPC0L xxxx,xx00 PCA_PWM1 F3h PCA PWM Mode Auxiliary Register 1 - - - - - - EPC1H EPC1L xxxx,xx00 * 以上寄存器中标为红色的部分为 STC12C5A60S2/AD/PWM 系列单片机特有的寄存器或者控制位, STC12C5201AD/PWM 系列没有 * 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  58 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.10.2  几个新增加的中断控制位 如果要允许 A/D 转换中断则需要将相应的控制位置 1:       1、将 EADC 置 1,允许 ADC 中断,这是 ADC 中断的中断控制位。       2 、将 E A 置 1 ,打开单片机总中断控制位,此位不打开,也是无法产生 A D C 中断的     A/D 中断服务程序中要用软件清 A/D 中断请求标志位 ADC_FLAG(也是 A/D 转换结束标志位)。 与 A/D 转换有关的特殊功能寄存器表 Mnemonic Add P1ASF 9Dh Name  7 P1 Analog Special Function P17ASF  6  5 P16ASF P15ASF  4  3 P14ASF P13ASF ADC_CONTR BCh A/D 转换控制寄存器 ADC_RES BDh A/D 转换结果寄存器  -  -  -  - Interrupt  Enable EA  ELVD EADC ES  2  1  0 Reset Value P12ASF P11ASF P10ASF ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START 0000,0000 CHS2 CHS1 CHS0 0000,0000  -  -  -  - xxxx,xxxx ET1 EX1 ET0 EX0 0000,0000 IE A8h IP B8h Interrupt  Priority Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IPH B7h Interrupt  Priority  High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 如果要允许低压中断则需要将相应的控制位置 1:     1 、将 E L V D 置 1 ,允许低压检测中断,这是低压中断的中断控制位。    2 、将 E A 置 1 ,打开单片机总中断控制位,此位不打开,也是无法产生低压检测中断的     3、如要在掉电模式时,允许低压检测中断唤醒 CPU,还要将 WAKE_CLKO 寄存器当中的 LVD_WAKE 位置 1      低压检测中断服务程序中要用软件清低压中断请求标志位 LVDF。      低压检测中断发生的条件是 P1.2 口的输入电压低于:            5V 单片机为 1.32V,但有制造误差 +/-5%            3V 单片机为 1.30V,但有制造误差 +/-3%      上电复位后 LVDF 标志位为 1,要由软件清 0,当 P1.2 口外部输入电压低于检测门槛电压时,LVDF = 1 如果要求在掉电模式下外部低压检测中断继续工作,可将CPU从掉电模式唤醒,应将特殊功能寄存器WAKE_CLKO 中的相应控制位 LVD_WAKE 置 1.如果不需要在掉电模式下外部低压检测中断唤醒,建议将 P1ASF 寄存器中的第 二位 P12ASF 置 1,否则在掉电模式时,此低压检测电路会继续有几十 uA 的电流消耗. 与外部低压检测 LVD 有关的特殊功能寄存器表 Mnemonic Add Name  7  6  5  4 P1ASF 9Dh P1 Analog Special Function P17ASF P16ASF P15ASF P14ASF PCON 87h Power  Control SMOD  SMOD0  LVDF POF  3  2  1 Reset Value  0 P13ASF P12ASF P11ASF P10ASF 0000,0000 GF1 GF0 PD IDL 0011,0000 Clk_output WAKE_CLKO 8Fh Powerdown_Wakeup Control PCAWAKEUP  RXD_PIN_IE T1_PIN_IE T0_PIN_IE  LVD_WAKE BRTCLKO T1CLKO T0CLKO 0000,0x00 register IE A8h Interrupt  Enable EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 0000,0000 IP B8h Interrupt  Priority Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 IPH B7h Interrupt  Priority  High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 如果要允许 PCA 中断则需要将相应的控制位置 1:     1、将 ECF/ECCF0/ECCF1 中断允许位需要置 1 的位置 1,允许 PCA 模块中相应的模块产生中断    2 、将 E A 置 1 ,打开单片机总中断控制位,此位不打开,也是无法产生 P C A 中断的     PCA 中断服务程序中要用软件清相应的 PCA 中断请求标志位 CF/CCF0/CCF1。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  59 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243           2.11  定时器 0/ 定时器 1,UART 串口的速度 STC12C5201/12C5201PWM/12C5201AD 系列单片机的 AUXR 寄存器 Mnemonic Add Name AUXR  7  6    5  4  3  2  1  0 Reset Value 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 定时器 0 和定时器 1: STC12C5201AD 系列是 1T 的 8051 单片机,为了兼容传统 8051,定时器 0 和定时器 1 复位后是传统 8051 的 速度,即 1 2 分频,这是为了兼容传统 8 0 5 1 。但也可不进行 1 2 分频,实现真正的 1 T 。 T0x12:   0, 定时器 0 是传统 8051 速度,12 分频;1,  定时器 0 的速度是传统 8051 的 12 倍,不分频 T1x12:   0, 定时器 1 是传统 8051 速度,12 分频;1,  定时器 1 的速度是传统 8051 的 12 倍,不分频 如果 UART 串口用定时器 1 做波特率发生器,T1x12 位就可以控制 UART 串口是 12T  还是 1T 了。 UART 串口的模式 0: STC12C5201AD 系列是 1T  的 8051 单片机,为了兼容传统 8051,UART 串口复位后是兼容传统 8051 的。 UART_M0x6:   0, UART 串口的模式 0 是传统 12T 的 8051 速度,12 分频;         1, UART 串口的模式 0 的速度是传统 12T 的 8051 的 6 倍,2 分频 如果用定时器 T1 做波特率发生器时,UART 串口的速度由 T1 的溢出率决定 STC12C5A60PWM/12C5A60AD/12C5A60S2 系列单片机的 AUXR 寄存器 Mnemonic Add Name AUXR  7  6    5  4  3  2  1  0 Reset Value 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 BRTR(S2TR):        0, 不允许独立波特率发生器运行               1, 允许独立波特率发生器运行 S2SMOD:         0, 缺省               1, 串口 2 / UART2 的波特率 x 2 BRTx12(S2Tx12):    0, 独立波特率发生器每 12 个时钟计数一次                    1, 独立波特率发生器每 1 个时钟计数一次 EXTRAM:            0, 允许使用内部扩展的 1024 字节扩展 RAM               1, 禁止使用内部扩展的 1024 字节扩展 RAM S1BRS:          0, 缺省,串口 1 波特率发生器选择定时器 1,S1BRS 是串口 1 波特率发生器选择位              1, 独立波特率发生器作为串口 1 的波特率发生器,此时定时器 1 得到释放,                       可以作为独立定时器使用 注意:    有串口 2 的单片机,串口 2 永远是使用独立波特率发生器(2)作为波特率发生器,串口 2 不能够选择定 时器 1 做波特率发生器,    串口 1 可以选择定时器 1 做波特率发生器,也可以选择独立波特率发生器(2)作为波特率发生器, 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  60 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        2.12   STC12 系列单片机内部 / 外部工作时钟可选     STC12C5201AD 系列是 1T 的 8051 单片机,系统时钟兼容传统 8051。     现出厂标准配置是使用芯片内部的 R/C 振荡器,5V 单片机常温下频率是 11MHz - 15.5MHz,3V 单片机 常温下频率是 8MHz - 12MHz,因为随着温度的变化,内部 R/C 振荡器的频率会有一些温飘,再加上制造误 差,故内部 R / C 振荡器只适用于对时钟频率要求不敏感的场合。     在对 STC12C5201AD 系列单片机进行 ISP 下载用户程序时,可以在选项中选择:   “下次冷启动后时钟源为外部晶体或时钟” 这样下载完用户程序后,停电,再冷启动后单片机的工作时钟使用的就不是内部 R/C 振荡器,而是外部晶 体振荡后产生的高精度时钟了(接在 XTAL1/XTAL2 管脚上) ,也可以直接从 XTAL1 脚输入外部时钟,XTAL2 脚浮空。用户以后外部必须接晶体或时钟单片机才可以工作。     如果已被设置成用外部晶体或时钟工作的单片机,还要再设回使用内部 R/C 振荡器工作,则需给单片机 外接晶体或时钟,再对 STC12C5201AD 系列单片机进行 ISP 下载用户程序时在选项中选择:   选择下次冷启动后时钟源为:      1.内部 R/C 振荡器      2.外部晶体或时钟 下载用户程序成功后,新的设置 就设置进单片机内部了,但必须 停电后再上电单片机才会用新的 设置工作              2.13   时钟分频及分频寄存器 时钟分频寄存器,可将时钟分成较低频率工作 Mnemonic Add Name CLK_DIV 97h Clock  Divder CLKS2 CLKS1 CLKS0   7  6  5  4  3  2 1  0 - - - - - CLKS2 CLKS1 CLKS0 Reset value xxxx,x000 分频后CPU的实际工作时钟 0 0 0 系统时钟(外部时钟或内部R/C振荡时钟) 0 0 1 系统时钟/2 0 1 0 系统时钟/4 0 1 1 系统时钟/8 1 0 0 系统时钟/16 1 0 1 系统时钟/32 1 1 0 系统时钟/64 1 1 1 系统时钟/128 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  61 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                     2.14  可编程时钟输出 Mnemonic Add Name AUXR 8Eh Auxiliary  Register CLK_Output WAKE_CLKO 8Fh Powerdown_Wakeup Control Register BRT 9Ch  7  6    5  4  3  2 T0x12    T1x12 UART_M0x6 BRTR S2SMOD BRTx12 PCAWAKEUP RXD_PIN_IE T1_PIN_IE T0_PIN_IE LVD_WAKE  1  0 EXTRAM S1BRS Reset Value 0000,0000 BRTCLKO T1CLKO T0CLKO 0000,0x00 dedicated Baud-Rate Timer 0000,0000 sfr  WAKE_CLKO  = 0x8F;     新增加的特殊功能寄存器 /* 如何利用 CLKOUT0/P3.4 和 CLKOUT1/P3.5 管脚输出时钟 CLKOUT0/P3.4 和 CLKOUT1/P3.5 的时钟输出控制由 WAKE_CLKO 寄存器的 T0CLKO 位和 T0CLK1 位控制 CLKOUT0 的输出时钟频率由定时器 0 控制,CLKOUT1 的输出时钟频率由定时器 1 控制, 相应的定时器需要 工作在定时器的模式 2 方式(8 位自动重装载模式),不要允许相应的定时器中断,免得 CPU 反复进中断. 新增加的特殊功能寄存器: WAKE_CLKO (地址:0x8F) b7 - PCAWAKEUP : 允许 PCA 上升沿 / 下降沿中断 唤醒 powerdown。 b6 - RXD_PIN_IE: 允许 P3.0(RXD) 下降沿置 RI,也能使 RXD 唤醒 powerdown。 b5 - T1_PIN_IE : 允许 T1/P3.5 脚下降沿置 T1 中断标志,也能使 T1 脚唤醒 powerdown。 b4 - T0_PIN_IE : 允许 T0/P3.4 脚下降沿置 T0 中断标志,也能使 T0 脚唤醒 powerdown。 b3 - LVD_WAKE  :1, 允许在掉电模式下, LVD/P1.2 低压检测中断唤醒 CPU(STC12C5201AD 系列)。                    允许在掉电模式下, LVD/P4.6 低压检测中断唤醒 CPU(STC12C5A60S2 系列)。 b2 - BRTCLKO   :1, 允许 P1.0 脚输出时钟,输出时钟频率 = 1/2 BRT 溢出率 BRT 工作在 1T 模式时的输出频率 CLKOUT2  =( Fosc / 2 ) / ( 256 - BRT )                 BRT 工作在 12T 模式时的输出频率 CLKOUT2 =( Fosc / 2 ) / 12 / ( 256 - BRT )                 0,不允许 BRT 在 P1.0 脚输出时钟 b1 - T1CLKO    :1, 允许 T1 脚输出 T1(P3.5) 溢出脉冲,输出时钟频率 = 1/2 T1 溢出率     T1 工作在 1T 模式时的输出频率 CLKOUT1 =( Fosc / 2 ) / ( 256 - TH1 )     T1工作在12T模式时的输出频率CLKOUT1 =( Fosc / 2 ) / 12 / ( 256 - TH1 )                0,不允许 T1 脚输出 T1(P3.5) 溢出脉冲 b0 - T0CLKO    :1, 允许 T0 脚输出 T0(P3.4) 溢出脉冲,输出时钟频率 = 1/2 T0 溢出率     T0 工作在 1T 模式时的输出频率 CLKOUT0 =( Fosc / 2 ) / ( 256 - TH0 )     T0工作在12T模式时的输出频率CLKOUT0 =( Fosc / 2 ) / 12 / ( 256 - TH0 )                 0,不允许 T0 脚输出 T0(P3.4) 溢出脉冲 */ 如何利用 CLKOUT2/P1.0 管脚输出时钟(只针对 12C5A60S2/AD/PWM 系列) CLKOUT2/P1.0 的时钟输出频率:     BRTx12 = 1,独立波特率发生器工作在 1T 模式     CLKOUT2 工作在 1T 模式时的输出频率 CLKOUT2 =( Fosc / 2 ) / ( 256 - BRT )     BRTx12 = 0,独立波特率发生器工作在 12T 模式     CLKOUT2 工作在 12T 模式时的输出频率 CLKOUT2 =( Fosc / 2 ) / 12 / ( 256 - BRT ) 用户在程序中如何具体设置 CLKOUT2/P1.0 管脚输出时钟     1.对 BRT 寄存器独立波特率发生器定时器送 8 位重装载值, BRT = #reload_data     2.对 AUXR 寄存器中的 BRTR 位置 1,让独立波特率发生器定时器运行     3.对 WAKE_CLKO 寄存器中的 BRTCLKO 位置 1,让独立波特率发生器定时器的溢出在 P1.0 口输出时钟 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  62 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 /* 本程序演示 CLKOUT0/INT/T0/P3.4,CLKOUT1/INT/T1/P3.5,CLKOUT2/P1.0 输出时钟演示程序 */ /* 时钟频率 Fosc = 18.432MHz,T0, T1,独立波特率发生器均工作在 12T 模式 */ #include"reg51.h" sfr WAKE_CLKO = 0x8F; sfr AUXR = 0x8E; sfr = 0x9C; BRT main() { /* 附加的 SFR WAKE_CLKO (地址:0x8F) b7 - PCAWAKEUP : 允许 PCA 上升沿 / 下降沿中断 唤醒 powerdown。 b6 - RXD_PIN_IE: 1, 允许 RxD/P3.0(或 RxD/P1.6) 下降沿置 RI,也能使 RxD 脚唤醒 powerdown。 b5 - T1_PIN_IE : 1, 允许 T1/P3.5 脚下降沿置 T1 中断标志,也能使 T1 脚唤醒 powerdown。 b4 - T0_PIN_IE : 1, 允许 T0/P3.4 脚下降沿置 T0 中断标志,也能使 T0 脚唤醒 powerdown。 b3 - N/A b2 - BRTCLKO :1, 允许 P1.0 脚输出时钟,输出时钟频率 = 1/2 BRT 溢出率  BRT 工作在 1T 模式时的输出频率 CLKOUT2  =( Fosc / 2 ) / ( 256 - BRT )  BRT 工作在 12T 模式时的输出频率 CLKOUT2 =( Fosc / 2 ) / 12 / ( 256 - BRT )               0, 不允许 BRT 在 P1.0 脚输出时钟 b1 - T1CLKO  :1, 允许 T1 脚输出 T1(P3.5) 溢出脉冲,输出时钟频率 = 1/2 T1 溢出率  T1 工作在 1T 模式时的输出频率 CLKOUT1 =( Fosc / 2 ) / ( 256 - TH1 )  T1 工作在 12T 模式时的输出频率 CLKOUT1 =( Fosc / 2 ) / 12 / ( 256 - TH1 )     0, 不允许 T1 脚输出 T1(P3.5) 溢出脉冲 b0 - T0CLKO  :1, 允许 T0 脚输出 T0(P3.4) 溢出脉冲,输出时钟频率 = 1/2 T0 溢出率  T0 工作在 1T 模式时的输出频率 CLKOUT0 =( Fosc / 2 ) / ( 256 - TH0 )  T0 工作在 12T 模式时的输出频率 CLKOUT0 =( Fosc / 2 ) / 12 / ( 256 - TH0 )               0,不允许 T0 脚输出 T0(P3.4) 溢出脉冲 */     TMOD = 0x22;              //T0,T1 工作在模式 2,8 位自动重装计数器     AUXR = (AUXR | 0x80);      //T0 工作在 1T 模式     AUXR = (AUXR | 0x40);     // T1 工作在 1T 模式     AUXR = (AUXR | 0x04);     // 独立波特率发生器工作在 1T 模式     BRT = (256-74);// 对 BRT 独立波特率发生器定时器送 8 位重装载值,输出时钟频率 124.540KHz     TH0 = (256-74);// 对 T0 做时钟输出的 8 位重装载数,18432000/2/74 = 124540.54 约等于 125K     TH1 = (256-240); // 对 T1 做时钟输出的 8 位重装载数,输出时钟频率 18432000/2/240 = 38400     WAKE_CLKO = ( WAKE_CLKO | 0x07);  允许 T0,T1,独立波特率发生器输出时钟     TR0 = 1;      // 启动 T0 开始计数工作,对系统时钟进行分频输出     TR1 = 1;      // 启动 T1 开始计数工作,对系统时钟进行分频输出     AUXR = (AUXR | 0x10);    // 启动独立波特率发生器开始计数工作,对系统时钟进行分频输出 // 至此时钟已经输出,用户可以通过示波器观看到输出的时钟频率    while(1); } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  63 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.15   新增额外外部中断,及可将 CPU 从掉电模式唤醒的管脚 ;/* ---  STC International Limited ---------------------------------------------------- */ ;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ---------------------------------------- */ ;/* ---  演示 STC12C5201AD 系列 MCU 从掉电模式唤醒 ------------------------------------- */ ;/* ---  Mobile: 13922805190 ---------------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ----------------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ----------------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ---------------------------------------------------------- */ ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;************************************************************************* ;Wake Up Idle and Wake Up Power Down ;************************************************************************* ;定义 STC12C5201AD 系列 MCU 特殊功能寄存器 #include "STC12C5201AD.H" ;------------------------------------------------------------------------------ ;定义特殊功能寄存器 WAKE_CLKO   EQU 8FH ;附加的 SFR WAKE_CLKO (地址:0x8F) ;b7 - PCAWAKEUP :1, 允许 PCA 上升沿 / 下降沿中断  唤醒 powerdown。 ;b6 - RXD_PIN_IE:1, 允许 P3.0(RXD) 下降沿置 RI,也能使 RXD 唤醒 powerdown。 ;b5 - T1_PIN_IE :1, 允许 T1/P3.5 脚下降沿置 T1 中断标志,也能使 T1 脚唤醒 powerdown。 ;b4 - T0_PIN_IE :1, 允许 T0/P3.4 脚下降沿置 T0 中断标志,也能使 T0 脚唤醒 powerdown。 ;b3 - LVD_WAKE  :1, 允许在掉电模式下, LVD/P1.2 低压检测中断唤醒 CPU(STC12C5201AD 系列)。                     允许在掉电模式下, LVD/P4.6 低压检测中断唤醒 CPU(STC12C5A60S2 系列)。                   0, 不许在掉电模式下, LVD/P1.2 低压检测中断唤醒 CPU(STC12C5201AD 系列)。                     不允许在掉电模式下, LVD/P4.6 低压检测中断唤醒 CPU(STC12C5A60S2 系列)。 ;b2 - BRTCLKO   :1, 允许 P1.0 脚输出时钟,输出时钟频率 = 1/2 BRT 溢出率    BRT 工作在 1T 模式时的输出频率 CLKOUT2  =( Fosc / 2 ) / ( 256 - BRT )                    BRT 工作在 12T 模式时的输出频率 CLKOUT2 =( Fosc / 2 ) / 12/( 256 - BRT )                  0,不允许 BRT 在 P1.0 脚输出时钟 ;b1 - T1CLKO    :1, 允许 T1 脚输出 T1(P3.5) 溢出脉冲,Fck1 = 1/2 T1 溢出率  0,不允许 T1 脚输出 T1(P3.5) 溢出脉冲 ;b0 - T0CLKO    :1, 允许 T0 脚输出 T0(P3.4) 溢出脉冲,Fck0 = 1/2 T1 溢出率                  0, 不允许 T0 脚输出 T0(P3.4) 溢出脉冲 ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  64 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243           2.16    外部掉电检测专用比较器 - - - - 外部低压检测,增加了外部低压检测比较功能,可产生中断 STC12C5201AD 系列单片机在 P1.2 口增加了外部低压检测功能 STC12C5A60S2 系列单片机在 P4.6 口增加了外部低压检测功能 这样用户可以用查询方式或中断方式检查外部电压是否偏低。5伏单片机内部检测门槛电压是1.32V(+/-5%), 3 伏单片机内部检测门槛电压是 1.30V(+/-3%). 上电复位后外部低压检测标志位是 1 ,要由软件清零(注意该位不可位寻址),建议清零后,再读一次 该位是否为零,如为零,才代表 P 1 . 2 口的外部电压高于检测门槛电压。 相应的中断控制允许位是: EA/ELVD,ELVD 是低压检测中断允许位 相应的中断优先级控制位是: PLVDH/PLVD,0/0,0/1,1/0,1/1,四级中断优先级 相应的中断请求标志位是: L V D F ,要由软件清零 如果要求在掉电模式下外部低压检测中断继续工作,可将CPU从掉电模式唤醒,应将特殊功能寄存器WAKE_CLKO 中的相应控制位 LVD_WAKE 置 1.如果不需要在掉电模式下外部低压检测中断唤醒,建议将 P1ASF 寄存器中的第 二位 P12ASF 置 1,否则在掉电模式时,此低压检测电路会继续有几十 uA 的电流消耗. 当P1.2口作为外部低压检测时,如设置P12ASF位=1,在掉电模式时,该电路没有电流消耗,除非LVD_WAKE = 1, 当 P1 口中的相应位作为 A/D 使用时,要将 P1ASF 中的相应位置 1. 与外部低压检测 LVD 有关的特殊功能寄存器表 Mnemonic Add Name  7  6  5  4  3  2 P1ASF 9Dh P1 Analog Special Function P17ASF P16ASF P15ASF P14ASF P13ASF PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1  1 Reset Value  0 P12ASF P11ASF P10ASF 0000,0000 GF0 PD IDL 0011,0000 Clk_output WAKE_CLKO BFh Powerdown_Wakeup Control PCAWAKEUP  RXD_PIN_IE T1_PIN_IE T0_PIN_IE  LVD_WAKE BRTCLKO T1CLKO T0CLKO 0000,0x00 register IE A8h Interrupt  Enable EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 IP B8h Interrupt  Priority Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IPH B7h Interrupt  Priority  High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 利用增加的外部低压检测 LVD 功能作外部低压检测,典型应用线路图 7805 470uF 104 7805 VCC 470uF 104 VCC R1 ( + Gnd P4.6/LVD Gnd P1.2/LVD 单片机 /MCU + ( R1 + ( ( + R2 STC12C5201AD 系列外部低压检测 LVD 在 P1.2 口 单片机 /MCU R2 STC12C5A60S2 系列外部低压检测 LVD 在 P4.6 口 如交流电在 220V 时,稳压块 7805 前端的直流电是 11V,当交流电降到 160V 时,稳压块 7805 前端的直流电 是 8.5V,图中的电阻 R1 和 R2 将 8.5V 的电压分压到低于低压检测门槛电压。此时 CPU 可以用查询方式查 询,推荐使用中断,在中断服务程序里面,将 L V D F 位清零,再读 L V D F 位。如果为 0 ,则认为是电源 抖动,如果为 1 ,则认为电源掉电,立即进行保存现场数据的工作。保存现场完成后,再将 L V D F 位清 零,再读 L V D F 位的值。如果为 0 ,则认为电源系统恢复正常,此时 C P U 可恢复正常工作,如果为 1 ,继 续将 L V D F 位清 0 ,再读 L V D F 的值,用此方法,等到电源恢复正常,或电源彻底掉电,C P U 进入复位状 态 。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  65 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;本程序用查询方式演示 P1.2 口外部低压检测 ;IE:   EA,   ELVD, EADC, ES, ET1, EX1, ET0, EX0 ;IP:   PPCA, PLVD, PADC, PS, PT1, PX1, PT1  PX0 ;IPH:  PPCAH,PLVDH,PADCH,PSH,PT1H,PX1H,PT0H,PX0H ;PCON: SMOD, SMOD0,LVDF, POF,GF1, GF0, PD,  IDL     P1ASF EQU  9DH     ORG   0000H     AJMP  MAIN     ORG   0100H MAIN: MOV SP, #0E0H ;堆栈指针指向 0E0H 单元     MOV     P1,#0F0H ;演示程序开始工作 LCALL Delay ;延时     MOV     P1,#0FH ;演示程序开始工作 LCALL Delay ;延时 MOV P1, #0FFH MAIN1:     MOV   P1ASF, #00000100B;  P1.2 口为模拟功能口     MOV   A,PCON JBC   ACC.5,  POWER_ON_1 CLR   P3.7   //ERROR_LED SETB  P3.5 SETB  P3.4 SETB  P3.3 ERROR: SJMP  ERROR POWER_ON_1: SETB  P3.7 CLR   P3.5    //POWER_ON_LED SETB  P3.4     SETB  P3.3 LCALL Delay ;延时 Continue_Read: MOV   A,#11011111B ANL   PCON, A NOP     MOV   A,PCON JBC   ACC.5,  Low_Voltage High_Voltage: SETB  P3.7 SETB  P3.5     CLR   P3.4   //High_Voltage_LED SETB  P3.3 SJMP  Continue_Read Low_Voltage: SETB  P3.7 SETB  P3.5     SETB  P3.4 CLR   P3.3   //Low_Voltage_LED SJMP  Continue_Read Delay:     CLR   A     MOV   R0, A     MOV   R1, A     MOV   R2, #30H Delay_Loop:     DJNZ  R0, Delay_Loop     DJNZ  R1, Delay_Loop     DJNZ  R2, Delay_Loop     RET ;------------------------------------------------     END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  66 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.17  STC12C5A60S2 系列单片机内部扩展 1024 字节 RAM 的使用    1). 低 128 字节的内部 RAM (地址:00H ~7FH ),可直接寻址或间接寻址,(data/idata )     2 ) . 高 1 2 8 字节的内部 R A M (地址:8 0 H ~F F H ),只能间接寻址(普通 8 9 C 5 1 没有),(i d a t a )    3 ) . 特殊功能寄存器 S F R (地址:8 0 H ~F F H ),只能直接寻址,(d a t a )     特殊功能寄存器 SFR 和高 128 字节的内部 RAM 是通过寻址方式来区分的,传统的 8051 系列单片机只有 128-256 字节 RAM 供用户使用,在此情况下 STC 公司响应广大用户的呼声,在一些单片机内部增加了扩展 RAM。STC12C5A60S2/AD/PWM 系列单片机内部扩展了 1024 个字节 RAM,共 1280 字节 RAM。访问内部扩展 RAM 时,不影响 P0 口 /P2 口 /P3.6/P3.7/ALE。 STC12C5A60S2/AD/PWM 系列单片机 8051 单片机 扩展 RAM 管理及禁止 ALE 输出 特殊功能寄存器 Mnemonic Add Name AUXR  7  6  5  4  3  2  1  0 Reset Value 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 Symbol 符号 Function 功能 EXTRAM Internal/External RAM access 内部 / 外部 RAM 存取 0: 内部扩展的 EXT_RAM 可以存取. STC12C5A60S2/AD/PWM 系列单片机       在 00H 到 3FFH 单元(1024 字节),使用 MOVX @DPTR 指令访问,超过 400H 的地址空间        总是访问外部数据存储器(含 400H 单元),MOVX @Ri 只能访问 00H 到 FFH 单元 1: External data memory access.   外部数据存储器存取,禁止访问内部扩展 RAM,此时 MOVX @DPTR / MOVX @Ri 的              使用同普通 8052 单片机 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  67 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 应用示例供参考(汇编): 访问内部扩展的 EXTRAM ;新增特殊功能寄存器声明(汇编方式) AUXR MOV DATA 8EH;        或者用    AUXR EQU   8EH   定义 AUXR, #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 MOV DPTR, MOV A, MOVX @DPTR, #address #value A ;读芯片内部扩展的 EXTRAM MOV DPTR, MOVXA, @DPTR #address RD+ 系列 ;  如果 #address < 400H,则在 EXTRAM 位为”0”时,访问物理上在内部,逻辑上在外部的 此 EXTRAM ;  如果 #address >= 400H,则总是访问物理上外部扩展的 RAM 或 I/O 空间(400H--FFFFH) 禁止访问内部扩展的 EXTRAM ,以防冲突 MOV AUXR, #00000010B;  EXTRAM 控制位设置为”1”, 禁止访问 EXTRAM,以防冲突 有些用户系统因为外部扩展了 I/O 或者用片选去选多个 RAM 区,有时与此内部扩展的 EXTRAM 逻辑地 址上有冲突,将此位设置为”1 ”,   禁止访问此内部扩展的 EXTRAM 就可以了. 大实话 :  其实不用设置 AUXR 寄存器即可直接用 MOVX @DPTR 指令访问此内部扩展的 EXTRAM,超过此 RAM 空 间,将访问片外单元.如果系统外扩了 SRAM,而实际使用的空间小于 1024 字节,则可直接将此 SRAM 省去,比如省去 STC62WV256,IS62C256,UT6264 等. 应用示例供参考(C   语言): /* 访问内部扩展的 EXTRAM */ /*  STC12C5A60S2/AD/PWM 系列单片机为(00H - 3FFH, 共 1024 字节扩展的 EXTRAM) */ /* 新增特殊功能寄存器声明(C 语言方式) sfr AUXR= AUXR= 0x8e/* 0x00; /* */ 如果不需设置 AUXR 就不用声明 AUXR */ 0000,0000  EXTRAM 位清 0, 其实上电复位时此位就为 0 */ unsigned char  xdata  sum, loop_counter, test_array[128]; /*  将变量声明成 xdata 即可直接访问此内部扩展的 EXTRAM */ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  68 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 /*  写芯片内部扩展的 EXTRAM */ sum = 0; loop_counter = 128; test_array[0] = 5; /*  读芯片内部扩展的 EXTRAM */ sum = test_array[0]; /*  RD+ 系列: 如果 #address < 400H,则在 EXTRAM 位为”0”时,访问物理上在内部,逻辑          上在外部的此 EXTRAM 如果 #address>=400H,则总是访问物理上外部扩展的 RAM 或 I/O 空间(400H-FFFFH) */ 禁止访问内部扩展的 EXTRAM, 以防冲突 AUXR= 0x02; /* 0000,0010, EXTRAM 位设为”1”, 禁止访问 EXTRAM,以防冲突 */ 有些用户系统因为外部扩展了 I/O 或者用片选去选多个 RAM 区,有时与此内部扩展的 EXTRAM 逻辑 上有冲突,将此位设置为”1 ”,   禁止访问此内部扩展的 EXTRAM 就可以了. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  69 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243   STC12C5A60S2 系列单片机内部扩展 RAM 演示程序 ;/* ---  STC International Limited ------------------------------------------ */ ;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ------------------------------ */ ;/* ---  演示 STC12C5A60S2/AD/PWM 系列单片机 MCU 内部扩展 RAM 演示程序 --------- */ ;/* ---  Mobile: 13922805190 ------------------------------------------------ */ ;/* ---  Fax: 0755-82944243 ------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ------------------------------------------------ */ ;/* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ----------- */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 --- */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 --- */ #include <reg52.h> #include <intrins.h>        /* use _nop_() function */ sfr AUXR = 0x8e; 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, 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  70 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  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, 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  71 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  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, 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  72 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  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     };     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);  } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  73 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        2.18   双数据指针 DPTR0,DPTR1 的使用 12C5A60PWM/AD/S2 系列 8051 单片机 双数据指针 特殊功能寄存器 Mnemonic Add AUXR1 A2h Auxiliary  Register 1 Symbol 符号 DPS Name  7  6  5  4  3 2  1  0 Reset Value - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS x000,00x0 Function 功能 DPTR 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,即可实现双数椐指针的快速切换. 应用示例供参考: ;新增特殊功能寄存器定义 AUXR1 DATA 0A2H MOV AUXR1, #0 ;此时 DPS 为 0,DPTR0 有效 MOV DPTR, #1FFH ;置 DPTR0 为 1FFH MOV A, #55H MOVX @DPTR, A ;将 1FFH 单元置为 55H MOV DPTR, #2FFH ; 置 DPTR0 为 2FFH MOV A, #0AAH MOVX @DPTR, A INC AUXR1 MOV DPTR, #1FFH ; 置 DPTR1 为 1FFH MOVX A, @DPTR ; 读 DPTR1 数椐指针指向的 1FFH 单元的内容,累加器 A 变为 55H. INC AUXR1 MOVX A, INC AUXR1 MOVX A, INC AUXR1 MOVX A, ;将 2FFH 单元置为 0AAH ; 此时 DPS 为 1,DPTR1 有效 ; 此时 DPS 为 0,DPTR0 有效 @DPTR ; 读 DPTR0 数椐指针指向的 2FFH 单元的内容,累加器 A 变为 0AAH. ; 此时 DPS 为 1,DPTR1 有效 @DPTR ; 读 DPTR1 数椐指针指向的 1FFH 单元的内容,累加器 A 变为 55H. ; 此时 DPS 为 0,DPTR0 有效 @DPTR ; 读 DPTR0 数椐指针指向的 2FFH 单元的内容,累加器 A 变为 0AAH. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  74 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     2.19 STC12C5A60AD 系列单片机片外 64K 数据总线速度控制 Mnemonic Add Name  7  6 BUS_SPEED A1h Bus-Speed  Control  5  4  3 ALES1 ALES0  2  1  0 Reset Value RWS2 RWS1 RWS0 xx10,x011 ALES1 ALES0 0 0 P0地址建立时间和保持时间到ALE信号的下降沿是1个时钟 0 1 P0地址建立时间和保持时间到ALE信号的下降沿是2个时钟 1 0 P0地址建立时间和保持时间到ALE信号的下降沿是3个时钟(复位之后默认设置) 1 1 P0地址建立时间和保持时间到ALE信号的下降沿是4个时钟 RWS2 RWS1 RWS0 0 0 0 M O V X  读 / 写   脉 冲 是 1 个 时 钟 0 0 1 M O V X  读 / 写   脉 冲 是 2 个 时 钟 0 1 0 M O V X  读 / 写   脉 冲 是 3 个 时 钟 0 1 1 M O V X  读 / 写   脉 冲 是 4 个 时 钟 ( 复 位 之 后 默 认 设 置 ) 1 0 0 M O V X  读 / 写   脉 冲 是 5 个 时 钟 1 0 1 M O V X  读 / 写   脉 冲 是 6 个 时 钟 1 1 0 M O V X  读 / 写   脉 冲 是 7 个 时 钟 1 1 1 M O V X  读 / 写   脉 冲 是 8 个 时 钟 当 MOVX  指令访问物理上在内部,逻辑上在外部的片内扩展的 1024 字节 EXT_RAM 时,以上设置均被忽 略,以上设置只是在访问真正的片外扩展器件时有效。 字节数 1时 钟 /机 器 周 期 单片机所需时钟 逻 辑 上 在 外 部 的 片 内 扩 展 RAM, ( 8位 地 址 ) 送 入 累 加 器 1 4 6倍 MOVX    A,@DPTR 逻 辑 上 在 外 部 的 片 内 扩 展 RAM, ( 16位 地 址 ) 送 入 累 加 器 1 3 8倍 MOVX    @Ri,A 累加器送逻辑上在外部的片内 扩 展 RAM( 8位 地 址 ) 1 3 8倍 MOVX    @DPTR ,A 累加器送逻辑上在外部的片内 扩 展 RAM( 16位 地 址 ) 1 3 8倍 MOVX    A,@Ri 物 理 上 在 外 部 的 片 外 扩 展 RAM, ( 8位 地 址 ) 送 入 累 加 器 1 7 + ? *Note1 MOVX    A,@DPTR 物 理 上 在 外 部 的 片 外 扩 展 RAM, ( 16位 地 址 ) 送 入 累 加 器 1 7 + ? *Note1 MOVX    @Ri,A 累加器送物理上在外部的片外 扩 展 RAM,( 8位 地 址 ) 1 7 + ? *Note1 MOVX    @DPTR ,A 累加器送物理上在外部的片外 扩 展 RAM,( 16位 地 址 ) 1 7 + ? *Note1 助记符 功能说明 MOVX    A,@Ri 效率提升 Note1:访问物理上在片外的扩展 RAM 所需时钟:7 + 2 x ALE_Bus_Speed + RW_Bus_Speed 其中 ALE_Bus_Speed 由 BUS_SPEED 控制寄存器中的 ALES1/ALES0 决定 其中 RW_Bus_Speed 由 BUS_SPEED 控制寄存器中的 RWS2/RWS1/RWS0 决定 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  75 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        2.20 STC12C5A60S2 系列单片机 P4/P5 口的使用 STC12C5A60S2/AD/PWM 系列单片机与 P4/P5 口有关的特殊功能寄存器 Mnemonic Add Name  7  6  5  4  3  2 P4.7 P4.6 P4.5 P4.4 P4.3 P4.2  1  0 Reset Value P4 C0h 8 - bit Port 4 P4M1 B3h P4 Configuration 1 0000,0000 P4M0 B4h P4 Configuration 0 0000,0000 P4SW BBh Port - 4 switch AUXR1 A2h Auxiliary register 1 P5 C8h 8 - bit Port 5 P5M1 C9h P5 Configuration 1 0000,0000 P5M0 CAh P5 Configuration 0 0000,0000 - LVD_P4.6 ALE_P4.5 NA_P4.4 P4.1 P4.0 1111,1111 - -    - - x000,xxxx    - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ    - DPS x000,00x0 - - - - P5.3 P5.2 P5.1 P5.0 xxxx,1111 对 STC12C5A60S2/AD/PWM 系列单片机的 P4/P5 口的访问,如同访问常规的 P1/P2/P3 口,并且均可位寻 址,P 4 的地址 C 0 H ,P 5 口的地址在 C 8 H 。  P 4  端 口 的 地 址 在 C 0 h ,  P 4 口 中 的 每 一 位 均 可 位 寻 址 , 位 地 址 如 下 : 位 P4.7 P4.6 P4.5 P4.4 P4.3 P4.2 P4.1 P4.0 位 地 址 C7h C6h C5h C4h C3h C2h C1h C0h  P 5  端 口 的 地 址 在 C 8 h ,  P 5 口 中 的 每 一 位 均 可 位 寻 址 , 位 地 址 如 下 : 位 - - - - 位 地 址 P5.3 P5.2 P5.1 P5.0 CBh CAh C9h C8h 由 P4SW 寄存器设置(NA/P4.4,ALE/P4.5,EX_LVD/P4.6)三个端口的第二功能 Mnemonic Add Name P4SW BBh Port - 4 switch  7  6  5  4  3  2  1  0 LVD_P4.6 ALE_P4.5 NA_P4.4 Reset Value x000,xxxx NA/P4.4:       0,复位后 P4SW.4 = 0,NA/P4.4 脚是弱上拉,无任何功能                1,通过设置 P4SW.4 = 1,将NA/P4.4 脚设置成I/O 口(P4.4) ALE/P4.5:      0,复位后 P4SW.5 = 0,ALE/P4.5 脚是 ALE 信号,只有在用 MOVX 指令访问片外扩展器件时才有信号输出                1,通过设置 P4SW.5 = 1,将 ALE/P4.5 脚设置成 I/O 口(P4.5) EX_LVD/P4.6:   0, 复位后 P4SW.6 = 0,EX_LVD/P4.6 是外部低压检测脚,可使用查询方式或设置成中断来检测                1,通过设置 P4SW.6 = 1 将 EX_LVD/P4.6 脚设置成 I/O 口(P4.6) 在 ISP 烧录程序时设置 RST/P4.7 的第二功能 RST/P4.7 在 ISP 烧录程序时选择是复位脚还是 P4.7 口,如设置成 P4.7 口,必须使用外部时钟。 由 AUXR1 寄存器设置(PCA/PWM/SPI/UART2)是在 P1 口还是在 P4 口 Mnemonic Add Name 7 6  5 4 3  2 1 AUXR1 A2h Auxiliary register 1 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - 0 Reset Value DPS x000,00x0 PCA_P4:      0,复位后AUXR1.6 = 0,PCA/PWM 在P1 口              1,通过设置 AUXR1.6 = 1,将 PCA/PWM 从 P1 口切换到 P4 口 SPI_P4:      0,复位后 AUXR1.5 = 0,SPI 在 P1 口             1,通过设置 AUXR1.5 = 1,将 SPI 从 P1 口切换到 P4 口 S2_P4:       0,复位后 AUXR1.4 = 0,UART2 在P1 口(仅针对双串口单片机有效)             1,通过设置 AUXR1.4 = 1,将 UART2 从 P1 口切换到 P4 口(仅针对双串口单片机有效) 具体的 PCA/SPI/S2 管脚是如何从 P1 口影射到 P4 口的,见单片机管脚图) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  76 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.21 将 STC12C5A60S2 系列 SPI/PCA/PWM/UART2 从 P1 口设置到 P4 口 STC12C5A60PWM/12C5A60AD/12C5A60S2 系列单片机的 AUXR1 寄存器 Mnemonic Add AUXR1 Name A2h Auxiliary  Register 1  7  6  5  4  3 2  1  0 Reset Value - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS x000,00x0 PCA_P4:      0, 缺省 PCA 在 P1 口              1,PCA/PWM 从 P1 口切换到 P4 口                ECI 从 P1.2 切换到 P4.1 口                PCA0/PWM0 从 P1.3 切换到 P4.2 口                PCA1/PWM1 从 P1.4 切换到 P4.3 口 SPI_P4:      0, 缺省 SPI 在 P1 口             1,SPI 从 P1 口切换到 P4 口                SPICLK 从 P1.7 切换到 P4.3 口                MISO 从 P1.6 切换到 P4.2 口                MOSI 从 P1.5 切换到 P4.1 口                SS 从 P1.4 切换到 P4.0 口 S2_P4:      0, 缺省 UART2 在 P1 口             1,UART2 从 P1 口切换到 P4 口                TxD2 从 P1.3 切换到 P4.3 口                RxD2 从 P1.2 切换到 P4.2 口 GF2:        通用标志位 ADRJ:      0, 10 位 A/D 转换结果的高 8 位放在 ADC_RES 寄存器,               低 2 位放在 ADC_RESL 寄存器            1,10 位 A/D 转换结果的最高 2 位放在 ADC_RES 寄存器的低 2 位,               低 8 位放在 ADC_RESL 寄存器 DPS:       0, 使用缺省数据指针 DPTR0           1,使用另一个数据指针 DPTR1 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  77 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243      2.22   串行口1使用独立波特率发生器作为波特率发生器 Mnemonic Add Name  7  6  5  4  3  2  1  0 9Ch dedicated Baud-Rate timer BRT 0000,0000 独立波特率发生器定时器,装入重装载数 AUXR 8Eh Auxiliary  Register SCON 98h Serial  Control SBUF 99h Serial  Data  Buffer T0x12  SM0/FE PCON 87h Power  Control IE A8h Interrupt  Enable IP B8h Reset Value T1x12    SM1 UART_M0x6      SM2 BRTR   REN S2SMOD BRTx12 EXTRAM S1BRS 0000,0000   TB8   RB8    TI   RI 0000,0000 xxxx,xxxx SMOD  SMOD0  LVDF POF GF1 GF0 PD IDL 0011,0000 EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 Interrupt  Priority Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 IPH B7h Interrupt  Priority  High SADEN B9h Slave  Address  Mask 0000,0000 SADDR A9h Slave  Address 0000,0000 以下是使用定时器1作为串口1的波特率发生器时需要用到的寄存器,现在可以不用了 TCON 88h Timer / Counter 0 and 1 Control TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 TMOD 89h Timer / Counter 0 and 1 Modes GATE GATE1 C/T# C/T1# M1 M1_1 M0 M1_0 GATE GATE0 C/T# C/T0# M1 M0_1 M0 0000,0000 M0_0 TH1 8Dh Timer / Counter 1 High Byte 0000,0000 TL1 8Bh Timer / Counter 1 Low Byte 0000,0000 当设置 AUXR 寄存器中的 S1BRS 位(串口 1 波特率选择位)为 1 时,串口 1 选择独立波特率发生器作为波特 率发生器,此时定时器 1 可以释放出来作为定时器 / 计数器 / 时钟输出使用. SM0 SM1 方式 功能说明 0 0 0 同步移位串行方式 0 1 1 1 0 2 1 1 3 串 口 1波 特 率  Fosc / 12, UART_M0x6 = 1时 , 波 特 率 是 Fosc / 2 8位 UART, 波 特 率 可 变 ( 2 SMOD  /  32  ) x BRT独 立 波 特 率 发 生 器 的 溢 出 率 9位 UART ( 2 SMOD  / 64) x Fosc系 统 工 作 时 钟 频 率 9位 UART, 波 特 率 可 变 ( 2 SMOD  /  32  ) x BRT独 立 波 特 率 发 生 器 的 溢 出 率  BRT独 立 波 特 率 发 生 器 的 溢 出 率  = Fosc/12/( 256 - BRT ),当 BRTx12 = 0时  BRT独 立 波 特 率 发 生 器 的 溢 出 率  = Fosc / ( 256 - BRT ),当 BRTx12 = 1时 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  78 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 串口 1 模式 0 :     串行数据通过 RxD/P3.0 接收,TxD/P3.1 输出同步移位时钟,发送接收的是八位数据,低位在先,波特 率固定在 Fosc / 12, 忽略波特率发生器     串口 1 波特率在模式 0 = Fosc 系统工作时钟频率 / 12 串口 1 模式 1 :    10 位数据通过 TxD/P3.1 发送,通过 RxD/P3.0 接收。一帧数据包含一个起始位(0),8 个数据位(低 位在先) ,和一个停止位( 1 ) 。接收时,停止位进入特殊功能寄存器 S C O N 的 R B 8 位。波特率由独立波特 率发生器 B R T 的溢出率决定。 串口 1 波特率在模式 1 = ( 2SMOD / 32 ) x BRT 独立波特率发生器的溢出率    当 SMOD = 0 时,串口 2 波特率 = BRT 独立波特率发生器的溢出率 / 32,    当 SMOD = 1 时,串口 2 波特率 = BRT 独立波特率发生器的溢出率 / 16,    BRT 独立波特率发生器的溢出率 = Fosc/12/( 256 - BRT ),当 BRTx12 = 0 时,    BRT 独立波特率发生器的溢出率 = Fosc / ( 256 - BRT ),当 BRTx12 = 1 时 串口 1 模式 2 :    11 位数据通过 TxD/P3.1 发送,通过 RxD/P3.0 接收。一帧数据包含一个起始位(0),8 个数据位(低 位在先) ,一个可编程的第 9 位,和一个停止位( 1 ) 。发送时,第 9 位数据位来自特殊功能寄存器 S C O N 的 TB8 位.接收时,第 9 位进入特殊功能寄存器 SCON 的 RB8 位。波特率可编程为系统时钟频率:Fosc / 32 或者 Fosc / 64,串口 2 工作在模式 2 和串口 1 工作在模式 2 是相同的。 串口 1 波特率在模式 2 = ( 2SMOD / 64 ) x Fosc 系统工作时钟频率    当 SMOD = 0 时,串口 2 波特率 = Fosc 系统工作时钟频率 / 64    当 SMOD = 1 时,串口 2 波特率 = Fosc 系统工作时钟频率 / 32 串口 1 模式 3 : 波特率是可变的,其它和模式 2 相同 11 位数据通过 TxD/P3.1 发送,通过 RxD/P3.0 接收。一帧数据包含一个起始位(0),8 个数据位(低位在 先) ,一个可编程的第 9 位,和一个停止位( 1 ) 。发送时,第 9 位数据位来自特殊功能寄存器 S C O N 的 TB8 位.接收时,第 9 位进入特殊功能寄存器 SCON 的 RB8 位。 串口 1 波特率在模式 3 = ( 2SMOD / 32 ) x BRT 独立波特率发生器的溢出率    当 SMOD = 0 时,串口 1 波特率 = BRT 独立波特率发生器的溢出率 / 32,    当 SMOD = 1 时,串口 1 波特率 = BRT 独立波特率发生器的溢出率 / 16,    BRT 独立波特率发生器的溢出率 = Fosc/12/( 256 - BRT ),当 BRTx12 = 0 时,    BRT 独立波特率发生器的溢出率 = Fosc / ( 256 - BRT ),当 BRTx12 = 1 时 用户在程序中如何具体使用串口 1 和独立波特率发生器 BRT 1.设置串口 1 的工作模式,SCON 寄存器中的 SM0 和 SM1 两位决定了串口 1 的 4 种工作模式。 2.设置串口 1 的波特率,使用独立波特率发生器寄存器和相应的位:         BRT 独立波特率发生器寄存器,BRTx12 位,SMOD 位 3 . 启动独立波特率发生器,让 B R T R 位为 1 ,B R T 独立波特率发生器寄存器就立即开始计数。 4.设置串口 1 的中断优先级,及打开中断相应的控制位是:          PS,PSH,ES,EA 5.如要串口 1 接收,将 REN 置 1 即可   如要串口 1 发送,将数据送入 SBUF 即可,    接收完成标志 RI,发送完成标志 TI,要由软件清 0。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  79 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;当串口工作在模式 1 和模式 3 时,计算相应的波特率需要设置的重装载数,结果送入 BRT 寄存器 ;计算自动重装数 RELOAD (SMOD = 0, SMOD 是 PCON 特殊功能寄存器的最高位): ;  1. 计算 RELOAD (以下是 SMOD = 0 时的计算公式) ; ;     a) 12T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32/12 + 0.5) ;     b)  1T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32 + 0.5) 计算出的 RELOAD 数直接送 BRT 寄存器 ; ;     式中: INT() 表示取整运算即舍去小数, 在式中加 0.5 可以达到四舍五入的目的 ;           Fosc = 晶振频率 ;           Baud0 = 标准波特率 ; ;  2. 计算用 RELOAD 产生的波特率: ;       a)   Baud = Fosc/(256 - RELOAD)/32/12       12T 模式 ;       b)   Baud = Fosc/(256 - RELOAD)/32           1T 模式 ; ;  3. 计算误差 ;          error = (Baud - Baud0)/Baud0 * 100% ;  4. 如果误差绝对值 > 3% 要更换波特率或者更换晶体频率, 重复步骤 1-4 ; ; ;例: Fosc = 22.1184MHz, Baud0 = 57600 (12T 模式) ; 1. RELOAD = 256 - INT( 22118400/57600/32/12 + 0.5) ;           = 256 - INT( 1.5 ) ;           = 256 - 1 ;           = 255 ;           = 0FFH ; 2. Baud = 22118400/(256-255)/32/12 ;         = 57600 ; 3. 误差等于零 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  80 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;例: Fosc = 18.432MHz, Baud0 = 57600 (12T 模式) ; 1. RELOAD = 256 - INT( 18432000/57600/32/12 + 0.5) ;           = 256 - INT( 0.833 + 0.5 ) ;           = 256 - INT( 1.333 ) ;           = 256 - 1 ;           = 255 ;           = 0FFH ; 2. Baud = 18432000/(256-255)/32/12 ;         = 48000 ; 3. error = (48000 - 57600)/57600 * 100% ;          = -16.66% ; 4. 误差很大, 要更换波特率或者更换晶体频率, 重新计算请见下一例 ;例: Fosc = 18.432MHz, Baud0 = 9600 (12T 模式) ; 1. RELOAD = 256 - INT( 18432000/9600/32/12 + 0.5) ;           = 256 - INT( 5.5 ) ;           = 256 - 5 ;           = 251 ;           = 0FBH ; 2. Baud = 18432000/(256-251)/32/12 ;         = 9600 ; 3. 一目了然, 误差等于零 ;例: Fosc = 2.000MHz, Baud = 4800 (1T 模式) ; 1. RELOAD = 256 - INT( 2000000/4800/32 + 0.5) ;           = 256 - INT( 13.02 + 0.5 ) ;           = 256 - INT( 13.52 ) ;           = 256 - 13 ;           = 243 ;           = 0F3H ; 2. Baud = 2000000/(256-243)/32 ;         = 4808 ; 3. error = 0.16% ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  81 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243             串行通信口一使用独立波特率发生器作串行通信测试程序 ;/* ---  STC International Limited ------------------------------------------------------ */ ;/* ---  宏晶科技 姚永平  设计 2007/1/6   V1.0 ------------------------------------------ */ ;/* ---  演示 STC11/10xx 系列 MCU 看门狗及其溢出时间计算公式 ----------------------------- */ ;/* ---   Mobile: 13922805190 ----------------------------------------------------------- */ ;/* ---   Fax: 0755-82944243 ------------------------------------------------------------ */ ;/* ---   Tel: 0755-82948409 ------------------------------------------------------------ */ ;/* ---   Web: www.STCMCU.com ----------------------------------------------------------- */ #include<reg51.h> #include<intrins.h> sfr AUXR = 0x8e; sfr AUXR1 = 0xA2; sfr BRT = 0x9c; sbit MCU_Start_Led  =  P1^4; //unsigned char array[9] = {0,2,4,6,8,10,12,14,16}; unsigned char array[9] = {0x00,0x02,0x04,0x06,0x08,0x0A,0x0C,0x0E,0x10}; #define RELOAD_COUNT 0xfb   //18.432MHz,12T,SMOD=0,9600bps void serial_port_initial(); void send_UART(unsigned char); void UART_Interrupt_Receive(void); void delay(void); void display_MCU_Start_Led(void); void main(void) { unsigned  char i = 0; serial_port_initial();      // 串口初始化 display_MCU_Start_Led();    // 点亮发光二极管表示单片机开始工作 send_UART(0x34);            // 串口发送数据表示单片机串口正常工作 send_UART(0xa7);            // 串口发送数据表示单片机串口正常工作 for(i = 0;i<9;i++) { send_UART(array[i]); } while(1); } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  82 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 /* void serial_port_initial()   // 使用定时器 1 作为波特率发生器 {      SCON     =  0x50;         //0101,0000 8 位可变波特率,无奇偶校验位      TMOD     =  0x21;         //0011,0001 设置定时器 1 为 8 位自动重装计数器      TH1      =  RELOAD_COUNT; // 设置定时器 1 自动重装数      TL1      =  RELOAD_COUNT;      TR1      =  1;    // 开定时器 1      ES       =  1;    // 允许串口中断      EA       =  1;    // 开总中断 } */ void serial_port_initial() // 使用独立波特率发生器作为波特率发生器 { SCON = 0x50;   //0101,0000 8 位可变波特率,无奇偶校验位 BRT = RELOAD_COUNT; AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,XRAM,S1BRS // Baud = Fosc/(256 - RELOAD_COUNT)/32/12 (12T 模式) // Baud = Fosc/(256 - RELOAD_COUNT)/32    (1T 模式) // BRTR = 1,启动独立波特率发生器 // S1BRS = 1,串口 1 选择独立波特率发生器作为波特率发生器,    // 此时定时器 1 可以释放出来作为定时器,计数器,时钟输出使 用 AUXR1 = 0x80; // 释放该行指令,则串行口从 P3 口切换到 P1 口 ES = 1;    // 允许串口中断 EA = 1;    // 开总中断 } void send_UART(unsigned char i) { ES = 0;  // 关串口中断 TI = 0;  // 清零串口发送完成中断请求标志 SBUF = i; while(TI ==0);    // 等待发送完成 TI = 0;  // 清零串口发送完成中断请求标志 ES = 1;  // 允许串口中断 } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  83 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 void UART_Interrupt_Receive(void) interrupt 4 { unsigned char   k   =   0; if(RI==1)     { RI  =   0; k   =   SBUF; send_UART(k+1);     }     else     { TI  =  0;     } } void delay(void) { unsigned int j  =   0; unsigned int g  =   0; for(j=0;j<5;j++) { for(g=0;g<50000;g++) {             _nop_();             _nop_();             _nop_(); } } } void display_MCU_Start_Led(void) {     unsigned  char i = 0;     for(i=0;i<5;i++)     {         MCU_Start_Led   =   0;  // 顶亮 MCU 开始工作指示灯         delay();         MCU_Start_Led   =   1;  // 熄灭 MCU 开始工作指示灯         delay();         MCU_Start_Led   =   0;  // 顶亮 MCU 开始工作指示灯     } } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  84 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        2.23              串行口2的使用 Mnemonic Add Name S2CON 9Ah Serial 2 Control register S2BUF 9Bh Serial 2 Data Buffer BRT 9Ch AUXR 8Eh Auxiliary  Register IE2 AFh Interrupt Enable 2 IP2 B5h IPH2 B6h AUXR1 A2h Auxiliary register 1  7  6  5  4  3  2  1 S2SM0 S2SM1 S2SM2 S2REN S2TB8 S2RB8 S2TI  0 Reset Value S2RI 0000,0000 xxxx,xxxx dedicated Baud-Rate timer 0000,0000 独立波特率发生器定时器,装入重装载数 T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 ESPI ES2 xxxx,xx00 2rd Interrupt Priority Low register PSPI PS2 xxxx,xx00 2rd Interrupt Priority High register PSPIH PS2H xxxx,xx00 PCA_P4 SPI_P4 S2_P4 GF2 ADRJ DPS 0000,0000 以上是串口2用到的相应寄存器 以下是串口1用到的相应寄存器 SCON 98h Serial  Control SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000 SBUF 99h Serial  Data  Buffer TCON 88h Timer / Counter 0 and 1 Control TMOD 89h Timer / Counter 0 and 1 Modes TH1 8Dh Timer / Counter 1 High Byte 0000,0000 TL1 8Bh Timer / Counter 1 Low Byte 0000,0000 PCON 87h Power  Control SMOD  SMOD0 AUXR 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 BRTR IE A8h Interrupt  Enable IP B8h xxxx,xxxx TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 GATE GATE1 C/T# C/T1# M1 M1_1 M0 M1_0 GATE GATE0 C/T# C/T0# M1 M0_1 M0 0000,0000 M0_0  LVDF POF GF1 GF0 PD IDL 0011,0000 S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 Interrupt  Priority Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IPH B7h Interrupt  Priority  High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 SADEN B9h Slave  Address  Mask 0000,0000 SADDR A9h Slave  Address 0000,0000 S2SM0 S2SM1 方式 功能说明 0 0 0 同步移位串行方式 0 1 1 1 0 2 1 1 3 串 口 2波 特 率  Fosc / 12 8位 UART,  波 特 率 可 变 ( 2 S 2 S M O D  /  32  ) x BRT独 立 波 特 率 发 生 器 的 溢 出 率 9位 U A R T ( 2 S 2 S M O D  / 64) x Fosc 系 统 工 作 时 钟 频 率 9位 UART,  波 特 率 可 变 ( 2 S 2 S M O D  /  32  ) x BRT独 立 波 特 率 发 生 器 的 溢 出 率  BRT 独 立 波 特 率 发 生 器 的 溢 出 率  = F o s c/12 /( 2 5 6  - B R T  ),当 B R T x1 2  = 0时  BRT 独 立 波 特 率 发 生 器 的 溢 出 率  =  F o s c  /   (  256 - BRT ),当 B R T x 1 2  =  1时 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  85 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 串口 2 模式 0 :     串行数据通过 RxD2/P1.2(RxD2/P4.2)接收,TxD2/P1.3(TxD2/P4.3)输出同步移位时钟,发送接收的是 8 位数据,低位在先,波特率固定在 Fosc / 12, 忽略波特率发生器,串口 2 的模式 0 操作和串口 1 的模 式 0 操作方式相同。     串口 2 波特率在模式 0 = Fosc 系统工作时钟频率 / 12 串口 2 模式 1 :    10 位数据通过 TxD2/P1.3(TxD2/P4.3)发送,通过 RxD2/P1.2(RxD2/P4.2)接收。一祯数据包含一个起 始位( 0 ) ,8 个数据位,和一个停止位( 1 ) 。接收时,停止位进入特殊功能寄存器 S 2 C O N 的 S 2 R B 8 位。 波特率由独立波特率发生器 BRT 的溢出率决定。 串口 2 波特率在模式 1 = ( 2S2SMOD / 32 ) x BRT 独立波特率发生器的溢出率    当 S2SMOD = 0 时,串口 2 波特率 = BRT 独立波特率发生器的溢出率 / 32,    当 S2SMOD = 1 时,串口 2 波特率 = BRT 独立波特率发生器的溢出率 / 16,    BRT 独立波特率发生器的溢出率 = Fosc/12/( 256 - BRT ),当 BRTx12 = 0 时,    BRT 独立波特率发生器的溢出率 = Fosc / ( 256 - BRT ),当 BRTx12 = 1 时 串口 2 模式 2 :    11 位数据通过 TxD2/P1.3(TxD2/P4.3)发送,通过 RxD2/P1.2(RxD2/P4.2)接收。一祯数据包含一个起 始位( 0 ) ,8 个数据位,一个可编程的第 9 位,和一个停止位( 1 ) 。发送时,第 9 位数据位来自特殊功 能寄存器 S2CON 的 S2TB8 位.接收时,第 9 位进入特殊功能寄存器 S2CON 的 S2RB8 位。波特率可编程为系 统时钟频率:Fosc / 32 或者 Fosc / 64,串口 2 工作在模式 2 和串口 1 工作在模式 2 是相同的。 串口 2 波特率在模式 2 = ( 2S2SMOD / 64 ) x Fosc 系统工作时钟频率    当 S2SMOD = 0 时,串口 2 波特率 = Fosc 系统工作时钟频率 / 64    当 S2SMOD = 1 时,串口 2 波特率 = Fosc 系统工作时钟频率 / 32 串口 2 模式 3 : 波特率是可变的,其它和模式 2 相同 11 位数据通过 TxD2/P1.3(TxD2/P4.3)发送,通过 RxD2/P1.2(RxD2/P4.2)接收。一祯数据包含一个起始 位( 0 ) ,8 个数据位,一个可编程的第 9 位,和一个停止位( 1 ) 。发送时,第 9 位数据位来自特殊功能 寄存器 S2CON 的 S2TB8 位.接收时,第 9 位进入特殊功能寄存器 S2CON 的 S2RB8 位。 串口 2 波特率在模式 3 = ( 2S2SMOD / 32 ) x BRT 独立波特率发生器的溢出率    当 S2SMOD = 0 时,串口 2 波特率 = BRT 独立波特率发生器的溢出率 / 32,    当 S2SMOD = 1 时,串口 2 波特率 = BRT 独立波特率发生器的溢出率 / 16,    BRT 独立波特率发生器的溢出率 = Fosc/12/( 256 - BRT ),当 BRTx12 = 0 时,    BRT 独立波特率发生器的溢出率 = Fosc / ( 256 - BRT ),当 BRTx12 = 1 时 用户在程序中如何具体使用串口 2 1.设置串口 2 的工作模式,S2CON 寄存器中的 S2SM0 和 S2SM1 两位决定了串口 2 的 4 种工作模式。 2. 设置串口 2 的波特率相应的寄存器和位:         BRT 独立波特率发生器寄存器,BRTx12 位,S2SMOD 位 3 . 启动独立波特率发生器,让 B R T R 位为 1 ,B R T 独立波特率发生器寄存器就立即开始计数。 4.设置串口 2 的中断优先级,及打开中断相应的控制位是:          PS2,PS2H,ES2,EA 5.如要串口 2 接收,将 S2REN 置 1 即可   如要串口 2 发送,将数据送入 S2BUF 即可,    接收完成标志 S2RI,发送完成标志 S2TI,要由软件清 0。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  86 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243              串行口 2 作串行通信测试程序(C 语言) #include<reg52.h> #include<intrins.h> sfr  S2CON    = 0x9A; //S2SM0,S2SM1,S2SM2,S2REN,S2TB8,SRB8,S2TI,S2RI sfr  IE2    = 0xAF; //X,X,X,X,X,X,ESPI,ES2 sfr  S2BUF    = 0x9B; sfr  AUXR    = 0x8e; sfr  BRT = 0x9c; sfr  IAP_CONTR =  0xC7; sfr  CCON    = 0xD8; sfr  CMOD    = 0xD9; sfr  CL      = 0xE9; sfr  CH      = 0xF9; sfr  CCAP0L  = 0xEA; sfr  CCAP0H  = 0xFA; sfr  CCAPM0  = 0xDA; sfr  CCAPM1  = 0xDB; sbit CR      = 0xDE; sbit MCU_Start_Led  =  P1^7; sbit S2_Interrupt_Receive_Led  =  P1^4; //unsigned char self_command_array[4] =  {0x22,0x33,0x44,0x55}; #define Self_Define_ISP_Download_Command  0x22 #define RELOAD_COUNT  0xfb   //18.432MHz,12T,SMOD=0,9600bps //#define RELOAD_COUNT  0xf6   //18.432MHz,12T,SMOD=0,4800bps //#define RELOAD_COUNT  0xec   //18.432MHz,12T,SMOD=0,2400bps //#define RELOAD_COUNT  0xd8   //18.432MHz,12T,SMOD=0,1200bps void serial_port_one_initial(); void send_UART_one(unsigned char); void UART_one_Interrupt_Receive(void); void serial_port_two_initial(); void send_UART_two(unsigned char); void UART_two_Interrupt_Receive(void); void soft_reset_to_ISP_Monitor(void); void delay(void); void display_MCU_Start_Led(void); void send_PWM(void); 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  87 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 void main(void) { unsigned int array_point = 0; 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,         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, 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  88 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    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  };     unsigned  char i = 0;     serial_port_one_initial();      // 串口 1 初始化     serial_port_two_initial();      // 串口 2 初始化     display_MCU_Start_Led();    // 点亮发光二极管表示单片机开始工作     send_UART_two(0x55);            // 串口 2 发送数据表示单片机串口正常工作     send_UART_two(0xaa);            // 串口 2 发送数据表示单片机串口正常工作 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  89 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 for(array_point=0; array_point<512; array_point++)     { send_UART_two(Test_array_one[array_point]);     }     send_UART_one(0x34);            // 串口 1 发送数据表示单片机串口正常工作     send_UART_one(0xa7);            // 串口 1 发送数据表示单片机串口正常工作     for(array_point=0; array_point<512; array_point++)     { send_UART_one(Test_array_one[array_point]);     }     send_PWM();                 //6kHz PWM,  50% duty     while(1); } void serial_port_one_initial() {     SCON    =   0x50;   //0101,0000 8 位可变波特率,无奇偶校验位 //   TMOD    =   0x21;   //0011,0001 设置顶时器 1 为 8 位自动重装计数器 //    TH1     =   RELOAD_COUNT;   // 设置定时器 1 自动重装数 //    TL1     =   RELOAD_COUNT; //    TR1     =   1;    // 开定时器 1 BRT = RELOAD_COUNT; //  BRTR = 1, S1BRS = 1, EXTRAM = 1 ENABLE EXTRAM AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS     ES      =   1;    // 允许串口中断     EA      =   1;    // 开总中断 } void serial_port_two_initial() { //sfr  SCON    = 0x98; //SM0,SM1,SM2,REN,TB8,RB8,TI,RI //sfr  S2CON    = 0x9A; //S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI //sfr  S2BUF    = 0x9B; //sfr  IE2    = 0xAF; //X,X,X,X,X,X,ESPI,ES2 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  90 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 S2CON    =   0x50;   //0101,0000 8 位可变波特率,无奇偶校验位,允许接收 BRT = RELOAD_COUNT; //  BRTR = 1, S1BRS = 1, EXTRAM = 0 ENABLE EXTRAM AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS //    ES      =   1;    // 允许串口 1 中断 // ES2 = 1 IE2 = 0x01; // 允许串口 2 中断,ES2=1     EA      =   1;    // 开总中断 } void send_UART_one(unsigned char i) {     ES     =   0;  // 关串口中断     TI     =   0;  // 清零串口发送完成中断请求标志     SBUF   =   i;     while(TI ==0); // 等待发送完成     TI     =   0;  // 清零串口发送完成中断请求标志     ES     =   1;  // 允许串口中断 } void send_UART_two(unsigned char i) { //sfr  SCON    = 0x98; //SM0,SM1,SM2,REN,TB8,RB8,TI,RI //sfr  S2CON    = 0x9A; //S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI //sfr  S2BUF    = 0x9B; //sfr  IE2    = 0xAF; //X,X,X,X,X,X,ESPI,ES2 unsigned char temp = 0; //    ES     =   0;  // 关串口 1 中断 IE2 = 0x00; // 关串口 2 中断,es2=0 //    TI     =   0;  // 清零串口 1 发送完成中断请求标志     S2CON = S2CON & 0xFD; //B'11111101,清零串口 2 发送完成中断请求标志 //    SBUF   =   i;     S2BUF   =   i; //    while(TI ==0); // 等待发送完成 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  91 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     do { temp = S2CON; temp = temp & 0x02; }while(temp==0); // TI     =   0;  // 清零串口发送完成中断请求标志     S2CON = S2CON & 0xFD; //B'11111101,清零串口 2 发送完成中断请求标志 //    ES     =   1;  // 允许串口 1 中断 // ES2 = 1 IE2 = 0x01; // 允许串口 2 中断,ES2=1 } void UART_one_Interrupt_Receive(void) interrupt 4 {     unsigned char   k   =   0;     if(RI==1)     {         RI  =   0;         k   =   SBUF;         if(k==Self_Define_ISP_Download_Command)   // 是自定义下载命令         {             delay();    // 延时 1 秒就足够了             delay();    // 延时 1 秒就足够了             soft_reset_to_ISP_Monitor();    // 软复位到系统 ISP 监控区         }         send_UART_one(k+1);     }     else     {         TI  =  0;     } } void UART_two_Interrupt_Receive(void) interrupt 8 { //sfr  SCON    = 0x98; //SM0,SM1,SM2,REN,TB8,RB8,TI,RI //sfr  S2CON    = 0x9A; //S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  92 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 //sfr  S2BUF    = 0x9B; //sfr  IE2    = 0xAF; //X,X,X,X,X,X,ESPI,ES2 unsigned char   k   =   0; k = S2CON ; k = k & 0x01; //if(S2RI==1)     if(k==1)     {         //RI  =   0; S2CON = S2CON & 0xFE; //1111,1110 S2_Interrupt_Receive_Led = 0;         k   =   S2BUF;         if(k==Self_Define_ISP_Download_Command)   // 是自定义下载命令         { delay();    // 延时 1 秒就足够了             delay();    // 延时 1 秒就足够了             soft_reset_to_ISP_Monitor();    // 软复位到系统 ISP 监控区         }         send_UART_two(k+1);     }     else     {         //TI  =  0; S2CON = S2CON & 0xFD; //1111,1101     } } void soft_reset_to_ISP_Monitor(void) {     IAP_CONTR   =    0x60;   //0110,0000   软复位到系统 ISP 监控区 } void delay(void) {     unsigned int j  =   0;     unsigned int g  =   0;     for(j=0;j<5;j++)     { 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  93 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243         for(g=0;g<60000;g++)         {             _nop_();             _nop_();             _nop_();             _nop_();             _nop_();         }     } } void display_MCU_Start_Led(void) { //sbit MCU_Start_Led  =  P1^7;     unsigned  char i = 0;     for(i=0;i<1;i++)     {         MCU_Start_Led   =   0;  // 顶亮 MCU 开始工作指示灯         delay();         MCU_Start_Led   =   1;  // 熄灭 MCU 开始工作指示灯         delay();         MCU_Start_Led   =   0;  // 顶亮 MCU 开始工作指示灯     } } void send_PWM(void) {     CMOD    =   0x00;   // CIDL - - - - CPS1 CPS0 ECF  Setup PCA Timer                         // CPS1 CPS0 = 00, Fosc/12 is PCA/PWM clock                         // 18432000/12/256 = 6000     CL      =   0x00;     CH      =   0x00;     CCAP0L  =   0x80;   //Set the initial value same as CCAP0H     CCAP0H  =   0x80;   //50% Duty Cycle     CCAPM0  =   0x42;   //0100,0010 Setup PCA module 0 in 8BIT PWM, P3.7     CR      =   1;      // 启动 PCA/PWM 定时器 } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  94 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                串行口 2 作串行通信测试程序(汇编语言) S2CON EQU    9AH; ;S2SM0,S2SM1,S2SM2,S2REN,S2TB8,SRB8,S2TI,S2RI IE2 EQU    0AFH ;X,X,X,X,X,X,ESPI,ES2 S2BUF EQU 9BH AUXR EQU     8EH BRT EQU     9CH IAP_CONTR   EQU 0C7H RELOAD_COUNT EQU 0FBH ;RELOAD_COUNT EQU 0F6H ;RELOAD_COUNT EQU 0ECH ;RELOAD_COUNT EQU 0D8H   ;18.432MHz,12T,SMOD=0,9600bps   ;18.432MHz,12T,SMOD=0,4800bps   ;18.432MHz,12T,SMOD=0,2400bps   ;18.432MHz,12T,SMOD=0,1200bps ;===================================================================== ORG 0000H LJMP MAIN ORG 0043H LJMP UART_two_Interrupt_Receive ORG 0100H MAIN: MOV SP, #0C0H LCALL UART2_Initial MOV LCALL 11H, #55H send_UART_two MOV LCALL 11H, #0AAH send_UART_two SJMP ¥ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  95 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;============================================================================= UART2_Initial: PUSH ACC MOV     S2CON, #50H  ;0101,0000 8 位可变波特率,无奇偶校验位,允许接收 MOV     BRT, #RELOAD_COUNT; MOV     AUXR, #11H ;T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS                      ;BRTR = 1, S1BRS = 1, EXTRAM = 0 ENABLE EXTRAM MOV     IE2, #01H   ;允许串口 2 中断,ES2=1 SETB EA       ;开总中断 POP     ACC RET ;============================================================================ send_UART_two: PUSH ACC //sfr  S2CON    = 0x9A; //S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI //sfr  S2BUF    = 0x9B; //sfr  IE2    = 0xAF; //X,X,X,X,X,X,ESPI,ES2 MOV MOV ANL MOV IE2, #00H ;关串口 2 中断,es2=0 A, S2CON  ;11111101B,清零串口 2 发送完成中断请求标志 A, #0FDH S2CON, A MOV S2BUF, 11H 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  96 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 UART2_SEND_WAIT: MOV A, S2CON ANL A, #02H;      0000,0010 CJNE A, #02H, UART2_SEND_WAIT MOV A, S2CON ANL A, #0FDH;      1111,1101,清零串口 2 发送完成中断请求标志 MOV S2CON, A MOV POP RET IE2, #01H   ;允许串口 2 中断,ES2=1 ACC // =================================================================================== UART_two_Interrupt_Receive: PUSH ACC MOV A, S2CON ANL A, #01H CJNE A, #01H, CLEAR_S2TI_RETI MOV ANL MOV A, A, S2CON, MOV INC LCALL POP RETI 11H, S2BUF 11H send_UART_two ACC CLEAR_S2TI_RETI: MOV A, ANL A, MOV S2CON, POP ACC RETI S2CON #0FEH;  1111,1110 A S2CON #0FDH;    1111,1101 A END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  97 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.24         每个单片机具有全球唯一身份证号码(ID 号) 宏晶科技最新一代 STC12C5201AD/STC12C5A60S2 系列每一个单片机出厂时都具有全球唯一 身份证号码(ID 号),用户可以在单片机上电后读取内部 RAM 单元从 F1H - F7H 连续 7 个 单元的值来获取此单片机的唯一身份证号码(ID 号),使用 “ MOV @Ri” 指令来读取。 2.25       如何知道单片机内部 R/C 振荡器频率(内部时钟频率) 宏晶科技最新一代 STC12C5201AD/STC12C5A60S2 系列单片机除了可以使用传统的外部时 钟外,还可以选择内部 R/C 振荡器时钟源(内部时钟).如果选择单片机工作在内部 R/C 振荡器频率(内部时钟频率),则可以省掉外部晶振。这时 XTAL1/XTAL2 浮空.但由于使用 内部时钟源误差较大,所以在对时序要求较高或者有串行通信的情况下不建议使用内部 R/ C 时钟源。在上电初始化程序时,我们可以通过读取内部 RAM 单元(FCH,FDH,FEH,FFH 连续四个单元)的值来获取单片机出厂时的内部 R/C 振荡器频率(内部时钟频率)。可以 通过读取内部 RAM 单元(F8H,F9H,FAH,FBH 连续四个单元)的值来获取用户最后一次使用 内部 R/C 振荡器时钟下载程序时的频率(内部时钟频率),使用 “ MOV @Ri” 指令来读 取 。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  98 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243      第三章    STC12 系列单片机的 I/O 口结构           3.1  I/O 口各种不同的工作模式及配置介绍 I/O 口配置     STC12C5201AD 系列单片机其所有 I/O 口均可由软件配置成 4 种工作类型之一,如下表所示。4 种类型 分别为:准双向口(标准 8 0 5 1 输出模式)、推挽输出、仅为输入(高阻)或开漏输出功能。每个口 由 2 个控制寄存器中的相应位控制每个引脚工作类型。STC12C5201AD 系列单片机上电复位后为准双向口(传 统 8 0 5 1 的 I / O 口)模式。2 V 以上时为高电平,0 . 8 V 以下时为低电平。 I/O 口工作类型设定 P3 口设定 <P3.7, P3.6, P3.5, P3.4, P3.3, P3.2, P3.1, P3.0 口> P3M1【 7: 0】 P3M0【 7: 0】 0 0 0 1 1 1 0 1 I/O 口 模 式 准 双 向 口 (传 统 8 0 5 1 I/O 口 模 式 ) , 灌 电 流 可 达 2 0 m A , 拉 电 流 为 2 3 0 µA , 由 于 制 造 误 差 , 实 际 为 2 5 0 uA ~ 1 5 0 uA 推 挽 输 出 ( 强 上 拉 输 出 , 可 达 20mA, 要 加 限 流 电 阻 ) 仅为输入(高阻) 开 漏 ( O p e n D r a in), 内 部 上 拉 电 阻 断 开 , 要 外 加 P2 口设定 <P2.7, P2.6, P2.5, P2.4, P2.3, P2.2, P2.1, P2.0> P2M1【 7: 0】 P2M0【 7: 0】 0 0 0 1 1 1 0 1 I/O 口 模 式 准 双 向 口 (传 统 8051 I/O 口 模 式 ) , 灌 电 流 可 达 20mA , 拉 电 流 为 230µA , 由 于 制 造 误 差 , 实 际 为 250uA~ 150uA 推 挽 输 出 ( 强 上 拉 输 出 , 可 达 20mA, 要 加 限 流 电 阻 ) 仅为输入(高阻) 开 漏 (Open Drain), 内 部 上 拉 电 阻 断 开 , 要 外 加 P1 口设定 <P1.7, P1.6, P1.5, P1.4, P1.3, P1.2, P1.1, P1.0 口> P1M1【7:0】 P1M0【7:0】 0 0 0 1 1 1 0 1 I/O 口模式(P1.x 如做A/D使用,需先将其设置成开漏或高阻输入) 准双向口(传统8051 I/O 口模式), 灌电流可达20mA , 拉电流为230µA , 由于制造误差,实际为250uA~150uA 推挽输出(强上拉输出,可达20mA,要加限流电阻) 仅为输入(高阻),如果该I/O口需作为A/D使用,可选此模式 开漏(Open Drain) ,如果该I/O口需作为A/D使用,可选此模式 P0 口设定 <P0.7, P0.6, P0.5, P0.4, P0.3, P0.2, P0.1, P0.0 口> P 0M 1 【 7: 0】 P0 M0 【 7: 0 】 0 0 0 1 1 1 0 1 举例: MOV P1M1,  #10100000B MOV P1M0,  #11000000B I/O 口 模 式 准 双 向 口 (传 统 8051 I/O 口 模 式 ) , 灌 电 流 可 达 20mA , 拉 电 流 为 230µA , 由 于 制 造 误 差 , 实 际 为 250uA~ 150uA 推 挽 输 出 ( 强 上 拉 输 出 , 可 达 20mA , 要 加 限 流 电 阻 ) 仅 为 输 入 (高 阻 ) 开 漏 (Open Drain), 内 部 上 拉 电 阻 断 开 , 要 外 加      ;P1.7 为开漏,P1.6 为强推挽输出,P1.5 为高阻输入,P1.4/P1.3/P1.2/P1.1/P1.0 为弱上拉 注意:     虽然每个 I/O 口在弱上拉时都能承受 20mA 的灌电流(还是要加限流电阻,如 1K,560 Ω等),在强推挽输出 时都能输出 20mA 的拉电流(也要加限流电阻),但整个芯片的工作电流推荐不要超过 55mA。即从 MCU-VCC 流入的电流不超过 55mA,从 MCU-Gnd 流出电流不超过 55mA,整体流入 / 流出电流都不能超过 55mA. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  99 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243           3.2  I/O 口各种不同的工作模式结构框图 1.准双向口输出配置     准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态。这是因为当口线输出为 1 时驱 动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收相当大的电流。 准双向口有 3 个上拉晶体管适应不同的需要。    在 3 个上拉晶体管中,有 1 个上拉晶体管称为“弱上拉”,当口线寄存器为 1 且引脚本身也为 1 时打 开。此上拉提供基本驱动电流使准双向口输出为 1 。如果一个引脚输出为 1 而由外部装置下拉到低时,弱 上拉关闭而“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使 引脚上的电压降到门槛电压以下。    第 2 个上拉晶体管,称为“极弱上拉”,当口线锁存为 1 时打开。当引脚悬空时,这个极弱的上拉源 产生很弱的上拉电流将引脚上拉为高电平。    第 3 个上拉晶体管称为“强上拉”。当口线锁存器由 0 到 1 跳变时,这个上拉用来加快准双向口由逻辑 0 到逻辑 1 转换。当发生这种情况时,强上拉打开约 2 个时钟以使引脚能够迅速地上拉到高电平。   准双向口输出如下图所示。 VDD VDD 强 2mA 2 个 CPU 时钟延时 VDD 由 于 制 造 误 差,弱上拉能 力为 2 5 0 u A ~ 150uA 极弱 30uA 弱 200uA 端口 引脚 灌电流最大 可到 2 0mA, 输出低时 口锁存数据 输入数据 干扰抑制滤波     STC12LE5201AD 系列单片机为 3V 器件,如果用户在引脚加上 5V 电压,将会有电流从引脚流向 VDD,这 样导致额外的功率消耗。因此,建议不要在准双向口模式中向 3V 单片机引脚施加 5V 电压,如使用的话,要 加限流电阻,或用二极管做输入隔离,或用三极管做输出隔离。     准双向口带有一个施密特触发输入以及一个干扰抑制电路。     准双向口读外部状态前,要先锁存为  ‘1’,才可读到外部正确的状态. 2.推挽输出配置     推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为 1 时提供持续的强上 拉。推挽模式一般用于需要更大驱动电流的情况。     推挽引脚配置如下图所示。 VDD 拉电流最大可到 20mA,输出高时 强 口锁存数据 端口 引脚 灌电流也可承受 20mA,输出低时 输入数据 干扰抑制滤波 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  100 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 3 . 仅为输入(高阻)配置 输入口配置如下图所示。 仅为输入(高阻)时,不提供吸入 2 0 m A 电流的能力 输入数据 干扰抑制滤波 端口 引脚 输入口带有一个施密特触发输入以及一个干扰抑制电路。 4.开漏输出配置    当口线锁存器为 0 时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出时,这种配置方式必须有 外部上拉,一般通过电阻外接到 V D D 。这种方式的下拉与准双向口相同。输出口线配置如下图所示。 开漏端口带有一个施密特触发输入以及一个干扰抑制电路。 端口 引脚 口锁存数据  灌电流也可承受 20mA,输出低时 输入数据 干扰抑制滤波 关于 I / O 口应用注意事项: 少数用户反映 I/O 口有损坏现象,后发现是 有些是 I/O 口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可     是因为 1T 的 8051 单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没 有     变高,就有可能读不对,正确的方法是在软件设置由低变高后加 1 到 2 个空操作指令延时,再读就对了. 有些实际没有损坏,加上拉电阻就 OK 了     是因为外围接的是 SPI/I2C 等漏极开漏的电路,要加 10K 上拉电阻.     有些是外围接的是 NPN 三极管,没有加上拉电阻,其实基极串多大电阻,I/O 口就应该上拉多大的电阻,     或者将该 I/O 口设置为强推挽输出. 有些确实是损坏了,原因:     发现有些是驱动 LED 发光二极管没有加限流电阻,建议加 1K 以上的限流电阻,至少也要加 470 欧姆以上     发现有些是做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现 2 个 I/O 口均     输出为低,并且在按键按下时,短接在一起,我们知道一个 CMOS 电路的 2 个输出脚不应该直接短接在一起,     按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而 8051 单 片     机的弱上拉口在由 0 变为 1 时,会有 2 个时钟的强推挽高输出电流,输出到另外一个输出为低的 I/O 口,就     有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口     同时为低. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  101 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                 3.3  一种典型三极管控制电路 R1 R3 10K (3.3K~10K ) 普通 I/O 口 R2 15K (3.3K~15K )    如果用弱上拉控制,建议加上拉电阻 R1(3.3K~10K),如果不加上拉电阻 R1 (3.3K~10K),建议 R 2 的值在 1 5 K 以上,或用强推挽输出。                 3.4  典型发光二极管控制电路 1k Vcc 普通 I/O 口 弱上拉 / 准双向口,用灌电流驱动发光二极管 限流电阻尽量大于 1K,最小不要小于 470 欧姆 1k 推挽 / 强上拉口,用拉电流驱动发光二极管 普通 I/O 口                 3.5  3V/5V 混合系统 I/O 口互连     STC12C5201AD 系列 5V 单片机连接 3V 器件时,为防止 3V 器件承受不了 5V,可将相应的 I/O 口设置成 开漏配置,断开内部上拉电阻,相应的 I / O 口外部加 1 0 K 上拉电阻到 3 V 器件的 V c c,这样高电平是 3 V , 低电平是 0 V ,输入输出一切正常。    STC12LE5201AD 系列 3V 单片机连接 5V 器件时,为防止 3V 器件承受不了 5V,如果相应的 I/O 口是输 入,可在该 I / O 口上串接一个隔离二极管,隔离高压部分。外部信号电压高于单片机工作电压时截止, I/O 口此时已内部上拉到高电平;外部信号电压为低时导通,I/O 口被钳位在 0.7V,小于 0.8V 时单片 机就认为是低电平。 单片机普通 I/O 口 外部输入信号   3.6  如何让 I/O 口上电复位时为低电平     普通 8051 单片机上电复位时普通 I/O 口为弱上拉高电平输出,而很多实际应用要求上电时某些 I/O 口为 低电平输出,否则所控制的系统(如马达)就会误动作,现 STC12 系列单片机由于既有弱上拉输出又有强推挽输 出, 就可以很轻松的解决此问题。     现可在 STC12 系列单片机 I/O 口上加一个下拉电阻(1K/2K/3K),这样上电复位时,虽然单片机内部 I/O 口 是弱上拉 / 高电平输出,但由于内部上拉能力有限,而外部下拉电阻又较小,无法将其拉高,所以该 I/O 口 上电复位时外部为低电平。如果要将此 I/O 口驱动为高电平,可将此 I/O 口设置为强推挽输出,而强推挽 输出时,I/O 口驱动电流可达 20mA,故肯定可以将该口驱动为高电平输出。 普通 I/O 口             3.7  PWM 输出时 I/O 口的状态 1K/2K/3K 当某个 I/O 口作为 PWM 输出用时,该口的状态: PWM之 前 口 的 状 态 PWM时 口 的 状 态 弱 上 拉 /准 双 向 口 强 推 挽 输 出  /  强 上 拉 输 出 要 加 输 出 限 流 电 阻 10K-1K 强 推 挽 输 出 强 推 挽 输 出  /  强 上 拉 输 出 要 加 输 出 限 流 电 阻 10K-1K 仅 为 输 入 /高 阻 PWM无 效 开 漏 开 漏 限流电阻用 10K 到 1K 普通 I/O 口 接负载 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  102 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 3.8   I/O 口驱动 LED 数码管应用线路图 1 CLKOUT2/P1.0 2 P1.1 P0.0/AD0 39 3 P1.2 4 P1.3 P0.1/AD1 38 P0.2/AD2 37 5 P1.4 6 7 P1.5 Vcc 40 I/O I/O I/O I/O I/O I/O I/O I/O P0.3/AD3 36 P0.4/AD4 35 P0.5/AD5 34 P0.6/AD6 33 P0.7/AD7 32 8 RxD/INT/P1.6 TxD/P1.7 9 RST/P4.7 10 11 RxD/P3.0 12 13 INT0/P3.2 14 CLKOUT0/T0/P3.4 15 CLKOUT1/T1/P3.5 16 WR/P3.6 17 RD/P3.7 18 XTAL2 19 20 XTAL1 Gnd R1 R2 R3 R4 R5 R6 R7 R8 a NA/P4.6 31 ALE/P4.5 30 TxD/P3.1 b c d e f g dp R1-R8 阻值 为 470 欧姆 NA/P4.4 29 P2.7/AD15 28 INT1/P3.3 COM1 COM2 COM3 COM4 P2.6/AD14 27 P2.5/AD13 26 R1 471 P2.4/AD12 25 P2.3/AD11 24 R2 471 I/O R3 471 I/O I/O R4 471 I/O P2.2/AD10 23 P2.1/AD9 22 P2.0/AD8 21 I/O 口动态扫描驱动 4 个 共阴极数码管参考电路图 P2.2 1 32 VCC P2.3 2 31 P2.1 3 30 P2.0 4 29 P1.7/ADC7 TxD/P3.1 5 28 P1.6/ADC6 P0.0 6 27 P1.5/ADC5 XTAL2 7 26 P0.3 XTAL1 8 25 P1.4/ADC4 INT0/P3.2 9 24 P1.3/ADC3 23 P0.2 P0.1 10 SOP-32 RST RxD/P3.0 INT1/P3.3 11 22 P1.2/ADC2/EX_LVD CLKOUT0/ECI/T0/P3.4 12 21 P1.1/ADC1 CLKOUT1/CCP1/T1/P3.5 13 20 P1.0/ADC0 P2.4 14 19 P3.7/CCP0 P2.5 15 18 P2.7 Gnd 16 17 P2.6 I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O I/O 口动态扫描驱动数码管时,可以 一次点亮一个数码管中的 8 段,但为 降低功耗,建议可以一次只点亮其中 的 4 段或者 2 段 Vcc LED1 R1 LED2 R2 LED3 R3 LED4 R4 4k7 4k7 4k7 4k7 COM1 COM2 COM3 COM4 LED1 LED2 LED3 LED4 R5 a R6 b c R7 d R8 e R9 R10 f g R11 dp R12 R5-R12 电阻取值 1K a b c d e f g dp I/O 口动态扫描驱动 4 个 共阳极数码管参考电路图 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  103 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 3.9  I/O 口直接驱动 LCD 应用线路图 VCC SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 COM1 COM2 COM3 C0M4 R1 100kΩ SEG1 COM1 SEG2 SEG3 COM2 R2 100kΩ COM3 SEG4 SEG5 I/O SEG6 I/O SEG7 I/O SEG8 I/O I/O COM1 I/O COM2 I/O COM3 I/O C0M4 I/O I/O I/O I/O SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 COM1 COM2 COM3 C0M4 R5 100kΩ R6 100kΩ R3 100kΩ R4 100kΩ COM4 R7 100kΩ R8 100kΩ LCD4X8 如何点亮相应的 LCD 像素:     当相应的 Common 端和相应的 Segment 端压差大于 1/2Vcc 时,相应的像素就显示,当压差小于 1/2Vcc 时,     相应的像素就不显示 I/O 口如何控制 Segment:     I/O 口直接控制 Segment,程序控制相应的口输出高或低时,对应的 Segment 就是 Vcc 或 0V I/O 口如何控制 Common:     I/O 口和 2 个 100K 的分压电阻组成 Common,当 I/O 口输出为 0 时,相应的 Common 端为 0V,当 I/O 口强 推     挽输出为 1 时,相应的 Common 端为 Vcc,当 I/O 口为高阻输入时,相应的 Common 端为 1/2Vcc, VCC SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 COM1 COM2 COM3 C0M4 R1 100kΩ SEG1 COM1 SEG2 SEG3 COM2 R2 100kΩ COM3 SEG4 SEG5 I/O SEG6 I/O SEG7 I/O SEG8 I/O I/O COM1 I/O COM2 I/O COM3 I/O C0M4 I/O I/O I/O I/O SEG1 SEG2 SEG3 SEG4 SEG5 SEG6 SEG7 SEG8 COM1 COM2 COM3 C0M4 R5 100kΩ R6 100kΩ R3 100kΩ R4 100kΩ COM4 R7 100kΩ R8 100kΩ I/O,此段受控,在进入 Power Down 之 前将该口置高,可做到 Common 端无漏 电流 LCD4X8 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  104 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 4.0   A/D 做按键扫描应用线路图 +5V 1 P2.3 2 RST 3 RxD/P3.0 4 TxD/P3.1 5 XTAL2 6 XTAL1 7 INT0/P3.2 8 INT1/P3.3 9     CLKOUT0/ECI/T0/P3.4 10            CLKOUT1/CCP1/T1/P3.5 11                P2.4 12 P2.5 13 Gnd 14 R0 10kΩ R1 520 Ω 47pF 28 VCC 27 P2.1 26 P2.0 25 P1.7/ADC7 24 P1.6/ADC6 23 P1.5/ADC5 22 P1.4/ADC4 21 P1.3/ADC3 20 P1.2/ADC2/EX_LVD 19 P1.1/ADC1 18 P1.0/ADC0 17 P3.7/CCP0 16 P2.7 15 P2.6 47pF sw1 0 R2 520 Ω R3 1.8kΩ R4 3.3kΩ R5 5.4kΩ R5 8.2kΩ sw2 sw3 sw4 sw5 sw5 0`0.5 0.5`1 1`1.5 1.5`2.0 2.0`2.5 此电路可以实现单个按键扫描和组合按键 检测功能,但是具体电阻值应根据实际需要 进行选择 本电路图采用 10 个按键等间隔分压,每个按键正负误差余量允许 在 +/-0.25V 范围内变化,可以有效避免因为电阻误差或温度漂移 等造成的按键检测失效,如果要求案件检测更加稳定可靠,可以 减少按键数量,放宽各个按键检测电压允许误差量。 +5V I/O SOP-28 / SKDIP-28(窄体) P2.2 R1 10kΩ I/O sw1 R2 1.2kΩ sw2 R3 1.6kΩ sw3 R4 1.8kΩ R5 3kΩ R6 4kΩ R7 6.5kΩ R8 10kΩ R9 30kΩ R10 100kΩ sw4 sw5 sw6 sw7 sw8 sw9 sw10 sw11 0 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  105 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 第四章  STC12C5201 系列单片机看门狗应用及软件复位                 4.1  看门狗应用及测试程序 4.1.1  看门狗应用介绍 适用型号:  STC12C5201AD 系列     在工业控制 / 汽车电子 / 航空航天等需要高可靠性的系统中,为了防止“系统在异常情况下,受到干扰, MCU/CPU 程序跑飞,导致系统长时间异常工作” ,通常是引进看门狗,如果 MCU/CPU 不在规定的时间内按要求 访问看门狗,就认为MCU/CPU处于异常状态,看门狗就会强迫MCU/CPU复位,使系统重新从头开始按规律执行用 户程序。STC12C5201AD 系列单片机内部也引进了此看门狗功能, 使单片机系统可靠性设计变得更加方便 / 简 洁。为此功能,我们增加如下特殊功能寄存器 W D T _ C O N T R : Mnemonic Add WDT_CONTR C1h Name  7  6  5 Watch-Dog-Timer Control register  4  3  2  1  0 Reset Value  WDT_FLAG  - EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000 Symbol 符号 Function 功能 WDT_FLAG    When WDT overflows, this bit is set. It can be cleared by software.           看门狗溢出标志位,当溢出时,该位由硬件置 1,可用软件将其清 0。 EN_WDT Enable WDT bit. When set, WDT is started 看门狗允许位,   当设置为“1 ”时,看门狗启动。 CLR_WDT WDT clear bit. When set, WDT will recount. Hardware will automatically clear             this bit. 看门狗清“0 ”位, 当设为“1 ”时,看门狗将重新计数。硬件将自动清“0 ”此位。 IDLE_WDT When set, WDT is enabled in IDLE mode. When clear, WDT is disabled in IDLE 看门狗“I D L E ”模式位, 当设置为“1 ”时, 看门狗定时器在“空闲模式”计数                                当清“0”该位时, 看门狗定时器在“空闲模式”时不计数 PS2, PS1, PS0 Pre-scale value of Watchdog timer is shown as the bellowed table:             看门狗定时器预分频值,如下表所示 PS2 PS1 PS0 Pre-scale 预 分 频 WDT Period @20MHz  0  0  0     2        39.3 mS  0  0  1     4        78.6 mS  0  1  0     8      157.3 mS  0  1  1     16      314.6 mS  1  0  0     32      629.1 mS  1  0  1     64         1.25S  1  1  0     128         2.5S  1  1  1     256         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 PS1 PS0 Pre-scale 预 分 频 WDT Period @12MHz  0  0  0     2        65.5 mS  0  0  1     4      131.0 mS  0  1  0     8      262.1 mS  0  1  1     16      524.2 mS  1  0  0     32       1.0485S  1  0  1     64       2.0971S  1  1  0     128       4.1943S  1  1  1     256       8.3886S 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  106 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     设时钟为 11.0592MHz:     看门狗溢出时间 = (12 x Pre-scale x 32768) / 11059200 = Pre-scale x 393216 / 11059200 PS2 PS1 PS0 Pre-scale 预分频 WDT Period @11.0592MHz  0  0  0     2        71.1 mS  0  0  1     4      142.2 mS  0  1  0     8      284.4 mS  0  1  1     16      568.8 mS  1  0  0     32       1.1377S  1  0  1     64       2.2755S  1  1  0     128       4.5511S  1  1  1     256       9.1022S 汇编语言程序示例 WDT_CONTR DATA0C1H ;    或者   WDT_CONTR EQU   0C1H ;复位入口 ORG 0000H LJMPInitial … ORG 0060H Initial: MOV WDT_CONTR, #00111100B; Load initial value 看门狗定时器控制寄存器初始化                ; EN_WDT = 1, CLR_WDT = 1, IDLE_WDT = 1, PS2 = 1, PS1 = 0, PS0 = 0 … Main_Loop: LCALL Display_Loop LCALL Keyboard_Loop … MOV WDT_CONTR, #00111100B ;  喂狗,  不要用 ORL    WDT_CONTR,  #00010000B … LJMPMain_Loop C 语言程序示例 #include<reg52.h> sfr WDT_CONTR = 0xc1; void main() {   … WDT_CONTR = 0x3c;    /* 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;*/ } } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  107 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 4.1.2  一个完整的看门狗测试程序,在宏晶的下载板上可以直接测试 本程序验证 STC12C5201AD 系列单片机的看门狗及其溢出时间计算公式 ;/* ---  STC International Limited ------------------------------------------- */ ;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ------------------------------- */ ;/* ---  演示 STC12C5201AD 系列 MCU 看门狗及其溢出时间计算公式 - ---------------*/ ;/* ---  Mobile: 13922805190 ------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 -------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 -------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ------------------------------------------------- */ ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过,相关的工作状态在 P1 口上显示 ;看门狗及其溢出时间 = (12 * Pre_scale *32768)/Oscillator frequency WDT_CONTR       EQU 0C1H ;看门狗地址 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, WDT_CONTR          ;检测是否为看门狗复位     ANL   A, #10000000B     JNZ   WDT_Reset             ;WDT_CONTR.7 = 1, 看门狗复位, 跳转到看门狗复位程序 ;WDT_CONTR.7 = 0,上电复位, 冷启动, RAM 单元内容为随机值     SETB  Last_WDT_Time_LED_Status       ;上电复位,                                          ;初始化看门狗溢出时间指示灯的状态位 = 1     CLR   WDT_TIME_LED                   ;上电复位, 点亮看门狗溢出时间指示灯     MOV   WDT_CONTR, #Pre_scale_Word     ;启动看门狗 WAIT1:     SJMP  WAIT1                 ;循环执行本语句(停机),等待看门狗溢出复位 ;WDT_CONTR.7 = 1,看门狗复位, 热启动, RAM 单元内容不变, 为复位前的值 WDT_Reset:                      ;看门狗复位, 热启动     CLR   WDT_FLAG_LED          ;是看门狗复位,点亮看门狗溢出复位指示灯     JB   Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED;为 1 熄灭相应的灯,为 0 亮相应灯     ;根据看门狗溢出时间指示灯的上一次状态位设置 WDT_TIME_LED 灯,     ;若上次亮本次就熄灭, 若上次熄灭本次就亮 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  108 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     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 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  109 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243               4.2  如何用软件实现系统复位    用户应用程序在运行过程当中,有时会有特殊需求,需要实现单片机系统软复位(热启动之一), 传统的 8 0 5 1 单片机由于硬件上未支持此功能,用户必须用软件模拟实现,实现起来较麻烦。现 S T C 新 推出的增强型 8051 根据客户要求增加了 IAP_CONTR 特殊功能寄存器,实现了此功能。用户只需简单的控 制 IAP_CONTR 特殊功能寄存器的其中两位 SWBS / SWRST 就可以系统复位了。 IAP_CONTR: IAP 控制寄存器,地址在  0C7H 单元  B7  B6  B5  B4  B3  B2  B1  B0 Reset Value IAPEN SWBS SWRST   CMD_FAIL  -  WT2  WT1  WT0 0000,x000 IAPEN:   ISP/IAP 功能允许位。0:禁止 IAP 编程改变 Flash,1:允许编程改变 Flash SWBS:    软件选择从用户应用程序区启动(0 ),还是从 I S P 程序区启动(1 )。要与 S W R S T 直接配合     才可以实现 SWRST:   0: 不操作; 1 :   产生软件系统复位,硬件自动清零。 CMD_FAIL:  如果送了 ISP/IAP 命令,并对 IAP_TRIG 送 5Ah/A5h 触发失败,则为 1,需由         软件清零。 ;从用户应用程序区(AP 区)软件复位并切换到用户应用程序区(AP 区)开始执行程序 MOV IAP_CONTR, #00100000B ;SWBS = 0(选择 AP 区), SWRST = 1(软复位) ;从系统 ISP 监控程序区软件复位并切换到用户应用程序区(AP 区)开始执行程序 MOV IAP_CONTR, #00100000B ;SWBS = 0(选择 AP 区), SWRST = 1(软复位) ;从用户应用程序区(AP 区)软件复位并切换到系统 ISP 监控程序区开始执行程序 MOV IAP_CONTR, #01100000B ;SWBS = 1(选择 ISP 区), SWRST = 1(软复位) ;从系统 ISP 监控程序区软件复位并切换到系统 ISP 监控程序区开始执行程序 MOV IAP_CONTR, #01100000B ;SWBS = 1(选择 ISP 区), SWRST = 1(软复位) 本复位是整个系统复位,所有的特殊功能寄存器都会复位到初始值,I / O 口也会初始化。                   4.3   热启动复位和 冷启动复位 热启动复位 冷启动复位 复位源 现 象 内部看门狗复位 会 使 单 片 机 直 接 从 用 户 程 序 区 0000H 处开始执行用户程序 通 过 控 制 RESET脚 产生的硬复位 会 使 系 统   从 用 户 程 序 区 0000H处 开 始 直接执行用户程序 通 过 对 IAP_CONTR 寄 存 器 送 入 20H产 生的软复位 会 使 系 统 从 用 户 程 序 区 0000H处 开 始 直接执行用户程序 通 过 对 IAP_CONTR 寄 存 器 送 入 60H产 生的软复位 会 执 命 执 使 行 令 行 系 程 流 用 统 序 后 户 从 , , 程 系 统 ISP监 控 程 序 区 开 始 检 测 不 到 合 法 的 ISP下 载 会软复位到用户程序区 序 系统停电后再上 电引起的硬复位 会 执 命 执 使 行 令 行 系 程 流 用 统 序 后 户 从 , , 程 系 统 ISP监 控 程 序 区 开 始 检 测 不 到 合 法 的 ISP下 载 会软复位到用户程序区 序 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  110 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 4.4              新增第二复位功能脚选择与应用 用户可以自己设置将 P4.6 (STC12C5A60S2 系列)脚或 者 P1.2(STC12C5201AD 系 列) 脚设置为第二复位脚, 关于复位电路: 时钟频率高于 12MHz 时,建议使用第二复位功能脚(STC12C5A60S2 系列在 RST2/EX_LVD/P4.6 口                                           STC12C5201AD 系列在 RST2/EX_LVD/P1.2 口) 利用增加的外部低压检测 LVD 功能作外部低压检测复位脚,典型应用线路图 7805 7805 VCC R1 104 20K VCC + + ( + ( 470uF ( ( + 470uF R1 20K R2 10K Gnd P4.6/RST2 Gnd P1.2/RST2 单片机 /MCU 104 R2 10K STC12C5201AD 系列外部低压检测 LVD 在 P1.2 口 单片机 /MCU STC12C5A60S2 系列外部低压检测 LVD 在 P4.6 口 上图中,稳压块 7805 后端的直流电是 5V,稳压块 7805 后端的直流电电掉到 4V 附近时,上图中的电阻 R1 和 R2 将 4V 附近的电压分压到低于低压检测门槛电压(1.33V 附近)。此时第二复位功能脚 RST2 就让 CPU 处 于复位状态,当稳压块 7805 后端的直流电压高于 4V 以上时,上图中的电阻 R1 和 R2 将 4V 的电压分压到高于低 压检测门槛电压(1.33V 附近),单片机就解除复位状态,恢复到正常工作状态. 7805 470uF 104 7805 VCC 470uF 104 VCC + R1 100K 以上 R2 ? Gnd Gnd P4.6/RST2 P1.2/RST2 单片机 /MCU + ( 100K 以上 ( R1 + ( ( + R2 ? 单片机 /MCU 如交流电在 220V 时,稳压块 7805 前端的直流电是 11V,当交流电降到 160V 时,稳压块 7805 前端的直流电 是 8.5V,上图中的电阻 R1 和 R2 将 8.5V 的电压分压到低于低压检测门槛电压(1.33V 附近)。此时第二复 位功能脚 RST2 就让 CPU 处于复位状态,当稳压块 7805 前端的直流电压高于 8.5V 以上时,上图中的电阻 R1 和 R2将8.5V的电压分压到高于低压检测门槛电压(1.33V附近),单片机就解除复位状态,恢复到正常工作状态. 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  111 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    第五章   STC12 系列单片机 EEPROM 的应用           --- 利用 ISP/IAP 技术将内部 Data Flash 当 EEPROM,擦写次数 10 万次以上           5.1  IAP 及 EEPROM 新增特殊功能寄存器介绍 5V 单片机在 3.7V 以上对 EEPROM 进行操作才有效,3.7V 以下对 EEPROM 进行操作,MCU 不执行此功能,但会继 续往下执行程序.3.3V 单片机在 2.4V 以上对 EEPROM 进行操作才有效,2.4V 以下对 EEPROM 进行操作,MCU 不 执行此功能,但会继续往下执行程序.所以建议上电复位后在初始化程序时加 200MS 延时. STC12 系列 1T 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs Mnemonic Add Name  7 IAP_DATA C2h ISP/IAP  Flash  Data  Register  6  5  4  3  2  1  0 Reset Value 1111,1111 IAP_ADDRH C3h ISP/IAP  Flash  Address  High 0000,0000 IAP_ADDRL C4h ISP/IAP  Flash  Address  Low 0000,0000 IAP_CMD C5h ISP/IAP  Flash  Command  Register  - IAP_TRIG C6h ISP/IAP  Flash  Command  Trigger IAP_CONTR C7h ISP/IAP  Control  Register IAP_DATA:  -  -  -  -  - MS1 MS0 xxxx,xx00 xxxx,xxxx IAPEN SWBS SWRST  CMD_FAIL  - WT2 WT1 WT0 0000,x000 ISP/IAP 操作时的数据寄存器。 ISP/IAP 从 Flash 读出的数据放在此处,向 Flash 写的数据也需放在此处 IAP_ADDRH: ISP/IAP 操作时的地址寄存器高八位。 IAP_ADDRL: ISP/IAP 操作时的地址寄存器低八位。 IAP_CMD: B7 ISP/IAP 操作时的命令模式寄存器,须命令触发寄存器触发方可生效。 B6 B5 B4 B3 B2                   保 留 B1 B0 命 令  /     操 作     模 式 选 择   命 令  -  -  -  -  -  -  0  0 Standby    待 机 模 式 , 无 ISP操 作  -  -  -  -  -  -  0  1 从 用 户 的 应 用 程 序 区 对  " D a t a   F l a s h / E E P R O M 区 " 进 行 字 节 读  -  -  -  -  -  -  1  0 从 用 户 的 应 用 程 序 区 对  " D a t a   F l a s h / E E P R O M 区 " 进 行 字 节 编 程  -  -  -  -  -  -  1  1 从 用 户 的 应 用 程 序 区 对  " D a t a   F l a s h / E E P R O M 区 " 进 行 扇 区 擦 除 程序在用户应用程序区时,仅可以对数据Flash区(EEPROM)进行字节读/ 字节编程/扇区擦除,STC12C5206AD/ STC12C5206PWM/12LE5206AD/12LE5206PWM 除外,这几个型号可在应用程序区修改应用程序区。 IAP_TRIG: ISP/IAP 操作时的命令触发寄存器。            在 IAPEN(IAP_CONTR.7) = 1 时,对 IAP_TRIG 先写入 5Ah,再写入 A5h,ISP/IAP 命令才会生效。 IAP_CONTR: ISP/IAP 控制寄存器,地址在 0C7H 单元  B7  B6  B5  B4  B3  B2  B1  B0 Reset Value IAPEN SWBS SWRST   CMD_FAIL  1  WT2  WT1  WT0 0000,1000 IAPEN: ISP/IAP  功能允许位。0:禁止 ISP/IAP 编程改变 Flash,1:允许编程改变 Flash SWBS:     软件选择从用户主程序区启动(0 ),还是从 I S P 程序区启动(1 )。 SWRST: 0 :   不操作; 1 :   产生软件系统复位,硬件自动清零。 CMD_FAIL: 如果送了 ISP/IAP 命令,并对 ISP_TRIG 送 5Ah/A5h 触发失败,则为 1,需由软件清零。 ;在用户应用程序区(AP 区)软件复位并从用户应用程序区(AP 区)开始执行程序 MOV IAP_CONTR, #00100000B ;SWBS = 0(选择 AP 区), SWRST = 1(软复位) ;在用户应用程序区(AP 区)软件复位并从系统 ISP 监控程序区开始执行程序 MOV IAP_CONTR, #01100000B ;SWBS = 1(选择 ISP 区), SWRST = 1(软复位) ;在系统 ISP 监控程序区软件复位并从用户应用程序区(AP 区)开始执行程序 MOV IAP_CONTR, #00100000B ;SWBS = 0(选择 AP 区), SWRST = 1(软复位) ;在系统 ISP 监控程序区软件复位并从系统 ISP 监控程序区开始执行程序 MOV IAP_CONTR, #01100000B ;SWBS = 1(选择 ISP 区), SWRST = 1(软复位) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  112 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 设 置 等 待 时 间                                 C P U       等 待 时 间 ( 多 少 个  C P U  工 作 时 钟  ) WT2 WT1 WT0 Read/读 Program/编 程 Sector Erase 扇 区 擦 除 Recommended System Clock   1   1   1 2个 时 钟 55个 时 钟 21012个 时 钟   〈   1MHz   1   1   0 2个 时 钟 110个 时 钟 42024个 时 钟   〈   2MHz   1   0   1 2个 时 钟 165个 时 钟 63036个 时 钟   〈   3MHz   1   0   0 2个 时 钟 330个 时 钟 126072个 时 钟   〈   6MHz   0   1   1 2个 时 钟 660个 时 钟 252144个 时 钟   〈   12MHz   0   1   0 2个 时 钟 1100个 时 钟 420240个 时 钟   〈   20MHz   0   0   1 2个 时 钟 1320个 时 钟 504288个 时 钟   〈   24MHz   0   0   0 2个 时 钟 1760个 时 钟 672384个 时 钟   〈   30MHz 跟 等 待 参 数 对 应 的 推 荐 系 统 时 钟 利用增加的外部低压检测 LVD 功能作外部低压检测,判断是否要开始保存数据典型应用线路图 7805 470uF 104 7805 VCC 470uF 104 R1 Gnd Gnd P4.6/LVD P1.2/LVD 单片机 /MCU VCC + ( + ( R1 + ( ( + R2 单片机 /MCU R2 如交流电在 220V 时,稳压块 7805 前端的直流电是 11V,当交流电降到 160V 时,稳压块 7805 前端的直流电是 8.5V,图中的电阻 R1 和 R2 将 8.5V 的电压分压到低于低压检测门槛电压。此时 CPU 可以用查询方式查询,推 荐使用中断,在中断服务程序里面,将 LVDF 位清零,再读 LVDF 位。如果为 0,则认为是电源抖动,如果为 1, 则认为电源掉电,立即进行保存现场数据的工作。保存现场完成后,再将 LVDF 位清零,再读 LVDF 位的值。如 果为 0,则认为电源系统恢复正常,此时 CPU 可恢复正常工作,如果为 1,继续将 LVDF 位清 0,再读 LVDF 的 值,用此方法,等到电源恢复正常,或电源彻底掉电,C P U 进入复位状态。 注意: 为了防止在电压不稳定的情况下对 EEPROM 的操作失效,可以在对 EEPROM 内的数据进行操作前,先行向 IAP_DATA 寄存器写入一个已知数,然后读取 EEPROM 某个已知地址单元内的数据,如果此时 IAP_DATA 内的数 据依然是刚才写入 IAP_DATA 寄存器的数,此时可再向 IAP_DATA 寄存器写入另外一个已知数,再读刚才的已 知地址单元的数据,如果此时读出的数据为仍然为刚刚写入IAP_DATA 寄存器的数,则可判断此时电源电压偏 低,此时指令执行 EEPROM 读写操作无效,因为此时读出的数据并不是 EEPROM 里面的数据,而是我们刚才给 IAP_DATA 赋的值。 (5V 单片机在 3.7V 以下禁止操作 EEPROM,而单片机在 3.3V 以上程序仍可正常运行。3.3V 单片机在 2.4V 以下禁止操作 EEPROM,而单片机在 2.2V 以上程序仍可运行。 ) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  113 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243  5.2   STC12C5201AD 系列单片机 EEPROM 地址     STC12C5201AD 系列单片机内部可用 Data Flash(EEPROM)的地址(与程序空间是分开的):如果对应用程 序区进行 IAP 写数据 / 擦除扇区的动作,则该语句会被单片机忽略,继续执行下一句。程序在用户应用程 序区(AP 区)时,仅可以对 Data Flash(EEPROM)进行 IAP/ISP 操作。     STC12C5206AD/12C5206PWM/12LE5206AD/12LE5206PWM 除外,这几个型号可在应用程序区修改应用程序 区 。 STC12C5201AD系列单片机的内部EEPROM地址表 第一扇区 起始地址 0000h 第二扇区 每个扇区 512字节,共2个扇区 建议同一次修改的数据放在同一个扇区,不是 同一次修改的数据放在不同的扇区,不必用 结束地址 起始地址 结束地址 满,当然可全用,用满则为2K字节EEPROM。由 于擦除是按扇区擦除,所以每个扇区用的越少 越方便,256个字节以内较合理。 01FFh 0200h 03FFh 适用的型号如下: STC12C5201,STC12C5201AD,STC12C5201PWM,STC12LE5201,STC12LE5201AD,STC12LE5201PWM STC12C5202,STC12C5202AD,STC12C5202PWM,STC12LE5202,STC12LE5202AD,STC12LE5202PWM STC12C5204,STC12C5204AD,STC12C5204PWM,STC12LE5204,STC12LE5204AD,STC12LE5204PWM STC12C5205,STC12C5205AD,STC12C5205PWM,STC12LE5205,STC12LE5205AD,STC12LE5205PWM     STC12C5206AD/12LE5206AD/12C5206PWM/12LE5206PWM,这几个型号可在应用程序区修改应用程序区。单 片机可对自身内部应用程序区进行 IAP 操作,故所有部分均可当 Data Flash(EEPROM)使用,其扇区地址如 下,最大空间 6 K :         第一扇区         第二扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 0000h 01FFh 0200h         第五扇区 起始地址 结束地址 0800h 09FFh 第九扇区 起始地址 结束地址 1000h 11FFh         第三扇区        第四扇区 起始地址 结束地址 每个扇区 512字节 建议同一次 修改的数据         第六扇区         第七扇区        第八扇区 放在同一个 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 扇 区 , 不 是 同一次修改 0A00h 0BFFh 0C00h 0DFFh 0E00h 0FFFh 的数据放在 不 同 的 扇 第十扇区 第十一扇区 第十二扇区 区,不必 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 用满,当然 1200h 13FFh 1400h 15FFh 1600h 17FFh 可全用 03FFh 0400h 05FFh 0600h 07FFh STC12C5A60S2/AD/PWM 系列单片机的 EEPROM 起始地址从 0000H 开始,每个扇区 512 字 节,类推下去从 0 2 0 0 H 开始。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  114 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243  5.3   STC12C5A60S2 系列单片机 EEPROM 地址 STC12C5A32S2/AD/PWM/CCP单 片 机 的 内 部 EEPROM地 址 表 STC12LE5A32S2/AD/PWM/CCP单 片 机 的 内 部 EEPROM地 址 表         第一扇区         第二扇区         第三扇区         第四扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 0000h 1FFh 200h 3FFh 400h 5FFh 600h 7FFh         第五扇区         第六扇区         第七扇区         第八扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 800h 9FFh A00h BFFh C00h DFFh E00h FFFh         第九扇区         第十扇区         第十一扇区         第十二扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 1000h 11FFh 1200h 13FFh 1400h 15FFh 1600h 17FFh         第十三扇区         第十四扇区         第十五扇区         第十六扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 1800h 19FFh 1A00h 1BFFh 1C00h 1DFFh 1E00h 1FFFh         第十七扇区         第十八扇区         第十九扇区         第二十扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 2000h 21FFh 2200h 23FFh 2400h 25FFh 2600h 27FFh         第二十一扇区         第二十二扇区         第二十三扇区         第二十四扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 2800h 29FFh 2A00h 2BFFh 2C00h 2DFFh 2E00h 2FFFH         第二十五扇区         第二十六扇区         第二十七扇区         第二十八扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 3000h 31FFh 3200h 33FFh 3400h 35FFh 3600h 37FFH         第二十九扇区         第三十扇区         第三十一扇区         第三十二扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 3800h 39FFh 3A00h 3BFFh 3C00h 3DFFh 3E00h 3FFFH         第三十三扇区         第三十四扇区         第三十五扇区         第三十六扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 4000h 41FFh 4200h 43FFh 4400h 45FFh 4600h 47FFH         第三十七扇区         第三十八扇区         第三十九扇区         第四十扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 4800h 49FFh 4A00h 4BFFh 4C00h 4DFFh 4E00h 4FFFH         第四十一扇区         第四十二扇区         第四十三扇区         第四十四扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 5000h 51FFh 5200h 53FFh 5400h 55FFh 5600h 57FFH         第四十五扇区         第四十六扇区         第四十七扇区         第四十八扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 5800h 59FFh 5A00h 5BFFh 5C00h 5DFFh 5E00h 5FFFH         第四十九扇区         第五十扇区         第五十一扇区         第五十二扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 6000h 61FFh 6200h 63FFh 6400h 65FFh 6600h 67FFH         第五十三扇区         第五十四扇区         第五十五扇区         第五十六扇区 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 6800h 69FFh 6A00h 6BFFh 6C00h 6DFFh 6E00h 6FFFH 每个 扇区 512 字节 建议 同一 次修 改的 数据 放在 同一 扇区 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  115 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 STC12C5A60S2/AD/CCP系列单片机内部EEPROM选型一览表 STC12LE5A60S2/AD/CCP系列单片机内部EEPROM选型一览表 型号 EEPROM字节数 扇区数 起始扇区首地址 结束扇区末尾地址 STC12C5A08S2/AD/PWM 8K 16 0000h 1FFFh STC12C5A16S2/AD/PWM 8K 16 0000h 1FFFh STC12C5A20S2/AD/PWM 8K 16 0000h 1FFFh STC12C5A32S2/AD/PWM 28K 56 0000h 6FFFh STC12C5A40S2/AD/PWM 20K 40 0000h 4FFFh STC12C5A48S2/AD/PWM 12K 24 0000h 2FFFh STC12C5A52S2/AD/PWM 8K 16 0000h 1FFFh STC12C5A56S2/AD/PWM 4K 8 0000h 0FFFh STC12C560S2/AD/PWM 1K 2 0000h 03FFh STC12LE5A08S2/AD/PWM 8K 16 0000h 1FFFh STC12LE5A16S2/AD/PWM 8K 16 0000h 1FFFh STC12LE5A20S2/AD/PWM 8K 16 0000h 1FFFh STC12LE5A32S2/AD/PWM 28K 56 0000h 6FFFh STC12LE5A40S2/AD/PWM 20K 40 0000h 4FFFh STC12LE5A48S2/AD/PWM 12K 24 0000h 2FFFh STC12LE5A52S2/AD/PWM 8K 16 0000h 1FFFh STC12LE5A56S2/AD/PWM 4K 8 0000h 0FFFh STC12LE560S2/AD/PWM 1K 2 0000h 03FFh 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  116 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243               5.4  IAP 及 EEPROM 汇编简介 ;用 DATA 还是 EQU 声明新增特殊功能寄存器地址要看你用的汇编器 / 编译器 IAP_DATA DATA 0C2h; 或 IAP_DATA EQU 0C2h IAP_ADDRH DATA 0C3h; 或 IAP_ADDRH EQU 0C3h IAP_ADDRL DATA 0C4h; 或 IAP_ADDRL EQU 0C4h IAP_CMD DATA 0C5h; 或 IAP_CMD EQU 0C5h IAP_TRIG DATA 0C6h; 或 IAP_TRIG EQU 0C6h IAP_CONTR DATA 0C7h; 或 IAP_CONTR EQU 0C7h ;定义 ISP/IAP 命令及等待时间 ISP_IAP_BYTE_READ EQU 1 ;字节读 ISP_IAP_BYTE_PROGRAM EQU 2 ;字节编程,前提是该字节是空,0FFh ISP_IAP_SECTOR_ERASE EQU 3 ; 扇区擦除, 要某字节为空,要擦一扇区 WAIT_TIME 0 EQU ;设置等待时间,30MHz 以下 0,24M 以下 1, ;20MHz 以下 2,12M 以下 3,6M 以下 4,3M 以下 5,2M 以下 6,1M 以下 7, ;字节读 MOV IAP_ADDRH, #BYTE_ADDR_HIGH       ;送地址高字节 MOV IAP_ADDRL, #BYTE_ADDR_LOW MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, #10000000B ;允许 ISP/IAP 操作 MOV IAP_CMD, #ISP_IAP_BYTE_READ;送字节读命令,命令不需改变时,不需重新送命令      MOV IAP_TRIG, #5Ah      MOV IAP_TRIG, #0A5h      ;送完 A5h 后,ISP/IAP 命令立即被触发起动 ;送地址低字节 地址需要改变时才需重新送地址 此两句可以合成一句,并且只送一次就够了 ;先送 5Ah,再送 A5h 到 ISP/IAP 触发寄存器,每次都需如此 ; C P U 等待 I A P 动作完成后,才会继续执行程序。       NOP MOV ;数据读出到 IAP_DATA 寄存器后,CPU 继续执行程序 A, ISP_DATA      ;将读出的数据送往 Acc ;以下语句可不用,只是出于安全考虑而已      MOV MOV IAP_CONTR, #00000000B      ;禁止 ISP/IAP 操作 IAP_CMD, ;MOV IAP_TRIG, #00000000B      ;去除 ISP/IAP 命令 #00000000B      ;防止 ISP/IAP 命令误触发 ;MOV IAP_ADDRH, #0FFh ;送地址高字节单元为 00,指向非 EEPROM 区 ;MOV IAP_ADDRL, #0FFh ;送地址低字节单元为 00,防止误操作 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  117 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ; 字节编程,该字节为 F F h / 空时,可对其编程,否则不行, 要先执行扇区擦除 MOV IAP_DATA, #ONE_DATA  ;送字节编程数据到 IAP_DATA,只有数据改变时才需重新送 MOV IAP_ADDRH, #BYTE_ADDR_HIGH ;送地址高字节 MOV IAP_ADDRL, #BYTE_ADDR_LOW MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, #10000000B ;允许 ISP/IAP 操作 地址需要改变时才需重新送地址 ;送地址低字节 此两句可合成一句,并且只送一次就够了      MOV IAP_CMD, #ISP_IAP_BYTE_PROGRAM     ;送字节编程命令      MOV IAP_TRIG, #5Ah      MOV IAP_TRIG, #0A5h        ;送完 A5h 后,ISP/IAP 命令立即被触发起动   ;先送 5Ah,再送 A5h 到 ISP/IAP 触发寄存器,每次都需如此 ;CPU 等待 IAP 动作完成后,才会继续执行程序.      NOP     ;字节编程成功后,CPU 继续执行程序 ;以下语句可不用,只是出于安全考虑而已 MOV IAP_CONTR, #00000000B ;禁止 ISP/IAP 操作 MOV IAP_CMD, ;MOV IAP_TRIG, #00000000B ;去除 ISP/IAP 命令 #00000000B ;防止 ISP/IAP 命令误触发 ;MOV IAP_ADDRH, #0FFh ;送地址高字节单元为 00,指向非 EEPROM 区,防止误操作 ;MOV IAP_ADDRL, #0FFh ;送地址低字节单元为 00,指向非 EEPROM 区,防止误操作 ; 扇区擦除,没有字节擦除,只有扇区擦除,5 1 2 字节 / 扇区, 每个扇区用得越少越方便 ; 如果要对某个扇区进行擦除,而其中有些字节的内容需要保留,则需将其先读到单片机 ; 内部的 R A M 中保存,再将该扇区擦除,然后将须保留的数据写回该扇区,所以每个扇区 ; 中用的字节数越少越好,操作起来越灵活越快. ;扇区中任意一个字节的地址都是该扇区的地址,无需求出首地址. MOV IAP_ADDRH, #SECTOR_FIRST_BYTE_ADDR_HIGH ;送扇区起始地址高字节 地址需要改变时 MOV IAP_ADDRL, #SECTOR_FIRST_BYTE_ADDR_LOW  ;送扇区起始地址低字节 才需重新送地址 MOV IAP_CONTR, #WAIT_TIME ;设置等待时间 ORL IAP_CONTR, #10000000B ;允许 ISP/IAP MOV IAP_CMD, 此两句可以合成一句,并且只送一次就够了 #ISP_IAP_SECTOR_ERASE;送扇区擦除命令,命令不需改变时,不需重新送命令      MOV IAP_TRIG, #5Ah ;先送 5Ah,再送 A5h 到 ISP/IAP 触发寄存器,每次都需如此      MOV IAP_TRIG, #0A5h      ;送完 A5h 后,ISP/IAP 命令立即被触发起动 ;CPU 等待 IAP 动作完成后,才会继续执行程序.      NOP ;扇区擦除成功后,CPU 继续执行程序 ;以下语句可不用,只是出于安全考虑而已 MOV IAP_CONTR, #00000000B      ;禁止 ISP/IAP 操作 MOV IAP_CMD, ;MOV IAP_TRIG, #00000000B      ;去除 ISP/IAP 命令 #00000000B      ;防止 ISP/IAP 命令误触发 ;MOV IAP_ADDRH, #0FFh ;送地址高字节单元为 00,指向非 EEPROM 区 ;MOV IAP_ADDRL, #0FFh ;送地址低字节单元为 00,防止误操作 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  118 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 小常识: (STC 单片机的 Data Flash 当 EEPROM 功能使用) 3 个基本命令 - - - - 字节读,字节编程,扇区擦除   字节编程:只能将“1 ”改为“0 ”,对“0 ”用字节编程是无用的。如果该字节是“1 1 1 1 , 1 1 1 1 B ”, 则可将其中的“1 ”编程为“0 ”,如果该字节中有位为“0 ”,要将其改为“1 ”,则须先将整个扇 区 擦 除 , 因 为 只 有 “ 扇 区 擦 除 ” 才 可 以 将 “ 0 ” 变 为 “ 1 ”。 扇 区 擦 除 : 只 有 “ 扇 区 擦 除 ” 才 可 能 将 “ 0 ” 擦 除 为 “ 1 ”。 大建议: 1 . 同一次修改的数据放在同一扇区中,不是同一次修改的数据放在另外的扇区, 就不须读出保护。 2.如果一个扇区只用一个字节,那就是真正的 EEPROM,STC 单片机的 Data Flash 比外部 EEPROM 要快很多, 读一个字节 / 编程一个字节大概是 0.2uS/60uS。 3.如果在一个扇区中存放了大量的数据,某次只需要修改其中的一个字节或一部分字节时,则另外的不需 要修改的数据须先读出放在 STC 单片机的 RAM 中,然后擦除整个扇区,再将需要保留的数据和需修改的数 据一并写回该扇区中。这时每个扇区使用的字节数是使用的越少越方便( 不需读出一大堆需保留数据) 。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  119 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243  5.5 一个完整的 EEPROM 测试程序,用宏晶的下载板可以直接测试 ;STC12C5201AD 系列单片机 EEPROM/IAP 功能测试程序演示 ;/* ---  STC International Limited -------------------------------------------------- */ ;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 --------------------------------------- */ ;/* ---  演示 STC12C5201AD 系列 MCU EEPROM/IAP 功能 ----------------------------------- */ ;/* ---  Mobile: 13922805190 -------------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 --------------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 --------------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com -------------------------------------------------------- */ ;本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过,EEPROM 的数据在 P1 口上显示 ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;------------------------------------------------ ;声明与 IAP/ISP/EEPROM 有关的特殊功能寄存器的地址 IAP_DATA        EQU   0C2H IAP_ADDRH       EQU   0C3H IAP_ADDRL       EQU   0C4H IAP_CMD         EQU   0C5H IAP_TRIG        EQU   0C6H IAP_CONTR       EQU   0C7H ;定义 ISP/IAP 命令 ISP_IAP_BYTE_READ   EQU   1H ;字节读 ISP_IAP_BYTE_PROGRAM   EQU   2H ; 字节编程, 可以将 1 写成 0 ,要将 1 变成 0 ,必须执行字节编程 ISP_IAP_SECTOR_ERASE   EQU   3H ; 扇区擦除, 可以将 0 擦成 1 ,要将 0 变成 1 ,必须擦除整个扇区 ;定义 Flash 操作等待时间及允许 IAP/ISP/EEPROM 操作的常数 ;ENABLE_IAP      EQU   80H     ;系统工作时钟<30MHz 时,对 IAP_CONTR 寄存器设置此值 ;ENABLE_IAP      EQU   81H     ;系统工作时钟<24MHz 时,对 IAP_CONTR 寄存器设置此值  ENABLE_IAP      EQU   82H     ;系统工作时钟<20MHz 时,对 IAP_CONTR 寄存器设置此值 ;ENABLE_IAP      EQU   83H     ;系统工作时钟<12MHz 时,对 IAP_CONTR 寄存器设置此值 ;ENABLE_IAP      EQU   84H     ;系统工作时钟<6MHz 时,对 IAP_CONTR 寄存器设置此值 ;ENABLE_IAP      EQU   85H     ;系统工作时钟<3MHz 时,对 IAP_CONTR 寄存器设置此值 ;ENABLE_IAP      EQU   86H     ;系统工作时钟<2MHz 时,对 IAP_CONTR 寄存器设置此值 ;ENABLE_IAP      EQU   87H     ;系统工作时钟<1MHz 时,对 IAP_CONTR 寄存器设置此值 DEBUG_DATA       EQU   5AH ;是本测试程序选定的 EEPROM 单元的数值如正确应等于的数值 ;------------------------ ;选择 MCU EEPROM 测试起始地址 DATA_FLASH_START_ADDRESS EQU 0000H  ;STC12C5201AD 系列单片机的 EEPROM 测试起始地址 ;------------------------------------------------     ORG   0000H     LJMP  MAIN ;------------------------------------------------     ORG   0100H MAIN:     MOV     P1,#0F0H     LCALL  Delay     MOV     P1,#0FH      ;演示程序开始工作,让 P1.0/P1.1/P1.2/P1.3 控制的灯亮 ;延时      ;演示程序开始工作,让 P1.7/P1.6/P1.5/P1.4 控制的灯亮 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  120 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     LCALL  Delay ;延时     MOV  SP,  #7FH      ;堆栈指针指向 7FH 单元 ;************************************************ ;将 EEPROM 测试起始地址单元的内容读出 MAIN1:     MOV    DPTR, #DATA_FLASH_START_ADDRESS  ;将 EEPROM 测试起始地址送 DPTR 数据指针     LCALL   Byte_Read     MOV     40H, A                ;将 EEPROM 的值送 40H 单元保存     CJNE    A, #DEBUG_DATA, DATA_NOT_EQU_DEBUG_DATA   ;如果数据比较不正确,就跳转 DATA_IS_DEBUG_DATA: ;数据是对的,亮 P1.7 控制的灯,然后在 P1 口上将 EEPROM 的数据显示出来     MOV  P1,  #01111111B  ;如 (DATA_FLASH_START_ADDRESS)的值等于 #DEBUG_DATA, 亮 P1.7     LCALL  Delay     MOV   ;延时  A, 40H   ;将保存在 40H 单元中 EEPROM 的值从 40H 单元送累加器 A     CPL    A        ;取反的目的是相应的灯亮代表 1,不亮代表 0     MOV    P1,A    ;数据是对的,送 P1 显示 WAIT1:     SJMP   WAIT1   ;数据是对的,送 P1 显示后,CPU 在此无限循环执行此句 DATA_NOT_EQU_DEBUG_DATA: ;EEPROM 里的数据是错的,亮 P1.3 控制的灯,然后在 P1 口上将错误的数据显示出来, ;再将该 EEPROM 所在的扇区整个擦除,将正确的数据写入后,亮 P1.5 控制的灯     MOV    P1,  #11110111B ;如 (DATA_FLASH_START_ADDRESS)的值不等于 #DEBUG_DATA, 亮 P1.3     LCALL Delay ;延时     MOV  A,   40H  ;将保存在 40H 单元中 EEPROM 的值从 40H 单元送累加器 A     CPL    A         ;取反的目的是相应的灯亮代表 1,不亮代表 0     MOV    P1,  A    ;数据不对,送 P1 显示     LCALL  Delay;延时     MOV    DPTR, #DATA_FLASH_START_ADDRESS  ;将 EEPROM 测试起始地址送 DPTR 数据指针     ACALL  Sector_Erase  ;擦除整个扇区     MOV    DPTR, #DATA_FLASH_START_ADDRESS  ;将 EEPROM 测试起始地址送 DPTR 数据指针     MOV    A,    #DEBUG_DATA      ;写入 EEPROM 的数据为 #DEBUG_DATA     ACALL  Byte_Program           ;字节编程     MOV    P1,   #11011111B       ;将先前亮的 P1.3 灯关闭 ,再亮 P1.5 灯,代表数据已被修改 WAIT2:     SJMP   WAIT2       ;字节编程后,CPU 在此无限循环执行此句 ;************************************************ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  121 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------------------------------ ;读一字节,调用前需打开 IAP  功能,入口:DPTR =  字节地址,返回:A =  读出字节 Byte_Read:     MOV     IAP_CONTR,  #ENABLE_IAP     ;打开 IAP 功能, 设置 Flash 操作等待时间     MOV     IAP_CMD,    #ISP_IAP_BYTE_READ  ;设置为 IAP/ISP/EEPROM 字节读模式命令     MOV     IAP_ADDRH,  DPH             ;设置目标单元地址的高 8 位地址     MOV     IAP_ADDRL,  DPL             ;设置目标单元地址的低 8 位地址     ;CLR      EA     MOV     IAP_TRIG,   #5AH       ;先送 5Ah,再送 A5h 到 ISP/IAP 触发寄存器,每次都需如此     MOV     IAP_TRIG,   #0A5H      ;送完 A5h 后,ISP/IAP 命令立即被触发起动     NOP     MOV     A,   IAP_DATA          ;读出的数据在 IAP_DATA 单元中,送入累加器 A     ;SETB    EA     ACALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使 CPU 处于安全状态,                       ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关     RET ;------------------------------------------------ ;字节编程,调用前需打开 IAP 功能,入口:DPTR =  字节地址, A= 须编程字节的数据 Byte_Program:     MOV   IAP_CONTR, #ENABLE_IAP    ;打开 IAP 功能, 设置 Flash 操作等待时间     MOV   IAP_CMD, #ISP_IAP_BYTE_PROGRAM   ;设置为 IAP/ISP/EEPROM 字节编程模式命令     MOV   IAP_ADDRH, DPH            ;设置目标单元地址的高 8 位地址     MOV   IAP_ADDRL, DPL            ;设置目标单元地址的低 8 位地址     MOV   ISP_DATA, A               ;要编程的数据先送进 ISP_DATA 寄存器     ;CLR   EA     MOV   IAP_TRIG, #5AH            ;先送 5Ah,再送 A5h 到 ISP/IAP 触发寄存器,每次都需如此     MOV   IAP_TRIG, #0A5H          ;送完 A5h 后,ISP/IAP 命令立即被触发起动     NOP     ;SETB  EA      ACALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使 CPU 处于安全状态,                        ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关     RET ;------------------------------------------------ ;擦除扇区, 入口:DPTR = 扇区地址 Sector_Erase:     MOV   IAP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间     MOV   IAP_CMD, #03H             ;设置为 IAP/ISP/EEPROM 扇区擦除模式命令     MOV   IAP_ADDRH, DPH            ;设置目标单元地址的高 8 位地址     MOV   IAP_ADDRL, DPL            ;设置目标单元地址的低 8 位地址     ;CLR   EA     MOV   IAP_TRIG, #5AH            ;先送 5Ah,再送 A5h 到 ISP/IAP 触发寄存器,每次都需如此     MOV   IAP_TRIG, #0A5H          ;送完 A5h 后,ISP/IAP 命令立即被触发起动     NOP     ;SETB  EA      ACALL IAP_Disable ;关闭 IAP 功能, 清相关的特殊功能寄存器,使 CPU 处于安全状态,                        ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关     RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  122 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------------------------------ IAP_Disable: ;关闭 IAP 功能, 清相关的特殊功能寄存器,使 CPU 处于安全状态, ;一次连续的 IAP 操作完成之后建议关闭 IAP 功能,不需要每次都关     MOV   IAP_CONTR, #0             ;关闭 IAP 功能     MOV   IAP_CMD,  #0              ;清命令寄存器,使命令寄存器无命令,此句可不用     MOV   IAP_TRIG, #0              ;清命令触发寄存器,使命令触发寄存器无触发,此句可不用     MOV   IAP_ADDRH, #0FFH ;送地址高字节单元为 00,指向非 EEPROM 区     MOV   IAP_ADDRL, #0FFH ;送地址低字节单元为 00,防止误操作     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 ;************************************************ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  123 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243        第六章  STC12xx 系列单片机定时器应用                  6.1  定时器 0/1 的介绍     STC12xx 系列有 4 个定时器,其中定时器 0 和定时器 1 两个 16 位定时器,与传统 8051 的定时器完全兼 容,也可以设置为 1T 模式,其中在定时器 1 做波特率发生器时,定时器 0 可以当两个 8 位定时器用(另外 2 路 PCA/PWM 可以再实现 2 个 16 位定时器)。 定时器 0 和 1     定时和计数功能由特殊功能寄存器 TMOD 的控制位 C/T 进行选择,TMOD 寄存器的各位信息如下表所列。 可以看出,2 个定时 / 计数器有 4 种操作模式,通过 TMOD 的 M1 和 M0 选择。2 个定时 / 计数器的模式 0、1 和 2 都相同,模式 3 不同,各模式下的功能如下所述。       寄存器 TMOD 各位的功能描述 复位值:0 0 H TMOD     地址:89H 不可位寻址 7      6       5      4       3      2      1       0 GATE C/T M1 M0 GATE 定时器 1   位 符号       功能 TMOD.7/ GATE C/T M1 M0 定时器 0 TMOD.7 控制定时器 1,置 1 时只有在 INT1 脚为高及 TR1 控制位置 1 时才 可打开定时器 / 计数器 1 。 TMOD.3/ GATE TMOD.6/ C/T TMOD.3 控制定时器 0,置 1 时只有在 INT0 脚为高及 TR0 控制位置 1 时才 可打开定时器 / 计数器 0 。 TMOD.6 控制定时器 1 用作定时器或计数器,清零则用作定时器(从内 部系统时钟输入),置 1 用作计数器(从 T 1 / P 3 . 5 脚输入) TMOD.2/ C/T      TMOD.2 控制定时器 0 用作定时器或计数器,清零则用作定时器(从内 部系统时钟输入),置 1 用作计数器(从 T 0 / P 3 . 4 脚输入) TMOD.5/TMOD.4  M1、M0      0    0 定时器定时器 / 计数器 1 模式选择 13 位定时器 / 计数器,兼容 8048 定时器模式,TL1 只用低 5 位参与分 频,T H 1 整个 8 位全用。                 0    1 16 位定时器 / 计数器,TL1、TH1 全用                 1    0 8 位自动重装载定时器,当溢出时将 TH1 存放的值自动重装入 TL1。                 1    1 定时器 / 计数器 1 此时无效(停止计数)。 TMOD.1/TMOD.0  M1、M0 定时器 / 计数器 0 模式选择      0    0 13 位定时器 / 计数器,兼容 8048 定时器模式,TL0 只用低 5 位参与分 频,T H 0 整个 8 位全用。                 0    1 16 位定时器 / 计数器,TL0、TH0 全用                 1    0 8 位自动重装载定时器,当溢出时将 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 寄存器各位的具体功能描述表。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  124 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 OSC ÷ d* C/T=0   TLn THn ( 低 5 位) (8   位) C/T=1 Tn 脚 TFn 中断 控制 TRn 定时器 n GATE 位 INTn 脚 * 在 T0x12 = 0 模式下,d=12(12 时钟模式);  在 T0x12 = 1 模式下,d=1(1T)。 图   定时器 / 计数器 0 和定时器 / 计数器 1 的模式 0   :   13 位定时 / 计数器 表  寄存器 TCON 各位的功能描述 TCON  地址:88H 可位寻址 复位值:0 0 H 位 7 6 5 4 TF1 TR1 TF0 TR0 符 号 3 2 1 0 IE1 IT1 IE0 IT0 功 能 定时器 / 计数器 1 溢出标志位。当 T1 被允许计数后,T1 从初值开始加 1 计数,最 高位产生溢出时,置“1 ”T F 1 ,并向 C P U 请求中断,当 C P U 响应时,由硬件清 “0 ”T F 1 ,T F 1 也可以由程序查询或清“0 ”。 TCON.7 TF1 TCON.6 TR1 定时器 T1 的运行控制位。该位由软件置位和清零。当 GATE (TMOD.7)=0 ,TR1=1 时 就允许 T1 开始计数,TR1=0 时禁止 T1 计数。当 GATE(TMOD.7)=1,TR1=1 且 INT1 输 入高电平时,才允许 T 1 计数。 TCON.5 TF0 定时器 / 计数器 0 溢出标志位。当 T0 被允许计数后,T0 从初值开始加 1 计数,最高 位产生溢出时,置“1 ”T F 0 ,并向 C P U 请求中断,当 C P U 响应时,由硬件清“0 ” T F 0 ,T F 0 也可以由程序查询或清“0 ”。 TCON.4 TR0 定时器 T0 的运行控制位。该位由软件置位和清零。当 GATE (TMOD.3)=0 ,TR0=1 时 就允许 T0 开始计数,TR1=0 时禁止 T0 计数。当 GATE(TMOD.3)=1,TR0=1 且 INT0 输 入高电平时,才允许 T 0 计数。 TCON.3 IE1 外部中断 1 中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件 自动将 IE1 位清 0 。 TCON.2 IT1 TCON.1 IE0 TCON.0 IT0 外部中断 1 触发方式控制位。IT1=0 时,外部中断 1 为低电平触发方式,当 INT1(P3. 3 )输入低电平时,置位 I E 1 。采用低电平触发方式时,外部中断源(输入到 I N T 1 ) 必须保持低电平有效,直到该中断被 CPU 响应,同时在该中断服务程序执行完之前,外 部中断源必须被清除(P 3 . 3 要变高),否则将产生另一次中断。当 I T 1 = 1 时,则外部 中断 1 (I N T 1 )端口由“1 ”→“0 ”下降沿跳变,激活中断请求标志位 I E 1 ,向主 机请求中断处理。 外部中断 0 中断请求标志位。当主机响应中断转向该中断服务程序执行时,由内部硬件 自动将 IE0 位清 0 。 外部中断 0 触发方式控制位。IT0=0 时,外部中断 0 为低电平触发方式,当 INT0(P3. 2 )输入低电平时,置位 I E 0 。采用低电平触发方式时,外部中断源(输入到 I N T 0 ) 必须保持低电平有效,直到该中断被 CPU 响应,同时在该中断服务程序执行完之前,外 部中断源必须被清除(P 3 . 2 要变高),否则将产生另一次中断。当 I T 0 = 1 时,则外部 中断 0 (I N T 0 )端口由“1 ”→“0 ”下降沿跳变,激活中断请求标志位 I E 1 ,向主 机请求中断处理。     该 13 位寄存器包含 THn 全部 8 个位及 TLn 的低 5 位。TLn 的高 3 位不定,可将其忽略。置位运行标志 (TRn)不能清零此寄存器。模式 0 的操作对于定时器 0 及定时器 1 都是相同的。2 个不同的 GATE 位(TMOD. 7 和 TMOD.3)分别分配给定时器 1 及定时器 0 。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  125 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 2.模式 1 模式 1 除了使用了 THn 及 TLn 全部 16 位外,其他与模式 0 完全相同。 OSC ÷ d* C/T=0   TLn ( 8 位) C/T=1 Tn 脚 THn (8   位) TFn 中断 控制 TRn 定时器 n GATE 位 INTn 脚 * 在 T0x12 = 0 模式下,d=12(12 时钟模式);  在 T0x12 = 1 模式下,d=1(1T)。 图   定时器 / 计数器 0 和定时器 / 计数器 1 的模式 1   :   16 位定时 / 计数器 3.模式 2 此模式下定时器 / 计数器 0 和 1 作为可自动重装载的 8 位计数器(T L n),如下图所示。T L n 的溢出 不仅置位 TFn,而且将 THn 内容重新装入 TLn,THn 内容由软件预置,重装时 THn 内容不变。模式 2 的操 作对于定时器 0 及定时器 1 是相同的。 OSC ÷ d* C/T=0   TLn (8   位) C/T=1 Tn 脚 中断 控制 重装 TRn 定时器 n GATE 位 TFn THn (8   位) INTn 脚 * 在 T0x12 = 0 模式下,d=12(12 时钟模式);  在 T0x12 = 1 模式下,d=1(1T)。 图   定时器 / 计数器 0 和 1 的模式 2   :  8 位自动重装载 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  126 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 4.模式 3 对定时器 1 ,在模式 3 时,定时器 1 停止计数,效果与将 T R 1 设置为 0 相同。      对定时器 0,此模式下定时器 0 的 TL0 及 TH0 作为 2 个独立的 8 位计数器。下图为模式 3 时的定时器 0 逻辑图。TL0 占用定时器 0 的控制位:C/T、GATE、TR0、INT0 及 TF0。TH0 限定为定时器功能(计数器 周期),占用定时器 1 的 T R 1 及 T F 1 。此时,T H 0 控制定时器 1 中断。 模式 3 是为了增加一个附加的 8 位定时器 / 计数器而提供的,使单片机具有三个定时器 / 计数器。模 式 3 只适用于定时器 / 计数器 0,定时器 T1 处于模式 3 时相当于 TR1=0,停止计数(此时 T1 可用来作串行 口波特率发生器),而 T 0 可作为两个定时器用。 OSC ÷ d* C/T=0   C/T=1 T0 脚 TL0 (8   位) TF0 中断 TH0 (8   位) TF1 中断 控制 TR0 定时器 0 GATE 位 INT0 脚 OSC ÷ d* 控制 TR1 *  在 T0x12 = 0 模式下,d=12(12 时钟模式);  在 T0x12 = 1 模式下,d=1(1T)。 图   定时 / 计数器 0 的模式 3   :   两个 8 位计数器 5.也可将定时器 0 和定时器 1 设置为 1T 模式     STC12C5201AD 系列是 1T 的 8051 单片机,为兼容传统 8051,定时器 0 和定时器 1 复位后是传统 8051 的速度,即 1 2 分频,这是为了兼容传统 8 0 5 1 。但也可不进行 1 2 分频,通过设置新增加的特殊功能寄存 器 AUXR,将 T0,T1 设置为 1T。普通 111 条机器指令是固定的,快 3 到 24 倍,无法改变。 Mnemonic Add AUXR Name  7  6  5 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6  4  3 2  1  0 Reset Value - - -  -  - 0000,000 T0x12:  0, 定时器 0 是传统 8051 速度,12 分频;1,  定时器 0 的速度是传统 8051 的 12 倍,不分频 T1x12:  0, 定时器 1 是传统 8051 速度,12 分频;1,  定时器 1 的速度是传统 8051 的 12 倍,不分频 如果 UART 串口用定时器 1 做波特率发生器,T1x12 位就可以控制 UART 串口是 12T  还是 1T 了。 UART 串口的模式 0: STC12C5201AD 系列是 1T  的 8051 单片机,为了兼容传统 8051,UART 串口复位后是兼容传统 8051 的。 UART_M0x6:   0, UART 串口的模式 0 是传统 12T 的 8051 速度,12 分频;                1, UART 串口的模式 0 的速度是传统 12T 的 8051 的 6 倍,2 分频 如果用定时器 T1 做波特率发生器时,UART 串口的速度由 T1 的溢出率决定 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  127 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                  6.2  定时器 0/1 应用举例 【例 1 】  定时 / 计数器编程,定时 / 计数器的应用编程主要需考虑:根据应用要求,通过程序初始 化,正确设置控制字,正确计算和计算计数初值,编写中断服务程序,适时设置控制位等。通常情况下, 设置顺序大致如下: 1 ) 工作方式控制字(T M O D 、T 2 C O N )的设置; 2) 计数初值的计算并装入 THx、TLx、RCAP2H 、RCAP2L ; 3 ) 中断允许位 E T x 、E A 的设置,使主机开放中断; 4)  启 / 停位 TRx 的设置等。 现以定时 / 计数器 0 或 1 为例作一简要介绍。 8051 系列单片机的定时器 / 计数器 0 或 1 是以不断加 1 进行计数的,即属加 1 计数器,因此,就不 能直接将实际的计数值作为计数初值送入计数寄存器 THx、TLx 中去,而必须将实际计数值以 2 8 、2 13 、2 16 为模求补,以其补码作为计数初值设置 T H x 和 T L x 。     设:实际计数值为 X ,计数器长度为 n (n = 8 、1 3 、1 6 ),则应装入计数器 T H x 、T L x 中的计数初值 为 2 n - x ,式中 2 n 为取模值。例如,工作方式 0 的计数长度为 1 3 位,则 n = 1 3 ,以 2 1 3 为模,工作方式 1 的计数长度为 1 6 ,则 n = 1 6 ,以 2 1 6 为模等等。所以,计数初值为(x )=   2 n - x 。    对于定时模式,是对机器周期计数,而机器周期与选定的主频密切相关。因此,需根据应用系统所选 定的主频计算出机器周期值。现以主频 6 M H z 为例,则机器周期为: 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)补 = 2 16  - x=65536-2500=63036, 还需将它分解成两个 8 位十六进制数,分别求得低 8 位为 3CH 装入 TLx,高 8 位为 F6H 装入 THx 中。 工作方式 0 、1 、2 的最大计数次数分别为 8 1 9 2 、6 5 5 3 6 和 2 5 6 。 对外部事件计数模式,只需根据实际计数次数求补后变换成两个十六进制码即可。 【例 2 】  定时 / 计数器应用编程,设某应用系统,选择定时 / 计数器 1 定时模式,定时时间 T c   = 10ms ,主频频率为 1 2 M H z ,每 10ms 向主机请求处理。选定工作方式 1 。计算得计数初值:低 8 位初值为 F 0 H ,高 8 位初值为 D 8 H 。 (1 )初 始 化 程 序 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  128 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    所谓初始化,一般在主程序中根据应用要求对定时 / 计数器进行功能选择及参数设定等预置程序,本例 初始化程序如下: … START: ;主程序段 MOV S P ,# 6 0 H ;设置堆栈区域 MOV TMOD,#10H ;选择 T 1 、定时模式,工作方式 1 MOV TH1,#0D8H ;设置高字节计数初值 MOV TL1,#0F0H ;设置低字节计数初值 SETB EA ; SETB ET1 ; } 开中断 …  ; 其他初始化程序 SETB TR1 ;启动 T 1 开始计时 …  ; 继续主程序 (2 )中断服务程序 PUSH A ; PUSH DPL ; PUSH DPH ; } 现场保护 … INTT1: TL1,#0F0H ; MOV TH1,#0D8H ; … MOV } 重新置初值 ;中断处理主体程序 POP DPH POP DPL POP A ; } ; 现场恢复 ; RETI ;返回     这里展示了中断服务子程序的基本格式。8052 系列单片机的中断属于矢量中断,每一个矢量中断源只 留有 8 个字节单元,一般是不够用的,常需用转移指令转到真正的中断服务子程序区去执行。    【例 3】  对外部正脉冲测宽。选择定时 / 计数器 2 进行脉宽测试较方便,但也可选用定时 / 计数器 0 或 定时 / 计数器 1 进行测宽操作。本例选用定时 / 计数器 0(T0)以定时模式,工作方式 1 对 INT0 引脚上的 正脉冲进行脉宽测试。 INT0  引脚 T0 计数 启动 停止 设置 G A T E 为 1 ,机器周期 T P 为 1 μ s 。本例程序段编制如下: INTT0: MOV TMOD,#09H ;设 T 0 为定时方式 1 ,G A T E 为 1 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  129 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 MOV TL0,#00H      ; MOV TH0,#00H      ; CLR EX0 LOP1: JB P3.2,LOP1 ;等待 INT0 引低电平 LOP2: JNB P3.2,LOP2 ;等待 INT0 引脚高电平 } ;关 INT0 中断 SETB TR0 ;启动 T 0 开始计数 JB P3.2,LOP3 ;等待 INT0 低电平 CLR TR0 ;停止 T 0 计数 MOV A ,T L 0 ;低字节计数值送 A MOV B ,T H 0 ;高字节计数值送 B … LOP3: TH0,TL0 清 0 ;计算脉宽和处理 【例 4】  利用定时 / 计数器 0 或定时 / 计数器 1 的 Tx 端口改造成外部中断源输入端口的应用设计。 在某些应用系统中常会出现原有的两个外部中断源 INT0 和 INT1 不够用,而定时 / 计数器有多余,则 可将 Tx 用于增加的外部中断源。现选择定时 / 计数器 1 为对外部事件计数模式工作方式 2(自动再装入), 设置计数初值为 FFH,则 T1 端口输入一个负跳变脉冲,计数器即回 0 溢出,置位对应的中断请求标志位 TF1 为 1 ,向主机请求中断处理,从而达到了增加一个外部中断源的目的。应用定时 / 计数器 1 (T 1 )的中 断矢量转入中断服务程序处理。其程序示例如下: (1 )主程序段: ORG 0000H AJMP MAIN ORG ;转主程序 001BH     ;转 T1 中断服务程序 … LJMP INTER ORG 0100 ;主程序入口 MOV S P ,# 6 0 H ;设置堆栈区 MOV TMOD,#60H;设置定时 / 计数器 1 ,计数方式 2 MOV TL1,#0FFH;设置计数常数 MOV TH1,#0FFH … M A I N :… ;开中断 SETB ET1 ;开定时 / 计数器 1 中断 SETB TR1 ;启动定时 / 计数器 1 计数 … SETB EA (2 )中 断 服 务 程 序 (具 体 处 理 程 序 略 ) ORG PUSH A ; PUSH DPL ; PUSH DPH ; } 现场入栈保护 … INTER: 1000H 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  130 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ; 中断处理主体程序 ; … … } POP DPH ; POP DPL ; POP A ; RETI } 现场出栈复原 ;返回 这是中断服务程序的基本格式。 【例 5】  某应用系统需通过 P1.0 和 P1.1 分别输出周期为 200 μ s 和 400 μ s 的方波。为此,系统选用定 时器 / 计数器 0 (T 0 ),定时方式 3 ,主频为 6 M H z ,T P = 2 μ s ,经计算得定时常数为 9 C H 和 3 8 H 。 本例程序段编制如下: … (1 )初始化程序段 PLT0:MOV TMOD,#03H ;设置 T 0 定时方式 3 MOV TL0,#9CH      ;设置 TL0 初值 MOV TH0,#38H      ;设置 TH0 初值 SETB EA ; SETB ET0 ; SETB ET1 ; SETB TR0 ;启动 SETB TR1 ;启动 } … 开中断 (2)中断服务程序段 INT0P: TL0,#9CH P1.0     ;重新设置初值 ;对 P1.0 输出信号取反 … MOV CPL … … 1) RETI ;返回 … … 2) INT1P TH0,#38H CPL P1.1     ;重新设置初值 ;对 P1.1 输出信号取反 … MOV RETI ;返回 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  131 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 在实际应用中应注意的问题如下。 (1 )定时 / 计数器的实时性 定时 / 计数器启动计数后,当计满回 0 溢出向主机请求中断处理,由内部硬件自动进行。但从回 0 溢出请求中断到主机响应中断并作出处理存在时间延迟,且这种延时随中断请求时的现场环境的不同而不 同,一般需延时 3 个机器周期以上,这就给实时处理带来误差。大多数应用场合可忽略不计,但对某些 要求实时性苛刻的场合,应采用补偿措施。 这种由中断响应引起的时间延时,对定时 / 计数器工作于方式 0 或 1 而言有两种含义:一是由于中断 响应延时而引起的实时处理的误差;二是如需多次且连续不间断地定时 / 计数,由于中断响应延时,则在 中断服务程序中再置计数初值时已延误了若干个计数值而引起误差,特别是用于定时就更明显。 例如选用定时方式 1 设置系统时钟,由于上述原因就会产生实时误差。这种场合应采用动态补偿办法 以减少系统始终误差。所谓动态补偿,即在中断服务程序中对 T H x 、T L x 重新置计数初值时,应将 T H x 、 TLx 从回 0 溢出又重新从 0 开始继续计数的值读出,并补偿到原计数初值中去进行重新设置。可考虑如下补 … 偿方法: CLR EA ;禁止中断 MOV A ,T L x ;读 TLx 中已计数值 ADD A ,# L O W ;LOW 为原低字节计数初值 MOV T L x ,A ;设置低字节计数初值 MOV A ,# H I G H ;原高字节计数初值送 A ADDC A ,T H x ;高字节计数初值补偿 MOV ;置高字节计数初值 T H x ,A ;开中断 … SETB EA (2 )动态读取运行中的计数值 在动态读取运行中的定时 / 计数器的计数值时,如果不加注意,就可能出错。这是因为不可能在同 一时刻同时读取 THx 和 TLx 中的计数值。比如,先读 TLx 后读 THx,因为定时 / 计数器处于运行状态,在 读 TLx 时尚未产生向 THx 进位,而在读 THx 前已产生进位,这时读得的 THx 就不对了;同样,先读 THx 后 读 T L x 也可能出错。 一种可避免读错的方法是:先读 T H x,后读 T L x ,将两次读得的 T H x 进行比较;若两次读得的值相 等,则可确定读的值是正确的,否则重复上述过程,重复读得的值一般不会再错。此法的软件编程如下: RDTM:   M OV  A,THx   MOV  R0,TLx    CJNE A,THx,RDTM ;读取 THx 存 A 中 ;读取 TLx 存 R0 中     ;比较两次 T H x 值,若相等,则读得的值正         ;确,程序往下执行,否则重读      ;将 THx 存于 R1 中 …   MOV   R 1 ,A 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  132 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243              6.3  用定时器 1 做波特率发生器 ;/* ---  STC International Limited ---------------------------------------------------- */ ;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ---------------------------------------- */ ;/* ---  演示 STC12xx 系列 MCU 定时器 1 作波特率发生器功能 ------------------------------ */ ;/* ---  Mobile: 13922805190 ---------------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ----------------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ----------------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ---------------------------------------------------------- */ ;本演示程序在宏晶的 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;----------------------------------------------------------------------------- ;    本程序演示 STC12xx 系列单片机用定时器 1 作 RS-232 通信 ;波特率发生器的使用方法, 有关波特率自动重装数的计算请查看程序后面的内容 ;    STC12xx 系列是 " 一个时钟 / 机器周期 " 的 8051 单片机。它 ;的定时器 0 、定时器 1   有两种计数速率,一种是 1 2 T 模式:每 1 2 个时钟加  1 ,与普通的 ;8051 单片机相同;另一种是 1T 模式:每个时钟加  1,是普通 8051 单片机的 12  倍。 ;    STC89C51RC/RD+ 系列是 "12 个时钟 / 机器周期 " 的 8051 单片机, 与普通的 8051 单片 ; 机相同。 ;    STC12xx 系列的单片机, 定时器 0、定时器 1 的计数速率由 ;特殊功能寄存器 AUXR 的 bit7, bit6 决定,bit7 的符号是 T0x12, 如果 T0x12=1, ;定时器 0 就工作在 1T 模式。bit6 的符号是 T1x12, 如果 T1x12=1,定时器 1 就工作在 ;1T 模式。有关详情请参考 STC12C5201AD  系列单片机器件手册(中文应用指南)。 ;使用方法: ;  1. 修改程序, 改变波特率参数或改变定时器 1 的计数速率(1T 模式 /12T 模式) ;  2. 汇编程序, 将代码下载到单片机中 ;  3. 调整串口调试助手的波特率与单片机的波特率相同, 并打开调试助手的串口。STC ;     下载程序 STC-ISP.exe 版本 3.2 以上有串口调试助手功能。 ;  4. 打开单片机电源, 可以在串口调试助手的接收区看到单片机发出的数据 ;  5. 用串口调试助手发送单个字节到单片机, 单片机收到后会立即回发到串口调试助手 ;  6. 反复步骤 1-5, 检验波特率参数是否正确, 特别要观察定时器 1 工作在 1T 模式 ;     的波特率。例如,先设置定时器 1  工作在 12T 模式,  设置波特率为 9600,执行 ;     步骤 2-5, 检验波特率参数是否正确。然后仅仅将定时器 1 的计数速率改成 ;     1T 模式,执行步骤 2-5,就会发现本程序的波特率变成了 115200,波特率是 ;     12T 模式的 12 倍。 ; ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  133 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;定义 STC12xx 系列 MCU 特殊功能寄存器 AUXR    EQU  8EH ;------------------------------------------------------------------------------ ;定义波特率自动重装数 ;****************************************************************************** ;以下是 Fosc = 22.1184MHz, 1T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH      ;Baud=1,382,400 bps ;RELOAD_COUNT EQU 0FEH      ;Baud=691,200 bps ;RELOAD_COUNT EQU 0FDH      ;Baud=460,800 bps ;RELOAD_COUNT EQU 0FCH      ;Baud=345,600 bps ;RELOAD_COUNT EQU 0FBH      ;Baud=276,480 bps ;RELOAD_COUNT EQU 0FAH      ;Baud=230,400 bps ;RELOAD_COUNT EQU 0F4H      ;Baud=115,200 bps ;RELOAD_COUNT EQU 0E8H      ;Baud=57,600 bps ;RELOAD_COUNT EQU 0DCH      ;Baud=38,400 bps ;RELOAD_COUNT EQU 0B8H      ;Baud=19,200 bps ;RELOAD_COUNT EQU 70H      ;Baud=9,600 bps ;以上是 Fosc = 22.1184MHz, 1T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;****************************************************************************** ;****************************************************************************** ;以下是 Fosc = 1.8432MHz, 1T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH      ;Baud=115,200 bps ;RELOAD_COUNT EQU 0FEH      ;Baud=57,600 bps ;RELOAD_COUNT EQU 0FDH      ;Baud=38,400 bps ;RELOAD_COUNT EQU 0FCH      ;Baud=28,800 bps ;RELOAD_COUNT EQU 0FAH      ;Baud=19,200 bps ;RELOAD_COUNT EQU 0F4H      ;Baud=9,600 bps ;RELOAD_COUNT EQU 0E8H      ;Baud=4,800 bps ;RELOAD_COUNT EQU 0D0H      ;Baud=2,400 bps ;RELOAD_COUNT EQU 0A0H      ;Baud=1,200 bps ;以上是 Fosc = 1.8432MHz, 1T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;****************************************************************************** ;****************************************************************************** ;以下是 Fosc = 18.432MHz, 1T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH      ;Baud=1,152,000 bps ;RELOAD_COUNT EQU 0FEH      ;Baud=576,000 bps ;RELOAD_COUNT EQU 0FDH      ;Baud=288,000 bps ;RELOAD_COUNT EQU 0FCH      ;Baud=144,000 bps ;RELOAD_COUNT EQU 0F6H      ;Baud=115,200 bps ;RELOAD_COUNT EQU 0ECH      ;Baud=57,600 bps ;RELOAD_COUNT EQU 0E2H      ;Baud=38,400 bps ;RELOAD_COUNT EQU 0D8H      ;Baud=28,800 bps ;RELOAD_COUNT EQU 0C4H      ;Baud=19,200 bps ;RELOAD_COUNT EQU 088H      ;Baud=9,600 bps ;以上是 Fosc = 18.432MHz, 1T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;****************************************************************************** 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  134 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;****************************************************************************** ;以下是 Fosc = 18.432MHz, 1T 模式, SMOD=0 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH      ;Baud=576,000 bps ;RELOAD_COUNT EQU 0FEH      ;Baud=288,000 bps ;RELOAD_COUNT EQU 0FDH      ;Baud=144,000 bps ;RELOAD_COUNT EQU 0FCH      ;Baud=115,200 bps ;RELOAD_COUNT EQU 0F6H      ;Baud=57,600 bps ;RELOAD_COUNT EQU 0ECH      ;Baud=38,400 bps ;RELOAD_COUNT EQU 0E2H      ;Baud=28,800 bps ;RELOAD_COUNT EQU 0D8H      ;Baud=19,200 bps ;RELOAD_COUNT EQU 0C4H      ;Baud=9,600 bps ;RELOAD_COUNT EQU 088H      ;Baud=4,800 bps ;以上是 Fosc = 18.432MHz, 1T 模式, SMOD=0 时,计算出的自动重装数和波特率 ;****************************************************************************** ;****************************************************************************** ;以下是 Fosc = 18.432MHz, 12T 模式, SMOD=0 时,计算出的自动重装数和波特率 RELOAD_COUNT EQU 0FBH      ;Baud=9,600 bps ;RELOAD_COUNT EQU 0F6H      ;Baud=4,800 bps ;RELOAD_COUNT EQU 0ECH      ;Baud=2,400 bps ;RELOAD_COUNT EQU 0D8H      ;Baud=1,200 bps ;以上是 Fosc = 18.432MHz, 12T 模式, SMOD=0 时,计算出的自动重装数和波特率 ;****************************************************************************** ;****************************************************************************** ;以下是 Fosc = 18.432MHz, 12T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FBH      ;Baud=19,200 bps ;RELOAD_COUNT EQU 0F6H      ;Baud=9,600 bps ;RELOAD_COUNT EQU 0ECH      ;Baud=4,800 bps ;RELOAD_COUNT EQU 0D8H      ;Baud=2,400 bps ;RELOAD_COUNT EQU 0B0H      ;Baud=1,200 bps ;以上是 Fosc = 18.432MHz, 12T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;****************************************************************************** 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  135 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;****************************************************************************** ;以下是 Fosc = 11.0592MHz, 12T 模式, SMOD=0 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH      ;Baud=28,800 bps ;RELOAD_COUNT EQU 0FEH      ;Baud=14,400 bps ;RELOAD_COUNT EQU 0FDH      ;Baud=9,600 bps ;RELOAD_COUNT EQU 0FAH      ;Baud=4,800 bps ;RELOAD_COUNT EQU 0F4H      ;Baud=2,400 bps ;RELOAD_COUNT EQU 0E8H      ;Baud=1,200 bps ;以上是 Fosc = 11.0592MHz, 12T 模式, SMOD=0 时,计算出的自动重装数和波特率 ;****************************************************************************** ;****************************************************************************** ;以下是 Fosc = 11.0592MHz, 12T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;RELOAD_COUNT EQU 0FFH      ;Baud=57,600 bps ;RELOAD_COUNT EQU 0FEH      ;Baud=28,800 bps ;RELOAD_COUNT EQU 0FDH      ;Baud=14,400 bps ;RELOAD_COUNT EQU 0FAH      ;Baud=9,600 bps ;RELOAD_COUNT EQU 0F4H      ;Baud=4,800 bps ;RELOAD_COUNT EQU 0E8H      ;Baud=2,400 bps ;RELOAD_COUNT EQU 0D0H      ;Baud=1,200 bps ;以上是 Fosc = 11.0592MHz, 12T 模式, SMOD=1 时,计算出的自动重装数和波特率 ;****************************************************************************** ;定义指示灯 LED_MCU_START  EQU  P1.7            ;MCU 工作指示灯 ;------------------------------------------------------------------------------     ORG   0000H     AJMP  MAIN ;------------------------------------------------------------------------------     ORG   0023H     AJMP  UART_Interrupt            ;RS232 串口中断服务程序     NOP     NOP ;------------------------------------------------------------------------------ MAIN:     MOV   SP, #7FH                  ;设置堆栈指针     CLR   LED_MCU_START             ;点亮 MCU 工作指示灯     ACALL Initial_UART              ;初始化串口     MOV   R0, #30H                  ;30H = 可打印字符 '0' 的 ASCII 码     MOV   R2, #10                   ;发送 10 个字符 '0123456789' 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  136 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 LOOP:     MOV   A, R0     ACALL Send_One_Byte             ;发送一个字节,可将 PC 串口调试助手设置成字符显示     ;如果是字符显示, 显示为 0123456789,     ;如设置成 16 进制显示, 显示 30 31 32 33 34 35 36 37 38 39     INC   R0     DJNZ  R2, LOOP MAIN_WAIT:     SJMP  MAIN_WAIT                 ;跳转到本行, 无限循环 ;------------------------------------------------------------------------------ UART_Interrupt:                     ;串口中断服务程序     JB    RI, Is_UART_Receive     CLR   TI                        ;清零串口发送中断标志     RETI                            ;发送时使用的是查询方式,不使用中断 Is_UART_Receive:     CLR   RI     PUSH  ACC     MOV   A, SBUF                   ;取接收到的字节     ACALL Send_One_Byte             ;回发收到的字节     POP   ACC     RETI ;------------------------------------------------------------------------------ Initial_UART:                       ;初始化串口 ; SCON  Bit:   7       6     5     4     3     2     1    0 ;            SM0/FE   SM1   SM2   REN   TB8   RB8    TI   RI     MOV   SCON, #50H                ; 0101,0000 8 位可变波特率, 无奇偶校验     MOV   TMOD, #21H                ;设置定时器 1 为 8 位自动重装计数器     MOV   TH1, #RELOAD_COUNT        ;设置定时器 1 自动重装数     MOV   TL1, #RELOAD_COUNT ;--------------------------------------- ;    ORL   PCON, #80H               ;若本行有效, 波特率可以加倍 ;--------------------------------------- ;以下两行指令只能有一行有效 ;    ORL  AUXR, #01000000B          ;定时器 1 工作在 1T 模式,波特率可以快 12 倍      ANL  AUXR, #10111111B          ;定时器 1 工作在 12T 模式,与普通的 8051 相同 ;以上两行指令只能有一行有效 ;---------------------------------------     SETB  TR1                       ;启动定时器 1     SETB  ES     SETB  EA     RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  137 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------------------------------------------------------------ ;入口参数: A = 要发送的字节 Send_One_Byte:                      ;发送一个字节     CLR   ES     CLR   TI                        ;清零串口发送中断标志     MOV   SBUF, A Wait_Send_Finish:     JNB   TI, Wait_Send_Finish      ;等待发送完毕     CLR   TI                        ;清零串口发送中断标志     SETB  ES     RET ;------------------------------------------------------------------------------     END ;------------------------------------------------------------------------------ ;计算自动重装数 RELOAD (SMOD = 0, SMOD 是 PCON 特殊功能寄存器的最高位): ;  1. 计算 RELOAD (以下是 SMOD = 0 时的计算公式) ; ;     a) 12T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32/12 + 0.5) ;     b)  1T 模式的计算公式: RELOAD = 256 - INT(Fosc/Baud0/32 + 0.5) ; ;     式中: INT() 表示取整运算即舍去小数, 在式中加 0.5 可以达到四舍五入的目的 ;           Fosc = 晶振频率 ;           Baud0 = 标准波特率 ; ;  2. 计算用 RELOAD 产生的波特率: ;       a)   Baud = Fosc/(256 - RELOAD)/32/12       12T 模式 ;       b)   Baud = Fosc/(256 - RELOAD)/32           1T 模式 ; ;  3. 计算误差 ;          error = (Baud - Baud0)/Baud0 * 100% ;  4. 如果误差绝对值 > 3% 要更换波特率或者更换晶体频率, 重复步骤 1-4 ; ; ;例: Fosc = 22.1184MHz, Baud0 = 57600 (12T 模式) ; 1. RELOAD = 256 - INT( 22118400/57600/32/12 + 0.5) ;           = 256 - INT( 1.5 ) ;           = 256 - 1 ;           = 255 ;           = 0FFH ; 2. Baud = 22118400/(256-255)/32/12 ;         = 57600 ; 3. 误差等于零 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  138 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;例: Fosc = 18.432MHz, Baud0 = 57600 (12T 模式) ; 1. RELOAD = 256 - INT( 18432000/57600/32/12 + 0.5) ;           = 256 - INT( 0.833 + 0.5 ) ;           = 256 - INT( 1.333 ) ;           = 256 - 1 ;           = 255 ;           = 0FFH ; 2. Baud = 18432000/(256-255)/32/12 ;         = 48000 ; 3. error = (48000 - 57600)/57600 * 100% ;          = -16.66% ; 4. 误差很大, 要更换波特率或者更换晶体频率, 重新计算请见下一例 ;例: Fosc = 18.432MHz, Baud0 = 9600 (12T 模式) ; 1. RELOAD = 256 - INT( 18432000/9600/32/12 + 0.5) ;           = 256 - INT( 5.5 ) ;           = 256 - 5 ;           = 251 ;           = 0FBH ; 2. Baud = 18432000/(256-251)/32/12 ;         = 9600 ; 3. 一目了然, 误差等于零 ;例: Fosc = 2.000MHz, Baud = 4800 (1T 模式) ; 1. RELOAD = 256 - INT( 2000000/4800/32 + 0.5) ;           = 256 - INT( 13.02 + 0.5 ) ;           = 256 - INT( 13.52 ) ;           = 256 - 13 ;           = 243 ;           = 0F3H ; 2. Baud = 2000000/(256-243)/32 ;         = 4808 ; 3. error = 0.16% ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  139 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243      第七章  STC12 系列单片机的 A/D 转换 7.1  STC12C5201AD 系列单片机 A/D 转换相关寄存器    STC12C5201AD 系列带 A/D 转换的单片机的 A/D 转换口在 P1 口(P1.7-P1.0),有 8 路 8 位高速 A/D 转换器, 速度可达到 300KHz(30 万次 / 秒) 。8 路电压输入型 A / D ,可做温度检测、电池电压检测、按键扫描、频 谱检测等。上电复位后 P1 口为弱上拉型 I/O 口,用户可以通过软件设置将 8 路中的任何一路设置为 A/D 转 换,不需作为 A / D 使用的口可继续作为 I / O 口使用。     需作为 A/D 使用的口需先将 P1ASF 特殊功能寄存器中的相应位置为‘1’ ,将相应的口设置为模拟功能。 STC12C5202AD 系列单片机 P1 口模拟功能控制寄存器(该寄存器是只写寄存器,读无效) Mnemonic Add P1ASF 9Dh Name     7     6 5 4  3  2  1  0 Reset Value P1 Analog P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF 0000,0000 Special Function 当 P1 口中的相应位作为 A/D 使用时,要将 P1ASF 中的相应位置 1. P1ASF[7:0] P1.x的 功 能 P1ASF.0 = 1 P1.0口 作 为 模 拟 功 能 A/D使 用 其 中 P 1 A S F 寄 存 器 地 址 为 : [  9 D H  ]         ( 不 能 够 进 行 位 寻 址 ) P1ASF.1 = 1 P1.1口 作 为 模 拟 功 能 A/D使 用 P1ASF.2 = 1 P1.2口 作 为 模 拟 功 能 A/D使 用 P1ASF.3 = 1 P1.3口 作 为 模 拟 功 能 A/D使 用 P1ASF.4 = 1 P1.4口 作 为 模 拟 功 能 A/D使 用 P1ASF.5 = 1 P1.5口 作 为 模 拟 功 能 A/D使 用 P1ASF.6 = 1 P1.6口 作 为 模 拟 功 能 A/D使 用 P1ASF.7 = 1 P1.7口 作 为 模 拟 功 能 A/D使 用 或 P1.2口 作 为 比 较 器 用 时 , 在 Power_Down模 式 下 低 功 耗 与 A/D 转换有关的特殊功能控制寄存器表 Mnemonic Add P1ASF 9Dh Name  7 P1 Analog Special Function P17ASF ADC_CONTR BCh A/D 转换控制寄存器 ADC_RES BDh A/D 转换结果寄存器 IE A8h IP IPH  6  5 P16ASF P15ASF  4  3 P14ASF P13ASF  2  1  0 Reset Value P12ASF P11ASF P10ASF ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000 0000,0000 0000,0000 Interrupt  Enable EA  ELVD EADC ES ET1 EX1 ET0 EX0 0000,0000 B8h Interrupt  Priority Low  PPCA  PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 B7h Interrupt  Priority  High  PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 如果要允许 A/D 转换中断则需要将相应的控制位置 1:       1、将 EADC 置 1,允许 ADC 中断,这是 ADC 中断的中断控制位。       2 、将 E A 置 1 ,打开单片机总中断控制位,此位不打开,也是无法产生 A D C 中断的     A/D 中断服务程序中要用软件清 A/D 中断请求标志位 ADC_FLAG(也是 A/D 转换结束标志位)。 ADC_CONTR 特殊功能寄存器:  A/D 转换控制特殊功能寄存器,地址在 0BCh 单元 A/D 转换控制寄存器  ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000 对 A D C _ C O N T R 寄存器进行操作,建议直接用 M O V 赋值语句,不要用‘与’和‘或’语句 CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0 C H S 2 C H S 1 C H S 0 A n a l o g   C h a n n e l   S e l e c t 模 拟 输 入 通 道 选 择 0 0 0 选 择    P 1 . 0   作 为 A / D 输 入 来 用 0 0 1 选 择    P 1 . 1   作 为 A / D 输 入 来 用 0 1 0 选 择    P 1 . 2   作 为 A / D 输 入 来 用 0 1 1 选 择    P 1 . 3   作 为 A / D 输 入 来 用 1 0 0 选 择    P 1 . 4   作 为 A / D 输 入 来 用 1 0 1 选 择    P 1 . 5   作 为 A / D 输 入 来 用 1 1 0 选 择    P 1 . 6   作 为 A / D 输 入 来 用 1 1 1 选 择    P 1 . 7   作 为 A / D 输 入 来 用 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  140 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ADC_START:   模数转换器( A D C ) 转换启动控制位,设置为“1”时,开始转换, 转换结束后为 0 。 ADC_FLAG:   模数转换器转换结束标志位,当 A/D 转换完成后,ADC_FLAG = 1,要由软件清 0。              不管是 A/D 转换完成后由该位申请产生中断,还是由软件查询该标志位 A/D 转换是否结束,               当 A/D 转换完成后,ADC_FLAG = 1,一定要软件清 0。 SPEED1,SPEED0:模数转换器转换速度控制位 SPEED1 SPEED0 A/D转 换 所 需 时 间 1 1 70个 时 钟 周 期 转 换 一 次 , CPU工 作 频 率 21MHz时 , A/D转 换 速 度 约 300KHz 1 0 140个 时 钟 周 期 转 换 一 次 0 1 280个 时 钟 周 期 转 换 一 次 0 0 420个 时 钟 周 期 转 换 一 次 STC12C5202AD系列单片机的A/D转换模块说使用的时钟是外部晶体时钟或内部R/C振荡器所产生的系统时钟, 不使用时钟分频寄存器 CLK_DIV 对系统时钟分频后所产生的供给 CPU 工作所使用的时钟. 好处: 这样可以让 ADC 用较高的频率工作,提高 A/D 的转换速度 这样可以让 CPU 用较低的频率工作,降低系统的功耗 程序中需要注意的事项: 由于是 2 套时钟,所以,设置 ADC_CONTR 控制寄存器后,要加 4 个空操作延时才可以正确读到 ADC_CONTR 寄 存器的值,原因是设置 ADC_CONTR 控制寄存器的语句执行后,要经过 4 个 CPU 时钟的延时,其值才能够保证被设 置进 ADC_CONTR 控制寄存器. MOV ADC_CONTR, #DATA NOP NOP NOP NOP MOV A, ADC_CONTR ;经过 4 个时钟延时后,才能够正确读到 ADC_CONTR 控制寄存器的值 ADC_POWER:   ADC 电源控制位。      0:关闭 ADC 电源;1:打开 A/D 转换器电源.建议进入空闲模式前,将 ADC 电源关闭,ADC_POWER =0.    启动 AD 转换前一定要确认 AD 电源已打开,AD 转换结束后关闭 AD 电源可降低功耗,也可不关闭。    初次打开内部 A/D 转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动 A/D 转换    建议启动 A/D 转换后,在 A/D 转换结束之前,不改变任何 I/O 口的状态,有利于高精度 A/D 转换 ADC_RES 特殊功能寄存器:  A/D 转换结果特殊功能寄存器 ADC_RES BDh A/D 转 换 结 果 寄 存 器 0000,0000 模拟 / 数字转换结果计算公式如下:结果 ADC_RES[7:0]  = 256 x Vin / Vcc Vin 为模拟输入通道输入电压,Vcc 为单片机实际工作电压,用单片机工作电压作为模拟参考电压。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  141 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 7.2  STC12C5A60AD/S2 系列单片机 A/D 转换相关寄存器    STC12C5A60AD/S2 系列带 A/D 转换的单片机的 A/D 转换口在 P1 口(P1.7-P1.0),有 8 路 10 位高速 A/D 转 换器,速度可达到 250KHz(25 万次 / 秒)。8 路电压输入型 A/D,可做温度检测、电池电压检测、按键扫描、 频谱检测等。上电复位后 P1 口为弱上拉型 I/O 口,用户可以通过软件设置将 8 路中的任何一路设置为 A/D 转换,不需作为 A / D 使用的口可继续作为 I / O 口使用。     需作为 A/D 使用的口需先将 P1ASF 特殊功能寄存器中的相应位置为‘1’ ,将相应的口设置为模拟功能。 STC12C5A60AD/S2 系列单片机 P1 口模拟功能控制寄存器(该寄存器是只写寄存器,读无效) Mnemonic Add P1ASF Name     7     6 5 4  3  2  1  0 Reset Value P1 Analog P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF 0000,0000 Special Function 9Dh 当 P1 口中的相应位作为 A/D 使用时,要将 P1ASF 中的相应位置 1. P1ASF[7:0] P1.x的 功 能 P1ASF.0 = 1 P1.0口 作 为 模 拟 功 能 A/D使 用 其 中 P 1 A S F 寄 存 器 地 址 为 : [  9 D H  ]         ( 不 能 够 进 行 位 寻 址 ) P1ASF.1 = 1 P1.1口 作 为 模 拟 功 能 A/D使 用 P1ASF.2 = 1 P1.2口 作 为 模 拟 功 能 A/D使 用 P1ASF.3 = 1 P1.3口 作 为 模 拟 功 能 A/D使 用 P1ASF.4 = 1 P1.4口 作 为 模 拟 功 能 A/D使 用 P1ASF.5 = 1 P1.5口 作 为 模 拟 功 能 A/D使 用 P1ASF.6 = 1 P1.6口 作 为 模 拟 功 能 A/D使 用 P1ASF.7 = 1 P1.7口 作 为 模 拟 功 能 A/D使 用 与 A/D 转换有关的特殊功能控制寄存器表 Mnemonic Add Name P1ASF P1 Analog 9Dh Special Function  7 ADC_CONTR BCh A/D 转换控制寄存器 P17ASF ADC_POWER  6  5 P16ASF P15ASF  4  3  2  1  0 Reset Value P14ASF P13ASF P12ASF P11ASF P10ASF 0000,0000 CHS2 CHS1 CHS0 0000,0000 SPEED1 SPEED0 ADC_FLAG ADC_START ADC_RES BDh A/D 转换结果寄存器 ADC_RESL BEh A/D 转换结果寄存器低 0000,0000 AUXR1 A2h Auxiliary register 1 IE A8h Interrupt  Enable EA  ELVD IP B8h Interrupt  Priority Low  PPCA  PLVD IPH B7h Interrupt  Priority  High  PPCAH PLVDH 0000,0000 PCA_P4 SPI_P4 S2_P4 GF2 ADRJ EADC ES ET1 EX1 PADC PS PT1 PX1 PADCH PSH PT1H PX1H DPS 0000,0000 ET0 EX0 0000,0000 PT0 PX0 0000,0000 PT0H PX0H 0000,0000 如果要允许 A/D 转换中断则需要将相应的控制位置 1:       1、将 EADC 置 1,允许 ADC 中断,这是 ADC 中断的中断控制位。       2 、将 E A 置 1 ,打开单片机总中断控制位,此位不打开,也是无法产生 A D C 中断的     A/D 中断服务程序中要用软件清 A/D 中断请求标志位 ADC_FLAG(也是 A/D 转换结束标志位)。 ADC_CONTR 特殊功能寄存器:  A/D 转换控制特殊功能寄存器,地址在 0BCh 单元 A/D 转换控制寄存器  ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0000,0000 对 A D C _ C O N T R 寄存器进行操作,建议直接用 M O V 赋值语句,不要用‘与’和‘或’语句 CHS2 / CHS1 / CHS0:模拟输入通道选择,CHS2 / CHS1 / CHS0 C H S 2 C H S 1 C H S 0 A n a l o g   C h a n n e l   S e l e c t 模 拟 输 入 通 道 选 择 0 0 0 选 择    P 1 . 0   作 为 A / D 输 入 来 用 0 0 1 选 择    P 1 . 1   作 为 A / D 输 入 来 用 0 1 0 选 择    P 1 . 2   作 为 A / D 输 入 来 用 0 1 1 选 择    P 1 . 3   作 为 A / D 输 入 来 用 1 0 0 选 择    P 1 . 4   作 为 A / D 输 入 来 用 1 0 1 选 择    P 1 . 5   作 为 A / D 输 入 来 用 1 1 0 选 择    P 1 . 6   作 为 A / D 输 入 来 用 1 1 1 选 择    P 1 . 7   作 为 A / D 输 入 来 用 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  142 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ADC_START :   模数转换器( A D C ) 转换启动控制位,设置为“1”时,开始转换, 转换结束后为 0 。 ADC_FLAG:   模数转换器转换结束标志位,当 A/D 转换完成后,ADC_FLAG = 1,要由软件清 0。              不管是 A/D 转换完成后由该位申请产生中断,还是由软件查询该标志位 A/D 转换是否结束,               当 A/D 转换完成后,ADC_FLAG = 1,一定要软件清 0。 SPEED1,SPEED0:模数转换器转换速度控制位 SPEED1 SPEED0 A/D转 换 所 需 时 间 1 1 90个 时 钟 周 期 转 换 一 次 , CPU工 作 频 率 21MHz时 , A/D转 换 速 度 约 300KHz 1 0 180个 时 钟 周 期 转 换 一 次 0 1 360个 时 钟 周 期 转 换 一 次 0 0 540个 时 钟 周 期 转 换 一 次 STC12C5S60AD/S2系列单片机的A/D转换模块说使用的时钟是外部晶体时钟或内部R/C振荡器所产生的系统时 钟,不使用时钟分频寄存器 CLK_DIV 对系统时钟分频后所产生的供给 CPU 工作所使用的时钟. 好处: 这样可以让 ADC 用较高的频率工作,提高 A/D 的转换速度 这样可以让 CPU 用较低的频率工作,降低系统的功耗 程序中需要注意的事项: 由于是 2 套时钟,所以,设置 ADC_CONTR 控制寄存器后,要加 4 个空操作延时才可以正确读到 ADC_CONTR 寄 存器的值,原因是设置 ADC_CONTR 控制寄存器的语句执行后,要经过 4 个 CPU 时钟的延时,其值才能够保证被设 置进 ADC_CONTR 控制寄存器. MOV ADC_CONTR, #DATA NOP NOP NOP NOP MOV A, ADC_CONTR ;经过 4 个时钟延时后,才能够正确读到 ADC_CONTR 控制寄存器的值 ADC_POWER:   ADC 电源控制位。      0:关闭 ADC 电源;1:打开 A/D 转换器电源.建议进入空闲模式前,将 ADC 电源关闭,ADC_POWER =0.    启动 AD 转换前一定要确认 AD 电源已打开,AD 转换结束后关闭 AD 电源可降低功耗,也可不关闭。    初次打开内部 A/D 转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动 A/D 转换    建议启动 A/D 转换后,在 A/D 转换结束之前,不改变任何 I/O 口的状态,有利于高精度 A/D 转换 ADC_RES 特殊功能寄存器:  A/D 转换结果特殊功能寄存器 Mnemonic Add ADC_RES BDh Name 7  6  5  4  3  2  1  0 Reset Value A/D 转 换 结 果 寄 存 器 0000,0000 ADC_RESL BEh A/D 转 换 结 果 寄 存 器 低 AUXR1 0000,0000 A2h Auxiliary register 1 PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS 0000,00x0 AUXR1 寄存器的 ADRJ 位是 A/D 转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位 ADRJ:    0,  10 位 A/D 转换结果的高 8 位存放在 ADC_RES 中,低 2 位存放在 ADC_RESL 的低 2 位中 Mnemonic ADC_RES Name 7  6  5  4  3  2 ADC_RESL A/D 转换结果寄存器低 AUXR1  1  0 Reset Value A/D 转换结果寄存器 ADC_RES9 ADC_RES8 ADC_RES7 ADC_RES6 ADC_RES5ADC_RES4 ADC_RES3 ADC_RES2 0000,0000 ADC_RES1 ADC_RES0 0000,0000 Auxiliary register 1 ADRJ=0 ADRJ:    1,  10 位 A/D 转换结果的高 2 位存放在 ADC_RES 中低 2 位中,低 8 位存放在 ADC_RESL 中 Mnemonic Name ADC_RES A/D 转换结果寄存器 7  6  5  4  3  2  1  0 Reset Value ADC_RES9 ADC_RES8 0000,0000 ADC_RESL A/D 转换结果寄存器低 ADC_RES7 ADC_RES6 ADC_RES5 ADC_RES4 ADC_RES3ADC_RES2 ADC_RES1 ADC_RES0 0000,0000 AUXR1 Auxiliary register 1 ADRJ=1 ADRJ = 0,模 / 数转换结果计算公式如下:取 10 位结果 (ADC_RES[7:0],ADC_RESL[1:0]) = 1024 x Vin / Vcc ADRJ = 0,模 / 数转换结果计算公式如下:取 8 位结果 ADC_RES[7:0] = 256 x Vin / Vcc ADRJ = 1,模 / 数转换结果计算公式如下:取 10 位结果 (ADC_RES[1:0],ADC_RESL[7:0]) = 1024 x Vin / Vcc Vin 为模拟输入通道输入电压,Vcc 为单片机实际工作电压,用单片机工作电压作为模拟参考电压。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  143 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     7.3  A/D 转换典型应用线路,按键扫描 Vcc 1 P2.3 2 RST 3 RxD/P3.0 4 TxD/P3.1 5 XTAL2 6 XTAL1 7 INT0/P3.2 8 INT1/P3.3 9 CLKOUT0/ECI/T0/P3.4 10    CLKOUT1/PWM1/PCA1/T1/P3.5 11                P2.4 12 P2.5 13 VSS 14 SKDIP-28(窄体)/ SOP-28 P2.2 28 VDD 27 P2.1 26 P2.0 25 P1.7/ADC7 24 P1.6/ADC6 23 P1.5/ADC5 22 P1.4/ADC4 21 P1.3/ADC3 20 P1.2/ADC2 19 P1.1/ADC1 18 P1.0/ADC0 17 P3.7/PCA0/PWM0 16 P2.7 15 P2.6 47pF 以上 10K   0V 10K   1/2 Vcc 10K   2/3 Vcc 10K   3/4 Vcc 10K   4/5 Vcc A/D 转换在 P1 口, P1.0 - P1.7 共八路 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  144 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243              7.4  A/D 转换模块的参考电压源     STC12C5201AD 系列单片机的参考电压源是输入工作电压 Vcc,所以一般不用外接参考电压源。如 7805 的输出电压是 5V,但实际电压可能是 4.88V 到 4.96V,用户需要精度比较高的话,可在出厂时将实际测出 的工作电压值记录在单片机内部的 E E P R O M 里面,以供计算。     如果有些用户的 Vcc 不固定,如电池供电,电池电压在 5.3V-4.2V 之间漂移,则 Vcc 不固定,就需要 在 8 路 A/D 转换的一个通道外接一个稳定的参考电压源,来计算出此时的工作电压 Vcc,再计算出其他几路 A / D 转换通道的电压。     如可在 A D C 转换通道的第七通道外接一个 1 . 2 5 V (或 1 V ,或...)的基准参考电压源,由此求出此 时的工作电压 V c c,再计算出其它几路 A / D 转换通道的电压。               7.5  一个完整的 A/D 转换测试程序 ;/* ---  STC International Limited ---------------------------------------------------- */ ;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ---------------------------------------- */ ;/* ---  演示 STC12C5201AD 系列 MCU 的 A/D 转换功能 ------------------------------------ */ ;/* ---  Mobile: 13922805190 ---------------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ----------------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ----------------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ---------------------------------------------------------- */ ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;本程序用宏晶的 STC-ISP Ver 3.0A.PCB 的下载编程工具测试通过,相关的 A/D 转换结果在 P1 口上显示 ;转换结果也以 16  进制形式输出到串行口,可以用串行口调试程序观察输出结果。 ;时钟 18.432MHz, 波特率 = 9600。 ;转换结果也在 P1 口利用 LED 显示出来, 方便观察。 LED_MCU_START   EQU  P3.7 ADC_CONTR  EQU  0BCH   ;A/D 转换寄存器 ADC_RES   EQU  0BDH   ;8 位 A/D 转换结果寄存器 P1ASF      EQU  9DH    ;P1 口中的相应位作为模拟功能使用时的控制寄存器,如做 A/D 用,相应位要置 1 ADC_Power_On_Speed_Channel_0 EQU 11100000B    ;P1.0 作为 A/D 输入 ADC_Power_On_Speed_Channel_1 EQU 11100001B    ;P1.1 作为 A/D 输入 ADC_Power_On_Speed_Channel_2 EQU 11100010B    ;P1.2 作为 A/D 输入 ADC_Power_On_Speed_Channel_3 EQU 11100011B    ;P1.3 作为 A/D 输入 ADC_Power_On_Speed_Channel_4 EQU 11100100B    ;P1.4 作为 A/D 输入 ADC_Power_On_Speed_Channel_5 EQU 11100101B    ;P1.5 作为 A/D 输入 ADC_Power_On_Speed_Channel_6 EQU 11100110B    ;P1.6 作为 A/D 输入 ADC_Power_On_Speed_Channel_7 EQU 11100111B    ;P1.7 作为 A/D 输入 ;------------------------------------------------- ;定义变量 ADC_Channel_0_Result     EQU 30H    ;0 通道 A/D 转换结果 ADC_Channel_1_Result     EQU 31H    ;1 通道 A/D 转换结果 ADC_Channel_2_Result     EQU 32H    ;2 通道 A/D 转换结果 ADC_Channel_3_Result     EQU 33H    ;3 通道 A/D 转换结果 ADC_Channel_4_Result     EQU 34H    ;4 通道 A/D 转换结果 ADC_Channel_5_Result     EQU 35H    ;5 通道 A/D 转换结果 ADC_Channel_6_Result     EQU 36H    ;6 通道 A/D 转换结果 ADC_Channel_7_Result     EQU 37H    ;7 通道 A/D 转换结果 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  145 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;--------------------------------------------------     ORG   0000H     LJMP  MAIN     ORG   0050H MAIN:     CLR   LED_MCU_START             ;MCU 工作指示灯 LED_MCU_START  EQU P3.7     MOV   SP, #7FH                  ;设置堆栈     ACALL Initiate_RS232            ;初始化串口     ACALL ADC_Power_On              ;开 ADC 电源, 第一次使用时要打开内部模拟电源                                    ;开 ADC 电源, 可适当加延时,1mS 以内就足够了     ACALL Set_P12_ASF               ;设置 P1.2 为模拟功能口     ACALL Set_ADC_Channel_2         ;设置 P1.2 作为 A/D 转换通道     ACALL Get_AD_Result             ;测量电压并且取 A/D 转换结果     ACALL Send_AD_Result            ;发送转换结果到 PC 机     ACALL Set_P12_Normal_IO         ;设置 P1.2 为普通 IO     MOV   A, ADC_Channel_2_Result   ;用 P1 口显示 A/D 转换结果     CPL   A     MOV   P1, A Wait_Loop:     SJMP  Wait_Loop                 ;停机 ;------------------------------------------------------------- ;------------------------------------------------------------- ;------------------------------------------------------------- ;------------------------------------------------------------- Initiate_RS232:                     ;串口初始化     CLR   ES                        ;禁止串口中断     MOV   TMOD, #20H                ;设置 T1 为波特率发生器     MOV   SCON, #50H                ;0101,0000 8 位数据位, 无奇偶校验     MOV   TH1, #0FBH                ;18.432MHz 晶振, 波特率 = 9600     MOV   TL1, #0FBH     SETB  TR1                       ;启动 T1     RET ;-------------------------------------------------------------- Send_Byte:     CLR   TI     MOV   SBUF, A Send_Byte_Wait_Finish:     JNB   TI, Send_Byte_Wait_Finish     CLR   TI     RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  146 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;-------------------------------------------------------------- ADC_Power_On:     PUSH  ACC     ORL   ADC_CONTR, #80H           ;开 A/D 转换电源     MOV   A, #20H     ACALL Delay                    ;开 A/D 转换电源后要加延时,1mS 以内就足够了     POP   ACC     RET ;------------------------------------------------------------- ;设置 P1.2 为模拟功能 Set_P12_ASF:     PUSH  ACC     MOV   A, #00000100B     ORL   P1ASF, A     POP   ACC     RET ;------------------------------------------------------------- ;设置 P1.2 为普通 IO Set_P12_Normal_IO:     PUSH  ACC     MOV   A, #11111011B     ANL   P1ASF, A     POP   ACC     RET ;------------------------------------------------------------- Set_ADC_Channel_2:     MOV   ADC_CONTR, #ADC_Power_On_Speed_Channel_2                     ;选择 P1.2 作为 A/D 转换通道     MOV   A, #05H   ;更换 A/D 转换通道后要适当延时, 使输入电压稳定                     ;以后如果不更换 A/D 转换通道的话, 不需要加延时     ACALL Delay     ;切换 A/D 转换通道,加延时 20uS~200uS 就可以了,与输入电压源的内阻有关                     ;如果输入电压信号源的内阻在 10K 以下,可不加延时     RET ;------------------------------------------------------------- Send_AD_Result:     PUSH  ACC     MOV   A, ADC_Channel_2_Result   ;取 AD 转换结果     ACALL Send_Byte                 ;发送转换结果到 PC 机     POP   ACC     RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  147 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;---------------------------------------------------------- Get_AD_Result:     PUSH  ACC                       ;入栈保护     MOV   ADC_RES, #0     ORL   ADC_CONTR, #00001000B     ;启动 AD 转换     NOP   ;在对 ADC_CONTR 寄存器进行写操作后,要加 4 个空操作延时,才能够正确读到 ADC_CONTR 的值     NOP   ;在对 ADC_CONTR 寄存器进行写操作后,要加 4 个空操作延时,才能够正确读到 ADC_CONTR 的值     NOP   ;在对 ADC_CONTR 寄存器进行写操作后,要加 4 个空操作延时,才能够正确读到 ADC_CONTR 的值     NOP   ;在对 ADC_CONTR 寄存器进行写操作后,要加 4 个空操作延时,才能够正确读到 ADC_CONTR 的值 Wait_AD_Finishe:     MOV   A, #00010000B             ;判断 AD 转换是否完成     ANL   A, ADC_CONTR     JZ    Wait_AD_Finishe           ;AD 转换尚未完成, 继续等待     ANL   ADC_CONTR, #11100111B     ;清 0 ADC_FLAG, ADC_START 位, 停止 A/D 转换     MOV   A, ADC_RES     MOV   ADC_Channel_2_Result, A   ;保存 AD 转换结果     POP   ACC     RET ;--------------------------------------------------------------- Delay:     PUSH  02                        ;将寄存器组 0 的 R2 入栈     PUSH  03                        ;将寄存器组 0 的 R3 入栈     PUSH  04                        ;将寄存器组 0 的 R4 入栈     MOV   R4, A Delay_Loop0:     MOV   R3, #200              ;2 CLOCK  ---------------------+ Delay_Loop1:                    ;                              |     MOV   R2, #249              ;2 CLOCK  ------+              | Delay_Loop:                     ;               | 1002 CLOCK   |200406 CLOCK     DJNZ  R2, Delay_Loop        ;4 CLOCK        |              |     DJNZ  R3, Delay_Loop1       ;4 CLOCK  ------+              |     DJNZ  R4, Delay_Loop0       ;4 CLOCK  ---------------------+     POP   04     POP   03     POP   02     RET ;----------------------------------------------------------------     END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  148 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243      第八章  STC12 系列单片机的 PCA/PWM 应用                8.1  PCA/PWM寄存器列表 STC12C5201AD 系列 1T  8051 单片机 PCA/PWM 特殊功能寄存器表    PCA/PWM SFRs Mnemonic Add Name   7  6  5  4 CF  CIDL  3  2 1  0 Reset value CCON D8h PCA Control Register CMOD D9h PCA Mode Register  CR - - -  -  - - CPS2 - CCF1 CCF0 00xx,xx00  CPS1 CPS0 ECF 0xxx,0000 CCAPM0 DAh PCA Module 0 Mode Register - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 CCAPM1 DBh PCA Module 1 Mode Register - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 CL E9h PCA Base Timer Low 0000,0000 CH F9h PCA Base Timer High 0000,0000 CCAP0L EAh PCA Module-0 Capture Register Low 0000,0000 CCAP0H FAh PCA Module-0 Capture Register High 0000,0000 CCAP1L EBh PCA Module-1 Capture Register Low 0000,0000 CCAP1H FBh PCA Module-1 Capture Register High 0000,0000 PCA_PWM0 F2h PCA PWM Mode Auxiliary Register 0 - - - - - - EPC0H EPC0L xxxx,xx00 PCA_PWM1 F3h PCA PWM Mode Auxiliary Register 1 - - - - - - EPC1H EPC1L xxxx,xx00 CMOD - PCA 模式寄存器(地址:D9H) 位 7 6 5 4 3 2 1 0 符 号 CIDL - - - CPS2 CPS1 CPS0 ECF CMOD - PCA 模式  寄存器的位描述  (地址:D9H) 位 符号 描述 7 CIDL 计 数 器 阵 列 空 闲 控 制 : CIDL=0时 , 空 闲 模 式 下 PCA计 数 器 继 续 工 作 。 CIDL= 1 时 , 空 闲 模 式 下 PCA计 数 器 停 止 工 作 。 6 - 4 - 3- 1 CPS2,CPS1,CPS0 0 ECF 保留为将来之用。 PCA计 数 脉 冲 选 择 ( 见 下 表 ) 。 PCA计 数 溢 出 中 断 使 能 : ECF=1时 , 使 能 寄 存 器 CCON  CF位 的 中 断 。 ECF=0时 , 禁止该功能。 CMOD - PCA 计数器阵列的计数脉冲选择  (地址:D9H) CPS2 CPS1 CPS0 选择PCA/PWM时钟源输入 0 0 0 0,系统时钟,Fosc/12 0 0 1 1,系统时钟,Fosc/2 0 1 0 2,定时器0的溢出,可以实现可调频率的PWM输出 0 1 1 3,ECI/P3.4脚的外部时钟输入(最大速率=Fosc/2) 1 0 0 4,系统时钟,Fosc 1 0 1 5,系统时钟/4,Fosc/4 1 1 0 6,系统时钟/6,Fosc/6 1 1 1 7,系统时钟/8,Fosc/8 CPS2/CPS1/CPS0 = 1/0/0 时,PCA/PWM 的时钟源是 Fosc,不用 Timer0,PWM 的频率为 Fosc/256 如果要得到系统时钟 /3 来作为 PCA 的时钟源,应让 T0 工作在 1T 模式,记数 3 个脉冲即产生溢出。 如果此时使用内部 RC 作为系统时钟(室温情况下,5V 单片机为 11MHz ~15.5MHz),可以输出 14K ~19K 频率的 PWM。用 T0 的溢出可对系统时钟进行 1 ~256 级分频 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  149 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 CCON - PCA 控制寄存器的位分配  (地址:D8H) 位 7 6 5 4 3 2 1 0 符 号 CF CR - - - - CCF1 CCF0 CCON - PCA 控制寄存器的位描述  (地址:D8H) 位 符号 描述 7 CF PCA计 数 器 阵 列 溢 出 标 志 。 计 数 值 翻 转 时 该 位 由 硬 件 置 位 。 如 果 CMOD寄 存 器 的 ECF位 置 位 , CF标 志 可 用 来 产 生 中 断 。 CF位 可 通 过 硬 件 或 软 件 置 位 , 但 只 可 通 过 软 件 清 零 。 6 CR PCA计 数 器 阵 列 运 行 控 制 位 。 该 位 通 过 软 件 置 位 , 用 来 起 动 PCA计 数 器 阵 列 计 数 。 该 位 通 过 软 件 清 零 , 用 来 关 闭 PCA计 数 器 。 5 - 4 - 保留位,保留为将来使用。 3     - 保留位,保留为将来使用。 2     - 保留位,保留为将来使用。 1 CCF1 PCA模 块 1中 断 标 志 。 当 出 现 匹 配 或 捕 获 时 该 位 由 硬 件 置 位 。 该 位 必 须 通 过 软 件 清 零 。 0 CCF0 PCA模 块 0中 断 标 志 。 当 出 现 匹 配 或 捕 获 时 该 位 由 硬 件 置 位 。 该 位 必 须 通 过 软 件 清 零 。 CCAPMn - PCA 比较 / 捕获模块寄存器的位分配(CCAPM0 地址:0DAH;CCAPM1 地址:0DBH) 位 7 6 5 4 3 2 1 0 符 号 - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn CCAPMn - PCA 比较 / 捕获模块寄存器的位描述  (  n:0,1  ) 位 符号 描 述                       n  :  0 , 1 7 - 6 ECOMn 使 能 比 较 器 。 ECOMn= 1时 使 能 比 较 器 功 能 。 5 CAPPn 正 捕 获 。 C A P P n = 1时 使 能 上 升 沿 捕 获 。 4 CAPNn 负 捕 获 。 C A P N n = 1时 使 能 下 降 沿 捕 获 。 3 MATn 匹 配 。 当 MATn= 1时 , PCA计 数 值 与 模 块 的 比 较 /捕 获 寄 存 器 的 值 的 匹 配 将 置 位 CCON寄 存 器 的 中 断 标 志 位 CCFn。 2 TOGn 翻 转 。 当 TOGn= 1时 , 工 作 在 PCA高 速 输 出 模 式 , PCA计 数 器 的 值 与 模 块 的 比 较 / 捕 获 寄 存 器 的 值 的 匹 配 将 使 C E X n脚 翻 转 。 (CEX0/PCA0/PWM0/P3.7,CEX1/PCA0/PWM0/P3.5) 1 PWMn 脉 宽 调 节 模 式 。 当 P W M n = 1 时 , 使 能 C E X n脚 用 作 脉 宽 调 节 输 出 。 0 ECCFn 保留为将来之用。 使 能 C C F n 中 断 。 使 能 寄 存 器 C C O N 的 比 较 /捕 获 标 志 C C F n , 用 来 产 生 中 断 。 P C A 模块工作模式(C C A P M n 寄存器,n :0 , 1 ) - ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn 模块功能 0 0 0 0 0 0 0 无此操作 1 0 0 0 0 1 0 8位 PWM,无 中 断 1 1 0 0 0 1 1 8位 PWM输 出 , 由 低 变 高 可 产 生 中 断 1 0 1 0 0 1 1 8位 PWM输 出 , 由 高 变 低 可 产 生 中 断 1 1 1 0 0 1 1 8位 PWM输 出 , 由 低 变 高 或 者 由 高 变 低 均 可 产生中断 X 1 0 0 0 0 X 16位 捕 获 模 式 , 由 CEXn/PCAn的 上 升 沿 触 发 X 0 1 0 0 0 X 16位 捕 获 模 式 , 由 CEXn/PCAn的 下 降 沿 触 发 X 1 1 0 0 0 X 16位 捕 获 模 式 , 由 CEXn/PCAn的 跳 变 触 发 1 0 0 1 0 0 X 16位 软 件 定 时 器 1 0 0 1 1 0 X 16位 高 速 输 出 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  150 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                  8.2  PCA/PWM功能介绍 STC12xx 系列单片机有 2 路可编程计数器阵列 PCA/PWM(其中 STC12C5A60S2 系列单片机可以通过 AUXR1 寄 存器设置 PCA/PWM 从 P 1 口切换到 P 4 口),详情请参阅 P 4 口的使用相关章节内容。     PCA 含有一个特殊的 16 位定时器,有 2 个 16 位的捕获 / 比较模块与之相连。每个模块可编程工作在 4 种模式下:上升 / 下降沿捕获、软件定时器、高速输出或可调制脉冲输出。 STC12C5201AD 系列: 模块 0 连接到 P3.7/CCP0,模块 1 连接到 P3.5/CCP1。 STC12C5A60S2 系列: 模块 0 连接到 P1.3/CCP0(可以切换到 P4.2/CCP0/MISO 口),                   模块 1 连接到 P1.4/CCP1(可以切换到 P4.3/CCP1/SCLK 口)。 寄存器 CH 和 CL 的内容是正在自由递增计数的 16 位 PCA 定时器的值。PCA 定时器是 2 个模块的公共时间基 准,可通过编程工作在:1 / 1 2 振荡频率、1 / 8 振荡频率、1 / 6 振荡频率、1 / 4 振荡频率、1 / 2 振荡频 率、振荡频率、定时器 0 溢出或 ECI 脚的输入(STC12C5201AD 系列在 P3.4 口,STC12C5A60S2 系列在 P1.2 口) 。定时器的计数源由 CMOD SFR 的 CPS2,CPS1 和 CPS0 位来确定(见 CMOD 特殊功能寄存器说 明 )。 P3.7/CEX0/PCA0/PWM0(STC12C5201AD系列) Module 0 16 Bit P1.3/CEX0/PCA0/PWM0(STC12C5A60S2系列) PCA Timer/Counter P3.5/CEX1/PCA1/PWM1(STC12C5201AD系列) Module 1 P1.4/CEX1/PCA1/PWM1(STC12C5A60S2系列) Programmable  Counter  Array Fosc/1 TO PCA Module Fosc/2 Fosc/4 Fosc/6 CH Fosc/8 CL  PCA Interrupt 16-Bit counter Fosc/12   Timer 0 overflow External  input    ECI (P3.4) IDLE CIDL - - - CPS2 CPS1 CPS0 ECF CMOD CF CR - - - - CCF1 CCF0 CCON PCA  Timer/Counter 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  151 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    CMOD SFR 还有 2 个位与 PCA 相关。它们分别是:CIDL,空闲模式下允许停止 PCA;ECF,置位时, 使能 PCA 中断,当 PCA 定时器溢出将 PCA 计数溢出标志 CF(CCON SFR)置位。    CCON SFR 包含 PCA 的运行控制位(CR)和 PCA 定时器标志(CF)以及各个模块的标志(CCF1/ C C F 0 )。通过软件置位 C R 位(C C O N . 6 )来运行 P C A 。C R 位被清零时 P C A 关闭。当 P C A 计数器溢出时, CF 位(CCON.7)置位,如果 CMOD 寄存器的 ECF 位置位,就产生中断。CF 位只可通过软件清除。CCON 寄 存器的位 0 ~3 是 P C A 各个模块的标志(位 0 对应模块 0 ,位 1 对应模块 1 ),当发生匹配或比较时由硬 件置位。这些标志也只能通过软件清除。所有模块共用一个中断向量。P C A 的中断系统如图所示。    PCA 的每个模块都对应一个特殊功能寄存器。它们分别是:模块 0 对应 CCAPM0,模块 1 对应 CCAPM1, 特殊功能寄存器包含了相应模块的工作模式控制位。    当模块发生匹配或比较时,ECCFn 位(CCAPMn.0,n = 0,1 由工作的模块决定)使能 CCON SFR 的 C C F n 标志来产生中断。    PWM(CCAPMn.1)用来使能脉宽调制模式。    当 PCA 计数值与模块的捕获 / 比较寄存器的值相匹配时,如果 TOG 位(CCAPMn.2)置位,模块的 C E X n 输出将发生翻转。    当 PCA 计数值与模块的捕获 / 比较寄存器的值相匹配时,如果匹配位 MATn(CCAPMn.3)置位,CCON 寄存器的 CCFn 位将被置位。    CAPNn(CCAPMn.4)和 CAPPn(CCAPMn.5)用来设置捕获输入的有效沿。CAPNn 位使能下降沿有 效,C A P P n 位使能上升沿有效。如果两位都置位,则两种跳变沿都被使能,捕获可在两种跳变沿产生。    通过置位 CCAPMn 寄存器的 ECOMn 位(CCAPMn.6)来使能比较器功能。    每个 PCA 模块还对应另外两个寄存器,CCAPnH 和 CCAPnL。当出现捕获或比较时,它们用来保存 16 位的计数值。当 P C A 模块用在 P W M 模式中时,它们用来控制输出的占空比。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  152 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 PCA 捕获模式    要使一个 PCA 模块工作在捕获模式(下图),寄存器 CCAPMn 的两位(CAPNn 和 CAPPn)或其中任何 一位必须置 1。对模块的外部 CEXn 输入(STC12C5201AD 系列:CEX0/P3.7,CEX1/P3.5,STC12C5A60S2 系列 CEX0/P1.3,CEX1/P1.4)的跳变进行采样。当采样到有效跳变时,PCA 硬件就将 PCA 计数器阵列寄 存器(C H 和 C L )的值装载到模块的捕获寄存器中(C C A P n L 和 C C A P n H )。 CF CR – - CCF3 CCF2 CCF0 C C O N (C 0 h ) CCF1 PCA  interrupt CH CL CCAPnH CCAPnL Capture CEXn – ECOMn CAPPn CAPNn MATn TOGn 0 0 0   PCA Capture Mode (PCA PWMn ECCFn  CCAPMn,n=0,1 地址:DAh,DBh 0 捕获模式图) 如果 CCON SFR 的位 CCFn 和 CCAPMn SFR 的位 ECCFn 位被置位,将产生中断。 16 位软件定时器模式    通过置位 CCAPMn 寄存器的 ECOM 和 MAT 位,可使 PCA 模块用作软件定时器(下图)。PCA 定时器的值 与模块捕获寄存器的值相比较,当两者相等时,如果位 C C F n(在 C C O N   S F R 中)和位 E C C F n(在 C C A P M n   S F R 中)都置位,将产生中断。 先写 后写 Write to CCAPnL Write to CCAPnH 0 CF CR – - - - CCF1 CCF0 CCON 1    PCA Interrupt CCAPnH CCAPnL (To CCFn) Enable 16-Bit Comparator CL CH – Match ECOMn CAPPn CAPNn MATn TOGn PWMn 0 0 1 0 0 ECCFn CCAPMn PCA Software Timer Mode/ 软件定时器模式 /PCA 比较模式 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  153 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 高速输出模式    该模式中(下图),当 PCA 计数器的计数值与模块捕获寄存器的值相匹配时,PCA 模块的 CEXn 输出 将发生翻转。要激活高速输出模式,模块 CCAPMn SFR 的 TOG,MAT 和 ECOM 位必须都置位。 先写 Write to CCAPnL 0 后写 Write to CCAPnH CF CR – - CCF3 CCF2 CCF1 CCF0 CCON   PCA Interrupt 1 CCAPnH CCAPnL (To CCFn) Enable 16-Bit comparator Match Toggle CL CH 翻转 – ECOMn CAPPn CAPNn MATn 0 0 1 TOGn PWMn 1 ECCFn CEXn CCAPMn 0 PCA High-Speed Output Mode / PCA 高速输出模式 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  154 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 脉宽调节模式(PWM)    所有 PCA 模块都可用作 PWM 输出(下图)。输出频率取决于 PCA 定时器的时钟源。 EPCnH CCAPnH 输出 0 (0,CL) <  (EPCnL,CCAPnL) EPCnL PWMn CCAPnL (0,CL) >= (EPCnL,CCAPnL) 输出 1 Enable   9-BIT COMPARATOR C P S 2 / C P S 1 / C P S 0   =   1 / 0 / 0 时,P C A / P W M 的 时钟源是 F o s c ,不用 T i m e r 0 , P W M 的频率为 F o s c / 2 5 6 , 如果要使用系统时钟 / 3 来作为 P C A 的时钟源,应让 T 0 工作在 1 T 模式,记数 3 个 脉冲即产生溢出. 此时使用内部 RC 作为系统时钟, 可 以 输 出14K~19K 频率的 PWM。 用 T0 的溢出可对系统时钟进行 1~256 级分频   CL   0 CL overflow – ECOMn CAPPn 1 CAPNn 0 MATn 0 0 TOGn PWMn ECCFn 0 1 0 CCAPMn, n=0,1 PCA PWM mode / 可调制脉冲宽度输出模式    由于所有模块共用仅有的 PCA 定时器,所有它们的输出频率相同。各个模块的输出占空比是独立变化 的,与使用的捕获寄存器{E P C n L ,C C A P n L }有关。当  C L   S F R 的值小于{E P C n L ,C C A P n L }时, 输出为低,当 PCA CL SFR 的值等于或大于{EPCnL,CCAPnL}时,输出为高。当 CL 的值由 FF 变为 0 0 溢出时,{E P C n H ,C C A P n H }的内容装载到{E P C n L ,C C A P n L }中。这样就可实现无干扰地更新 PWM。要使能 PWM 模式,模块 CCAPMn 寄存器的 PWMn 和 ECOMn 位必须置位。    由于 PWM 是 8 位的,所以: PWM 的频率 = PCA 时钟输入源频率 256    PCA 时钟输入源可以从以下 4 种中选择一种: Fosc, Fosc/2, Fosc/4,Fosc/6,Fosc/8,Fosc/12,定时器 0 的溢出,ECI/P3.4 输入    举例:要求 PWM 输出频率为 38KHz,选 Fosc 为 PCA/PWM 时钟输入源,求出 Fosc 的值  由计算公式 38000 = Fosc / 256 ,得到外部时钟频率 Fosc = 38000 x 256 x 1 =9,728,000    如果要实现可调频率的 PWM 输出,可选择定时器 0 的溢出率或者 ECI 脚的输入作为 PCA/PWM 的时钟输入源 当 EPCnL = 0 及 ECCAPnL = 00H 时,PWM 固定输出高 当 EPCnL = 1 及 CCAPnL = 0FFH 时,PWM 固定输出低    当某个 I/O 口作为 PWM 使用时,该口的状态: PWM之 前 口 的 状 态 PWM输 出 时 口 的 状 态 弱 上 拉  / 准 双 向 口 强 推 挽 输 出  / 强 上 拉 输 出  , 要 加 输 出 限 流 电 阻 1K-10K 强 推 挽 输 出  / 强 上 拉 输 出 强 推 挽 输 出  / 强 上 拉 输 出  , 要 加 输 出 限 流 电 阻 1K-10K 仅 为 输 入  / 高 阻 PWM无 效 开漏 开漏 限流电阻用 10K 到 1K 普通 I/O 口 接负载 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  155 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243            8.3  用 PCA 功能扩展外部中断的示例程序 ;/* ---  STC International Limited ---------------------------------------------------- */ ;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 --------------------------------------- */ ;/* ---  使用 STC12C5201AD/STC12C5A60S2 系列单片机 PCA 功能扩展外部中断的示例程序 ------ */ ;/* ---  Mobile: 13922805190 ---------------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ----------------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ----------------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ---------------------------------------------------------- */ ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ;------------------------------------------------------------------------------ ;P3.7(PCA 模块 0) 扩展为下降沿外部中断, ;P3.5(PCA 模块 1) 扩展为上升沿 / 下降沿都可触发的外部中断。 ; ;1) 汇编源程序, 把汇编程序产生的的程序代码下载到单片机中, 上电运行本程序。 ;2) 将 P3.7/PCA0 短路到地, 这一动作产生一个下降沿,此时本演示程序对 P1.6 取反, ;   P1.6 控制的 LED 灯将会变化一次。 ;3) 改变 P3.5/PCA1 的外部高低状态(由高到低 -- 产生下降沿; 由低到高 -- 产生上升沿), ;   本演示程序在 P3.5/PCA1 的下降沿 / 上升沿都产生中断,此时本演示程序对 P1.5 取反, ;   P1.5 控制的 LED 灯状态将会发生变化。 ;   所谓 LED 灯状态发生变化是指 LED 由灭变亮或由亮变灭。 ;------------------------------------------------------------------------------ ;声明 STC12C5201AD 系列 MCU 特殊功能寄存器地址 IPH      EQU   0B7H             ;中断优先级高位寄存器 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 计数器溢出(CH,CL 由 FFFFH 变为 0000H)标志,                                 ;PCA 计数器溢出后由硬件置位,必须由软件清 0。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  156 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------ 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    外部晶体频率 /12。 ;            0      1    外部晶体频率 /2。 ;            1      0    Timer 0 溢出脉冲, ;                        Timer 0 还可通过 AUXR 寄存器设置成工作在 12T 或 1T 模式。 ;            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 位数。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  157 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------ 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   00H 未启用任何功能。 ;  x      1      0     0     0     0     x   21H 16 位 CEXn 上升沿触发捕捉功能。 ;  x      0      1     0     0     0     x   11H 16 位 CEXn 下降沿触发捕捉功能。 ;  x      1      1     0     0     0     x   31H 16 位 CEXn 边沿(上、下沿)触发捕捉功能。 ;  1      0      0     1     0     0     x   49H 16 位软件定时器。 ;  1      0      0     1     1     0     x   4DH 16 位高速脉冲输出。 ;  1      0      0     0     0     1     0   42H 8 位 PWM。 ;------------------------------------------------------------------------------ ;定义单片机管脚 LED_MCU_START       EQU P1.7 LED_PCA_INT0        EQU P1.6 LED_PCA_INT1        EQU P1.5 ;------------------------------------------------------------------------------     ORG   0000H     LJMP  MAIN ;------------------------------------------------------------------------------     ORG   003BH                 ;interrupt 7(0,1,2,3,4,5,6,7)     LJMP  PCA_Interrupt ;------------------------------------------------------------------------------     ORG   0050H MAIN:     MOV   SP, #7FH     CLR   LED_MCU_START         ;点亮 LED_MCU_START LED, 表示程序正在运行     LCALL PCA_Initiate          ;初始化 PCA WAIT:     SJMP  WAIT                  ;跳转到本行,无限循环。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  158 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------------------------------------------------------------ PCA_Initiate:     MOV   CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作                            ;PCA 时钟源为 fosc/12                            ;禁止 PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H 时)中断     MOV   CCON, #00H       ;CF = 0,清 0 PCA 计数器溢出中断请求标志位                            ;CR = 0, 不允许 PCA 计数器计数                            ;清 0 PCA 各模块中断请求标志位,如 CCF1,CCF0     MOV   CL, #00H         ;清 0 PCA 计数器     MOV   CH, #00H ;------------------------- ;设置模块 0     MOV   CCAPM0, #11H ;设置 PCA 模块 0 下降沿触发捕捉功能,ECCF0 = 1,允许产生中断 ;   MOV   CCAPM0, #21H ;如果送的是 #21h, 则 PCA 模块 0 为上升沿触发,ECCF0 = 1,允许产生中断 ;------------------------- ;设置模块 1     MOV   CCAPM1, #31H ;设置 PCA 模块 1 上升沿 / 下降沿均可触发的捕捉功能,ECCF1 = 1,可产生中断 ;-------------------------     SETB  EA                    ;开整个单片机所有中断共享的总中断控制位     SETB  CR                    ;启动 PCA 计数器(CH,CL)计数     RET ;------------------------------------------------------------------------------ PCA_Interrupt:     PUSH  ACC     PUSH  PSW     JNB   CCF0, Not_PCA0_Else_PCA1 ;如果 CCF0 不等于 1 就不是 PCA 模块 0 中断                                    ;就直接去判是否是 PCA 模块 1 中断     ;模块 0 中断服务程序     CPL   LED_PCA_INT0             ;P1.6 LED 变化一次, 表示 PCA 模块 0 发生了一次中断     CLR   CCF0                     ;清 PCA 模块 0 中断标志 Not_PCA0_Else_PCA1:     JNB   CCF1, PCA_Interrupt_Exit ;如果 CCF1 不等于 1 就不是 PCA 模块 1 中断                                    ;就立即退出     ;模块 1 中断服务程序     CPL   LED_PCA_INT1             ;P1.5 LED 变化一次, 表示 PCA 模块 1 发生了一次中断     CLR   CCF1                     ;清 PCA 模块 1 中断标志 PCA_Interrupt_Exit:     POP   PSW     POP   ACC     RETI ;------------------------------------------------------------------------------     END ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  159 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243              8.4  用 PCA 功能做定时器的示例程序 ;/* ---  STC International Limited --------------------------------------------------- */ ;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 -------------------------------------- */ ;/* ---   PCA_12C5201_ASM_Timer ------------------------------------------------------ */ ;/* ---  使用 STC12C5201AD 系列单片机 PCA 功能做定时器的示例程序 --------------------- */ ;/* ---  STC12C5201AD, STC12C5202AD, STC12C5203AD ------------------------------------ */ ;/* ---  STC12C5204AD, STC12C5206AD, STC12C5206AD ------------------------------------ */ ;/* ---  Mobile: 13922805190 --------------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ---------------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ---------------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com -------------------------------------------------------- */ ;如果要在程序中使用或在文章中引用该程序,请在程序中或文章中注明使用了宏晶科技的资料及程序 ;本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ;------------------------------------------------------------------------------ ;晶振频率 Fosc = 18.432MHz,在 P1.5 输出脉冲宽度为 1 秒钟的方波 ;------------------------------------------------------------------------------ ;声明 STC12C5201AD 系列 MCU 特殊功能寄存器地址 IPH      EQU   0B7H             ;中断优先级高位寄存器 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 计数器溢出(CH,CL 由 FFFFH 变为 0000H)标志,                                 ;PCA 计数器溢出后由硬件置位,必须由软件清 0。 ;------------------------ CMOD     EQU   0D9H             ;PCA 工作模式寄存器。 ;CMOD.7     CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。 ;CMOD.2 PS1: PCA 计数器计数脉冲源选择位 1。 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。 ;CMOD.1 CPS0: PCA 计数器计数脉冲源选择位 0。 ; CPS2 CPS1 CPS0 ; 0 0 0 ; 0 0 1    系统时钟频率 /2 ; 0 1 0 Timer 0 溢出脉冲 ; 0 1 1 ECI/P3.4 脚的外部时钟输入,最大速率 = Fosc/2 ; 1 0 0 系统时钟频率 ; 1 0 1 系统时钟频率 /4 ; 1 1 0 系统时钟频率 /6 ; 1 1 1 系统时钟频率 /8 系统时钟频率 /12 ;CMOD.0     ECF: PCA 计数器溢出中断允许位, 1-- 允许 CF(CCON.7) 产生中断。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  160 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------ 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 的工作模式寄存器。 ;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 触发中断。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  161 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn ;  0      0      0     0     0     0     0   00H, 未启用任何功能。 ;  1      0      0     0     0     1     0   42H, 8 位 PWM ;  1      1      0     0     0     1     1   63H, 8 位 PWM,由低变高可产生中断,上升沿中断 ;  1      0      1     0     0     1     1   53H, 8 位 PWM,由高变低可产生中断,下降沿中断 ;  1      1      1     0     0     1     1   73H, 8 位 PWM,由低变高和由高变低均可产生中断 ;  x      1      0     0     0     0     x   21H, 16 位 CEXn 上升沿触发捕捉功能 ;  x      0      1     0     0     0     x   11H, 16 位 CEXn 下降沿触发捕捉功能 ;  x      1      1     0     0     0     x   31H, 16 位 CEXn 边沿(上、下沿)触发捕捉功能 ;  1      0      0     1     0     0     x   49H, 16 位软件定时器 ;  1      0      0     1     1     0     x   4DH, 16 位高速脉冲输出 ;------------------------------------------------------------------------------ ;定义单片机管脚 LED_MCU_START       EQU P1.7 LED_5mS_Flashing    EQU P1.6 LED_1S_Flashing     EQU P1.5 ;------------------------------------------------------------------------------ ;定义常量 ;Channe0_5mS_H, Channe0_5mS_L 的计算方法见 PCA 中断服务程序内的注释 Channe0_5mS_H       EQU 1EH     ;模块 0 5mS 定时常数高位 Channe0_5mS_L       EQU 00H     ;模块 0 5mS 定时常数低位 ;------------------------------------------------------------------------------ ;定义变量 Counter             EQU 30H     ;声明一个计数器,用来计数中断的次数 ;------------------------------------------------------------------------------     ORG   0000H     LJMP  MAIN     ORG   003BH                 ;interrupt 7(0,1,2,3,4,5,6,7)     LJMP  PCA_interrupt ;------------------------------------------------------------------------------     ORG   0050H MAIN:     CLR   LED_MCU_START         ;点亮 MCU 开始工作指示灯     MOV   SP, #7FH     MOV   Counter, #0           ;清 Counter 计数器     ACALL PCA_Initiate          ;初始化 PCA WAIT:     SJMP  WAIT                  ;跳转到本行,无限循环。 ;------------------------------------------------------------------------------ PCA_Initiate:     MOV   CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作                            ;PCA 时钟源为 fosc/12                            ;禁止 PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H 时)中断     MOV   CCON, #00H       ;CF = 0,清 0 PCA 计数器溢出中断请求标志位                            ;CR = 0, 不允许 PCA 计数器计数                            ;清 0 PCA 各模块中断请求标志位,如 CCF1,CCF0     MOV   CL, #00H         ;清 0 PCA 计数器     MOV   CH, #00H 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  162 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;-------------------------     ;Channe0_5mS_H, Channe0_5mS_L 的计算方法见 PCA 中断服务程序内的注释     MOV   CCAP0L, #Channe0_5mS_L ;给 PCA 模块 0 的 CCAP0L 置初值     MOV   CCAP0H, #Channe0_5mS_H ;给 PCA 模块 0 的 CCAP0H 置初值     MOV   CCAPM0, #49H    ;设置 PCA 模块 0 为 16 位软件定时器,ECCF0=1 允许 PCA 模块 0 中断         ;当[CH,CL]==[CCAP0H,CCAP0L]时,产生中断请求,CCF0=1,请求中断     SETB  EA                    ;开整个单片机所有中断共享的总中断控制位     SETB  CR                    ;启动 PCA 计数器(CH,CL)计数     RET ;------------------------------------------------------------------------------ PCA_Interrupt:     PUSH  ACC     PUSH  PSW     CPL   LED_5mS_Flashing  ;本程序 PCA 模块 0 每 5mS 中断一次, 每次进中断将该灯状态取反     ;在本程序中[CH,CL]每 12 个时钟脉冲加 1, 当[CH,CL] 增加到等于 [CCAP0H,CCAP0L]时     ;CCF0=1, 产生中断请求。如果每次 PCA 模块 0 中断后, 在中断服务程序中给     ;[CCAP0H,CCAP0L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相     ;同的。本程序中这个 " 相同的数值 " 就是 Channe0_5mS_H, Channe0_5mS_L     ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 1E00H 次才是 5mS。     ;计算 PCA 计数器计数多少次:     ;    Channe0_5mS_H, Channe0_5mS_L = T/( (1/Fosc)*12 )     ;                                 = 0.005/ ( (1/18432000)*12 )     ;                                 = 7680 (10 进制数)     ;                                 = 1E00H (16 进制数)     ;    即 Channe0_5mS_H = 1EH, Channe0_5mS_L = 00H     ;     ;   Channe0_5mS_H, Channe0_5mS_L:每次给 [CCAP0H,CCAP0L] 增加的数值(步长)     MOV   A, #Channe0_5mS_L     ;给[CCAP0H,CCAP0L] 增加一个数值     ADD   A, CCAP0L     MOV   CCAP0L, A     MOV   A, #Channe0_5mS_H     ADDC  A, CCAP0H     MOV   CCAP0H, A     CLR   CCF0                  ;清 PCA 模块 0 中断标志     INC   Counter               ;中断次数计数器 + 1     MOV   A, Counter     CLR   C     SUBB  A, #200               ;检测是否中断了 200 次(1 秒)     JC    PCA_Interrupt_Exit    ;有借位,表示 Counter 小于 200,立即跳转退出 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  163 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     MOV   Counter, #0           ;已中断了 200 次,清 0 中断次数计数器     CPL   LED_1S_Flashing       ;在 LED_1S_Flashing 输出脉冲宽度为 1 秒钟的方波 PCA_Interrupt_Exit:     POP   PSW     POP   ACC     RETI ;------------------------------------------------------------------------------     END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  164 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                8.5  PWM 输出 C 语言示例程序 /* ---  STC International Limited ------------------------------------------ */ /* ---  宏晶科技    姚永平    2006/1/6    V1.0 ----------------------------- */ /* ---  使用 STC12C5201AD 系列单片机 PWM 输出 C 语言示例程序 ----------------- */ /* ---  Mobile: 13922805190 ------------------------------------------------ */ /* ---  Fax: 0755-82944243 ------------------------------------------------- */ /* ---  Tel: 0755-82948409 ------------------------------------------------- */ /* ---  Web: www.STCMCU.com ------------------------------------------------ */ /* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ----------- */ /* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 --- */ /* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 --- */ #include<reg52.h> sfr  CCON   = 0xD8; sfr  CMOD   = 0xD9; sfr  CL     = 0xE9; sfr  CH     = 0xF9; 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){};  } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  165 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243            8.6  PCA/PWM 新增特殊功能寄存器声明 ;STC12C5201AD 特殊功能寄存器头文件, STC12C5201_PCA_SFR.ASM ;声明 STC12C5201AD 系列 MCU 特殊功能寄存器地址 IPH      EQU   0B7H              ;中断优先级高位寄存器 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。 CCF2     EQU   CCON.2           ;PCA 模块 2 中断标志, 由硬件置位, 必须由软件清 0。 CCF3     EQU   CCON.3           ;PCA 模块 3 中断标志, 由硬件置位, 必须由软件清 0。 CCF4     EQU   CCON.4           ;PCA 模块 4 中断标志, 由硬件置位, 必须由软件清 0。 CCF5     EQU   CCON.5           ;PCA 模块 5 中断标志, 由硬件置位, 必须由软件清 0。 CR       EQU   CCON.6           ;1:允许 PCA 计数器计数, 必须由软件清 0。 CF       EQU   CCON.7            ;PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H)标志,                                 ;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    外部晶体频率 /12。 ;   0    1    外部晶体频率 /2。 ;   1    0    Timer 0 溢出脉冲, ;                        Timer 0 还可通过 AUXR 寄存器设置成工作在 12T 或 1T 模式。 ;   1    1    从 ECI/P3.4 脚输入的外部时钟(STC12C5A60S2: ECI/P1.2)。 ;CMOD.0     ECF: PCA 计数器溢出中断允许位, 1-- 允许 CF(CCON.7) 产生中断。 ;------------------------ CCAP0H   EQU   0FAH             ;PCA 模块 0 的捕捉 / 比较寄存器高 8 位。 CCAP1H   EQU   0FBH             ;PCA 模块 1 的捕捉 / 比较寄存器高 8 位。 CCAP2H   EQU   0FCH             ;PCA 模块 2 的捕捉 / 比较寄存器高 8 位。 CCAP3H   EQU   0FDH             ;PCA 模块 3 的捕捉 / 比较寄存器高 8 位。 CCAP4H   EQU   0FEH             ;PCA 模块 4 的捕捉 / 比较寄存器高 8 位。 CCAP5H   EQU   0FFH             ;PCA 模块 5 的捕捉 / 比较寄存器高 8 位。 CCAP0L   EQU   0EAH             ;PCA 模块 0 的捕捉 / 比较寄存器低 8 位。 CCAP1L   EQU   0EBH             ;PCA 模块 1 的捕捉 / 比较寄存器低 8 位。 CCAP2L   EQU   0ECH             ;PCA 模块 2 的捕捉 / 比较寄存器低 8 位。 CCAP3L   EQU   0EDH             ;PCA 模块 3 的捕捉 / 比较寄存器低 8 位。 CCAP4L   EQU   0EEH             ;PCA 模块 4 的捕捉 / 比较寄存器低 8 位。 CCAP5L   EQU   0EFH             ;PCA 模块 5 的捕捉 / 比较寄存器低 8 位。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  166 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------ PCA_PWM0 EQU   0F2H             ;PCA 模块 0 PWM 寄存器。 PCA_PWM1 EQU   0F3H             ;PCA 模块 1 PWM 寄存器。 PCA_PWM2 EQU   0F4H             ;PCA 模块 2 PWM 寄存器。 PCA_PWM3 EQU   0F5H             ;PCA 模块 3 PWM 寄存器。 PCA_PWM4 EQU   0F6H             ;PCA 模块 4 PWM 寄存器。 PCA_PWM5 EQU   0F7H             ;PCA 模块 5 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 的工作模式寄存器。 CCAPM2   EQU   0DCH             ;PCA 模块 2 的工作模式寄存器。 CCAPM3   EQU   0DDH             ;PCA 模块 3 的工作模式寄存器。 CCAPM4   EQU   0DEH             ;PCA 模块 4 的工作模式寄存器。 CCAPM5   EQU   0DFH             ;PCA 模块 5 的工作模式寄存器。 ;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   00H 未启用任何功能。 ;  x      1      0      0     0     0     x   21H 16 位 CEXn 上升沿触发捕捉功能。 ;  x      0      1      0     0     0     x   11H 16 位 CEXn 下降沿触发捕捉功能。 ;  x      1      1     0     0     0     x   31H 16 位 CEXn 边沿(上、下沿)触发捕捉功能。 ;  1      0      0     1     0     0     x   49H 16 位软件定时器。 ;  1      0      0     1      1     0     x   4DH 16 位高速脉冲输出。 ;  1      0      0      0     0     1     0   42H 8 位 PWM。 ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  167 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243                8.7  PWM 输出汇编语言示例程序 ;/* ---  STC International Limited ------------------------------------------- */ ;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ------------------------------ */ ;/* ---  使用 STC12C5201AD 系列单片机 PWM 输出汇编语言示例程序 ---------------- */ ;/* ---  Mobile: 13922805190 ------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 -------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 -------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ------------------------------------------------- */ ;/* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ------------ */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 ---- */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 ---- */ ;STC12C5201AD 系列单片机 PCA 功能 PWM 示例程序,使用 18.432MHz 晶振。 ;------------------------------------------------------------ #include <..\STC12_PCA_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 ;------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  168 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 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     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        ;*** 示例程序核心语句 ;   MOV   PCA_PWM1, #03H        ;释放本行注释, PWM 输出就一直是 0, 无脉冲。 ;    SETB  EPCA_LVD              ;开 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 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  169 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 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 显示占空比,     MOV   P1, A                ;占空比 = ( pulse_width/256 ) * 100%  。     MOV   A, pulse_width    ;计算下一次输出脉冲宽度数值。     CLR   C     SUBB  A, #step     MOV   pulse_width, A     ACALL delay             ;在一段时间内保持输出脉冲宽度不变。     SJMP  PWM_loop2 PWM_b:     RET ;------------------------------------------------------------ delay:     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 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  170 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243             8.8  用 PCA 做高速脉冲输出示例程序 ;/* ---  STC International Limited -------------------------------------------- */ ;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ------------------------------- */ ;/* ---  使用 STC12C5201AD 系列单片机 高速脉冲输出功能汇编语言示例程序 --------  */ ;/* ---  Mobile: 13922805190 -------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 --------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 --------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com -------------------------------------------------- */ ;/* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ------------  */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 ----  */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 ----  */ ;****************************************************************************** ;                输出 125.0KHz 的脉冲(晶体频率 = 33.000MHz) ; ;示例程序: 使用 功能, 在 P3.5(第 9 脚)输出 ;         125.0KHz 的方脉冲。 ;------------------------------------------------------------------------------ ;    程序中定义的常量 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() 为取整数运算, 直接去掉小数。 ;****************************************************************************** ;定义 STC12C5201 系列 MCU 特殊功能寄存器 IPH      EQU   0B7H              ;中断优先级高位寄存器 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。 ;------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  171 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 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 的工作模式寄存器。 ;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。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  172 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------------------------------------------ ;定义常量 CCAPnL_Value ;CCAPnL_Value 决定了模块 1 输出脉冲的频率 f: ;        f =  Fosc / (4 * CCAPnL_Value ) ;    式中 Fosc = 晶体频率 ;    或  CCAPnL_Value  =  INT(Fosc / (4 * f) + 0.5) ;        INT() 为取整数运算。 ; ;    假定 fosc = 20MHz 时, 要求 PCA 高速脉冲输出 125KHz 的方波: ;        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  003BH                  ;interrupt 7 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 ;------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  173 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     ORG   0060H main:     MOV   SP, #0E0H             ;设置堆栈指针     ACALL PCA_init              ;调用 PCA 初始化程序 main_loop:     NOP     NOP     NOP     SJMP  main_loop ;------------------------------------------------------------ PCA_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 为高速脉冲输出模式,ECCF1=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     MOV   CCAP1L, #CCAPnL_Value ;给模块 1 置初值, 此句不可少     MOV   CCAP1H, #0 ;给模块 1 置初值, 此句不可少     ;其它中断服务可能会使模块 1 高速脉冲输出的某个周期突然变得很大,因此必须将     ;PCA 中断的优先级设置为唯一的最高级, 其它中断的优先级都要比它低。     MOV   IPH, #10000000B       ;PCA 中断的优先级设置为唯一的最高级     MOV   IP, #10000000B     SETB  EA                    ;开总中断     SETB  CR                    ;将 PCA 计数器打开     RET ;------------------------------------------------------------     END ;------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  174 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243       8.9  利用定时器 0 的溢出作为 PCA 模块的时钟输入源                --- 利用 PCA 模块 0 实现了可调频率的 PWM 输出                    --- 利用 PCA 模块 1 重新实现了一个 16 位定时器 ;/* ---  STC International Limited --------------------------------------------- */ ;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 -------------------------------- */ ;/* ---  使用 STC12C5201AD 系列单片机 定时器 0 的溢出,作为 PCA 模块的时钟输源 --  */ ;/* ---  实现了可调频率的 PWM 输出,同时利用 PCA 模块再实现了定时器功能 ------------  */ ;/* ---  Mobile: 13922805190 --------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ---------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ---------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com --------------------------------------------------- */ ;/* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 -------------  */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 -----  */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 -----  */ ;--------------------------------------------------------------------- ;使用  定时器 0 的溢出,作为 PCA 模块的时钟输入源,利用 PCA 模块的多种功能 ;实现了可调频率的 PWM 输出(还可以改变占空比),同时利用 PCA 模块再实现了定时器功能 ;使用 STC12C5201AD 系列单片机 PCA 模块的模块 0 的 PWM 功能 做 PWM 输出的示例程序 ;使用 STC12C5201AD 系列单片机 PCA 模块的模块 1 的 16 位软定时器功能做定时器的示例程序 ;晶振频率 Fosc = 18.432MHz,在 P1.5 输出脉冲宽度为 1 秒钟的方波 ;------------------------------------------------------------------------------ ;声明 STC12C5201AD 系列 MCU 特殊功能寄存器地址 IPH      EQU   0B7H              ;中断优先级高位寄存器 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。 CCF2     EQU   CCON.2           ;PCA 模块 2 中断标志, 由硬件置位, 必须由软件清 0。 CCF3     EQU   CCON.3           ;PCA 模块 3 中断标志, 由硬件置位, 必须由软件清 0。 CCF4     EQU   CCON.4           ;PCA 模块 4 中断标志, 由硬件置位, 必须由软件清 0。 CCF5     EQU   CCON.5           ;PCA 模块 5 中断标志, 由硬件置位, 必须由软件清 0。 CR       EQU   CCON.6           ;1:允许 PCA 计数器计数, 必须由软件清 0。 CF       EQU   CCON.7            ;PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H)标志,                                 ;PCA 计数器溢出后由硬件置位,必须由软件清 0。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  175 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------ 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    外部晶体频率 /12。 ;            0      1    外部晶体频率 /2。 ;            1      0    Timer 0 溢出脉冲, ;                        Timer 0 还可通过 AUXR 寄存器设置成工作在 12T 或 1T 模式。 ;            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 位。 CCAP2H   EQU   0FCH             ;PCA 模块 2 的捕捉 / 比较寄存器高 8 位。 CCAP3H   EQU   0FDH             ;PCA 模块 3 的捕捉 / 比较寄存器高 8 位。 CCAP4H   EQU   0FEH             ;PCA 模块 4 的捕捉 / 比较寄存器高 8 位。 CCAP5H   EQU   0FFH             ;PCA 模块 5 的捕捉 / 比较寄存器高 8 位。 CCAP0L   EQU   0EAH             ;PCA 模块 0 的捕捉 / 比较寄存器低 8 位。 CCAP1L   EQU   0EBH             ;PCA 模块 1 的捕捉 / 比较寄存器低 8 位。 CCAP2L   EQU   0ECH             ;PCA 模块 2 的捕捉 / 比较寄存器低 8 位。 CCAP3L   EQU   0EDH             ;PCA 模块 3 的捕捉 / 比较寄存器低 8 位。 CCAP4L   EQU   0EEH             ;PCA 模块 4 的捕捉 / 比较寄存器低 8 位。 CCAP5L   EQU   0EFH             ;PCA 模块 5 的捕捉 / 比较寄存器低 8 位。 ;------------------------ PCA_PWM0 EQU   0F2H             ;PCA 模块 0 PWM 寄存器。 PCA_PWM1 EQU   0F3H             ;PCA 模块 1 PWM 寄存器。 PCA_PWM2 EQU   0F4H             ;PCA 模块 2 PWM 寄存器。 PCA_PWM3 EQU   0F5H             ;PCA 模块 3 PWM 寄存器。 PCA_PWM4 EQU   0F6H             ;PCA 模块 4 PWM 寄存器。 PCA_PWM5 EQU   0F7H             ;PCA 模块 5 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 位数。 ;------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  176 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 CCAPM0   EQU   0DAH             ;PCA 模块 0 的工作模式寄存器。 CCAPM1   EQU   0DBH             ;PCA 模块 1 的工作模式寄存器。 CCAPM2   EQU   0DCH             ;PCA 模块 2 的工作模式寄存器。 CCAPM3   EQU   0DDH             ;PCA 模块 3 的工作模式寄存器。 CCAPM4   EQU   0DEH             ;PCA 模块 4 的工作模式寄存器。 CCAPM5   EQU   0DFH             ;PCA 模块 5 的工作模式寄存器。 ;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   00H 未启用任何功能。 ;  x      1      0     0     0     0     x   21H 16 位 CEXn 上升沿触发捕捉功能。 ;  x      0      1     0     0     0     x   11H 16 位 CEXn 下降沿触发捕捉功能。 ;  x      1      1     0     0     0     x   31H 16 位 CEXn 边沿(上、下沿)触发捕捉功能。 ;  1      0      0     1     0     0     x   49H 16 位软件定时器。 ;  1      0      0     1     1     0     x   4DH 16 位高速脉冲输出。 ;  1      0      0     0     0     1     0   42H 8 位 PWM。 ;------------------------------------------------------------------------------ ;定义单片机管脚 LED_MCU_START       EQU P1.7 LED_5mS_Flashing    EQU P1.6 LED_1S_Flashing     EQU P1.5 ;------------------------------------------------------------------------------ ;定义常量 ;Channe1_5mS_H, Channe1_5mS_L 的计算方法见 PCA 中断服务程序内的注释 ;----------------------------------- ;用定时器 0 的溢出率作 PCA 计数器(CH,CL)的时钟源时 ;Channe1_5mS_H       EQU 03H     ;PCA 模块 1 5mS 定时常数高位, Fosc = 18.432 Channe1_5mS_H        EQU 01H     ;PCA 模块 1 5mS 定时常数高位, Fosc = 18.432 Channe1_5mS_L        EQU 00H     ;PCA 模块 1 5mS 定时常数低位, Fosc = 18.432 ;Channe1_5mS_H       EQU 03H     ;PCA 模块 1 5mS 定时常数高位, Fosc = 22.1184 ;Channe1_5mS_L       EQU 099H    ;PCA 模块 1 5mS 定时常数低位, Fosc = 22.1184 ;------------------ ;内部时钟频率(fosc)/12 作 PCA 计数器(CH,CL)的时钟源 ;Channe1_5mS_H       EQU 1EH     ;PCA 模块 1 5mS 定时常数高位 ;Channe1_5mS_L       EQU 00H     ;PCA 模块 1 5mS 定时常数低位 ;----------------------------------- Timer0_Reload_1      EQU 0F6H    ;Timer0 自动重装数 = -10 Timer0_Reload_2      EQU 0ECH    ;Timer0 自动重装数 = -20 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  177 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;----------------------------------- PWM_PULSE_WIDTH     EQU 0FFH     ;数字越大脉宽越窄(占空比越小),P3.5 的 LED 越亮。 ;------------------------------------------------------------------------------ ;定义变量 Counter             EQU 30H     ;声明一个计数器,用来计数中断的次数 ;------------------------------------------------------------------------------     ORG   0000H     LJMP  MAIN ;------------------------------------------------------------------------------     ORG   003BH                 ;interrupt 7(0,1,2,3,4,5,6,7)     LJMP  PCA_interrupt ;------------------------------------------------------------------------------     ORG   0050H MAIN:     CLR   LED_MCU_START         ;点亮 MCU 开始工作指示灯     MOV   SP, #7FH     MOV   Counter, #0           ;清 Counter 计数器     ACALL PCA_Initiate          ;初始化 PCA     ACALL Timer0_Initiate       ;初始化 T0 MAIN_Loop: ;#########  P3.5 的 LED 亮 #################     MOV   TH0, #Timer0_Reload_1 ;T0 溢出率高     MOV   TL0, #Timer0_Reload_1     MOV   A, #PWM_PULSE_WIDTH   ;亮, 数字越大 PWM 占空比越小,P3.5 的 LED 越亮。     MOV   CCAP0H, A     ACALL delay ;-------------------- ;请注意 T0 溢出率变低后定时器脉冲的 LED 闪烁速度变慢, 而 PWM 的 LED 亮度未改变     MOV   TH0, #Timer0_Reload_2 ;T0 溢出率低     MOV   TL0, #Timer0_Reload_2     ACALL delay ;#########  P3.5 的 LED 较亮 ################     MOV   TH0, #Timer0_Reload_1 ;T0 溢出率高     MOV   TL0, #Timer0_Reload_1     MOV   A, #PWM_PULSE_WIDTH     ACALL RL_A                  ;改变 PWM 占空比     ACALL RL_A     MOV   CCAP0H, A             ;较亮, 数字越大 PWM 占空比越小,P3.5 的 LED 越亮     ACALL delay ;-------------------- ;请注意 T0 溢出率变低后定时器脉冲的 LED 闪烁速度变慢, 而 PWM 的 LED 亮度未改变     MOV   TH0, #Timer0_Reload_2 ;T0 溢出率低     MOV   TL0, #Timer0_Reload_2     ACALL delay     MOV   CCAP0H, A             ;暗, 数字越大 PWM 占空比越小,P3.5 的 LED 越亮     ACALL delay 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  178 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;#########  P3.5 的 LED 暗 ##################     MOV   TH0, #Timer0_Reload_1 ;T0 溢出率高     MOV   TL0, #Timer0_Reload_1     MOV   A, #PWM_PULSE_WIDTH     ACALL RL_A                  ;改变 PWM 占空比     ACALL RL_A    ACALL RL_A     ACALL RL_A ;-------------------- ;请注意 T0 溢出率变低后定时器脉冲的 LED 闪烁速度变慢, 而 PWM 的 LED 亮度未改变     MOV   TH0, #Timer0_Reload_2 ;T0 溢出率低     MOV   TL0, #Timer0_Reload_2     ACALL delay ;############################################     SJMP  MAIN_Loop             ;无限循环。 ;------------------------------------------------------------------------------ RL_A:     CLR   C     RRC   A     RET ;------------------------------------------------------------------------------ Timer0_Initiate: ;初始化 T0, 其溢出脉冲作 PCA 计数器(CH,CL)的时钟源     MOV   TMOD, #02H             ;设置定时器 0 为自动重装工作模式     MOV   TH0, #Timer0_Reload_1     MOV   TL0, #Timer0_Reload_1     SETB  TR0                    ;启动定时器 0     RET ;------------------------------------------------------------------------------ PCA_Initiate: ;   MOV   CMOD, #10000000B  ;PCA 在空闲模式下停止 PCA 计数器工作 ;                           ;PCA 时钟源为 fosc/12 ;                           ;禁止 PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H 时)中断     MOV   CMOD, #10000100B ;PCA 在空闲模式下停止 PCA 计数器工作                            ;PCA 时钟源为 定时器 0 (T0) 的溢出率                            ;禁止 PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H 时)中断     MOV   CCON, #00H       ;CF = 0,清 0 PCA 计数器溢出中断请求标志位                            ;CR = 0, 不允许 PCA 计数器计数                            ;清 0 PCA 各模块中断请求标志位,如 CCF1,CCF0     MOV   CL, #00H         ;清 0 PCA 计数器     MOV   CH, #00H ;------------------------- ;设置模块 0 为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在 P3.7(第 11 脚)输出     MOV   CCAPM0, #42H          ;*** 示例程序核心语句, 设置模块 0 为 8 位 PWM 输出模式     MOV   PCA_PWM0, #00H        ;*** 示例程序核心语句, 清 0 PWM 模式下的第 9 位 ;   MOV   PCA_PWM0, #03H        ;释放本行注释, PWM 输出就一直是 0, 无脉冲。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  179 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;------------------------- ;设置 PCA 模块 1     ;Channe1_5mS_H, Channe1_5mS_L 的计算方法见 PCA 中断服务程序内的注释     MOV   CCAP1L, #Channe1_5mS_L ;给 PCA 模块 1 的 CCAP1L 置初值     MOV   CCAP1H, #Channe1_5mS_H ;给 PCA 模块 1 的 CCAP1H 置初值     MOV   CCAPM1, #49H     ;设置 PCA 模块 1 为 16 位软件定时器,ECCF1=1 允许 PCA 模块 1 中断         ;当[CH,CL]==[CCAP1H,CCAP1L]时,产生中断请求,CCF1=1,请求中断     SETB  EA               ;开整个单片机所有中断共享的总中断控制位     SETB  CR               ;启动 PCA 计数器(CH,CL)计数     RET ;------------------------------------------------------------------------------ PCA_Interrupt:     PUSH  ACC      PUSH  PSW     CPL   LED_5mS_Flashing  ;本程序 PCA 模块 1 每 5mS 中断一次, 每次进中断将该灯状态取反 ;用定时器 0 的溢出率作 PCA 计数器(CH,CL)的时钟源时, 计算 Channe1_5mS_H, Channe1_5mS_L     ;在本程序中定时器 0 每 12 个时钟脉冲加 1, 定时器 0 每加 10 次后产生 1 次溢出, 即每     ;120 个时钟脉冲 PCA 计数器(CH,CL)加 1。当[CH,CL] 增加到等于 [CCAP1H,CCAP1L]时     ;CCF0=1, PCA 模块 1 产生中断请求。如果每次 PCA 模块 1 中断后, 在中断服务程序中给     ;[CCAP1H,CCAP1L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相     ;同的。本程序中这个 " 相同的数值 " 就是 Channe1_5mS_H, Channe1_5mS_L     ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 300H 次等于 5mS。     ;    Channe1_5mS_H, Channe1_5mS_L = T/( (1/Fosc)*120 )     ;                                 = 0.005/ ( (1/18432000)*120 )     ;                                 = 768 (10 进制数)     ;                                 = 300H (16 进制数)     ;    即 Channe1_5mS_H = 03H, Channe1_5mS_L = 00H     ;     ;   Channe1_5mS_H, Channe1_5mS_L:每次给 [CCAP1H,CCAP1L] 增加的数值(步长) ;内部时钟频率(fosc)/12 作 PCA 计数器(CH,CL)的时钟源,计算 Channe1_5mS_H,Channe1_5mS_L     ;在本程序中[CH,CL]每 12 个时钟脉冲加 1, 当[CH,CL] 增加到等于 [CCAP1H,CCAP1L]时     ;CCF0=1, PCA 模块 1 产生中断请求。如果每次 PCA 模块 1 中断后, 在中断服务程序中给     ;[CCAP1H,CCAP1L] 增加一个相同的数值,那么下一次中断来临的间隔时间 T 也是相     ;同的。本程序中这个 " 相同的数值 " 就是 Channe1_5mS_H, Channe1_5mS_L     ;举例: 时钟频率 Fosc = 18.432MHz, PCA 计数器计数 1E00H 次才是 5mS。     ;    Channe1_5mS_H, Channe1_5mS_L = T/( (1/Fosc)*12 )     ;                                 = 0.005/ ( (1/18432000)*12 )     ;                                 = 7680 (10 进制数)     ;                                 = 1E00H (16 进制数)     ;    即 Channe1_5mS_H = 1EH, Channe1_5mS_L = 00H     ;     ;   Channe1_5mS_H, Channe1_5mS_L:每次给 [CCAP1H,CCAP1L] 增加的数值(步长) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  180 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     MOV   A, #Channe1_5mS_L    ;给[CCAP1H,CCAP1L] 增加一个数值     ADD   A, CCAP1L     MOV   CCAP1L, A     MOV   A, #Channe1_5mS_H     ADDC  A, CCAP1H     MOV   CCAP1H, A     CLR   CCF1                  ;清 PCA 模块 1 中断标志     INC   Counter               ;中断次数计数器 + 1     MOV   A, Counter     CLR   C    SUBB  A, #100             ;检测是否中断了 100 次(0.5 秒)     JC    PCA_Interrupt_Exit    ;有借位,表示 Counter 小于 100,立即跳转退出     MOV   Counter, #0          ;已中断了 100 次,清 0 中断次数计数器     CPL   LED_1S_Flashing       ;在 LED_1S_Flashing 输出脉冲宽度为 0.5 秒钟的方波 PCA_Interrupt_Exit:     POP   PSW     POP   ACC     RETI ;------------------------------------------------------------------------------ delay:     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 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  181 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243       8.10     利用 PWM 实现 D/A 功能的典型应用电路图 1 32 VDD P2.3 2 31 P2.1 RST 3 30 P2.0 RxD/P3.0 4 29 P1.7/ADC7 TxD/P3.1 5 28 P1.6/ADC6 P0.0 6 27 P1.5/ADC5 XTAL2 7 26 P0.3 XTAL1 8 25 P1.4/ADC4 INT0/P3.2 9 24 P1.3/ADC3 23 P0.2 SOP-32 P2.2 P0.1 10 INT1/P3.3 11 22 P1.2/ADC2/LVD CLKOUT0/ECI/T0/P3.4 12 21 P1.1/ADC1 CLKOUT1/PWM1/T1/P3.5 13 20 P1.0/ADC0 P2.4 14 19 P3.7/PWM0 P2.5 15 18 P2.7 VSS 16 17 P2.6 10K 104 10K D/A 104 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  182 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 第九章       STC12 系列单片机的掉电模式   9.1  PCON 寄存器的高级应用,上电复位标志,进入掉电模式 Mnemonic Add Name PCON 87h Power  Control 7  6  5 4 3 2 1  0 Reset value SMOD  SMOD0  LVDF POF GF1 GF0 PD IDL 0011,0000 P O F :上电复位标志位,单片机停电后,上电复位标志位为 1 ,可由软件清 0 。 实际应用:要判断是上电复位(冷启动),还是外部复位脚输入复位信号产生的复位,还是内部看门狗 复位,可通过如下方法来判断: 在初始化程序, 否, POF=0 判 POF 是否为 1    是  冷启动 POF=1 上电复位 外部手动复位 将 POF 清 0 或看门狗复位 P D : 将其置 1 时,进入 Power Down 模式,可由外部中断低电平触发或下降沿触发中断模式唤醒, 进入掉电模式时,外部时钟停振,CPU、定时器、串行口全部停止工作,只有外部中断继续工作。       可将 CPU 从掉电模式唤醒的外部管脚有: INT0/P3.2, INT1/P3.3, INT/T0/P3.4, INT/T1/P3.5,       INT/RxD/P3.0 I D L :将其置 1 ,进入 I D L E 模式(空闲),除 C P U 不工作外,其余仍继续工作,可由任何一个中断唤醒。       可将 CPU 从空闲模式(IDLE 模式)唤醒的外部中断脚有: INT0/P3.2, INT1/P3.3, INT/T0/P3.4,INT/T1/P3.5,INT/RxD/P3.0 内部定时器 Timer0,Timer1 也可以将单片机从空闲模式唤醒 串行口中断(UART)也可以将单片机从空闲模式唤醒 GF1,GF0:  两个通用工作标志位,用户可以任意使用。 SMOD:   波特率倍速位,置 1,串口通讯波特率快一倍 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  183 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 9.2  利用外部中断实现单片机从掉电模式唤醒(C 语言) /* ---  STC International Limited ---------------------------------------------- */ /* ---  宏晶科技    姚永平    2006/8/2    V1.0 --------------------------------- */ /* ---  STC12xx 系列单片机,掉电模式唤醒测试程序(从外部中断 0 唤醒)---------------- */ /* ---  Mobile: 13922805190 ---------------------------------------------------- */ /* ---  Fax: 0755-82944243 -----------------------------------------------------    */ /* ---  Tel: 0755-82948409 -----------------------------------------------------    */ /* ---  Web: www.STCMCU.com ---------------------------------------------------- */ /* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 --------------- */ /* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 -------- */ /* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 --------- */ #include<reg52.h> #include<intrins.h> sbit  Begin_Led = P1^2;          // 系统开始工作指示灯 unsigned char Is_Power_Down = 0; // 进入 Power Down 之前,将其置为 1,以供判断 sbit  Is_Power_Down_Led_INT0     = P1^7; // 掉电唤醒指示灯,在外部中断 0 中 sbit  Not_Power_Down_Led_INT0    = P1^6; // 不是掉电唤醒指示灯,在外部中断 0 中 sbit  Is_Power_Down_Led_INT1     = P1^5; // 掉电唤醒指示灯,在外部中断 1 中 sbit  Not_Power_Down_Led_INT1    = P1^4; // 不是掉电唤醒指示灯,在外部中断 1 中 sbit  Power_Down_Wakeup_Pin_INT0 = P3^2; // 掉电唤醒管脚,外部中断 0 sbit  Power_Down_Wakeup_Pin_INT1 = P3^3; // 掉电唤醒管脚,外部中断 1 sbit  Normal_Work_Flashing_Led   = P1^3; // 系统处于正常工作状态指示灯 void Normal_Work_Flashing(void); void INT_System_init(void); void INT0_Routine(void); void INT1_Routine(void); void main(void) {     unsigned  char  j  =  0;     unsigned  char  wakeup_counter  =  0;  // 中断唤醒次数变量初始为 0     Begin_Led  =  0;      // 系统开始工作指示灯     INT_System_init();    // 中断系统初始化     while(1)     {         P2  =  ̄wakeup_counter;   // 中断唤醒次数显示,先将 wakeup_counter 取反         wakeup_counter++;        // 中断唤醒次数显示         for(j=0;j<2;j++)         {               Normal_Work_Flashing();   // 系统正常工作指示灯         }         Is_Power_Down  =  1; // 进入 Power Down 之前,将其置为 1,以供判断         PCON  =  0x02; // 执行完此句,单片机进入 Power Down 模式,外部时钟停止振荡 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  184 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243         _nop_();        //STC12 系列掉电模式,外部中断唤醒后,首先执行上句,然后才会进入中断服务程序         _nop_();         _nop_();  // 建议多加几个空操作指令 NOP         _nop_();  // 建议多加几个空操作指令 NOP     } } void INT_System_init(void) {     IT0   =   0;   /* 外部中断 0,低电平触发中断 */ //  IT0   =   1;   /* 外部中断 0,下降沿触发中断 */      EX0   =   1;   /* 允许外部中断 0 中断 */     IT1   =   0;   /* 外部中断 1,低电平触发中断 */ //  IT1   =   1;   /* 外部中断 1,下降沿触发中断 */      EX1   =   1;   /* 允许外部中断 1 中断 */      EA    =   1;   /* 开总中断控制位 */ } void INT0_Routine(void) interrupt 0 {     if(Is_Power_Down)     {   //Is_Power_Down ==1,掉电唤醒,在外部中断 0 中         Is_Power_Down  =   0;         Is_Power_Down_Led_INT0  =  0;  // 点亮外部中断 0 掉电唤醒指示灯         while(Power_Down_Wakeup_Pin_INT0==0)         {             /* 等待变高 */         }         Is_Power_Down_Led_INT0  =  1;  // 关闭外部中断 0 掉电唤醒指示灯     }     else     {         Not_Power_Down_Led_INT0 =  0;  // 点亮外部中断 0 正常工作中断指示灯         while(Power_Down_Wakeup_Pin_INT0==0)         {             /* 等待变高 */         }         Not_Power_Down_Led_INT0 =  1;  // 关闭外部中断 0 正常工作中断指示灯     } } void INT1_Routine(void) interrupt 2 {     if(Is_Power_Down)     {   //Is_Power_Down ==1,掉电唤醒,在外部中断 1 中         Is_Power_Down   =   0;         Is_Power_Down_Led_INT1 =  0;  // 顶亮外部中断 1 掉电唤醒指示灯 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  185 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243         while(Power_Down_Wakeup_Pin_INT1==0)         {             /* 等待变高 */         }         Is_Power_Down_Led_INT1  =  1;  // 关闭外部中断 1 掉电唤醒指示灯     }     else     {         Not_Power_Down_Led_INT1  =  0;  // 顶亮外部中断 1 正常工作中断指示灯         while(Power_Down_Wakeup_Pin_INT1==0)         {             /* 等待变高 */         }         Not_Power_Down_Led_INT1  =  1;  // 关闭外部中断 1 正常工作中断指示灯     } } void delay(void) {     unsigned int    j   =   0x00;     unsigned int    k   =   0x00;     for(k=0;k<2;++k)     {         for(j=0;j<=30000;++j)         {              _nop_();              _nop_();              _nop_();              _nop_();              _nop_();              _nop_();              _nop_();              _nop_();         }     } } void Normal_Work_Flashing(void) {     Normal_Work_Flashing_Led    =   0;     delay();     Normal_Work_Flashing_Led    =   1;     delay(); } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  186 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243          9.3  通过外部中断从掉电模式唤醒 ;************************************************************************* ;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 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  187 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     INC   R3     MOV   A, R3     SUBB  A, #18H     JC    main_loop     MOV   P1, #0FFH     ;熄灭全部灯表示进入 Power Down 状态     CLR   IT0           ;设置低电平激活外部中断 ;   SETB  IT0     SETB  EX0           ;允许外部中断 0     CLR   IT1           ;设置低电平激活外部中断 ;   SETB  IT1     SETB  EX1           ;允许外部中断 1     SETB  EA            ;开中断, 若不开中断就不能唤醒 Power Down ;下条语句将使 MCU 进入 idle 状态或 Power Down 状态 ;低电平激活外部中断可以将 MCU 从 Power Down 状态中唤醒 ;其方法为:将外部中断脚拉低     MOV   PCON, #00000010B     ;令 PD=1, 进入 Power Down 状态, PD = PCON.1     ;MOV   PCON, #00000001B    ;删除本语句前的 ";", 同时将前 1 条语句前加上注释符号 ";",                                ;令 IDL=1, 可进入 idle 状态, IDL = PCON.0     MOV   P1, #0DFH     ;1101,1111  请注意:                         ; 1.外部中断使 MCU 退出 Power Down 状态,执行本条指令后                         ;响应中断, 表现为 P1.5 与 P1.7 的 LED 同时亮(INT0 唤醒)                         ; 2.外部中断使 MCU 退出 idle 状态,先响应中断然后再执行本                         ;条指令, 表现为 P1.7 的 LED 先亮(INT0 唤醒)P1.5 的 LED 后亮                         ; 3.实际使用掉电模式时,本语句应用 NOP 代替     NOP      ;实际使用掉电模式时,应在 MOV   PCON, #00000010B 语句后面多加几个 NOP     NOP      ;实际使用掉电模式时,应在 MOV   PCON, #00000010B 语句后面多加几个 NOP     NOP      ;实际使用掉电模式时,应在 MOV   PCON, #00000010B 语句后面多加几个 NOP WAIT1:     SJMP  WAIT1         ;跳转到本语句, 停机     END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  188 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243      第十章  STC12C5201AD 系列单片机电气特性 ELECTRICAL CHARACTERISTICS Absolute Maximum Ratings Parameter Symbol MIN MAX UNIT Storage temperature T ST -55 +125 ℃ Operating Temperature(I) TA -40 +85 ℃ Operating Temperature(C) TA 0 +70 ℃ DC Power Supply(5V MCU) V DD  -   V SS -0.3 +5.5 V DC Power Supply(3V MCU) V DD  -   V SS -0.3 +3.6 V -0.3 VCC + 0.3 V Voltage on any Pin DC Specification(5V MCU) Specification Test Condition Symbol Parameter V DD Operating Voltage I PWDN Power Down Current <0.1 uA 5V I IDLE Idle Current 3.0 mA 5V I CC Operating Current 4 mA 20 mA 5V V IL1 Input low voltage (P0,P1,P2,P3) 0.8 V 5V V IH1 Input High voltage (P0,P1,P2,P3) 2.0 V 5V V IH2 Input High voltage (RESET) 2.2 V 5V I OL1 Sinking Current for Output Low (P0,P1,P2,P3) 20 mA 5V Vpin=0.45V I OH1 (Quasi-output) Sourcing Current for Output high (P0,P1,P2,P3) 230 uA 5V I OH2 (Push-Pull,Strong-output) Sourcing Current for Output High (P0,P1,P2,P3) 20 mA 5V Vpin=2.4V I IL Logic 0 input current (P0,P1,P2,P3) 50 uA V PIN =0V I TL Logic 1 to 0 transition current (P0,P1,P2,P3) 600 uA V PIN =2V Min. Typ. Max. Unit 3.3 5.5 150 100 5.0 270 V 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  189 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 DC Specification(3.3V MCU) Specification Test Condition Symbol Parameter V DD Operating Voltage I PWDN Power Down Current <0.1 uA 3.3V I IDLE Idle Current 2.0 mA 3.3V I CC Operating Current 4 mA 10 mA 3.3V V IL1 Input low voltage (P0,P1,P2,P3) 0.8 V 3.3V V IH1 Input High voltage (P0,P1,P2,P3) 2.0 V 3.3V V IH2 Input High voltage (RESET) 2.2 V 3.3V I OL1 Sinking Current for Output Low (P0,P1,P2,P3) 20 mA 3.3V Vpin=0.45V I OH1 (QUasi-output) Sourcing Current for Output High 40 (P0,P1,P2,P3) 70 uA 3.3V I OH2 (Push-Pull,Strong-output) Sourcing Current for Output High (P0,P1,P2,P3) 20 mA 3.3V I IL Logic 0 input current (P0,P1,P2,P3) 8 50 uA V PIN =0V I TL Logic 1 to 0 transition current (P0,P1,P2,P3) 110 600 uA V PIN =2V Min. Typ. Max. Unit 2.2 3.6 3.3 V 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  190 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    第十一章  STC12 系列单片机开发 / 编程工具说明    11.1 在系统可编程(ISP)原理,官方演示工具使用说明 11.1.1 在系统可编程(ISP)原理使用说明 STC12C5205/5206, STC12LE5205/5206下 载用户程序时需将 P1.0/P1.1 短接到地 单片机彻底没电 外部手动复位,看门狗复位,单片 机不会运行 ISP 程序 给单片机上电复位,冷起动 单片机运行 ISP 程序,检测有无合法下载 命令流,占时几十 mS - 几百 mS,如无合 冷起动,单片机运行系统 ISP 监控程序 法下载命令流,则立即跑用户程序 检测 P3.0/RxD 有没有合法下载命令流 有 无 如果已设置 P1.0/P1.1=0/0,才会判断是否下载用 户程序,则冷启动后,如 P1.0/P1.1 ≠ 0/0,则 直接跑用户程序,只会占时 5 0 u S ,可忽略不计。 建议用户选择 P1.0/P1.1 不同时为 0/0,则立即跑 用户程序,跨过系统 I S P 监控程序。 下载用户程序进用户程序区 PC 机端控制软件为 STC-ISP-V3.1 及以后的版本从 www.STCMCU.com 下载,如何使用,本文相关部分 有说明 软复位到用户程序区,运行用户程序 P C 机端的控制软件必需先发下载命令流, 再给单片机上电复位 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  191 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 11.1.2 STC12C5201AD 在系统可编程(ISP)典型应用线路图 Vcc  MAX232,MAX3232,SP232,SP3232 PC / 电脑 串口 通过电脑端的 10μF C1+ Vcc 16 2 V+ Gnd 15 3 C1- T1OUT 14 C2+ R1IN 13 5 C2+ R1OUT 12 0.1uF 6 V- T1IN 11 7 T2OUT T2IN 10 8 R2IN 9 R2OUT 晶振频率在 12M 以下时: 可以不用 C1,R1 可为 1K Vcc R1 C1 10K Gnd PC_RxD (COM Pin2) S T C - I S P 软件 控制下载 5 “用户程序” PC_TxD (COM Pin3) 到 STC 单片机 建议用户在系统上 留此接口,可方便 在线下载用户程序 USB +5V SW1 USB+5V T1OUT R1IN GND Reset U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND Power On 电源开关 USB1 Vcc + 10μF 2 3 Vcc Vin 4 0.1uF + ( 0.1uF 1 STC12C5205/5206, STC12LE5205/5206下 载用户程序时需将 P1.0/P1.1 短接到地 1  RST                       VCC  20 1K 1K 2  RxD/P3.0      P1.7/SCLK/ADC7  19 3  TxD/P3.1     P1.6/MISO/ADC6  18 <33pF 5  XTAL1           P1.4/SS/ADC4  16 0.1 μF 10 μF + ( <33pF 4  XTAL2         P1.5/MOSI/ADC5  17 6  INT0/P3.2          P1.3/ADC3  15 7  INT1/P3.3          P1.2/ADC2  14 8  ECI/T0/P3.4        P1.1/ADC1  13 9  PWM1/PCA1/T1/P3.5 P1.0/ADC0  12 如果使用内部 R/C 振荡器时钟(室温情 况下 5V 单片机为:11MHz~15.5MHz,3V 单片机为8MHz~12MHz),XTAL1和XTAL2 脚浮空. 10  Gnd           P3.7/PCA0/PWM0  11 如果外部时钟频率在 33MHz 以上时, 建议直接使用外部有源晶振,时钟从 XTAL1 脚输入,XTAL2 脚必须浮空.   STC12C5201AD 系列单片机具有在系统可编程(ISP)特性,ISP  的好处是:省去购买通用编程器, 单片机在用户系统上即可下载 / 烧录用户程序,而无须将单片机从已生产好的产品上拆下,再用通用编程 器将程序代码烧录进单片机内部。有些程序尚未定型的产品可以一边生产,一边完善,加快了产品进入市 场的速度,减小了新产品由于软件缺陷带来的风险。由于可以在用户的目标系统上将程序直接下载进单片 机看运行结果对错,故无须仿真器。 STC12 系列单片机内部固化有 ISP 系统引导固件,配合 PC 端的控制程序即可将用户的程序代码下载进单 片机内部,故无须编程器( 速度比通用编程器快,几秒一片) 。 如何获得及使用 STC 提供的 ISP 下载工具(STC-ISP.exe 软件): (1).  获得 STC 提供的 ISP 下载工具(软件) 登陆  www.STCMCU.com  网站,从 STC 半导体专栏下载 PC(电脑)端的 ISP 程序,然后   将 其自解压,再安装即可(执行 s e t u p . e x e ), 注意随时更新软件。 (2).  使用 STC-ISP 下载工具(软件),请随时更新,目前已到 Ver3.1 版本以上,       支持 *.bin,*.hex(Intel 16 进制格式)文件,少数 *.hex 文件不支持的话,请转换成 *.bin 文件     请随时注意升级 PC(电脑)端的 STC-ISP.EXE 程序。 (3).STC12 系列单片机出厂时就已完全加密。需要单片机内部的电放光后上电复位(冷起动)才运行系统 ISP 程序,如从 P3.0/RxD  检测到合法的下载命令流就下载用户程序,如检测不到就复位到用户程序区,运 行 用 户 程 序。 (4).如果用户板上 P3.0/RxD,P3.1/Txd 接了 RS-485 等电路,下载时需要将其断开。用户系统接了 RS-485 等通信电路,推荐在选项中选择“下次冷启动时需 P1.0/P1.1=0/0 才可以下载程序” 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  192 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 11.1.3 STC12C5A60S2 系列在系统可编程(ISP)典型应用线路图 STC 单片机在线编程线路, STC RS-232 转换器   STC3232,STC232,MAX232,SP232 0.1uF C1+ Vcc 16 Vcc 2 V+ GND 15 Gnd 3 C1- T1OUT 14 4 C2+ R1IN 13 5 C2- R1OUT 12 6 V- 7 T2OUT 8 R2IN PC_RxD (COM Pin2) T2IN 10 SW1 用户程序下载工具,人民币 50 元 9 供用户将程序灌进单片机使用 Vcc C1 R1 关于复位电路: MCU_RxD (P3.0) MCU_TxD (P3.1) 晶振频率在 12M 以下时:可以不用 C1,R1 可为 1K 1.阻容复位时,电容为 10uF,电阻为 10K; C2 <47pF USB+5V T1OUT R1IN GND USB1 Vcc 1K U1-P1.0 U1-P1.1 MCU-VCC U1-P3.0 U1-P3.1 GND 10K Power On 电源开关 此电路已做成一块 STC ISP 此部分与ISP下 载线路无关 Vcc 10μF USB +5V 5 PC_TxD (COM Pin3) T1IN 11 R2OUT 2 3 Vin 1 PC / 电脑 串口 X1 C1 <47pF 关于晶振电路: 1 CLKOUT2/ADC0/P1.0 2 ADC1/P1.1 3 ECI/ADC2/P1.2 4 CCP0/ADC3/P1.3 5 SS/CCP1ADC4/P1.4 6 7 MOSI/ADC5/P1.5 Vcc 40 P0.0/AD0 39 P0.1/AD1 38 104 10uF P0.4/AD4 35 P0.5/AD5 34 MISO/ADC6/P1.6 SCLK/ADC7/P1.7 9 RST/P4.7 10 11 RxD/P3.0 12 13 INT0/P3.2 14 CLKOUT0/T0/P3.4 15 CLKOUT1/T1/P3.5 16 WR/P3.6 17 RD/P3.7 18 XTAL2 P2.3/AD11 24 P2.2/AD10 23 19 20 XTAL1 Gnd P2.1/AD9 22 P2.0/AD8 21 INT1/P3.3 C5 C6 P0.2/AD2 37 P0.3/AD3 36 8 TxD/P3.1 1K P0.6/AD6 33 P0.7/AD7 32 EX_LVD/P4.6 31 ALE/P4.5 30 NA/P4.4 29 P2.7/AD15 28 P2.6/AD14 27 1K P2.5/AD13 26 P2.4/AD12 25 U1,下载板是用的编程器用锁紧座,方便生产 如果外部时钟频率在 33MHz 以上时,建议直接使用外部有源晶振 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  193 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 11.1.4 电脑端的 ISP 控制软件界面使用说明 用户根据实际使用效果选择限制 最高通信波特率, 如 5 7 6 0 0 , 38400,19200 如 P30/P31 外接 RS-485/RS-232 等通信电路,建议选择 P10/P11 等于 0/0 才可以下载程序,如不 同时为 0/0,则跨过系统 ISP 引 导程序,直接运行用户程序。 开发调试时,可考虑选择此项 大批量生产时使用 新的设置冷启动后(彻底停电 后 再 上 电 ), 才 生 效 Step1/ 步骤 1:选择你所使用的单片机型号,如 STC12C5201 等 S t e p 2 / 步骤 2 :打开文件,要烧录用户程序,必须调入用户的程序代码(* . b i n ,   * . h e x ) Step3/ 步骤 3:选择串行口,你所使用的电脑串口,如串行口 1--COM1,  串行口 2--COM2,...   有些新式笔记本电脑没有 RS-232 串行口,可买一条 USB-RS232 转接器,人民币 50 元左右。           有些 USB-RS232 转接器,不能兼容,可让宏晶帮你购买经过测试的转换器。 S t e p 4 / 步骤 4 :选择下次冷启动后,时钟源为“内部 R / C 振荡器”还是“外部晶体或时钟”。 Step5/ 步骤 5 :选择“Download/ 下载”按钮下载用户的程序进单片机内部,可重复执行                Step5/ 步骤 5, 也可选择“Re-Download/ 重复下载”按钮 下载时注意看提示,主要看是否要给单片机上电或复位,   下载速度比一般通用编程器快。 一定要先选择“D o w n l o a d / 下载”按钮,然后再给单片机上电复位( 先彻底断电) ,而不要     先上电,先上电,检测不到合法的下载命令流,单片机就直接跑用户程序了。 关于硬件连接: (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 才可以下载用户程序”       这样冷启动后如 P1.0, P1.1 不同时为 0,单片机直接运行用户程序,免得由于 RS-485 总线上的乱 码造成单片机反复判断乱码是否为合法,浪费几百 mS 的时间,其实如果你的系统本身 P3.0,P3.1 就是做 串口使用,也建议选择 P1.0/P1.1 = 0/0 才可下载用户程序,以便下次冷启动直接运行用户程序。 (5). RS-232 转换器可选用 MAX232/SP232(4.5-5.5V),MAX3232/SP3232(3V-5.5V). 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  194 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 11.1.5 宏晶科技的 ISP 下载编程工具硬件使用说明 如用户系统没有 RS-232 接口, 可使用STC-ISP Ver 3.0A.PCB演示板作为编程工具 STC-ISP Ver 3.0APCB 板可以焊接 3 种电路,分别支持 STC12 系列 16Pin / 20Pin / 28Pin / 32Pin。 我们在下载板的反面贴了一张标签纸,说明它是支持 16Pin /20Pin / 28Pin / 32Pin 中的哪一种,用户 要特别注意。在正面焊的编程烧录用锁紧座都是 40Pin 的,锁紧座第 20-Pin 接的是地线,请将单片机的 地线对着锁紧座的地线插。 在 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,短接到地。 如果单片机已被设成“下次冷启动 P1.0/P1.1 = 0,0 才判 P3.0/RxD 有无合法下载命令流”     就必须将 SW3 开关处于按下状态,让单片机的 P1.0/P1.1 短接到地 (6).将单片机插进 U1-Socket 锁紧座,锁紧单片机,注意单片机是 20-Pin / 28-Pin,而 U1-Socket 锁 紧座是 40-Pin, 我们的设计是靠下插,靠近晶体的那一端插。 (7).关于软件:选择“Download/ 下载”(  必须在给单片机上电之前让 PC 先发一串合法下载命令) (8).按下 SW1 开关,给单片机上电复位, 此时 MCU-VCC Power 灯亮(D41)     此时 STC 单片机进入 ISP 模式(STC12 系列冷启动进入 ISP) (9).下载成功后,再按 SW1 开关,此时 SW1 开关处于非按下状态,MCU-VCC Power 灯不亮(D41),  给 单片机断电,取下单片机,换上新的单片机。 11.1.6 用户板没有 RS-232 转换器,如何用宏晶科技的 ISP 下载板做 RS-232 通信转换 利用 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. 关于软件:选择“D o w n l o a d / 下载” 6. 给单片机系统上电复位(注意是从用户系统自供电,不要从电脑 USB 取电,电脑 USB 座不插) 7. 下载程序时,如用户板有外部看门狗电路,不得启动,单片机必须有正确的复位,但不能在 ISP 下 载程序时被外部看门狗复位,如有,可将外部看门狗电路 WDI 端 / 或 WDO 端浮空 8.  如有 RS-485 晶片连到 P3.0/Rxd,P3.1/Txd,或其他线路,在下载时应将其断开。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  195 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243            11.2  编译器/汇编器,编程器,仿真器 STC  单片机应使用何种编译器 / 汇编器: 1.任何老的编译器 / 汇编器都可以支持,流行用 Keil C51 2.把 STC 单片机,当成 Intel 的 8052/87C52/87C54/87C58,Philips 的 P87C52/P87C54/P87C58 就可以了 3 . 如果要用到扩展的专用特殊功能寄存器,直接对该地址单元设置就行了,当然先声明特殊功能寄存器 的地址较好 编程烧录器: 我们有: STC12C5201AD/ 系列 ISP 经济型下载编程工具(人民币 50 元,可申请免费样品)         注意:有专门下载 28PIN/20PIN 的不同演示板,              28PIN 是 28PIN 的演示板,20PIN 是 20PIN 的演示板 仿真器:如您已有老的仿真器,可仿真普通 8052 的基本功能 STC12C5201AD 系列单片机扩展功能如它仿不了 可以用 STC-ISP.EXE 直接下载用户程序看运行结果就可以了,如需观察变量,可自己写一小段测试程序通过 串口输出到电脑端的 STC-ISP.EXE 的“串口调试助手”来显示, 也很方便。 无须添加新的设备 无仿真器如何调试 / 开发用户程序 1 . 首先参照本手册当中的“用定时器 1 做波特率发生器”,调通串口程序,这样,要观察变量就可以 自己写一小段测试程序将变量通过串口输出到电脑端的 STC-ISP.EXE 的“串口调试助手”来显示,也很方 便 。 2.调通按键扫描程序(到处都有大量的参考程序) 3.调通用户系统的显示电路程序,此时变量 / 寄存器也可以通过用户系统的显示电路显示了 4.调通 A/D 检测电路(我们用户手册里面有完整的参考程序) 5.调通 PWM 等电路(我们用户手册里面有完整的参考程序) 这样分步骤模块化调试用户程序,有些系统,熟练的 8 0 5 1 用户,三天就可以调通了,难度不大的系统, 一般一到二周就可以调通。    用户的串口输出显示程序可以在输出变量 / 寄存器的值之后,继续全速运行用户程序,也可以等待串口 送来的“继续运行命令”,方可继续运行用户程序,这就相当于断点。这种断点每设置一个地方,就必 须调用一次该显示寄存器  / 变量的程序,有点麻烦,但却很实用。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  196 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 11.3  自定义下载演示程序(实现不停电下载) /* ---  STC International Limited ---------------------------------------------- */ /* ---  宏晶科技    姚永平    2006/7/31    V1.0 -------------------------------- */ /* ---  STC12C5201AD  系列单片机,软件实现自定义下载程序 ------------------------- */ /* ---  Mobile: 13922805190 ---------------------------------------------------- */ /* ---  Fax: 0755-82944243 -----------------------------------------------------    */ /* ---  Tel: 0755-82948409 -----------------------------------------------------    */ /* ---  Web: www.STCMCU.com ---------------------------------------------------- */ /* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 --------------- */ /* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 ------- */ /* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 --------    */ #include<reg52.h> #include<intrins.h> sfr  IAP_CONTR =  0xC7; sfr  CCON    = 0xD8; sfr  CMOD    = 0xD9; sfr  CL      = 0xE9; sfr  CH      = 0xF9; sfr  CCAP0L  = 0xEA; sfr  CCAP0H  = 0xFA; sfr  CCAPM0  = 0xDA; sfr  CCAPM1  = 0xDB; sbit CR      = 0xDE; sbit MCU_Start_Led  =  P1^7; //unsigned char self_command_array[4] =  {0x22,0x33,0x44,0x55}; #define Self_Define_ISP_Download_Command  0x22 #define RELOAD_COUNT  0xfb   //18.432MHz,12T,SMOD=0,9600bps void serial_port_initial(); void send_UART(unsigned char); void UART_Interrupt_Receive(void); void soft_reset_to_ISP_Monitor(void); void delay(void); void display_MCU_Start_Led(void); void send_PWM(void); void main(void) {     unsigned  char i = 0;     serial_port_initial();      // 串口初始化     display_MCU_Start_Led();    // 点亮发光二极管表示单片机开始工作     send_UART(0x34);            // 串口发送数据表示单片机串口正常工作     send_UART(0xa7);            // 串口发送数据表示单片机串口正常工作     send_PWM();                 //6kHz PWM,  50% duty     while(1); } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  197 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 void serial_port_initial() {     SCON    =   0x50;   //0101,0000 8 位可变波特率,无奇偶校验位     TMOD    =   0x21;   //0011,0001 设置顶时器 1 为 8 位自动重装计数器     TH1     =   RELOAD_COUNT;   // 设置定时器 1 自动重装数     TL1     =   RELOAD_COUNT;     TR1     =   1;    // 开定时器 1     ES      =   1;    // 允许串口中断     EA      =   1;    // 开总中断 } void send_UART(unsigned char i) {     ES     =   0;  // 关串口中断     TI     =   0;  // 清零串口发送完成中断请求标志     SBUF   =   i;     while(TI ==0); // 等待发送完成     TI     =   0;  // 清零串口发送完成中断请求标志     ES     =   1;  // 允许串口中断 } void UART_Interrupt_Receive(void) interrupt 4 {     unsigned char   k   =   0;     if(RI==1)     {         RI  =   0;         k   =   SBUF;         if(k==Self_Define_ISP_Download_Command)   // 是自定义下载命令         {             delay();    // 延时 1 秒就足够了             delay();    // 延时 1 秒就足够了             soft_reset_to_ISP_Monitor();    // 软复位到系统 ISP 监控区         }         send_UART(k);     }     else     {         TI  =  0;     } } void soft_reset_to_ISP_Monitor(void) {     IAP_CONTR   =    0x60;   //0110,0000   软复位到系统 ISP 监控区 } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  198 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 void delay(void) {     unsigned int j  =   0;     unsigned int g  =   0;     for(j=0;j<5;j++)     {         for(g=0;g<60000;g++)         {             _nop_();             _nop_();             _nop_();             _nop_();             _nop_();         }     } } void display_MCU_Start_Led(void) {     unsigned  char i = 0;     for(i=0;i<3;i++)     {         MCU_Start_Led   =   0;  // 顶亮 MCU 开始工作指示灯         delay();         MCU_Start_Led   =   1;  // 熄灭 MCU 开始工作指示灯         delay();         MCU_Start_Led   =   0;  // 顶亮 MCU 开始工作指示灯     } } void send_PWM(void) {     CMOD    =   0x00;   // CIDL - - - - CPS1 CPS0 ECF  Setup PCA Timer                         // CPS1 CPS0 = 00, Fosc/12 is PCA/PWM clock                         // 18432000/12/256 = 6000     CL      =   0x00;     CH      =   0x00;     CCAP0L  =   0x80;   //Set the initial value same as CCAP0H     CCAP0H  =   0x80;   //50% Duty Cycle     CCAPM0  =   0x42;   //0100,0010 Setup PCA module 0 in 8BIT PWM, P3.7     CR      =   1;      // 启动 PCA/PWM 定时器 } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  199 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     自定义下载在 STC 的电脑端 ISP 软件 STC-ISP.EXE 中,还应做相应设置,具体参考设置见下图:      详细的帮助上图也有具体的说明 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  200 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    第 12 章  同步串行外围接口(SPI)及测试程序        12.1   SPI 功能模块特殊功能寄存器介绍 STC12C5Axx 系列单片机还提供另一种高速串行通信接口—— SPI 接口。SPI 是一种全双工、高速、同步的 通信总线,有两种操作模式:主模式和从模式。在主模式中支持高达 3Mbit/s 的速率(工作频率为 12MHz 时,如果 CPU 主频采用 20MHz 到 36MHz,则可更高,从模式时速度无法太快,Fosc/8 以内较好),还具有传输 完成标志和写冲突标志保护。 STC12C5Axx 系列 1T 8051 单片机 SPI 功能模块特殊功能寄存器  SPI Management SFRs Mnemonic Add Name   7  6  5  4 SPCTL CEh SPSTAT SPDAT  3 SPI Control Register SSIG  SPEN  DORD MSTR CDh SPI Status Register SPIF  WCOL  -  - CFh SPI Data Register  2 CPOL CPHA  - 1  0 SPR1 SPR0 0000,0000  - - - CPU 时钟 S M MSTR SPICLK P1.7 SS P1.4 SPR0 SPR1 CPOL CPHA MSTR DORD SSIG SPEN MSTR SPEN MOSI P1.5 SPEN 时钟逻辑 SPR0 SPR1 clock S P I 时钟(主机) WCOL SPIF 管脚 控制 逻辑 读数据缓冲区     分频器 4, 16, 64, 128 MISO P1.6 M S 8 位移位寄存器 SPI 控制 00xx,xxxx 0000,0000 S M 选择 Reset value SPI 控制寄存器 SPI 状态寄存器   SPI 中断请求 内部 数据 总线 SPI 方框图 SPI 接口有 4 个管脚:SPICLK/P1.7, MOSI/P1.5, MISO/P1.6 和 SS/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 所示。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  201 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 S P I   控制寄存器的位分配(S P C T L - 地址:C E h ) 位 7 6 5 4 3 2 1 0 符 号 S S I G S P E N D O R D M S T R C P O L C P H A S P R 1 S P R 0 复 位 0 0 0 0 0 1 0 0 SPI 控制寄存器的位描述(SPCTL – 地址:CEh) 位 符号 0 SPR0 SPR0/SPR1是SPI 时钟速率选择控制位。 SPR1 SPR1, SPR0:   0        0       -CPU_CLK/4   0        1       -CPU_CLK/16   1        0       -CPU_CLK/64   1        1       -CPU_CLK/128 2 CPHA SPI 时钟相位选择(见SPI图4~图7): 1:数据在SPICLK 的前时钟沿驱动,并在后时钟沿采样。 0:数据在/SS 为低(SSIG=00)时被驱动,在SPICLK 的后时钟 沿被改变,并在前时钟沿被采样。 (注:SSIG=1 时的操作未定义) 3 CPOL SPI 时钟极性(见SPI图4~图7): 1:SPICLK 空闲时为高电平。SPICLK 的前时钟沿为下降沿而后沿为上升沿。 0:SPICLK 空闲时为低电平。SPICLK 的前时钟沿为上升沿而后沿为下降沿。 4 MSTR 主/从模式选择(见SPI 主从选择表)。 5 DORD SPI 数据顺序: 1:数据字的LSB(最低位) 最先发送;0:数据字的MSB(最高位) 最先发送。 6 SPEN SPI 使能。 1:SPI 使能。 0:SPI 被禁止,所有SPI 管脚都作为I/O 口使用。 SSIG /SS 忽略。 1:MSTR(位4)确定器件为主机还是从机。 0:/SS 脚用于确定器件为主机还是从机。/SS 脚可作为I/O 口使用(见SPI 主 从选择表)。 1 7 描 述 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  202 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 SPI 状态寄存器的位分配(SPSTAT – 地址:CDh) 位 7 6 5 4 3 2 1 0 符号 SPIF WCOL - - - - - - 复位 0 0 X X X X X X SPI 状态寄存器的位描述(SPSTAT – 地址:CDh) 位 符号 符号 7 SPIF SPI 传输完成标志。当一次串行传输完成时,SPIF 置位,并当ESPI 和EA 都置位时产生中断。当SPI 处于主模式且SSIG=0 时,如果/SS 为输入 并被驱动为低电平,SPIF 也将置位。SPIF标志通过软件向其写入“1”清零。 6 WCOL SPI 写冲突标志。在数据传输的过程中如果对SPI 数据寄存器SPDAT 执行写 操作,WCOL 将置位。WCOL 标志通过软件向其写入“1”清零。 5 - 0 - 保留 SPI 数据寄存器的位分配(SPDAT – 地址:CFh) 位 7 符 号 MSB 复 位 0 6 5 4 3 2 1 0 LSB 0 0 0 0 0 0 0  SPDAT.7 - SPDAT.0:      传输的数据位 Bit7~Bit0 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  203 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 从机 主机 MISO MISO 8 位移位寄存器 8 位移位寄存器 MOSI MOSI SPICLK SPICLK SPI 时钟发生器 Port /SS  SPI 图 1  SPI 单主机 - 单从机 配置     在上图 SPI 图 1 中,从机的 SSIG(SPCTL.7)为 0,/SS 用于选择从机。SPI 主机可使用任何端口 (包括 P 1 . 4 / S S )来驱动 / S S 脚。 从机 主机 MISO MISO 8 位移位寄存器 8 位移位寄存器 MOSI MOSI SPICLK SPICLK SPI 时钟发生器 SPI 时钟发生器 /SS /SS  SPI 图 2  SPI 双器件配置(器件可互为主从)     上图 SPI 图 2 所示为两个器件互为主从的情况。当没有发生 SPI 操作时,两个器件都可配置为主机 (M S T R = 1 ),将 SSIG 清零并将 P1.4(/SS)配置为准双向模式。当其中一个器件启动传输时,它可将 P 1 . 4 配置为输出并驱动为低电平,这样就强制另一个器件变为从机。 主机 从机 MISO MISO 8 位移位寄存器 8 位移位寄存器 MOSI MOSI SPICLK SPICLK SPI 时钟发生器 Port /SS 8 位移位寄存器 Port /SS  SPI 图 3 SPI 单主机 - 多从机 配置     在上图 SPI 图 3 中,从机的 SSIG(SPCTL.7)为 0,从机通过对应的 /SS  信号被选中。SPI 主机可使用 任何端口(包括 P 1 . 4 / S S )来驱动 / S S   脚。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  204 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 对 SPI 进行配置    下表 所示为主 / 从模式的配置以及模式的使用和传输方向。     SPI 主从模式选择 SPEN SSIG /SS 脚 P1.4 MSTR 主或从 模式 MISO P1.6 MOSI P1.5 SPICLK P1.7 0 X P1.4 X SPI 功 能 禁 止 P1.6 P1.5 P1.7 SPI 禁 止 。P1.4/P1.5/P1.6/P1.7作 为 普 通I/O口 使用 1 0 0 0 从机模式 输出 输入 输入 选择作为从机 1 0 1 0 从机模式 未被选中 高阻 输入 输入 未 被 选 中 。 MISO 为 高 阻 状 态, 以 避 免 总 线 冲 突 输入 输入 P1.4/ SS 配 置 为 输 入 或 准 双 向 口。 SSIG 为 0。如 果 择 /SS 被 驱 动 为 低 电 平, 则 被 选 择 作 为 从 机。 当 SS 变 为 低 电 平 时 ,MSTR将 清 零 。 注 : 当/SS处 于 输 入 模 式 时, 如 被 驱 动 为 低 电 平 且 SSIG=0 时 ,MSTR 位 自 动 清 零。 高阻 高阻 当 主 机 空 闲 时MOSI 和SPICLK 为 高 阻 态 以 避 免 总 线 冲 突 。用 户 必 须 将 SPICLK 上 拉 或 下 拉 ( 根 据 CPOL-SPCTL.3 的 取 值 ) 以 避 免 SPICLK出 现 悬 浮 状态。 输出 输出 作 为 主 机 激 活 时 ,MOSI 和SPICLK 为 推 挽 输 出 1 0 0 1—>0 从机模式 输出 主 (空 闲) 1 0 1 1 输入 主 (激 活) 1 1 P1.4 0 从 输出 输入 输入 1 1 P1.4 1 主 输入 输出 输出 备注 作为从机时的额外注意事项     当 CPHA = 0 时,SSIG 必须为 0,/SS 脚必须取反并且在每个连续的串行字节之间重新设置为高电 平。如果 S P D A T   寄存器在 / S S 有效(低电平)时执行写操作,那么将导致一个写冲突错误。C P H A = 0 且 SSIG=0 时的操作未定义。    当 CPHA = 1 时,SSIG 可以置位。如果 SSIG = 0,/SS 脚可在连续传输之间保持低有效(即一直固 定为低电平)。这种方式有时适用于具有单固定主机和单从机驱动 M I S O 数据线的系统。 作为主机时的额外注意事项    在 SPI 中,传输总是由主机启动的。如果 SPI 使能(SPEN=1)并选择作为主机,主机对 SPI 数据 寄存器的写操作将启动 SPI 时钟发生器和数据的传输。在数据写入 SPDAT 之后的半个到一个 SPI 位时间 后,数据将出现在 M O S I 脚。    需要注意的是,主机可以通过将对应器件的 /SS 脚驱动为低电平实现与之通信。写入主机 SPDAT 寄存 器的数据从 MOSI 脚移出发送到从机的 MOSI 脚。同时从机 SPDAT 寄存器的数据从 MISO 脚移出发送到主机的 M I S O 脚。   传输完一个字节后,S P I 时钟发生器停止,传输完成标志(S P I F )置位并产生一个中断(如果 S P I 中断使能)。主机和从机 CPU 的两个移位寄存器可以看作是一个 16  循环移位寄存器。当数据从主机移位 传送到从机的同时,数据也以相反的方向移入。这意味着在一个移位周期中,主机和从机的数据相互交 换 。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  205 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 通过 /SS 改变模式     如果 SPEN=1, SSIG=0 且 MSTR=1,SPI 使能为主机模式。/SS 脚可配置为输入或准双向模式。这种情 况下,另外一个主机可将该脚驱动为低电平,从而将该器件选择为 S P I   从机并向其发送数据。    为了避免争夺总线,SPI 系统执行以下动作:    1)MSTR 清零并且 CPU 变成从机。这样 SPI 就变成从机。MOSI 和 SPICLK 强制变为输入模式,而 MISO 则变为输出模式。    2)SPSTAT 的 SPIF 标志位置位。如果 SPI 中断已被使能,则产生 SPI 中断。    用户软件必须一直对 MSTR 位进行检测,如果该位被一个从机选择所清零而用户想继续将 SPI 作为主 机,这时就必须重新置位 M S T R ,否则就进入从机模式。 写冲突    SPI 在发送时为单缓冲,在接收时为双缓冲。这样在前一次发送尚未完成之前,不能将新的数据写入 移位寄存器。当发送过程中对数据寄存器进行写操作时,W C O L 位(S P S T A T . 6 )将置位以指示数据冲 突。在这种情况下,当前发送的数据继续发送,而新写入的数据将丢失。    当对主机或从机进行写冲突检测时,主机发生写冲突的情况是很罕见的,因为主机拥有数据传输的完 全控制权。但从机有可能发生写冲突,因为当主机启动传输时,从机无法进行控制。    接收数据时,接收到的数据传送到一个并行读数据缓冲区,这样将释放移位寄存器以进行下一个数据 的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据,否则,前一个接收数据将 丢失。       W C O L 可通过软件向其写入“1 ”清零。 数据模式    时钟相位位(CPHA)允许用户设置采样和改变数据的时钟边沿。时钟极性位 CPOL 允许用户设置时钟极 性。 SPI 图 4~图 7 所示为时钟相位位 CPHA 的不同设定。 时钟周期 1 2 3 4 5 6 7 8 SPICLK (CPOL = 0) SPICLK (CPOL = 1) MOSI(输入) DORD = 0 DORD = 1 MISO(输出) DORD = 0 DORD = 1 MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB (1) SS (如果 SSIG 位= 0) (1) 未定义     SPI 图 4  SPI 从机传输格式(CPHA=0) 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  206 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 时钟周期 1 2 3 4 5 6 7 8 MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 SPICLK (CPOL = 0) SPICLK (CPOL = 1) MOSI(输入) DORD = 0 DORD = 1 MISO(输出) DORD = 0 DORD = 1 (1) LSB MSB SS (如果 SSIG 位= 0) (1) 未定义   SPI  图 5  SPI 从机传输格式(CPHA=1) 时钟周期 1 2 3 4 5 6 7 8 SPICLK (CPOL = 0) SPICLK (CPOL = 1) DORD = 0 MOSI(输出) DORD = 1 MISO(输入) DORD = 0 DORD = 1 MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB SS (如果 SSIG 位= 0)   SPI  图 6  SPI 主机传输格式(CPHA=0) 1 时钟周期 2 3 4 5 6 7 8 SPICLK (CPOL = 0) SPICLK (CPOL = 1) MOSI(输出) DORD = 0 DORD = 1 MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB MISO(输入) DORD = 0 DORD = 1 MSB LSB 6 1 5 2 4 3 3 4 2 5 1 6 LSB MSB SS (如果 SSIG 位= 0)   SPI  图 7  SPI 主机传输格式(CPHA=1) SPI 时钟预分频器选择     SPI 时钟预分频器选择是通过 SPCTL 寄存器中的 SPR1-SPR0 位实现的 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  207 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     12.2   SPI 功能测试程序 1(适用于单主单从系统) ;/* ---  STC International Limited ----------------------------------------- */ ;/* ---  宏晶科技    姚永平    2008/1/6    V1.0 ---------------------------- */ ;/* ---  one_master_one_slave ---------------------------------------------- */ ;/* ---  Mobile: 13922805190 ----------------------------------------------- */ ;/* ---  Fax: 0755-82944243 ------------------------------------------------ */ ;/* ---  Tel: 0755-82948409 ------------------------------------------------ */ ;/* ---  Web: www.STCMCU.com ----------------------------------------------- */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 -- */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 --- */ ;------------------------------------------------------------------------------ ;1. 本示例程序演示 STC12C5Axx 系列 MCU 的 SPI 功能, 适用于 ;   单主单从系统 ;------------------------------------------------------------------------------ ;2. 硬件连接:三线连接 ; ;          主单片机      I/O 口                   I/O 口    从单片机 ; ;      +--------------+  MISO    <-- 位流方向    MISO +--------------+ ;      |     SPI      |<<-----------------------------|     SPI      | ;      |8 位移位寄存器  |                               |8 位移位寄存器  | ;      |              |----------------------------->>|              | ;      +-------+------+  MOSI    位流方向 -->    MOSI +-------^------+ ;              |                                              | ;              |         SCLK                    SCLK         | ;              +--------------------->>-----------------------+ ; ;    除此之外,主单片机的 RS-232 串行口通过 RS-232 转换器与 PC 机的 RS-232 ; 串行口相连接。 ; ;3. SPI  通讯过程: ;    主单片机与从单片机的 SPI 8 位移位寄存器连接成一个循环的 16 位移位寄存器。 ;当主单片机程序向 SPDAT 写入一个字节时,立即启动一个连续的 8 位移位通讯过程: ;主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲,在这串脉冲的驱动下, 主 ;单片机 SPI 8 位移位寄存器中的数据移到了从单片机的 SPI 8 位移位寄存器中; 与此 ;同时,从单片机 SPI 8 位移位寄存器中的数据移到了主单片机的 SPI 8 位移位寄存器 ; 中。利用这样的数据交换机制,主单片机既可向从单片机发送数据,又可读从单片机 ; 中的数据。 ; ;4. 使用方法 ;  a) 修改程序,使 MASTER EQU 1 的那行有效。汇编后的程序代码下载到主单片机中。 ;    b) 修改程序,使 MASTER EQU 0 的那行有效。汇编后的程序代码下载到从单片机中。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  208 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;   c )   给主、从单片机上电。 ;  d) 用串口调试助手(STC 的 ISP 下载程序 STC-ISP.exe 3.2 以上版本提供了该功能) ;     向主单片机发送一串数据。 ;         主单片机的 RS-232 串口每收到一个字节就立刻将收到的字节通过 SPI 口 ;     发送到从单片机中,与此同时主单片机会收到从单片机发回的一个字节(见 3. SPI ;     通讯过程),主单片机又立刻把这个字节通过 RS-232 口发送到 PC 机。 ;         从单片机的 SPI 口收到的数据后,把收到的数据放到自己的 SPDAT 寄存器 ;     中,当下一次主单片机发送一个字节时把数据发回到主单片机。 ;  e) 在串口调试助手接收区观察接收的数据。 ; ;5. 怎样用巡测方式接收 SPI 数据 ;       本示例为中断方式接收 SPI 口数据,若想用巡测方式接收 SPI 数据可以用以下 ;   几行指令实现: ;   Wait_SPI_Receive_Byte: ;       MOV A, SPSTAT                   ;判收到从 SPI 发回的数据否 ;       ANL A, #80H ;       JZ  Wait_SPI_Receive_Byte       ;SPI 未收到数据, 继续等待 ;       MOV   A, SPDAT                  ;SPI 已收到数据, 将收到的数据送累加器 A ;         ... ; ;6. 实验条件: MCU 晶振频率 Fosc = 18.432MHz, PC 机 RS232 串口波特率等于 57600 ;   实验结果: SPI 口传输数据无误。 ;       由于本程序的 RS232 接收,SPI 端口的接收都没有使用接收缓冲区,所以 RS232 ;   串口波特率不要高于 57600,若使用接收缓冲区,波特率可以到 115200  以上。 ;------------------------------------------------------------------------------ ;定义常量 ;----------------- ; 定义功能常量,以下两行注释其中一行,取消另一行注释使之有效 ;MASTER   EQU 1           ;汇编后的程序代码下载到主单片机中 MASTER   EQU 0           ;汇编后的程序代码下载到从单片机中 ;----------------- ;定义波特率自动重装数常量 ;以下波特率是 PCON.7 = 0 时的数值, 若使 PCON.7 = 1 可将波特率加倍 ;RELOAD_8BIT_DATA  EQU 0FFH   ;Fosc=22.1184MHz, Baud = 57600 ;RELOAD_8BIT_DATA  EQU 0FBH   ;Fosc=18.432MHz, Baud=9600, 1T 运行时 Baud=115200 RELOAD_8BIT_DATA   EQU 0F6H   ;Fosc=18.432MHz, Baud=4800, 1T 运行时 Baud=57600 ;RELOAD_8BIT_DATA  EQU 0FFH   ;Fosc=11.059MHz, Baud = 28800、 ;------------------------------------------------------------------------------ ;定义特殊功能寄存器 AUXR    EQU 8EH ;AUXR 特殊功能寄存器的 bit3 是 SPI 中断允许控制位 ESPI ;IE 特殊功能寄存器的 bit5 是 ADC 和 SPI 两个中断共享的总中断允许控制位 EADC_SPI ;要产生 SPI 中断, 需要 ESPI/EADC_SPI/EA 都为 1 ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  209 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;定义 SPI 特殊功能寄存器, 详细说明见本程序的后部或 STC 12C5410AD 中文指南 SPCTL   EQU CEH SPSTAT  EQU CDH SPDAT   EQU CFH EADC_SPI EQU IE.5 ;------------------------------------------------------------------------------ ;定义 SPI 脚 SCLK    EQU P1.7 MISO    EQU P1.6 MOSI    EQU P1.5 SS      EQU P1.4 ;------------------------------------------------------------------------------ ;定义单片机管脚 LED_MCU_START       EQU P3.4 ;------------------------------------------------------------------------------ ;定义变量 Flags       EQU 20H SPI_Receive EQU Flags.0             ;SPI 端口收到数据标志位 SPI_buffer  EQU 30H                 ;该变量用于保存 SPI 端口收到的数据 ;------------------------------------------------------------------------------     ORG   0000H     LJMP  MAIN ;------------------------------------------------------------------------------     ORG   002BH                     ;ADC_SPI 中断服务程序入口     LJMP  ADC_SPI_Interrupt_Routine ;------------------------------------------------------------------------------     ORG   0080H MAIN:     CLR   LED_MCU_START             ;点亮 MCU 开始工作指示灯     MOV   SP, #7FH     ACALL Init_System               ;系统初始化 if MASTER Check_RS232:         JNB   RI, Master_Check_SPI  ;判 RS-232 串口中收到数据否         ;主单片机 RS-232 串口已收到新的数据         ACALL Get_Byte_From_RS232   ;主单片机将 RS-232 串口中收到的数据送到累加器 A         ACALL SPI_Send_Byte         ;主单片机将累加器 A 中的数据发送到从机 SPI         SJMP  Check_RS232 Master_Check_SPI:         JNB   SPI_Receive, Check_RS232 ;判收到从 SPI 发回的数据否         ;主单片机 SPI 端口已收到新的数据         MOV   A, SPI_buffer         ;将 " 从 SPI 发回的数据 " 送到累加器 A         CLR   SPI_Receive           ;清 0 主单片机 SPI 端口收到数据标志位         ACALL RS232_Send_Byte       ;将累加器 A 中的数据发送到 PC 机         SJMP  Check_RS232 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  210 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 else Slave_Check_SPI:         JNB   SPI_Receive, Slave_Check_SPI ;判收到主 SPI 发回的数据否         ;从单片机 SPI 端口已收到新的数据         MOV   A, SPI_buffer         ;取 " 主单片机 SPI 端口发的数据 "         CLR   SPI_Receive           ;清 0 从单片机 SPI 端口收到数据标志位         MOV   SPDAT, A              ;将收到数据送 SPDAT, 准备下一次通讯时发回         SJMP  Slave_Check_SPI endif ;------------------------------------------------------------------------------ ADC_SPI_Interrupt_Routine:          ;ADC_SPI 中断服务程序     ;SPI 中断服务程序     MOV   SPSTAT, #11000000B        ;0C0H, 清 0 标志位 SPIF 和 WCOL                   ;特别注意:是向标志位 SPIF/WCOL 写 1,将 SPIF/WCOL 清成 0                   ;特别注意:不是向标志位 SPIF/WCOL 写 0,将 SPIF/WCOL 清成 0     MOV   A, SPDAT                  ;保存收到的数据     MOV   SPI_buffer, A     SETB  SPI_Receive               ;树立 SPI 端口收到数据标志     RETI ;------------------------------------------------------------------------------ Init_System:     ACALL Initial_UART              ;初始化串口     ACALL Initial_SPI               ;初始化 SPI     MOV   Flags, #0                 ;清标志字     SETB  EA                        ;开总中断     RET ;------------------------------------------------------------------------------ Initial_UART:                       ;初始化串口 ; SCON  Bit:   7       6     5     4     3     2     1    0 ;            SM0/FE   SM1   SM2   REN   TB8   RB8    TI   RI     MOV   SCON, #50H                ;0101,0000 8 位可变波特率, 无奇偶校验     MOV   TMOD, #21H                ;T1 为自动重装模式     MOV   TH1, #RELOAD_8BIT_DATA     MOV   TL1, #RELOAD_8BIT_DATA ;    MOV   PCON, #80H               ;取消本行指令注释,波特率加倍。 ;使以下两行有效,波特率快 12 倍,即波特率 = 4800*12=57600     MOV   A, #01000000B             ;T1 以 1T 的速度计数,是普通 8051 的 12 倍     ORL   AUXR, A     SETB  TR1                       ;启动定时器 1 开始计数     RET ;------------------------------------------------------------------------------ Initial_SPI:                        ;初始化 SPI ;SPI 控制寄存器 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  211 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;          7      6      5      4      3      2      1      0 ;SPCTL   SSIG   SPEN   DORD   MSTR   CPOL   CPHA   SPR1   SPR0 if MASTER     MOV   SPCTL,#11111100B          ;0FCH, 忽略 SS 脚, 设为主机     ;SSIG=1: 忽略 SS 脚     ;SPEN=1:允许 SPI 工作     ;DORD=1:先传低位 LSB     ;MSTR=1:设为主机     ;CPOL=1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。     ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI  模块在后跳变沿采样数据。     ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 else     MOV   SPCTL,#11101100B          ;0ECH, 忽略 SS 脚, 设为从机     ;SSIG=1: 忽略 SS 脚     ;SPEN=1:允许 SPI 工作     ;DORD=1:先传低位 LSB     ;MSTR=0:设为从机     ;CPOL=1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。     ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI  模块在后跳变沿采样数据。     ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 endif     MOV   SPSTAT,#11000000B         ;清 0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)                                     ;向该两个标志位写 "1" 会将它们清 0     MOV   A, #00001000B     ORL   AUXR, A                   ;令 ESPI(AUXR.3)=1,允许 SPIF(SPSTAT.7)产生中断     SETB  EADC_SPI                  ;开 ADC 中断和 SPI 中断共享的总中断控制位     RET ;------------------------------------------------------------------------------ RS232_Send_Byte:                    ;RS232 串口发送一个字节     CLR   TI                        ;清零串口发送中断标志     MOV   SBUF, A RS232_Send_Wait:     JNB   TI, RS232_Send_Wait       ;等待发送完毕, 未发送完毕跳回本行     CLR   TI                        ;清零串口发送中断标志     RET ;------------------------------------------------------------------------------ ;此段程序只有主 MCU 调用 SPI_Send_Byte:                      ;SPI 发送一个字节     CLR   EADC_SPI                  ;关 ADC 中断和 SPI 中断共享的总中断控制位     MOV   SPDAT, A                  ;SPI 发送数据 SPI_Send_Byte_Wait:     MOV   A, SPSTAT                 ;等待 SPIF=1 即等待 SPI 发送完毕     ANL   A, #80H 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  212 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     JZ    SPI_Send_Byte_Wait     SETB  EADC_SPI                  ;开 ADC 中断和 SPI 中断共享的总中断控制位     RET ;------------------------------------------------------------------------------ Get_Byte_From_RS232:                ;取 RS-232 串口中收到的数据送累加器 A     MOV   A, SBUF     CLR   RI     RET ;------------------------------------------------------------------------------     END ;------------------------------------------------------------------------------ ; ;SPI 控制寄存器 ;          7      6      5      4      3      2      1      0 ;SPCTL   SSIG   SPEN   DORD   MSTR   CPOL   CPHA   SPR1   SPR0 ; ;SSIG: 忽略 SS 脚, 如果 SSIG=1, 由 MSTR 位决定 SPI 主模式或从模式, ;      如果 SSIG=0, 由 SS 脚决定 SPI 主模式或从模式。 ;SPEN:SPI 使能位。如果 SPEN=0,SPI 功能被禁止,SPI  脚用作普通 IO 口 ;DORD:SPI  数据传输顺序。 ;      1:先传低位 LSB ;      0:先传高位 MSB ;MSTR:SPI  主 / 从模式选择位 ;CPOL:SPI  时钟信号极性选择位 ;      1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ;      0:SPI  空闲时 SPICLK = 0,前跳变沿是上升沿,后跳变沿是下降沿。 ;CPHA:SPI  时钟信号相位选择位 ;      1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据。 ;      0:当 SS 脚为低(SSIG=0)时数据被驱动到口线,并且在 SPICLK 后跳变沿数据 ;         被改变(被驱动到口线),在 SPICLK 前跳变沿数据被采样。注意:SSIG = 1 ;         时操作未定义。 ;SPR1-SPR0:主模式时 SPI 时钟源选择 ;      00:fosc/4 ;      01:fosc/16 ;      10:fosc/64 ;      11:fosc/128 ; ;    当 CPHA=0,SSIG 必须等于零并且在传输时 SS 脚也必须一直保持为低。当 SS 有效 ;(=0)时向 SPDATA  寄存器写数据就会发生写冲突错误,WCOL  标志被置  1。 ;    当 CPHA=1,SSIG 可以等于 0 或 1。如果 SSIG=0,SS 脚在连续的传输时为 0(可以 ;一直保持为 0)。当系统中只有一个主和一个从 SPI  时,这是首选配置。 ;-------------------- ;SPI 状态寄存器 ;          7      6      5      4      3      2      1      0 ;SPSTAT  SPIF   WCOL     -      -      -      -      -      - 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  213 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;SPIF:SPI  传输结束标志。当一次传输结束时, SPIF  被置  1,如果 SPI  中断被打开: ;      ESPI(AUXR.3)=1,EADC_SPI(IE.5)=1,EA(IE.7)=1, 就引起中断。如果原来 SPI ;      由 SS 脚确定为是主模式(SSIG=0,SS=1),当 SS 变成 0 时,SPIF 也会被置 1, ;      表示 " 模式改变 "。向 SPIF 位写 1 将该标志清 0。 ;WCOL:SPI  写冲突标志。当一个数据还在传输时,又向数据寄存器 SPDAT  写入数据,WCOL ;      就会被被置 1。向 WCOL 位写 1 将该标志清 0。 ;-------------------- ;SPI 主 / 从模式选择 ; ;SPEN SSIG SS MSTR   模式   MISO  MOSI SPICLK    注释 ;  0   X   X   X   禁止 SPI  输入  输入  输入    禁止 SPI 功能 ;  1   0   0   0      从    输出  输入  输入    被选为从 ;  1   0   1   0    未选从  输入  输入  输入    从,但没有被选中 ;  1   0   0  1->0    从    输出  输入  输入    由主变为从 ;  1   0   1   1      主    输入  输出  输出 ;  1   1   X   0      从    输出  输入  输入    从 ;  1   1   X   1      主    输入  输出  输出    主 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  214 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243    12.3   SPI 功能测试程序 2(适用于单主多从系统) ;/* ---  STC International Limited ------------------------------------------ */ ;/* ---  宏晶科技    姚永平    2008/1/6    V1.0 ----------------------------- */ ;/* ---  one_master_more_slave ---------------------------------------------- */ ;/* ---  Mobile: 13922805190 ------------------------------------------------ */ ;/* ---  Fax: 0755-82944243 ------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 ------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com ------------------------------------------------ */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序 --- */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序 ---- */ ;------------------------------------------------------------------------------ ;1. 本示例程序演示 STC12C5Axx 系列 MCU 的 SPI 功能, 适用于 ;   单主多从系统 ;------------------------------------------------------------------------------ ;2. 硬件连接: ; ;          主单片机                                     从单片机 #1 ;      +--------------+    <-- 位流方向                +--------------+ ;      |         MISO |<<-------------------*---------| MISO         | ;      |              |    位流方向 -->      |         |              | ;      |         MOSI |-----------------*---|------->>| MOSI         | ;      |              |                 |   |         |              | ;      |         SCLK |-------------*---|---|------->>| SCLK         | ;      |              |             |   |   |         | __           | ;      |         P1.2 |-------------|---|---|------->>| SS           | ;      |              |             |   |   |         |              | ;      |              |             |   |   |         +--------------+ ;      |              |             |   |   | ;      |              |             |   |   |           从单片机 #2 ;      |              |             |   |   |         +--------------+ ;      |              |             |   |   <<--------| MISO         | ;      |              |             |   |             |              | ;      |              |             |   +----------->>| MOSI         | ;      |              |             |                 |              | ;      |              |             +--------------->>| SCLK         | ;      |              |                               | __           | ;      |         P1.3 |----------------------------->>| SS           | ;      |              |                               |              | ;      +--------------+                               +--------------+ ; ;    除此之外,主单片机的 RS-232 串行口通过 RS-232 转换器与 PC 机的 RS-232 ; 串行口相连接。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  215 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ; ;3. SPI  通讯过程: ;    主单片机与从单片机的 SPI 8 位移位寄存器连接成一个循环的 16 位移位寄存器。 ;当主单片机程序向 SPDAT 写入一个字节时,立即启动一个连续的 8 位移位通讯过程: ;主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲,在这串脉冲的驱动下, 主 ;单片机 SPI 8 位移位寄存器中的数据移到了从单片机的 SPI 8 位移位寄存器中; 与此 ;同时,从单片机 SPI 8 位移位寄存器中的数据移到了主单片机的 SPI 8 位移位寄存器 ; 中。利用这样的数据交换机制,主单片机既可向从单片机发送数据,又可读从单片机 ; 中的数据。 ; ;4. 使用方法 ;  a) 修改程序,使 MASTER_SLAVE EQU 0 的那行有效。汇编后的程序代码下载到 ;     主单片机中。 ;  b) 修改程序,使 MASTER_SLAVE EQU 1 的那行有效。汇编后的程序代码下载到 ;     从单片机 #1 中。 ;  c) 修改程序,使 MASTER_SLAVE EQU 2 的那行有效。汇编后的程序代码下载到 ;     从单片机 #2 中。 ;  d)  给主、从单片机上电。 ;  e) 主单片机用 Slave1_SS 和 Slave2_SS 口线选择当前选中的从单片机, 每一时刻 ;     只有一个从单片机被选中。当 Slave1_SS 的 LED 灯亮时,从单片机 #1 被选中; ;     当 Slave2_SS 的 LED 灯亮时,从单片机 #2 被选中。 ;         用串口调试助手(STC 的 ISP 下载程序 STC-ISP.exe 3.2 以上版本提供了 ;     该功能)向主单片机发送一串数据。主单片机每收到一个字节就立刻将收到的字节 ;     通过 SPI 口发送到当前选中的从单片机中。从单片机 #1 将 SPI 口收到的数据 ;     再放到自己的 SPDAT 寄存器中,当下一次主单片机发送一个字节时把数据发回到 ;     主单片机; 从单片机 #2 将 SPI 口收到的数据加 1 以后再放到自己的 SPDAT ;     寄存器中,当下一次主单片机发送一个字节时把数据发回到主单片机。 ;  f) 在串口调试助手接收区观察接收的数据。 ; ;5. 用巡测方式接收 SPI 数据 ;       本示例为中断方式接收 SPI 口数据,若想用巡测方式接收 SPI 数据可以用以下 ;   几行指令实现: ;   Wait_SPI_Receive_Byte: ;       MOV A, SPSTAT                   ;判收到从 SPI 发回的数据? ;       ANL A, #80H ;       JZ  Wait_SPI_Receive_Byte       ;SPI 未收到数据, 继续等待 ;         ...                           ;SPI 已收到数据 ;         ... ; ;6. 实验条件: MCU 晶振频率 Fosc = 18.432MHz, PC 机 RS232 串口波特率等于 57600 ;   实验结果: SPI 口传输数据无误。 ;------------------------------------------------------------------------------ ;定义常量 ;----------------- ;定义功能常量,以下 3  行注释其中 2  行,使一行有效 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  216 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 MASTER_SLAVE  EQU 0           ;汇编后的程序代码下载到主单片机中 ;MASTER_SLAVE  EQU 1           ;汇编后的程序代码下载到从单片机 #1 中 ;MASTER_SLAVE  EQU 2           ;汇编后的程序代码下载到从单片机 #2 中 ;----------------- ;定义波特率自动重装数常量 ;以下波特率是 PCON.7 = 0 时的数值, 若使 PCON.7 = 1 可将波特率加倍 ;RELOAD_8BIT_DATA  EQU 0FFH   ;Fosc=22.1184MHz, Baud = 57600 ;RELOAD_8BIT_DATA  EQU 0FBH   ;Fosc=18.432MHz, Baud=9600, 1T 运行时 Baud=115200 RELOAD_8BIT_DATA   EQU 0F6H   ;Fosc=18.432MHz, Baud=4800, 1T 运行时 Baud=57600 ;RELOAD_8BIT_DATA  EQU 0FFH   ;Fosc=11.059MHz, Baud = 28800、 ;------------------------------------------------------------------------------ ;定义特殊功能寄存器 AUXR    EQU 8EH ;AUXR 特殊功能寄存器的 bit3 是 SPI 中断允许控制位 ESPI ;IE 特殊功能寄存器的 bit5 是 ADC 和 SPI 两个中断共享的总中断允许控制位 EADC_SPI ;要产生 SPI 中断, 需要 ESPI/EADC_SPI/EA 都为 1 ;------------------------------------------------------------------------------ ;定义 SPI 特殊功能寄存器, 详细说明见本程序的后部 SPCTL           EQU CEH SPSTAT          EQU CDH SPDAT           EQU CFH EADC_SPI        EQU IE.5 ;------------------------------------------------------------------------------ ;定义 SPI 脚 SCLK            EQU P1.7 MISO            EQU P1.6 MOSI            EQU P1.5 SS              EQU P1.4 Slave1_SS       EQU P1.2 Slave2_SS       EQU P1.3 ;------------------------------------------------------------------------------ ;定义单片机管脚 LED_MCU_START   EQU P3.4 ;------------------------------------------------------------------------------ ;定义变量 Flags           EQU 20H SPI_Receive     EQU Flags.0         ;SPI 端口收到数据标志位 T0_10mS_count   EQU 30H             ;该变量用于保存 10 毫秒计数(T0 中断次数) SPI_buffer      EQU 31H             ;该变量用于保存 SPI 端口收到的数据 ;------------------------------------------------------------------------------     ORG   0000H     AJMP  MAIN ;------------------------------------------------------------------------------ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  217 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     ORG   000BH                     ;定时器 0 中断服务程序入口     AJMP  timer0_Routine ;------------------------------------------------------------------------------     ORG   002BH                     ;ADC_SPI 中断服务程序入口     AJMP  ADC_SPI_Interrupt_Routine ;------------------------------------------------------------------------------     ORG   0080H MAIN:     CLR   LED_MCU_START             ;点亮 MCU 开始工作指示灯     MOV   SP, #7FH     ACALL Initial_System            ;系统初始化 if MASTER_SLAVE == 0         CLR   Slave1_SS             ;选择从单片机 #1 为当前的从单片机 Check_RS232:         JNB   RI, Master_Check_SPI  ;判 RS-232 串口中收到数据否         ;主单片机 RS-232 串口已收到新的数据         ACALL Get_Byte_From_RS232   ;主单片机将 RS-232 串口中收到的数据送到累加器 A ;        ACALL RS232_Send_Byte      ;调试用, 将累加器 A 中的数据发送到 PC 机 ;        SJMP  Check_RS232          ;调试用         ACALL SPI_Send_Byte         ;主单片机将累加器 A 中的数据发送到从机 SPI         SJMP  Check_RS232 Master_Check_SPI:         JNB   SPI_Receive, Check_RS232 ;判收到从 SPI 发回的数据否         ;主单片机 SPI 端口已收到新的数据         MOV   A, SPI_buffer         ;将 " 从 SPI 发回的数据 " 送到累加器 A         CLR   SPI_Receive           ;清 0 主单片机 SPI 端口收到数据标志位         ACALL RS232_Send_Byte       ;将累加器 A 中的数据发送到 PC 机         SJMP  Check_RS232 else Slave_Check_SPI:         JNB   SPI_Receive, Slave_Check_SPI ;判收到主 SPI 发回的数据否         ;从单片机 SPI 端口已收到新的数据         MOV   A, SPI_buffer         ;取 " 主单片机 SPI 端口发的数据 "         CLR   SPI_Receive           ;清 0 从单片机 SPI 端口收到数据标志位     if MASTER_SLAVE == 2         ADD  A, #1                 ;如果是从单片机 #2,就把收到的数据加 1     endif         MOV   SPDAT, A              ;将收到数据送 SPDAT, 准备下一次通讯时发回         SJMP  Slave_Check_SPI endif ;------------------------------------------------------------------------------ if MASTER_SLAVE == 0 timer0_Routine:         PUSH  PSW                   ;保存断点现场         PUSH  ACC 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  218 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243         MOV   TH0, #0C4H            ;重装数 = 65536-15360 = 50176 = C400H                                     ;晶振频率 =18.432MHz 时, 每 10mS 中断 1 次         INC   T0_10mS_count         ;10 毫秒计数(T0 中断次数) + 1         MOV   A, #0C7H              ;0C8H = 199, 检测是否中断了 200 次(2 秒)         CLR   C         SUBB  A, T0_10mS_count         JNC   timer0_Exit         CPL   Slave1_SS             ;改变当前选择的从单片机         CPL   Slave2_SS         MOV   T0_10mS_count, #0     ;清 0 10 毫秒计数(T0 中断次数) timer0_Exit:         POP   ACC                   ;恢复断点现场         POP   PSW         RETI else timer0_Routine:                     ;本程序中从单片机不需要使用定时器 0         RETI endif ;------------------------------------------------------------------------------ ADC_SPI_Interrupt_Routine:          ;ADC_SPI 中断服务程序     ;SPI 中断服务程序     MOV   SPSTAT, #11000000B        ;0C0H, 清 0 标志位 SPIF 和 WCOL                   ;特别注意:是向标志位 SPIF/WCOL 写 1,将 SPIF/WCOL 清成 0                   ;特别注意:不是向标志位 SPIF/WCOL 写 0,将 SPIF/WCOL 清成 0     MOV   A, SPDAT                  ;保存收到的数据     MOV   SPI_buffer, A     SETB  SPI_Receive               ;树立 SPI 端口收到数据标志     RETI ;------------------------------------------------------------------------------ Initial_System:     ACALL Initial_UART              ;初始化串口     ACALL Initial_SPI               ;初始化 SPI     SETB  TR0                       ;启动 T0     SETB  ET0                       ;开 T0 中断     MOV   Flags, #0                 ;清标志字     SETB  EA                        ;开总中断     RET ;------------------------------------------------------------------------------ Initial_UART:                       ;初始化串口 ; SCON  Bit:   7       6     5     4     3     2     1    0 ;            SM0/FE   SM1   SM2   REN   TB8   RB8    Tl   Rl     MOV   SCON, #50H                ;0101,0000 8 位可变波特率, 无奇偶校验 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  219 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243      MOV   TMOD, #21H                ;T1 为自动重装模式      MOV   TH1, #RELOAD_8BIT_DATA      MOV   TL1, #RELOAD_8BIT_DATA ;    MOV   PCON, #80H               ;取消本行指令注释,波特率加倍。     ;使以下两行有效,波特率快 12 倍,即波特率 = 4800*12=57600      MOV   A, #01000000B             ;T1 以 1T 的速度计数,是普通 8051 的 12 倍      ORL   AUXR, A      SETB  TR1                       ;启动定时器 1 开始计数      RET ;------------------------------------------------------------------------------ Initial_SPI:                        ;初始化 SPI if MASTER_SLAVE == 0     MOV   SPCTL,#11111100B          ;0FCH, 忽略 SS 脚, 设为主机     ;SSIG=1: 忽略 SS 脚     ;SPEN=1:允许 SPI 工作     ;DORD=1:先传低位 LSB     ;MSTR=1:设为主机     ;CPOL=1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。     ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI  模块在后跳变沿采样数据。     ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 else     MOV   SPCTL,#01101100B          ;6CH, 设为从机, 由 SS 脚决定是否已被选中     ;SSIG=0: 由 SS 脚决定主模式或从模式。     ;SPEN=1:允许 SPI 工作     ;DORD=1:先传低位 LSB     ;MSTR=0:设为从机     ;CPOL=1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。     ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI  模块在后跳变沿采样数据。     ;SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 endif     MOV   SPSTAT,#11000000B         ;清 0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)                                     ;向该两个标志位写 "1" 会将它们清 0     MOV   A, #00001000B     ORL   AUXR, A                   ;令 ESPI(AUXR.3)=1,允许 SPIF(SPSTAT.7)产生中断     SETB  EADC_SPI                  ;开 ADC 中断和 SPI 中断共享的总中断控制位     RET ;------------------------------------------------------------------------------ RS232_Send_Byte:                    ;RS232 串口发送一个字节     CLR   TI                        ;清零串口发送中断标志     MOV   SBUF, A RS232_Send_Wait:     JNB   TI, RS232_Send_Wait       ;等待发送完毕, 未发送完毕跳回本行 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  220 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     CLR   TI                        ;清零串口发送中断标志     RET ;------------------------------------------------------------------------------ ;此段程序只有主 MCU 调用 SPI_Send_Byte:                      ;SPI 发送一个字节     CLR   EADC_SPI                  ;关 ADC 中断和 SPI 中断共享的总中断控制位     MOV   SPDAT, A                  ;SPI 发送数据 SPI_Send_Byte_Wait:     MOV   A, SPSTAT                 ;等待 SPIF=1 即等待 SPI 发送完毕     ANL   A, #80H     JZ    SPI_Send_Byte_Wait     SETB  EADC_SPI                  ;开 ADC 中断和 SPI 中断共享的总中断控制位     RET ;------------------------------------------------------------------------------ Get_Byte_From_RS232:                ;取 RS-232 串口中收到的数据累加器 A     MOV   A, SBUF     CLR   RI     RET ;------------------------------------------------------------------------------     END ;------------------------------------------------------------------------------ ;更详细的资料可以参阅 STC12C5410AD.pdf (中文使用说明)。 ; ;SPI 控制寄存器 ;          7      6      5      4      3      2      1      0 ;SPCTL   SSIG   SPEN   DORD   MSTR   CPOL   CPHA   SPR1   SPR0 ; ;SSIG: 忽略 SS 脚, 如果 SSIG=1, 由 MSTR 位决定主模式或从模式, ;      如果 SSIG=0, 由 SS 脚决定主模式或从模式。  ;SPEN:SPI 使能位。如果 SPEN=0,SPI 功能被禁止,SPI  脚用作普通 IO 口 ;DORD:SPI  数据传输顺序。 ;      1:先传低位 LSB ;      0:先传高位 MSB ;MSTR:主 / 从模式选择位 ;CPOL:SPI  时钟信号极性选择位 ;      1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。 ;      0:SPI  空闲时 SPICLK = 0,前跳变沿是上升沿,后跳变沿是下降沿。 ;CPHA:SPI  时钟信号相位选择位 ;      1:数据由 SPICLK  前跳变沿驱动到口线,后跳变沿采样。 ;      0:当 SS 脚为低(SSIG=0)时数据被驱动到口线,并且在 SPICLK 后跳变沿数据 ;         被改变(被驱动到口线),在 SPICLK 前跳变沿数据被采样。注意:SSIG = 1 ;         时操作未定义。 ;SPR1-SPR0:主模式时 SPI 时钟速率选择 ;      00:fosc/4 ;      01:fosc/16 ;      10:fosc/64 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  221 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 12.4   SPI 功能测试程序 3(适用于单主多从系统,C 语言) 1. 本示例程序演示 STC12C5Axx 系列 MCU 的 SPI 功能, 适用于单主单从系统 2. 硬件连接:三线连接           主单片机      I/O 口                   I/O 口    从单片机       +--------------+  MISO    <-- 位流方向    MISO +--------------+       |     SPI      |<<-----------------------------|     SPI      |       |8 位移位寄存器 |                               |8 位移位寄存器 |       |              |----------------------------->>|              |       +-------+------+  MOSI    位流方向 -->    MOSI +-------^------+               |                                              |               |         SCLK                    SCLK         |               +--------------------->>-----------------------+ 除此之外,主、从单片机的 RS-232 串行口通过 RS-232 转换器与 PC 机的 RS-232 串行口相连接。 3. SPI 通讯过程:     主单片机与从单片机的 SPI 8 位移位寄存器连接成一个循环的 16 位移位寄存器。 当主单片机程序向 SPDAT 写入一个字节时,立即启动一个连续的 8 位移位通讯过程: 主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲,在这串脉冲的驱动下, 主 单片机 SPI 8 位移位寄存器中的数据移到了从单片机的 SPI 8 位移位寄存器中; 与此 同时,从单片机 SPI 8 位移位寄存器中的数据移到了主单片机的 SPI 8 位移位寄存器 中。利用这样的数据交换机制,主单片机既可向从单片机发送数据,又可读从单片机 中的数据。     主单片机将 RS-232 串口收到的数据通过 SPI 口连续地发送到从单片机中。从 单片机的 SPI 口收到的数据后,先将收到的数据发送到 PC 机,用于检验主机向从机 发送数据的正确性。随后主机连续地读从机中的数据,将读回的数据发送到 PC 机, 用于检验主机读从机数据的正确性。 4. 使用方法   a)修改程序,使 #define MASTER 的那行有效。编译后的程序代码下载到主单片机中。   b)修改程序,使 #define MASTER 的那行无效。编译后的程序代码下载到从单片机中。   c) 给主、从单片机上电。   d) 用串口调试助手(STC 的 ISP 下载程序 STC-ISP.exe 3.2 以上版本提供了该功能)     向主单片机发送一串数据。   e) 在串口调试助手接收区观察接收的数据。 5. 实验条件: MCU 晶振频率 Fosc = 18.432MHz, PC 机 RS232 串口波特率等于 115200 //-------------------------------------------------------------------------- typedef unsigned char   INT8U; 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  222 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 typedef unsigned int    INT16U; typedef unsigned long   INT32U; //-------------------------------------------------------------------------- #include "NEW_8051.H" #define SPI_INTERRUPT_VECTOR 9 // 定义常量 //-------------------------------------------------------------------------- #define TRUE  1 #define FALSE 0 //-------------------------------------------------------------------------- //#define MASTER              // 释放本行注释编译后的程序代码下载到主单片机中                              // 注释本行,编译后的程序代码下载到从单片机中 //-------------------------------------------------------------------------- // 使 SSIG = 1, 忽略 SS 脚。 // 定义 SPI 模式常量,只有当 CPOL、CPHA = 0,0 时 SPI 才能正确通讯 //                                                                   测试结果 #define CONFIG_MASTER  0xD0 //11010000 = 0D0H, 忽略 SS 脚,设为主机,fosc/4   OK #define CONFIG_SLAVE   0xC0 //11000000 = 0C0H, 忽略 SS 脚,设为从机,fosc/4   OK //#define CONFIG_MASTER  0xF0 //11110000 = 0F0H,忽略 SS 脚,设为主机,fosc/4  OK //#define CONFIG_SLAVE   0xE0 //11100000 = 0E0H,忽略 SS 脚,设为从机,fosc/4  OK /* sfr SPCTL  = 0xCE; //SPI Control Register: SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0  0000,0100     SSIG=1: 忽略 SS 脚     SPEN=1:允许 SPI 工作     DORD=1:先传低位 LSB     MSTR=0:设为从机  CPOL=1:SPI 空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。  CPHA=1:数据由 SPICLK  前跳变沿驱动到 SPI  口线,SPI  模块在后跳变沿采样数据。  SPR1,SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4 */ //---------------------------------- #define SPIF_WCOL_MASK 0xC0      // 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)掩码 // 晶体频率, 波特率 #define FOSC 18432000 #define BAUD 9600                   //12T: 9600, 1T: 115200 //-------------------------------------------------------------------------- // 定义单片机管脚 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  223 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 // 定义 SPI 脚 //#define SCLK            P1^7 //#define MISO            P1^6 //#define MOSI            P1^5 sbit LED_MCU_START = P3^4; //------------------------------------------------------------------------- // 定义变量 bit   SPI_Receive;                  //SPI 端口收到数据标志位 bit   SPI_status;                   //0: 接收, 1: 发送 INT8U SPI_buffer;                   // 该变量用于保存 SPI 端口收到的数据 #define BUF_SIZE 0x20 INT8U data RS232_point; INT8U data ISP_point; INT8U data buffer[BUF_SIZE]; //-------------------------------------------------------------------------- // 函数 void Initial_SPI(void);             // 初始化 SPI void Init_System(void); INT8U Get_Byte_From_RS232();        // 取 RS-232 串口中收到的数据 RS232_Send_Byte(INT8U ch);          //RS232 串口发送一个字节 SPI_Send_Byte(INT8U ch);            //SPI 发送一个字节 void send_buffer_to_PC(void);       // 将 buffer 中数据发送到 PC 机 void clear_buffer(void); void delay(INT16U d); void SPI_read_from_slave(INT8U n);  //SPI 读从机数据 //-------------------------------------------------------------------------- void main() {     INT32U i=0;     LED_MCU_START = 0;                  // 点亮 MCU 开始工作指示灯     Init_System();                      // 系统初始化     SPI_Receive = 0;                    //SPI 端口收到数据标志位     RS232_point = 0; 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  224 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     ISP_point = 0;     clear_buffer(); #ifdef  MASTER     while(1)     {         if(RI)                          // 判 RS-232 串口收到数据否         {             RI = 0;             if (RS232_point < BUF_SIZE)             { buffer[RS232_point++] = SBUF; }             i = 65000;         }         if (i>0)         {                               // 在一定时间内没有接收到新的数据,             i--;                         // 就将已收到的数据发送出去             if (0 == i)             {                 if (RS232_point > 0)                 {                     ISP_point = 0;                     SPI_status = 1;     //1: SPI 发送                     SPDAT = buffer[ISP_point++]; // 启动 SPI 发送,后续字节由中                                                // 断服务程序发送                     while (ISP_point < RS232_point);                 }                 delay(300);                // 等待从机将接收的数据发送到 PC 机                 SPI_read_from_slave(RS232_point);  //SPI 读从机数据                 send_buffer_to_PC();    // 将 buffer 中数据发送到 PC 机                 clear_buffer();                 SPI_Receive = 0;                 RS232_point = 0;                 ISP_point = 0;                 RI = 0;             }         }     } #else     SPI_Receive = 0;     SPI_status = 0;                     //0: SPI 接收 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  225 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     RS232_point = 0;     ISP_point = 0;     while(1)     {         if (SPI_Receive)         {             SPI_Receive = 0;             i = 10000;         }         if (i>0)         {                                 // 在一定时间内没有接收到新的数据,             i--;                           // 就将已收到的数据发送出去             if (0 == i)             {                 if (!SPI_status)        //0: SPI 接收                 {                     RS232_point = ISP_point;                     ISP_point = 0;                     send_buffer_to_PC();    // 将 buffer 中数据发送到 PC 机                 }                 ISP_point = 0;                 SPI_status = 1;         //1: SPI 发送                 SPI_Receive = 0;                 while(!SPI_Receive);  // 等待发送第一个字节                 delay(50);        // 限定发送时间,超过此段时间后转为接收状态                 clear_buffer();                 RS232_point = 0;                 ISP_point = 0;                 SPI_status = 0;         //0: SPI 接收                 SPI_Receive = 0;             }         }     } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  226 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 #endif } //-------------------------------------------------------------------------- void SPI_Interrupt_Routine (void) interrupt SPI_INTERRUPT_VECTOR //ADC_SPI 中断服务程序入口 {     SPI_buffer = SPDAT;          // 保存收到的数据     SPSTAT = SPIF_WCOL_MASK;     // 清 0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)                 // 特别注意:是向标志位 SPIF/WCOL 写 1,将 SPIF/WCOL 清成 0                 // 特别注意:不是向标志位 SPIF/WCOL 写 0,将 SPIF/WCOL 清成 0     SPI_Receive = 1;                    // 树立 SPI 端口收到数据标志     if (SPI_status)     {                                   //1: SPI 发送         if (ISP_point < RS232_point)         {             SPDAT = buffer[ISP_point];             ISP_point++;         }     }     else     {                                   //0: SPI 接收         if (ISP_point < BUF_SIZE)         {             buffer[ISP_point] = SPI_buffer;             ISP_point++;         }     } } void Initial_RS232(void)             // 初始化串口 {     ES = 0;     SCON  = 0x50;                 // 串口工作模式 1:8 位、可变波特率。     TMOD &= 0x0F;     TMOD |= 0x20;                 //T1 工作模式 2:8 位计数器,自动重装。     TH1 = (256 - FOSC/384/BAUD);    // 自动重装数     TL1 = TH1;     TR1   = 1;                     // 启动 T1。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  227 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     AUXR |= 0x40;                 //T1 以 1T 的速度计数,是普通 8051 的 12 倍。 } void Initial_SPI(void)             // 初始化 SPI { #ifdef MASTER     SPCTL = CONFIG_MASTER;         // 忽略 SS 脚, 设为主机 #else     SPCTL = CONFIG_SLAVE;          // 忽略 SS 脚, 设为从机 #endif     SPSTAT = SPIF_WCOL_MASK;      // 清 0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)                                   // 向该两个标志位写 "1" 会将它们清 0     IE2 |= 0x02;                  // 允许 SPI 中断控制位 } void Init_System(void) {     Initial_RS232();                // 初始化串口     Initial_SPI();                  // 初始化 SPI     EA = 1;                         // 开总中断 } RS232_Send_Byte(INT8U ch)           //RS232 串口发送一个字节 {     TI = 0;                         // 清零串口发送中断标志     SBUF = ch;     while(TI == 0);                 // 等待发送完毕, 未发送完毕跳回本行     TI = 0;                         // 清零串口发送中断标志 } //------------------------------------------------------------------------- void send_buffer_to_PC(void)        // 将 buffer 中数据发送到 PC 机 {     INT8U i;     if (0 == RS232_point) {return;}     RS232_Send_Byte(RS232_point);     for (i=0; i<RS232_point; i++)     { RS232_Send_Byte(buffer[i]); } 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  228 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 } //-------------------------------------------------------------------------- void clear_buffer(void) {     INT8U i;     for (i=0; i<BUF_SIZE; i++)     {         buffer[i] = 0;     } } //-------------------------------------------------------------------------- void delay(INT16U d) {     INT16U i;     while (d--)     {         i = 1000;         while (i--);     } } #ifdef  MASTER void SPI_read_from_slave(INT8U n)   //SPI 读从机数据 {     INT8U j;     clear_buffer();     SPI_status = 0;                 //0: SPI 接收     ISP_point = 0;     SPI_Receive = 0;     SPDAT = 0x00;        // 向从机发 SPI 时钟脉冲, 读从机数据。向 SPDAT 赋值                          // 仅是启动一次 SPI 字节传输过程,在主机的 SCLK 脚上                           // 输出 8 个时钟脉冲     while (!SPI_Receive);     SPI_Receive = 0;     SPI_Receive = 0;     ISP_point = 0;         // 读到的第一个字节应舍弃 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  229 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     for (j=0; j<n; j++)     {         SPDAT = 0x00;      // 向从机发 SPI 时钟脉冲, 读从机数据         while (!SPI_Receive);         SPI_Receive = 0;     } } #endif /* 更详细的资料可以参阅 READ_STC12C5A60S2-2008-11-05.pdf(中文使用说明)。 SPI 控制寄存器           7      6      5      4      3      2      1      0 SPCTL   SSIG   SPEN   DORD   MSTR   CPOL   CPHA   SPR1   SPR0 SSIG: 忽略 SS 脚, 如果 SSIG=1, 由 MSTR 位决定 SPI 主模式或从模式,       如果 SSIG=0, 由 SS 脚决定 SPI 主模式或从模式。 SPEN:SPI 使能位。如果 SPEN=0,SPI 功能被禁止,SPI  脚用作普通 IO 口 DORD:SPI  数据传输顺序。       1:先传低位 LSB       0:先传高位 MSB MSTR:SPI  主 / 从模式选择位 CPOL:SPI  时钟信号极性选择位             1:SPI  空闲时 SPICLK = 1,前跳变沿是下降沿,后跳变沿是上升沿。             0:SPI  空闲时 SPICLK = 0,前跳变沿是上升沿,后跳变沿是下降沿。 CPHA:SPI  时钟信号相位选择位       1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数。       0:当 SS 脚为低(SSIG=0)时数据被驱动到口线,并且在 SPICLK 后跳变沿数据          被改变(被驱动到口线),在 SPICLK 前跳变沿数据被采样。注意:SSIG = 1          时操作未定义。 SPR1-SPR0:主模式时 SPI 时钟源选择                            时钟 = 18.432MHz       00:fosc/4      每字节需 2uS,   2 字节之间约有 2uS 的间隔      250.000k       01:fosc/16     每字节需 4.5uS, 2 字节之间约有 4.5uS 的间隔    111.111K       10:fosc/64     每字节需 20uS,  2 字节之间约有 10uS 的间隔      33.333K       11:fosc/128    每字节需 40uS,  2 字节之间约有 20uS 的间隔      16.666K     当 CPHA=0,SSIG 必须等于零并且在传输时 SS 脚也必须一直保持为低。当 SS 有效 (=0)时向 SPDATA 寄存器写数据就会发生写冲突错误,WCOL 标志被置 1。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  230 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     当 CPHA=1,SSIG 可以等于 0 或 1。如果 SSIG=0,SS 脚在连续的传输时为 0 (可以一直保持为 0)。当系统中只有一个主和一个从 SIP  时,这是首选配置。 ----------------------------------------------------------------------------- SPI 状态寄存器           7      6      5      4      3      2      1      0 SPSTAT  SPIF   WCOL     -      -      -      -      -      - SPIF:SPI  传输结束标志。当一次传输结束时,SPIF 被置  1,如果 SPI  中断被打开:       ESPI(AUXR.3)=1,EADC_SPI(IE.5)=1,EA(IE.7)=1,就引起中断。如果原来 SPI       由 SS 脚确定为是主模式(SSIG=0,SS=1),当 SS 变成 0 时,SPIF 也会被置 1,       表示 " 模式改变 "。向 SPIF 位写 1 将该标志清 0。 WCOL:SPI  写冲突标志。当一个数据还在传输时,又向数据寄存器 SPDAT 写入数据,   WCOL 就会被被置 1。向 WCOL 位写 1 将该标志清 0。 ----------------------------------------------------------------------------- SPI 主 / 从模式选择 2007-12-20  测试结果: SPEN SSIG SS MATR   模式   MISO  MOSI SPICLK    注释   0   X   *   X   禁止 SPI   *      *    *      禁止 SPI 功能   1   0   0   X      从    输出  输入  输入    被选为从   1   0   1   0    未选从  输入  输入  输入    从,但没有被选中   1   0   1   1      主    输入  输出  输出    主   1   1   X   0      从    输出  输入  输入    从, MISO 电平随着 SPDAT 改变   1   1   X   1      主    输入  输出  输出    主, MOSI 电平随着 SPDAT 改变 */ 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  231 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录 A:    内部常规 256 字节 RAM 间接寻址测试程序 ;/* ---  STC International Limited -------------------------------------------- */ ;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ------------------------------- */ ;/* ---  STC12C5201AD 系列单片机 内部常规 RAM 间接寻址测试程序 ------------------ */ ;/* ---  Mobile: 13922805190 -------------------------------------------------- */ ;/* ---  Fax: 0755-82944243 --------------------------------------------------- */ ;/* ---  Tel: 0755-82948409 --------------------------------------------------- */ ;/* ---  Web: www.STCMCU.com -------------------------------------------------- */ ;/* ---  本演示程序在 STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过 ------------- */ ;/* ---  如果要在程序中使用该程序,请在程序中注明使用了宏晶科技的资料及程序  ---- */ ;/* ---  如果要在文章中引用该程序,请在文章中注明使用了宏晶科技的资料及程序  ---- */ TEST_CONST EQU 5AH ;TEST_RAM EQU 03H      ORG 0000H LJMP INITIAL ORG 0050H INITIAL:      MOV MOV R0, #253 R1, #3H TEST_ALL_RAM: MOV R2, #0FFH TEST_ONE_RAM: MOV A, MOV @R1, A CLR A MOV A, @R1 CJNE A, 2H, DJNZ R2, TEST_ONE_RAM INC R2 ERROR_DISPLAY R1 DJNZ R0, TEST_ALL_RAM OK_DISPLAY: MOV P1, #11111110B Wait1:      SJMP Wait1 ERROR_DISPLAY: MOV A, R1 MOV P1, A Wait2:      SJMP Wait2      END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  232 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录 B:     用串行口扩展 I/O 接口     STC12C5201 串行口的方式 0 可用于 I/O 扩展。如果在应用系统中,串行口未被占用,那么将它用来扩 展并行 I / O 口是一种经济、实用的方法。     在操作方式 0 时,串行口作同步移位寄存器,其波特率是固定的,为 fosc/12(fosc 为振荡器频率) 。 数据由 R X D 端(P 3 . 0 )出入,同步移位时钟由 T X D 端(P 3 . 1 )输出。发送、接收的是 8 位数据,低 位在先。     一、用 74HC165 扩展并行输入口      下图是利用两片 74HC165 扩展二个 8 位并行输入口的接口电路图。 12Cxxxx 6 P3.0 P3.1 9 QH 7 QH 5 4 3 14 13 12 11 6 7 4 HC1 6 5 P1.0 5 4 3 14 13 12 11 H G F E D C B A H G F E D C B A 10 10  9 SIN QH SIN S/L 1 7 CP 15 2 7 4 HC1 6 5 QH S/L 8 16 104 1 CP 15 2 8 VCC 16 104 VCC     74HC165 是 8 位并行置入移位寄存器。当移位 / 置入端(S/L)由高到低跳变时,并行输入端的数据置入 寄存器;当 S / L = 1 ,且时钟禁止端(第 1 5 脚)为低电平时,允许时钟输入,这时在时钟脉冲的作用下, 数据将由 Q A 到 Q H 方向移位。     上图中,TXD(P3.1)作为移位脉冲输出端与所有 74HC165 的移位脉冲输入端 CP 相连;RXD(P3.0)作 为串行输入端与 74HC165 的串行输出端 QH 相连;P1.0 用来控制 74HC165 的移位与置入而同 S/L 相连;74HC165 的时钟禁止端(1 5 脚)接地,表示允许时钟输入。当扩展多个 8 位输入口时,两芯片的首尾(Q H 与 S I N ) 相连。     下面的程序是从 16 位扩展口读入 5 组数据(每组二个字节),并把它们转存到内部 RAM 20H 开始的单 元中。 START: MOV R 7 ,# 0 5 H ;设置读入组数 MOV R O ,# 2 0 H ;设置内部 RAM 数据区首址 CLR P1.0 ;并行置入数据,S / L = 0 SETB P1.0 ;允许串行移位 S/L=1 MOV R 1 ,# 0 2 H ;设置每组字节数,即外扩 74LS165 的个数 RXDATA: MOV SCON,#00010000B ;设串行方式 0 ,允许接收,启动接收过程 WAIT: JNB R I ,W A I T ;未接收完一帧,循环等待 CLR RI ;清 R I 标志,准备下次接收 MOV A ,S B U F ;读入数据 MOV @ R 0 ,A ;送至 RAM 缓冲区 INC R0 ;指向下一个地址 DJNZ R1,RXDATA ;为读完一组数据,继续 DJNZ R7,START ;5 组数据未读完重新并行置入 …… ;对数据进行处理 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  233 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     上面的程序对串行接收过程采用的是查询等待的控制方式,如有必要,也可改用中断方式。从理论上 讲,按上图方法扩展的输入口几乎是无限的,但扩展的越多,口的操作速度也就越慢。 二、用 74HC164 扩展并行输出口     74HC164 是 8 位串入并出移位寄存器。下图是利用 74HC164 扩展二个 8 位输出口的接口电路。 12Cxxxx 3 1,2 P3.0 P3.1 P1.0 104 14 7 A,B 4 5 6 10 11 12 13 3 QA QB QC QD QE QF QG QH VCC GND CLR 1,2 7 4 HC1 6 4 9 CP 8 104 14 7 4 5 6 10 11 12 13 QA QB QC QD QE QF QG QH A,B VCC GND CLR 7 4 HC1 6 4 9 CP 8     当单片机串行口工作在方式 0 的发送状态时,串行数据由 P3.0(RXD)送出,移位时钟由 P3.1(TXD) 送出。在移位时钟的作用下,串行口发送缓冲器的数据一位一位地移入 7 4 H C 1 6 4 中。需要指出的是,由 于 7 4 H C 1 6 4 无并行输出控制端,因而在串行输入过程中,其输出端的状态会不断变化,故在某些应用场 合,在 7 4 H C 1 6 4 的输出端应加接输出三态门控制,以便保证串行输入结束后再输出数据。     下面是将 RAM 缓冲区 30H、31H 的内容串行口由 74HC164 并行输出的子程序。 START: MOV R 7 ,# 0 2 H ;设置要发送的字节个数 MOV R 0 ,# 3 0 H ;设置地址指针 MOV SCON,#00H SEND: MOV A ,@ R 0 MOV S B U F ,A ;启动串行口发送过程 WAIT: JNB T I ,W A I T ;一帧数据未发送完,循环等待 CLR TI INC R0 DJNZ R 7 ,S E N D ;设置串行口方式 0 ;取下一个数 RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  234 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录C:     8051 单片机普通 I/O 口驱动 LCD 显示     8051 <33pF <33pF P0.4 P0.5 P0.6 P0.7   EA P4.1  ALE PSEN P2.7 P2.6 P2.5 U2 Seg4 Seg5 Seg6 Seg7 P1.4 P1.3 P1.2 P1.1 P1.0 P4.2  VDD P0.0 P0.1 P0.2 P0.3 Seg3 P3.6 P3.7 XTAL2 XTAL1 VSS P4.0 P2.0 P2.1 P2.2 P2.3 P2.4 P1.5 P1.6 P1.7 RST P3.0 P4.3 P3.1 P3.2 P3.3 P3.4 P3.5 Seg16 Seg17 Seg18 Seg19 Seg20 5.6K  R6 5.6K  R4 5.6K  R5 Com1 Com0 5.6K  R3  R1 10K 7 8 9 10 11 12 13 14 15 16 17 5.6K  R7 Seg13 Seg14 Seg15 Com2 C1 10uF 18 19 20 21 22 23 24 25 26 27 28 VCC 5.6K  R2 21K 6  Seg12 5  Seg11 4  Seg10 3  Seg9 2  Seg8 1 44 43 Seg0 42 Seg1 41 Seg2 40 VCC 39 38 37 36 35 VCC 34 33 32 31 Seg23 30 Seg22 29 Seg21 Com0   0 Com1   1 Seg0   2 Seg1   3 Seg2   4 Seg3   5 Seg4   6 Seg5   7 Seg6   8 Seg7   9 Seg8  10 Seg9  11 Seg10 12 Seg11 13 Seg12 14 Seg13 15 Seg14 16 Seg15 17 Seg16 18 Seg17 19 Seg18 20 Seg19 21 Seg20 22 Seg21 23 Seg22 24 Seg23 25 Com2  26 Com0 Com1 Seg0 Seg1 Seg2 Seg3 Seg4 Seg5 Seg6 Seg7 Seg8 Seg9 Seg10 Seg11 Seg12 Seg13 Seg14 Seg15 Seg16 Seg17 Seg18 Seg19 Seg20 Seg21 Seg22 Seg23 Com2 本资料不提供技术支持,请自行消化吸收 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  235 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 NAME LcdDriver #include<reg52.h> ;************************************************************************************** ;the LCD is 1/3 duty and 1/3 bias; 3Com*24Seg; 9 display RAM; ; ;                    Bit7    Bit6   Bit5   Bit4   Bit3   Bit2   Bit1   Bit0 ;Com0:  Com0Data0:   Seg7    Seg6   Seg5   Seg4   Seg3   Seg2  Seg1   Seg0 ;       Com0Data1:   Seg15   Seg14  Seg13  Seg12  Seg11  Seg10  Seg9   Seg8 ;       Com0Data2:   Seg23   Seg22  Seg21  Seg20  Seg19  Seg18  Seg17  Seg16 ;Com1:  Com1Data0:   Seg7    Seg6   Seg5   Seg4   Seg3   Seg2  Seg1   Seg0 ;       Com1Data1:   Seg15   Seg14  Seg13  Seg12  Seg11  Seg10  Seg9   Seg8 ;       Com1Data2:   Seg23   Seg22  Seg21  Seg20  Seg19  Seg18  Seg17  Seg16 ;Com2:  Com2Data0:   Seg7    Seg6   Seg5   Seg4   Seg3   Seg2  Seg1   Seg0 ;       Com2Data1:   Seg15   Seg14  Seg13  Seg12  Seg11  Seg10  Seg9   Seg8 ;       Com2Data2:   Seg23   Seg22  Seg21  Seg20  Seg19  Seg18  Seg17  Seg16 ;************************************************************************************** ;Com0:  P3^0,P3^1   when P3^0 = P3^1 = 1       then Com0=VCC(=5V); ;                        P3^0 = P3^1 = 0       then Com0=GND(=0V); ;                        P3^0 = 1, P3^1=0      then Com0=1/2 VCC; ;Com1:  P3^2,P3^3   the same as the Com0 ;Com2:  P3^4,P3^5   the same as the Com0 ; sbit SEG0  =P0^0 sbit SEG1  =P0^1 sbit SEG2  =P0^2 sbit SEG3  =P0^3 sbit SEG4  =P0^4 sbit SEG5  =P0^5 sbit SEG6  =P0^6 sbit SEG7  =P0^7 sbit SEG8  =P1^0 sbit SEG9  =P1^1 sbit SEG10 =P1^2 sbit SEG11 =P1^3 sbit SEG12 =P1^4 sbit SEG13 =P1^5 sbit SEG14 =P1^6 sbit SEG15 =P1^7 sbit SEG16 =P2^0 sbit SEG17 =P2^1 sbit SEG18 =P2^2 sbit SEG19 =P2^3 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  236 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 sbit SEG20 =P2^4 sbit SEG21 =P2^5 sbit SEG22 =P2^6 sbit SEG23 =P2^7 ;****************************************************************************************** ;======Interrupt===============================        CSEG AT 0000H        LJMP start        CSEG AT 000BH        LJMP int_t0 ;======register=============================== lcdd_bit SEGMENT BIT        RSEG lcdd_bit        OutFlag:       DBIT 1          ;the output display reverse flag lcdd_data SEGMENT DATA       RSEG lcdd_data       Com0Data0:     DS   1       Com0Data1:     DS   1       Com0Data2:     DS   1       Com1Data0:     DS   1       Com1Data1:     DS   1       Com1Data2:     DS   1       Com2Data0:     DS   1       Com2Data1:     DS   1       Com2Data2:     DS   1       TimeS:         DS   1 ;======Interrupt Code========================== t0_int SEGMENT CODE      RSEG  t0_int      USING 1 ;***************************************************************** ;Time0 interrupt ;ths system crystalloid is 22.1184MHz ;the time to get the Time0 interrupr is 2.5mS ;the whole duty is 2.5mS*6=15mS, including reverse ;***************************************************************** int_t0:     ORL  TL0,#00H     MOV  TH0,#0EEH     PUSH ACC     PUSH PSW 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  237 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243     MOV   PSW,#08H     ACALL OutData     POP   PSW     POP   ACC     RETI ;======SUB CODE================================ uart_sub SEGMENT CODE         RSEG  uart_sub         USING 0 ;****************************************************************** ;initial the display RAM data ;if want to display other,then you may add other data to this RAM ;Com0:   Com0Data0,Com0Data1,Com0Data2 ;Com1:   Com1Data0,Com1Data1,Com1Data2 ;Com2:   Com2Data0,Com0Data1,Com0Data2 ;******************************************************************* InitComData:                      ;it will display "11111111"     MOV Com0Data0,#24H     MOV Com0Data1,#49H     MOV Com0Data2,#92H     MOV Com1Data0,#92H     MOV Com1Data1,#24H     MOV Com1Data2,#49H     MOV Com2Data0,#00H     MOV Com2Data1,#00H     MOV Com2Data2,#00H     RET ;******************************************************************** ;reverse the display data ;******************************************************************** RetComData:     MOV  R0,#Com0Data0              ;get the first data address     MOV  R7,#9 RetCom_0:     MOV  A,@R0     CPL  A     MOV  @R0,A     INC  R0     DJNZ R7,RetCom_0     RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  238 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;********************************************************************** ;get the display Data and send to Output register ;********************************************************************** OutData:     INC  TimeS     MOV  A,TimeS     MOV  P3,#11010101B               ;clear display,all Com are 1/2VCC and invalidate     CJNE A,#01H,OutData_1           ;judge the duty     MOV  P0,Com0Data0     MOV  P1,Com0Data1     MOV  P2,Com0Data2     JNB  OutFlag,OutData_00     MOV  P3,#11010111B               ;Com0 is work and is VCC     RET OutData_00:     MOV  P3,#11010100B               ;Com0 is work and is GND     RET OutData_1:     CJNE A,#02H,OutData_2     MOV  P0,Com1Data0     MOV  P1,Com1Data1     MOV  P2,Com1Data2     JNB  OutFlag,OutData_10     MOV  P3,#11011101B               ;Com1 is work and is VCC     RET OutData_10:     MOV  P3,#11010001B               ;Com1 is work and is GND     RET OutData_2:     MOV  P0,Com2Data0     MOV  P1,Com2Data1     MOV  P2,Com2Data2     JNB  OutFlag,OutData_20     MOV  P3,#11110101B               ;Com2 is work and is VCC     SJMP OutData_21 OutData_20:     MOV  P3,#11000101B               ;Com2 is work and is GND OutData_21:     MOV   TimeS,#00H     ACALL RetComData     CPL   OutFlag     RET 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  239 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 ;======Main Code=============================== uart_main SEGMENT CODE         RSEG  uart_main         USING 0 start:  MOV   SP,#40H  CLR   OutFlag  MOV   TimeS,#00H  MOV   TL0,#00H  MOV   TH0,#0EEH  MOV   TMOD,#01H  MOV   IE,#82H  ACALL InitComData  SETB  TR0 Main:      NOP      SJMP Main END 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  240 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录D:   一个 I/O 口驱动发光二极管并扫描按键 Vcc 10K 1K P1.7 1K Vcc 10K 1K P1.6 1K     利用 STC12C5201AD 系列单片机的 I/O 口可设置成弱上拉,强上拉(推挽)输出,仅为输入(高阻),开漏四种 模式的特性,可以利用 STC12C5201AD 系列单片机的 I/O 口同时作为发光二极管驱动及按键检测用,可以大幅 节省 I / O 口。    当驱动发光二极管时,将该 I/O 口设置成强推挽输出,输出高即可点亮发光二极管。     当检测按键时,将该 I / O 口设置成弱上拉输入,再读外部口的状态,即可检测按键。 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  241 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录 E:  STC12C5201AD 系列单片机应用注意事项 关于复位电路: 晶振频率在 1 2 M 以下时: 可以不用外部复位电路,原复位电路可以保留,也可以不用,不用时复位脚可经 过 1K 电阻短接到地,或者直接短接到地。不过建议设计时 PCB 板上保留 R/C 复位电路,实际使用时再决定用 或不用。 关于时钟: 如果使用内部 R/C 振荡器时钟(8MHz~16MHz,制造误差加温漂),XTAL1 和 XTAL2 脚浮空. 如果外部时钟频率在27MHz以上时,建议采用实际基本频率就是标称频率的晶体,不要采用三泛音的晶体(基本 频率是标称频率的 1/3),因为外围参数搭配不当,时钟往往振荡在标称频率的 1/3,即基频.或直接使用外部有 源石英晶体振荡器,时钟从 XTAL1 脚输入,XTAL2 脚必须浮空. 关于 I / O 口: 少数用户反映 I/O 口有损坏现象,后发现是 有些是 I/O 口由低变高读外部状态时,读不对,实际没有损坏,软件处理一下即可     是因为 1T 的 8051 单片机速度太快了,软件执行由低变高指令后立即读外部状态,此时由于实际输出还没 有     变高,就有可能读不对,正确的方法是在软件设置由低变高后加 1 到 2 个空操作指令延时,再读就对了. 有些实际没有损坏,加上拉电阻就 OK 了     是因为外围接的是 SPI/I2C 等漏极开漏的电路,要加 10K 上拉电阻.     有些是外围接的是 NPN 三极管,没有加上拉电阻,其实基极串多大电阻,I/O 口就应该上拉多大的电阻,     或者将该 I/O 口设置为强推挽输出. 有些确实是损坏了,原因:     发现有些是驱动 LED 发光二极管没有加限流电阻,建议加 1K 以上的限流电阻,至少也要加 470 欧姆以上     发现有些是做行列矩阵按键扫描电路时,实际工作时没有加限流电阻,实际工作时可能出现 2 个 I/O 口均     输出为低,并且在按键按下时,短接在一起,我们知道一个CMOS 电路的2 个输出脚不应该直接短接在一起,     按键扫描电路中,此时一个口为了读另外一个口的状态,必须先置高才能读另外一个口的状态,而 8051 单 片     机的弱上拉口在由 0 变为 1 时,会有 2 个时钟的强推挽高输出电流,输出到另外一个输出为低的 I/O 口,就     有可能造成I/O口损坏.建议在其中的一侧加1K限流电阻,或者在软件处理上,不要出现按键两端的I/O口     同时为低. 关于电源:      在电源两端应该加一个 47uF 以上的电解电容和一个 0.1uF 的小电容,进行电源去藕滤波. STC12C5205/5206,STC12LE5205/5206 下载用户程序时需将 P1.0/P1.1 短接到地 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  242 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录 F:      STC12C5A60S2 系列单片机取代传统 8051 单片机注意事项     STC12C5A60S2 系列单片机的定时器 0/ 定时器 1/ 串行口与传统 8051 完全兼容,上电复位后,定时器 部分缺省还是除 1 2 再计数的,而串口由定时器 1 控制速度, 所以,定时器 / 串口完全兼容。    增加了独立波特率发生器,省去了传统 8052 的定时器 2,如是用 T2 做波特率的,请改用独立波特率发 生器做波特率发生器。     传统 8051 的 111 条指令执行速度全面提速,最快的指令快 24 倍,最慢的指令快 3 倍.靠软件延时实现精 确延时的程序需要调整。    其它需注意的细节: ALE:     传统 8051 单片机的 ALE 脚对系统时钟进行 6 分频输出,可对外提供时钟,STC12C5Axx 系列不对外输 出时钟,如果传统设计利用 ALE 脚对外输出时钟,请利用 STC12C5Axx 系列的可编程时钟输出脚对外输出时钟 (CLKOUT0/CLKOUT1/CLKOUT2)或 XTAL2 脚串一个 200 欧姆电阻对外输出时钟.    传统 8051 单片机时钟频率较高时,ALE 脚是一个干扰源,所以 STC89 系列单片机增加了 AUXR 特殊功 能寄存器,其中的 Bit0/ALEOFF 位允许禁止 ALE 对系统时钟分频输出。而 STC12C5Axx 系列单片机直接禁 止 ALE 脚对系统时钟进行 6 分频输出,彻底清除此干扰源.也有利于系统的抗干扰设计.请自行比较如下的寄 存器. STC89 系列的 AUXR 寄存器: Mnemonic Add Name   7  6  5  4  3  2     1  0 Reset value AUXR 8Eh Auxiliary  Register  0  -  -  -  -  -  - EXTRAM ALEOFF xxxx,xx00 ALEOFF 0: ALE 脚对系统时钟进行 6 分频输出 1: ALE 脚仅在对外部 64K 数据总线进行 MOVX 指令时才有地址锁存信号输出 STC12C5A60S2 系列的 AUXR 寄存器: Mnemonic Add Name AUXR  7  6    5  4  3  2  1  0 Reset Value 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS 0000,0000 S1BRS:   0, 缺省,串口 1 波特率发生器选择定时器 1,S1BRS 是串口 1 波特率发生器选择位          1, 独立波特率发生器作为串口 1 的波特率发生器,此时定时器 1 与串口无关 PSEN: 传统 8031/8032 有 PSEN 信号可以跑外部程序,可以外扩外部程序存储器.现在 STC11/10xx 系列单片机由于是 系统晶片概念,内部有大容量程序存储器,不需外扩外部程序存储器,所以直接将 PSEN 信号去除,可以当普通 I/O 口使用. 普通 I/O 口既作为输入又作为输出: 传统 8051 单片机执行 I/O 口操作,由高变低或由低变高,以及读外部状态都是 12 个时钟,而现在 STC11/10xx 系列单片机执行相应的操作是 4 个时钟.传统 8051 单片机如果对外输出为低,直接读外部状态是读不对的.必 须先将 I/O 口置高才能够读对,而传统 8051 单片机由低变高的指令是 12 个时钟,该指令执行完成后,该 I/O 口 也确实已变高.故可以紧跟着由低变高的指令后面,直接执行读该 I/O 口状态指令.而 STC11/10xx 系列单片机 由于执行由低变高的指令是 4 个时钟,太快了,相应的指令执行完以后,I/O 口还没有变高,要再过一个时钟之 后,该 I/O 口才可以变高.故建议此状况下增加 2 个空操作延时指令再读外部口的状态. P4 口: 最新 STC11/10xx 系列单片机 P4 口地址在 C0H,有完整的 P4 口(P4.0-P4.7),未扩展外部 INT2/INT3 中断 传统 STC89 系列单片机的 P4 口地址在 E8H,P4 口只有一半(P4.0-P4.3),P4 有扩展外部 INT2/INT3 中断 如需要 STC11/10 系列单片机的高速性能,又需要在 P4 口上增加 2 个外部中断,请使用 STC12C5Axx 系列单片机 I/O 口驱动能力: 最新 STC11/10xx 系列单片机 I/O 口的灌电流是 20mA,驱动能力超强,驱动大电流时,不容易烧坏. 传统 STC89Cxx 系列单片机 I/O 口的灌电流是 6mA,驱动能力不够强,不能驱动大电流,建议使用 STC11/10xx 系 列 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  243 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 中断优先级: 最新 STC11/10xx 系列单片机中断优先级是 2 级,兼容传统 8051 传统 STC89 系列增强型单片机中断优先级是 4 级,增加了 IPH 寄存器,与 IPH 寄存器组合使用,支持 4 级优先级 如需要 STC11/10 系列单片机的高速性能,又需要 4 级中断优先级,请使用 STC12C5Axx 系列单片机 看门狗: 最新 STC11/10xx 系列单片机的看门狗寄存器 WDT_CONTR 的地址在 C1H,增加了看门狗复位标志位 Mnemonic WDT_CONTR Add Name  7  6  5  4  3  2  1  0 Reset Value C1h Watch-Dog-Timer Control register  WDT_FLAG  - EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000 传统 STC89 系列增强型单片机看门狗寄存器 WDT_CONTR 的地址在 E1H,没有看门狗复位标志位 Mnemonic WDT_CONTR Add Name  7  6  5  4 E1h Watch-Dog-Timer Control register  3  -  - EN_WDT CLR_WDT IDLE_WDT  2  1  0 Reset Value PS2 PS1 PS0 xx00,0000 最新 STC12C5Axx 系列单片机的看门狗在 ISP 烧录程序可设置上电复位后直接启动看门狗,而传统 STC89 系列 单片机无此功能.故最新 STC11/10xx 系列单片机看门狗更可靠. EEPROM STC12C5Axx单片机ISP/IAP控制寄存器地址和STC89xx系列单片机ISP/IAP控制寄存器地址不同如下: Mnemonic Add Name STC12C5Axx系列   IAP_DATA STC89xx    系列    ISP_DATA C2h E2h ISP/IAP  Flash Data  Register  7 1111,1111 STC12C5Axx系列  IAP_ADDRH C3h STC89xx    系列   ISP_ADDRH E3h ISP/IAP  Flash Address  High 0000,0000 STC12C5Axx系列  IAP_ADDRL C4h STC89xx     系列  ISP_ADDRL E4h ISP/IAP  Flash Address  Low 0000,0000 STC12C5Axx系列    IAP_CMD STC89xx    系列     ISP_CMD C5h E5h ISP/IAP  Flash Command  Register STC12C5Axx系列   IAP_TRIG STC89xx    系列    ISP_TRIG C6h E6h ISP/IAP  Flash Command  Trigger STC12C5Axx系列  IAP_CONTR C7h STC89xx     系列  ISP_CONTR E7h ISP/IAP  Control Register  -  6  -  5  -  4  -  3  2  -  -  1  0 Reset Value MS1 MS0 xxxx,xx00 xxxx,xxxx IAPEN SWBS SWRST  CMD_FAIL  - WT2 WT1 WT0 0000,x000       - ISP/IAP_TRIG 寄存器有效启动 IAP 操作,需顺序送入的数据不一样: STC12C5Axx 系列单片机的 ISP/IAP 命令要生效,要对 IAP_TRIG 寄存器按顺序先送 5Ah,再送 A5h 方可 STC89xx    系列单片机的 ISP/IAP 命令要生效,要对 IAP_TRIG 寄存器按顺序先送 46h,再送 B9h 方可 EEPROM 起始地址不一样: STC12C5Axx 系列单片机的 EEPROM 起始地址全部从 0000h 开始,每个扇区 512 字节 STC89xx    系列单片机的 EEPROM 起始地址分别有从 1000h/2000h/4000h/8000h 开始的,程序兼容性不够好. 外部时钟和内部时钟: 最新 STC12C5Axx 系列单片机有内部 R/C 振荡器作为系统时钟,一般情况下,44/40 脚封装单片机出厂时的设置 是使用外部时钟,20/18/16 脚封装单片机出厂时的设置是使用内部 R/C 振荡器作为系统时钟,用户可在 ISP 烧 录用户程序时任意选择使用内部 R/C 时钟或外部晶体 / 时钟. 传统 STC89 系列单片机只能使用外部晶体或时钟作为系统时钟. 功耗: 功耗由 2 部分组成,晶体振荡器放大电路的功耗和单片机的数字电路功耗组成, 晶体振荡器放大电路的功耗: 最新 STC12C5Axx 系列单片机比 STC89xx 系列低. 单片机的数字电路功耗:时钟频率越高,功耗越大,最新STC12C5Axx系列单片机在相同工作频率下,指令执行速 度比传统 STC89 系列单片机快 3-24 倍,故可用较低的时钟频率工作,这样功耗更低.建议低功耗设计系统外接 4-6MHz 的晶体或用内部 R/C 振荡器作为系统时钟,并利用内部的时钟分频器对时钟进行分频,以较低的频率工 作,这样单片机的功耗更低 掉电唤醒: 最新 STC12C5Axx 系列单片机支持外部中断模式是下降沿就下降沿唤醒,是低电平就低电平唤醒,传统 STC89系列单片机是外部中断口只要是低电平就唤醒,另最新STC11xx系列还有内部专用掉电唤醒定时器可唤 醒,另外,STC12C5Axx 系列掉电唤醒延时时间可选:32768/16384/8192/4096 个时钟,STC89 系列固定是 1024 个 时钟 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  244 宏晶STC官方网站: www.STCMCU.com   Mobile:13922805190(姚永平)   Tel:0755-82948411  Fax: 0755-82944243 附录 G:             如何采购     请尽量从宏晶深圳直接采购,以确保质量和服务,零售 1 片起,您从银行汇款,或网上汇款, 我方安排快递发货,正常 1 - 3 天可以收到。 TEL: 0755-82948411,82948412 FAX: 0755-82944243 全球最大的 8051 单片机设计公司  官方网站:www.STCMCU.com  STC12C5A60S2 系列 1T 8051 单片机中文指南  245
STC12C5A08S2-35I-LQFP44 价格&库存

很抱歉,暂时无法提供与“STC12C5A08S2-35I-LQFP44”相匹配的价格&库存,您可以联系我们找货

免费人工找货