STC12C5412,  STC12C5412AD
STC12C5410,  STC12C5410AD
STC12C5408,  STC12C5408AD
STC12C5406,  STC12C5406AD
STC12C5404,  STC12C5404AD
STC12C5402,  STC12C5402AD
    STC12C5410AD 系列单片机器件手册
技术支援:宏晶科技(深圳
   www.MCU-Memory.com       support@MCU-Memory.com
Update date: 2006-4-15  请随时注意更新
                        --高速,高可靠
                         ---低功耗,超低价
                         ---无法解密
                        --强抗静电强抗干扰
STC12LE5412, STC12LE5412AD
STC12LE5410, STC12LE5410AD
STC12LE5408, STC12LE5408AD
STC12LE5406, STC12LE5406AD
STC12LE5404, STC12LE5404AD
STC12LE5402, STC12LE5402AD
                        --- 个时钟机器周期8051
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
领导业界革命    覆盖市场需求
宏晶科技是新一代增强型8051单片机标准的制定者致力于提供满足中国市场需求的世界级高性能单片机技术在业内处于领先地位销售网络覆盖全国在保
证质量的基础上以极低的价格和完善的服务赢得了客户的长期信赖。在广受欢迎的STC89C51全系列单片机的基础上,现全力推出个时钟机器周期”
单片机全面提升8051单片机性能欢迎海内外厂家前来洽谈合作新客户请直接联系深圳以获得更好的技术支持与服务
STC 12C5410AD系列 1T 8051 单片机
DIP-20SOP-20,(超小封装 TSSOP-20 定货)
STC12C2052STC12C4052不带 A/D转换
STC12C2052ADSTC12C4052ADA/D转换
 
新客户请直接联系深圳以获得更好的技术支持和服务
专业单片机存储器供应商
 欢迎海内外厂家前来洽谈合作
   网址www.MCU-Memory.com    技术支持13922805190
     从网上下载样品申请单,
   传真至深圳申请STC 单片机
    样片ISP 下载线 编程工具
免费索取
个时钟机器周期,超小封装8051单片机
●高速:1 个时钟机器周期RISC8051内核,速度比普通8051 12
●宽电压5.53.4V2.03.8VSTC12LE5410AD 系列
低功耗设计空闲模式掉电模式可由外部中断唤醒
工作频率35MHz相当于普通8051:0420MHz
      -实际可到 48MHz相当于8051 0576MHz
●时钟:外部晶体或内部RC振荡器可选 ISP 下载编程用户程序时设置
12K/10K/8K/6K/4K/2K 字节片内Flash程序存储器擦写次数 10 万次以上
512字节片内RAM 数据存储器
芯片内PROM功能
ISP / IAP在系统可编程 在应用可编程无需仿真器
10ADC,8 通道,STC12C2052AD系列为 ADC
通道捕获 比较单元(PWM/PCA/CCU), STC12C2052AD 系列为 通道
     --- 也可用来再实现个定时器或 个外部中断(支持上升沿 下降沿中断
个硬件16 位定时器,兼容普通 8051 的定时器 PCA 还可再实现个定时器
●硬件看门狗(WDT
高速SPI 通信端口
全双工异步串行口(UART),兼容普通8051的串口
●先进的指令集结构,兼容普通8051 指令集
     4 位通用工作寄存器(共 32 个通用寄存器
      有硬件乘法 除法指令
STC12C5410/STC12C2052系列主要性能
个时钟机器周期高速、高可靠PWM路高速A/D转换
在系统可编程无需编程器可远程升级
可送 STC-ISP 下载编程器,1 万片
内部集成 MAX810 专用复位电路原复位电路可以
保留,也可以不用不用时 RESET 脚直接短到地
个时钟 机器周期,可用低频晶振,大幅降低 EMI
      -出口欧美的有力保证
超低功耗
掉电模式:        典型功耗    <0.1μ
空闲模式:     典型功耗   <1.3mA
正常工作模式:  典型功耗   2.7mA - 7mA
掉电模式可由外部中断唤醒适用于电池
   供电系统如水表气表、便携设备等
选择 STC12C5410AD 系列单片机的理由
超强抗干扰
高抗静电(ESD 保护
轻松过4KV 快速脉冲干扰(EFT测试
宽电压,不怕电源抖动
宽温度范围,-40℃~85
I/O口经过特殊处理
单片机内部的电源供电系统经过特殊处理
单片机内部的时钟电路经过特殊处理
单片机内部的复位电路经过特殊处理
单片机内部的看门狗电路经过特殊处理
加密性强无法解密
XTAL2      4         17      P1.5/MOSI/ADC5
Gnd      10        11      P3.7/PWM0
XTAL1      5         16      P1.4/SS/ADC4
RST      1         20      VCC
RxD/P3.0      2         19      P1.7/SCLK/ADC7
TxD/P3.1      3         18      P1.6/MISO/ADC6
INT0/P3.2      6         15      P1.3/ADC3
INT1/P3.3      7         14      P1.2/ADC2
ECI/T0/P3.4      8         13      P1.1/ADC1
PWM1/T1/P3.5      9         12      P1.0/ADC0
XTAL2      6         23      P1.5/MOSI/ADC5
PWM3/PCA3/P2.4      12        17      P3.7/PCA0/PWM0
XTAL1      7         22      P1.4/SS/ADC4
RST      3         26      P2.0/PCA2/PWM2
RxD/P3.0      4         25      P1.7/SCLK/ADC7
TxD/P3.1      5         24      P1.6/MISO/ADC6
INT0/P3.2      8         21      P1.3/ADC3
INT1/P3.3      9         20      P1.2/ADC2
ECI/T0/P3.4      10        19      P1.1/ADC1
PWM1/PCA1/T1/P3.5      11        18      P1.0/ADC0
P2.3      2         27      P2.1
P2.2      1         28      VDD
P2.5      13        16      P2.7
VSS      14        15      P2.6
DIP-28窄体)/ SOP-28
大客户特价支持
 STC12C1052人民币 3.8
P2.0/PWM2
TxD/P3.1
INT0/P3.2
P0.0
XTAL2
XTAL1
P0.1
PWM1/T1/P3.5
INT1/P3.3
ECI/T0/P3.4
14
10
11
12
13
29
28
27
26
25
24
23
22
21
ADC0/P1.0
PWM0/P3.7
P2.7
P2.6
VSS
P2.5
PWM3/P2.4
P1.7/SCLK/ADC7
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
P2.1
VDD
P2.2
P2.3
RST
P3.0/RxD
32
31
30
15
16
17
18
19
20
通用I/O 口(27/23/15 ), 复位后为  准双向口 弱上拉普通8051 传统 I/O 口)
      可设置成四种模式:准双向口弱上拉,推挽强上拉,仅为输入 高阻,开漏
      每个I/O 口驱动能力均可达到 20mA但整个芯片最大不得超过55mA
DIP-28/20SOP-28/20 超小封装 8051
单时钟 1T
8051  CPU
1/2/4/8/10/12K
字节Flash
程序存储器
512/256字节
数据 RAM
1K字节
EEPROM
Port1Port3
可配置I/O
Port2Port0
可配置I/O
UART全双工
异步串行口
ISP / IAP
Timer 0
Timer 1
WDT
硬件看门狗
通道
高速A/D
PWM/PCA/CCU
捕获 比较单元
可配置振荡器
片内
R/C振荡器
晶体或
谐振器
XTAL2
XTAL1
电源监控
(上电复位
掉电复位
CPU时钟
SPI
深  Tel:0755-82948409   82948410     Fax0755-82944243   82905966
广州办Tel:020-38851405   38850557     Fax:020-38850581
上海办Te021-53560136    53560138     Fax021-53080587
北京办Tel:010-62538687     62634001      Fax010-62538683
PLCC-32
无法解密
ISP/IAP
ISP/IAP
ISP / IAP
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
STC 89 系列单片机选型一览表   超低价
 
新客户请直接联系深圳以获得更好的技术支持和服务
专业单片机存储器供应商
 
欢迎海内外厂家前来洽谈合作
   网址www.MCU-Memory.com    技术支持13922805190
STC 89 系列单片机高速、高可靠、在线编程
        提升的是性能降低的是成本
单倍速和
双倍速可
ISP
反复设置
P4口地址 0E8H
INT2/P4.3
INT3/P4.2
P4口均可位寻址
A/D(高速)可做
按键扫描
电池电压检测
掉电检测
音量、频谱检测等
4.7
DIP-40PLCC-44PQFP-44封装(RC/RD+系列PLCCPQFPP4口地址E8H,AD系列P4 口为 C0H)
RC/RD+系列 PLCCPQFP多两个外部中断P4.2/INT3P4.3/INT2 P4 口均可位寻址
5V: 5.5V3.8V 乃至3.4V24M以下)3V: 3.6V2.4V乃至 2.0V仅针对 RC/RD+ 系列
   真正的看门狗可放心省去外部看门狗缺省为关闭打开后无法关闭单倍速和双倍速可反复设置
    时钟 机器周期”和“12时钟 机器周期”可在 ISP 编程时反复设置新的设置冷启动后才生效
 STC89LE516AD58AD54AD52AD51AD系列单片机带高速A/D转换
关于单片机说明管脚与流行的8051兼容    大客户超低价
在系统可编程无需编程器可远程升级
可送 STC-ISP下载编程器,1 万片
可供应内部集成MAX810专用复位电路的单片机
只有 版本才有内部集成专用复位电路原复位
电路可以保留也可以不用不用时 RESET 脚直
接短到地
三大降低单片机时钟对外部电磁辐射的措施
     —— 出口欧美的有力保证
禁止ALE输出
如选时钟机器周期外部时钟频率可降一半
单片机时钟振荡器增益可设为1/2gain
超低功耗
掉电模式        典型功耗    <0.1 μ
空闲模式:      典型功耗   2mA
正常工作模式 典型功耗    4mA - 7mA
掉电模式可由外部中断唤醒适用于电池
    供电系统,如水表、气表、便携设备等
选择 STC89C52RC 系列
     STC89C58RD+ 系列单片机的理由
超强抗干扰
高抗静电ESD保护
轻松过2KV/4KV快速脉冲干扰(EFT测试
宽电压不怕电源抖动
宽温度范围,-40℃~85
I/O口经过特殊处理
单片机内部的电源供电系统经过特殊处理
单片机内部的时钟电路经过特殊处理
单片机内部的复位电路经过特殊处理
单片机内部的看门狗电路经过特殊处理
加密性强无法解密
 从网上下载样品申请单,
 传真至深圳申请STC 单片
机样片及 ISP下载线编程工具
免费索取
1280 字节
SRAM
E2PROM
Data Flash
双数据
指针
看门狗
8/16/32/64k
字节
闪存
内置系统
ISP
监控程序
四个 8
并行端口
+
P4.0P4.3
四个附送
I/O
端口
UART串口
3
个定时器
A / D
不加价
微处理器
低功耗
超低价
高速0-90M), 高可靠
 
  掉电模式< 0.1μ 空闲模式
2mA
集成
MAX810
专用复位电路
IAP STC
IAP
8051
P0
P1
P2
P3
P4 (E8H)
P
4
STC 89LE516RD+ 0~80M 64K 1280
STC 89LE54 RD+   0~80M 16K 1280 16K
STC 89LE52 RC   0~80M 8K 512 2K
STC 89C516 RD+ 0~80M 64K 1280
STC 89C54 RD+  0~80M 16K 1280 16K
STC 89C52 RC  0~80M 8K 512 2K
E2P
ROM
字节
STC 89LE53 RC 0~80M 15K 512
STC 89C51 RC ~80M 4K 512 2K
  5V
STC 89LE51 RC 0~80M 4K 512 2K
STC 89LE58 RD+   0~80M 32K 1280 16K
STC 89C53 RC 0~80M 15K 512
STC 89C58 RD+ 80M 32K 1280 16K
  3V
  Flash
  存储器
 降低
 EMI
    最 高 时 
    Hz  I
S
P
 I
A
P
STC 89C55 RD+  0~80M 20K 1280 16K
  RAM
  字节
另有STC89LE516AD 系列单片机
STC 89LE516AD  90M3.61.9V 64K 512
 A
 /
 D
TXD/P3.1        11               30        ALE/PROG
DIP-40
RST          9                32        P0.7/AD7
P1.3         4                 37        P0.2/AD2
P1.5        6                35        P0.4/AD4
RXD/P3.0         10               31         EA
INT0/P3.2        12               29        PSEN
INT1/P3.3        13              28       P2.7/A15
T0/P3.4        14              27        P2.6/A14
T1/P3.5        15              26         P2.5/A13
WR/P3.6        16              25         P2.4/A12
RD/P3.7        17              24        P2.3/A11
XTAL2        18               23        P2.2/A10
XTAL1        19               22        P2.1/A9
VSS        20                21        P2.0/A8
T2/P1.        1                40        VCC
T2EX/P1.1       2                39        P0.0/AD0
P1.2         3                38        P0.1/AD1
P1.4         5                36        P0.3/AD3
P1.6         7                 34        P0.5/AD5
P1.7         8                33        P0.6/AD6
WR/P3.6                                    P1.4
RD/P3.7                                    P1.3
XTAL2                                    P1.2
A12/P2.4                                    P0.3/AD3
A11/P2.3                                    P0.2/AD2
P4.0                                    P4.2/INT3
A8/P2.0                                    VDD
A9/P2.1                                    P0.0/AD0
A10/P2.2                                    P0.1/AD1
XTAL1                                    P1.1/T2EX
VSS                                    P1.0/T2
INT0/P3.2     8                          26     PSEN
INT1/P3.3     9                         25     P2.7/A15
12
T1/P3.5     11                        23     P2.5/A13
T0/P3.4     10                         24     P2.6/A14
 4
TXD/P3.1     7                         27     ALE/PROG
INT2/P4.3     6                          28     P4.1
RXD/P3.0     5                         29     EA
RST     4                          30     P0.7/AD7
P1.5     1                          33     P0.4/AD4
P1.6     2                         32     P0.5/AD5
P1.7     3                         31     P0.6/AD6
PQFP-44
 43
 42
 41
 40
 39
 38
 37
 36
 35
 34
13
14
15
16
17
18
19
20
21
22
WR/P3.6                                    P1.4
RD/P3.7                                    P1.3
XTAL2                                    P1.2
A12/P2.4                                    P0.3/AD3
A11/P2.3                                    P0.2/AD2
P4.0                                    P4.2/INT3
A8/P2.0                                    VDD
A9/P2.1                                    P0.0/AD0
A10/P2.2                                    P0.1/AD1
XTAL1                                    P1.1/T2EX
VSS                                    P1.0/T2
INT0/P3.2     14                        32     PSEN
INT1/P3.3     15                        31     P2.7/A15
18
T1/P3.5     17                        29     P2.5/A13
T0/P3.4     16                        30     P2.6/A14
TXD/P3.1     13                        33     ALE/PROG
INT2/P4.3     12                        34     P4.1
RXD/P3.0      11                        35     EA
RST     10                        36     P0.7/AD7
P1.5     7                          39     P0.4/AD4
P1.6     8                         38     P0.5/AD5
P1.7     9                         37     P0.6/AD6
PLCC-44
44
43
42
41
40
19
20
21
22
23
24
25
26
27
28
STC 单片机在线编程典型线路
8 R2IN R2OUT 9
0.1uF
2 V+ GND 15
1 C1+ Vcc 16 Vcc
3 C1- T1OUT 14
5 C2- R1OUT 12
6 V- T1IN 11
7 T2OUT T2IN 10
STC3232,STC232,MAX232,SP232
PC_RxD (COM Pin2)
4 C2+ R1IN 13 PC_TxD (COM Pin3)
Gnd
MCU_RxD (P3.0)
MCU_TxD (P3.1)P3.0
P3.1
89C52RC
89C58RD+
PC /电脑 串口
89LE52RC
89LE516RD+
GND
VCC
RESET
0.1uF
10uF
    
编程锁紧座
就是编程器
10K
10μ
XTAL2
XTAL1
Vcc
Vcc
0.1uF
深  Tel:0755-82948409   82948410     Fax0755-82944243   82905966
广州办Tel:020-38851405   38850557     Fax:020-38850581
上海办Te021-53560136    53560138     Fax021-53080587
北京办Tel:010-62538687     62634001      Fax010-62538683
增加P4
并可位寻址
增加P4
并可位寻址
目录
  STC 单片机宣传资料 ............................................................
   1.1  STC12C5410AD 系列单片机宣传资料 ..................................................
   1.2  STC89C51RC/RD+ 系列单片机宣传资料 ................................................
  STC12C5410AD 系列单片机总体介绍 ..............................................
   2.1 STC12C5410AD 系列单片机简介 .......................................................
   2.2 STC12C5410AD系列单片机管脚图及封装尺寸图 .........................................
     2.2.1 STC12C5410AD系列单片机管脚图 .................................................
     2.2.2 STC12C5410AD系列单片机封装尺寸图 .............................................
   2.3 STC12C5410AD 系列单片机选型一览表 ................................................ 11
   2.4 STC12C5410AD 系列单片机命名规则 .................................................. 12
   2.5 STC12C5410AD 系列单片机典型应用电路 .............................................. 13
     2.5.1 STC12C5410AD系列单片机 28 脚典型应用电路 ..................................... 13
     2.5.2 STC12C5410AD系列单片机 20 脚典型应用电路 ..................................... 14
   2.6 STC12C5410AD 系列单片机指令系统与普通 8051 指令代码完全兼容但执行速度大幅提升 .. 15
   2.7 STC12C5410AD系列单片机特殊功能寄存器映像 ........................................ 19
   2.8 STC12C5410AD 系列单片机中断 ...................................................... 23
   2.9 STC12C5410AD系列单片机定时器0/1UART串口的速度与普通8051兼容但也可快12 .. 25
   2.10 STC12C5410AD 系列单片机系统工作时钟ISP 下载编程时可选择内部时钟外部时钟 .... 26
   2.11 STC12C5410AD系列单片机系统时钟分频寄存器可将系统时钟分成较低频率工作 ........ 26
    STC12C5410AD 系列单片机的 I/O口结构及其功能.................................27
   3.1 I/O口各种不同的工作模式及配置介绍 ................................................ 27
   3.2 I/O 口各种不同的工作模式结构框图 .................................................. 28
   3.3 一种典型三极管控制电路............................................................ 29
    STC12C5410AD 系列单片机的看门狗及软件复位 ...................................30
   4.1 STC12C5410AD系列单片机看门狗应用及测试程序 ...................................... 30
     4.1.1 看门狗应用介绍 ............................................................... 30
     4.1.2 一个完整的看门狗测试程序在下载板上可以直接测试 ............................. 32
   4.2 如何用软件实现系统复位............................................................ 33
  STC12C5410AD 系列单片机的 EEPROM 的应用......................................34
   5.1 IAP EEPROM应用 ................................................................. 34
   5.2 IAP/EEPROM汇编简介............................................................... 36
   5.3 一个完整的 IAP/EEPROM 测试程序,在下载板上可以直接测试............................ 39
    STC12C5410AD 系列单片机的定时器的使用及测试程序.............................43
   6.1 定时器0/1 的介绍 .................................................................. 43
   6.2 定时器0/1应用程序举例 ............................................................ 47
  6.用定时器 做波特率发生器一个完整的测试程序在下载板上可以直接测试........... 52
   STC12C5410AD 系列单片机的 A/D 转换功能 .......................................59
   7.1 A/D 转换寄存器 .................................................................... 59
   7.2 典型A/D 转换应用线路 .............................................................. 60
   7.3 一个完整的A/D测试程序在下载板上可以直接测试 ................................... 61
  STC12C5410AD 系列单片机的 PCA/PWM的应用 ....................................65
    8.1  PCA/PWM 寄存器列表.............................................................. 65
    8.2  PCA/PWM 功能介绍 ................................................................ 67
    8.3  PCA 功能扩展外部中断的示例程序 .................................................. 72
    8.4  PCA 功能做定时器的示例程序可实现16 位定时器 ............................... 76
    8.5  PWM 输出语言示例 .............................................................. 81
   8.6  PCA/PWM新增特殊功能寄存器声明汇编.......................................... 82
    8.7  PWM输出汇编语言示例 ............................................................ 84
    8.8  PCA的高速脉冲输出程序示例输出125KHz 的方波................................. 87
     8.9  利用定时器 的溢出作为PCA 模块的时钟输入,实现可调频率PWM 并用PCA 再实现定时器 91
  STC12C5410AD 系列单片机的掉电模式 ...........................................98
     9.1 PCON 寄存器的高级应用上电复位标志进入掉电模式 .............................. 98
    9 进入掉电模式后由外部中断和外部中断 唤醒示例程序 .............................. 99
     9.3 进入掉电模式前的I/O 口设置特别注意事项仅针对 版本,现供货的版本无此问题101
10   STC12C5410AD 系列单片机电气特性 .......................................... 102
11     STC12C5410AD 系列单片机开发编程工具说明 ................................ 104
   11.1 在系统可编程ISP原理,官方演示工具使用说明 ............................... 104
     11.1.1 在系统可编程ISP原理使用说明 .......................................... 104
      11.1.2 在系统可编程ISP典型应用线路图 ........................................ 105
      11.1.3 电脑端的 ISP 控制软件界面使用说明 .......................................... 106
      11.1.4 宏晶科技的ISP 下载编程工具硬件使用说明 .................................... 107
      11.1.5 用户板如果没有RS-232 转换器如何用宏晶科技的ISP 下载板做RS-232 通信转换 ... 107
    11.2 编译器汇编器编程器仿真器................................................ 108
12     附录 ....................................................................... 109
    12.1 附录   数据RAM存储器测试程序 ................................................. 109
      12.1.1 内部数据 RAM的介绍......................................................... 109
      12.1.2内部数据 RAM寻址测试程序 ................................................... 110
    12.2 附录 B 串行外围接口SPI及测试程序.......................................... 111
     12.2.1 串行外围接口SPI功能描述 .............................................. 111
        12.2.2 串行外围接口SPI示例程序单主单从.................................. 118
    12.2.3 串行外围接口SPI示例程序单主多从.................................. 125
     12.3 附录 C 用串行口扩展 I/O接口 .................................................... 133
     12.4 附录D STC12C2052AD 系列单片机简介............................................. 135
     12.5 附录 E 利用 STC单片机普通 I/O口驱动LCD显示 .................................... 137
     12.6 附录 F 一个I/O 口驱动发光二极管并扫描按键...................................... 144
    12.7 附录G 典型MCU/DSP/uC复位、电源监控外部看门狗专用电路 ..................... 145
     12.8 附录 H STC高性能SRAM选型一览表 ............................................... 146
     12.9 附录 I 提供过4000V快速脉冲干扰辅导服务 ....................................... 147
    12.10  附录J 应用注意事项 .......................................................... 148
     12.12 附录K 资料升级历史备忘录..................................................... 149
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南
特点
1. 增强型 1T 流水线精简指令集结构 8051 CPU
2. 工作电压5.5V - 3.4V5V单片机  /  3.8V - 2.0V3V单片机
3. 工作频率范围0 - 35 MHz相当于普通 8051  0420MHz.实际工作频率可达48MHz.
4. 用户应用程序空间 12K / 10K / 8K / 6K / 4K / 2K 字节
5. 片上集成 512 字节 RAM
6. 通用 I/O口(27/23), 复位后为 准双向口 弱上拉普通8051 传统I/O口)
     可设置成四种模式准双向口弱上拉推挽强上拉仅为输入 高阻,开漏
       每个 I/O口驱动能力均可达到20mA但整个芯片最大不得超过 55mA
7. ISP(在系统可编程)/IAP(在应用可编程), 无需专用编程器
      可通过串口(P3.0/P3.1)直接下载用户程序,数秒即可完成一片
8. EEPROM 功能
9. 看门狗
10内部集成MAX810 专用复位电路外部晶体20M 以下时可省外部复位电路
11时钟源外部高精度晶体时钟,内部 R/C 振荡器
          用户在下载用户程序时可选择是使用内部R/C 振荡器还是外部晶体时钟
          常温下内部R/C 振荡器频率为5.2MHz  6.8MHz
         精度要求不高时可选择使用内部时钟但因为有温漂应认为是 4MHz  8MHz
12.16 位定时器计数器
13.外部中断下降沿中断或低电平触发中断,Power Down模式可由外部中断低电平触发中断方式唤醒
14PWM(4路)/PCA可编程计数器阵列), 也可用来再实现 个定时器
        -也可用来再实现 个定时器或个外部中断上升沿中断下降沿中断均可支持
15ADC, 10位精度 ADC,共
16. 通用异步串行口(UART)
17SPI同步通信口 主模式 从模式
18.工作温度范围 0 - 75 / -40 - +85
19.封装: PDIP-28SOP-28PDIP-20SOP-20PLCC-32,TSSOP-20(超小封状,定货
    STC12C5410系列单片机是单时钟 机器周期(1T)的兼容8051 内核单片机是高速低功耗的新一代
8051单片机,全新的流水线 精简指令集结构内部集成MAX810专用复位电路
         STC12C5410AD 系列 1T 单片机简介
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南
TxD/P3.1
INT0/P3.2
P0.0
XTAL2
XTAL1
P0.1
PWM1/PCA1/CEX1/T1/P3.5
INT1/P3.3
ECI/T0/P3.4
PLCC-32
14
10
11
12
13
29
28
27
26
25
24
23
22
21
ADC0/P1.0
PWM0/PCA0/CEX0/P3.7
P2.7
P2.6
VSS
P2.5
PWM3/PCA3/CEX3/P2.4
P1.7/SCLK/ADC7
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
P2.0/CEX2/PCA2/PWM2
P2.1
VDD
P2.2
P2.3
RST
P3.0/RxD
         STC12C5410AD 系列 1T 单片机管脚图
DIP-28(窄体/ SOP-28
P2.2 28 P2.1P2.3 27 P2.0/CEX2/PCA2/PWM2RST 26
VDD
RxD/P3.0 25 P1.7/SCLK/ADC7
TxD/P3.1 24 P1.6/MISO/ADC6
XTAL2 23 P1.5/MOSI/ADC5
XTAL1 22 P1.4/SS/ADC4
INT0/P3.2 21 P1.3/ADC3
INT1/P3.3 20 P1.2/ADC2
ECI/T0/P3.4 10 19 P1.1/ADC1
PWM1/PCA1/CEX1/T1/P3.5 11 18 P1.0/ADC0
VSS
12 17 P3.7/CEX0/PCA0/PWM0
PWM3/PCA3/CEX3/P2.4 13 16 P2.7P2.5 14 15 P2.6
RST     1           20    VCC
RxD/P3.0     2          19    P1.7/SCLK/ADC7
TxD/P3.1     3          18    P1.6/MISO/ADC6
XTAL2     4          17    P1.5/MOSI/ADC5
INT0/P3.2     6          15    P1.3/ADC3
INT1/P3.3     7          14    P1.2/ADC2
ECI/T0/P3.4     8          13    P1.1/ADC1
PWM1/PCA1/CEX1/T1/P3.5     9          12    P1.0/ADC0
Gnd     10         11    P3.7/CEX0/PCA0/PWM0
XTAL1     5          16    P1.4/SS/ADC4
DIP-20/SOP-20
RST     1           20    VCC
RxD/P3.0     2          19    P1.7/SCLK
TxD/P3.1     3          18    P1.6/MISO
XTAL2     4          17    P1.5/MOSI
INT0/P3.2     6          15    P1.3
INT1/P3.3     7          14    P1.2
ECI/T0/P3.4     8          13    P1.1
PWM1/CEX1/T1/P3.5     9          12    P1.0
Gnd     10         11    P3.7/CEX0/PWM0
XTAL1     5          16    P1.4/SS
DIP-20/SOP-20
STC12C5410AD(有A/D转换STC12C5410(无 A/D转换
STC12C5410AD(有A/D转换STC12C5410(无 A/D转换
P2.2 28 P2.1P2.3 27 P2.0/CEX2/PCA2/PWM2RST 26
VDD
RxD/P3.0 25 P1.7/SCLK
TxD/P3.1 24 P1.6/MISO
XTAL2 23 P1.5/MOSI
XTAL1 22 P1.4/SS
INT0/P3.2 21 P1.3
INT1/P3.3 20 P1.2
ECI/T0/P3.4 10 19 P1.1
PWM1/PCA1/CEX1/T1/P3.5 11 18 P1.0
VSS
12 17 P3.7/CEX0/PCA0/PWM0
PWM3/PCA3/CEX3/P2.4 13 16 P2.7P2.5 14 15 P2.6
DIP-28(窄体/ SOP-28
32
31
30
15
16
17
18
19
20
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南
0.485 inch12.32 mm
0.495 inch12.57 mm
0.447(11.35)
0.453(11.51)
0.042(1.07)
0.048(1.22)
0.042(1.07)
0.048(1.22)
0.54713.89
0.553 (14.05)
0.585(14.86)
0.595(15.11)
0.0501.27
 BSC.
0.0501.27
 BSC.
0.0260.66
0.032 (0.81)
0.0230.58
0.029 (0.74) ×30°
0.106 (2.69)
0.112 (2.84)
0.013(0.33)
0.021(0.53)
0.400(10.16)
 BSC
0.490(12.45)
0.530(13.46)
0.015(0.38)Min
0.075 (1.91)
0.095 (2.41)
0.125 (3.18)
0.140 (3.56)
Optional Pin #1
    Identifier
PIN1
1.445 (36.70)
1.455 (36.96)
0.280 (7.11)
0.240 (6.10)
0.090(2.29)
MAX
0.005(0.127)
MIN
1.300(33.02) REF
0.210(5.33)
MAX
0.150 (3.81)
0.115 (2.92)
0.100 (2.54) 0.070(1.78)
0.045(1.13)
0.022 (0.559)
0.014 (0.356)
0.015(0.381)MIN
0.325(8.26)
0.300(7.62)
0.014(0.356)
0.008(0.203) 0.430(10.92)MAX
15 REF
SEATING
PLANE
28-PIN PLASTIC DUAL-IN-LINE
PACKAGE (PDIP)
32-PIN PLASTIC LEAD CHIP CARRIER (PLCC)
PIN1
0.020 (0.508)
0.014 (0.350)
0.703 (17.856)
0.693 (17.602)
0.013 (0.330)
0.009 (0.229)
0.0484 (1.228)
0.0276 (0.700)
 0
10  REF
0.112 (2.844)
0.100 (2.540)
0.014 (0.350)
0.004 (0.102)
28-PIN SMALL OUTLINE PACKAGE (SOP)
0.050 (1.270)
       STC12C5410AD 系列 1T 单片机封装尺寸图
0.299 (7.60)
0.291 (7.39) 0.420 (10.7)
0.393 (9.98)
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南
20P3, 20-lead, 0.300" Wide, Plastic Dual Inline
Package (PDIP-20)
Dimensions in Inches and (Millimeters)
JEDEC STANDARD MS-001 AD
20S, 20-lead, 0.300" Wide, Plastic Gull WIng Small
Outline (SOIC-20 / SOP-20)
Dimensions in Inches and (Millimeters)
PIN1
0.020 (0.508)
0.013 (0.330)
0.299 (7.60)
0.291 (7.39) 0.420 (10.7)
0.393 (9.98)
0.050 (1.27)
0.513 (13.0)
0.497 (12.6) 0.105 (2.67)
0.092 (2.34)
0.012 (0.305)
0.003 (0.076)
0.013 (0.330)
0.009 (0.229)
0.035 (0.889)
0.015 (0.381)
REF
PIN1
1.060 (26.9)
0.980 (24.9)
0.280 (7.11)
0.240 (6.10)
0.090(2.29)
MAX
0.005(0.127)
MIN
0.900(22.86) REF
0.210(5.33)
MAX
0.150 (3.81)
0.115 (2.92)
0.100 (2.54) 0.070(1.78)
0.045(1.13)
0.022 (0.559)
0.014 (0.356)
0.015(0.381)MIN
0.325(8.26)
0.300(7.62)
0.014(0.356)
0.008(0.203) 0.430(10.92)MAX
15 REF
SEATING
PLANE
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 10
PACKAGEPLASTIC  SHRINK  SMALL  OUTLINETSSOP-206.4mm ×6.4mm
A1
e(0.65mm) B(0.19mm0.30mm)  L(0.50mm0.75mm)
20-PIN
A1
E2
Φ
  DIMENSIONS
in inches (mm)
Minimum/Maximum - /0.043
(- /1.10)
 0.002/0.006
(0.05/0.15mm)
 0.007/0.012
(0.19/0.30mm)
 0.252/0.260
(6.40/6.60mm)
 0.169/0.177
(4.30/4.50mm)
 0.026 BSC
(0.65mm BSC)
 0.126 BSC
(3.20mm BSC)
 0.020/0.030
(0.50/0.75mm)
°/8°
E(4.5mm)
E2(3.2mm)
6.4mm
Φ
D(6.40mm6.60mm)
STC12C5410AD 系列的 TSSOP-20 封装需订货
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 11
工作
电压(V
Flash
 程序
存储器
字节
SRAM
字节
UART PCA
PWM A/D I/O
内置
复位 EEP
ROM
封装
20-Pin 封装
28-Pin 封装
32-Pin
STC12C5401 5.5 - 3.4 1K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5401AD 5.5 - 3.4 1K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5402 5.5 - 3.4 2K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5402AD 5.5 - 3.4 2K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5404 5.5 - 3.4 4K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5404AD 5.5 - 3.4 4K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5406 5.5 - 3.4 6K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5406AD 5.5 - 3.4 6K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5408 5.5 - 3.4 8K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5408AD 5.5 - 3.4 8K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5410 5.5 - 3.4 10K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5410AD 5.5 - 3.4 10K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5412 5.5 - 3.4 12K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12C5412AD 5.5 - 3.4 12K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5401 2.0 - 3.8 1K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5401AD 2.0 - 3.8 1K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5402 2.0 - 3.8 2K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5402AD 2.0 - 3.8 2K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5404 2.0 - 3.8 4K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5404AD 2.0 - 3.8 4K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5406 2.0 - 3.8 6K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5406AD 2.0 - 3.8 6K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5408 2.0 - 3.8 8K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5408AD 2.0 - 3.8 8K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5410 2.0 - 3.8 10K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5410AD 2.0 - 3.8 10K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5412 2.0 - 3.8 12K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
STC12LE5412AD 2.0 - 3.8 12K 512 27/23 DIP/SOP/TSSOP DIP/SOP PLCC-32
        STC12C5410AD 系列单片机选型一览表
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 12
STC12xx54xx xx 35x-xxxx xx
管脚数
202832
何种封装
PDIPSOPPLCCTSSOP
工作温度范围
工业级,-40℃   +85
商业级 0℃  70
工作频率
12工作频率可到 12MHz
35工作频率可到 35MHz
48工作频率可到 48MHz
AD A/D 转换功能
AD 字样,则无 A/D 转换
程序空间大小
04 4K 字节 08 8K 字节
10 10K 字节,12 12K 字节
RAM 512 字节,PCA/PWM
STC 1T 8051,同样的工作频率时速度是普通8051 12
 5.5V3.4V
LE2.0V3.8V
LV2.0V3.8V,超低功耗设计工作频率2MHz 时:
   正常工作电流 < 2.7mA;
   空闲模式电流 < 1.3mA;
   掉电模式电流 < 0.1 μ
       STC12C5410AD系列 单片机 命名规则
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 13
10K
10μ
C1
R1
8 R2IN R2OUT 9
0.1uF 2 V+ GND 15
1 C1+ Vcc 16 Vcc
3 C1- T1OUT 14
5 C2- R1OUT 12
6 V- T1IN 11
7 T2OUT T2IN 10
PC_RxD (COM Pin2)
4 C2+ R1IN 13 PC_TxD (COM Pin3)
Gnd
PC /电脑 串口
 STC3232STC232MAX232SP232
U1-P1.0
U1-P1.1
MCU-VCC
U1-P3.0
U1-P3.1
GND
3   RST                 P2.0/PCA2/PWM2  26
4   RxD/P3.0          P1.7/SCLK/ADC7  25
5   TxD/P3.1         P1.6/MISO/ADC6  24
6   XTAL2              P1.5/MOSI/ADC5  23
8   INT0/P3.2                P1.3/ADC3  21
9   INT1/P3.3               P1.2/ADC2  20
10  ECI/T0/P3.4             P1.1/ADC1  19
11  PWM1/PCA1/T1/P3.5      P1.0/ADC0  18
12  PWM3/PCA3/P2.4    P3.7/PCA0/PWM0  17
7   XTAL1               P1.4/SS/ADC4  22
Vcc
Vin
Power On
SW1
电源开关
USB +5V
<33pF
<33pF
通过电脑端的
STC-ISP 软件
控制下载
“用户程序
STC 单片机
建议用户在系统上
留此接口,可方便
在线下载用户程序
10μ
0.1μ
10μ
Vcc
Vcc
0.1uF
0.1uF
2   P2.3                         P2.1  27
1   P2.2                          VDD  28
13  P2.5                         P2.7  16
14   SS                           P2.6  15
USB+5V T1OUT GNDR1IN
USB1
1K 28 Pin
   STC12C5410AD 系列 单片机 典型应用电路(28Pin)
              ----通过 RS-232 转换器连接电脑就可以下载程序
    用户在自己的目标系统上,如将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 六个信号线为最好这样就可以在用户系统上直接编程了关于 ISP 编程的原理及应用指南详见
附录部分STC12C5410AD 系列单片机 ISP 编程 原理 工具使用说明”部分另外我们有标准化的编程
下载工具用户可以在上面编程后再插到目标系统上也可以借用它上面的RS-232 电平转换器连接到
电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多,故无须买通
用编程器
    此线路已做成一个 STC12C5410AD 系列单片机 ISP 下载编程工具可直接赠送给客户
    电脑端 STC-ISP软件从网站www.MCU-Memory.com 下载
使用编程锁紧座就是编程器
晶振频率在20M 以下时:
可以不用C1,R1可为0~10K
如果使用内部R/C 振荡器时钟
(4MHz8MHz,制造误差),XTAL1
XTAL2脚浮空.
如果外部时钟频率在33MHz以上时
建议直接使用外部有源晶振时钟从
XTAL1脚输入,XTAL2 脚必须浮空.
不过建议保留R/C 复位电路
1K
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 14
    用户在自己的目标系统上,如将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 六个信号线为最好这样就可以在用户系统上直接编程了关于 ISP 编程的原理及应用指南详见
附录部分STC12C5410AD 系列单片机 ISP 编程 原理 工具使用说明”部分另外我们有标准化的编程
下载工具用户可以在上面编程后再插到目标系统上也可以借用它上面的RS-232 电平转换器连接到
电脑,以做下载编程之用。编程一个芯片大致需几秒钟,速度比普通的通用编程器快很多,故无须买通
用编程器
8 R2IN R2OUT 9
0.1uF 2 V+ GND 15
1 C1+ Vcc 16 Vcc
3 C1- T1OUT 14
5 C2- R1OUT 12
6 V- T1IN 11
7 T2OUT T2IN 10
PC_RxD (COM Pin2)
4 C2+ R1IN 13 PC_TxD (COM Pin3)
Gnd
PC /电脑 串口
 STC3232STC232MAX232SP232
U1-P1.0
U1-P1.1
MCU-VCC
U1-P3.0
U1-P3.1
GND
USB+5V T1OUT GNDR1IN
USB1
1  RST                         VCC  20
2  RxD/P3.0       P1.7/SCLK/ADC7  19
3  TxD/P3.1      P1.6/MISO/ADC6  18
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
10  Gnd            P3.7/PCA0/PWM0  11
5  XTAL1            P1.4/SS/ADC4  16
1K
1K
Vcc
Vin
Power On
SW1
电源开关
USB +5V
10K
10μ
C1
R1
<33pF
<33pF
通过电脑端的
STC-ISP 软件
控制下载
“用户程序
STC 单片机
建议用户在系统上
留此接口,可方便
在线下载用户程序
10μ
0.1μ
10μ
Vcc
Vcc
0.1uF
0.1uF
    此线路已做成一个 STC12C5410AD 系列单片机 ISP 下载编程工具可直接赠送给客户
使用编程锁紧座就是编程器
    电脑端 STC-ISP软件从网站www.MCU-Memory.com 下载
20 Pin
   STC12C5410AD 系列 单片机 典型应用电路(20Pin)
            ---- 通过 RS-232 转换器连接电脑就可以下载程序
晶振频率在20M 以下时:
可以不用C1,R1可为0~10K
如果使用内部R/C 振荡器时钟
(4MHz8MHz,制造误差),XTAL1
XTAL2脚浮空.
如果外部时钟频率在33MHz以上时
建议直接使用外部有源晶振时钟从
XTAL1脚输入,XTAL2 脚必须浮空.
不过建议保留R/C 复位电路
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 15
如果按功能分类STC89/12系列单片机指令系统可分为
1.数据传送类指令
2.算术操作类指令
3.逻辑操作类指令
4.控制转移类指令
5.布尔变量操作类指令
按功能分类的指令系统表如下表所示
 数据传送类指令
传统 12T8051
STC12C5410AD系列
  指令系统分类总结及与普通 8051 指令执行时间对比
               --- 8051 指令代码完全兼容但执行的时间效率大幅提升
                ---其中 INC DPTR 指令的执行速度大幅提升24
              --- 共有 12 条指令,一个时钟就可以执行完成平均速度快 12
助记符 功能说明 字节数 12时钟/机器周期
所需时钟 1时钟/机器周期
所需时钟 效率
提升
MOV     ARn 寄存器内容送入累加器 12
12
MOV     Adirect 直接地址单元中的数据送入累加器 12
6
MOV     A@Ri 间接RAM中的数据送入累加器 12
6
MOV     A#data 立即送入累加器 12
6
MOV     Rn累加器内容送入寄存器 12
6
MOV     Rndirect 直接地址单元中的数据送入寄存器 24
6
MOV     Rn#data 立即数送入寄存器 12
6
MOV     drect累加器内容送入直接地址单元 12
4
MOV     drectRn 寄存器内容送入直接地址单元 24
8
MOV     drectdirect 直接地址单元中的数据送入另一个直接
地址单元 24 6
MOV     drect@Ri 间接RAM中的数据送入直接地址单元 24
6
MOV     drect#data 立即数送入直接地址单元 24
8
MOV     @Ri累加器内容送间接RAM单元 12
4
MOV     @Ridirect 直接地址单元数据送入间接RAM单元 24
8
MOV     @Ri#data 立即数送入间接RAM单元 12
4
MOV     DPTR#data16 16位立即数送入地址寄存器 24
8
MOVC    A,@A+DPTR DPTR为基地址变址寻址单元中的数据
送入累加器 24 6
MOVC    A,@A+PC PC为基地址变址寻址单元中的数据送
入累加器 24 6
MOVX    A,@Ri  外部RAM位地址送入累加器 24
8
MOVX    A,@DPTR  外部RAM16位地址送入累加器 24
8
MOVX    @Ri,A 累加器送外部RAM位地址 24
8
MOVX    @DPTR ,A  累加器送外部RAM16位地址 24
8
PUSH    direct 直接地址单元中的数据压入堆栈 24
6
POP     direct  出栈送直接地址单元 24
8
XCH     A,Rn 寄存器与累加器交换 12
4
XCH     A,direct 直接地址单元与累加器交换 12
3
XCH     A,@Ri 间接RAM与累加器交换 12
3
XCHD    A,@Ri 间接RAM的低半字节与累加器交换 12
3
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 16
 算术操作类指令
   逻辑操作类指令
助记符 功能说明 字节数 12时钟/周期
所需时钟 1时钟/周期
所需时钟 提升
效率
ADD     ARn 寄存器内容加到累加器 12
6
ADD     Adirect 直接地址单元中的数据加到累加器 12
4
ADD     A@Ri 间接RAM中的数据加到累加器 12
4
ADD     A#data 立即加到累加器 12
6
ADDC    ARn 寄存器内容带进位加到累加器 12
6
ADDC    Adirect 直接地址单元的内容带进位加到累加器 12
4
ADDC    A@Ri 间接RAM内容带进位加到累加器 12
4
ADDC    A#data 立即数带进位加到累加器 12
6
SUBB    ARn 累加器带借位减寄存器内容 12
6
SUBB    direct 累加器带借位减直接地址单元的内容 12
4
SUBB    @Ri 累加器带借位减间接RAM中的内容 12
4
SUBB    #data 累加器带借位减立即数 12
6
INC     A 累加器加 12
6
INC     Rn 寄存器加 12
4
INC     direct 直接地址单元加 12
3
INC     @Ri 间接RAM单元加 12
3
DEC     A 累加器减 12
6
DEC     Rn 寄存器减 12
4
DEC     direct 直接地址单元减 12
3
DEC     @Ri 间接RAM单元减 12
3
INC     DPTR 地址寄存器DPTR 24
24
MUL     AB 乘以 48
12
DIV     AB 除以 48
9.6
DA      A  累加器十进制调整 12
3
助记符 功能说明 字节数 12时钟/
期所需时钟 1时钟/周期
所需时钟 提升
效率
ANL     ARn 累加器与寄存器相 12
6
ANL     Arect 累加器与直接地址单元相“与” 12
4
ANL     A@Ri 累加器与间接RAM单元相“与” 12
4
ANL     Aata 累加器与立即数相 12
6
ANL     drect直接地址单元与累加器相“与” 12
3
ANL     drectata 直接地址单元与立即数相“与” 24
6
ORL     Rn 累加器与寄存器相 12
6
ORL     rect 累加器与直接地址单元相“或” 12
4
ORL     @Ri 累加器与间接RAM单元相“或” 12
4
ORL     ata 累加器与立即数相 12
6
ORL     rect直接地址单元与累加器相“或” 12
3
ORL     rectata 直接地址单元与立即数相“或” 24
6
XRL     ARn 累加器与寄存器相“异或12
6
XRL     Arect 累加器与直接地址单元相“异或12
4
XRL     A@Ri 累加器与间接RAM单元相“异或12
4
XRL     Aata 累加器与立即数相“异或12
6
XRL     drect直接地址单元与累加器相“异或12
3
XRL     rectata 直接地址单元与立即数相“异或24
6
CLR     累加器清“12
12
CPL     累加器求反 12
6
RL      累加器循环左移 12
12
RLC     A 累加器带进位位循环左移 12
12
RR      A 累加器循环右移 12
12
RRC     A 累加器带进位位循环右移 12
12
SWAP    A 累加器半字节交换 12
12
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 17
     控制转移类指令
   布尔变量操作类指令
助记符 功能说明 字节数 12时钟/周期
所需时钟 1时钟/周期
所需时钟 提升
效率
CLR      C
0
进位位 12
12
CLR      bit
0
直接地址位 12
3
SETB     C
1
进位位 12
12
SETB     bit
1
直接地址位 12
3
CPL      C 进位位求反 12
12
CPL      bit 直接地址位求反 12
3
ANL      Cbit 进位位和直接地址位相“与 24
8
ANL      Cbit 进位位和直接地址位的反码相 24
8
ORL      Cbit 进位位和直接地址位相“或 24
8
ORL      Cbit 进位位和直接地址位的反码相 24
8
MOV      Cbit 直接地址位送入进位位 12
4
MOV      bit进位位送入直接地址位 24
8
JC       re1 进位位为则转移 24
8
JNC      re1 进位位为则转移 24
8
JB       bitre直接地址位为则转移 24
6
JNB      bitre直接地址位为则转移 24
6
JBC      bitre直接地址位为则转移该位清 24
4.8
助记符 功能说明 字节数 12时钟/周期
所需时钟 1时钟/周期
所需时钟 提升
效率
ACALL    addr11 绝对调用子程序 24
4
L
CALL    addr16 长调用子程序 24
4
RET 子程序返回 24
6
RET中断返回 24
6
AJMP      addr11 绝对转移 24
8
L
JMP      addr16 长转移 24
6
SJMP      re1 相对转移 24
8
JMP       @A+DPTR 相对于DPTR的间接转移 24
8
JZ        re1 累加器为零转移 24
8
JNZ       re1 累加器非零转移 24
8
CJNE      Arectre累加器与直接地址单元比较不相等则转移 24
4.8
CJNE      A#datare累加器与立即数比较不相等则转移 24
6
CJNE      Rn#datare寄存器与立即数比较不相等则转移 24
6
CJNE      @Ri#datare间接RAM单元与立即数比较不相等则转移 24
4.8
DJNZ      Rnre寄存器减非零转移 24
6
DJNZ      drectre直接地址单元减非零转移 24
4.8
NOP 空操作 12
12
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 18
指令执行速度效率提升总结
指令系统共包括111 条指令,其中
执行速度快24 倍的            
执行速度快12 倍的            12
执行速度快9.6 倍的           
执行速度快倍的             21
执行速度快倍的             37
执行速度快4.8 倍的           
执行速度快倍的             21
执行速度快倍的             14
根据对指令的使用频率分析统计STC12系列 1T8051 单片机比普通的8051 单片机在同样的工作频率
下运行速度提升了12
指令执行时钟数统计供参考
指令系统共包括111 条指令,其中
个时钟就可执行完成的指令    12
个时钟就可执行完成的指令    20
个时钟就可执行完成的指令    40
个时钟就可执行完成的指令    32
个时钟就可执行完成的指令    
个时钟就可执行完成的指令    
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 19
         特殊功能寄存器映像  SFR Mapping
      Bit
Addressable                                  Non  Bit  Addressable
      0/8      1/9      2/A      3/B      4/C     5/D     6/E     7/F
F8h CH
0000,0000   CCAP0H
0000,0000   CCAP1H
0000,0000  CCAP2H
0000,0000  CCAP3H
0000,0000 FFh
F0h
0000,0000 PCA_PWM0
xxxx,xx00  PCA_PWM1
xxxx,xx00 PCA_PWM2
xxxx,xx00 PCA_PWM3
xxxx,xx00 F7h
E8h            CL
0000,0000 CCAP0L
0000,0000   CCAP1L
0000,0000  CCAP2L
0000,0000  CCAP3L
0000,0000 EFh
E0h ACC
0000,0000 WDT_CONTR
0x00,0000 ISP_DATA
1111,1111 ISP_ADDRH
0000,0000 ISP_ADDRL
0000,0000 ISP_CMD
xxxx,xx00 ISP_TRIG
xxxx,xxxx ISP_CONTR
0000,1000 E7h
D8h CCON
00xx,0000 CMOD
0xxx,x000 CCAPM0
x000,0000 CCAPM1
x000,0000 CCAPM2
x000,0000 CCAPM3
x000,0000 DFh
D0h PSW
0000,0000 D7h
C8h CFh
C0h ADC_CONTR
0000,0000 ADC_DATA
0000,0000 CLK_DIV
xxxx,x000 C7h
B8h IP
x000,0000 SADEN
don't use ADC_LOW2
0000,0000 BFh
B0h P3
1x11,1111 P3M0
0000,0000 P3M1
0000,0000  IPH
x000,0000 B7h
A8h IE
0000,0000     SADDR
don't use AFh
A0h P2
1111,1111  TEST_WDT
don't use A7h
98h SCON
0000,0000     SBUF
xxxx,xxxx 9Fh
90h  P1
1111,1111    P1M0
0000,0000     P1M1
0000,0000  P0M0
0000,0000  P0M1
0000,0000  P2M0
0000,0000  P2M1
0000,0000 97h
88h TCON
  0000,0000     TMOD
0000,0000     TL0
0000,0000     TL1
0000,0000     TH0
0000,0000     TH1
0000,0000     AUXR
0000,00xx 8Fh
80h P0
xxxx,1111      SP
0000,0111      DPL
0000,0000      DPH
0000,0000    SPSTAT
00xx,xxxx    SPCTL
0000,0100     SPDAT
0000,0000     PCON
0011,0000 87h
0/8      1/9      2/A      3/B      4/C     5/D     6/E     7/F
 特别标出部分为在 Intel  8052 基础上新增加的特殊功能寄存器一般用户可不管
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 20
STC12C5410AD 系列 8051 单片机内核特殊功能寄存器   C51 Core SFRs
Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value
ACC E0h Accumulator 0000,0000
F0h B Register 0000,0000
PSW D0h Program Status Word CY AC F0 RS1 RS0 OV  F1  P 0000,0000
SP 81h Stack Pointer 0000,0111
DPL 82h Data Pointer Low Byte 0000,0000
DPH 83h Data Pointer High Byte 0000,0000
STC12C5410AD系列 8051 单片机系统管理特殊功能寄存器System Management SFRs
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1 GF0    PD IDL 0011,0000
AUXR 8Eh Auxiliary  Register  T0x12  T1x12  UART_M0x6  EADCI  ESPI  ELVDI 0000,00xx
CLK_DIV C7h Clock  Divder CLKS2 CLKS1 CLKS0 xxxx,x000
STC12C5410AD 系列8051 单片机 I/O  特殊功能寄存器   Port SFRs
Mnemonic Add       Name  7  6  5   4  3  2  1  0 Reset Value
P0 80h 8-bit  Port  P0.3 P0.2 P0.1 P0.0 xxxx,1111
P0M0 93h 0000,0000
P0M1 94h 0000,0000
P1 90h 8-bit  Port P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 1111,1111
P1M0 91h 0000,0000
P1M1 92h 0000,0000
P2 A0h 8-bit  Port P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 1111,1111
P2M0 95h 0000,0000
P2M1 96h 0000,0000
P3 B0h 8-bit  Port P3.7   - P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 1x11,1111
P3M0 B1h 0000,0000
P3M1 B2h 0000,0000
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 0000,0000
AUXR 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 EADCI ESPI ELVDI  -  - 0000,00xx
STC12C5410AD系列 8051 单片机 串行口 特殊功能寄存器    Serial I/O Port SFRs
Mnemonic Add Name       7  6    5      4        2  1  0 Reset Value
WDT_CONTR E1h Watch-Dog-Timer
Control register  WDT_FLAG  - EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000
STC12C5410AD 系列 8051 单片机 看门狗定时器 特殊功能寄存器 Watch Dog Timer SFRs
STC12C5410AD 系列 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 GATE
GATE1 C/T#
C/T1# M1
M1_1 M0
M1_0 GATE
GATE0 C/T#
C/T0# M1
M0_1 M0
M0_0 0000,0000
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 EADCI ESPI ELVDI  -  - 0000,00xx
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 21
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
CCON D8h PCA Control Register CF  CR CCF3 CCF2 CCF1 CCF0 00xx,0000
CMOD D9h PCA Mode Register  CIDL  -  -  -  CPS1 CPS0 ECF 0xxx,x000
CCAPM0 DAh PCA Module 
Mode Register ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000
CCAPM1 DBh PCA Module 
Mode Register ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000
CCAPM2 DCh PCA Module 
Mode Register ECOM2 CAPP2 CAPN2 MAT2 TOG2 PWM2 ECCF2 x000,0000
CCAPM3 DDh PCA Module 
Mode Register ECOM3 CAPP3 CAPN3 MAT3 TOG3 PWM3 ECCF3 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
CCAP2L ECh PCA Module-2 Capture
Register Low 0000,0000
CCAP2H FCh PCA Module-2 Capture
Register High 0000,0000
CCAP3L EDh PCA Module-3 Capture
Register Low 0000,0000
CCAP3H FDh PCA Module-3 Capture
Register High 0000,0000
PCA_PWM0 F2h PCA PWM Mode
Auxiliary Register  EPC0H EPC0L xxxx,xx00
PCA_PWM1 F3h PCA PWM Mode
Auxiliary Register  EPC1H EPC1L xxxx,xx00
PCA_PWM2 F4h PCA PWM Mode
Auxiliary Register  EPC2H EPC2L xxxx,xx00
PCA_PWM3 F5h PCA PWM Mode
Auxiliary Register  EPC3H EPC3L xxxx,xx00
STC12C5410AD 系列 8051 单片机 PCA/PWM 特殊功能寄存器    PCA/PWM SFRs
STC12C5410AD 系列 1T 8051 单片机 中断 特殊功能寄存器Interrupt SFRs
Mnemonic Add Name  7  6    5  4  3  2  1  0 Reset Value
IE A8h Interrupt  Enable EA  EPCA_LVD EADC_SPI ES ET1 EX1 ET0 EX0 0000,0000
IP B8h Interrupt  Priority
Low  -  PPCA_LVD PADC_SPI PS PT1 PX1 PT0 PX0 xx00,0000
IPH B7h Interrupt  Priority
High  - PPCA_LVDH PADC_SPIH 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
PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1 GF0 PD IDL 0011,0000
AUXR 8Eh Auxiliary  Register T0x12    T1x12 UART_M0x6 EADCI ESPI ELVDI  -  - 0000,00xx
ADC_CONTR C5h A/D 转换控制寄存器 ADC_POWER  SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0xx0,0000
SPSTAT 84h SPI Status Register SPIF  WCOL  -  -  -  - 00xx,xxxx
CCON D8h PCA Control Register CF  CR CCF3 CCF2 CCF1 CCF0 00xx,0000
CMOD D9h PCA Mode Register  CIDL  -  -  -  CPS1 CPS0 ECF 0xxx,x000
CCAPM0 DAh PCA Module 
Mode Register ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000
CCAPM1 DBh PCA Module 
Mode Register ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000
CCAPM2 DCh PCA Module 
Mode Register ECOM2 CAPP2 CAPN2 MAT2 TOG2 PWM2 ECCF2 x000,0000
CCAPM3 DDh PCA Module 
Mode Register ECOM3 CAPP3 CAPN3 MAT3 TOG3 PWM3 ECCF3 x000,0000
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 22
STC12C5410AD 系列 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs
Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value
ISP_DATA E2h ISP/IAP  Flash  Data  Register 1111,1111
ISP_ADDRH E3h ISP/IAP  Flash  Address  High 0000,0000
ISP_ADDRL E4h ISP/IAP  Flash  Address  Low 0000,0000
ISP_CMD E5h ISP/IAP  Flash  Command  Register  -  -  -  - MS1 MS0 xxxx,x000
ISP_TRIG E6h ISP/IAP  Flash  Command  Trigger xxxx,xxxx
ISP_CONTR E7h ISP/IAP  Control  Register ISPEN SWBS SWRST  CMD_FAIL  1 WT2 WT1 WT0 0000,1000
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 23
中断
STC12C5410AD 系列 1T 8051 单片机 中断 特殊功能寄存器Interrupt SFRs
STC12C5410AD系列 中断与普通 8051完全兼容优先级可设为
Interrupt
Source
中断源
Vector
Address
中断
向量地址
Polling
Sequence
中断
查询次序
中断
优先级设置 优先级
最低 优先级优先级优先级
最高
Interrupt
Request
中断请求
/INT0 0003H 0(最优先PX0H,PX0 0,0 0,1 1,0 1,1 IE0
Timer 000BH PT0H,PT0 0,0 0,1 1,0 1,1 TF0
/INT1 0013H PX1H,PX1 0,0 0,1 1,0 1,1 IE1
Timer 001BH PT1H,PT1 0,0 0,1 1,0 1,1 IF1
UART 0023H PSH,  PS 0,0 0,1 1,0 1,1 RI + TI
ADC/SPI 002BH PADC_SPIH,PADC_SPI 0,0 0,1 1,0 1,1 ADC_FLAG + SPIF
PCA/LVD 0033H PPCA_LVDH,PPCA_LVD 0,0 0,1 1,0 1,1 CF 
CCF0 + CCF1 + CCF2 + CCF3
+ LVDF
Mnemonic Add Name  7  6    5  4  3  2  1  0 Reset Value
IE A8h Interrupt  Enable EA  EPCA_LVD EADC_SPI ES ET1 EX1 ET0 EX0 0000,0000
IP B8h Interrupt  Priority
Low  -  PPCA_LVD PADC_SPI PS PT1 PX1 PT0 PX0 xx00,0000
IPH B7h Interrupt  Priority
High  - PPCA_LVDH PADC_SPIH 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
PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1 GF0 PD IDL 0011,0000
AUXR 8Eh Auxiliary  Register T0x12    T1x12 UART_M0x6 EADCI ESPI ELVDI  -  - 0000,00xx
ADC_CONTR C5h A/D 转换控制寄存器 ADC_POWER  SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0xx0,0000
SPSTAT 84h SPI Status Register SPIF  WCOL  -  -  -  - 00xx,xxxx
CCON D8h PCA Control Register CF  CR CCF3 CCF2 CCF1 CCF0 00xx,0000
CMOD D9h PCA Mode Register  CIDL  -  -  -  CPS1 CPS0 ECF 0xxx,x000
CCAPM0 DAh PCA Module 
Mode Register ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000
CCAPM1 DBh PCA Module 
Mode Register ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000
CCAPM2 DCh PCA Module 
Mode Register ECOM2 CAPP2 CAPN2 MAT2 TOG2 PWM2 ECCF2 x000,0000
CCAPM3 DDh PCA Module 
Mode Register ECOM3 CAPP3 CAPN3 MAT3 TOG3 PWM3 ECCF3 x000,0000
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 24
PCA/PWM 特殊功能寄存器 , 其中部分位与PCA 中断有关
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
CCON D8h PCA Control Register CF  CR CCF3 CCF2 CCF1 CCF0 00xx,0000
CMOD D9h PCA Mode Register  CIDL  -  -  -  CPS1 CPS0 ECF 0xxx,x000
CCAPM0 DAh PCA Module 
Mode Register ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000
CCAPM1 DBh PCA Module 
Mode Register ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000
CCAPM2 DCh PCA Module 
Mode Register ECOM2 CAPP2 CAPN2 MAT2 TOG2 PWM2 ECCF2 x000,0000
CCAPM3 DDh PCA Module 
Mode Register ECOM3 CAPP3 CAPN3 MAT3 TOG3 PWM3 ECCF3 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
CCAP2L ECh PCA Module-2 Capture
Register Low 0000,0000
CCAP2H FCh PCA Module-2 Capture
Register High 0000,0000
CCAP3L EDh PCA Module-3 Capture
Register Low 0000,0000
CCAP3H FDh PCA Module-3 Capture
Register High 0000,0000
PCA_PWM0 F2h PCA PWM Mode
Auxiliary Register  EPC0H EPC0L xxxx,xx00
PCA_PWM1 F3h PCA PWM Mode
Auxiliary Register  EPC1H EPC1L xxxx,xx00
PCA_PWM2 F4h PCA PWM Mode
Auxiliary Register  EPC2H EPC2L xxxx,xx00
PCA_PWM3 F5h PCA PWM Mode
Auxiliary Register  EPC3H EPC3L xxxx,xx00
STC12C5410AD系列 8051 单片机SPI 功能模块特殊功能寄存器  其中 SPIF位与中断有关
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
SPCTL 85h SPI Control Register SSIG  SPEN  DORD MSTR CPOL CPHA SPR1 SPR0 0000,0000
SPSTAT 84h SPI Status Register SPIF  WCOL  -  -  -  - 00xx,xxxx
SPDAT 86h SPI Data Register 0000,0000
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 25
         定时器 0/ 定时器 UART串口的速度
Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value
AUXR 8Eh Auxiliary  Register T0x12 T1x12 UART_M0x6 EADCI ESPI ELVDI  -  - 0000,00xx
定时器和定时器 1:
STC12C5410AD系列是 1T 8051 单片机,为了兼容传统8051,定时器和定时器复位后是传统8051
的速度,即 12 分频,这是为了兼容传统8051但也可不进行 12分频,实现真正的 1T
T0x12:   0, 定时器是传统8051 速度12 分频;1, 定时器的速度是传统 8051 12 倍,不分频
T1x12:   0, 定时器是传统8051速度,12 分频;1, 定时器 的速度是传统8051 12倍,不分频
如果UART 串口用定时器做波特率发生器,T1x12 位就可以控制UART 串口是12T 还是 1T了。
UART串口的模式 0:
STC12C5410AD系列是 1T 8051 单片机,为了兼容传统 8051UART 串口复位后是兼容传统8051 的。
UART_M0x6:   0, UART 串口的模式是传统12T 8051速度,12 分频;
             1, UART 串口的模式 的速度是传统12T 8051倍,分频
EADCI:      0, 禁止 A/D 中断; 1,允许 A/D中断
ESPI:        0, 禁止 SPI 中断; 1,允许 SPI中断
ELVDI:       0, 禁止低压中断 ,允许低压中断
           5V 单片机,3.7V以下为低压,3V 单片机,2.4V 以下为低压
           ELVDI=1允许低压中断), 则会产生低压中断
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 26
                 系统工作时钟
    STC12C5410AD 系列是 1T 8051单片机,系统时钟兼容传统 8051
    现出厂标准配置是使用芯片内部的R/C 振荡器,5V 单片机常温下频率是5MHz - 6.9Hz,因为随着温度
的变化,内部R/C 振荡器的频率会有一些温飘,应认为是 4MHz - 8MHz故内部 R/C振荡器只适用于对时
钟频率要求不敏感的场合
    在对STC12C5410AD 系列单片机进行ISP 下载用户程序时,可以在选项中选择
       下次冷启动后时钟源为外部晶体或时钟
这样下载完用户程序后,停电,再冷启动后单片机的工作时钟使用的就不是内部R/C振荡器,而是外部晶体振
荡后产生的高精度时钟了(接在XTAL1/XTAL2管脚上), 也可以直接从XTAL1脚输入外部时钟,XTAL2脚浮空。
    如果还要设置成使用内部R/C 振荡器,在对STC12C5410AD 系列单片机进行ISP 下载用户程序时,可
以在选项中选择
                     下次冷启动后时钟源为内部R/C 振荡器
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
CLK_DIV C7h Clock  Divder CLKS2 CLKS1 CLKS0 xxxx,x000
              系统时钟分频及分频寄存器
CLKS2 CLKS1 CLKS0 CPU的实际工作时钟
系统时钟外部时钟或内部R/C振荡时钟
系统时钟/2
系统时钟/4
系统时钟/8
系统时钟16
系统时钟32
系统时钟64
系统时钟128
   如用户系统希望大幅降低功耗还可对系统时钟进行分频
系统时钟分频寄存器可将系统时钟分成较低频率工作
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 27
      I/O 口结构
I/O 口配置
STC12C5410AD系列单片机其所有 I/O口均可由软件配置成种工作类型之一如下表所示
类型分别为准双向口标准8051输出模式)、 推挽输出仅为输入高阻)或开漏输出功能每个口由
个控制寄存器中的相应位控制每个引脚工作类型STC12C5410AD系列单片机上电复位后为准双向口(标
8051输出模式)模式。2V 以上时为高电平,0.8V 以下时为低电平
I/O 口工作类型设定
I/O
口模式
准双向口(传统8051 I/O 口模式),
灌电流可达20mA , 拉电流为230µA ,
由于制造误差,实际为250uA160uA
推挽输出(强上拉输出,可达20mA尽量少用
仅为输入(高阻
开漏
(Open Drain)
内部上拉电阻断开要外加
P1M0P1M1
I/O
口模式
P1.x
如做
A/D
使用,需先将其设置成开漏或高阻输入
准双向口(传统8051 I/O 口模式,
灌电流可达20mA , 拉电流为230µA ,
由于制造误差实际为250uA160uA
推挽输出(强上拉输出,可达
20mA
尽量少用
仅为输入(高阻),如果该I/O口需作为A/D使用,可选此模式
开漏(Open Drain) 如果该I/O口需作为A/D使用,可选此模式
P3 口设定 <P3.7,P3.6,P3.5,P3.4,P3.3,P3.2,P3.1,P3.0>
P2 口设定 <P2.7,P2.6,P2.5,P2.4,P2.3,P2.2,P2.1,P2.0>
P1 口设定 <P1.7,P1.6,P1.5,P1.4,P1.3,P1.2,P1.1,P1.0>
P0 口设定 <P0.7,P0.6,P0.5,P0.4,P0.3,P0.2,P0.1,P0.0>
举例MOV P1M0,#11000000B
MOV P1M1,#10100000B
     ;P1.7 为开漏,P1.6为高阻输入,P1.5 为强推挽输出,P1.4/P1.3/P1.2/P1.1/P1.0为弱上拉
I/O
口模式
准双向口(传统8051 I/O 口模式),
灌电流可达20mA , 拉电流为230µA ,
由于制造误差,实际为250uA160uA
推挽输出(强上拉输出,可达20mA尽量少用
仅为输入(高阻
开漏
(Open Drain)
内部上拉电阻断开要外加
I/O
口模式
准双向口(传统8051 I/O 口模式),
灌电流可达20mA , 拉电流为230µA ,
由于制造误差,实际为250uA160uA
推挽输出(强上拉输出,可达20mA尽量少用
仅为输入(高阻
开漏
(Open Drain)
内部上拉电阻断开要外加
注意
    虽然每个I/O 口在弱上拉时都能承受 20mA的灌电流还是要加限流电阻1K560 Ω等),在强推挽
输出时都能输出20mA 的拉电流但是整个芯片的工作电流推荐不要超过55mA
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 28
1.准双向口输出配置
准双向口输出类型可用作输出和输入功能而不需重新配置口线输出状态这是因为当口线输出为
时驱动能力很弱允许外部装置将其拉低当引脚输出为低时它的驱动能力很强可吸收相当大的
电流。准双向口有个上拉晶体管适应不同的需要
个上拉晶体管中,个上拉晶体管称为“弱上拉”当口线寄存器为且引脚本身也为时打开。
此上拉提供基本驱动电流使准双向口输出为如果一个引脚输出为而由外部装置下拉到低时弱上拉关闭而
“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力使引脚上的电压降到门
槛电压以下
   个上拉晶体管,称为“极弱上拉当口线锁存为时打开当引脚悬空时这个极弱的上
拉源产生很弱的上拉电流将引脚上拉为高电平
个上拉晶体管称为强上拉当口线锁存器由跳变时,这个上拉用来加快准双向口由逻
到逻辑转换。当发生这种情况时强上拉打开约 个机器周期以使引脚能够迅速地上拉到高电平
    准双向口输出如下图所示
CPU
时钟延时
DD DD DD
极弱
端口
引脚
口锁存数据
输入数据 干扰滤波
STC12LE5410系列单片机为 3V 器件,如果用户在引脚加上5V 电压,将会有电流从引脚流向 VDD,这样
导致额外的功率消耗。因此,建议不要在准双向口模式中向3V 单片机引脚施加 5V 电压如使用的话,要加
限流电阻或用二极管做输入隔离或用三极管做输出隔离
准双向口带有一个施密特触发输入以及一个干扰抑制电路
200uA30uA
灌电流最大
可到20mA,
输出低时
2.推挽输出配置
推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同但当锁存器为时提供持续的
强上拉推挽模式一般用于需要更大驱动电流的情况
推挽引脚配置如下图所示
拉电流最大可到20mA,输出高时
DD
端口
引脚
口锁存数据
输入数据 干扰滤波
灌电流也可承受20mA输出低时
由于制造误差
弱上拉能力为
250uA160uA
2mA
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 29
3.仅为输入(高阻)配置
输入口配置如下图所示
输入口带有一个施密特触发输入以及一个干扰抑制电路
干扰滤波
输入数据 端口
引脚
口锁存数据
端口
引脚
干扰滤波
输入数据
4.开漏输出配置
当口线锁存器为时,开漏输出关闭所有上拉晶体管当作为一个逻辑输出时这种配置方式必须有
外部上拉一般通过电阻外接到VDD这种方式的下拉与准双向口相同输出口线配置如下图所示
开漏端口带有一个施密特触发输入以及一个干扰抑制电路
灌电流也可承受20mA输出低时
仅为输入(高阻)时,不提供吸入20mA电流的能力
                  一种典型三极管控制电路
R1
10K3.3K10K
R2
15K3.3K15K
普通I/O
R3
如果用弱上拉控制建议加上拉电阻R13.3K10K), 如果不加上拉电阻R13.3K10K), 建议
R2的值在 15K 以上,或用强推挽输出
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 30
适用型号:  STC12C5410AD系列
Symbol符号 Function功能
WDT_FLAG    When WDT overflows this bit is set. It can be cleared by software.
          看门狗溢出标志位,当溢出时该位由硬件置可用软件将其清
EN_WDT Enable WDT bit. When set, WDT is started
看门狗允许位, 当设置为“”时,看门狗启动
CLR_WDT WDT clear bit. When set, WDT will recount. Hardware will automatically clear
            this bit
看门狗清”位当设为”时,看门狗将重新计数硬件将自动清此位
IDLE_WDT When set, WDT is enabled in IDLE mode. When clear, WDT is disabled in IDLE mode
看门狗“IDLE”模式位当设置为“”时看门狗定时器在空闲模式”计数
                               当清“”该位时, 看门狗定时器在“空闲模式”时不计数
PS2, PS1, PS0 Pre-scale value of Watchdog timer is shown as the bellowed table:
            看门狗定时器预分频值如下表所示
Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value
WDT_CONTR E1h Watch-Dog-Timer
Control register  WDT_FLAG  - EN_WDT CLR_WDT IDLE_WDT PS2 PS1 PS0 xx00,0000
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
PS2 PS1 PS0 Pre-scale
预分频 WDT Period @12MHz
 0  0  0     2        6  m
 0  0  1     4      131.0 mS
 0  1  0     8      262.1 mS
 0  1  1     1      524.2 mS
 1  0  0     3       1.0485S
 1  0  1     6       2.0971S
 1  1  0     1       4.1943S
 1  1  1     2       8.3886S
               看门狗应用及测试程序
The WDT period is determined by the following equation 看门狗溢出时间计算
看门狗溢出时间 N x Pre-scale x 32768) / Oscillator frequency
设时钟为12MHz
看门狗溢出时间 =  12 x Pre-scale x 32768) / 12000000 = Pre-scale x 393216 / 12000000
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 31
    设时钟为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 DATA 0E1H ;    或者   WDT_CONTR EQU   0E1H
复位入口
ORG 0000H
LJMP Initial
ORG 0060H
Initial:
MOV WDT_CONTR, #00111100B; Load initial value 看门狗定时器控制寄存器初始化
               ; EN_WDT = 1, CLR_WDT = 1, IDLE_WDT = 1, PS2 = 1, PS1 = 0, PS0 = 
Main_Loop:
LCALL Display_Loop
LCALL Keyboard_Loop
MOV WDT_CONTR, #00111100B ;  喂狗  不要用 ORL    WDT_CONTR,  #00010000B
LJMP Main_Loop
语言程序示例
#include<reg52.h>
sfr WDT_CONTR 0xe1;
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;*/
}
}
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 32
本程序验证  STC12C5410AD 系列及 STC12C2052AD 系列单片机的看门狗及其溢出时间计算公式
本演示程序在STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过相关的工作状态在P1 口上显示
看门狗及其溢出时间 = (12 * Pre_scale *32768)/Oscillator frequency
WDT_CONTR       EQU 0E1H 看门狗地址
WDT_TIME_LED    EQU P1.5  P1.5 控制看门狗溢出时间指示灯
                         ;看门狗溢出时间可由该指示灯亮的时间长度或熄灭的时间长度表示
WDT_FLAG_LED    EQU P1.7  P1.7 控制看门狗溢出复位指示灯, 如点亮表示为看门狗溢出复位
Last_WDT_Time_LED_Status  EQU 00H 位变量, 存储看门狗溢出时间指示灯的上一次状态位
;WDT 复位时间所用的Oscillator frequency = 18.432MHz):
;Pre_scale_Word  EQU 00111100B   0,启动看门狗预分频数=32,   0.68S
Pre_scale_Word  EQU 00111101B    0,启动看门狗预分频数=64,   1.36S
;Pre_scale_Word  EQU 00111110B   0,启动看门狗预分频数=128,  2.72S
;Pre_scale_Word  EQU 00111111B   0,启动看门狗预分频数=256,  5.44S
    ORG   0000H
    AJMP  MAIN
    ORG   0100H
MAIN:
    MV   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
    CR   WDT_TIME_LED                   ;上电复位, 点亮看门狗溢出时间指示灯
    MOV   WDT_CONTR, #Pre_scale_Word     启动看门狗
WAIT1:
    SJMP  WAIT1                 ;循环执行本语句停机等待看门狗溢出复位
;WDT_CONTR.7 = 1,看门狗复位, 热启动, RAM 单元内容不变, 为复位前的值
WDT_Reset:                      ;看门狗复位, 热启动
    CLR   WD_FLA_LED          ;是看门狗复位点亮看门狗溢出复位指示灯
    JB   Last_WDT_Time_LED_Status, Power_Off_WDT_TIME_LED;熄灭相应的灯亮相应灯
    ;根据看门狗溢出时间指示灯的上一次状态位设置 WDT_TIME_LED 
    ;若上次亮本次就熄灭, 若上次熄灭本次就亮
    CLR   WD_TIM_LED          ;上次熄灭本次点亮看门狗溢出时间指示灯
    CPL   Last_WDT_Time_LED_Status 将看门狗溢出时间指示灯的上一次状态位取反
WAIT2:
    SJMP  WAIT2                 ;循环执行本语句停机等待看门狗溢出复位
Power_Off_WDT_TIME_LED:
    SETB  WDT_TIME_LED          上次亮本次就熄灭看门狗溢出时间指示灯
    CPL   Last_WDT_Time_LED_Status 将看门狗溢出时间指示灯的上一次状态位取反
WAIT3:
    SJMP  WAIT3                 ;循环执行本语句停机等待看门狗溢出复位
    END
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 33
             如何用软件实现系统复位
ISP_CONTR: ISP/IAP控制寄存器地址在 0E7H 单元
 B7  B6  B5  B4  B3  B2  B1  B0 Reset Value
ISPEN SWBS SWRST   CMD_FAIL  1  WT2  WT1  WT0 0000,1000
ISPEN:   ISP/IAP 功能允许位。禁止ISP/IAP 编程改变Flash,1:允许编程改变 Flash
SWBS:   软件选择从用户应用程序区启动(), 还是从ISP 程序区启动()。 要与 SWRST直接配合
    才可以实现
SWRST:   0: 不操作1:  产生软件系统复位,硬件自动清零
CMD_FAIL: 如果送了ISP/IAP 命令,并对ISP_TRIG 46h/B9h触发失败,则为 ,需由
        软件清零
从用户应用程序区(AP软件复位并切换到系统 ISP监控程序区开始执行程序
MOV ISP_CONTR, #01100000B ;SWBS = 1(选择ISP), SWRST = 1(软复位
从系统ISP 监控程序区软件复位并切换到系统ISP监控程序区开始执行程序
MOV ISP_CONTR, #01100000B ;SWBS = 1(选择ISP), SWRST = 1(软复位
本复位是整个系统复位所有的特殊功能寄存器都会复位到初始值I/O口也会初始化
从系统ISP 监控程序区软件复位并切换到用户应用程序区(AP开始执行程序
MOV ISP_CONTR, #00100000B ;SWBS = 0(选择AP ), SWRST = 1(软复位
从用户应用程序区(AP软件复位并切换到用户应用程序区(AP开始执行程序
MOV ISP_CONTR, #00100000B ;SWBS = 0(选择AP ), SWRST = 1(软复位
     用户应用程序在运行过程当中有时会有特殊需求需要实现单片机系统软复位热启动之一),
传统的8051 单片机由于硬件上未支持此功能用户必须用软件模拟实现,实现起来较麻烦 STC
推出的增强型8051 根据客户要求增加了ISP_CONTR 特殊功能寄存器实现了此功能用户只需简单的控
ISP_CONTR 特殊功能寄存器的其中两位 SWBS / SWRST 就可以系统复位了
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 34
STC12C5410AD系列 1T 8051 单片机 ISP/IAP 特殊功能寄存器    ISP/IAP SFRs
    STC12C5410AD 系列 1T 8051 单片机 IAP 应用
ISP_DATA: ISP/IAP操作时的数据寄存器
ISP/IAPFlash 读出的数据放在此处,向 Flash 写的数据也需放在此处
ISP_ADDRH: ISP/IAP操作时的地址寄存器高八位
ISP_ADDRL: ISP/IAP操作时的地址寄存器低八位
ISP_CMD: ISP/IAP操作时的命令模式寄存器须命令触发寄存器触发方可生效
B7 B6 B5 B4 B3 B2 B1 B0 命令 /  操作  模式选择
         保留  命令
 -  -  -  -  -  -  0  0 Standby    待机模式,无ISP操作
 -  -  -  -  -  -  0  1 从用户的应用程序区对 Data FlashEEPROM
进行字节读
 -  -  -  -  -  -  1  0 从用户的应用程序区对 Data FlashEEPROM
进行字节编程
 -  -  -  -  -  -  1  1 从用户的应用程序区对 Data FlashEEPROM
进行扇区擦除
程序在用户应用程序区时仅可以对数据Flash(EEPROM)进行字节读字节编程 扇区擦除
STC12C5412AD/STC12LE5412AD 除外。STC12C5410AD 系列单片机出厂时就已完全加密
ISP_TRIG: ISP/IAP操作时的命令触发寄存器
                ISPEN(ISP_CONTR.7) = 1ISP_TRIG 先写入46h,再写入B9h,
ISP/IAP 命令才会生效
 STC12C5410AD 系列 1T 8051单片机内部 EEPROM 的应用
                  - 利用IAP技术可实现EEPROM,内部Flash擦写次数为100,000次以上
Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value
ISP_DATA E2h ISP/IAP  Flash  Data  Register 1111,1111
ISP_ADDRH E3h ISP/IAP  Flash  Address  High 0000,0000
ISP_ADDRL E4h ISP/IAP  Flash  Address  Low 0000,0000
ISP_CMD E5h ISP/IAP  Flash  Command  Register  -  -  -  -  -  - MS1 MS0 xxxx,xx00
ISP_TRIG E6h ISP/IAP  Flash  Command  Trigger xxxx,xxxx
ISP_CONTR E7h ISP/IAP  Control  Register ISPEN SWBS SWRST  CMD_FAIL  1 WT2 WT1 WT0 0000,1000
ISP_CONTR: ISP/IAP控制寄存器地址在 0E7H 单元
 B7  B6  B5  B4  B3  B2  B1  B0 Reset Value
ISPEN SWBS SWRST   CMD_FAIL  1  WT2  WT1  WT0 0000,1000
ISPEN: ISP/IAP 功能允许位禁止 ISP/IAP编程改变Flash,1:允许编程改变 Flash
SWBS:   软件选择从用户主程序区启动), 还是从ISP 程序区启动)。
SWRST: 0: 不操作1: 产生软件系统复位硬件自动清零
CMD_FAIL: 如果送了ISP/IAP命令,并对 ISP_TRIG 46h/B9h 触发失败,则为,需由
          软件清零
在用户应用程序区(AP软件复位并从用户应用程序区(AP开始执行程序
MOV ISP_CONTR, #00100000B ;SWBS = 0(选择AP ), SWRST = 1(软复位
在用户应用程序区(AP软件复位并从系统 ISP监控程序区开始执行程序
MOV ISP_CONTR, #01100000B ;SWBS = 1(选择ISP), SWRST = 1(软复位
在系统ISP 监控程序区软件复位并从用户应用程序区(AP开始执行程序
MOV ISP_CONTR, #00100000B ;SWBS = 0(选择AP ), SWRST = 1(软复位
在系统ISP 监控程序区软件复位并从系统ISP监控程序区开始执行程序
MOV ISP_CONTR, #01100000B ;SWBS = 1(选择ISP), SWRST = 1(软复位
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 35
设置等待时间                 CPU   等待时间多少个 CPU 工作时钟 
WT2 WT1 WT0 ReadProgram编程 Sector Erase
扇区擦除 Recommended System Clock
跟等待参数对应的推荐系统时钟
  1   1   1 个时钟 55个时钟 21012个时钟   1MHz
  1   1   0 个时钟 110个时钟 42024个时钟   2MHz
  1   0   1 个时钟 165个时钟 63036个时钟   3MHz
  1   0   0 个时钟 330个时钟 126072个时钟   6MHz
  0   1   1 个时钟 660个时钟 252144个时钟   12MHz
  0   1   0 个时钟 1100个时钟 420240个时钟   20MHz
  0   0   1 个时钟 1320个时钟 504288个时钟   24MHz
  0   0   0 个时钟 1760个时钟 672384个时钟   30MHz
STC12C5410AD,STC12C5410,STC12LE5410AD,STC12LE5410
STC12C5408AD,STC12C5408,STC12LE5408AD,STC12LE5408
STC12C5406AD,STC12C5406,STC12LE5406AD,STC12LE5406
STC12C5404AD,STC12C5404,STC12LE5404AD,STC12LE5404
STC12C5402AD,STC12C5402,STC12LE5402AD,STC12LE5402
STC12C5401AD,STC12C5401,STC12LE5401AD,STC12LE5401
系列单片机内部可用Data Flash(EEPROM)的地址
第一扇区 第二扇区 每个扇区 512字节
个扇区
建议同一次修改的数据
放在同一个扇区不必
用满,当然可全用
满则为2K字节EEPROM
由于擦除是按扇区擦
所以每个扇区用的
越少越方便256个字节
以内较合理
起始地址 结束地址 起始地址 结束地址
2800h 29FFh 2A00h 2BFFh
第三扇区 第四扇区
起始地址 结束地址 起始地址 结束地址
2C00h 2DFFh 2E00h 2FFFh
STC12C5412,STC12C5412AD,STC12LE5412,STC12LE5412AD单片机可对自身内部应用程序区进行 IAP/ISP
操作,故所有部分均可当Data Flash(EEPROM)使用,其地址如下
        第一扇区         第二扇区         第三扇区        第四扇区
每个扇区
512字节
建议同一次
修改的数据
放在同一个
扇区,不必
用满,当然
可全用
起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址
0000h 01FFh 0200h 03FFh 0400h 05FFh 0600h 07FFh
        第五扇区         第六扇区         第七扇区        第八扇区
起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址
0800h 09FFh 0A00h 0BFFh 0C00h 0DFFh 0E00h 0FFFh
第九扇区 第十扇区 第十一扇区 第十二扇区
起始地址 结束地址 起始地址 结束地址 起始地址 结束地址 起始地址 结束地址
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
STC12C5410AD 系列单片机内部可用Data Flash(EEPROM)的地址与程序空间是分开的
如果对应用程序区进行IAP 写数据,则该语句会被单片机忽略继续执行下一句
程序在用户应用程序区(AP仅可以对Data Flash(EEPROM)进行IAP/ISP操作
STC12C5412AD/STC12LE5412AD 在应用程序区可以修改应用程序区灵活
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 36
STC12C5410AD 系列 IAP 应用汇编简介
STC12C5410AD 系列 内部 EEPROM 的应用
此两句可以合成一句并且只送一次就够了
地址需要改变时才需重新送地址
DATA还是 EQU 声明新增特殊功能寄存器地址要看你用的汇编器编译器
ISP_DATA DATA 0E2h;ISP_DATA EQU 0E2h
ISP_ADDRH DATA 0E3h;ISP_ADDRH EQU 0E3h
ISP_ADDRL DATA 0E4h;ISP_ADDRL EQU 0E4h
ISP_CMD DATA 0E5h;ISP_CMD EQU 0E5h
ISP_TRIG DATA 0E6h;ISP_TRIG EQU 0E6h
ISP_CONTR DATA 0E7h;ISP_CONTR EQU 0E7h
定义ISP/IAP 命令及等待时间
ISP_IAP_BYTE_READ EQU 字节读
ISP_IAP_BYTE_PROGRAM EQU 字节编程前提是该字节是空0FFh
ISP_IAP_SECTOR_ERASE EQU 扇区擦除要某字节为空要擦一扇区
WAIT_TIME EQU 设置等待时间,30MHz 以下 0,24M 以下1,
;20MHz 以下2,12M 以下3,6M 以下4,3M 以下5,2M 以下6,1M 以下7,
字节读
MOV ISP_ADDRH, #BYTE_ADDR_HIGH      送地址高字节
MOV ISP_ADDRL, #BYTE_ADDR_LOW 送地址低字节
MOV ISP_CONTR, #WAIT_TIME 设置等待时间
ORL ISP_CONTR, #10000000B 允许 ISP/IAP操作
MOV ISP_CMD, #ISP_IAP_BYTE_READ;送字节读命令命令不需改变时不需重新送命令
     MO ISP_TRIG, #46h 先送 46h,再送B9h ISP/IAP 触发寄存器每次都需如此
     MO ISP_TRIG, #0B9h送完 B9h后,ISP/IAP命令立即被触发起动
;CPU 等待IAP 动作完成后,才会继续执行程序
     NOP 数据读出到ISP_DATA 寄存器后CPU继续执行程序
MOV A, ISP_DATA      ;将读出的数据送往 Acc
以下语句可不用只是出于安全考虑而已
     MO ISP_CONTR, #00000000B      ;禁止ISP/IAP 操作
MOV ISP_CMD, #00000000B      ;去除 ISP/IAP命令
;MOV ISP_TRIG, #00000000B      ;防止 ISP/IAP命令误触发
;MOV ISP_ADDRH, #0 送地址高字节单元为00,指向非 EEPROM
;MOV ISP_ADDRL, #0 送地址低字节单元为00,防止误操作
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 37
字节编程该字节为FFh/ 空时,可对其编程否则不行要先执行扇区擦除
MOV ISP_DATA, #ONE_DATA  ;送字节编程数据到 ISP_DATA,只有数据改变时才需重新送
MOV ISP_ADDRH, #BYTE_ADDR_HIGH 送地址高字节
MOV ISP_ADDRL, #BYTE_ADDR_LOW 送地址低字节
MOV ISP_CONTR, #WAIT_TIME 设置等待时间
ORL ISP_CONTR, #10000000B 允许 ISP/IAP操作
     MO ISP_CMD, #ISP_IAP_BYTE_PROGRAM     送字节编程命令
     MO ISP_TRIG, #46h   ;先送46h,再送 B9hISP/IAP 触发寄存器每次都需如此
     MO ISP_TRIG, #0B9h       送完B9h 后,ISP/IAP 命令立即被触发起动
;CPU等待 IAP动作完成后,才会继续执行程序
     NOP 字节编程成功后CPU继续执行程序
以下语句可不用只是出于安全考虑而已
MOV ISP_CONTR, #00000000B 禁止 ISP/IAP操作
MOV ISP_CMD, #00000000B 去除ISP/IAP 命令
;MOV ISP_TRIG, #00000000B 防止ISP/IAP 命令误触发
;MOV ISP_ADDRH, #0 送地址高字节单元为00,指向非 EEPROM防止误操作
;MOV ISP_ADDRL, #0 送地址低字节单元为00,指向非 EEPROM防止误操作
----------------------------------------------------
小常识 (STC 单片机的Data Flash EEPROM 功能使用
个基本命令----字节读字节编程扇区擦除
字节编程:如果该字节是1111,1111B则可将其中的”编程为“如果该
字节中有位为则须先将整个扇区擦除因为只有扇区擦除才可以将
变为“
扇区擦除:只有“扇区擦除才可能将擦除为
大建议
1.同一次修改的数据放在同一扇区中不是同一次修改的数据放在另外的扇区就不须读出保护
2.如果一个扇区只用一个字节那就是真正的EEPROM,STC 单片机的Data Flash比外部EEPROM 要快很多
读一个字节编程一个字节大概是 0.2uS/60uS
3.如果在一个扇区中存放了大量的数据某次只需要修改其中的一个字节或一部分字节时,则另外的不
需要修改的数据须先读出放在STC 单片机的RAM 中,然后擦除整个扇区再将需要保留的数据和需修改的
数据一并写回该扇区中这时每个扇区使用的字节数是使用的越少越方便不需读出一大堆需保留数据
地址需要改变时才需重新送地址
此两句可合成一句并且只送一次就够了
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 38
扇区擦除没有字节擦除只有扇区擦除512 字节扇区每个扇区用得越少越方便
如果要对某个扇区进行擦除,而其中有些字节的内容需要保留,则需将其先读到单片机
内部的RAM 中保存,再将该扇区擦除然后将须保留的数据写回该扇区,所以每个扇区
中用的字节数越少越好操作起来越灵活越快
MOV ISP_ADDRH, #SECTOR_FIRST_BYTE_ADDR_HIGH 送扇区起始地址高字节
MOV ISP_ADDRL, #SECTOR_FIRST_BYTE_ADDR_LOW  送扇区起始地址低字节
MOV ISP_CONTR, #WAIT_TIME 设置等待时间
ORL ISP_CONTR, #10000000B 允许 ISP/IAP
MOV ISP_CMD, #ISP_IAP_SECTOR_ERASE;送扇区擦除命令命令不需改变时不需重新送命令
     MO ISP_TRIG, #46h 先送 46h,再送B9h ISP/IAP 触发寄存器每次都需如此
     MO ISP_TRIG, #0B9h     ;送完B9h后,ISP/IAP命令立即被触发起动
;CPU等待 IAP动作完成后,才会继续执行程序
     NO 扇区擦除成功后CPU 继续执行程序
以下语句可不用只是出于安全考虑而已
MOV ISP_CONTR, #00000000B      ;禁止ISP/IAP操作
MOV ISP_CMD, #00000000B      ;去除 ISP/IAP命令
;MOV ISP_TRIG, #00000000B      ;防止 ISP/IAP命令误触发
;MOV ISP_ADDRH, #0 送地址高字节单元为00,指向非 EEPROM
;MOV ISP_ADDRL, #0 送地址低字节单元为00,防止误操作
地址需要改变时
才需重新送地址
此两句可以合成一句并且只送一次就够了
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 39
;STC12C5410AD 系列和 STC12C2052AD系列单片机 EEPROM/IAP 功能测试程序演示
;/* ---  STC International Limited ---------------- */
;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ----- */
;/* ---  演示 STC12C5410AD 系列 MCU EEPROM/IAP功能 */
;/* ---  演示 STC12C2052AD 系列 MCU EEPROM/IAP功能  */
;/* ---  Mobile: 13922805190 ---------------------- */
;/* ---  Fax: 0755-82944243 ----------------------- */
;/* ---  Tel: 0755-82948409 ----------------------- */
;/* ---  Web: www.mcu-memory.com ------------------ */
本演示程序在STC-ISP Ver 3.0A.PCB的下载编程工具上测试通过,EEPROM的数据在 P1口上显示
;------------------------------------------------
声明与IAP/ISP/EEPROM 有关的特殊功能寄存器的地址
ISP_DATA        EQU   0E2H
ISP_ADDRH       EQU   0E3H
ISP_ADDRL       EQU   0E4H
ISP_CMD         EQU   0E5H
ISP_TRIG        EQU   0E6H
ISP_CONTR       EQU   0E7H
定义ISP/IAP 命令
ISP_IAP_BYTE_READ   EQU  1H 字节读
ISP_IAP_BYTE_PROGRAM   EQU  2H 字节编程可以将写成 要将变成 ,必须执行字节编程
ISP_IAP_SECTOR_ERASE   EQU  3H 扇区擦除可以将擦成 要将变成 ,必须擦除整个扇区
定义Flash 操作等待时间及允许IAP/ISP/EEPROM操作的常数
;ENABLE_ISP      EQU   80H     系统工作时钟<30MHz时,对 ISP_CONTR寄存器设置此值
;ENABLE_ISP      EQU   81H     系统工作时钟<24MHz时,对 ISP_CONTR寄存器设置此值
 ENABLE_ISP      EQU   82H     系统工作时钟<20MHz时,对 ISP_CONTR寄存器设置此值
;ENABLE_ISP      EQU   83H     系统工作时钟<12MHz时,对 ISP_CONTR寄存器设置此值
;ENABLE_ISP      EQU   84H     系统工作时钟<6MHz时,对ISP_CONTR寄存器设置此值
;ENABLE_ISP      EQU   85H     系统工作时钟<3MHz时,对ISP_CONTR寄存器设置此值
;ENABLE_ISP      EQU   86H     系统工作时钟<2MHz时,对ISP_CONTR寄存器设置此值
;ENABLE_ISP      EQU   87H     系统工作时钟<1MHz时,对ISP_CONTR寄存器设置此值
DEBUG_DATA       EQU   5AH 是本测试程序选定的EEPROM 单元的数值如正确应等于的数值
;------------------------
选择 MCU 型号
;DATA_FLASH_START_ADDRESS EQU 1000H ;STC12C2052AD 系列单片机的EEPROM 测试起始地址
DATA_FLASH_START_ADDRESS EQU 2800H  ;STC12C5410AD 系列单片机的EEPROM 测试起始地址
;------------------------------------------------
    ORG   0000H
    LJMP  MAIN
;------------------------------------------------
    ORG   0100H
MAIN:
    MOV    P1,#0F0H      ;演示程序开始工作,P1.0/P1.1/P1.2/P1.3 控制的灯亮
    LCALL  Delay 延时
    M    P1,#0FH      ;演示程序开始工作,P1.7/P1.6/P1.5/P1.4 控制的灯亮
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 40
    LCALL  Delay 延时
    MOV  SP,  #7FH      ;堆栈指针指向 7FH 单元
;************************************************
EEPROM 测试起始地址单元的内容读出
MAIN1:
    M    DPTR, #DATA_FLASH_START_ADDRESS  EEPROM 测试起始地址送 DPTR数据指针
    LCALL  Byte_Read
    MOV    0H, 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 单元送累加器
    CPL    A        取反的目的是相应的灯亮代表1,不亮代表
    M   P1    ;数据是对的,送 P1显示
WAIT1:
    SJMP  WAIT1   数据是对的,送 P1 显示后,CPU 在此无限循环执行此句
DATA_NOT_EQU_DEBUG_DATA:
;EEPROM里的数据是错的P1.3 控制的灯然后在 P1 口上将错误的数据显示出来
再将该EEPROM 所在的扇区整个擦除将正确的数据写入后P1.5 控制的灯
    M    P1,  #11110111B  (DATA_FLASH_START_ADDRESS)的值不等于#DEBUG_DATA, P1.3
    LCALL Delay 延时
    MOV  A,   40H  将保存在40H 单元中EEPROM 的值从40H单元送累加器
    CPL    A         ;取反的目的是相应的灯亮代表 1,不亮代表
    M     A    数据不对,送 P1显示
    LCALL  Delay 延时
    M    DPTR#DATA_FLASH_START_ADDRESS  EEPROM 测试起始地址送DPTR 数据指针
    ACALL  Sector_Erase  ;擦除整个扇区
    MV    DPTR, #DATA_FLASH_START_ADDRESS  EEPROM测试起始地址送DPTR数据指针
    MOV    A,    #DEBU_DATA      ;写入 EEPROM 的数据为 #DEBUG_DATA
    ACALL  Byte_Program           字节编程
    MOV    P   #111B       ;将先前亮的P1.3 灯关闭 ,再亮 P1.5代表数据已被修改
WAIT2:
    SJMP   W2       ;字节编程后,CPU在此无限循环执行此句
;************************************************
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 41
;------------------------------------------------
读一字节调用前需打开 IAP 功能,入口:DPTR  字节地址,返回:A  读出字节
Byte_Read:
    MOV     ISP_CONTR,  #ENABLE_ISP     打开 IAP 功能, 设置 Flash 操作等待时间
    MOV     ISP_D,    #ISP_IAP_BYTE_READ  ;设置为IAP/ISP/EEPROM 字节读模式命令
    MOV     ISP_ADDRH,  DPH             ;设置目标单元地址的高 位地址
    MOV     ISP_ADDRL,  DPL             ;设置目标单元地址的低 位地址
    ;CLR     EA
    MOV     ISP_TRG,   #46       先送 46h,再送B9h ISP/IAP触发寄存器每次都需如此
    M     ISP_TRIG,  #0B9H      送完B9h 后,ISP/IAP 命令立即被触发起动
    NOP
    M     A   IP_A          ;读出的数据在ISP_DATA 单元中送入累加器
    ;SETB    EA
    ACALL IAP_Disable 关闭 IAP 功能, 清相关的特殊功能寄存器使CPU 处于安全状态
                      ;一次连续的 IAP操作完成之后建议关闭 IAP功能不需要每次都关
    RET
;------------------------------------------------
字节编程调用前需打开 IAP 功能,入口:DPTR  字节地址, A=须编程字节的数据
Byte_Program:
    MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间
    MOV   ISP_CMD, ISP_IAP_BYTE_PROGRAM   ;设置为IAP/ISP/EEPROM 字节编程模式命令
    M   I_ DH            ;设置目标单元地址的高位地址
    M   I_ DL            ;设置目标单元地址的低位地址
    M   I_ A               ;要编程的数据先送进ISP_DATA 寄存器
    ;CLR   E
    MOV   IS_TRI, #46            ;先送 46h,再送B9h ISP/IAP触发寄存器每次都需如此
    MOV   ISP_TRIG, #0B9H          送完 B9h 后,ISP/IAP 命令立即被触发起动
    NOP
    ;SETB  EA
     ACALL IAP_Disable 关闭 IAP 功能, 清相关的特殊功能寄存器使CPU 处于安全状态
                       ;一次连续的IAP 操作完成之后建议关闭IAP 功能不需要每次都关
    RET
;------------------------------------------------
擦除扇区, 入口:DPTR = 扇区地址
Sector_Erase:
    MOV   ISP_CONTR, #ENABLE_ISP    ;打开 IAP 功能, 设置 Flash 操作等待时间
    MOV   IS_CMD #03H             ;设置为IAP/ISP/EEPROM扇区擦除模式命令
    M   I_ DH            ;设置目标单元地址的高位地址
    M   I_ DL            ;设置目标单元地址的低位地址
    ;CLR   EA
    MOV   IS_TRI, #46            ;先送 46h,再送B9h ISP/IAP触发寄存器每次都需如此
    MOV   ISP_TRIG, #0B9H          送完 B9h 后,ISP/IAP 命令立即被触发起动
    NOP
    ;SETB  EA
     ACALL IAP_Disable 关闭 IAP 功能, 清相关的特殊功能寄存器使CPU 处于安全状态
                       ;一次连续的IAP 操作完成之后建议关闭IAP 功能不需要每次都关
    RET
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 42
;------------------------------------------------
IAP_Disable:
关闭 IAP 功能, 清相关的特殊功能寄存器使CPU 处于安全状态
一次连续的IAP 操作完成之后建议关闭IAP 功能不需要每次都关
    MOV   ISP_CONTR, #0             ;关闭 IAP 功能
    MOV   ISP_CM  #0              ;清命令寄存器使命令寄存器无命令此句可不用
    MOV   ISP_RIG, #0              ;清命令触发寄存器使命令触发寄存器无触发此句可不用
    RET
;------------------------------------------------
Delay:
    CLR   A
    MOV   R0, A
    MOV   R1, A
    MOV   R2, #20H
Delay_Loop:
    DJNZ  R0, Delay_Loop
    DJNZ  R1, Delay_Loop
    DJNZ  R2, Delay_Loop
    RET
;------------------------------------------------
    END
;************************************************
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 43
定时器
定时和计数功能由特殊功能寄存器TMOD 的控制位C/T进行选择,TMOD 寄存器的各位信息如下表所列。
可以看出,个定时计数器有 种操作模式,通过TMOD M1 M0 选择。个定时计数器的模式
都相同,模式不同,各模式下的功能如下所述
      寄存器 TMOD 各位的功能描述
TMOD     地址89H
不可位寻址
复位值00H
GATE C/T M1 M0 GATE C/T M1 M0
定时器 定时器
   符号       功能
TMOD.7/ GATE TMOD.7控制定时器 1,时只有在INT1 脚为高及TR1 控制位置时才
                    可打开定时器计数器
TMOD.3/ GATE TMOD.3控制定时器 0,时只有在INT0 脚为高及TR0 控制位置时才
                    可打开定时器计数器
TMOD.6/ C/T TMOD.6控制定时器 用作定时器或计数器清零则用作定时器从内
                  部系统时钟输入), 用作计数器(从 T1/P3.5脚输入
TMOD.2/ C/T TMOD.2控制定时器 用作定时器或计数器清零则用作定时器从内
                  部系统时钟输入), 用作计数器(从 T0/P3.4脚输入
TMOD.5/TMOD.4  M1M0 定时器 计数器模式选择
0    0 13位定时器 计数器,兼容8048 定时器模式TL1 只用低位参与分
                   频,TH1 整个 位全用
                0    1 16 位定时器 计数器TL1TH1 全用
                1    0 位自动重装载定时器当溢出时将TH1存放的值自动重装入TL1
                1    1 定时器计数器此时无效停止计数)。
TMOD.1/TMOD.0  M1M0 定时器 计数器模式选择
0    0 13位定时器 计数器,兼容8048 定时器模式TL0 只用低位参与分
                    频,TH0 整个位全用
                0    1 16 位定时器 计数器TL0TH0 全用
                1    0 位自动重装载定时器当溢出时将TH0存放的值自动重装入TL0
                1    1 定时器此时作为双位定时器计数器TL0作为一个位定时器
                   数器,通过标准定时器的控制位控制TH0 仅作为一个位定时器
                         由定时器 的控制位控制
1.模式
将定时器设置成模式时类似8048 定时器,即位计数器带 32分频的预分频器下图所示为模式
工作方式。此模式下,定时器配置为13 位的计数器,由TLn 的低位和 THn位所构成。TLn 位溢出
THn进位,THn 计数溢出置位 TCON 中的溢出标志位TFnn=0)。 GATE=0 时,如 TRn=1,则定时器计数。
GATE=1时,允许由外部输入 INT1 控制定时器INT0控制定时器 这样可实现脉宽测量TRnTCON
存器内的控制位TCON 寄存器各位的具体功能描述见TCON 寄存器各位的具体功能描述表
7      6       5      4       3      2      1       0
  STC12C5410AD 系列单片机定时器的使用及测试程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 44
    寄存器 TCON 各位的功能描述
TCON  地址88H
可位寻址
复位值00H 76543210
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
   
TCON.7
TCON.6
TCON.5
TCON.4
TCON.3
TCON.2
TCON.1
TCON.0
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
定时器计数器溢出标志位。当T1 被允许计数后T1 从初值开始加计数,最
高位产生溢出时,置“TF1并向CPU请求中断 CPU 响应时,由硬件
清“TF1TF1 也可以由程序查询或清“
定时器T1 的运行控制位该位由软件置位和清零。当 GATETMOD.7=0TR1=1
就允许T1开始计数,TR1=0 时禁止 T1 计数。当 GATETMOD.7=1TR1=1 INT1 输入
高电平时,才允许T1计数。
外部中断中断请求标志位当主机响应中断转向该中断服务程序执行时由内部硬件
自动将IE1位清
外部中断触发方式控制位IT1=0时,外部中断 为低电平触发方式 INT1P3.
输入低电平时,置位IE1采用低电平触发方式时,外部中断源(输入到INT1必须保
持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源
必须被清除(P3.3要变高), 否则将产生另一次中断。 IT1=1时,则外部中断INT1
端口由“”→“”下降沿跳变,激活中断请求标志位IE1向主机请求中断处理
    13 位寄存器包含THn全部 个位及TLn 的低 位。TLn 的高位不定,可将其忽略置位运行标
TRn不能清零此寄存器。模式的操作对于定时器及定时器都是相同的。个不同的GATETMOD.
TMOD.3分别分配给定时器及定时器
定时器计数器溢出标志位。当 T0 被允许计数后,T0 从初值开始加 计数,最高
位产生溢出时,置“TF0并向CPU请求中断,当CPU 响应时,由硬件清“TF0
TF0也可以由程序查询或清
定时器T0 的运行控制位该位由软件置位和清零。当 GATETMOD.3=0TR0=1
就允许T0开始计数,TR1=0 时禁止 T0 计数。当 GATETMOD.3=1TR0=1 INT0 输入
高电平时,才允许T0计数。
外部中断中断请求标志位当主机响应中断转向该中断服务程序执行时由内部硬件
自动将IE0位清
外部中断触发方式控制位IT0=0时,外部中断 为低电平触发方式 INT0P3.
输入低电平时,置位IE0采用低电平触发方式时,外部中断源(输入到INT0必须保
持低电平有效,直到该中断被CPU响应,同时在该中断服务程序执行完之前,外部中断源
必须被清除(P3.2要变高), 否则将产生另一次中断。 IT0=1时,则外部中断INT0
端口由“”→“”下降沿跳变,激活中断请求标志位IE1向主机请求中断处理
OSC ÷d*
 
C/T=1 TFn
控制
C/T=0
Tn 
TLn
THn
  位) 中断
TRn
定时器
GATE 
INTn 
* T0x12 = 模式下,d=12(12时钟模式  T0x12 = 模式下,d=1(1T)
   定时器 计数器 和定时器 计数器 的模式 0      1位定时 计数器
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 45
3.模式
此模式下定时器计数器 作为可自动重装载的位计数器(TLn), 如下图所示TLn 的溢
出不仅置位TFn而且将 THn 内容重新装入TLnTHn 内容由软件预置重装时 THn 内容不变。模式的操
作对于定时器及定时器 是相同的
2.模式
模式除了使用了 THnTLn 全部16 位外,其他与模式 完全相同
OSC ÷d*
 
C/T=1 TFn
控制
C/T=0
Tn 
中断
TRn
INTn 
TLn
  位)
THn
  位)
重装
定时器
GATE 
* T0x12 = 模式下d=12(12时钟模式;  T0x12 = 模式下d=1(1T)
   定时器 计数器 的模式 2     8位自动重装载
OSC ÷d*
 
C/T=1 TFn
控制
C/T=0
Tn 
TLn
THn
  位) 中断
TRn
定时器
GATE 
INTn 
* T0x12 = 模式下,d=12(12时钟模式  T0x12 = 模式下,d=1(1T)
   定时器 计数器 和定时器 计数器 的模式 1      1位定时 计数器
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 46
     对定时器此模式下定时器 TL0TH0 作为个独立的位计数器下图为模式 时的定时器
逻辑图TL0 占用定时器的控制位C/TGATETR0INT0 TF0TH0限定为定时器功能计数器周
), 占用定时器TR1 TF1。此时,TH0 控制定时器 中断
模式是为了增加一个附加的 位定时器计数器而提供的使单片机具有三个定时器 计数器
模式只适用于定时器 计数器定时器T1 处于模式时相当于TR1=0停止计数此时T1 可用来作
串行口波特率发生器), T0可作为两个定时器用
4.模式
对定时器,在模式 时,定时器停止计数,效果与将 TR1设置为 相同
OSC ÷d*
 
C/T=1 TF0
C/T=0
T0 
TR0
INT0 
TL0
  位)
OSC ÷d* TF1
TH0
  位)
TR1
定时器
GATE 
控制
控制
中断
中断
* T0x12 = 模式下d=12(12时钟模式  T0x12 = 模式下d=1(1T)
   定时 计数器 的模式       两个 位计数器
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 47
                 定时器应用举例
 定时 计数器编程定时计数器的应用编程主要需考虑根据应用要求通过程序初
始化,正确设置控制字正确计算和计算计数初值编写中断服务程序适时设置控制位等通常情况下
设置顺序大致如下
1)工作方式控制字(TMODT2CON)的设置
2)计数初值的计算并装入THxTLxRCAP2HRCAP2L
3)中断允许位 ETxEA的设置,使主机开放中断
4) 停位 TRx 的设置等
现以定时计数器 为例作一简要介绍
8051系列单片机的定时器 计数器是以不断加进行计数的,即属加 计数器,因此,就不能
直接将实际的计数值作为计数初值送入计数寄存器THxTLx 中去,而必须将实际计数值以 1316
模求补,以其补码作为计数初值设置THx TLx
设:实际计数值为,计数器长度为 n=81316), 则应装入计数器 THxTLx中的计数初值为
-x式中为取模值例如,工作方式 的计数长度为13 位,则n=13 13 为模工作方式
的计数长度为16 n=16,以 16 为模等等。所以,计数初值为= 
-x
对于定时模式是对机器周期计数而机器周期与选定的主频密切相关。因此,需根据应用系统所选
定的主频计算出机器周期值现以主频6MHz 为例,则机器周期为
一个机器周期12
主振频率 12
×10μμ
实际定时时间Tc = ·Tp
式中Tp 为机器周期Tc 为所需定时时间为所需计数次数Tp Tp 一般为已知值在求出
Tp 后即可求得所需计数值再将 求补码,即求得定时计数初值。即
                      )补= 2n - 
例如,设定时时间Tc = 5ms机器周期 TP = μ,可求得定时计数次数
5ms
μ
x  = 2500
设选用工作方式,则 n=16则应设置的定时时间计数初值为 = 16 - x=65536-2500=63036
还需将它分解成两个位十六进制数分别求得低位为 3CH 装入TLx,高 位为F6H 装入 THx 中。
工作方式的最大计数次数分别为819265536 256
对外部事件计数模式只需根据实际计数次数求补后变换成两个十六进制码即可
【例 定时计数器应用编程,设某应用系统,选择定时计数器定时模式,定时时间Tc = 10ms
主频频率为12MHz,每 10ms向主机请求处理选定工作方式 计算得计数初值:低位初值为 F0H,高
位初值为D8H
初始化程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 48
所谓初始化,一般在主程序中根据应用要求对定时计数器进行功能选择及参数设定等预置程序
本例初始化程序如下
START
MOV SP#60H ;设置堆栈区域
MOV TMOD#10H 选择T1定时模式工作方式
MOV TH1#0D8H 设置高字节计数初值
MOV TL1#0F0H 设置低字节计数初值
SETB EA
SETB ET1
开中断
其他初始化程序
 ;
SETB TR1 启动T1 开始计时
 ;
继续主程序
)中断服务程序
INTT1PUSH
PUSH DPL
PUSH DPH
MOV TL1,#0F0H
MOV TH1,#0D8H
重新置初值
中断处理主体程序
POP DPH
POP DPL
POP
RETI ;返回
这里展示了中断服务子程序的基本格式8052 系列单片机的中断属于矢量中断每一个矢量中断源
只留有个字节单元一般是不够用的常需用转移指令转到真正的中断服务子程序区去执行
【例 对外部正脉冲测宽。选择定时计数器进行脉宽测试较方便,但也可选用定时 计数器
定时计数器 进行测宽操作本例选用定时计数器 T0)以定时模式,工作方式 INT0引脚上的正
脉冲进行脉宽测试
设置GATE ,机器周期 TP μ本例程序段编制如下
INTT0MOV TMOD#09H T0 为定时方式GATE
INT0  引脚
T0 计数
启动 停止
主程序段
现场保护
现场恢复
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 49
MOV TL0#00H      
MOV TH0#00H      
CLR EX0 ;关 INT0 中断
LOP1JB P3.2LOP1 等待INT0 引低电平
LOP2JNB P3.2LOP2 等待INT0 引脚高电平
SETB TR0 启动T0 开始计数
LOP3JB P3.2LOP3 等待INT0 低电平
CLR TR0 停止T0 计数
MOV TL0 低字节计数值送
MOV TH0 高字节计数值送
计算脉宽和处理
【例  利用定时 计数器或定时 计数器Tx 端口改造成外部中断源输入端口的应用设计
在某些应用系统中常会出现原有的两个外部中断源INT0 INT1不够用,而定时 计数器有多余
则可将Tx 用于增加的外部中断源现选择定时计数器为对外部事件计数模式工作方式自动再装
), 设置计数初值为FFH T1端口输入一个负跳变脉冲计数器即回 溢出,置位对应的中断请
求标志位TF1 向主机请求中断处理从而达到了增加一个外部中断源的目的。应用定时计数器
T1的中断矢量转入中断服务程序处理其程序示例如下
)主程序段
ORG 0000H
AJMP MAIN 转主程序
ORG 001BH
LJMP INTER     ;转 T1 中断服务程序
ORG 0100 ;主程序入口
MAIN:…
MOV SP#60H ;设置堆栈区
MOV TMOD#60H 设置定时计数器 计数方式
MOV TL1#0FFH ;设置计数常数
MOV TH1#0FFH
SETB EA ;开中断
SETB ET1 开定时计数器中断
SETB TR1 启动定时计数器 计数
中断服务程序具体处理程序略
ORG 1000H
INTERPUSH
PUSH DPL
PUSH DPH
现场入栈保护
TH0,TL
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 50
【例  某应用系统需通过 P1.0P1.1 分别输出周期为200 μ400μ的方波。为此,系统选用
定时器计数器T0), 定时方式 主频为6MHzTP=2μ经计算得定时常数为 9CH 38H
本例程序段编制如下
初始化程序段
PLT0:MOV TMOD,#03H 设置T0 定时方式
MOV TL0#9CH     设置 TL0初值
MOV TH0#38H     设置TH0 初值
SETB EA
SETB ET0
SETB ET1
SETB TR0 ;启动
SETB TR1 ;启动
开中断
(2)中断服务程序段
1)
INT0P
MOV TL0#9CH     重新设置初值
CPL P1.0 ;对 P1.0 输出信号取反
RETI ;返回
2)
INT1P
MOV TH0#38H     重新设置初值
CPL P1.1 ;对 P1.1 输出信号取反
RETI ;返回
POP DPH
POP DPL
POP
RETI ;返回
中断处理主体程序
现场出栈复原
这是中断服务程序的基本格式
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 51
在实际应用中应注意的问题如下
定时计数器的实时性
定时计数器启动计数后当计满回 溢出向主机请求中断处理由内部硬件自动进行但从回
出请求中断到主机响应中断并作出处理存在时间延迟且这种延时随中断请求时的现场环境的不同而不同
一般需延时个机器周期以上这就给实时处理带来误差大多数应用场合可忽略不计但对某些要求实
时性苛刻的场合应采用补偿措施
这种由中断响应引起的时间延时对定时计数器工作于方式而言有两种含义一是由于中断
响应延时而引起的实时处理的误差二是如需多次且连续不间断地定时计数,由于中断响应延时,则在
中断服务程序中再置计数初值时已延误了若干个计数值而引起误差特别是用于定时就更明显
例如选用定时方式设置系统时钟由于上述原因就会产生实时误差这种场合应采用动态补偿办法
以减少系统始终误差所谓动态补偿即在中断服务程序中对THxTLx重新置计数初值时,应将 THxTLx
从回溢出又重新从 开始继续计数的值读出并补偿到原计数初值中去进行重新设置可考虑如下补偿方
CLR EA 禁止中断
MOV TLx ;读TLx 中已计数值
ADD #LOW LOW 为原低字节计数初值
MOV TLx;设置低字节计数初值
MOV #HIGH 原高字节计数初值送
ADDC THx ;高字节计数初值补偿
MOV THx;置高字节计数初值
SETB EA ;开中断
)动态读取运行中的计数值
在动态读取运行中的定时计数器的计数值时如果不加注意就可能出错这是因为不可能在同一
时刻同时读取THx TLx中的计数值。比如,先读 TLx后读 THx,因为定时计数器处于运行状态,在读TLx
时尚未产生向THx 进位,而在读THx前已产生进位这时读得的 THx就不对了;同样,先读 THx后读TLx
可能出错
一种可避免读错的方法是:先读THx,后读 TLx将两次读得的THx进行比较;若两次读得的值相等
则可确定读的值是正确的否则重复上述过程,重复读得的值一般不会再错此法的软件编程如下
RDTM  MOV THx 读取 THx
  MOV R0TLx 读取 TLx R0
   CJN THxRDTM      比较两次 THx 值,若相等,则读得的值正
       ;确,程序往下执行否则重读
  MOV  R1    ;将 THx存于R1
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 52
;------------------------------------------------------------------------------
    本程序演示 STC12C2052ADSTC12C5410AD 系列单片机用定时器 RS-232 通信
波特率发生器的使用方法, 有关波特率自动重装数的计算请查看程序后面的内容
    本程序同时演示 STC89C51RC/STC89C52RC/STC89C53RC/STC89C54RD+/STC89C58RD+/
;STC89C516RD+系列单片机用定时器  RS-232 通信波特率发生器的使用方法
;    STC12C2052ADSTC12C5410AD 系列是 "一个时钟机器周期 "  8051 单片机。它
的定时器、定时器 1  有两种计数速率,一种是12T 模式 12个时钟加 1,与普通的
;8051单片机相同另一种是 1T 模式:每个时钟加 1是普通 8051单片机的 12 倍。
;    STC89C51RC/RD+ 系列是 "12 个时钟机器周期"  8051 单片机, 与普通的 8051单片
机相同
;    STC12C2052ADSTC12C5410AD 系列的单片机, 定时器、定时器 1 的计数速率由
特殊功能寄存器 AUXR  bit7, bit6 决定,bit7 的符号是 T0x12, 如果 T0x12=1
定时器0 就工作在 1T 模式。bit6 的符号是 T1x12, 如果 T1x12=1定时器 1 就工作在
;1T 模式。有关详情请参考 STC12C5410AD 系列单片机器件手册中文应用指南
使用方法
;  1. 修改程序, 改变波特率参数或改变定时器的计数速率(1T模式 /12T模式
;  2. 汇编程序, 将代码下载到单片机中
;  3. 调整串口调试助手的波特率与单片机的波特率相同, 并打开调试助手的串口STC
     下载程序 STC-ISP.exe 版本 3.2 以上有串口调试助手功能
;  4. 打开单片机电源, 可以在串口调试助手的接收区看到单片机发出的数据
;  5. 用串口调试助手发送单个字节到单片机, 单片机收到后会立即回发到串口调试助手
;  6. 反复步骤 1-5, 检验波特率参数是否正确, 特别要观察定时器 1 工作在 1T 模式
     的波特率例如,先设置定时器 1 工作在 12T 模式, 设置波特率为 9600,执行
     步骤 2-5, 检验波特率参数是否正确然后仅仅将定时器1 的计数速率改成
     1模式,执行步骤 2-5就会发现本程序的波特率变成了 115200波特率是
     1模式的 12 倍。
;------------------------------------------------------------------------------
定义 STC12C5410AD 系列 MCU 特殊功能寄存器
UXR           EQU  8E
;------------------------------------------------------------------------------
定义波特率自动重装数
;******************************************************************************
以下是 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
           定时器做波特率发生器
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 53
;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 时,计算出的自动重装数和波特率
;******************************************************************************
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 54
;******************************************************************************
以下是 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 时,计算出的自动重装数和波特率
;******************************************************************************
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 55
;******************************************************************************
以下是 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                  ;设置堆栈指针
    C   LE_MU_TA             ;点亮 MCU 工作指示灯
    A Inia_UA              ;初始化串口
    MOV   R0, #30H                  ;30H = 可打印字符 '0' ASCII
    MOV   R2, #10                   ;发送10 个字符 '0123456789'
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 56
LOOP:
    M   A, R
    ACALL Send_One_Byte             ;发送一个字节可将PC串口调试助手设置成字符显示
    ;如果是字符显示, 显示为 0123456789,
    ;如设置成 16 进制显示, 显示 30 31 32 33 34 35 36 37 38 39
    INC   R
    DJNZ  R2, LOOP
MAIN_WAIT:
    SJMP  MAIN_WAIT                 ;跳转到本行, 无限循环
;------------------------------------------------------------------------------
T_Inerrut:                     ;串口中断服务程序
    JB    RI, Is_UART_Receive
    CLR   TI                        ;清零串口发送中断标志
    RETI                            ;发送时使用的是查询方式不使用中断
Is_UART_Receive:
    CLR   R
    PUSH  ACC
    MOV   A, SBUF                   ;取接收到的字节
    ACALL Send_One_Byte             回发收到的字节
    POP   AC
    RETI
;------------------------------------------------------------------------------
Initial_UART:                       ;初始化串口
; SCON  Bit:   7       6     5     4     3     2     1    0
            SM0/FE   SM1   SM2   REN   TB8   RB8    TI   RI
    M   SCON #5H                ; 011,000 8位可变波特率, 无奇偶校验
    MOV   TMOD, #21H                ;设置定时器 1 位自动重装计数器
    MOV   TH1, #RELOAD_COUNT        设置定时器1 自动重装数
    MOV   TL1, #RELOAD_COUNT
;---------------------------------------
    ORL   PCON, #80H               ;若本行有效, 波特率可以加倍
;---------------------------------------
以下两行指令只能有一行有效
;    ORL  AUXR, #01000000B          定时器工作在1T 模式,波特率可以快
    12
    ANL   AUXR, #10111111B          定时器工作在 12T 模式,与普通的8051 相同
以上两行指令只能有一行有效
;---------------------------------------
    SETB  TR1                       ;启动定时器
    SETB  ES
    SETB  EA
    RET
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 57
;------------------------------------------------------------------------------
入口参数: A  要发送的字节
end_One_Byte:                      ;发送一个字节
    CLR   E
    CLR   TI                        ;清零串口发送中断标志
    MOV   SBUF, 
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  1 模式的计算公式 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. 如果误差绝对值 > 4.5% 要更换波特率或者更换晶体频率, 重复步骤 1-4
: Fosc = 22.1184MHz, Baud0 = 57600 (12T 模式
; 1. RELOAD = 256 - INT( 22118400/57600/32/12 + 0.5)
           = 256 - INT( 1.5 )
;           = 256 - 1
;           = 25
;           = 0FFH
; 2. Baud = 22118400/(256-255)/32/12
         = 57600
; 3. 误差等于零
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 58
: 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
;           = 25
;           = 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
;           = 25
;           = 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 - 1
;           = 24
;           = 0F3H
; 2. Baud = 2000000/(256-243)/32
;         = 4808
; 3. error = 0.16%
;------------------------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 59
Mnemonic Add Name  7  6  5  4  3  2  1  0 Reset Value
ADC_CONTR C5h A/D 转换控制寄存器  ADC_POWER  SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0xx0,0000
ADC_DATA C6h A/D 转换结果寄存器 -  -  -  -  -  -  -  - xxxx,xxxx
ADC_LOW2 BEh A/D 转换结果寄存器,低 -  -  -  -  -  -  -  - xxxx,xxxx
D 转换控制寄存器  ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0 0xx0,0000
ADC_CONTR 特殊功能寄存器:  A/D转换控制特殊功能寄存器
CHS2 CHS1 CHS0 Analog Input Channel Select
模拟输入通道选择
选择  P1.0 作为A/D输入来用
选择  P1.1 作为A/D输入来用
选择  P1.2 作为A/D输入来用
选择  P1.3 作为A/D输入来用
选择  P1.4 作为A/D输入来用
选择  P1.5 作为A/D输入来用
选择  P1.6 作为A/D输入来用
选择  P1.7 作为A/D输入来用
CHS2 / CHS1 / CHS0模拟输入通道选择CHS2 / CHS1 / CHS0
ADC_START:  模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换转换结束后为
ADC_FLAG:   模数转换器转换结束标志位A/D转换完成后ADC_FLAG = 要由软件清
ADC_DATA / ADC_LOW2  特殊功能寄存器:  A/D 转换结果特殊功能寄存器
模拟/数字转换结果计算公式如下结果  ADC_DATA[7:0],ADC_LOW2[1:0] ) = 1024 x Vin / Vcc
Vin为模拟输入通道输入电压Vcc 为单片机实际工作电压用单片机工作电压作为模拟参考电压
   STC12C5410AD 系列带A/D 转换的单片机在P1 口,有10 位高速A/D 转换器, 速度可达100KHz
P1.7 - P1.0 路电压输入型A/D,可做温度检测、电池电压检测、按键扫描、频谱检测等。上电复位
P1 口为弱上拉型I/O 口,用户可以通过软件设置将路中的任何一路设置为 A/D 转换,不需作为A/D 使
用的口可继续作为I/O口使用需作为 A/D使用的口需先将其设置为高阻输入或开漏模式。在P1M0P1M1
中对相应的位进行设置
          A转换  A/D 转换测试程序
P1M0
地址91P1M1
地址:92I/O 口模式P1.x 如做A/D使用,需先将其设置成开漏或高阻输入
准双向口(传统8051 I/O 口模式,
灌电流可达
20mA ,
拉电流为
230µA
推挽输出(强上拉输出可达
20mA
尽量少用
仅为输入(高阻),如果该
I/O
口需作为
A/D
使用,可选此模式
开漏
(Open Drain)
如果该
I/O
口需作为
A/D
使用,可选此模式
SPEED1SPEED0模数转换器转换速度控制位
SPEED1 SPEED0 A/D转换所需时间
11210个时钟周期转换一次
CPU工作频率20MHz
A/D转换速度约100KHz
420个时钟周期转换一次
630个时钟周期转换一次
840个时钟周期转换一次
ADC_POWER:   ADC 电源控制位
    0关闭 ADC电源:打开A/D转换器电源
   启动 AD转换前一定要确认 AD电源已打开AD转换结束后关闭 AD电源可降低功耗也可不关闭
   初次打开内部 A/D转换模拟电源需适当延时等内部模拟电源稳定后再启动A/D 转换
   建议启动A/D 转换后,在 A/D转换结束之前,不改变任何 I/O口的状态,有利于高精度 A/D转换
ADC_DATA C6h D 转换结果寄存器全部位有效10A/转换结果的高 -  -  -  -  -  -  -  - xxxx,xxxx
ADC_LOW2 BEh D 转换结果寄存器只有低位有效10A/转换结果的低 x  x  x  x  x  -  - xxxx,xxxx
ADC_DATA位为 ADC转换的高 ADC_LOW2的低 位为ADC 转换的低则为10 位精度
如果舍弃ADC_LOW2 的低只用 ADC_DATA 寄存器的A/D 转换结果为位精度
                              结果  ADC_DATA[7:0]  = 256 x Vin / Vcc
             不管是A/D转换完成后由该位申请产生中断还是由软件查询该标志位 A/D转换是否结束
         A/D转换完成后ADC_FLAG = 一定要软件清
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 60
A/D转换在P1 口, P1.0 - P1.7共八路
10K
10K
1/2 Vcc
2/3 Vcc
3/4 Vcc
Vcc
10K
10K
10K
4/5 Vcc
  A/D 转换典型应用线路按键扫描
DIP-28(窄体/ SOP-28
P2.2 28 P2.1P2.3 27 P2.0/CEX2/PCA2/PWM2RST 26
VDD
RxD/P3.0 25 P1.7/SCLK/ADC7
TxD/P3.1 24 P1.6/MISO/ADC6
XTAL2 23 P1.5/MOSI/ADC5
XTAL1 22 P1.4/SS/ADC4
INT0/P3.2 21 P1.3/ADC3
INT1/P3.3 20 P1.2/ADC2
ECI/T0/P3.4 10 19 P1.1/ADC1
PWM1/PCA1/CEX1/T1/P3.5 11 18 P1.0/ADC0
VSS
12 17 P3.7/CEX0/PCA0/PWM0
PWM3/PCA3/CEX3/P2.4 13 16 P2.7P2.5 14 15 P2.6
47pF以上
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 61
;/* ---  STC International Limited ---------------- */
;/* ---  宏晶科技 姚永平  设计 2006/1/6   V1.0 ----- */
;/* ---  演示 STC12C5410AD 系列 MCU  A/D 转换功能 */
;/* ---  演示 STC12C2052AD 系列 MCU  A/D 转换功能 */
;/* ---  Mobile: 13922805190 ---------------------- */
;/* ---  Fax: 0755-82944243 ----------------------- */
;/* ---  Tel: 0755-82948409 ----------------------- */
;/* ---  Web: www.mcu-memory.com ------------------ */
;ADC DEMO_5410_ASM.ASM 汇编程序演示 STC12C5410AD 系列 MCU  A/D 转换功能
本演示程序在STC-ISP Ver 3.0A.PCB 的下载编程工具上测试通过相关的A/D 转换结果在P1口上显示
转换结果也以 16 进制形式输出到串行口可以用串行口调试程序观察输出结果
时钟 18.432MHz, 波特率 = 9600
;转换结果也在 P1 口利用 LED 显示出来, 方便观察
LED_MCU_START   EQU  P3.7
ADC_CONTR  EQU  0C5H   ;A/D转换寄存器
ADC_DATA   EQU  0C6H   ;A/D转换结果寄存器, 10 A/D转换结果的高
;ADC_LOW2   EQU 0BEH   ;A/D转换结果寄存器, 位有效, 10  A/D 转换结果的低
                       ;如果不用ADC_LOW2 的低只用 ADC_DATA则为 A/D 转换
P1M0       EQU  91H    ;P1 口模式选择寄存器
P1M1       EQU  92H    ;P1 口模式选择寄存器
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转换结果
            A/D转换功能汇编程序示例
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 62
;--------------------------------------------------
    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_Per_O              ;ADC 电源, 第一次使用时要打开内部模拟电源
                                   ;ADC 电源, 可适当加延时1mS以内就足够了
    ACALL Set_P12_Open_Drain        设置 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                 ;停机
;-------------------------------------------------------------
;-------------------------------------------------------------
;-------------------------------------------------------------
;-------------------------------------------------------------
nitiate_RS232:                     ;串口初始化
    CLR   ES                        ;禁止串口中断
    MOV   TMOD, #20H                ;设置 T1 为波特率发生器
    M   S #                ;00 8位数据位, 无奇偶校验
    M   TH1, #0FBH                ;18432Mz 晶振, 波特率 = 9600
    MOV   TL1, #0FBH
    SETB  TR1                       ;启动 T1
    RET
;--------------------------------------------------------------
Send_Byte:
    CLR   T
    MOV   SBUF, 
Send_Byte_Wait_Finish:
    JNB   TI, Send_Byte_Wait_Finish
    CLR   T
    RET
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 63
;--------------------------------------------------------------
ADC_Power_On:
    PUSH  ACC
    O   ADC_ONTR #80H           ;A/D 转换电源
    MOV   A, #20H
    ACAL Day                    ;A/D转换电源后要加延时1mS 以内就足够了
    POP   AC
    RET
;-------------------------------------------------------------
设置P1.2,设置 A/D通道所在的 I/O 为开漏模式
Set_P12_Open_Drain:
    PUSH  ACC
    MOV   A, #00000100B
    ORL   P1M0, 
    ORL   P1M1, 
    POP   AC
    RET
;-------------------------------------------------------------
设置 P1.2 为普通IO
Set_P12_Normal_IO:
    PUSH  ACC
    MOV   A, #11111011B
    ANL   P1M0, 
    ANL   P1M1, 
    POP   AC
    RET
;-------------------------------------------------------------
Set_ADC_Channel_2:
    MOV   ADC_CONTR, #ADC_Power_On_Speed_Channel_2
                    ;选择P1.2作为A/D 转换通道
    MOV   A, #05   ;更换 A/D 转换通道后要适当延时, 使输入电压稳定
                    ;以后如果不更换 A/D 转换通道的话, 不需要加延时
    ACALL Delay     切换 A/D 转换通道加延时 20uS200uS 就可以了与输入电压源的内阻有关
    RET
;-------------------------------------------------------------
Send_AD_Result:
    PUSH  ACC
    MOV   A, ADC_Channel_2_Result    AD 转换结果
    AALL Send_Byte                 ;发送转换结果到 PC 
    POP   AC
    RET
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 64
;----------------------------------------------------------
Get_AD_Result:
    PUSH  ACC                       ;入栈保护
    MOV   ADC_DATA, #0
    ORL   ADC_CONTR, #00001000B     启动 AD 转换
Wait_AD_Finishe:
    M   A #000             ;判断 AD 转换是否完成
    ANL   A, ADC_CONTR
    JZ    Wait_AD_Finishe           ;AD 转换尚未完成, 继续等待
    ANL   ADC_CONTR, #11100111B     0 ADC_FLAG, ADC_START , 停止 A/D转换
    MOV   A, ADC_DATA
    MOV   ADC_Channel_2_Result, A   ;保存 AD 转换结果
    POP   AC
    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, #29              ;2 CLOCK  ------+              |
elay_Loop:                     ;               | 1002 CLOCK   |200406 CLOC
    DJNZ  R2, Delay_Loop        ;4 CLOCK        |              |
    DJNZ  R3, Delay_Loop1       ;4 CLOCK  ------+              
    DJNZ  R4, Delay_Loop0       ;4 CLOCK  ---------------------+
    POP   0
    POP   0
    POP   0
    RET
;----------------------------------------------------------------
    END
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 65
STC12C5410AD系列 1T  8051 单片机 PCA/PWM 特殊功能寄存器    PCA/PWM SFRs
   STC12C5410 系列单片机 PWM/PCA 应用及测试程序
符号 CIDL CPS1 CPS0 ECF
CMOD - PCA模式 寄存器的位分配 (地址D9H
符号 描述
CIDL 计数器阵列空闲控制:CIDL时,空闲模式下PCA计数器继续工作。CIDL
时,空闲模式下PCA计数器停止工作
6 - 保留为将来之用
2 - CPS1,CPS0 PCA计数脉冲选择(见下表)。
ECF PCA计数溢出中断使能:ECF时,使能寄存器CCON  CF位的中断。ECF
禁止该功能
CMOD - PCA模式 寄存器的位描述 (地址D9H
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
CCON D8h PCA Control Register CF  CR CCF3 CCF2 CCF1 CCF0 00xx,0000
CMOD D9h PCA Mode Register  CIDL  -  -  -  CPS1 CPS0 ECF 0xxx,x000
CCAPM0 DAh PCA Module 
Mode Register ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000
CCAPM1 DBh PCA Module 
Mode Register ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000
CCAPM2 DCh PCA Module 
Mode Register ECOM2 CAPP2 CAPN2 MAT2 TOG2 PWM2 ECCF2 x000,0000
CCAPM3 DDh PCA Module 
Mode Register ECOM3 CAPP3 CAPN3 MAT3 TOG3 PWM3 ECCF3 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
CCAP2L ECh PCA Module-2 Capture
Register Low 0000,0000
CCAP2H FCh PCA Module-2 Capture
Register High 0000,0000
CCAP3L EDh PCA Module-3 Capture
Register Low 0000,0000
CCAP3H FDh PCA Module-3 Capture
Register High 0000,0000
PCA_PWM0 F2h PCA PWM Mode
Auxiliary Register  EPC0H EPC0L xxxx,xx00
PCA_PWM1 F3h PCA PWM Mode
Auxiliary Register  EPC1H EPC1L xxxx,xx00
PCA_PWM2 F4h PCA PWM Mode
Auxiliary Register  EPC2H EPC2L xxxx,xx00
PCA_PWM3 F5h PCA PWM Mode
Auxiliary Register  EPC3H EPC3L xxxx,xx00
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 66
符号 CF CR CCF1 CCF0
CCON - PCA 控制寄存器的位分配 (地址D8H
符号 描述
CF PCA计数器阵列溢出标志。计数值翻转时该位由硬件置位。如果CMOD寄存器
ECF位置位,CF标志可用来产生中断CF位可通过硬件或软件置位,但只
可通过软件清零
CR PCA计数器阵列运行控制位。该位通过软件置位,用来起动PCA计数器阵列计
数。该位通过软件清零,用来关闭PCA计数器
5 - 保留位保留为将来使用
CCF1 PCA模块中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软
件清零
CCF0 PCA模块中断标志。当出现匹配或捕获时该位由硬件置位。该位必须通过软
件清零
CCON - PCA 控制寄存器的位描述 (地址D8H
符号 ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
CCAPMn - PCA比较 捕获模块寄存器的位分配CCAPM0地址0DAHCCAPM1地址0DBH
符号 描述           n : 0,1,2,3
保留为将来之用
ECOMn 使能比较器ECOMn时使能比较器功能
CAPPn 正捕获CAPPn时使能上升沿捕获
CAPNn 负捕获CAPNn时使能下降沿捕获
MATn 匹配。当MATn时,PCA计数值与模块的比较捕获寄存器的值的匹配将置
CCON寄存器的中断标志位CCFn
TOGn 翻转。当TOGn时,工作在PCA高速输出模式PCA计数器的值与模块的比
捕获寄存器的值的匹配将使CEXn脚翻转
(CEX0/P3.7,CEX1/P3.5,CEX2/P2.0,CEX3/P2.4)
PWMn 脉宽调节模式 PWMn 使能CEXn脚用作脉宽调节输出
ECCFn 使能CCFn中断使能寄存器CCON的比较捕获标志CCFn用来产生中断
CCAPMn - PCA比较 捕获模块寄存器的位描述    n0,1,2,3 
ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn 模块功能
无此操作
16位捕获模式CEXn的上升沿触发
16位捕获模式CEXn的下降沿触发
16位捕获模式,由CEXn的跳变触发
16位软件定时器
16位高速输出
PWM
PCA模块工作模式CCAPMn寄存器0,1,2,3
CPS1 CPS0 选择PCA时钟源输入
内部时钟Fosc12
内部时钟Fosc
定时器溢出由于定时器可以工作在 方式所以可以达
到计一个时钟就溢出频率反而是最高的可达到Fosc
ECI/P3.4脚的外部时钟输入最大速率Fosc
CMOD - PCA 计数器阵列的计数脉冲选择 (地址D9H
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 67
STC12C5410AD 系列单片机可编程计数器阵列PCA
    P含有一个特殊的16 位定时器 16 位的捕获比较模块与之相连每个模块可编程工作
种模式下:上升下降沿捕获、软件定时器、高速输出或可调制脉冲输出。模块 连接到P3.7
CEX0/PCA0/PWM0), 模块连接到 P3.5CEX1/PCA1/PWM1), 模块连接到P2.0CEX2/PCA2/
PWM2), 模块 连接到P2.4CEX3/PCA3/PWM3)。 寄存器CH CL 的内容是正在自由递增计数的16
PCA定时器的值。PCA定时器是个模块的公共时间基准,可通过编程工作在:1/12振荡频率、1/2振荡频
率、定时器溢出或 ECI脚的输入(P3.4)。 定时器的计数源由CMOD SFR CPS1CPS0位来确定(见
CMOD特殊功能寄存器说明)。
Module 0 P3.7/CEX0/PCA0/PWM0
P2.4/CEX3/PCA3/PWM3
PCA Timer/Counter
16 Bit
Module 3
Programmable  Counter  Array
CH CL
CF CR CCF3 CCF2 CCF1 CCF0
Fosc/12
IDLE
16-Bit counter
TO PCA module
 PCA
interrupt
CMOD
CCON
PCA  Timer/Counter
Fosc/2
Timer 0 overflow
External  input
   ECI (P3.4)
CIDL CPS1 CPS0 ECF
Module 1 P3.5/CEX1/PCA1/PWM1
P2.0/CEX2/PCA2/PWM2
Module 2
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 68
   CMOD SFR 还有 个位与PCA 相关。它们分别是CIDL空闲模式下允许停止 PCAECF,置位
时,使能PCA 中断 PCA 定时器溢出将PCA 计数溢出标志 CFCCON  SFR置位
   CCON SFR 包含PCA 的运行控制位CR)和 PCA 定时器标志CF以及各个模块的标志CCF3/
CCF2/CCF1/CCF0)。 通过软件置位 CR位(CCON.6来运行 PCACR 位被清零时PCA关闭 PCA
计数器溢出时CF 位(CCON.7)置位如果CMOD寄存器的 ECF位置位就产生中断CF位只可通过
软件清除。CCON 寄存器的位PCA各个模块的标志 对应模块 ,位 对应模块 1,对应
模块2,对应模块 ), 当发生匹配或比较时由硬件置位这些标志也只能通过软件清除所有模块共
用一个中断向量PCA 的中断系统如图所示
   PCA 的每个模块都对应一个特殊功能寄存器。它们分别是:模块对应 CCAPM0,模块对应
CCAPM1,模块对应 CCAPM2,模块对应 CCAPM3.特殊功能寄存器包含了相应模块的工作模式控制位
     当模块发生匹配或比较时ECCFn 位(CCAPMn.02,3由工作的模块决定)使能
CCON SFRCCFn 标志来产生中断
   PWMCCAPMn.1用来使能脉宽调制模式
   PCA计数值与模块的捕获 比较寄存器的值相匹配时如果 TOG位(CCAPMn.2)置位,模块的
CEXn输出将发生翻转
   PCA计数值与模块的捕获 比较寄存器的值相匹配时如果匹配位MATnCCAPMn.3)置位
CCON 寄存器的CCFn 位将被置位
   CAPNnCCAPMn.4 CAPPnCCAPMn.5)用来设置捕获输入的有效沿。CAPNn位使能下降沿
有效,CAPPn 位使能上升沿有效如果两位都置位则两种跳变沿都被使能捕获可在两种跳变沿产生
   通过置位CCAPMn 寄存器的ECOMn 位(CCAPMn.6来使能比较器功能
   每个PCA 模块还对应另外两个寄存器,CCAPnHCCAPnL。当出现捕获或比较时,它们用来保存
16 位的计数值。当 PCA 模块用在PWM 模式中时,它们用来控制输出的占空比
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 69
PCA 捕获模式
   要使一个PCA 模块工作在捕获模式下图), 寄存器CCAPMn 的两位CAPNn CAPPn或其中任
何一位必须置对模块的外部CEXn 输入(CEX0/P3.7CEX1/P3.5,CEX2/P2.0,CEX3/P2.4口)的
跳变进行采样当采样到有效跳变时PCA硬件就将 PCA计数器阵列寄存器CH CL的值装载到模块
的捕获寄存器中CCAPnL CCAPnH)。
16 位软件定时器模式
   通过置位CCAPMn 寄存器的ECOMMAT 位,可使PCA模块用作软件定时器(下图)。 PCA 定时器的
值与模块捕获寄存器的值相比较,当两者相等时,如果位CCFn CCON  SFR中)和位ECCFn
CCAPMn  SFR 中)都置位,将产生中断
如果CCON SFR的位 CCFn CCAPMn SFR的位ECCFn位被置位将产生中断
CF CR CCF3 CCF2 CCF1 CCF0
CCAPnH
CH CL
CCAPnL
ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
0 0 0 0
CCONC0h
PCA  interrupt
Capture
CEXn
 CCAPMnn=0,1
(地址:DAhDBh
 PCA Capture Mode PCA捕获模式图
CF CR CCF3 CCF2 CCF1 CCF0
ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
CCON
   PCA
Interrupt
(To CCFn)
CCAPMn
16-Bit Comparator
CCAPnH CCAPnL
CH CL
Match
Enable
Write to CCAPnH
01
PCA Software Timer Mode/ 软件定时器模式/PCA 比较模式
Write to CCAPnL
0 0 1 0 0
先写 后写
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 70
高速输出模式
   该模式中(下图), PCA计数器的计数值与模块捕获寄存器的值相匹配时PCA模块的 CEXn输出将
发生翻转。要激活高速输出模式,模块CCAPMn SFR TOG,MATECOM 位必须都置位。
  PCA
Interupt
PCA High-Speed Output Mode / PCA高速输出模式
CF CR CCF3 CCF2 CCF1 CCF0
ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
CCON
(To CCFn)
CCAPnH CCAPnL
CH CL
Match
Enable
01
CEXn
Toggle
CCAPMn
Write to CCAPnH
Write to CCAPnL
0 0 1 1 0
16-Bit comparator
翻转
先写 后写
在使用PCA 高速输出模式时的特别应用注意事项
   如果某一 PCA模块工作在高速脉冲输出模式要用软件输出改变同一组其它普通I/O 口的状态,需先
做判断CH 是否等于 CCAPnH,若不等,可自由修改,若相等,再判断 CL>CCAPnL情况下才允许改变同一
组其它普通I/O 口的状态如用 P3.7/PCA0/PWM0PCA高速脉冲输出同时程序里面又要用软件输出
改变P3.4 口的状态时,就需要做判断
   当某个具有PCA 高速脉冲输出功能的I/O口工作在高速脉冲输出模式时如果软件对同一组的其它
I/O 口进行操作,如果遇上PCA 比较器匹配时该操作有可能会改变此具有PCA 高速脉冲输出功能的 I/O
口的状态,所以同一组的其它I/O 口建议不要做输出用如果做输出用时要进行判断
具有PCA高速脉冲输出
模式的I/O同一组的其它I/O
PCA0/P3.7 P3.0,P3.1,P3.2,P3.3,P3.4,P3.5
PCA1/P3.5 P3.0,P3.1,P3.2,P3.3,P3.4,P3.7
PCA2/P2.0 P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7
PCA3/P2.4 P2.0,P2.1,P2.2,P2.3,P2.5,P2.6,P2.7
当以上管脚用在PCA高速脉
冲输出模式时建议同一
组的其它I/O口工作在输入
模式如工作在PCA高速输
出模式而同一组的它
I/O口又必须工作在输出模
建议如右列所示
要用软件输出改变同一组其它普通I/O口的状态
需先做判断CH是否等于CCAPnH若不等可自由
修改,若相等再判断CL>CCAPnL情况下才允许改
变同一组其它普通I/O口的状态防止在PCA比较
器匹配时做输出工作
    其它几种工作模式无问题
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 71
脉宽调节模式
   所有PCA 模块都可用作 PWM 输出(下图)。 输出频率取决于PCA 定时器的时钟源
1 0 0 0 0 1 0
  CL
ECOMn CAPPn CAPNn MATn TOGn PWMn ECCFn
(0,CL) <  (EPCnL,CCAPnL)
(0,CL) >= (EPCnL,CCAPnL)
输出
输出
Enable
CL overflow
CEXn
CCAPMn, n=0,1
CCAPnHEPCnH
CCAPnLEPCnL
  0
  9-BIT
COMPARATOR
   由于所有模块共用仅有的PCA 定时器,所有它们的输出频率相同各个模块的输出占空比是独立变
化的,与使用的捕获寄存器EPCnLCCAPnL}有关。当 CL SFR 的值小于EPCnLCCAPnL}时,输出
为低 PCA  CL  SFR 的值等于或大于EPCnLCCAPnL}时,输出为高 CL 的值由FF 变为00
溢出时EPCnHCCAPnH的内容装载到EPCnLCCAPnL}中。这样就可实现无干扰地更新PWM。要
使能PWM 模式,模块 CCAPMn寄存器的PWMn ECOMn位必须置位
PCA PWM mode  可调制脉冲宽度输出模式
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 72
;/* ---  STC International Limited ---------------------- */
;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ---------- */
;/* ---  PCA_5410_ASM_INT ------------------------------- */
;/* ---  STC12C5412AD, STC12C5410AD, STC12C5408AD ------- */
;/* ---  STC12C5406AD, STC12C5404AD, STC12C5402AD ------- */
;/* ---  STC12C5052AD, STC12C4052AD, STC12C3052AD ------- */
;/* ---  STC12C2052AD, STC12C1052AD, STC12C0552AD ------- */
;/* ---  Mobile: 13922805190 ---------------------------- */
;/* ---  Fax: 0755-82944243 ----------------------------- */
;/* ---  Tel: 0755-82948409 ----------------------------- */
;/* ---  Web: www.mcu-memory.com ------------------------ */
;------------------------------------------------------------------------------
使用 STC12C2052AD 系列单片机 PCA 功能扩展外部中断的示例程序
使用 STC12C5410AD 系列单片机 PCA 功能扩展外部中断的示例程序
;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 由灭变亮或由亮变灭
;------------------------------------------------------------------------------
声明 STC12C2052ADSTC12C5410AD 系列 MCU 特殊功能寄存器地址
IPH      EQU   0B7H             ;中断优先级高位寄存器
EPCA_LVD EQU   IE.6             ;PCA 中断和 LVD(低压检测中断共享的总中断控制位
CH       EQU   0F9H             ;PCA 计数器高位。
CL       EQU   0E9H             ;PCA 计数器低位。
;------------------------
ON     EQU   0D8H             ;PCA 控制寄存器
     E   CC0           ; 模块 0 中断标志, 由硬件置位, 必须由软件清
     E   CC1           ; 模块 1 中断标志, 由硬件置位, 必须由软件清
     E   CC2           ; 模块 2 中断标志, 由硬件置位, 必须由软件清
     E   CC3           ; 模块 3 中断标志, 由硬件置位, 必须由软件清
     E   CC4           ; 模块 4 中断标志, 由硬件置位, 必须由软件清
     E   CC5           ; 模块 5 中断标志, 由硬件置位, 必须由软件清
       EQU   CCON.           ;允许 PCA 计数器计数, 必须由软件清
F       EQU   CON.7           ;CA计数器溢出(CH,CL FFFFH 变为 0000H)标志
                                ;CA计数器溢出后由硬件置位必须由软件清
         P 功能扩展外部中断的示例程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 73
;------------------------
MO     EQ   0DH             ;CA 工作模式寄存器
;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    Time 0 溢出脉冲
                        Time 0 还可通过 AUXR寄存器设置成工作在 12T  1T 模式。
            1      1     ECI/P3.4 脚输入的外部时钟
;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断
;------------------------
CA0H   EQU   0FA             ;PA 模块的捕捉 比较寄存器高 8 
CA1H   EQU   0FB             ;PA 模块的捕捉 比较寄存器高 8 
CA2H   EQU   0FC             ;PA 模块的捕捉 比较寄存器高 8 
CA3H   EQU   0FD             ;PA 模块的捕捉 比较寄存器高 8 
CA4H   EQU   0FE             ;PA 模块的捕捉 比较寄存器高 8 
CA5H   EQU   0FF             ;PA 模块的捕捉 比较寄存器高 8 
CA0L   EQU   0EA             ;PA 模块的捕捉 比较寄存器低 8 
CA1L   EQU   0EB             ;PA 模块的捕捉 比较寄存器低 8 
CA2L   EQU   0EC             ;PA 模块的捕捉 比较寄存器低 8 
CA3L   EQU   0ED             ;PA 模块的捕捉 比较寄存器低 8 
CA4L   EQU   0EE             ;PA 模块的捕捉 比较寄存器低 8 
CA5L   EQU   0EF             ;PA 模块的捕捉 比较寄存器低 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  EPCn
;B7-B2: 保留
;B1(EPCnH):  PWM 模式下,与 CCAPnH 组成 9 位数
;B0(EPCnL):  PWM 模式下,与 CCAPnL 组成 9 位数
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 74
;------------------------
AP0   EQU   0DAH             ;PC 模块 的工作模式寄存器
AP1   EQU   0DBH             ;PC 模块 的工作模式寄存器
AP2   EQU   0DCH             ;PC 模块 的工作模式寄存器
AP3   EQU   0DDH             ;PC 模块 的工作模式寄存器
AP4   EQU   0DEH             ;PC 模块 的工作模式寄存器
AP5   EQU   0DFH             ;PC 模块 的工作模式寄存器
;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 1CEXn 上升沿触发捕捉功能
  x      0      1     0     0     0     x   11H 1CEXn 下降沿触发捕捉功能
;  x      1      1     0     0     0     x   31H 1CEXn 边沿上、下沿触发捕捉功能
;  1      0      0     1     0     0     x   49H 16位软件定时器
;  1      0      0     1     1     0     x   4DH 1位高速脉冲输出
;  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   0033H                 ;interrupt 6(0,1,2,3,4,5,6)
    LJMP  PCA_Interrupt
;------------------------------------------------------------------------------
    ORG   0050H
MAIN:
    MOV   SP, #7FH
    CLR   LED_MCU_START         点亮 LED_MCU_START LED, 表示程序正在运行
    LCALL PCA_Initiate          初始化 PCA
WAIT:
    SJMP  WAIT                  ;跳转到本行无限循环
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 75
;------------------------------------------------------------------------------
PCA_Initiate:
    MOV   CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作
                           ;PCA 时钟源为 fosc/12
                           ;禁止 PCA 计数器溢出(CH,CL FFFFH 变为 0000H 中断
    MOV   CCON, #00H       ;CF = ,清0 PCA 计数器溢出中断请求标志位
                           ;CR = 0, 不允许 PCA 计数器计数
                           ;0 PCA 各模块中断请求标志位,如 CCF1CCF0
    MOV   CL, #00H         ;0 PCA 计数器
    MOV   CH, #00H
;-------------------------
设置模块
    M   CCA0, #1H          ;设置 PCA 模块0 下降沿触发捕捉功能
   MOV   C0, #2          ;如果送的是 #21h,  PCA 模块0 为上升沿触发
;-------------------------
设置模块
    M   CM1 #H          ;设置 PCA 模块1 上升沿下降沿均可触发的捕捉功能
;-------------------------
    SETB  E_LVD              ; PCA 中断和 LVD(低压检测中断共享的总中断控制位
    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   PS
    POP   AC
    RETI
;------------------------------------------------------------------------------
    END
;------------------------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 76
;/* ---  STC International Limited ---------------------- */
;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ---------- */
;/* ---  PCA_5410_ASM_Timer ----------------------------- */
;/* ---  STC12C5412AD, STC12C5410AD, STC12C5408AD ------- */
;/* ---  STC12C5406AD, STC12C5404AD, STC12C5402AD ------- */
;/* ---  STC12C5052AD, STC12C4052AD, STC12C3052AD ------- */
;/* ---  STC12C2052AD, STC12C1052AD, STC12C0552AD ------- */
;/* ---  Mobile: 13922805190 ---------------------------- */
;/* ---  Fax: 0755-82944243 ----------------------------- */
;/* ---  Tel: 0755-82948409 ----------------------------- */
;/* ---  Web: www.mcu-memory.com ------------------------ */
;------------------------------------------------------------------------------
使用 STC12C2052AD 系列单片机 PCA 功能做定时器的示例程序
使用 STC12C5410AD 系列单片机 PCA 功能做定时器的示例程序
晶振频率 Fosc = 18.432MHz,在 P1.5输出脉冲宽度为 1 秒钟的方波
;------------------------------------------------------------------------------
声明 STC12C2052ADSTC12C5410AD 系列 MCU 特殊功能寄存器地址
IPH      EQU   0B7H             ;中断优先级高位寄存器
EPCA_LVD EQU   IE.6             ;PCA 中断和 LVD(低压检测中断共享的总中断控制位
CH       EQU   0F9H             ;PCA 计数器高位。
CL       EQU   0E9H             ;PCA 计数器低位。
;------------------------
ON     EQU   0D8H             ;PCA 控制寄存器
     E   CC0           ; 模块 0 中断标志, 由硬件置位, 必须由软件清
     E   CC1           ; 模块 1 中断标志, 由硬件置位, 必须由软件清
     E   CC2           ; 模块 2 中断标志, 由硬件置位, 必须由软件清
     E   CC3           ; 模块 3 中断标志, 由硬件置位, 必须由软件清
     E   CC4           ; 模块 4 中断标志, 由硬件置位, 必须由软件清
     E   CC5           ; 模块 5 中断标志, 由硬件置位, 必须由软件清
R       E   CCO           ;1允许 PCA 计数器计数, 必须由软件清
F       EQU   CON.7           ;CA计数器溢出(CH,CL FFFFH 变为 0000H)标志
                                ;PC计数器溢出后由硬件置位必须由软件清
;------------------------
     E   0             ; 工作模式寄存器
;CMOD.7     CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数
;CMOD.2     CPS1: PCA 计数器计数脉冲源选择位 1
;CMOD.1     CPS0: PCA 计数器计数脉冲源选择位 0
           CPS1   CPS0
                  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) 产生中断
            PCA 功能做定时器的示例程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 77
;------------------------
CA0H   EQU   0FA             ;PA 模块的捕捉 比较寄存器高 8 
CA1H   EQU   0FB             ;PA 模块的捕捉 比较寄存器高 8 
CA2H   EQU   0FC             ;PA 模块的捕捉 比较寄存器高 8 
CA3H   EQU   0FD             ;PA 模块的捕捉 比较寄存器高 8 
CA4H   EQU   0FE             ;PA 模块的捕捉 比较寄存器高 8 
CA5H   EQU   0FF             ;PA 模块的捕捉 比较寄存器高 8 
CA0L   EQU   0EA             ;PA 模块的捕捉 比较寄存器低 8 
CA1L   EQU   0EB             ;PA 模块的捕捉 比较寄存器低 8 
CA2L   EQU   0EC             ;PA 模块的捕捉 比较寄存器低 8 
CA3L   EQU   0ED             ;PA 模块的捕捉 比较寄存器低 8 
CA4L   EQU   0EE             ;PA 模块的捕捉 比较寄存器低 8 
CA5L   EQU   0EF             ;PA 模块的捕捉 比较寄存器低 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  EPCn
;B7-B2: 保留
;B1(EPCnH):  PWM 模式下,与 CCAPnH 组成 9 位数
;B0(EPCnL):  PWM 模式下,与 CCAPnL 组成 9 位数
;------------------------
CAM0   E   0DH             ; 模块的工作模式寄存器
CAM1   E   0DH             ; 模块的工作模式寄存器
CAM2   E   0DH             ; 模块的工作模式寄存器
CAM3   E   0DH             ; 模块的工作模式寄存器
CAM4   E   0DH             ; 模块的工作模式寄存器
CAM5   E   0DH             ; 模块的工作模式寄存器
;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 触发中断
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 78
;ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn
  0      0      0     0     0     0     0   00H 未启用任何功能
  x      1      0     0     0     0     x   21 16CEXn上升沿触发捕捉功能
  x      0      1     0     0     0     x   11 16CEXn下降沿触发捕捉功能
  x      1      1     0               x   31H 16 CEXn 边沿上、下沿触发捕捉功能
  1      0      0     1     0     0     x   49H 16位软件定时器
  1      0      0     1     1     0     x   4DH 1位高速脉冲输出
  1      0      0     0     0     1     0   42H  PWM
;------------------------------------------------------------------------------
定义单片机管脚
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 定时常数低位
;------------------------------------------------------------------------------
定义变量
ounter             EQ 30H     ;声明一个计数器用来计数中断的次数
;------------------------------------------------------------------------------
    ORG   0000H
    LJMP  MAIN
;------------------------------------------------------------------------------
    ORG   0033H                 ;interrupt 6(0,1,2,3,4,5,6)
    LJMP  PCA_interrupt
;------------------------------------------------------------------------------
    ORG   0050H
MAIN:
    CLR   LED_MCU_START         点亮 MCU 开始工作指示灯
    MOV   SP, #7FH
    MOV   Counter, #0           ;Counter计数器
    ACALL PCA_Initiate          初始化 PCA
WAIT:
    S  WAI                  跳转到本行无限循环
;------------------------------------------------------------------------------
PCA_Initiate:
    MOV   CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作
                           ;PCA 时钟源为 fosc/12
                           ;禁止 PCA 计数器溢出(CH,CL FFFFH 变为 0000H 中断
    MOV   CCON, #00H       ;CF = ,清0 PCA 计数器溢出中断请求标志位
                           ;CR = 0, 不允许 PCA 计数器计数
                           ;0 PCA 各模块中断请求标志位,如 CCF1CCF0
    MOV   CL, #00H         ;0 PCA 计数器
    MOV   CH, #00H
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 79
;-------------------------
    ;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模块 中断
    ;[CHCL]==[CCAP0HCCAP0L]时,产生中断请求CCF0=1请求中断
    SETB  E_LVD              ; PCA 中断和 LVD(低压检测中断共享的总中断控制位
    SETB  EA                    ;开整个单片机所有中断共享的总中断控制位
    SETB  CR                    ;启动 PCA 计数器(CH,CL)计数
    RET
;------------------------------------------------------------------------------
PCA_Interrupt:
    PUSH  ACC
    PUSH  PSW
    CPL   LED_5mS_Flashing  本程序PCA 模块5mS 中断一次, 每次进中断将该灯状态取反
    ;在本程序中[CH,CL]12 个时钟脉冲加1, [CH,CL] 增加到等于 [CCAP0HCCAP0L]
    ;CCF0=1, 产生中断请求如果每次 PCA 模块 0 中断后, 在中断服务程序中给
    ;[CCAP0HCCAP0L] 增加一个相同的数值那么下一次中断来临的间隔时间 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 (1 进制数
    ;     Channe0_5mS_H = 1EH, Channe0_5mS_L = 00H
    ;
    ;   Channe0_5mS_H, Channe0_5mS_L每次给 [CCAP0H,CCAP0L] 增加的数值步长
    MOV   A, #Channe0_5mS_L     [CCAP0HCCAP0L] 增加一个数值
    ADD   A, CCAP0L
    MOV   CCAP0L, 
    MOV   A, #Channe0_5mS_H
 ADDC  A, CCAP0H
    MOV   CCAP0H, 
    CLR   CCF0                  ; PCA 模块0 中断标志
    INC   Counter               ;中断次数计数器 + 
    MOV   A, Counter
    CLR   C
    SUBB  A, #200               ;检测是否中断了 200 次(秒)
    JC    PCA_Interrupt_Exit    有借位,表示 Counter 小于 200立即跳转退出
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 80
    M   Cote #0           已中断了 200 次,清 0 中断次数计数器
    CPL   LED_1S_Flashing       LED_1S_Flashing输出脉冲宽度为 1 秒钟的方波
PCA_Interrupt_Exit:
    POP   PS
    POP   AC
    RETI
;------------------------------------------------------------------------------
    END
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 81
PWM输出 语言示例
#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){};
 }
    STC12C5410AD 系列单片机 PWM 输出 语言示例
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 82
 STC12C5410AD系列单片机PCA/PWM新增特殊功能寄存器声明
;STC12C5410AD特殊功能寄存器头文件 STC12_PCA_SFR.ASM
声明 STC12C2052ADSTC12C5410AD 系列 MCU 特殊功能寄存器地址
PH      EQU   0B7H              ;中断优先级高位寄存器
EPCA_LVD EQU   IE.6              ;PCA 中断和 LVD(低压检测中断共享的总中断控制位
H       EQU   0H             ;PC 计数器高
L       EQU   0H             ;PC 计数器低
;------------------------
CO     EQ   0D8             ;PA 控制寄存器
     E   CCON           ;P 模块 0 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 1 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 2 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 3 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 4 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 5 中断标志, 由硬件置位, 必须由软件清
R       E   CCO           ;1允许 PCA 计数器计数, 必须由软件清
F       EQU   CCON.            ;PC计数器溢出(CH,CL FFFFH 变为 0000H)标志
                                ;CA计数器溢出后由硬件置位必须由软件清
;------------------------
MO     EQ   0DH             ;CA 工作模式寄存器
;CMOD.7     CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数
;CMOD.2     CPS1: PCA 计数器计数脉冲源选择位 1
;CMOD.1     CPS0: PCA 计数器计数脉冲源选择位 0
           CPS1   CPS0
                  0    外部晶体频率 /12
            0      1    外部晶体频率/2
            1      0    Time 0 溢出脉冲
                        Time 0 还可通过 AUXR寄存器设置成工作在 12T  1T 模式。
            1      1     ECI/P3.4 脚输入的外部时钟
;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断
;------------------------
P0H   EU   0FA             ;PCA 模块 的捕捉比较寄存器高 8 位。
P1H   EU   0FB             ;PCA 模块 的捕捉比较寄存器高 8 位。
P2H   EU   0FC             ;PCA 模块 的捕捉比较寄存器高 8 位。
P3H   EU   0FD             ;PCA 模块 的捕捉比较寄存器高 8 位。
P4H   EU   0FE             ;PCA 模块 的捕捉比较寄存器高 8 位。
P5H   EU   0FF             ;PCA 模块 的捕捉比较寄存器高 8 位。
P0L   EU   0EA             ;PCA 模块 的捕捉比较寄存器低 8 位。
P1L   EU   0EB             ;PCA 模块 的捕捉比较寄存器低 8 位。
P2L   EU   0EC             ;PCA 模块 的捕捉比较寄存器低 8 位。
P3L   EU   0ED             ;PCA 模块 的捕捉比较寄存器低 8 位。
P4L   EU   0EE             ;PCA 模块 的捕捉比较寄存器低 8 位。
P5L   EU   0EF             ;PCA 模块 的捕捉比较寄存器低 8 位。
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 83
;------------------------
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  EPCn
;B7-B2: 保留
;B1(EPCnH):  PWM 模式下,与 CCAPnH 组成 9 位数
;B0(EPCnL):  PWM 模式下,与 CCAPnL 组成 9 位数
;------------------------
CAM0   E   0DH             ; 模块的工作模式寄存器
CAM1   E   0DH             ; 模块的工作模式寄存器
CAM2   E   0DH             ; 模块的工作模式寄存器
CAM3   E   0DH             ; 模块的工作模式寄存器
CAM4   E   0DH             ; 模块的工作模式寄存器
CAM5   E   0DH             ; 模块的工作模式寄存器
;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 1CEXn 上升沿触发捕捉功能
  x      0      1     0     0     0     x   11H 1CEXn 下降沿触发捕捉功能
  x      1                0     0     x   31H 16 CEXn 边沿上、下沿)触发捕捉功能
;  1      0      0     1     0     0     x   49H 16位软件定时器
;  1      0      0     1     1     0     x   4DH 1位高速脉冲输出
  1      0           0     0     1     0   42H 8 PWM
;------------------------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 84
;STC12C5410AD 系列单片机 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
;------------------------------------------------------------
PCA_init:
    MOV   CMOD #           ;PCA 在空闲模式下停止 PCA 计数器工作
                                ;PCA 时钟模式为fosc/12
                                ;禁止 PCA 计数器溢出中断
    MOV   CN, #0           禁止 PCA 计数器工作, 清除中断标志计数器溢出标志
    MOV   CL, #00H              ;计数器
    MOV   CH, #00H
;-------------------------
设置模块 8  PWM 输出模式, PWM 无需中断支持。脉冲在P3.7(11 输出
    MOV   CCAPM0, #42H          ;*** 示例程序核心语句, ---->0100,0010
    MOV   PCA_PWM0, #00H        ;*** 示例程序核心语句
;   MOV   PCA_PWM0, #03H       ;释放本行注释, PWM 输出就一直是 0, 无脉冲
;-------------------------
设置模块 8  PWM 输出模式, PWM 无需中断支持。脉冲在P3.5(输出
    MOV   CCAPM1, #42H          ;*** 示例程序核心语句, ---->0100,0010
    MOV   PCA_PWM1, #00H        ;*** 示例程序核心语句
  STC12C5410AD 系列单片机 PCA 功能 PWM 输出程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 85
;   MOV   PCA_PWM1, #03H        释放本行注释, PWM 输出就一直是 0, 无脉冲
    SETB  EPCA_LVD              ; PCA 中断
    SETB  EA                    ;开总中断
    SETB  CR                    ;PCA 计数器打开
    RET
;------------------------------------------------------------
WM:                            ;用示波器进行观察较为理想
    ;逐渐变亮
    M   A, #pulse_width_MIN   为输出脉冲宽度设置初值
    M   pulse_width, A        ;pulse_width 数字越大脉宽越窄P3.5  LED 越亮
PWM_loop1:
    MOV   A, pulse_width        判是否到达最大值
    CLR   C
    SUBB  A, #pulse_width_MAX
    J   WM_a                 ;到达最大值就转到逐渐变暗
    MOV  A, pulse_width       设置脉冲宽度数字越大脉宽越窄LED 越亮
    MOV   CCAP0H A             ;*** 示例程序核心语句
    MV   CCAP1H, A             ;*** 示例程序核心语句
    CPL   A                      ; P1 口的 LED 显示占空比
    MOV   P A                 占空比 = ( pulse_width/256 ) * 100%  
    M   A, pulse_width        计算下一次输出脉冲宽度数值
    ADD   A, #step
    MOV   pulse_width, 
    ACALL el                 ;在一段时间内保持输出脉冲宽度不变
    SJMP  PWM_loop1
PWM_a:
    ;逐渐变暗
    M   A, #pulse_width_MAX   为输出脉冲宽度设置初值
    M   pulse_width, A        ;pulse_width 数字越大脉宽越窄P3.5  LED 越亮
PWM_loop2:
    MV   A, pulse_width        判是否到达最小值
    CLR   C
    SUBB  A, #pulse_width_MIN
    J    P_                 ;到达最小值就返回
    J    P_                 ;到达最小值就返回
    MOV  A, pulse_width       设置脉冲宽度数字越大脉宽越窄LED 越亮
    M   C A              ; 示例程序核心语句
    M   C A              ; 示例程序核心语句
    CPL   A                      ; P1 口的 LED 显示占空比
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 86
    MOV   P1 A               占空比 = ( pulse_width/256 ) * 100%  
    M   A, pulse_width    计算下一次输出脉冲宽度数值
    CLR   C
    SUBB  A, #step
    MOV   pulse_width, 
    ACALL ely             ;在一段时间内保持输出脉冲宽度不变
    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
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 87
;******************************************************************************
                输出 125.0KHz 的脉冲晶体频率 = 33.000MHz)
示例程序: 使用 功能, P3.5(输出
;         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)
        I 为取整数运算, 直接去掉小数
;******************************************************************************
定义 STC12C5410 系列 MCU 特殊功能寄存器
PH      EQU   0B7H              ;中断优先级高位寄存器
EPCA_LVD EQU   IE.6             ;PCA/LVD 中断允许位
                ;要打开 PCA 中断还要打开相应的 ECFECCF0ECCF1 
                 ;要打开 LVD 中断还要打开相应的 ELVDI 
H       EQU   09             ;PC 计数器高
L       EQU   09             ;PC 计数器低
;------------------------
CO     EQ   0D8             ;PA 控制寄存器
     E   CCON           ;P 模块 0 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 1 中断标志, 由硬件置位, 必须由软件清
R       E   CCO           ;1允许 PCA 计数器计数, 必须由软件清
       EQ   C           ;CA计数器溢出标志,由硬件或软件置位,必须由软件清
;------------------------
MO     EQ   0DH             ;CA 工作模式寄存器
;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    Tmer0 溢出
            1      1     ECI/P3.4 脚输入的外部时钟
;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断
;------------------------
    STC12C5410AD 系列单片机 PCA 的高速脉冲输出
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 88
CA0H   EQU   0FA             ;PA 模块的捕捉 比较寄存器高 8 
CA1H   EQU   0FB             ;PA 模块的捕捉 比较寄存器高 8 
CA0L   EQU   0EA             ;PA 模块的捕捉 比较寄存器低 8 
CCAP1L   EQU   EB             ;P 模块的捕捉 比较寄存器低 8 
;------------------------
PCA_PWM0 EQU   H             ;PC 模块0 PWM 寄存器
PCA_PWM1 EQU   03H             ;PC 模块1 PWM 寄存器
;PCA_PWMn:    7      6      5      4      3      2      1      0
;             -      -      -      -      -      -    EPCnH  EPCn
;B7-B2: 保留
;B1(EPCnH):  PWM 模式下,与 CCAPnH 组成 9 位数。
;B0(EPCnL):  PWM 模式下,与 CCAPnL 组成 9 位数。
;------------------------
AP0   EQU   0DAH             ;PC 模块 的工作模式寄存器
AP1   EQU   0DBH             ;PC 模块 的工作模式寄存器
;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   1CEXn 上升沿触发捕捉功能
;  x     0     1    0    0    0    x   0x11   1CEXn 下降沿触发捕捉功能
  x     1     1    0    0    0    x   0x31   1CEXn 边沿上、下沿触发捕捉功能
  1     0     0    1    0    0    x   0x49   1位软件定时器
  1     0     0    1    1    0    x   0x4d   1位高速脉冲输出
;  1     0     0    0    0    1    0   0x42   8 PWM
;------------------------------------------------------------
定义常量 CCAPnL_Value
;CCAPnL_Value 决定了模块1 输出脉冲的频率 f
;        f =  Fosc / (4 * CCAPnL_Value 
    式中 Fosc = 晶体频率
      CCAPnL_Value  =  INT(Fosc / (4 * f) + 0.5)
        INT() 为取整数运算
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 89
    假定 fosc = 20MHz, 要求 PCA 高速脉冲输出 125KHz 的方波
;        CCAPnL_Value = INT( 20000000/4/125000 + 0.5)
;                     = INT( 40 + 0.5)
;                     = INT( 40.5 )
;                     = 40
;                     = 28
    输出脉冲的频率 f  = 20000000/4/40
                     = 125000 (125.0KHz
;CCAPnL_Value  EQU 25H     ;25H = 37, fosc = 18.432MHz , 高速脉冲输出 = 124.540KHz
;CCAPnL_Value  EQU 28H     ;28H = 40, fosc = 20MHz, 高速脉冲输出 = 125KHz
CCAPnL_Value   EQU 42H     ;42H = 66, fosc = 33MHz , 高速脉冲输出 = 125KHz
;------------------------------------------------------------
    ORG 0000H
    AJMP  main
;------------------------------------------------------------
    ORG  0033H                  ;interrpt 6
PCA_interrupt:
    PUSH  ACC                   ;4 Clock
    PUSH  PSW                   ;4 Clock
    CLR   CCF1                  ;1 Clock,  PCA 模块 1 中断标志
    MOV   A, #CCAPnL_Value ;2 Clock
    ADD   A, CCAPL             ;3 Clock
    MOV   CCAP1L A             ;3 Clock
    CLR   A                     ;1 Clock
    ADDC  A, CCAP1H             ;3 Coc
    MOV   CCAP1H A             ;3 Clock
    POP   PSW                   ;3 Clock
    POP   ACC                   ;3 Clock
    RETI                        ;4 Clock
此中断服务程序共用 34 Clock, 进入中断服务程序还要数个 Clock
;------------------------------------------------------------
    ORG 0060H
main:
    MOV   SP, #0E0H             ;设置堆栈指针
    A PC_in              ;调用 PCA 初始化程序
main_loop:
    NOP
    NOP
    NOP
    SJMP  main_loop
;------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 90
CA_init:                       ;PA 初始化程序
    MOV   CMOD, #00000010B     ;02HPCA 计数器在空闲模式下继续工作, CIDL = 
                    ;PCA 计数器计数脉冲来源为系统时钟源 fosc/2, CPS1, CPS0 = (0,1)
                    ;禁止 PCA计数器(CH, CL)计数溢出(CH, CL=0000H)中断, ECF = 
    M   C, #            ;清除 PCA 计数器(CH, CL)计数溢出中断标志, CF = 
                                ;停止 PCA 计数器(CH, CL)计数, CR = 
                                ;清除 模块1 中断标志, CCF1 = 0
                                ;清除 模块0 中断标志, CCF0 = 0
    MOV   CH, #00H              ;0 PCA 计数器高 8 
    MOV   CL, #00H              ;0 PCA 计数器低 8 
;-------------------------
设置模块为高速脉冲输出模式, 脉冲在P3.5(输出
    MOV   CCAPM1, #01001101B    ;4DH, 设置 PCA 模块为高速脉冲输出模式允许触发中断
;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 给模块 置初值, 此句不可少
    MOV   CCAP1H, #0 给模块置初值, 此句不可少
    ;其它中断服务可能会使模块1 高速脉冲输出的某个周期突然变得很大因此必须将
    ;PCA 中断的优先级设置为唯一的最高级, 其它中断的优先级都要比它低
    MOV   IPH, #01000000B       ;PCA 中断的优先级设置为唯一的最高级
    MOV   IP, #01000000B
    SETB  EPCA_LVD              ; PCA 中断
    SETB  EA                    ;开总中断
    SETB  CR                    ;PCA 计数器打开
    RET
;------------------------------------------------------------
    END
;------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 91
;---------------------------------------------------------------------
使用 定时器的溢出,作为 PCA模块的时钟输入源,利用PCA 模块的多种功能
实现了可调频率的PWM 输出还可以改变占空比同时利用PCA 模块再实现了定时器功能
使用 STC12C2052AD 系列单片机 PCA 模块的模块PWM 功能 PWM输出的示例程序
使用 STC12C2052AD 系列单片机 PCA 模块的模块16 位软定时器功能做定时器的示例程序
使用 STC12C5410AD 系列单片机 PCA 模块的模块PWM 功能 PWM输出的示例程序
使用 STC12C5410AD 系列单片机 PCA 模块的模块16 位软定时器功能做定时器的示例程序
晶振频率 Fosc = 18.432MHz,在 P1.5 输出脉冲宽度为 1 秒钟的方波
;------------------------------------------------------------------------------
声明 STC12C2052ADSTC12C5410AD 系列 MCU 特殊功能寄存器地址
PH      EQU   0B7H              ;中断优先级高位寄存器
EPCA_LVD EQU   IE.6              ;PCA 中断和 LVD(低压检测中断共享的总中断控制位
H       EQU   0H             ;PC 计数器高
L       EQU   0H             ;PC 计数器低
;------------------------
CO     EQ   0D8             ;PA 控制寄存器
     E   CCON           ;P 模块 0 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 1 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 2 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 3 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 4 中断标志, 由硬件置位, 必须由软件清
     E   CCON           ;P 模块 5 中断标志, 由硬件置位, 必须由软件清
R       E   CCO           ;1允许 PCA 计数器计数, 必须由软件清
F       EQU   CCON.            ;PC计数器溢出(CH,CL FFFFH 变为 0000H)标志
                                ;CA计数器溢出后由硬件置位必须由软件清
;------------------------
MO     EQ   0DH             ;CA 工作模式寄存器
;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    Time 0 溢出脉冲
                        Time 0 还可通过 AUXR寄存器设置成工作在 12T  1T 模式。
            1      1     ECI/P3.4 脚输入的外部时钟
;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断
    利用定时器的溢出作为 PCA 模块的时钟输入源
        ---利用 PCA 模块 实现了可调频率的 PWM 输出
         -利用 PCA 模块 重新实现了 16 位定时器
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 92
;------------------------
CA0H   EQU   0FA             ;PA 模块的捕捉 比较寄存器高 8 
CA1H   EQU   0FB             ;PA 模块的捕捉 比较寄存器高 8 
CA2H   EQU   0FC             ;PA 模块的捕捉 比较寄存器高 8 
CA3H   EQU   0FD             ;PA 模块的捕捉 比较寄存器高 8 
CA4H   EQU   0FE             ;PA 模块的捕捉 比较寄存器高 8 
CA5H   EQU   0FF             ;PA 模块的捕捉 比较寄存器高 8 
CA0L   EQU   0EA             ;PA 模块的捕捉 比较寄存器低 8 
CA1L   EQU   0EB             ;PA 模块的捕捉 比较寄存器低 8 
CA2L   EQU   0EC             ;PA 模块的捕捉 比较寄存器低 8 
CA3L   EQU   0ED             ;PA 模块的捕捉 比较寄存器低 8 
CA4L   EQU   0EE             ;PA 模块的捕捉 比较寄存器低 8 
CA5L   EQU   0EF             ;PA 模块的捕捉 比较寄存器低 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  EPCn
;B7-B2: 保留
;B1(EPCnH):  PWM 模式下,与 CCAPnH 组成 9 位数
;B0(EPCnL):  PWM 模式下,与 CCAPnL 组成 9 位数
;------------------------
CAM0   E   0DH             ; 模块的工作模式寄存器
CAM1   E   0DH             ; 模块的工作模式寄存器
CAM2   E   0DH             ; 模块的工作模式寄存器
CAM3   E   0DH             ; 模块的工作模式寄存器
CAM4   E   0DH             ; 模块的工作模式寄存器
CAM5   E   0DH             ; 模块的工作模式寄存器
;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 输出
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 93
;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 1CEXn 上升沿触发捕捉功能
  x      0      1     0     0     0     x   11H 1CEXn 下降沿触发捕捉功能
;  x      1      1     0     0     0     x   31H 1CEXn 边沿上、下沿触发捕捉功能
;  1      0      0     1     0     0     x   49H 16位软件定时器
;  1      0      0     1     1     0     x   4DH 1位高速脉冲输出
;  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
;-----------------------------------
PWM_PULSE_WIDTH     EQU 0FFH     数字越大脉宽越窄(占空比越小P3.5  LED 越亮。
;------------------------------------------------------------------------------
定义变量
ounter             EQ 30H     ;声明一个计数器用来计数中断的次数
;------------------------------------------------------------------------------
    ORG   0000H
    LJMP  MAIN
;------------------------------------------------------------------------------
    ORG   0033H                 ;interrupt 6(0,1,2,3,4,5,6)
    LJMP  PCA_interrupt
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 94
;------------------------------------------------------------------------------
    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, 
    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
;#########  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
    MOV   CP0 A             ;, 数字越大 PWM 占空比越小P3.5  LED 越亮
    ACALL delay
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 95
;--------------------
请注意T0 溢出率变低后定时器脉冲的 LED 闪烁速度变慢,  PWM  LED 亮度未改变
    MOV   TH0, #Timer0_Reload_2 ;T0溢出率低
    MOV   TL0, #Timer0_Reload_2
    ACALL delay
;############################################
    SJM  MAI_Lo             ;无限循环
;------------------------------------------------------------------------------
RL_A:
    CLR   C
    RRC   A
    RET
;------------------------------------------------------------------------------
Timer0_Initiate:
初始化 T0, 其溢出脉冲作 PCA 计数器(CH,CL)的时钟源
    MV   TMOD, #02H             ;设置定时器0 为自动重装工作模式
    MOV   TH0, #Timer0_Reload_1
    MOV   TL0, #Timer0_Reload_1
    SETB  TR0                    ;启动定时器
    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 PCA 计数器溢出中断请求标志位
                           ;CR = 0, 不允许 PCA 计数器计数
                           ;0 PCA 各模块中断请求标志位,如 CCF1CCF0
    MOV   CL, #00H         ;0 PCA 计数器
    MOV   CH, #00H
;-------------------------
设置模块 8  PWM 输出模式, PWM 无需中断支持脉冲在P3.7(11输出
    MOV   CCAPM0, #42H          ;*** 示例程序核心语句, 设置模块  8  PWM输出模式
    MOV   PCA_PWM0, #00H        ;*** 示例程序核心语句,  0 PWM 模式下的第 9 
;   MOV   PCA_PWM0, #03H        ;释放本行注释, PWM 输出就一直是 0, 无脉冲
    MOV   CCAP0H, #PWM_PULSE_WIDTH ;*** 示例程序核心语句
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 96
;-------------------------
设置 PCA 模块
    ;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 模块中断
    ;[CHCL]==[CCAP1HCCAP1L]时,产生中断请求,CCF1=1,请求中断
    SETB  ECA_LD         ; PCA 中断和 LVD(低压检测中断共享的总中断控制位
    SETB  EA               ;开整个单片机所有中断共享的总中断控制位
    SETB  CR               ;启动 PCA 计数器(CH,CL)计数
    RET
;------------------------------------------------------------------------------
PCA_Interrupt:
    PUSH  ACC
     PUSH  PSW
    CPL   LED_5mS_Flashing  本程序PCA 模块5mS 中断一次, 每次进中断将该灯状态取反
用定时器0 的溢出率作 PCA 计数器(CH,CL)的时钟源时, 计算 Channe1_5mS_H, Channe1_5mS_L
    ;在本程序中定时器 0 12个时钟脉冲加1, 定时器每加 10 次后产生 1 次溢出, 即每
    ;120 个时钟脉冲 PCA 计数器(CH,CL)。当[CH,CL] 增加到等于 [CCAP1HCCAP1L]
    ;CCF0=1, PCA 模块产生中断请求如果每次 PCA 模块 1 中断后, 在中断服务程序中给
    ;[CCAP1HCCAP1L] 增加一个相同的数值那么下一次中断来临的间隔时间 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 (1 进制数
    ;                                 = 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] 增加到等于 [CCAP1HCCAP1L]
    ;CCF0=1, PCA 模块产生中断请求如果每次 PCA 模块 1 中断后, 在中断服务程序中给
    ;[CCAP1HCCAP1L] 增加一个相同的数值那么下一次中断来临的间隔时间 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 (1 进制数
    ;     Channe1_5mS_H = 1EH, Channe1_5mS_L = 00H
    
    ;   Channe1_5mS_H, Channe1_5mS_L每次给 [CCAP1H,CCAP1L] 增加的数值步长
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 97
    MOV   A, #Channe1_5mS_L    [CCAP1HCCAP1L] 增加一个数值
    ADD   A, CCAP1L
    MOV   CCAP1L, 
    MOV   A, #Channe1_5mS_H
    ADDC  A, CCAP1H
    MOV   CCAP1H, 
    CLR   CCF1                  ; PCA 模块1 中断标志
    INC   Counter               ;中断次数计数器 + 
    MOV   A, Counter
    CLR   C
      A, #             ;检测是否中断了 100 次(0.5秒)
    JC    PCA_Interrupt_Exit    有借位,表示 Counter 小于 100立即跳转退出
    M   Co, #          ;已中断了 100 次,清 0 中断次数计数器
    CPL   LED_1S_Flashing       LED_1S_Flashing输出脉冲宽度为 0.5 秒钟的方波
PCA_Interrupt_Exit:
    POP   PS
    POP   AC
    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
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 98
    PCON 寄存器的高级应用上电复位标志进入掉电模式
POF上电复位标志位单片机停电后上电复位标志位为可由软件清
实际应用要判断是上电复位冷启动), 还是外部复位脚输入复位信号产生的复位还是内部看门
狗复位,可通过如下方法来判断
PD将其置时,进入 Power  Down 模式,可由外部中断低电平触发或下降沿触发中断模式唤醒
   进入掉电模式时外部时钟停振CPU定时器串行口全部停止工作只有外部中断继续工作
IDL将其置 时,进入IDLE 模式(空闲), CPU不工作外,其余仍继续工作,可由任何一个中断唤醒
    版本开始大量供货版本IDLE 模式可正常使用(原 版本和 版本建议不要用IDLE模式)。
Mnemonic Add Name  6  5  0 Reset value
PCON 87h Power  Control SMOD  SMOD0  LVDF POF GF1 GF0 PD IDL 0011,0000
POF外部手动复位
或看门狗复位
   
POF=1  冷启动
上电复位
 POF=0
在初始化程序
POF是否为
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 99
;*************************************************************************
;Wake Up Idle and Wake Up Power Down
;*************************************************************************
    ORG   0000H
    AJMP MAIN
    ORG   0003H
 int0_interrupt:
    CLR   P1.7          ;点亮 P1.7 LED 表示已响应 int0 中断
    ACALL de         ;延时是为了便于观察, 实际应用不需延时
    CLR   EA            ;关闭中断, 简化实验. 实际应用不需关闭中断
    RETI
    ORG   0013H
 int1_interrupt:
    CLR   P1.6          ;点亮 P1.6 LED 表示已响应 int1 中断
    ACALL de         ;延时是为了便于观察, 实际应用不需延时
    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:
    M   R3, #        ;P LED 递增方式变化, 表示程序开始运行
 main_loop:
    M   A, R
    CPL   A
    MOV   P1, A
    ACALL delay
STC12C5410AD 系列 1T 单片机通过外部中断从掉电模式唤醒
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 100
    INC   R3
    M   A, R
    SUBB  A, #18H
    JC    main_loop
    MOV   P1, #FFH     ;熄灭全部灯表示进入 Power Down 状态
    CLR   IT0           ;设置低电平激活外部中断
;   SETB  IT0
    SETB  EX0           ;允许外部中断
    CLR   IT1           ;设置低电平激活外部中断
;   SETB  IT1
    SETB  EX1           ;允许外部中断
;   SETB  ET0  如果是STC12C2052AD 系列版本
             要由外部中断唤醒ET0=1”是必须的硬件就这样做的,C 版本就不需要
              外部中断就无此必要建议 Powerdown用外部中断唤醒
    SETB  EA            ;开中断, 若不开中断就不能唤醒 Power Down
下条语句将使 MCU 进入 idle 状态或 Power Down 状态
低电平激活外部中断可以将 MCU  Power Down 状态中唤醒
其方法为将外部中断脚拉低
    M   A P       ; PD=1, 进入 Power Down 状态, PD = PCON.2
    ORL   A, #02H
    MOV   PCON, 
    MOV   PCON, #01H    删除本语句前的 ";", 同时将前条语句前加上注释符号 ";",
                        ; IDL=1, 可进入 idle 状态, IDL = PCON.1
    M   P #DF     ;请注意
                        ; 1.外部中断使MCU 退出 Power Down 状态执行本条指令后
                        ;响应中断, 表现为P1.5 P1.7LED 同时亮(INT0唤醒
                        ; 2外部中断使MCU 退出 idle 状态先响应中断然后再执行本
                        ;条指令, 表现为P1.7 LED 先亮(INT0唤醒)P1.5 LED后亮
WAIT1
    SP  WAI1         ;跳转到本语句, 停机
    END
;A版本和 版本建议不要用IDLE模式版本可以正常使用
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 101
STC12C5410AD 系列单片机最新的 版本已开始大量供货已解决此问题 版本
也无问题只有 版本需要注意
针对 版本如下应用注意事项
STC12Cxx 要 Power Down < 0.1uA, 进入 Power Down 之前
1.
如果您系统外部所接的口是输入我们 STC12Cxx  是输出
请将我们的该 I/O 设为 Push-Pull 输出
外部是低,你就要为低; 外部是高,你就要为高, 否则就 > 0.1uA
如果是后续的版本不一定要设置成Push-Pull 输出用弱上拉就可以了
2.
如果您系统外部所接的口是输出我们 STC12Cxx  是输入
请将我们的该 I/O 设为  Only-Input,高阻仅为输入
如果是后续的版本不一定要设置成Only-Input 输出用弱上拉就可以了
3.
如果您系统外部所接的口是高阻我们 STC12Cxx 
请将我们的该 I/O 设为 Push-Pull 输出
请不要将我们的该 I/O 设为 Only-Input/ 高阻
如果是后续的版本不一定要设置成Push-Pull 输出用弱上拉就可以了
现在 版本已开始供货定货时指定版本就可以了
       进入掉电模式前的 I/O设置特别注意事项
        --- 仅针对 版本,现供货的是最新版本 版本
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 102
Absolute Maximum Ratings
Parameter Symbol MIN MAX UNIT
Storage temperature ST -55 +125
Operating Temperature(I) -40 +85
Operating Temperature(C) +70
DC Power Supply(5V MCU) DD - SS -0.3 +6.0
DC Power Supply(3V MCU) DD - SS -0.3 +4.0
Voltage on any Pin -0.5 +5.5
ELECTRICAL CHARACTERISTICS
Symbol Parameter Specification Test
Condition
Min. Typ. Max. Unit
DD Operating Voltage 3.4 5.0 5.5
PWDN Power Down Current <0.1 uA 5V
IDLE Idle Current 3.0 mA 5V
CC Operating Current 4 mA 20 mA 5V
IL1 Input low voltage
(P0,P1,P2,P3) 0.8 5V
IL2 Input low voltage
(RESET,XTAL1) 1.5 5V
IH1 Input High voltage
(P0,P1,P2,P3) 2.0 5V
IH2 Input High voltage
(RESET) 3.0 5V
OL1 Sinking Current
for Output Low
(P0,P1,P2,P3) 20 mA 5V
OH1 Sourcing Current
for Output High
(P0,P1,P2,P3) 150 230 uA 5V
OH2
Sourcing Current
for Output High
(P0,P1,P2,P3)
(Push-Pull)
20 mA 5V
IL Logic 0 input
current
(P0,P1,P2,P3) 18 50 uA PIN=0V
TL Logic 1 to 
transition current
(P0,P1,P2,P3) 270 600 uA PIN=2V
DC Specification(5V MCU)
         STC12C5410AD系列单片机电气特性
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 103
DC Specification(3.3V MCU)
Symbol Parameter Specification Test
Condition
Min. Typ. Max. Unit
DD Operating Voltage 2.0 3.3 4.0
PWDN Power Down Current <0.1 uA 3.3V
IDLE Idle Current 2.0 mA 3.3V
CC Operating Current 4 mA 10 mA 3.3V
IL1 Input low voltage
(P0,P1,P2,P3) 0.8 3.3V
IL2 Input low voltage
(RESET,XTAL1) 1.5 3.3V
IH1 Input High voltage
(P0,P1,P2,P3) 2.0 3.3V
IH2 Input High voltage
(RESET) 3.0 3.3V
OL1 Sinking Current
for Output Low
(P0,P1,P2,P3) 20 mA 3.3V
OH1 Sourcing Current
for Output High
(P0,P1,P2,P3) 40 70 uA 3.3V
OH2
Sourcing Current
for Output High
(P0,P1,P2,P3)
(Push-Pull)
20 mA 3.3V
IL Logic 0 input
current
(P0,P1,P2,P3) 50 uA PIN=0V
TL Logic 1 to 
transition current
(P0,P1,P2,P3) 110 600 uA PIN=2V
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 104
   STC12C5410AD 系列单片机 ISP 编程原理 使用说明
外部手动复位看门狗复位,单片
机不会运行ISP 程序
PC机端的控制软件必需先发下载命令流
再给单片机上电复位
PC机端控制软件为 STC-ISP-V3.1及以后的版本从
www.MCU-Memory.com下载如何使用本文相关部
分有说明
单片机运行ISP程序检测有无合法下载
命令流,占时几十mS  几百 mS如无
合法下载命令流,则立即跑用户程序
单片机彻底没电
给单片机上电复位冷起动
冷起动单片机运行系统ISP监控程序
检测P3.0/RxD有没有合法下载命令流
下载用户程序进用户程序区
软复位到用户程序区运行用户程序
如果已设置P1.0/P1.1=0/0才会判断是否下载
用户程序,则冷启动后 P1.0/P1.10/0
则直接跑用户程序只会占时50uS可忽略不计
建议用户选择P1.0/P1.1 不同时为 0/0则立即
跑用户程序,跨过系统ISP 监控程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 105
STC 12C5410AD 系列单片机在系统可编程的使用
---将用户代码下载进单片机内部不用编程器
 STC12C5410AD系列单片机具有在系统可编程ISP)特性,ISP 的好处是省去购买通用编程
器,单片机在用户系统上即可下载烧录用户程序而无须将单片机从已生产好的产品上拆下再用通用
编程器将程序代码烧录进单片机内部有些程序尚未定型的产品可以一边生产一边完善加快了产品进
入市场的速度减小了新产品由于软件缺陷带来的风险由于可以在用户的目标系统上将程序直接下载进
单片机看运行结果对错故无须仿真器
STC12系列单片机内部固化有ISP 系统引导固件,配合 PC 端的控制程序即可将用户的程序代码下载进
单片机内部故无须编程器速度比通用编程器快几秒一片
如何获得及使用STC 提供的ISP 下载工具(STC-ISP.exe 软件
(1). 获得 STC 提供的ISP 下载工具(软件
登陆 www.MCU-Memory.com 网站,从 STC 半导体专栏下载PC(电脑)端的 ISP程序,然后
  将其自解压再安装即可执行setup.exe注意随时更新软件
(2). 使用 STC-ISP 下载工具软件请随时更新目前已到Ver3.1 版本以上支持*.bin,
 *.hex(Intel 16 进制格式文件
    请随时注意升级PC电脑端的 ISP程序
(3).STC12C5410AD系列单片机出厂时就已完全加密需要单片机内部的电放光后上电复位冷起动才运
行系统ISP程序,如从 P3.0/RxD 检测到合法的下载命令流就下载用户程序如检测不到就系统复位到用
户程序区
(4).如果用户板上P3.0/RxDP3.1/Txd 接了 RS-485 等电路,下载时需要将其断开用户系统接了RS-
485等通信电路,推荐在选项中选择下次冷启动时需 P1.0/P1.1=0/0才判是否下载程序
8 R2IN R2OUT 9
0.1uF 2 V+ GND 15
1 C1+ Vcc 16 Vcc
3 C1- T1OUT 14
5 C2- R1OUT 12
6 V- T1IN 11
7 T2OUT T2IN 10
PC_RxD (COM Pin2)
4 C2+ R1IN 13 PC_TxD (COM Pin3)
Gnd
PC /电脑 串口
 STC3232STC232MAX232SP232
U1-P1.0
U1-P1.1
MCU-VCC
U1-P3.0
U1-P3.1
GND
USB+5V T1OUT GNDR1IN
USB1
1  RST                         VCC  20
2  RxD/P3.0       P1.7/SCLK/ADC7  19
3  TxD/P3.1      P1.6/MISO/ADC6  18
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
10  Gnd            P3.7/PCA0/PWM0  11
5  XTAL1            P1.4/SS/ADC4  16
1K
1K
Vcc
Vin
Power On
SW1
电源开关
USB +5V
10K
10μ
C1
R1
<33pF
<33pF
通过电脑端的
STC-ISP 软件
控制下载
“用户程序
STC 单片机
建议用户在系统上
留此接口,可方便
在线下载用户程序
10μ
0.1μ
10μ
Vcc
Vcc
0.1uF
0.1uF
晶振频率在20M 以下时:
可以不用C1,R1可为0~10K
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 106
Step1/步骤 选择你所使用的单片机型号,如 STC12C5410,STC12C5410AD
Step2/步骤 打开文件要烧录用户程序必须调入用户的程序代码*.bin, *.hex
Step3/步骤 选择串行口你所使用的电脑串口如串行口1--COM1, 串行口2--COM2,...
    有些新式笔记本电脑没有RS-232串行口可买一条 USB-RS232转接器人民币50元左右
          有些 USB-RS232转接器不能兼容可让宏晶帮你购买经过测试的转换器
Step4/ 步骤:选择下次冷启动后,时钟源为“内部 R/C振荡器”还是“外部晶体或时钟
Step5/步骤 :选择“Download/下载按钮下载用户的程序进单片机内部可重复执行
               Step5步骤  也可选择Re-Download/重复下载”按钮
下载时注意看提示主要看是否要给单片机上电或复位, 下载速度比一般通用编程器快
一定要先选择Download/ 下载按钮,然后再给单片机上电复位先彻底断电,而不要
    先上电,先上电,检测不到合法的下载命令流单片机就直接跑用户程序了
关于硬件连接
(1). MCU/单片机  RXD(P3.0)  ---  RS-232 转换器  ---  PC/电脑  TXD(COM Port Pin3)
(2). MCU/单片机  TXD(P3.1)  ---  RS-232 转换器  ---  PC/电脑  RXD(COM Port Pin2)
(3). MCU/ 单片机  GND        ----------------------  PC/电脑  GND(COM Port Pin5)
(4). 如果您的系统P3.0/P3.1连接到 RS-485 电路,推荐
         在选项里选则下次冷启动需要P1.0/P1.1 = 0,0才判P3.0/RxD 有无合法下载命令流
         这样冷启动后如 P1.0, P1.1 不同时0,单片机直接运行用户程序免得由于RS-485 总线上
        的乱码造成单片机反复判断乱码是否为合法浪费几百 mS 的时间
(5). RS-232转换器可选用 STC232/MAX232/SP232(4.5-5.5V),STC3232/MAX3232/SP3232(3V-5.5V).
 STC232/MAX232/SP232尽量选用 SOP封装窄体STC3232 尽量选用SOP 封装窄体).
大批量生产时使用
开发调试时可考虑选择此项
P3.0/P3.1 外接RS-485/RS-232 等通
信电路建议选择P1.0/P1.1不同时
等于0/0则直接运行用户程序,跨过
系统ISP 引导程序
新的设置冷启动彻底停电后再上电
后才生效
除每次均要指定缓冲区起始地址外
二次及以后不能清缓冲区
第一次调文件进缓冲区要清缓冲区
要调几个文件进缓冲区,如 EEPROM里的
数据文件需要和应用程序文件一次同时
ISP 下载编程进单片机
如可将要写入EEPROM区的数据文件调入
从缓冲区2800H 开始的地方并不清缓冲
区,然后和应用程序一起写入
用户根据实际使用效果选择限制最高通信
波特率576003840019200
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 107
如用户系统没有 RS-232 接口
可使用STC-ISP Ver 3.0A.PCB 演示板作为编程工具
STC-ISP Ver 3.0APCB 板如焊接的是STC12C5410AD 的线路,则
                    可完成 STC12C5410AD系列单片机的 ISP 下载编程烧录用户程序的功能
STC-ISP Ver 3.0A PCB 板完成下载 烧录
关于硬件连接
(1.) 根据单片机的工作电压选择单片机电源电压
A. 5V 单片机短接JP1 MCU-VCC, +5V电源管脚
3V 单片机短接JP1 MCU-VCC, 3.3V 电源管脚
(2.)连接线宏晶提供
A. 将一端有芯连接座的插头插入 PC/电脑 RS-232串行接口插座用于通信
B. 将同一端的USB 插头插入PC/电脑 USB接口用于取电
C. 将只有一个USB 插头的一端插入宏晶的STC-ISP Ver 3.0A PCBUSB1插座用于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,U1-Socket 锁紧座
    40-PIN,我们的设计是靠下插靠近晶体的那一端插
(7.)关于软件:选择“Download/下载( 必须在给单片机上电之前让 PC 先发一串合法下载命令
(8.)按下SW1 开关,给单片机上电复位, 此时MCU-VCC Power 灯亮(D41)
    此时STC 单片机进入ISP 模式(STC12C5410AD 系列冷启动进入 ISP)
(9.)下载成功后再按SW1开关,此时 SW1开关处于非按下状态MCU-VCC Power 灯不亮(D41),
给单片机断电取下单片机
利用 STC-ISP Ver 3.0A PCB 进行 RS-232 转换
单片机在用户自己的板上完成下载 烧录
U1-Socket锁紧座不得插入单片机
将用户系统上的电源(MCU-VCC,GND)及单片机的P3.0/RXD,P3.1/TXD 接入转换板CN2 插座
   这样用户系统上的单片机就具备了与PC/ 电脑进行通信的能力
3. 将用户系统的单片机的P1.0,P1.1接入转换板CN2 插座如果需要的话
    4如须P1.0, P1.1 = 0, 0,短接到地可在用户系统上将其短接到地或将P1.0/P1.1也从
       用户系统上引到STC-ISP Ver3.0A PCB 板上,将 SW3开关按下,则 P1.0/P1.1=0,0
5. 关于软件:选择“Download/下载
6. 给单片机系统上电复位注意是从用户系统自供电不要从电脑USB 取电电脑 USB 座不插
7. 下载程序时如用户板有外部看门狗电路不得启动单片机必须有正确的复位但不能在ISP
载程序时被外部看门狗复位如有,可将外部看门狗电路WDI WDO端浮空
8. 如有RS-485 晶片连到P3.0/Rxd,P3.1/Txd,或其他线路在下载时应将其断开
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 108
    STC12C5410AD 系列编译器 汇编器编程器仿真器
STC 单片机应使用何种编译器汇编器
1.任何老的编译器汇编器都可以支持,流行用Keil C51
2.STC单片机,当成 Intel8052/87C52/87C54/87C58,Philips P87C52/P87C54/P87C58就可以了
3.如果要用到扩展的专用特殊功能寄存器直接对该地址单元设置就行了当然先声明特殊功能寄存器的
地址较好
编程烧录器:
我们有: STC12C5410AD 系列 ISP 经济型下载编程工具人民币50 元,可申请免费样品
仿真器如您已有老的仿真器可仿真普通8052的基本功能
STC12C5410AD系列单片机扩展功能如它仿不了
可以用 STC-ISP 直接下载用户程序看运行结果就可以了
无须添加新的设备
        注意有专门下载28PIN/20PIN的不同演示板
             28PIN28PIN的演示板,20PIN 20PIN的演示板
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 109
内部数据 RAM 存储器
STC12C5410AD 系列单片机内部有256字节常规的 RAM,256字节的扩展RAM
器件的内部常规数据存储器由部分组成
1.128 字节RAM00H7FH), 可直接和间接寻址用“MOV”和“MOV  @Ri
2.128 字节RAM80HFFH), 间接寻址,用“MOV @Ri
3.特殊功能寄存器80HFFH), 只可直接寻址 用“MOV
由于高128 字节RAM SFR特殊功能寄存器占用相同的地址,因此高 128字节 RAM空间必须用间接寻址
MOV  @Ri来区分。特殊功能寄存器80HFFH), 只可直接寻址(用“MOV来区分。尽管 RAM
SFR的地址相同,但它们在物理上是独立的。
扩展数据RAM
STC12C5410AD系列有256 字节的扩展RAM称其为XRAM附加RAM), 用“MOVX”寻址
扩展的256 字节 RAM0000H00FFH), 通过MOVX 指令间接寻址
00FFH
0000H
FFH
80H
7FH
FFH
80H 扩展RAM
256字节
外部间接寻址
128字节内部RAM
(间接寻址
128字节内部RAM
间接直接寻址
特殊功能寄存器
(直接寻址
SFR
附录          内部数据RAM 存储器
使用“MOVX  @DPTR  MOVX  @Ri
    00H
语言中可使用xdata 声明存储类型即可
unsigned char xdata  i = 0;
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 110
TEST_CONST EQU 5AH
;TEST_RAM EQU 03H
ORG 0000H
LJMP INITIAL
ORG 0050H
INITIAL:
MOV R0, #253
MOV R1, #3H
TEST_ALL_RAM:
MOV R2, #0FFH
TEST_ONE_RAM:
MOV A, R2
MOV @R1,
CLR
MOV A, @R1
CJNE A, 2H, ERROR_DISPLAY
DJNZ R2, TEST_ONE_RAM
INC R1
DJNZ R0, TEST_ALL_RAM
OK_DISPLAY:
MOV P1, #11111110B
Wait1:
     SJM Wait1
ERROR_DISPLAY:
MOV A, R1
MOV P1,
Wait2:
     SJM Wait2
     EN
      内部常规 256 字节 RAM间接寻址测试程序
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 111
附录      串行外围接口SPI及测试程序
STC12C5410AD 系列单片机还提供另一种高速串行通信接口——SPI 接口。SPI是一种全双工、高速、同
步的通信总线有两种操作模式主模式和从模式在主模式中支持高达3Mbit/s 的速率工作频率为
12MHz 如果CPU 主频采用 20MHz36MHz,则可更高从模式时速度无法太快Fosc/8 以内较好),
具有传输完成标志和写冲突标志保护
SPI 接口有 个管脚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)位=该脚配置用于I/O口功能
注:即使SPI 被配置为主机MSTR ), 它仍然可以通过拉低/SS 脚配置为从机如果P1.4 配置为输
入且SSIG=0)。 要使能该特性应当置位SPIF(SPSTAT.7)
   典型连接如SPI所示。
位移位寄存器
读数据缓冲区
CPU 时钟
    分频器
4, 16, 64, 128
选择
SPI 控制
SPI 状态寄存器
时钟逻辑
SPI 控制寄存器
管脚
控制
逻辑
MISO
P1.6
MOSI
P1.5
SPICLK
P1.7
SS
P1.4
  SPI
中断请求 内部
数据
总线
SPI时钟(主机clock
MSTR
SPEN
SPR1
SPR0
SPIF
SSIG
SPEN
DORD
MSTR
CPHA
CPOL
SPR1
SPR0
MSTR
SPEN
SPI 方框图
STC12C5410AD 系列 1T 8051 单片机SPI 功能模块特殊功能寄存器  SPI Management SFRs
Mnemonic Add Name   7  6  5  4  3  2  0 Reset value
SPCTL 85h SPI Control Register SSIG  SPEN  DORD MSTR CPOL CPHA SPR1 SPR0 0000,0000
SPSTAT 84h SPI Status Register SPIF  WCOL  -  -  -  - 00xx,xxxx
SPDAT 86h SPI Data Register 0000,0000
WCOL
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 112
符号 描 
SPR0 SPR0/SPRSPI 时钟速率选择控制位
SPR1
SPR, SPR
  0        0       CPU_CLK
  0        1       CPU_CLK16
  1        0       CPU_CLK64
  1        1       CPU_CLK128
CPHA
SPI 时钟相位选择(见SPI):
数据在SPICLK 的前时钟沿驱动并在后时钟沿采样
数据在SS 为低SSIG00时被驱动SPICLK 的后时钟
沿被改变并在前时钟沿被采样
(注:SSIG1 时的操作未定义
CPOL SPI 时钟极性(见SPI~图):
SPICLK 空闲时为高电平SPICLK 的前时钟沿为下降沿而后沿为上升沿
SPICLK 空闲时为低电平SPICLK 的前时钟沿为上升沿而后沿为下降沿
MSTR 从模式选择(见SPI 主从选择表)。
DORD SPI 数据顺序
数据字的LSB最低位) 最先发送数据字的MSB最高位) 最先发送
SPEN SPI 使能
SPI 使能
SPI 被禁止所有SPI 管脚都作为I/O 口使用
SSIG
SS 忽略
MSTR(位确定器件为主机还是从机
SS 脚用于确定器件为主机还是从机SS 脚可作为I/O 口使用(见SPI 
从选择表)。
SPI 控制寄存器的位描述SPCTL 地址85h
符号 SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0
复位
SPI  控制寄存器的位分配SPCTL-地址85h
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 113
SPI 状态寄存器的位分配(SPSTAT 地址84h
SPI 状态寄存器的位描述(SPSTAT 地址84h
符号 SPIF WCOL ------
复位
符号 符号
SPIF SPI 传输完成标志当一次串行传输完成时SPIF 置位并当ESPI
EA 都置位时产生中断SPI 处于主模式且SSIG0 如果SS 为输入
并被驱动为低电平SPIF 也将置位SPIF标志通过软件向其写入清零
WCOL SPI 写冲突标志在数据传输的过程中如果对SPI 数据寄存器SPDAT 执行写
操作WCOL 将置位WCOL 标志通过软件向其写入清零
5 - 保留
SPI 数据寄存器的位分配SPDAT 地址86h
符号 MSB LSB
复位 000000
 SPDAT.7 - SPDAT.0:      传输的数据位 Bit7Bit0
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 114
    在上图SPI 中,从机的 SSIG(SPCTL.7)/SS 用于选择从机SPI 主机可使用任何端口
包括P1.4/SS来驱动/SS 脚。
    上图SPI 所示为两个器件互为主从的情况当没有发生SPI操作时两个器件都可配置为主机
MSTR=1), SSIG清零并将P1.4(/SS)配置为准双向模式当其中一个器件启动传输时它可将 P1.4
配置为输出并驱动为低电平这样就强制另一个器件变为从机
    在上图SPI中,从机的 SSIG(SPCTL.7)从机通过对应的/SS 信号被选中SPI 主机可
使用任何端口包括P1.4/SS来驱动/SS 脚。
主机 从机
位移位寄存器
SPI时钟发生器
位移位寄存器
MISO MISO
 SPI 1  SPI 单主机 单从机 配置
MOSI MOSI
SPICLK SPICLK
Port /SS
 SPI 2  SPI 双器件配置可器件可互为主从
主机 从机
位移位寄存器
SPI时钟发生器
位移位寄存器
MISO MISO
MOSI MOSI
SPICLK SPICLK
/SS
/SS
SPI时钟发生器
MISO MISO
MOSI MOSI
SPICLK SPICLK
Port /SS
Port /SS
位移位寄存器
SPI 时钟发生器
位移位寄存器
位移位寄存器
主机 从机
 SPI SPI 单主机 多从机 配置
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 115
SPI 进行配置
   下表 所示为主从模式的配置以及模式的使用和传输方向
    SPI 主从模式选择
作为从机时的额外注意事项
    CPHA时,SSIG必须为 /SS脚必须取反并且在每个连续的串行字节之间重新设置为高电
平。如果SPDAT  寄存器在 /SS有效(低电平)时执行写操作,那么将导致一个写冲突错误
CPHA=0SSIG=0 时的操作未定义
   CPHA时,SSIG 可以置位。如果 SSIG/SS 脚可在连续传输之间保持低有效(即一直
固定为低电平)。 这种方式有时适用于具有单固定主机和单从机驱动MISO数据线的系统
作为主机时的额外注意事项
   SPI 中,传输总是由主机启动的如果SPI 使能(SPEN=1并选择作为主机主机对SPI
据寄存器的写操作将启动SPI 时钟发生器和数据的传输在数据写入SPDAT 之后的半个到一个SPI 位时
间后,数据将出现在MOSI 脚。
   需要注意的是,主机可以通过将对应器件的/SS 脚驱动为低电平实现与之通信。写入主机SPDAT
存器的数据从MOSI 脚移出发送到从机的MOSI 脚。同时从机SPDAT 寄存器的数据从MISO脚移出发送到主
机的MISO 脚。
    传输完一个字节后SPI 时钟发生器停止传输完成标志SPIF置位并产生一个中断如果
SPI 中断使能)。 主机和从机CPU 的两个移位寄存器可以看作是一个16 循环移位寄存器。当数据从主机
移位传送到从机的同时,数据也以相反的方向移入。这意味着在一个移位周期中,主机和从机的数据相
互交换
SPEN SSIG SS 
P1.4 MSTR 主或从
模式 MISO
P1.6 MOSI
P1.5 SPICLK
P1.7 备注
P1.4 SPI 功能禁止 P1.6 P1.5 P1.7 SPI 禁止P1.4/P1.5/P1.6/P1.7作为普通I/O
使用
从机模式 输出 输入 输入 选择作为从机
从机模式
未被选中 高阻 输入 输入 未被选中MISO 为高阻状态以避免总线冲突
1—>0 从机模式 输出 输入 输入
P1.4/ SS 配置为输入或准双向口SSIG 
果择SS 被驱动为低电平则被选择作为从机
SS 变为低电平时MSTR将清零
注:当SS处于输入模式时如被驱动为低电平
SSIG0 MSTR 位自动清零
空闲输入 高阻 高阻
当主机空闲时MOSI SPICLK 为高阻态以避免总线
冲突。用户必须将SPICLK 上拉或下拉
CPOLSPCTL.3 的取值以避免SPICLK出现悬浮
状态
激活输出 输出 作为主机激活时MOSI SPICLK 为推挽输出
P1.4 输出 输入 输入
P1.4 输入 输出 输出
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 116
通过 /SS  改变模式
    如果SPEN=1, SSIG=0MSTR=1SPI使能为主机模式/SS 脚可配置为输入或准双向模式。这
种情况下另外一个主机可将该脚驱动为低电平从而将该器件选择为 SPI  从机并向其发送数据
   为了避免争夺总线SPI系统执行以下动作
   1)MSTR 清零并且 CPU变成从机这样 SPI 就变成从机MOSISPICLK 强制变为输入模式,而
MISO则变为输出模式
     SPSTAT SPIF标志位置位如果SPI 中断已被使能则产生SPI 中断
   用户软件必须一直对MSTR 位进行检测如果该位被一个从机选择所清零而用户想继续将SPI 作为主
机,这时就必须重新置位MSTR否则就进入从机模式
写冲突
   SPI 在发送时为单缓冲,在接收时为双缓冲。这样在前一次发送尚未完成之前,不能将新的数据
写入移位寄存器当发送过程中对数据寄存器进行写操作时WCOL 位(SPSTAT.6将置位以指示数据冲
突。在这种情况下当前发送的数据继续发送而新写入的数据将丢失
   当对主机或从机进行写冲突检测时主机发生写冲突的情况是很罕见的因为主机拥有数据传输的
完全控制权但从机有可能发生写冲突因为当主机启动传输时从机无法进行控制
   接收数据时接收到的数据传送到一个并行读数据缓冲区这样将释放移位寄存器以进行下一个数
据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据,否则,前一个接收数据
将丢失
     WCOL 可通过软件向其写入“”清零
数据模式
   时钟相位位(CPHA)允许用户设置采样和改变数据的时钟边沿时钟极性位CPOL 允许用户设置时钟极
性。 SPI ~图7 所示为时钟相位位CPHA 的不同设定
  SPI 4  SPI 从机传输格式CPHA=0
时钟周期 12345678
SPICLK (CPOL = 0)
SPICLK (CPOL = 1)
MOSI(输入DORD = 0
DORD = 1 MSB LSB
LSB MSB
DORD = 0 MSB 654321LSB
DORD = 1 LSB 123456MSB
MISO(输出
SS如果SSIG 0)
未定义
(1)
(1)
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 117
SPI时钟预分频器选择
    S时钟预分频器选择是通过SPCTL 寄存器中的SPR1-SPR0 位实现的
SS如果SSIG 0)
未定义
(1)
时钟周期 12345678
SPICLK (CPOL = 0)
SPICLK (CPOL = 1)
MOSI(输入DORD = 0
DORD = 1 MSB 654321LSB
LSB 123456MSB
DORD = 0 MSB 654321 LSB
DORD = 1 LSB 123456 MSB
MISO(输出(1)
 SPI 5  SPI 从机传输格式CPHA=1
SPICLK (CPOL = 1)
LSB
MSB
LSB
MSB
时钟周期 1234567
SPICLK (CPOL = 0)
MISO(输入DORD = 0
DORD = 1 MSB 654321
LSB 123456
DORD = 0 MSB 654321
DORD = 1 LSB 123456
MOSI(输出
SS如果SSIG 0)
 SPI 7  SPI 主机传输格式CPHA=1
 SPI 6  SPI 主机传输格式CPHA=0
LSB
MSB
LSB
MSB
时钟周期 1234567
SPICLK (CPOL = 0)
SPICLK (CPOL = 1)
MISO(输入DORD = 0
DORD = 1 MSB 654321
LSB 123456
DORD = 0 MSB
DORD = 1 LSB
MOSI(输出
SS如果SSIG 0)
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 118
;/* ---  STC International Limited ---------------------- */
;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ---------- */
;/* ---  one_master_one_slave --------------------------- */
;/* ---  STC12C5412AD, STC12C5410AD, STC12C5408AD ------- */
;/* ---  STC12C5406AD, STC12C5404AD, STC12C5402AD ------- */
;/* ---  STC12C5052AD, STC12C4052AD, STC12C3052AD ------- */
;/* ---  STC12C2052AD, STC12C1052AD, STC12C0552AD ------- */
;/* ---  Mobile: 13922805190 ---------------------------- */
;/* ---  Fax: 0755-82944243 ----------------------------- */
;/* ---  Tel: 0755-82948409 ----------------------------- */
;/* ---  Web: www.mcu-memory.com ------------------------ */
;------------------------------------------------------------------------------
;1. 本示例程序演示 STC12C2052AD  STC12C5410AD 系列 MCU  SPI 功能, 适用于
;   单主单从系统
;------------------------------------------------------------------------------
;2. 硬件连接三线连接
;          主单片机      I                   I/    从单片机
;      +--------------+  MISO    <-- 位流方向    MISO +--------------+
;      |     SPI      |<<----------------------------|     SPI      |
      |8位移位寄存 |                               |8 位移位寄存器 
;      |              |----------------------------->|              |
;      +-------+------+  MOSI    位流方向 -->    MOSI +-------^------+
;              |                                              |
;              |         SCLK                    SCLK         |
;              +--------------------->>-----------------------+
    除此之外主单片机的 RS-232 串行口通过 RS-232 转换器与 PC 机的 RS-232
串行口相连接
;3. SPI 通讯过程
    主单片机与从单片机的 SPI 位移位寄存器连接成一个循环的 16 位移位寄存器
当主单片机程序向 SPDAT 写入一个字节时,立即启动一个连续的 8 位移位通讯过程
主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲在这串脉冲的驱动下, 
单片机 SPI 位移位寄存器中的数据移到了从单片机的 SPI 位移位寄存器中; 与此
同时,从单片机 SPI 位移位寄存器中的数据移到了主单片机的 SPI 位移位寄存器
中。利用这样的数据交换机制主单片机既可向从单片机发送数据又可读从单片机
中的数据
;4. 使用方法
;  a) 修改程序,使 MASTER EQU  的那行有效汇编后的程序代码下载到主单片机中
;  b) 修改程序,使 MASTER EQU  的那行有效汇编后的程序代码下载到从单片机中
       S 功能示例程序适用于单主单从系统
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 119
 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 以上
;------------------------------------------------------------------------------
定义常量
;-----------------
定义功能常量以下两行注释其中一行取消另一行注释使之有效
MAST   EQU 1           ;汇编后的程序代码下载到主单片机中
ASTER   EU 0           ;汇编后的程序代码下载到从单片机中
;-----------------
定义波特率自动重装数常量
;以下波特率是 PCON.7 =  时的数值, 若使 PCON.7 =  可将波特率加倍
;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 ADCSPI 两个中断共享的总中断允许控制位 EADC_SPI
要产生 SPI 中断, 需要 ESPI/EADC_SPI/EA 都为 1
;------------------------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 120
定义 SPI 特殊功能寄存器, 详细说明见本程序的后部或 STC 12C5410AD 中文指南
SPCTL   EQU 85H
SPSTAT  EQU 84H
SPDAT   EQU 86H
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 端口收到数据标志位
_ffer  EQU 30H                 ;该变量用于保存 SPI 端口收到的数据
;------------------------------------------------------------------------------
    ORG   0000H
    LJMP  MAIN
;------------------------------------------------------------------------------
    ORG   002BH                     ;ADC_SI 中断服务程序入口
    LJMP  ADC_SPI_Interrupt_Routine
;------------------------------------------------------------------------------
    ORG   0080H
MAIN:
    C   L_M_ST             ;点亮 MCU 开始工作指示灯
    MOV   SP, #7FH
    AALL Iit_Syste               ;系统初始化
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 端口已收到新的数据
        M   A, SP_bufer         ; " SPI 发回的数据送到累加器 A
        CR   SPI_Receive           ;0 主单片机 SPI 端口收到数据标志位
        ACALL RS232_Send_Byte       将累加器 A 中的数据发送到 PC 
        SJMP  Check_RS232
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 121
else
Slave_Check_SPI:
        JNB   SPI_Receive, Slave_Check_SPI 判收到主 SPI 发回的数据否
        ;从单片机 SPI 端口已收到新的数据
        MV   A SPI_buffer         ; "主单片机 SPI 端口发的数据
        CR   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 ,将 SPIF/WCOL 清成
                  ;特别注意不是向标志位 SPIF/WCOL ,将 SPIF/WCOL 清成
    MOV   A, SPDAT                  ;保存收到的数据
    MOV   SPI_buffer, 
    S  SP_Reiv               ;树立 SPI 端口收到数据标志
    RETI
;------------------------------------------------------------------------------
Init_System:
    A Inia_UA              ;初始化串口
    AALL Iitial_SP               ;初始化 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
    M   SN, #H                ;1,0 8位可变波特率, 无奇偶校验
    MOV   TMOD, #21H                ;1 为自动重装模式
    MOV   TH1, #RELOAD_8BIT_DATA
    MOV   TL1, #RELOAD_8BIT_DATA
    M   P #               取消本行指令注释波特率加倍
使以下两行有效波特率快12 倍,即波特率 = 4800*12=57600
    M   A #01000000B             ;  1T 的速度计数是普通8051 12
    ORL   AUXR, 
    SETB  TR1                       ;启动定时器1 开始计数
    RET
;------------------------------------------------------------------------------
Initial_SPI:                        ;初始化 SPI
;SPI 控制寄存器
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 122
;          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=1SPI 空闲时 SPICLK = 前跳变沿是下降沿后跳变沿是上升沿
    ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据
    ;SPR1SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4
else
    MOV   SPCTL,#11101100B          ;0ECH, 忽略 SS , 设为从机
    ;SSIG=1: 忽略SS
    ;SPEN=1:允许 SPI 工作
    ;DORD=1:先传低位 LSB
    ;MSTR=0:设为从机
    ;CPOL=1SPI 空闲时 SPICLK = 前跳变沿是下降沿后跳变沿是上升沿
    ;CPHA=1:数据由 SPICLK 前跳变沿驱动到 SPI 口线,SPI 模块在后跳变沿采样数据
    ;SPR1SPR0 = 00:主模式时 SPI 时钟源选择为 fosc/4
endif
    MOV   SPSTAT,#11000000B         ;0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)
                                    ;向该两个标志位写"1" 会将它们清
    MOV   A, #00001000B
    O   AUX, A                   ;ESPI(AUXR.3)=1,允许SPIF(SPSTAT.7)产生中断
    SETB  EADC_SPI                  ; ADC 中断和 SPI 中断共享的总中断控制位
    RET
;------------------------------------------------------------------------------
RS232_Send_Byte:                    ;RS232 串口发送一个字节
    CLR   TI                        ;清零串口发送中断标志
    MOV   SBUF, 
RS232_Send_Wait:
    JNB   TI, RS232_Send_Wait       ;等待发送完毕, 未发送完毕跳回本行
    CLR   TI                        ;清零串口发送中断标志
    RET
;------------------------------------------------------------------------------
此段程序只有主 MCU 调用
_en_yt                      ;S 发送一个字节
    CLR   EADC_SPI                  ; ADC 中断和 SPI 中断共享的总中断控制位
    MOV   SPDAT, A                  ;SPI 发送数据
SPI_Send_Byte_Wait:
    MOV   A, SPSTAT                 ;等待 SPIF=1 即等待 SPI 发送完毕
    ANL   A, #80H
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 123
    JZ    SPI_Send_Byte_Wait
    SETB  EADC_SPI                  ; ADC 中断和 SPI 中断共享的总中断控制位
    RET
;------------------------------------------------------------------------------
Get_Byte_From_RS232:                 RS-232 串口中收到的数据送累加器 A
    MOV   A, SBUF
    CLR   R
    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 位决定 SPI 主模式或从模式
      如果 SSIG=0,  SS 脚决定 SPI 主模式或从模式
;SPENSPI 使能位。如果 SPEN=0SPI功能被禁止SPI 脚用作普通IO
;DORDSPI 数据传输顺序
;      1先传低位 LSB
;      0先传高位 MSB
;MSTRSPI 从模式选择位
;CPOLSPI 时钟信号极性选择位
;      1SPI 空闲时 SPICLK = 前跳变沿是下降沿后跳变沿是上升沿
;      0SPI 空闲时 SPICLK = 前跳变沿是上升沿后跳变沿是下降沿
;CPHASPI 时钟信号相位选择位
;      1数据由 SPICLK 前跳变沿驱动到 SPI 口线SPI 模块在后跳变沿采样数据
;      0:当 SS 脚为低(SSIG=0)时数据被驱动到口线并且在 SPICLK 后跳变沿数据
         被改变被驱动到口线,在 SPICLK 前跳变沿数据被采样。注意:SSIG = 
;         时操作未定义
;SPR1-SPR0主模式时 SPI 时钟源选择
      00fosc/4
      01fosc/16
      10fosc/64
      11fosc/128
     CPHA=0SSIG 必须等于零并且在传输时 SS 脚也必须一直保持为低。当 SS 有效
;(=0)时向 SPDATA 寄存器写数据就会发生写冲突错误WCOL 标志被置 1
     CPHA=1SSIG 可以等于 0  1。如果 SSIG=0SS 脚在连续的传输时为 0(可以
一直保持为 0)。当系统中只有一个主和一个从 SPI 时,这是首选配置
;--------------------
;SPI 状态寄存器
;          7      6      5      4      3      2      1      0
;SPSTAT  SPIF   WCOL     -      -      -      -      -      -
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 124
;SPIFSPI 传输结束标志。当一次传输结束时, SPIF 被置 1,如果 SPI 中断被打开
;      ESPI(AUXR.3)=1EADC_SPI(IE.5)=1EA(IE.7)=1, 就引起中断。如果原来 SPI
       SS 脚确定为是主模式(SSIG=0,SS=1),当 SS 变成 0 时,SPIF 也会被置 1
      表示 模式改变。向 SPIF 位写 1 将该标志清 0
;WCOLSPI 写冲突标志当一个数据还在传输时又向数据寄存器 SPDAT 写入数据WCOL
      就会被被置 1。向 WCOL 位写 1 将该标志清 0
;--------------------
;SPI 从模式选择
;SPEN SSIG SS MATR   模式   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          输入  输出  输出    
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 125
;/* ---  STC International Limited ---------------- */
;/* ---  宏晶科技    姚永平    2006/1/6    V1.0 ---- */
;/* ---  one_master_more_slave --------------------- */
;/* ---  STC12C5412AD, STC12C5410AD, STC12C5408AD ------- */
;/* ---  STC12C5406AD, STC12C5404AD, STC12C5402AD ------- */
;/* ---  STC12C5052AD, STC12C4052AD, STC12C3052AD ------- */
;/* ---  STC12C2052AD, STC12C1052AD, STC12C0552AD ------- */
;/* ---  Mobile: 13922805190 ---------------------- */
;/* ---  Fax: 0755-82944243 ----------------------- */
;/* ---  Tel: 0755-82948409 ----------------------- */
;/* ---  Web: www.mcu-memory.com ------------------ */
;------------------------------------------------------------------------------
;1. 本示例程序演示 STC12C2052AD  STC12C5410AD 系列 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
串行口相连接
       S 功能示例程序适用于单主多从系统
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 126
;3. SPI 通讯过程
    主单片机与从单片机的 SPI 位移位寄存器连接成一个循环的 16 位移位寄存器
当主单片机程序向 SPDAT 写入一个字节时立即启动一个连续的 8 位移位通讯过程
主单片机的 SCLK 脚向从单片机的 SCLK 脚发出一串脉冲在这串脉冲的驱动下, 
单片机 SPI 位移位寄存器中的数据移到了从单片机的 SPI 位移位寄存器中; 与此
同时,从单片机 SPI 位移位寄存器中的数据移到了主单片机的 SPI 位移位寄存器
中。利用这样的数据交换机制主单片机既可向从单片机发送数据又可读从单片机
中的数据
;4. 使用方法
;  a) 修改程序,使 MASTER_SLAVE EQU  的那行有效汇编后的程序代码下载到
     主单片机中
;  b) 修改程序,使 MASTER_SLAVE EQU  的那行有效汇编后的程序代码下载到
     从单片机 #1 
;  c) 修改程序,使 MASTER_SLAVE EQU  的那行有效汇编后的程序代码下载到
     从单片机 #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 口传输数据无误
;------------------------------------------------------------------------------
定义常量
;-----------------
定义功能常量,以下  行注释其中  行,使一行有效
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 127
MASTER_SLAVE  EQU 0           ;汇编后的程序代码下载到主单片机中
;MASTER_SLAVE  EQU 1           汇编后的程序代码下载到从单片机 #1 
;MASTER_SLAVE  EQU 2           汇编后的程序代码下载到从单片机 #2 
;-----------------
定义波特率自动重装数常量
;以下波特率是 PCON.7 =  时的数值, 若使 PCON.7 =  可将波特率加倍
;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 ADCSPI 两个中断共享的总中断允许控制位 EADC_SPI
要产生 SPI 中断, 需要 ESPI/EADC_SPI/EA 都为 1
;------------------------------------------------------------------------------
定义 SPI 特殊功能寄存器, 详细说明见本程序的后部
PCTL           EQU 85H
SPSTAT          EQU 84H
PDAT           EQU 86H
EADC_SPI        EQU IE.5
;------------------------------------------------------------------------------
定义 SPI 
LK            EQU P1.
SO            EQU P1.
SI            EQU P1.
S              EQU P1.4
Slave1_SS       EQU P1.2
Slave2_SS       EQU P1.3
;------------------------------------------------------------------------------
定义单片机管脚
LED_MCU_START   EQU P3.4
;------------------------------------------------------------------------------
定义变量
lags           EQU 20H
SPI_Receive     EQU Flags.0         ;SPI 端口收到数据标志位
T0_10mS_count   EQU 30H             该变量用于保存 10 毫秒计数(T0 中断次数
_ffer      EQU 31H             ;该变量用于保存 SPI 端口收到的数据
;------------------------------------------------------------------------------
    ORG   0000H
    AJMP  MAIN
;------------------------------------------------------------------------------
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 128
    ORG   000BH                     ;定时器0 中断服务程序入口
    AJMP  timer0_Routine
;------------------------------------------------------------------------------
    ORG   002BH                     ;ADC_SI 中断服务程序入口
    AJMP  ADC_SPI_Interrupt_Routine
;------------------------------------------------------------------------------
    ORG   0080H
MAIN:
    C   L_M_ST             ;点亮 MCU 开始工作指示灯
    MOV   SP, #7FH
    ACALL Initial_System            系统初始化
if MASTER_SLAVE == 
        CR   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 端口已收到新的数据
        M   A, SP_bufer         ; " SPI 发回的数据送到累加器 A
        CR   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 端口已收到新的数据
        MV   A SPI_buffer         ; "主单片机 SPI 端口发的数据
        CR   SPI_Receive           ;0 从单片机 SPI 端口收到数据标志位
    if MASTER_SLAVE == 2
        ADD  A, #1                 ;如果是从单片机 #2就把收到的数据加
    endif
        MOV   SPDAT, A              ;将收到数据送 SPDAT, 准备下一次通讯时发回
        SJMP  Slave_Check_SPI
endif
;------------------------------------------------------------------------------
if MASTER_SLAVE == 
timer0_Routine:
        PUSH  PSW                   ;保存断点现场
        PUSH  ACC
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 129
        MOV   TH0, #0C4H            ;重装数 = 65536-15360 = 50176 = C400H
                                    ;晶振频率=18.432MHz时,  10mS 中断 1 
        INC   T0_10mS_count         ;10 毫秒计数(T0 中断次数) + 
        MOV   A #07H              ;8H = 199 检测是否中断了 200 次(秒)
        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
        RET
else
_                     ;本程序中从单片机不需要使用定时器
        RET
endif
;------------------------------------------------------------------------------
ADC_SPI_Interrupt_Routine:          ;ADC_SPI 中断服务程序
    ;SPI 中断服务程序
    MOV   SPSTAT, #11000000B        ;0C0H, 0 标志位 SPIF  WCOL
                  ;特别注意是向标志位 SPIF/WCOL ,将 SPIF/WCOL 清成
                  ;特别注意不是向标志位 SPIF/WCOL ,将 SPIF/WCOL 清成
    MOV   A, SPDAT                  ;保存收到的数据
    MOV   SPI_buffer, 
    S  SP_Reiv               ;树立 SPI 端口收到数据标志
    RETI
;------------------------------------------------------------------------------
Initial_System:
    A Inia_UA              ;初始化串口
    AALL Iitial_SP               ;初始化 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
    M   SN, #H                ;1,0 8位可变波特率, 无奇偶校验
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 130
     MOV   TMOD, #21H                ;T1 为自动重装模式
     MOV   TH1, #RELOAD_8BIT_DATA
     MOV   TL1, #RELOAD_8BIT_DATA
    M   P #               取消本行指令注释波特率加倍
    ;使以下两行有效波特率快12 倍,即波特率 = 4800*12=57600
     MOV   A #00000             ;T1  1T 的速度计数是普通8051 12
     ORL   AUXR, 
     SETB  TR1                       ;启动定时器1 开始计数
     RE
;------------------------------------------------------------------------------
Initial_SPI:                        ;初始化 SPI
if MASTER_SLAVE == 
    MOV   SPCTL,#11111100B          ;0FCH, 忽略 SS , 设为主机
    ;SSIG=1: 忽略SS
    ;SPEN=1:允许 SPI 工作
    ;DORD=1先传低位 LSB
    ;MSTR=1设为主机
    ;CPOL=1SPI 空闲时 SPICLK = 前跳变沿是下降沿后跳变沿是上升沿
    ;CPHA=1数据由 SPICLK 前跳变沿驱动到 SPI 口线SPI 模块在后跳变沿采样数据
    ;SPR1SPR0 = 00主模式时 SPI 时钟源选择为 fosc/4
else
    MOV   SPCTL,#01101100B          ;6CH, 设为从机,  SS 脚决定是否已被选中
    ;SSIG=0:  SS 脚决定主模式或从模式
    ;SPEN=1:允许 SPI 工作
    ;DORD=1先传低位 LSB
    ;MSTR=0设为从机
    ;CPOL=1SPI 空闲时 SPICLK = 前跳变沿是下降沿后跳变沿是上升沿
    ;CPHA=1数据由 SPICLK 前跳变沿驱动到 SPI 口线SPI 模块在后跳变沿采样数据
    ;SPR1SPR0 = 00主模式时 SPI 时钟源选择为 fosc/4
endif
    MOV   SPSTAT,#11000000B         ;0 标志位 SPIF(SPSTAT.7), WCOL(SPSTAT.6)
                                    ;向该两个标志位写"1" 会将它们清
    MOV   A, #00001000B
    O   AUX, A                   ;ESPI(AUXR.3)=1,允许SPIF(SPSTAT.7)产生中断
    SETB  EADC_SPI                  ; ADC 中断和 SPI 中断共享的总中断控制位
    RET
;------------------------------------------------------------------------------
RS232_Send_Byte:                    ;RS232 串口发送一个字节
    CLR   TI                        ;清零串口发送中断标志
    MOV   SBUF, 
RS232_Send_Wait:
    JNB   TI, RS232_Send_Wait       ;等待发送完毕, 未发送完毕跳回本行
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 131
    CLR   TI                        ;清零串口发送中断标志
    RET
;------------------------------------------------------------------------------
此段程序只有主 MCU 调用
_en_yt                      ;S 发送一个字节
    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   R
    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 脚决定主模式或从模式
 ;SPENSPI使能位。如果 SPEN=0SPI功能被禁止SPI 脚用作普通 IO
;DORDSPI 数据传输顺序
;      1先传低位 LSB
;      0先传高位 MSB
;MSTR:主从模式选择位
;CPOLSPI 时钟信号极性选择位
;      1SPI 空闲时 SPICLK = 前跳变沿是下降沿后跳变沿是上升沿
;      0SPI 空闲时 SPICLK = 前跳变沿是上升沿后跳变沿是下降沿
;CPHASPI 时钟信号相位选择位
;      1数据由 SPICLK 前跳变沿驱动到口线后跳变沿采样
;      0:当 SS 脚为低(SSIG=0)时数据被驱动到口线并且在 SPICLK 后跳变沿数据
         被改变被驱动到口线,在 SPICLK 前跳变沿数据被采样。注意:SSIG = 
;         时操作未定义
;SPR1-SPR0主模式时 SPI 时钟速率选择
      00fosc/4
      01fosc/16
      10fosc/64
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 132
      1fosc/128
     CPHA=0SSIG 必须等于零并且在传输时 SS 脚也必须一直保持为低。当 SS 有效
;(=0)时向 SPDATA 寄存器写数据就会发生写冲突错误WCOL 标志被置 1
     CPHA=1SSIG 可以等于 0  1。如果 SSIG=0SS 脚在连续的传输时为 0(可以
一直保持为 0)当系统中只有一个主和一个从 SPI 时,这是首选配置
;--------------------
;SPI 状态寄存器
;          7      6      5      4      3      2      1      0
;SPSTAT  SPIF   WCOL     -      -      -      -      -      -
;SPIFSPI 传输结束标志。当一次传输结束时, SPIF 被置 1,如果 SPI 中断被打开
;      ESPI(AUXR.3)=1EADC_SPI(IE.5)=1EA(IE.7)=1, 就引起中断。如果原来 SPI
       SS 脚确定为是主模式(SSIG=0,SS=1),当 SS 变成 0 时,SPIF 也会被置 1
      表示 模式改变。向 SPIF 位写 1 将该标志清 0
;WCOLSPI 写冲突标志当一个数据还在传输时又向数据寄存器 SPDAT 写入数据WCOL
      就会被被置 1。向 WCOL 位写 1 将该标志清 0
;--------------------
;SPI 从模式选择
;SPEN SSIG SS MATR   模式   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          输入  输出  输出    
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 133
附录         用串行口扩展 I/O 接口
    STC12Cxxxx 串行口的方式可用于I/O 扩展。如果在应用系统中串行口未被占用那么将它用
来扩展并行I/O 口是一种经济实用的方法
    在操作方式时,串行口作同步移位寄存器其波特率是固定的 fosc/12fosc为振荡器频
)。 数据由RXD端(P3.0)出入,同步移位时钟由 TXD端(P3.1)输出。发送接收的是位数据,低位
在先
    一、用 74LS165 扩展并行输入口
     下图是利用两片 74LS165 扩展二个位并行输入口的接口电路图
HGFEDCBA
54314 13 12 11
S/L CP
CC
SIN
74LS165
15 16
12Cxxxx
P3.0
P3.1
P1.0
HGFEDCBA
54314 13 12 11
S/L CP
SIN
74LS165
15
10
    74LS165 位并行置入移位寄存器当移位置入端(S/L)由高到低跳变时并行输入端的数据置
入寄存器 S/L=1且时钟禁止端 15脚)为低电平时允许时钟输入这时在时钟脉冲的作
用下,数据将由方向移位
    上图中TXD(P3.1)作为移位脉冲输出端与所有74LS165 的移位脉冲输入端CP 相连RXDP3.0
作为串行输入端与74LS165 的串行输出端 相连P1.0 用来控制 74LS165 的移位与置入而同S/L 相连
74LS165 的时钟禁止端15脚)接地,表示允许时钟输入当扩展多个 位输入口时,两芯片的首尾
IN相连
    下面的程序是从16位扩展口读入 组数据每组二个字节), 并把它们转存到内部RAM 20H开始的
单元中
MOV R7#05H ;设置读入组数
MOV RO#20H 设置内部RAM 数据区首址
STARTCLR P1.0 并行置入数据S/L=0
SETB P1.0 允许串行移位S/L=1
MOV R1#02H 设置每组字节数即外扩74LS165 的个数
RXDATAMOV SCON#00010000B 设串行方式,允许接收,启动接收过程
WAITJNB RIWAIT 未接收完一帧循环等待
CLR RI RI 标志,准备下次接收
MOV SBUF 读入数据
MOV @R0送至 RAM缓冲区
INC R0 指向下一个地址
DJNZ R1RXDATA 为读完一组数据,继续
DJNZ R7START 组数据未读完重新并行置入
…… 对数据进行处理
10  9
CC
16
104 104
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 134
    上面的程序对串行接收过程采用的是查询等待的控制方式,如有必要,也可改用中断方式。从理论
上讲,按上图方法扩展的输入口几乎是无限的但扩展的越多口的操作速度也就越慢
二、用 74LS164扩展并行输出口
    74LS164 位串入并出移位寄存器下图是利用74LS164 扩展二个 位输出口的接口电路
45610 11 12 13
GND
CLR CP
74LS16
12Cxxxx
P3.0
P3.1
P1.0
CC
14
45610 11 12 13
GND
CLR CP
74LS16
CC
14
    当单片机串行口工作在方式的发送状态时串行数据由 P3.0RXD送出,移位时钟由P3.1
TXD)送出。在移位时钟的作用下串行口发送缓冲器的数据一位一位地移入74LS164 中。需要指出的是
由于74LS164 无并行输出控制端因而在串行输入过程中其输出端的状态会不断变化故在某些应用场
合,在74LS164 的输出端应加接输出三态门控制以便保证串行输入结束后再输出数据
    下面是将RAM 缓冲区30H31H 的内容串行口由 74LS164 并行输出的子程序
STARTMOV R7#02H ;设置要发送的字节个数
MOV R0#30H ;设置地址指针
MOV SCON#00H 设置串行口方式
SENDMOV @R0
MOV SBUF启动串行口发送过程
WAITJNB TIWAIT 一帧数据未发送完循环等待
CLR TI
INC R0 ;取下一个数
DJNZ R7SEND
RET
104 104
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 135
附录 D:     STC12C2052AD 系列 1T 单片机简介
    STC12C2052系列单片机是单时钟机器周期(1T)的兼容8051内核单片机是高速 低功耗的新一代
8051单片机,全新的流水线 精简指令集结构内部集成MAX810 专用复位电路
特点
现已大批量供货PDIP-20/SOP-20), 欢迎提前定货
  STC12C5410AD系列是 STC12C2052AD 系列的后续产品
供货
1. 增强型 1T 流水线精简指令集结构 8051 CPU
2. 工作电压5.5V - 3.4V5V 单片机  /  3.8V - 2.4V3V单片机
3. 工作频率范围0 - 35 MHz相当于普通 8051  0420MHz.实际工作频率可达48MHz.
4. 用户应用程序空间512 / 1K / 2K / 3K / 4K / 5K 字节
5. 片上集成 256 字节 RAM
6. 通用I/O (15 ,复位后为: 准双向口 弱上拉(普通8051 传统 I/O
   可设置成四种模式准双向口弱上拉推挽强上拉仅为输入 高阻,开漏
    每个 I/O口驱动能力均可达到20mA但整个芯片最大不得超过 55mA
ISP在系统可编程/IAP在应用可编程), 无需专用编程器
     可通过串口P3.0/P3.1直接下载用户程序  3秒即可完成一片
8. EEPROM 功能
9. 看门狗
10.内部集成MAX810 专用复位电路
11.时钟源高精度外部晶体时钟,内部 R/C 振荡器
          用户在下载用户程序时,可选择是使用内部R/C 振荡器还是外部晶体时钟
          常温下内部R/C 振荡器频率为5.65MHz  5.95MHz
         精度要求不高时可选择使用内部时钟但因为有温漂应认为是4MHz  8MHz
1216 位定时器计数器
13外部中断下降沿中断或低电平触发中断,Power Down 模式可由外部中断低电平触发中断方式唤醒
14.PWM(2路)/PCA(可编程计数器阵列
        -也可用来再实现 个定时器或个外部中断上升沿中断下降沿中断均可支持
15ADC, 位精度
16通用异步串行口(UART)
17SPI 同步通信口 主模式从模式
18.工作温度范围 0 - 75 / -40 - +85
19.封装: PDIP-20SOP-20(宽体TSSOP-20(超小封状,定货
1.内部 RAM 增加到 512 字节
2.内部 I/O  增加到 23 个(PDIP-28/SOP-28),  PLCC-32 27
3.内部 PCA/PWM 模块 增加到 4 
4.内部 A/D 模块 提升到 10  精度
5.内部 Flash 程序空间为 2K / 4K / 6K / 8K / 10K / 12K
6.封装PDIP-28(窄体SOP-28PLCC-32PDIP-20,SOP-20TSSOP-20
7.供货:2005-12-5开始提供样品PDIP-28/SOP28/PLCC32), 200512 月底批量供货
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 136
RST     1           20    VCC
RxD/P3.0     2          19    P1.7/SCLK/ADC7
TxD/P3.1     3          18    P1.6/MISO/ADC6
XTAL2     4          17    P1.5/MOSI/ADC5
INT0/P3.2     6          15    P1.3/ADC3
INT1/P3.3     7          14    P1.2/ADC2
ECI/T0/P3.4     8          13    P1.1/ADC1
PWM1/CEX1/T1/P3.5     9          12    P1.0/ADC0
Gnd     10         11    P3.7/CEX0/PWM0
XTAL1     5          16    P1.4/SS/ADC4
RST     1           20    VCC
RxD/P3.0     2          19    P1.7/SCLK
TxD/P3.1     3          18    P1.6/MISO
XTAL2     4          17    P1.5/MOSI
INT0/P3.2     6          15    P1.3
INT1/P3.3     7          14    P1.2
ECI/T0/P3.4     8          13    P1.1
PWM1/CEX1/T1/P3.5     9          12    P1.0
Gnd     10         11    P3.7/CEX0/PWM0
XTAL1     5          16    P1.4/SS
       STC12C2052AD 系列单片机管脚图及封装尺寸
STC12C2052 STC12C2052AD
20P3, 20-lead, 0.300" Wide, Plastic Dual Inline
Package (PDIP-20)
Dimensions in Inches and (Millimeters)
JEDEC STANDARD MS-001 AD
20S, 20-lead, 0.300" Wide, Plastic Gull WIng Small
Outline (SOIC-20 / SOP-20)
Dimensions in Inches and (Millimeters)
PIN1
0.020 (0.508)
0.013 (0.330)
0.299 (7.60)
0.291 (7.39) 0.420 (10.7)
0.393 (9.98)
0.050 (1.27)
0.513 (13.0)
0.497 (12.6) 0.105 (2.67)
0.092 (2.34)
0.012 (0.305)
0.003 (0.076)
0.013 (0.330)
0.009 (0.229)
0.035 (0.889)
0.015 (0.381)
REF
PIN1
1.060 (26.9)
0.980 (24.9)
0.280 (7.11)
0.240 (6.10)
0.090(2.29)
MAX
0.005(0.127)
MIN
0.900(22.86) REF
0.210(5.33)
MAX
0.150 (3.81)
0.115 (2.92)
0.100 (2.54) 0.070(1.78)
0.045(1.13)
0.022 (0.559)
0.014 (0.356)
0.015(0.381)MIN
0.325(8.26)
0.300(7.62)
0.014(0.356)
0.008(0.203) 0.430(10.92)MAX
15 REF
SEATING
PLANE
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 137
PACKAGEPLASTIC  SHRINK  SMALL  OUTLINETSSOP-206.4mm ×6.4mm
A1
e(0.65mm) B(0.19mm0.30mm)  L(0.50mm0.75mm)
20-PIN
A1
E2
Φ
  DIMENSIONS
in inches (mm)
Minimum/Maximum - /0.043
(- /1.10)
 0.002/0.006
(0.05/0.15mm)
 0.007/0.012
(0.19/0.30mm)
 0.252/0.260
(6.40/6.60mm)
 0.169/0.177
(4.30/4.50mm)
 0.026 BSC
(0.65mm BSC)
 0.126 BSC
(3.20mm BSC)
 0.020/0.030
(0.50/0.75mm)
°/8°
E(4.5mm)
E2(3.2mm)
STC12LE4052AD 提供 TSSOP-20 封装
6.4mm
Φ
D(6.40mm6.60mm)
STC12C4052AD 提供 TSSOP-20 封装
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 138
附录 E:     STC 单片机普通 I/O 口驱动 LCD 显示
P1.5
P1.6
P1.7
RST
P3.0
P4.3
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
XTAL2
XTAL1
VSS
P4.0
P2.0
P2.1
P2.2
P2.3
P2.4
P0.4
P0.5
P0.6
P0.7
  EA
P4.1
 ALE
PSEN
P2.7
P2.6
P2.5
P1.4
P1.3
P1.2
P1.1
P1.0
P4.2
 VDD
P0.0
P0.1
P0.2
P0.3
6  Seg12
5  Seg11
4  Seg10
3  Seg9
2  Seg8
43 Seg0
42 Seg1
41 Seg2
Seg3
Com0
Com1
Com2
5.6K  R2
10
11
12
13
14
15
16
17
Seg13
Seg14
Seg15
39
38
37
36
35
34
33
32
31
30
29
18
19
20
21
22
23
24
25
26
27
28
Seg16
Seg17
Seg18
Seg19
Seg20
Seg23
Seg22
Seg21
Com0   0 Com0
Com1
Seg0
Com1   1
Seg0   2
Seg1
Seg1   3
Seg2
Seg2   4
Seg3
Seg3   5
Seg4
Seg4   6
Seg5
Seg5   7
Seg6
Seg6   8
Seg7
Seg7   9
Seg8
Seg8  10
Seg9
Seg9  11
Seg10
Seg10 12
Seg11
Seg11 13
Seg12
Seg12 14
Seg13
Seg13 15
Seg14
Seg14 16
Seg15
Seg15 17
Seg16
Seg16 18
Seg17
Seg17 19
Seg18
Seg18 20
Seg19
Seg19 21
Seg20
Seg20 22
Seg21
Seg21 23
Seg22
Seg22 24
Seg23
Seg23 25
Com2
Com2  26
U2
STC89C58RD+
Seg4
44
40
Seg5
Seg6
Seg7
VCC
 R1
10K
10uF
C1
VCC
21K
VCC
PLCC-44
<33pF
<33pF
本资料不提供技术支持请自行消化吸收
5.6K  R3
5.6K  R4
5.6K  R5
5.6K  R6
5.6K  R7
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 139
NAME LcdDriver
¥include(STC89C51RC.h)
;**************************************************************************************
;the LCD is 1/3 duty and 1/3 bias; 3Com*24Seg; 9 display RAM;
                    Bit7    Bit6   Bit5   Bit4   Bit3   Bit2   Bit1   Bit
;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);
                        P^0 = P3^1 = 0       ten Com0=ND=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
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 140
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 
;*****************************************************************
;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
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 141
    MOV   PSW,#08H
    ACALL OutData
    POP   PS
    POP   AC
    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
    I  R0
    DJNZ R7,RetCom_0
    RET
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 142
;**********************************************************************
;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
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 143
;======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:
     NO
     SJMP Main
END
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 144
附录 F:   一个 I/O 口驱动发光二极管并扫描按键
1K
1K
P1.7
1K
1K
P1.6
1K
1K
P1.5
1K
1K
P1.4
利用STC12C5410 系列单片机的I/O 口可设置成弱上拉,强上拉推挽输出仅为输入高阻),开漏四种模式
当驱动发光二极管时将该 I/O口设置成强上拉推挽输出输出高即可点亮发光二极管
当检测按键时将该I/O 口设置成弱上拉然后输出 再读外部口的状态即可检测按键
的特性可以利用STC12C5410 系列单片机的I/O 口同时作为发光二极管驱动及按键检测用可以大幅节
I/O
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 145
GND MR      uC / DSP
10K
<1.25V
STC6342
PFO=0 PFI PFO Interrupt
VCC RESET RESET
VCC
电源稳压
PFI PFO Interrupt
STC813L
100KGND WDI I/O
MR WDO
VCC RESET RESET
电源稳压 VCC
STC89C54RD+
<1.25V
PFO=0
STC89C52RC
STC89C51RC
STC89C53RC
STC89C58RD+
STC89C516RD+
PFI PFO Interrupt
STC706S
100KGND WDI I/O
MR WDO
VCC RESET RESET
VCC
uC / DSP
<1.25V
PFO=0
电源稳压
GND MR          单片机
100K
<1.25V
STC6344
PFO=0 PFI PFO Interrupt
VCC RESET RESET
VCC
电源稳压
附录 G: 典型 MCU/DSP/uC 复位、电源监控外部看门狗专用电路
上电复位, 掉电复位
1.高电平复位信号输出
上电复位, 掉电复位外部手动复位稳压块前端掉电检测
上电复位, 掉电复位
电源稳压块前端掉电检测
低电平路复位信号输出
上电复位, 掉电复位外部手动复位
电源稳压块前端掉电检测
外部硬件看门狗
2.低电平复位信号输出
上电复位, 掉电复位 上电复位, 掉电复位外部手动复位稳压块前端掉电检测
上电复位, 掉电复位外部手动复位
电源稳压块前端掉电检测
外部硬件看门狗
上电复位, 掉电复位外部手动复位
电源稳压块前端掉电检测
低电平路复位信号输出
STC810  *推荐
VCC 3
1 GND
Vcc
89C51RC
89LE516AD
89C54RD+
89C58RD+
2 RESET
RESET
STC809  *推荐
VCC 3
1 GND
Vcc
2 RESET
RESET
uC / DSP
GND RESET   单片机
10K
<1.25V
STC6345
PFO=0 PFI PFO Interrupt
VCC RESET RESET
RESET
uC / DSP
VCC
电源稳压
MR RESET
PFI PFO Interrupt
STC708
100KGND NC
VCC RESET
VCC
RESET
<1.25V
PFO=0
电源稳压
RESET
uC / DSP
单片机
使用外部专用复位电路的好处推荐使用STC6344STC6345STC810)
1.确保上电时在用户设定的电源电压之上时钟振荡稳定后单片机才开始工作
2.确保掉电时在用户设定的电源电压之下立即让单片机复位以免单片机误动作
3.具有电源稳压块前端掉电检测的专用复位电路确保掉电前有充分的时间保存数据
人民币
人民币
人民币
4.复位门槛电压可选 L:4.63V; M:4.38V; J: 4.00V; T:3.08V; S:2.93V; R:2.63V
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 146
附录 H:     STC 高性能 SRAM 选型一览表
 STC62WV1024
A11     1                                                          32    OE
A14     11                                                         22    DQ1
A12       12                                                        21    DQ0
A7     13                                                        20      A0
A6     14                                                         19     A1
A5     15                                                        18     A2
A4     16                                                        17     A3
A16    10                                                          23    DQ
NC     9                                                         24     GND
VCC     8                                                         25     DQ3
A15     7                                                         26      DQ4
CE2     6                                                         27      DQ5
WE     5                                                         28    DQ6
A13     4                                                         29     DQ7
A8     3                                                         30     CE
A9     2                                                         31    A10
TSOP / STSOP-32
A14     11                                                          22     DQ1
A12      12                                                         21     DQ0
A7     13                                                        20      A0
A6     14                                                        19     A1
A5     15                                                        18     A2
A4   16                                                        17     A3
 A11    1                                                         32     OE
A16     10                                                         23     DQ2
A9     2                                                         31     A10
A8     3                                                         30      CE
A13     4                                                         29     DQ7
WE     5                                                         28     DQ6
A17     6                                                         27     DQ5
CC     8                                                        25     DQ3
A15     7                                                         26     DQ4
A18     9                                                        24     GND
 STC62WV5128
STSOP-32
 STC62WV1M8
DQ2     13                                  32      DQ5
DQ3     14                                   31     DQ4
NC      15                                    30     NC
NC      16                                   29    NC
A15      22                                   23     A14
A16      21                                   24     A13
A17      20                                  25      A12
A18     19                                   26      A11
A19      18                                   27      A10
WE      17                                  28      A9
GND      12                                    33      VCC
DQ1     10                                    35      DQ6
A1      4                                   41      OE
VCC      11                                    34      GND
TSOP--44
A4      1                                    44      A5
A3      2                                   43      A6
A2      3                                   42      A7
A0      5                                   40      CE2
 CE1      6                                   39      A8
NC      7                                   38      NC
NC      8                                   37      NC
DQ0      9                                    36      DQ7
 STC62WV25616
DQ4      13                                  32      DQ11
DQ5      14                                  31      DQ10
DQ6      15                                  30      DQ9
DQ7      16                                  29      DQ8
A13      22                                  23      A12
A14      21                                  24      A11
A15      20                                  25      A10
A16      19                                  26      A9
A17      18                                  27      A8
WE      17                                  28      NC
GND      12                                  33      VCC
DQ3      10                                    35      DQ12
A1      4                                   41      OE
VCC      11                                    34      GND
TSOP--44
A4      1                                   44      A5
A3      2                                   43      A6
A2      3                                    42      A7
A0      5                                   40      UB
 CE      6                                   39      LB
DQ0      7                                   38      DQ15
DQ1      8                                   37      DQ14
DQ2      9                                   36      DQ13
 STC62WV12816
DQ4      13                                  32      DQ11
DQ5      14                                   31      DQ10
DQ6      15                                  30      DQ9
DQ7      16                                  29      DQ8
A12      22                                  23      NC
A13      21                                  24      A11
A14      20                                  25      A10
A15      19                                  26     A9
A16      18                                 27      A8
WE      17                                 28      NC
GND      12                                   33      VCC
DQ3      10                                    35      DQ12
A1      4                                   41      OE
VCC      11                                   34      GND
TSOP--44
A4      1                                   44      A5
A3      2                                  43      A6
A2      3                                   42      A7
A0      5                                    40      UB
 CE      6                                   39      LB
DQ0      7                                   38      DQ15
DQ1      8                                    37      DQ14
DQ2      9                                    36      DQ13
 STC62WV51216
DQ4      13                                  32      DQ11
DQ5      14                                  31      DQ10
DQ6      15                                  30      DQ9
DQ7      16                                  29      DQ8
A14      22                                   23      A13
A15      21                                  24      A12
A16      20                                  25      A11
A17      19                                  26      A10
A18      18                                  27      A9
WE      17                                  28      A8
VSS      12                                  33      VCC
DQ3      10                                   35      DQ12
A1      4                                   41      OE
VCC      11                                  34      VSS
TSOP--44
A4      1                                   44      A5
A3      2                                    43      A6
A2      3                                   42      A7
A0      5                                   40      UB
 CE      6                                   39      LB
DQ0      7                                   38      DQ15
DQ1      8                                   37      DQ14
DQ2      9                                   36      DQ13
 STC62WV1024
A7      5                     28      A13
A12      4                     29      WE
A14      3                     30      CE2
NC      1                     32      VCC
A3      9                     24      OE
A4      8                     25      A11
 A2      10                     23      A10
A1       11                      22      CE1
A0       12                     21      DQ7
DQ0      13                     20      DQ6
DQ1      14                     19      DQ5
DQ2      15                     18      DQ4
GND      16                     17      DQ3
A5      7                     26      A9
A16      2                     31      A15
A6      6                     27      A8
 SOP-32
型号 容量 工作电压 温度 速度 推荐封状 供货
STC62WV256   32K x 2.4 - 5.5V 408570nS SOP/TSOP/DIP 现货
STC62WV1024 128K x  2.4 - 5.5V 408570nS SOP/STSOP/TSOP 现货
STC62WV2568 256K x  2.4 - 5.5V 408570nS STSOP-32 现货
STC62WV5128 512K x  2.4 - 5.5V 408570nS STSOP/SOP-32 现货
STC62WV1M8    1M x  2.4 - 5.5V 408570nS TSOP2-44 订货
STC62WV6416  64K x  2.4 - 5.5V 408570nS TSOP2-44 现货
STC62WV12816 128K x 16 2.4 - 5.5V 408570nS TSOP2-44 现货
STC62LV12816 128K x 16 2.4 - 3.6V 408570nS TSOP2-44 现货
STC62WV25616 256K x 16 2.4 - 5.5V 408570nS TSOP2-44 现货
STC62WV51216 512K x 16 2.4 - 5.5V 408570nS TSOP2-44 现货
 STC62WV256
 SOP-28
DQ2      13                     16      DQ4
GND      14                     15      DQ3
DQ1      12                     17      DQ5
A0      10                     19      DQ7
A6      4                     25      A8
DQ0      11                     18      DQ6
A14      1                     28      VCC
A12      2                    27      WE
A7      3                    26      A13
A5      5                     24      A9
A4       6                     23      A11
A3       7                    22      OE
A2      8                      21      A10
A1      9                     20      CE
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 147
附录 I:  超强抗干扰测试数据 4000V 快速脉冲干扰
                -在权威的 SGS 电气实验室测试
SGS
             WORKSHEET  EFT TestEN 61000-4-4
EUT NAMESTC12C5410AD Development Tool
Environmental conditions
Set-Up EUT for Compliance Test
Test Requirement Standard EN 61000-4-4 Set up the EUT as
Table-top
Operating mode during test ON MODE
Detail EUT monitor system:
STC12C5410AD control LED flashing function
Compliance-Test Record
Compliance Test Result On AC Cable ( 2 wire 
Lead under test Level EUT operating mode Observations
+/-4kV ON MODE NLOF
+/-4kV ON MODE NLOF
L+N +/-4kV ON MODE NLOF
Test Conclusion and Reason
   Test Conclusion:                 Pass
   Reason(explain why? ):           Class 
Note: This sample pass the Class A(2kV)
      According to the customers require up to 4kV,test result:  PASS 4kV
     我们提供过 4000V 快速脉冲干扰辅导服务,陪同在权威的 SGS 电气实验室测试
小时收取人民币 3000 元,提前一周预约
Iss Date Jan 062006
Air  Temperture  ℃) 20 Relative HumidityRH56 Air Pressure mBar1003
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 148
附录 J:  STC12C5410AD 系列单片机应用注意事项
关于复位电路
晶振频率在20M 以下时可以不用外部复位电路原复位电路可以保留也可以不用不用时复位脚可
直接短到地不过建议设计时PCB板上保留 R/C复位电路实际使用时再决定用或不用
关于时钟
如果使用内部R/C 振荡器时钟(4MHz8MHz,制造误差加温漂),XTAL1 XTAL2脚浮空
如果外部时钟频率在33MHz 以上时建议直接使用外部有源石英晶体振荡器时钟从XTAL1 脚输入,XTAL2
必须浮空
/B 版,老版本应用注意事项现新版本版本已经改好并开始大量供货
空闲模式IDLE不要用新版本版本已修改好
对普通可位寻址的RAM(20H - 2FH)的位位地址: 00H - 7FH),JBC  RAM_Bit 无任何问题
对可位寻址的特殊功能寄存器的位(80H - FFH)
不要用  JBC SFR_Bit 指令
      JB   SFR_Bit / CLR SFR_Bit 指令取代
举例
定时器、定时器 使用时建议直接用中断方式,与普通8051 单片机完全兼容
但如不用中断,而用查询方式,建议用
JB TF0 查询/ CLR TF0JB TF1 查询 / CLR TF1
不要用
JBC TF0 / JBC TF1
此问题新版本正在修正中但实际并不影响用户使用
原因
主要是特殊功能寄存器的整个位值被读出后如在我们判断该位为 将该位清零并将整个位值再一
起写回之前它的部分其它位如已由硬件设置发生变化而我们JBC 判断后再写回时新的值被破坏被写成
了老的值
如果该位是0,则不会再写回就不会发生此事
如果该位变成了1,该特殊功能寄存器的其它位在此瞬间未发生变化再一起写回也无问题
如果该位变成了1,该特殊功能寄存器的其它位在此瞬间发生变化其它在此瞬间发生变化的位就会被破坏
又被写成老的值
宏晶科技www.MCU-Memory.com   Mobile:13922805190(姚永平)   Tel:0755-82948409    Fax: 0755-82944243
宏晶科技专业单片机存储器供应商   www.MCU-Memory.com   STC12C5410AD系列 1T 8051 单片机中文指南 149
附录         资料升级历史备忘录
STC12C5410AD 系列单片机新的 版本已开始大量供货
2006-4-15 版本在2006-3-25 版本的基础上
部分目录和内容做了调整
通知新版本版本已经大量供货
2006-3-25 版本在 2006-2-6 版本的基础上
PWM/PCA的应用部分增加了在使用 PCA 高速输出模式时的特别应用注意事项
2006-2-6 版本在 2005-1-16 版本的基础上
增加了定时器做波特率发生器的程序
增加了如何用软件实现系统复位
增加了附录典型 MCU/DSP/uC 复位、电源监控外部看门狗专用电路
增加了附录 J  STC 高性能 SRAM选型一览表
增加了附录 L:  超强抗干扰测试数据4000V 快速脉冲干扰
EEPROM 测试程序的解释说明部分做了加强
对看门狗测试程序的解释说明部分做了加强
------------------------------------------------------------------------------
2006-1-16版本在 2005-12-31 版本的基础上
1.A/D 转换程序做了简化
2.PCA/PWM 模块增加了新的演示程序扩展软件定时器扩展外部中断
------------------------------------------------------------------------------
2005-12-31 版本在2005-12-24 版本的基础上
1.修正了 PCA/PWM 部分笔误,PCA/PWM 原有些部分笔误为
2.A/D 转换结果计算公式 :笔误 结果ADC_DATA[7:0],ADC_LOW2[1:0])=256 x Vin / Vcc
现改为 结果  ADC_DATA[7:0],ADC_LOW2[1:0] ) = 1024 x Vin / Vcc
3.增加了 STC 单片机普通I/O 口驱动 LCD 显示的参考电路及演示程序
4.增加了一个 I/O 口驱动发光二极管并扫描按键
5.增加了 STC12C5410 系列单片机应用注意事项