STC micro
TM
宏 晶 科 技
深圳国芯人工智能有限公司
STC8H 系列单片机
技术参考手册
技术支持网站:www.STCMCUDATA.com / www.STCMCU.com
资料更新日期:2020/8/26
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
目录
1
2
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2
2.2.3
2.3
2.3.1
2.3.2
2.3.3
2.4
2.4.1
2.4.2
2.4.3
2.5
2.5.1
2.5.2
2.5.3
2.6
2.6.1
2.6.2
2.6.3
3
3.1
3.1.1
3.1.2
3.1.3
3.1.4
3.1.5
3.1.6
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
概述.......................................................................................................................................... 1
特性、价格及管脚.................................................................................................................. 2
STC8H1K08-20Pin 系列 ......................................................................................................... 2
特性及价格 .............................................................................................................................. 2
管脚图...................................................................................................................................... 4
管脚说明.................................................................................................................................. 6
STC8H1K28-32Pin 系列 ......................................................................................................... 9
特性及价格 .............................................................................................................................. 9
管脚图.................................................................................................................................... 12
管脚说明................................................................................................................................ 13
STC8H3K64S2-48Pin 系列 ................................................................................................... 17
特性及价格 ............................................................................................................................ 17
管脚图.................................................................................................................................... 20
管脚说明................................................................................................................................ 21
STC8H3K64S4-48Pin 系列 ................................................................................................... 27
特性及价格 ............................................................................................................................ 27
管脚图.................................................................................................................................... 30
管脚说明................................................................................................................................ 31
STC8H8K64U-64Pin/48Pin USB 系列 ................................................................................. 37
特性及价格 ............................................................................................................................ 37
管脚图.................................................................................................................................... 40
管脚说明................................................................................................................................ 43
STC8H2K64T-48Pin 触摸按键系列 ..................................................................................... 49
特性及价格 ............................................................................................................................ 49
管脚图.................................................................................................................................... 52
管脚说明................................................................................................................................ 53
功能脚切换............................................................................................................................ 61
功能脚切换相关寄存器 ........................................................................................................ 61
外设端口切换控制寄存器 1(P_SW1),串口 1、SPI 切换 ............................................. 61
外设端口切换控制寄存器 2(P_SW2),串口 2/3/4、I2C、比较器输出切换 ................ 62
时钟选择寄存器(MCLKOCR) ........................................................................................ 62
T3/T4 选择寄存器(T3T4PIN).......................................................................................... 62
高级 PWM 选择寄存器(PWMx_PS)............................................................................... 64
高级 PWM 功能脚选择寄存器(PWMx_ETRPS) ........................................................... 66
范例程序................................................................................................................................ 67
串口 1 切换............................................................................................................................ 67
串口 2 切换............................................................................................................................ 68
串口 3 切换............................................................................................................................ 70
串口 4 切换............................................................................................................................ 71
SPI 切换 ................................................................................................................................. 73
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-i-
STC8H 系列技术手册
3.2.6
3.2.7
3.2.8
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
5
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.1.6
5.1.7
5.1.8
5.1.9
6
6.1
6.1.1
6.1.2
6.1.3
6.1.4
6.1.5
6.1.6
6.1.7
6.2
6.2.1
6.2.2
6.2.3
6.2.4
6.2.5
6.3
6.3.1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
I2C 切换................................................................................................................................. 74
比较器输出切换 .................................................................................................................... 76
主时钟输出切换 .................................................................................................................... 78
封装尺寸图............................................................................................................................ 80
SOP8 封装尺寸图.................................................................................................................. 80
DFN8 封装尺寸图(3mm*3mm)....................................................................................... 81
SOP16 封装尺寸图................................................................................................................ 82
TSSOP20 封装尺寸图 ........................................................................................................... 83
QFN20 封装尺寸图(3mm*3mm)..................................................................................... 84
LQFP32 封装尺寸图(9mm*9mm) ................................................................................... 85
QFN32 封装尺寸图(4mm*4mm)..................................................................................... 86
LQFP48 封装尺寸图(9mm*9mm) ................................................................................... 87
QFN48 封装尺寸图(6mm*6mm)..................................................................................... 88
LQFP64S 封装尺寸图(12mm*12mm)............................................................................. 89
QFN64 封装尺寸图(8mm*8mm)..................................................................................... 90
STC8H 系列单片机命名规则............................................................................................... 91
ISP 下载及典型应用线路图................................................................................................. 92
STC8H 系列 ISP 下载应用线路图 ....................................................................................... 92
使用 RS-232 转换器下载(一般精度 ADC),也可支持仿真........................................... 92
使用 RS-232 转换器下载(高精度 ADC),也可支持仿真............................................... 93
STC8H3K64S4 系列的高精度 ADC 参考线路图,也可支持仿真.................................... 94
使用 PL2303-GL 下载,也可支持仿真............................................................................... 95
使用通用 USB 转串口工具下载,支持 ISP 在线下载,也可支持仿真 ........................... 96
使用 U8-Mini 工具下载,支持 ISP 在线和脱机下载,也可支持仿真............................. 97
使用 U8W 工具下载,支持 ISP 在线和脱机下载,也可支持仿真 .................................. 98
模拟 USB 直接 ISP 下载,仅支持 ISP 下载,不支持仿真 ............................................. 100
硬件 USB 直接 ISP 下载,仅支持 ISP 下载,暂不支持仿真 ......................................... 101
时钟、复位与电源管理...................................................................................................... 103
系统时钟控制 ...................................................................................................................... 103
系统时钟选择寄存器(CKSEL) ..................................................................................... 103
时钟分频寄存器(CLKDIV) ........................................................................................... 104
内部高速高精度 IRC 控制寄存器(HIRCCR)............................................................... 104
外部振荡器控制寄存器(XOSCCR) .............................................................................. 104
外部 32K 振荡器控制寄存器(X32KCR) ...................................................................... 105
内部 32KHz 低速 IRC 控制寄存器(IRC32KCR) ......................................................... 105
主时钟输出控制寄存器(MCLKOCR) .......................................................................... 105
STC8H 系列内部 IRC 频率调整 ........................................................................................ 106
IRC 频段选择寄存器(IRCBAND)................................................................................. 106
内部 IRC 频率调整寄存器(IRTRIM)............................................................................ 106
内部 IRC 频率微调寄存器(LIRTRIM) ......................................................................... 107
时钟分频寄存器(CLKDIV) ........................................................................................... 107
分频出 3MHz 用户工作频率,并用户动态改变频率追频示例 ...................................... 108
系统复位...............................................................................................................................111
看门狗复位(WDT_CONTR) ..........................................................................................112
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- ii -
STC8H 系列技术手册
6.3.2
6.3.3
6.3.4
6.3.5
6.3.6
6.4
6.4.1
6.4.2
6.5
6.5.1
6.6
6.6.1
6.7
6.7.1
6.7.2
6.7.3
6.7.4
6.7.5
6.7.6
6.7.7
6.7.8
6.7.9
6.7.10
6.7.11
6.7.12
6.7.13
6.7.14
7
7.1
7.2
7.2.1
7.2.2
7.2.3
7.2.4
7.2.5
7.2.6
7.2.7
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
软件复位(IAP_CONTR) .................................................................................................114
低压复位(RSTCFG) ........................................................................................................115
低电平上电复位参考电路(一般不需要) .......................................................................116
低电平按键复位参考电路 ...................................................................................................116
传统 8051 高电平上电复位参考电路 .................................................................................117
外部晶振及外部时钟电路 ...................................................................................................118
外部晶振输入电路 ...............................................................................................................118
外部时钟输入电路(P1.6 不可用作普通 I/O).................................................................118
时钟停振/省电模式与系统电源管理 ..................................................................................118
电源控制寄存器(PCON) ................................................................................................118
掉电唤醒定时器 .................................................................................................................. 120
掉电唤醒定时器计数寄存器(WKTCL,WKTCH) ..................................................... 120
范例程序.............................................................................................................................. 121
选择系统时钟源 .................................................................................................................. 121
主时钟分频输出 .................................................................................................................. 123
看门狗定时器应用 .............................................................................................................. 125
软复位实现自定义下载 ...................................................................................................... 127
低压检测.............................................................................................................................. 129
省电模式.............................................................................................................................. 131
使用 INT0/INT1/INT2/INT3/INT4 管脚中断唤醒省电模式............................................. 133
使用 T0/T1/T2/T3/T4 管脚中断唤醒省电模式.................................................................. 136
使用 RxD/RxD2/RxD3/RxD4 管脚中断唤醒省电模式..................................................... 140
使用 I2C 的 SDA 脚唤醒 MCU 省电模式 ......................................................................... 144
使用掉电唤醒定时器唤醒省电模式 .................................................................................. 146
LVD 中断唤醒省电模式,建议配合使用掉电唤醒定时器.............................................. 148
比较器中断唤醒省电模式,建议配合使用掉电唤醒定时器 .......................................... 152
使用 LVD 功能检测工作电压(电池电压) .................................................................... 154
存储器.................................................................................................................................. 159
程序存储器 .......................................................................................................................... 159
数据存储器 .......................................................................................................................... 161
内部 RAM............................................................................................................................ 161
程序状态寄存器(PSW).................................................................................................. 162
内部扩展 RAM,XRAM,XDATA................................................................................... 163
辅助寄存器(AUXR)....................................................................................................... 163
外部扩展 RAM,XRAM,XDATA................................................................................... 164
总线速度控制寄存器(BUS_SPEED) ............................................................................ 164
8051 中可位寻址的数据存储器 ......................................................................................... 165
存储器中的特殊参数,在 ISP 下载时可烧录进程序 FLASH ......................................... 167
读取内部 1.19V 参考信号源值 (从 Flash 程序存储器(ROM)中读取) ..................... 169
读取内部 1.19V 参考信号源值 (从 RAM 中读取)........................................................... 172
读取全球唯一 ID 号 (从 Flash 程序存储器(ROM)中读取)....................................... 175
读取全球唯一 ID 号 (从 RAM 中读取) ............................................................................ 178
读取 32K 掉电唤醒定时器的频率 (从 Flash 程序存储器(ROM)中读取) ................ 181
读取 32K 掉电唤醒定时器的频率 (从 RAM 中读取)...................................................... 184
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- iii -
STC8H 系列技术手册
7.3.7
7.3.8
8
8.1
8.2
8.3
8.4
8.5
8.6
8.7
9
9.1
9.1.1
9.1.2
9.1.3
9.1.4
9.1.5
9.1.6
9.1.7
9.2
9.3
9.3.1
9.3.2
9.3.3
9.3.4
9.3.5
9.3.6
9.3.7
9.3.8
9.4
9.4.1
9.4.2
9.5
9.6
9.7
9.8
9.9
9.10
9.11
10
10.1
10.1.1
10.1.2
10.1.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
用户自定义内部 IRC 频率 (从 Flash 程序存储器(ROM)中读取) ............................ 188
用户自定义内部 IRC 频率 (从 RAM 中读取).................................................................. 190
特殊功能寄存器.................................................................................................................. 193
STC8H1K08-20Pin 系列 ..................................................................................................... 193
STC8H1K28-32Pin 系列 ..................................................................................................... 195
STC8H3K64S4-48Pin 系列 ................................................................................................. 197
STC8H3K64S2-48Pin 系列 ................................................................................................. 199
STC8H8K64U-64Pin/48Pin USB 系列 ............................................................................... 201
STC8H2K64T-48Pin 系列 ................................................................................................... 203
特殊功能寄存器列表 .......................................................................................................... 205
I/O 口 ................................................................................................................................... 215
I/O 口相关寄存器................................................................................................................ 215
端口数据寄存器(Px)...................................................................................................... 217
端口模式配置寄存器(PxM0,PxM1)........................................................................... 217
端口上拉电阻控制寄存器(PxPU)................................................................................. 218
端口施密特触发控制寄存器(PxNCS) .......................................................................... 218
端口电平转换速度控制寄存器(PxSR) ......................................................................... 219
端口驱动电流控制寄存器(PxDR) ................................................................................ 219
端口数字信号输入使能控制寄存器(PxIE) .................................................................. 219
配置 I/O 口........................................................................................................................... 220
I/O 的结构图........................................................................................................................ 221
准双向口(弱上拉) .......................................................................................................... 221
推挽输出.............................................................................................................................. 221
高阻输入.............................................................................................................................. 222
开漏输出.............................................................................................................................. 222
新增 4.1K 上拉电阻 ............................................................................................................ 223
如何设置 I/O 口对外输出速度........................................................................................... 223
如何设置 I/O 口电流驱动能力........................................................................................... 224
如何降低 I/O 口对外辐射................................................................................................... 224
范例程序.............................................................................................................................. 225
端口模式设置 ...................................................................................................................... 225
双向口读写操作 .................................................................................................................. 226
一种典型三极管控制电路 .................................................................................................. 229
典型发光二极管控制电路 .................................................................................................. 229
混合电压供电系统 3V/5V 器件 I/O 口互连 ...................................................................... 230
如何让 I/O 口上电复位时为低电平................................................................................... 231
利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图 .......................................... 232
I/O 口直接驱动 LED 数码管应用线路图 .......................................................................... 233
用 STC 系列 MCU 的 I/O 口直接驱动段码 LCD ............................................................. 234
I/O 口中断(后续新的单片机系列均会逐步增加此功能) ........................................... 253
I/O 口中断相关寄存器........................................................................................................ 253
端口中断使能寄存器(PxINTE)..................................................................................... 254
端口中断标志寄存器(PxINTF) ..................................................................................... 254
端口中断模式配置寄存器(PxIM0,PxIM1) ................................................................ 254
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- iv -
STC8H 系列技术手册
10.2
10.2.1
10.2.2
10.2.3
10.2.4
11
12
12.1
12.2
12.3
12.4
12.4.1
12.4.2
12.4.3
12.5
12.5.1
12.5.2
12.5.3
12.5.4
12.5.5
12.5.6
12.5.7
12.5.8
12.5.9
12.5.10
12.5.11
12.5.12
12.5.13
12.5.14
12.5.15
12.5.16
12.5.17
12.5.18
12.5.19
12.5.20
12.5.21
13
13.1
13.2
13.2.1
13.2.2
13.2.3
13.2.4
13.2.5
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
范例程序.............................................................................................................................. 256
P0 口下降沿中断................................................................................................................. 256
P1 口上升沿中断................................................................................................................. 260
P2 口低电平中断................................................................................................................. 263
P3 口高电平中断................................................................................................................. 267
指令系统.............................................................................................................................. 272
中断系统.............................................................................................................................. 276
STC8H 系列中断源............................................................................................................. 276
STC8H 中断结构图............................................................................................................. 278
STC8H 系列中断列表......................................................................................................... 279
中断相关寄存器 .................................................................................................................. 282
中断使能寄存器(中断允许位) ...................................................................................... 283
中断请求寄存器(中断标志位) ...................................................................................... 287
中断优先级寄存器 .............................................................................................................. 290
范例程序.............................................................................................................................. 293
INT0 中断(上升沿和下降沿),可同时支持上升沿和下降沿....................................... 293
INT0 中断(下降沿) ........................................................................................................ 295
INT1 中断(上升沿和下降沿),可同时支持上升沿和下降沿....................................... 296
INT1 中断(下降沿) ........................................................................................................ 298
INT2 中断(下降沿),只支持下降沿中断....................................................................... 300
INT3 中断(下降沿),只支持下降沿中断....................................................................... 302
INT4 中断(下降沿),只支持下降沿中断....................................................................... 304
定时器 0 中断 ...................................................................................................................... 306
定时器 1 中断 ...................................................................................................................... 308
定时器 2 中断 ...................................................................................................................... 309
定时器 3 中断 ...................................................................................................................... 312
定时器 4 中断 ...................................................................................................................... 314
UART1 中断 ........................................................................................................................ 316
UART2 中断 ........................................................................................................................ 318
UART3 中断 ........................................................................................................................ 321
UART4 中断 ........................................................................................................................ 323
ADC 中断 ............................................................................................................................ 326
LVD 中断 ............................................................................................................................. 328
比较器中断 .......................................................................................................................... 330
SPI 中断 ............................................................................................................................... 332
I2C 中断............................................................................................................................... 334
定时器/计数器..................................................................................................................... 338
定时器的相关寄存器 .......................................................................................................... 338
定时器 0/1............................................................................................................................ 340
定时器 0/1 控制寄存器(TCON) .................................................................................... 340
定时器 0/1 模式寄存器(TMOD) ................................................................................... 340
定时器 0 计数寄存器(TL0,TH0) ................................................................................ 341
定时器 1 计数寄存器(TL1,TH1) ................................................................................ 341
辅助寄存器 1(AUXR).................................................................................................... 341
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-v-
STC8H 系列技术手册
13.2.6
13.2.7
13.2.8
13.3
13.3.1
13.3.2
13.3.3
13.3.4
13.4
13.4.1
13.4.2
13.4.3
13.4.4
13.4.5
13.5
13.5.1
13.5.2
13.5.3
13.5.4
13.5.5
13.5.6
13.5.7
13.5.8
13.5.9
13.5.10
13.5.11
13.5.12
13.5.13
13.5.14
13.5.15
13.5.16
13.5.17
13.5.18
13.5.19
13.5.20
13.5.21
13.5.22
13.5.23
13.5.24
13.5.25
13.5.26
13.5.27
13.5.28
13.5.29
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
中断与时钟输出控制寄存器(INTCLKO)..................................................................... 342
定时器 0 计算公式 .............................................................................................................. 342
定时器 1 计算公式 .............................................................................................................. 343
定时器 2............................................................................................................................... 344
辅助寄存器 1(AUXR).................................................................................................... 344
中断与时钟输出控制寄存器(INTCLKO)..................................................................... 344
定时器 2 计数寄存器(T2L,T2H) ................................................................................ 344
定时器 2 计算公式 .............................................................................................................. 344
定时器 3/4............................................................................................................................ 345
定时器 4/3 控制寄存器(T4T3M)................................................................................... 345
定时器 3 计数寄存器(T3L,T3H) ................................................................................ 345
定时器 4 计数寄存器(T4L,T4H) ................................................................................ 345
定时器 3 计算公式 .............................................................................................................. 346
定时器 4 计算公式 .............................................................................................................. 346
范例程序.............................................................................................................................. 347
定时器 0(模式 0-16 位自动重载),用作定时 ............................................................. 347
定时器 0(模式 1-16 位不自动重载)
,用作定时 ......................................................... 348
定时器 0(模式 2-8 位自动重载),用作定时 ............................................................... 350
定时器 0(模式 3-16 位自动重载不可屏蔽中断)
,用作定时 ..................................... 352
定时器 0(外部计数-扩展 T0 为外部下降沿中断)..................................................... 354
定时器 0(测量脉宽-INT0 高电平宽度)...................................................................... 356
定时器 0(模式 0),时钟分频输出 .................................................................................. 358
定时器 1(模式 0-16 位自动重载),用作定时 ............................................................. 360
定时器 1(模式 1-16 位不自动重载)
,用作定时 ......................................................... 362
定时器 1(模式 2-8 位自动重载),用作定时 ............................................................... 364
定时器 1(外部计数-扩展 T1 为外部下降沿中断)..................................................... 365
定时器 1(测量脉宽-INT1 高电平宽度)...................................................................... 367
定时器 1(模式 0),时钟分频输出 .................................................................................. 369
定时器 1(模式 0)做串口 1 波特率发生器 .................................................................... 371
定时器 1(模式 2)做串口 1 波特率发生器 .................................................................... 375
定时器 2(16 位自动重载),用作定时 ............................................................................ 379
定时器 2(外部计数-扩展 T2 为外部下降沿中断)..................................................... 381
定时器 2,时钟分频输出 ................................................................................................... 383
定时器 2 做串口 1 波特率发生器 ...................................................................................... 385
定时器 2 做串口 2 波特率发生器 ...................................................................................... 389
定时器 2 做串口 3 波特率发生器 ...................................................................................... 393
定时器 2 做串口 4 波特率发生器 ...................................................................................... 397
定时器 3(16 位自动重载),用作定时 ............................................................................ 401
定时器 3(外部计数-扩展 T3 为外部下降沿中断)..................................................... 403
定时器 3,时钟分频输出 ................................................................................................... 405
定时器 3 做串口 3 波特率发生器 ...................................................................................... 407
定时器 4(16 位自动重载),用作定时 .............................................................................411
定时器 4(外部计数-扩展 T4 为外部下降沿中断)..................................................... 414
定时器 4,时钟分频输出 ................................................................................................... 416
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- vi -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5.30 定时器 4 做串口 4 波特率发生器 ...................................................................................... 418
14
串口通信.............................................................................................................................. 423
14.1
串口相关寄存器 .................................................................................................................. 423
14.2
串口 1................................................................................................................................... 424
14.2.1 串口 1 控制寄存器(SCON) ........................................................................................... 424
14.2.2 串口 1 数据寄存器(SBUF) ............................................................................................ 424
14.2.3 电源管理寄存器(PCON) ............................................................................................... 425
14.2.4 辅助寄存器 1(AUXR).................................................................................................... 425
14.2.5 串口 1 模式 0,模式 0 波特率计算公式 ........................................................................... 425
14.2.6 串口 1 模式 1,模式 1 波特率计算公式 ........................................................................... 426
14.2.7 串口 1 模式 2,模式 2 波特率计算公式 ........................................................................... 429
14.2.8 串口 1 模式 3,模式 3 波特率计算公式 ........................................................................... 429
14.2.9 自动地址识别 ...................................................................................................................... 430
14.2.10 串口 1 从机地址控制寄存器(SADDR,SADEN) ....................................................... 430
14.3
串口 2................................................................................................................................... 432
14.3.1 串口 2 控制寄存器(S2CON) ......................................................................................... 432
14.3.2 串口 2 数据寄存器(S2BUF) .......................................................................................... 432
14.3.3 串口 2 模式 0,模式 0 波特率计算公式 ........................................................................... 432
14.3.4 串口 2 模式 1,模式 1 波特率计算公式 ........................................................................... 433
14.4
串口 3................................................................................................................................... 435
14.4.1 串口 3 控制寄存器(S3CON) ......................................................................................... 435
14.4.2 串口 3 数据寄存器(S3BUF) .......................................................................................... 435
14.4.3 串口 3 模式 0,模式 0 波特率计算公式 ........................................................................... 435
14.4.4 串口 3 模式 1,模式 1 波特率计算公式 ........................................................................... 436
14.5
串口 4................................................................................................................................... 438
14.5.1 串口 4 控制寄存器(S4CON) ......................................................................................... 438
14.5.2 串口 4 数据寄存器(S4BUF) .......................................................................................... 438
14.5.3 串口 4 模式 0,模式 0 波特率计算公式 ........................................................................... 438
14.5.4 串口 4 模式 1,模式 1 波特率计算公式 ........................................................................... 439
14.6
串口注意事项 ...................................................................................................................... 441
14.7
范例程序.............................................................................................................................. 442
14.7.1 串口 1 使用定时器 2 做波特率发生器 .............................................................................. 442
14.7.2 串口 1 使用定时器 1(模式 0)做波特率发生器 ............................................................ 445
14.7.3 串口 1 使用定时器 1(模式 2)做波特率发生器 ............................................................ 449
14.7.4 串口 2 使用定时器 2 做波特率发生器 .............................................................................. 453
14.7.5 串口 3 使用定时器 2 做波特率发生器 .............................................................................. 457
14.7.6 串口 3 使用定时器 3 做波特率发生器 .............................................................................. 461
14.7.7 串口 4 使用定时器 2 做波特率发生器 .............................................................................. 465
14.7.8 串口 4 使用定时器 4 做波特率发生器 .............................................................................. 469
14.7.9 串口多机通讯 ...................................................................................................................... 474
15
比较器,掉电检测,内部 1.19V 参考信号源 .................................................................. 475
15.1
比较器内部结构图 .............................................................................................................. 475
15.2
比较器相关的寄存器 .......................................................................................................... 476
15.2.1 比较器控制寄存器 1(CMPCR1) ................................................................................... 476
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- vii -
STC8H 系列技术手册
15.2.2
15.3
15.3.1
15.3.2
15.3.3
15.3.4
15.3.5
16
16.1
16.2
16.2.1
16.2.2
16.2.3
16.2.4
16.2.5
16.2.6
16.3
16.4
16.4.1
16.4.2
16.4.3
17
17.1
17.1.1
17.1.2
17.1.3
17.1.4
17.2
17.2.1
17.2.2
17.2.3
17.2.4
17.3
17.4
17.5
17.5.1
17.5.2
17.6
17.6.1
17.6.2
17.6.3
17.6.4
17.6.5
17.6.6
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
比较器控制寄存器 2(CMPCR2) ................................................................................... 477
范例程序.............................................................................................................................. 478
比较器的使用(中断方式) .............................................................................................. 478
比较器的使用(查询方式) .............................................................................................. 480
比较器的多路复用应用(比较器+ADC 输入通道)....................................................... 483
比较器作外部掉电检测(掉电过程中应及时保存用户数据到 EEPROM 中) ............ 485
比较器检测工作电压(电池电压) .................................................................................. 486
IAP/EEPROM/DATA-FLASH .......................................................................................... 491
EEPROM 操作时间............................................................................................................. 491
EEPROM 相关的寄存器..................................................................................................... 491
EEPROM 数据寄存器(IAP_DATA) .............................................................................. 491
EEPROM 地址寄存器(IAP_ADDR) ............................................................................. 492
EEPROM 命令寄存器(IAP_CMD) ............................................................................... 492
EEPROM 触发寄存器(IAP_TRIG) ............................................................................... 492
EEPROM 控制寄存器(IAP_CONTR) ........................................................................... 492
EEPROM 擦除等待时间控制寄存器(IAP_TPS).......................................................... 493
EEPROM 大小及地址......................................................................................................... 494
范例程序.............................................................................................................................. 497
EEPROM 基本操作............................................................................................................. 497
使用 MOVC 读取 EEPROM............................................................................................... 500
使用串口送出 EEPROM 数据............................................................................................ 504
ADC 模数转换,内部 1.19V 参考信号源 ........................................................................ 509
ADC 相关的寄存器............................................................................................................. 509
ADC 控制寄存器(ADC_CONTR),PWM 触发 ADC 控制 .......................................... 509
ADC 配置寄存器(ADCCFG) ........................................................................................ 512
ADC 转换结果寄存器(ADC_RES,ADC_RESL)....................................................... 513
ADC 时序控制寄存器......................................................................................................... 514
ADC 相关计算公式............................................................................................................. 515
ADC 速度计算公式............................................................................................................. 515
ADC 转换结果计算公式..................................................................................................... 515
反推 ADC 输入电压计算公式............................................................................................ 516
反推工作电压计算公式 ...................................................................................................... 517
10 位 ADC 静态特性........................................................................................................... 517
12 位 ADC 静态特性........................................................................................................... 517
ADC 应用参考线路图......................................................................................................... 518
一般精度 ADC 参考线路图................................................................................................ 518
高精度 ADC 参考线路图.................................................................................................... 519
范例程序.............................................................................................................................. 520
ADC 基本操作(查询方式)............................................................................................. 520
ADC 基本操作(中断方式)............................................................................................. 522
格式化 ADC 转换结果........................................................................................................ 524
利用 ADC 第 15 通道测量外部电压或电池电压.............................................................. 527
ADC 做电容感应触摸按键................................................................................................. 530
ADC 作按键扫描应用线路图............................................................................................. 543
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- viii -
STC8H 系列技术手册
17.6.7
17.6.8
18
18.1
18.1.1
18.1.2
18.1.3
18.2
18.2.1
18.2.2
18.2.3
18.3
18.4
18.5
18.5.1
18.5.2
18.5.3
18.5.4
18.5.5
18.5.6
19
19.1
19.2
19.2.1
19.2.2
19.2.3
19.2.4
19.3
19.3.1
19.3.2
19.3.3
19.3.4
19.4
19.4.1
19.4.2
19.4.3
19.4.4
19.4.5
19.4.6
20
20.1
20.2
20.3
20.3.1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
检测负电压参考线路图 ...................................................................................................... 544
常用加法电路在 ADC 中的应用........................................................................................ 545
同步串行外设接口 SPI....................................................................................................... 546
SPI 相关的寄存器 ............................................................................................................... 546
SPI 状态寄存器(SPSTAT).............................................................................................. 546
SPI 控制寄存器(SPCTL),SPI 速度控制....................................................................... 546
SPI 数据寄存器(SPDAT) ............................................................................................... 547
SPI 通信方式 ....................................................................................................................... 548
单主单从.............................................................................................................................. 548
互为主从.............................................................................................................................. 548
单主多从.............................................................................................................................. 549
配置 SPI ............................................................................................................................... 550
数据模式.............................................................................................................................. 552
范例程序.............................................................................................................................. 553
SPI 单主单从系统主机程序(中断方式) ....................................................................... 553
SPI 单主单从系统从机程序(中断方式) ....................................................................... 555
SPI 单主单从系统主机程序(查询方式) ....................................................................... 557
SPI 单主单从系统从机程序(查询方式) ....................................................................... 559
SPI 互为主从系统程序(中断方式) ............................................................................... 562
SPI 互为主从系统程序(查询方式) ............................................................................... 564
I2C 总线 ............................................................................................................................... 568
I2C 相关的寄存器................................................................................................................ 568
I2C 主机模式........................................................................................................................ 569
I2C 配置寄存器(I2CCFG),总线速度控制 ................................................................... 569
I2C 主机控制寄存器(I2CMSCR) .................................................................................. 570
I2C 主机辅助控制寄存器(I2CMSAUX)....................................................................... 571
I2C 主机状态寄存器(I2CMSST)................................................................................... 571
I2C 从机模式........................................................................................................................ 573
I2C 从机控制寄存器(I2CSLCR) ................................................................................... 573
I2C 从机状态寄存器(I2CSLST).................................................................................... 573
I2C 从机地址寄存器(I2CSLADR) ................................................................................ 575
I2C 数据寄存器(I2CTXD,I2CRXD)........................................................................... 576
范例程序.............................................................................................................................. 577
I2C 主机模式访问 AT24C256(中断方式) ..................................................................... 577
I2C 主机模式访问 AT24C256(查询方式) ..................................................................... 583
I2C 主机模式访问 PCF8563................................................................................................ 589
I2C 从机模式(中断方式)................................................................................................ 594
I2C 从机模式(查询方式)................................................................................................ 599
测试 I2C 从机模式代码的主机代码................................................................................... 603
16 位高级 PWM 定时器,支持正交编码器..................................................................... 610
简介...................................................................................................................................... 613
主要特性.............................................................................................................................. 613
时基单元.............................................................................................................................. 614
读写 16 位计数器 ................................................................................................................ 614
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- ix -
STC8H 系列技术手册
20.3.2
20.3.3
20.3.4
20.3.5
20.3.6
20.3.7
20.4
20.4.1
20.4.2
20.4.3
20.4.4
20.4.5
20.4.6
20.5
20.5.1
20.5.2
20.5.3
20.5.4
20.5.5
20.5.6
20.5.7
20.5.8
20.5.9
20.5.10
20.6
20.7
20.7.1
20.7.2
20.7.3
20.7.4
20.7.5
20.7.6
20.7.7
20.7.8
20.7.9
20.7.10
20.7.11
20.7.12
20.7.13
20.7.14
20.7.15
20.7.16
20.7.17
20.7.18
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16 位 PWMA_ARR 寄存器的写操作 ................................................................................ 615
预分频器.............................................................................................................................. 615
向上计数模式 ...................................................................................................................... 615
向下计数模式 ...................................................................................................................... 616
中间对齐模式(向上/向下计数) ..................................................................................... 618
重复计数器 .......................................................................................................................... 619
时钟/触发控制器................................................................................................................. 620
预分频时钟(CK_PSC) ................................................................................................... 620
内部时钟源(fMASTER)...................................................................................................... 620
外部时钟源模式 1 .............................................................................................................. 621
外部时钟源模式 2 ............................................................................................................... 621
触发同步.............................................................................................................................. 622
与 PWMB 同步.................................................................................................................... 624
捕获/比较通道..................................................................................................................... 627
16 位 PWMA_CCRi 寄存器的写流程................................................................................ 628
输入模块.............................................................................................................................. 628
输入捕获模式 ...................................................................................................................... 629
输出模块.............................................................................................................................. 630
强制输出模式 ...................................................................................................................... 631
输出比较模式 ...................................................................................................................... 631
PWM 模式 ........................................................................................................................... 632
使用刹车功能(PWMFLT).............................................................................................. 637
在外部事件发生时清除 OCiREF 信号 .............................................................................. 638
编码器接口模式 .................................................................................................................. 639
中断...................................................................................................................................... 640
PWMA/PWMB 寄存器描述 ............................................................................................... 642
输出使能寄存器(PWMx_ENO) .................................................................................... 642
输出附加使能寄存器(PWMx_IOAUX)........................................................................ 643
控制寄存器 1(PWMx_CR1) .......................................................................................... 643
控制寄存器 2(PWMx_CR2),及实时触发 ADC ........................................................... 645
从模式控制寄存器(PWMx_SMCR)................................................................................... 646
外部触发寄存器(PWMx_ETR) .......................................................................................... 648
中断使能寄存器(PWMx_IER) ........................................................................................... 649
状态寄存器 1(PWMx_SR1) ................................................................................................ 649
状态寄存器 2(PWMx_SR2) ................................................................................................ 650
事件产生寄存器(PWMx_EGR)..................................................................................... 650
捕获/比较模式寄存器 1(PWMx_CCMR1) ................................................................... 651
捕获/比较模式寄存器 2(PWMx_CCMR2) ................................................................... 655
捕获/比较模式寄存器 3(PWMx_CCMR3) ................................................................... 656
捕获/比较模式寄存器 4(PWMx_CCMR4) ................................................................... 657
捕获/比较使能寄存器 1(PWMx_CCER1) .................................................................... 658
捕获/比较使能寄存器 2(PWMx_CCER2) .................................................................... 660
计数器高 8 位(PWMx_CNTRH) ................................................................................... 661
计数器低 8 位(PWMx_CNTRL) ................................................................................... 661
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-x-
STC8H 系列技术手册
20.7.19
20.7.20
20.7.21
20.7.22
20.7.23
20.7.24
20.7.25
20.7.26
20.7.27
20.7.28
20.7.29
20.7.30
20.7.31
20.7.32
20.7.33
20.7.34
20.8
20.8.1
20.8.2
20.8.3
20.8.4
20.8.5
20.8.6
20.8.7
20.8.8
20.8.9
20.8.10
20.8.11
20.8.12
20.8.13
20.8.14
20.8.15
20.8.16
21
21.1
21.1.1
21.1.2
21.1.3
21.1.4
21.2
21.2.1
21.2.2
21.2.3
21.2.4
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
预分频器高 8 位(PWMx_PSCRH),输出频率计算公式 .............................................. 661
预分频器低 8 位(PWMx_PSCRL) ................................................................................ 661
自动重装载寄存器高 8 位(PWMx_ARRH).................................................................. 662
自动重装载寄存器低 8 位(PWMx_ARRL) .................................................................. 662
重复计数器寄存器(PWMx_RCR)................................................................................. 662
捕获/比较寄存器 1/5 高 8 位(PWMx_CCR1H)............................................................ 662
捕获/比较寄存器 1/5 低 8 位(PWMx_CCR1L) ............................................................ 662
捕获/比较寄存器 2/6 高 8 位(PWMx_CCR2H)............................................................ 663
捕获/比较寄存器 2/6 低 8 位(PWMx_CCR2L) ............................................................ 663
捕获/比较寄存器 3/7 高 8 位(PWMx_CCR3H)............................................................ 663
捕获/比较寄存器 3/7 低 8 位(PWMx_CCR3L) ............................................................ 663
捕获/比较寄存器 4/8 高 8 位(PWMx_CCR4H)............................................................ 663
捕获/比较寄存器 4/8 低 8 位(PWMx_CCR4L) ............................................................ 663
刹车寄存器(PWMx_BKR) ............................................................................................ 664
死区寄存器(PWMx_DTR)............................................................................................. 665
输出空闲状态寄存器(PWMx_OISR)............................................................................ 665
范例程序.............................................................................................................................. 666
六步 PWM 驱动无刷直流马达(带 HALL) ........................................................................ 666
BLDC 无刷直流电机驱动(无 HALL) ................................................................................ 677
正交编码器模式 .................................................................................................................. 687
单脉冲模式(触发控制脉冲输出) .................................................................................. 689
门控模式(输入电平使能计数器) .................................................................................. 691
外部时钟模式 ...................................................................................................................... 693
输入捕获模式测量脉冲周期(捕获上升沿到上升沿或者下降沿到下降沿)............... 695
输入捕获模式测量脉冲高电平宽度(捕获上升沿到下降沿) ...................................... 697
输入捕获模式测量脉冲低电平宽度(捕获下降沿到上升沿) ...................................... 698
输入捕获模式同时测量脉冲周期和占空比 ...................................................................... 699
带死区控制的 PWM 互补输出........................................................................................... 700
PWM 端口做外部中断(下降沿中断或者上升沿中断)................................................ 702
输出任意周期和任意占空比的波形 .................................................................................. 703
使用 PWM 的 CEN 启动 PWMA 定时器,实时触发 ADC ............................................. 704
利用 PWM 实现 16 位 DAC 的参考线路图 ...................................................................... 706
利用 PWM 实现互补 SPWM.............................................................................................. 706
USB 通用串行总线 ..............................................................................................................711
USB 相关的寄存器 ..............................................................................................................711
USB 控制寄存器(USBCON) ..........................................................................................711
USB 时钟控制寄存器(USBCLK).................................................................................. 712
USB 间址地址寄存器(USBADDR) .............................................................................. 713
USB 间址数据寄存器(USBDATA) ............................................................................... 713
USB 控制器寄存器(SIE) ............................................................................................... 714
USB 功能地址寄存器(FADDR) .................................................................................... 715
USB 电源控制寄存器(POWER) ................................................................................... 715
USB 端点 IN 中断标志位(INTRIN1)............................................................................ 715
USB 端点 OUT 中断标志位(INTROUT1).................................................................... 716
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- xi -
STC8H 系列技术手册
21.2.5
21.2.6
21.2.7
21.2.8
21.2.9
21.2.10
21.2.11
21.2.12
21.2.13
21.2.14
21.2.15
21.2.16
21.2.17
21.2.18
21.2.19
21.2.20
21.3
21.3.1
22
22.1
22.2
22.3
22.4
22.5
22.5.1
22.5.2
22.5.3
22.5.4
22.5.5
22.5.6
22.5.7
22.5.8
22.5.9
22.6
23
23.1
23.2
23.2.1
23.2.2
23.2.3
23.2.4
23.2.5
23.2.6
23.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
USB 电源中断标志(INTRUSB) .................................................................................... 716
USB 端点 IN 中断允许寄存器(INTRIN1E) ................................................................. 717
USB 端点 OUT 中断允许寄存器(INTROUT1E) ......................................................... 717
USB 电源中断允许寄存器(INTRUSB) ........................................................................ 717
USB 数据帧号寄存器(FRAMEn)) ................................................................................ 718
USB 端点索引寄存器(INDEX) ..................................................................................... 718
IN 端点的最大数据包大小(INMAXP) ......................................................................... 718
USB 端点 0 控制状态寄存器(CSR0)............................................................................ 718
IN 端点控制状态寄存器 1(INCSR1) ............................................................................ 719
IN 端点控制状态寄存器 2(INCSR2) ............................................................................ 720
OUT 端点的最大数据包大小(OUTMAXP) ................................................................. 720
OUT 端点控制状态寄存器 1(OUTCSR1) .................................................................... 720
OUT 端点控制状态寄存器 2(OUTCSR2) .................................................................... 721
USB 端点 0 的 OUT 长度(COUNT0) ........................................................................... 721
USB 端点的 OUT 长度(OUTCOUNTn))...................................................................... 722
USB 端点的 FIFO 数据访问寄存器(FIFOn) ................................................................ 722
范例程序.............................................................................................................................. 723
HID 人机接口设备范例 ...................................................................................................... 723
触摸按键控制器,先工程样片,可少量送样 .................................................................. 734
触摸按键控制器内部框架图 .............................................................................................. 735
低功耗触摸唤醒 .................................................................................................................. 735
仅做触摸按键功能时的操作步骤 ...................................................................................... 736
低功耗触摸按键唤醒功能的操作步骤 .............................................................................. 736
触摸按键相关的寄存器 ...................................................................................................... 736
触摸按键使能寄存器(TSCHENn)) ............................................................................... 737
触摸按键配置寄存器(TSCFGn).................................................................................... 738
触摸按键低电模式唤醒时间控制寄存器(TSWUTC).................................................. 738
触摸按键控制寄存器(TSCTRL) ................................................................................... 739
触摸按键状态寄存器 1(TSSTA1) ................................................................................. 740
触摸按键状态寄存器 2(TSSTA2) ................................................................................. 741
触摸按键时间控制寄存器(TSRT)................................................................................. 742
触摸按键数据寄存器(TSDAT)...................................................................................... 742
触摸按键门槛值寄存器(TSTH) .................................................................................... 742
基本参考电路图以及注意事项 .......................................................................................... 743
LED 驱动器......................................................................................................................... 744
LED 驱动器内部框架图 ..................................................................................................... 744
LED 驱动相关的寄存器 ..................................................................................................... 745
COM 使能寄存器(COMEN).......................................................................................... 746
SEG 使能寄存器(SEGEN)............................................................................................. 746
LED 控制寄存器(LEDCTRL) ....................................................................................... 746
LED 时钟分频寄存器(LEDCKS).................................................................................. 747
LED 共阳模式数据寄存器(COMn_DA)....................................................................... 747
LED 共阴模式数据寄存器(COMn_DC)....................................................................... 747
LED 共阴模式(LEDMODE = 00).................................................................................. 749
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- xii -
STC8H 系列技术手册
23.4
23.5
23.6
23.7
23.8
23.9
23.10
23.10.1
24
24.1
24.1.1
24.1.2
24.1.3
24.1.4
24.1.5
24.1.6
24.1.7
25
25.1
25.1.1
25.1.2
25.1.3
25.2
25.2.1
25.2.2
26
26.1
26.1.1
26.1.2
26.1.3
26.1.4
26.2
附录 A
附录 B
附录 C
附录 D
附录 E
附录 F
F.1
F.2
F.3
F.3.1
F.3.2
F.3.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
LED 共阳模式(LEDMODE = 01).................................................................................. 750
LED 共阴/共阳模式(LEDMODE = 10) ........................................................................ 751
触摸按键与 LED 分时复用 I/O .......................................................................................... 752
共阴模式参考电路图 .......................................................................................................... 754
共阳模式参考电路图 .......................................................................................................... 754
共阴/共阳模式参考电路图 ................................................................................................. 755
范例程序.............................................................................................................................. 756
共阴/共阳模式驱动 16 个 7 段数码管 ............................................................................... 756
RTC 实时时钟..................................................................................................................... 759
RTC 相关的寄存器 ............................................................................................................. 759
RTC 控制寄存器(RTCCR)............................................................................................. 760
RTC 配置寄存器(RTCCFG) .......................................................................................... 760
RTC 中断使能寄存器(RTCIEN) ................................................................................... 760
RTC 中断请求寄存器(RTCIF) ...................................................................................... 761
RTC 闹钟设置寄存器 ......................................................................................................... 761
RTC 实时时钟初始值设置寄存器...................................................................................... 761
RTC 实时时钟计数寄存器.................................................................................................. 762
增强型双数据指针.............................................................................................................. 763
相关的特殊功能寄存器 ...................................................................................................... 763
第 1 组 16 位数据指针寄存器(DPTR0) ........................................................................ 763
第 2 组 16 位数据指针寄存器(DPTR1) ........................................................................ 763
数据指针控制寄存器(DPS)........................................................................................... 763
范例程序.............................................................................................................................. 766
示例代码 1 ........................................................................................................................... 766
示例代码 2 ........................................................................................................................... 767
MDU16 硬件 16 位乘除法器 ............................................................................................. 769
相关的特殊功能寄存器 ...................................................................................................... 769
操作数 1 数据寄存器(MD0~MD3) ............................................................................. 769
操作数 2 数据寄存器(MD4~MD5) ............................................................................. 769
MDU 模式控制寄存器(ARCON),运算所需时钟数 .................................................... 770
MDU 操作控制寄存器(OPCON) .................................................................................. 770
范例程序.............................................................................................................................. 772
编译器(汇编器)/仿真器使用指南................................................................................. 774
如何让传统的 8051 单片机学习板可仿真 ........................................................................ 779
STC-USB 驱动程序安装说明 ............................................................................................ 781
USB 下载步骤演示 ............................................................................................................. 844
RS485 自动控制或 I/O 口控制线路图 .............................................................................. 848
STC 工具使用说明书 ......................................................................................................... 849
概述...................................................................................................................................... 849
系统可编程(ISP)流程说明 ............................................................................................ 849
USB 型联机/脱机下载工具 U8W/U8W-Mini .................................................................... 850
安装 U8W/U8W-Mini 驱动程序......................................................................................... 852
U8W 的功能介绍 ................................................................................................................ 855
U8W 的在线联机下载使用说明 ........................................................................................ 856
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- xiii -
STC8H 系列技术手册
F.3.4
F.3.5
F.3.6
F.3.7
F.3.8
F.3.9
F.3.10
F.4
F.4.1
F.4.2
F.4.3
F.4.4
F.4.5
F.5
F.5.1
F.5.2
附录 G
附录 H
附录 I
附录 J
附录 K
附录 L
附录 M
附录 N
附录 O
附录 P
P.1
P.2
P.3
P.4
P.5
附录 Q
Q.1
Q.2
附录 R
附录 S
附录 T
附录 U
附录 V
附录 W
附录 X
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
U8W 的脱机下载使用说明 ................................................................................................ 859
U8W-Mini 的功能介绍 ....................................................................................................... 867
U8W-Mini 的在线联机下载使用说明................................................................................ 868
U8W-Mini 的脱机下载使用说明........................................................................................ 869
制作/更新 U8W/U8W-Mini................................................................................................. 875
U8W/U8W-Mini 设置直通模式(可用于仿真) .............................................................. 877
U8W/U8W-Mini 的参考电路.............................................................................................. 877
STC 通用 USB 转串口工具 ................................................................................................ 879
STC 通用 USB 转串口工具外观图 .................................................................................... 879
STC 通用 USB 转串口工具布局图 .................................................................................... 880
STC 通用 USB 转串口工具驱动安装 ................................................................................ 881
使用 STC 通用 USB 转串口工具下载程序到 MCU ......................................................... 882
使用 STC 通用 USB 转串口工具仿真用户代码 ............................................................... 884
应用线路图 .......................................................................................................................... 891
U8W 工具应用参考线路图 ................................................................................................ 891
STC 通用 USB 转串口工具应用参考线路图 .................................................................... 891
U8W 下载工具中 RS485 部分线路图 ............................................................................... 893
运行用户程序时收到用户命令后自动启动 ISP 下载(不停电) ....................................... 894
使用 STC 的 IAP 系列单片机开发自己的 ISP 程序 ....................................................... 896
用户程序复位到系统区进行 ISP 下载的方法(不停电).............................................. 908
使用第三方 MCU 对 STC8H 系列单片机进行 ISP 下载范例程序 ............................... 914
使用第三方应用程序调用 STC 发布项目程序对单片机进行 ISP 下载 ........................ 922
STC8H 系列正交解码示例(成都逐飞科技友情提供) ................................................ 926
在 Keil 中建立多文件项目的方法..................................................................................... 930
关于中断号大于 31 在 Keil 中编译出错的处理............................................................... 934
电气特性.............................................................................................................................. 944
绝对最大额定值 .................................................................................................................. 944
直流特性(3.3V) .............................................................................................................. 945
直流特性(5.0V) .............................................................................................................. 947
内部 IRC 温漂特性(参考温度 25℃)............................................................................. 948
低压复位门槛电压(测试温度 25℃) ............................................................................. 948
应用注意事项...................................................................................................................... 949
关于 STC8H 系列 IO 口的注意事项.................................................................................. 949
STC8H2K64T 系列 ............................................................................................................. 949
触摸按键的 PCB 设计指导 ................................................................................................ 950
QFN/DFN 封装元器件焊接方法 ....................................................................................... 952
STC8H 系列单片机取代 STC15 系列的注意事项 .......................................................... 955
STC8H 系列单片机取代 STC8A/8F 系列的注意事项 .................................................... 957
更新记录.............................................................................................................................. 958
官方网址说明...................................................................................................................... 963
产品授权书.......................................................................................................................... 964
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- xiv -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1 概述
STC8H 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗
为目标的 8051 单片机,在相同的工作频率下,STC8H 系列单片机比传统的 8051 约快 12 倍(速度快
11.2~13.2 倍),依次按顺序执行完全部的 111 条指令,STC8H 系列单片机仅需 147 个时钟,而传统 8051
则需要 1944 个时钟。STC8H 系列单片机是 STC 生产的单时钟/机器周期(1T)的单片机,是宽电压/高速/
高可靠/低功耗/强抗静电/较强抗干扰的新一代 8051 单片机,超级加密。指令代码完全兼容传统 8051。
MCU 内部集成高精度 R/C 时钟(±0.3%,常温下+25℃),-1.38%~+1.42%温飘(-40℃~+85℃) ,
-0.88%~+1.05%温飘(-20℃~+65℃)。ISP 编程时 4MHz~35MHz 宽范围可设置(注意:温度范围为-40
℃~+85℃时,最高频率须控制在 35MHz 以下),可彻底省掉外部昂贵的晶振和外部复位电路(内部已集
成高可靠复位电路,ISP 编程时 4 级复位门槛电压可选)。
MCU 内部有 3 个可选时钟源:内部高精度 IRC 时钟(可适当调高或调低)、内部 32KHz 的低速
IRC、外部 4M~33M 晶振或外部时钟信号。用户代码中可自由选择时钟源,时钟源选定后可再经过 8-bit
的分频器分频后再将时钟信号提供给 CPU 和各个外设(如定时器、串口、SPI 等)。
MCU 提供两种低功耗模式:IDLE 模式和 STOP 模式。IDLE 模式下,MCU 停止给 CPU 提供时钟,
CPU 无时钟,CPU 停止执行指令,但所有的外设仍处于工作状态,此时功耗约为 1.3mA(6MHz 工作
频率)。STOP 模式即为主时钟停振模式,即传统的掉电模式/停电模式/停机模式,此时 CPU 和全部外
设都停止工作,功耗可降低到 0.6uA@Vcc=5.0V,0.4uA@Vcc=3.3V。
掉电模式可以使用 INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、T1(P3.5)、
T2(P1.2) 、 T3(P0.4) 、 T4(P0.6) 、 RXD(P3.0/P3.6/P1.6/P4.3) 、 RXD2(P1.4/P4.6) 、 RXD3(P0.0/P5.0) 、
RXD4(P0.2/P5.2)、I2C_SDA(P1.4/P2.4/P3.3)以及比较器中断、低压检测中断、掉电唤醒定时器唤醒。
MCU 提供了丰富的数字外设(串口、定时器、高级 PWM 以及 I2C、SPI、USB)接口与模拟外设
(超高速 ADC、比较器),可满足广大用户的设计需求。
STC8H 系列单片机内部集成了增强型的双数据指针。通过程序控制,可实现数据指针自动递增或递
减功能以及两组数据指针的自动切换功能。
产品线
I/O
UART
定时器
ADC
STC8H1K08-20Pin 系列
17
2
3
9CH*10B
STC8H1K28-32Pin 系列
29
2
5
STC8H3K64S4-48Pin 系列
45
4
STC8H3K64S2-48Pin 系列
45
STC8H8K64U-64/48PIN 系列
STC8H2K64T-48Pin 系列
深圳国芯人工智能有限公司
高级
Touch
Key
RTC
I/O
I2C
●
●
●
●
12CH*10B
●
●
●
●
5
12CH*12B
●
●
●
●
●
●
2
5
12CH*12B
●
●
●
●
●
●
60
4
5
15CH*12B
●
●
●
●
44
4
5
15CH*12B
●
●
●
●
●
MDU16
驱动
SPI
国内分销商电话: 0513-5501 2928/2929/2966
USB
LED
CMP
PWM
中断
●
●
●
●
传真: 0513-5501 2926/2956/2947
●
●
-1-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2 特性、价格及管脚
2.1 STC8H1K08-20Pin系列
2.1.1
特性及价格
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,9 通道)
是 ¥0.90 ¥0.95
STC8H1K12 1.9-5.5 12K 256 1K
2
IAP 17
2
有
有
3
8
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.15 ¥1.20
STC8H1K17 1.9-5.5 17K 256 1K
2
IAP 17
2
有
有
3
8
有 10 位 有
有
有 4级 有
是
有
是
是
-
TSSOP20
使用)
D/A
-
QFN20
是
主力产品供货信息
价格及封装
是
本身就可在线仿真
直接下载
USB
支持软件
是
支持
有
以下可调)追频
36MHz
是
看门狗 复位定时器
有 4级 有
,可作外部掉电检测)
A/D
有
可当 路
PWM
8
有 10 位 有
掉电唤醒专用定时器
下载
RS485
程序加密后传输(防拦截)
可设置下次更新程序需口令
可对外输出时钟及复位
内部高精准时钟(
内部高可靠复位(可选复位门槛电压)
内部低压检测中断并可掉电唤醒
( 路
ADC
8
8
外部管脚也可掉电唤醒)
T0-T2
3
定时器 互补对称死区控制
PWM
I2 C
比较器(可当 路
1
路
9 高速
位高级
16
SPI
定时器 计/数器(
口最多数量
I/O
有
串口并可掉电唤醒
万次 字节
EEPROM 10
强大的双
有
SRAM字节
2
万次 字节
10
17
8051 RAM字节
可增可减
DPTR
,内部大容量扩展
xdata
程序存储器
Flash
,内部传统
idata
4K
工作电压( )
V
2
单片机型号
STC8H1K08 1.9-5.5 8K 256 1K
现
货
¥1.15 ¥1.20
注:以上的单价为 10K 及以上订货量的价格,量小则每片需增加 0.1 元人民币。当订货的总额达到或高于 3000 元时,
可免运费发货,否则需要由客户承担运费。零售 10 片起售。
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
17 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 12K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-2-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1024 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.35%~+1.30%温漂(全温度范围,-40℃~85℃)
-0.76%~+0.98%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效)
上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上
电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时,
芯片解除复位状态。
复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4
管脚为复位脚时,复位电平为低电平)
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.0V(实测为 1.90V~2.04V)、2.4V(实测为 2.30V~2.50V)、
2.7V(实测为 2.61V~2.82V)、3.0V(实测为 2.90V~3.13V)。
每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向
下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 17 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支
持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定
时器 2、串口 1、串口 2、ADC 模数转换、LVD 低压检测、SPI、I2C、比较器、PWMA、PWMB
提供 4 级中断优先级
时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、
T1(P3.5)、T2(P1.2)、RXD(P3.0/P3.6/P1.6)、RXD2(P1.4)、I2C_SDA(P1.4/ P3.3)以及比较器中断、低压检
测中断、掉电唤醒定时器唤醒。
数字外设
3 个 16 位定时器:定时器 0、定时器 1、定时器 2,其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功
能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
2 个高速串口:串口 1、串口 2,波特率时钟源最快可为 FOSC/4
8 路/2 组高级 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还支持 16 位定时器、8
个外部中断、8 路外部捕获测量脉宽等功能
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
模拟外设
超高速 ADC,支持 10 位高精度 9 通道(通道 0~通道 1、通道 8~通道 14)的模数转换,速度最快能达到
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-3-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
500K(每秒进行 50 万次 ADC 转换)
ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)
比较器,一组比较器(比较器的正端可选择 CMP+端口和所有的 ADC 输入端口,所以比较器可当作多路
比较器进行分时复用)
DAC:8 路高级 PWM 定时器可当 8 路 DAC 使用
GPIO
最多可达 17 个 GPIO:P1.0~P1.7、P3.0~P3.7、P5.4
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口时必须先设置 IO
口模式。另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
TSSOP20、QFN20
2.1.2
管脚图
1
2
3
4
5
6
7
8
9
10
TSSOP20
T2/SS/PWM2P/P1.2
T2CLKO/MOSI/PWM2N/P1.3
I2CSDA/MISO/PWM3P/P1.4
I2CSCL/SCLK/PWM3N/P1.5
XTALO/MCLKO_2/RxD_3/PWM4P/P1.6
XTALI/TxD_3/PWM5_2/PWM4N/P1.7
MCLKO/RST/PWM6_2/P5.4
Vcc/AVcc
MCU-VCC
22u
0.1u ADC_VRef+
Gnd/AGnd
20
19
18
17
16
15
14
13
12
11
P1.1/ADC1/TxD2/PWM1N
P1.0/ADC0/RxD2/PWM1P
P3.7/INT3/TxD_2/CMP+
P3.6/ADC14/INT2/RxD_2/CMPP3.5/ADC13/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P3.4/ADC12/T0/T1CLKO/MOSI_4/PWM4P_2/PWM8_2/CMPO
P3.3/ADC11/INT1/MISO_4/I2CSDA_4/PWM4N_2/PWM7_2
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4/PWMETI/PWMETI2
P3.1/ADC9/TxD
P3.0/ADC8/RxD/INT4
注意:
1、ADC的外部参考电源管脚ADC_VRef+,一定不能浮空,
必须接外部参考电源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时P3.0/P3.1/P3.2
不可同时为低电平
注意:
1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口
时必须先设置 I/O 口模式
2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入
模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
3、当使能 P5.4 口为复位脚时,复位电平为低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-4-
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P3.7/INT3/TxD_2/CMP+
P3.6/ADC14/INT2/RxD_2/CMPP3.5/ADC13/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P3.4/ADC12/T0/T1CLKO/MOSI_4/PWM4P_2/PWM8_2/CMPO
P3.3/ADC11/INT1/MISO_4/I2CSDA_4/PWM4N_2/PWM7_2
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
15
14
13
12
11
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电源
或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
16
17
18
19
20
QFN20
10
9
8
7
6
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4/PWMETI/PWMETI2
P3.1/ADC9/TxD
P3.0/ADC8/RxD/INT4
Gnd/AGnd
ADC_VRef+
1
2
3
4
5
PWM1P/RxD2/ADC0/P1.0
I2CSDA/MISO/PWM3P/P1.4
T2CLKO/MOSI/PWM2N/P1.3
T2/SS/PWM2P/P1.2
PWM1N/TxD2/ADC1/P1.1
I2CSCL/SCLK/PWM3N/P1.5
XTALO/MCLKO_2/RxD_3/PWM4P/P1.6
XTALI/TxD_3/PWM5_2/PWM4N/P1.7
MCLKO/RST/PWM6_2/P5.4
Vcc/AVcc
MCU-VCC
深圳国芯人工智能有限公司
22u
0.1u
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-5-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
TSSOP20
2
3
4
5
6
7
研发顾问: 13922805190
管脚说明
2.1.3
1
技术支持: 13922829991
名称
类型
说明
P1.2
I/O
标准 IO 口
SS
I/O
SPI 从机选择
T2
I
PWM2P
I/O
PWMB 捕获输入和脉冲输出正极
P1.3
I/O
标准 IO 口
MOSI
I/O
SPI 主机输出从机输入
T2CLKO
O
定时器 2 时钟分频输出
PWM2N
I/O
PWMB 的捕获输入和脉冲输出负极
P1.4
I/O
标准 IO 口
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
PWM3P
I/O
PWM3 捕获输入和脉冲输出正极
P1.5
I/O
标准 IO 口
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
PWM3N
I/O
PWM3 的捕获输入和脉冲输出负极
P1.6
I/O
标准 IO 口
RxD_3
I
PWM4P
I/O
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
TxD_3
O
PWM4N
I/O
PWM4 的捕获输入和脉冲输出负极
PWM5_2
I/O
PWM5 捕获输入和脉冲输出正极
XTALI
I
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
PWM6_2
I/O
PWM6 捕获输入和脉冲输出正极
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源
ADC_VRef+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
QFN20
19
18
17
1
2
3
4
8
5
9
6
10
7
深圳国芯人工智能有限公司
定时器 2 外部时钟输入
串口 1 的接收脚
PWM4 捕获输入和脉冲输出正极
标准 IO 口
串口 1 的发送脚
外部晶振/外部时钟的输入脚
ADC 外部参考电压源输入脚,要求不高时可直接
接 MCU 的 VCC
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-6-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
TSSOP20
11
12
13
14
15
16
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.0
I/O
ADC8
I
ADC 模拟输入通道 8
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
ADC9
I
ADC 模拟输入通道 9
TxD
O
串口 1 的发送脚
P3.2
I/O
ADC10
I
ADC 模拟输入通道 10
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
PWMETI
I
PWM 外部触发输入脚
PWMETI2
I
PWM 外部触发输入脚 2
P3.3
I/O
ADC11
I
ADC 模拟输入通道 11
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 的数据线
PWM4N_4
I/O
PWM4 的捕获输入和脉冲输出负极
PWM7_2
I/O
PWM7 捕获输入和脉冲输出正极
P3.4
I/O
标准 IO 口
ADC12
I
ADC 模拟输入通道 12
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
PWM4P_4
I/O
PWM4 捕获输入和脉冲输出正极
PWM8_2
I/O
PWM8 捕获输入和脉冲输出正极
CMPO
O
比较器输出
P3.5
I/O
标准 IO 口
ADC13
I
ADC 模拟输入通道 13
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I/O
PWMFLT
I
PWMA 的外部异常检测脚
PWMFLT2
I
PWMB 的外部异常检测脚
QFN20
8
9
10
11
12
13
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
标准 IO 口
SPI 从机选择
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-7-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
TSSOP20
17
18
19
20
技术支持: 13922829991
名称
类型
P3.6
I/O
ADC14
I
ADC 模拟输入通道 14
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
P1.0
I/O
ADC0
I
ADC 模拟输入通道 0
RxD2
O
串口 2 的接收脚
PWM1P
I/O
PWMA 的捕获输入和脉冲输出正极
P1.1
I/O
标准 IO 口
ADC1
I
ADC 模拟输入通道 1
TxD2
O
串口 2 的发送脚
PWM1N
I/O
研发顾问: 13922805190
说明
QFN20
14
15
16
20
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
PWMA 的捕获输入和脉冲输出负极
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-8-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.2 STC8H1K28-32Pin系列
特性及价格
2.2.1
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,12 通道)
有
有 4级 有
是
有
是
是
是
是 ¥1.4 ¥1.4
STC8H1K24 1.9-5.5 24K 256 1K
2
4K
29
2
有
有
5
8
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.5 ¥1.5
STC8H1K28 1.9-5.5 28K 256 1K
2
IAP 29
2
有
有
5
8
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.6 ¥1.6
STC8H1K33 1.9-5.5 33K 256 1K
2
IAP 29
2
有
有
5
8
有 10 位 有
有
有 4级 有
是
有
是
是
-
使用)
D/A
-
QFN32
有 10 位 有
LQFP32
8
主力产品供货信息
价格及封装
直接下载
USB
5
以下可调)追频
36MHz
有
可当 路
PWM
8
下载
RS485
本身就可在线仿真
支持软件
支持
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
内部高可靠复位(可选复位门槛电压)
内部高精准时钟(
看门狗 复位定时器
内部低压检测中断并可掉电唤醒
,可作外部掉电检测)
A/D
掉电唤醒专用定时器
( 路
ADC
8
定时器 互补对称死区控制
PWM
I2 C
外部管脚也可掉电唤醒)
T0-T4
比较器(可当 路
1
路高速
12
位高级
16
定时器 计/数器(
有
可增可减
DPTR
2
SRAM字节
12K 29
8051 RAM字节
2
万次 字节
10
SPI
串口并可掉电唤醒
口最多数量
I/O
万次 字节
EEPROM 10
强大的双
,内部传统
idata
,内部大容量扩展
xdata
程序存储器
Flash
工作电压( )
V
单片机型号
STC8H1K16 1.9-5.5 16K 256 1K
现
货
¥1.6 ¥1.6
注:以上的单价为 10K 及以上订货量的价格,量小则每片需增加 0.1 元人民币。当订货的总额达到或高于 3000 元时,
可免运费发货,否则需要由客户承担运费。零售 10 片起售。
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
19 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 28K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
1024 字节内部扩展 RAM(内部 XDATA)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-9-
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.35%~+1.30%温漂(全温度范围,-40℃~85℃)
-0.76%~+0.98%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效)
上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上
电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时,
芯片解除复位状态。
复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4
管脚为复位脚时,复位电平为低电平)
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.0V(实测为 1.90V~2.04V)、2.4V(实测为 2.30V~2.50V)、
2.7V(实测为 2.61V~2.82V)、3.0V(实测为 2.90V~3.13V)。
每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向
下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 19 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支
持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定
时器 2、定时器 3、定时器 4、串口 1、串口 2、ADC 模数转换、LVD 低压检测、SPI、I2C、比较器、PWMA、
PWMB
提供 4 级中断优先级
时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、
T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6)、RXD2(P1.4)、I2C_SDA(P1.4/P2.4/P3.3)
以及比较器中断、低压检测中断、掉电唤醒定时器唤醒。
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
2 个高速串口:串口 1、串口 2,波特率时钟源最快可为 FOSC/4
8 路/2 组高级 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还支持 16 位定时器、8
个外部中断、8 路外部捕获测量脉宽等功能
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
模拟外设
超高速 ADC,支持 10 位高精度 12 通道(通道 0~通道 11)的模数转换,速度最快能达到 500K(每秒进
行 50 万次 ADC 转换)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 10 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)
比较器,一组比较器(比较器的正端可选择 CMP+端口和所有的 ADC 输入端口,所以比较器可当作多路
比较器进行分时复用)
DAC:8 路高级 PWM 定时器可当 8 路 DAC 使用
GPIO
最多可达 29 个 GPIO:P0.0~P0.3、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7、P5.4
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口时必须先设置 IO
口模式。另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP32、QFN32
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 11 -
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
管脚图
P2.3/MOSI_2/PWM2N_2/PWM8
P2.2/SS_2/PWM2P_2/PWM7
P2.1/PWM1N_2/PWM6
P2.0/PWM1P_2/PWM5
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
2.2.2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
24
23
22
21
20
19
18
17
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电
源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
LQFP32
QFN32
1
2
3
4
5
6
7
8
25
26
27
28
29
30
31
32
16
15
14
13
12
11
10
9
P3.3/INT1/MISO_4/I2CSDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/I2CSCL_4/PWMETI/PWMETI2
P3.1/TxD
P3.0/RxD/INT4
Gnd/AGnd
MCU-VCC
ADC_VRef+
Vcc/AVcc
P5.4/RST/MCLKO/PWM6_2 22u
0.1u
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
T2/SS/PWM2P/ADC2/P1.2
T2CLKO/MOSI/PWM2N/ADC3/P1.3
I2CSDA/MISO/PWM3P/ADC4/P1.4
I2CSCL/SCLK/PWM3N/ADC5/P1.5
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/TxD_3/PWM5_2/PWM4N/ADC7/P1.7
PWM3P_2/I2CSDA_2/MISO_2/P2.4
PWM3N_2/I2CSCL_2/SCLK_2/P2.5
PWM4P_2/P2.6
PWM4N_2/P2.7
T3/PWM5_3/ADC8/P0.0
T3CLKO/PWM6_3/ADC9/P0.1
T4/PWM7_3/ADC10/P0.2
T4CLKO/PWM8_3//ADC11/P0.3
注意:
1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口
时必须先设置 I/O 口模式
2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入
模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
3、当使能 P5.4 口为复位脚时,复位电平为低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 12 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
2.2.3
编号
名称
类型
说明
P1.0
I/O
RxD2
O
串口 2 的接收脚
ADC0
I
ADC 模拟输入通道 0
PWM1P
I/O
PWMA 的捕获输入和脉冲输出正极
P1.1
I/O
标准 IO 口
TxD2
O
串口 2 的发送脚
ADC1
I
ADC 模拟输入通道 1
PWM1N
I/O
PWMA 的捕获输入和脉冲输出负极
P1.2
I/O
标准 IO 口
ADC2
I
SS
I/O
T2
I
PWM2P
I/O
PWMB 捕获输入和脉冲输出正极
P1.3
I/O
标准 IO 口
ADC3
I
ADC 模拟输入通道 3
MOSI
I/O
SPI 主机输出从机输入
T2CLKO
O
定时器 2 时钟分频输出
PWM2N
I/O
PWMB 的捕获输入和脉冲输出负极
P1.4
I/O
标准 IO 口
ADC4
I
ADC 模拟输入通道 4
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
PWM3P
I/O
PWM3 捕获输入和脉冲输出正极
P1.5
I/O
标准 IO 口
ADC5
I
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
PWM3N
I/O
PWM3 的捕获输入和脉冲输出负极
LQFP32/QFN32
1
2
3
4
5
6
深圳国芯人工智能有限公司
标准 IO 口
ADC 模拟输入通道 2
SPI 从机选择
定时器 2 外部时钟输入
ADC 模拟输入通道 5
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 13 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.6
I/O
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
PWM4P
I/O
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
PWM4N
I/O
PWM4 的捕获输入和脉冲输出负极
PWM5_2
I/O
PWM5 捕获输入和脉冲输出正极
XTALI
I
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
PWM6_2
I/O
PWM6 捕获输入和脉冲输出正极
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源
ADC_VRef+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
P3.0
I/O
标准 IO 口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
TxD
O
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
PWMETI
I
PWM 外部触发输入脚
PWMETI2
I
PWM 外部触发输入脚 2
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 的数据线
PWM4N_4
I/O
PWM4 的捕获输入和脉冲输出负极
PWM7_2
I/O
PWM7 捕获输入和脉冲输出正极
LQFP32/QFN32
7
8
9
10
11
12
13
14
15
16
深圳国芯人工智能有限公司
标准 IO 口
PWM4 捕获输入和脉冲输出正极
标准 IO 口
外部晶振/外部时钟的输入脚
ADC 外部参考电压源输入脚,要求不高时可直接
接 MCU 的 VCC
串口 1 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 14 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.4
I/O
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
PWM4P_4
I/O
PWM4 捕获输入和脉冲输出正极
PWM8_2
I/O
PWM8 捕获输入和脉冲输出正极
CMPO
O
比较器输出
P3.5
I/O
标准 IO 口
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I/O
PWMFLT
I
PWMA 的外部异常检测脚
PWMFLT2
I
PWMB 的外部异常检测脚
P3.6
I/O
标准 IO 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
P2.0
I/O
标准 IO 口
PWM1P_2
I/O
PWMA 的捕获输入和脉冲输出正极
PWM5
I/O
PWM5 捕获输入和脉冲输出正极
P2.1
I/O
标准 IO 口
PWM1N_2
I/O
PWMA 的捕获输入和脉冲输出负极
PWM6
I/O
PWM6 捕获输入和脉冲输出正极
P2.2
I/O
标准 IO 口
PWM2P_2
I/O
PWMB 的捕获输入和脉冲输出正极
PWM7
I/O
PWM7 捕获输入和脉冲输出正极
SS_2
I/O
SPI 从机选择
P2.3
I/O
标准 IO 口
PWM2N_2
I/O
PWMB 的捕获输入和脉冲输出负极
PWM8
I/O
PWM8 捕获输入和脉冲输出正极
MOSI_2
I/O
SPI 主机输出从机输入
LQFP32/QFN32
17
18
19
20
21
22
23
24
深圳国芯人工智能有限公司
标准 IO 口
SPI 从机选择
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 15 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.4
I/O
标准 IO 口
PWM3P_2
I/O
PWM3 的捕获输入和脉冲输出正极
MISO_2
I/O
SPI 主机输入从机输出
SDA_2
I/O
I2C 的数据线
P2.5
I/O
标准 IO 口
PWM3N_2
I/O
PWM3 的捕获输入和脉冲输出负极
SCLK_2
I/O
SPI 的时钟脚
SCL_2
I/O
I2C 的时钟线
P2.6
I/O
标准 IO 口
PWM4P_2
I/O
PWM4 的捕获输入和脉冲输出正极
P2.7
I/O
标准 IO 口
PWM4N_2
I/O
PWM4 的捕获输入和脉冲输出负极
P0.0
I/O
标准 IO 口
ADC8
I
ADC 模拟输入通道 8
RxD3
I
串口 3 的接收脚
T3
I
定时器 3 外部时钟输入
PWM5_3
I/O
PWM5 捕获输入和脉冲输出正极
P0.1
I/O
标准 IO 口
ADC9
I
ADC 模拟输入通道 9
TxD3
O
串口 3 的发送脚
T3CLKO
O
定时器 3 时钟分频输出
PWM6_3
I/O
PWM6 捕获输入和脉冲输出正极
P0.2
I/O
标准 IO 口
ADC10
I
ADC 模拟输入通道 10
RxD4
I
串口 4 的接收脚
T4
I
定时器 4 外部时钟输入
PWM7_3
I/O
PWM7 捕获输入和脉冲输出正极
P0.3
I/O
标准 IO 口
ADC11
I
ADC 模拟输入通道 11
TxD4
O
串口 4 的发送脚
T4CLKO
O
定时器 4 时钟分频输出
PWM8_3
I/O
LQFP32/QFN32
25
26
27
28
29
30
31
32
深圳国芯人工智能有限公司
PWM8 捕获输入和脉冲输出正极
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 16 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.3 STC8H3K64S2-48Pin系列
2.3.1
特性及价格
选型价格(不需要外部晶振、不需要外部复位,12 位 ADC,12 通道)
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
STC8H3K60S2 1.9-5.5 60K 256 3K
2
4K 45
2
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
STC8H3K64S2 1.9-5.5 64K 256 3K
2
IAP 45
2
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
QFN48
有
年新品供货信息
2020
有
LQFP48
2
价格及封装
直接下载
USB
2 32K 45
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
看门狗 复位定时器
内部高精准时钟( 36MHz
以下可调)追频
内部高可靠复位(可选复位门槛电压)
掉电唤醒专用定时器
内部低压检测中断并可掉电唤醒
比较器(可当 路
,可作外部掉电检测)
1
A/D
( 路
可当 路
使用)
ADC
8 PWM
8 D/A
路高速
12
位乘除法器
16
位高级
定时器 互补对称死区控制
16
PWM
定时器 计/数器( T0-T4
外部管脚也可掉电唤醒)
所有的 I/O
口均支持中断
硬件
MDU16
I2 C
SPI
串口并可掉电唤醒
口最多数量
I/O
万次 字节
EEPROM 10
强大的双 DPTR
可增可减
,内部大容量扩展 SRAM字节
xdata
,内部传统 8051 RAM字节
idata
程序存储器
万次 字节
Flash
10
工作电压( )
V
单片机型号
STC8H3K32S2 1.9-5.5 32K 256 3K
是 ¥2.0 ¥2.2
送
是 ¥2.2 ¥2.4 样
中
是 ¥2.2 ¥2.4
注:以上的单价为 10K 及以上订货量的价格,量小则每片需增加 0.1 元人民币。当订货的总额达到或高于 3000 元时,
可免运费发货,否则需要由客户承担运费。零售 10 片起售。
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
19 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
3072 字节内部扩展 RAM(内部 XDATA)
时钟控制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 17 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.35%~+1.30%温漂(全温度范围,-40℃~85℃)
-0.76%~+0.98%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效)
上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上
电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时,
芯片解除复位状态。
复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4
管脚为复位脚时,复位电平为低电平)
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.0V(实测为 1.90V~2.04V)、2.4V(实测为 2.30V~2.50V)、
2.7V(实测为 2.61V~2.82V)、3.0V(实测为 2.90V~3.13V)。
每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向
下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 19 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支
持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定
时器 2、定时器 3、定时器 4、串口 1、串口 2、ADC 模数转换、LVD 低压检测、SPI、I2C、比较器、PWMA、
PWMB
提供 4 级中断优先级
时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、
T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.4/P4.6)、
I2C_SDA(P1.4/P2.4/P3.3)以及比较器中断、低压检测中断、掉电唤醒定时器唤醒。
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
2 个高速串口:串口 1、串口 2,波特率时钟源最快可为 FOSC/4
8 路/2 组高级 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还支持 16 位定时器、8
个外部中断、8 路外部捕获测量脉宽等功能
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
I/O 口中断:所有的 I/O 均支持中断,每组 I/O 中断有独立的中断入口地址,所有的 I/O 中断可支持 4 种
中断模式:高电平中断、低电平中断、上升沿中断、下降沿中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 18 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
模拟外设
超高速 ADC,支持 12 位高精度 15 通道(通道 0~通道 14)的模数转换,速度最快能达到 800K(每秒进
行 80 万次 ADC 转换)
ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)
比较器,一组比较器(比较器的正端可选择 CMP+端口和所有的 ADC 输入端口,所以比较器可当作多路
比较器进行分时复用)
DAC:8 路高级 PWM 定时器可当 8 路 DAC 使用
GPIO
最多可达 45 个 GPIO:P0.0~P0.7、P1.0~ P1.7、P2.0~P2.7、P3.0~P3.7、P4.0~P4.7、P5.0~P5.4
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口时必须先设置 IO
口模式。另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP48、QFN48
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 19 -
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
管脚图
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.3/RxD_4/SCLK_3
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT
P5.1
2.3.2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
36
35
34
33
32
31
30
29
28
27
26
25
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电
源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
37
38
39
40
41
42
43
44
45
46
47
48
24
23
22
21
20
19
18
17
16
15
14
13
LQFP48
QFN48
P5.0
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4//PWMETI/PWMETI2
P3.1/TxD
P3.0/RxD/INT4
P4.0/MOSI_3
Gnd
MCU-VCC
P5.5
Vcc
P5.4/RST/MCLKO/SS_3/PWM6_2 22u
0.1u
AVcc
P5.3
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
TxD2_2/P4.7
T2/SS/PWM2P/ADC2/P1.2
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
AGnd
ADC_VRef+
1
2
3
4
5
6
7
8
9
10
11
12
MISO_2/SDA_2/PWM3P_2/A12/P2.4
SCLK_2/SCL_2/PWM3N_2/A13/P2.5
PWM4P_2/A14/P2.6
PWM4N_2/A15/P2.7
ALE/P4.5
RxD2_2/P4.6
T3_2/PWM5_3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/ADC9/AD1/P0.1
T4_2/PWM7_3/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
P5.2
深圳国芯人工智能有限公司
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PDIP40
T3_2/PWM5_3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/ADC9/AD1/P0.1
T4_2/PWM7_3/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
T2/SS/PWM2P/ADC2/P1.2
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
AGnd
ADC_VRef+
AVcc
PWM6_2/SS_3/MCLKO/RSTP5.4
Vcc
P5.5
Gnd
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
国内分销商电话: 0513-5501 2928/2929/2966
P4.5/ALE
P2.7/A15/PWM4N_2
P2.6/A14/PWM4P_2
P2.5/A13/PWM3N_2/SCL_2/SCLK_2
P2.4/A12/PWM3P_2/SDA_2/MISO_2
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4/PWMETI/PWMETI2
P3.1/TxD
P3.0/RxD/INT4
传真: 0513-5501 2926/2956/2947
- 20 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
2.3.3
编号
名称
类型
说明
P5.3
I/O
标准 IO 口
P0.5
I/O
标准 IO 口
AD5
I
地址总线
ADC13
I
ADC 模拟输入通道 13
T3CLKO
O
定时器 3 时钟分频输出
P0.6
I/O
标准 IO 口
AD6
I
地址总线
ADC14
I
ADC 模拟输入通道 14
T4
I
定时器 4 外部时钟输入
PWMETI2_2
I
PWM 外部触发输入脚 2
P0.7
I/O
标准 IO 口
AD7
I
地址总线
T4CLKO
O
定时器 4 时钟分频输出
P1.0
I/O
ADC0
I
PWM1P
I/O
RxD2
I
P1.1
I/O
ADC1
I
PWM1N
I/O
TxD2
I
P4.7
I/O
TxD2_2
I
P1.2
I/O
ADC2
I
PWM2P
I/O
SS
I
SPI 的从机选择脚(主机为输出)
T2
I
定时器 2 外部时钟输入
LQFP48/QFN48
1
2
3
4
5
6
7
8
深圳国芯人工智能有限公司
标准 IO 口
ADC 模拟输入通道 0
PWMA 的捕获输入和脉冲输出正极
串口 2 的接收脚
标准 IO 口
ADC 模拟输入通道 1
PWMA 的捕获输入和脉冲输出负极
串口 2 的发送脚
标准 IO 口
串口 2 的发送脚
标准 IO 口
ADC 模拟输入通道
PWMB 的捕获输入和脉冲输出正极
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 21 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.6
I/O
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
PWM4P
I/O
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
PWM4N
I/O
PWM4 的捕获输入和脉冲输出负极
PWM5_2
I/O
PWM5 的捕获输入和脉冲输出
XTALI
I
11
AGnd
Gnd
12
ADC_VRef+
I
13
AVcc
Vcc
ADC 电源脚
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS_3
I
SPI 的从机选择脚(主机为输出)
PWM6_2
I/O
PWM6 的捕获输入和脉冲输出
15
Vcc
Vcc
电源脚
16
P5.5
I/O
标准 IO 口
17
Gnd
Gnd
地线
LQFP48/QFN48
9
10
14
深圳国芯人工智能有限公司
标准 IO 口
PWM4 的捕获输入和脉冲输出正极
标准 IO 口
外部晶振/外部时钟的输入脚
ADC 地线
ADC 外部参考电压源输入脚,要求不高时可直接
接 MCU 的 VCC
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 22 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P4.0
I/O
标准 IO 口
MOSI_3
I/O
SPI 主机输出从机输入
P3.0
I/O
标准 IO 口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
TxD
O
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
PWMETI
I
PWM 外部触发输入脚
PWMETI2
I
PWM 外部触发输入脚 2
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 接口的数据线
PWM4N_4
I/O
PWM4 的捕获输入和脉冲输出负极
PWM7_2
I/O
PWM7 的捕获输入和脉冲输出
P3.4
I/O
标准 IO 口
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
PWM4P_4
I/O
PWM4 的捕获输入和脉冲输出正极
PWM8_2
I/O
PWM8 的捕获输入和脉冲输出
CMPO
O
比较器输出
24
P5.0
I/O
标准 IO 口
25
P5.1
I/O
标准 IO 口
LQFP48/QFN48
18
19
20
21
22
23
深圳国芯人工智能有限公司
串口 1 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 23 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.5
I/O
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
PWMFLT
I
增强 PWM 的外部异常检测脚
P3.6
I/O
标准 IO 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
P4.1
I/O
标准 IO 口
MISO_3
I/O
SPI 主机输入从机输出
CMPO_2
O
比较器输出
PWMETI_2
I
PWM 外部触发输入脚
P4.2
I/O
WR
O
P4.3
I/O
RxD_4
I
SCLK_3
I/O
SPI 的时钟脚
P4.4
I/O
标准 IO 口
RD
O
外部总线的读信号线
TxD_4
O
串口 1 的发送脚
P2.0
I/O
标准 IO 口
A8
I
地址总线
PWM1P_2
I/O
PWMA 的捕获输入和脉冲输出正极
PWM5
I/O
PWM5 的捕获输入和脉冲输出
LQFP48/QFN48
26
27
28
29
30
31
32
33
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
外部总线的写信号线
标准 IO 口
串口 1 的接收脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 24 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.1
I/O
标准 IO 口
A9
I
地址总线
PWM1N_2
I/O
PWMA 的捕获输入和脉冲输出负极
PWM6
I/O
PWM6 的捕获输入和脉冲输出
P2.2
I/O
标准 IO 口
A10
I
地址总线
SS_2
I
SPI 的从机选择脚(主机为输出)
PWM2P_2
I/O
PWMB 的捕获输入和脉冲输出正极
PWM7
I/O
PWM7 的捕获输入和脉冲输出
P2.3
I/O
标准 IO 口
A11
I
地址总线
MOSI_2
I/O
SPI 主机输出从机输入
PWM2N_2
I/O
PWMB 的捕获输入和脉冲输出负极
PWM8
I/O
PWM8 的捕获输入和脉冲输出
P2.4
I/O
标准 IO 口
A12
I
地址总线
MISO_2
I/O
SPI 主机输入从机输出
SDA_2
I/O
I2C 接口的数据线
PWM3P_2
I/O
PWM3 的捕获输入和脉冲输出正极
P2.5
I/O
标准 IO 口
A13
I
地址总线
SCLK_2
I/O
SPI 的时钟脚
SCL_2
I/O
I2C 的时钟线
PWM3N_2
I/O
PWM3 的捕获输入和脉冲输出负极
P2.6
I/O
标准 IO 口
A14
I
地址总线
PWM4P_2
I/O
PWM4 的捕获输入和脉冲输出正极
P2.7
I/O
标准 IO 口
A15
I
地址总线
PWM4N_2
I/O
PWM4 的捕获输入和脉冲输出负极
P4.5
I/O
标准 IO 口
ALE
O
LQFP48/QFN48
34
35
36
37
38
39
40
41
深圳国芯人工智能有限公司
地址锁存信号
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 25 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
名称
类型
P4.6
I/O
RxD2_2
I
P0.0
I/O
标准 IO 口
AD0
I
地址总线
ADC8
I
ADC 模拟输入通道 8
PWM5_3
I/O
T3_2
I
P0.1
I/O
标准 IO 口
AD1
I
地址总线
ADC9
I
ADC 模拟输入通道 9
PWM6_3
I/O
T3CLKO_2
O
P0.2
I/O
标准 IO 口
AD2
I
地址总线
ADC10
I
ADC 模拟输入通道 10
PWM7_3
I/O
T4_2
I
P0.3
I/O
标准 IO 口
AD3
I
地址总线
ADC11
I
ADC 模拟输入通道 11
PWM8_3
I/O
T4CLKO_2
O
P0.4
I/O
标准 IO 口
AD4
I
地址总线
ADC12
I
ADC 模拟输入通道 12
T3
I
定时器 3 外部时钟输入
P5.2
I/O
研发顾问: 13922805190
说明
LQFP48/QFN48
42
43
44
45
46
47
48
深圳国芯人工智能有限公司
标准 IO 口
串口 2 的接收脚
PWM5 的捕获输入和脉冲输出
定时器 3 外部时钟输入
PWM6 的捕获输入和脉冲输出
定时器 3 时钟分频输出
PWM7 的捕获输入和脉冲输出
定时器 4 外部时钟输入
PWM8 的捕获输入和脉冲输出
定时器 4 时钟分频输出
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 26 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.4 STC8H3K64S4-48Pin系列
2.4.1
特性及价格
选型价格(不需要外部晶振、不需要外部复位,12 位 ADC,12 通道)
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
STC8H3K60S4 1.9-5.5 60K 256 3K
2
4K 45
4
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
STC8H3K64S4 1.9-5.5 64K 256 3K
2
IAP 45
4
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
QFN48
有
年新品供货信息
2020
有
LQFP48
4
价格及封装
直接下载
USB
2 32K 45
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
看门狗 复位定时器
内部高精准时钟( 36MHz
以下可调)追频
内部高可靠复位(可选复位门槛电压)
掉电唤醒专用定时器
内部低压检测中断并可掉电唤醒
比较器(可当 路
,可作外部掉电检测)
1
A/D
( 路
可当 路
使用)
ADC
8 PWM
8 D/A
路高速
12
位乘除法器
16
位高级
定时器 互补对称死区控制
16
PWM
定时器 计/数器( T0-T4
外部管脚也可掉电唤醒)
所有的 I/O
口均支持中断
硬件
MDU16
I2 C
SPI
串口并可掉电唤醒
口最多数量
I/O
万次 字节
EEPROM 10
强大的双 DPTR
可增可减
,内部大容量扩展 SRAM字节
xdata
,内部传统 8051 RAM字节
idata
程序存储器
万次 字节
Flash
10
工作电压( )
V
单片机型号
STC8H3K32S4 1.9-5.5 32K 256 3K
是 ¥2.2 ¥2.4
送
是 ¥2.4 ¥2.6 样
中
是 ¥2.4 ¥2.6
注:以上的单价为 10K 及以上订货量的价格,量小则每片需增加 0.1 元人民币。当订货的总额达到或高于 3000 元时,
可免运费发货,否则需要由客户承担运费。零售 10 片起售。
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
21 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
-40℃~85℃(如何需要工作在更宽的温度范围,请使用外部时钟或者使用较低的工作频率)
Flash 存储器
最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
3072 字节内部扩展 RAM(内部 XDATA)
时钟控制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 27 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.35%~+1.30%温漂(全温度范围,-40℃~85℃)
-0.76%~+0.98%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效)
上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上
电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时,
芯片解除复位状态。
复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4
管脚为复位脚时,复位电平为低电平)
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.0V(实测为 1.90V~2.04V)、2.4V(实测为 2.30V~2.50V)、
2.7V(实测为 2.61V~2.82V)、3.0V(实测为 2.90V~3.13V)。
每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向
下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 21 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支
持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定
时器 2、定时器 3、定时器 4、串口 1、串口 2、串口 3、串口 4、ADC 模数转换、LVD 低压检测、SPI、
I2C、比较器、PWMA、PWMB
提供 4 级中断优先级
时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、
T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.4/P4.6)、RXD3(P0.0/P5.0)、
RXD4(P0.2/P5.2)、I2C_SDA(P1.4/P2.4/P3.3)以及比较器中断、低压检测中断、掉电唤醒定时器唤醒。
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
4 个高速串口:串口 1、串口 2、串口 3、串口 4,波特率时钟源最快可为 FOSC/4
8 路/2 组高级 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还支持 16 位定时器、8
个外部中断、8 路外部捕获测量脉宽等功能
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
I/O 口中断:所有的 I/O 均支持中断,每组 I/O 中断有独立的中断入口地址,所有的 I/O 中断可支持 4 种
中断模式:高电平中断、低电平中断、上升沿中断、下降沿中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 28 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
模拟外设
超高速 ADC,支持 12 位高精度 15 通道(通道 0~通道 14)的模数转换,速度最快能达到 800K(每秒进
行 80 万次 ADC 转换)
ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)
比较器,一组比较器(比较器的正端可选择 CMP+端口和所有的 ADC 输入端口,所以比较器可当作多路
比较器进行分时复用)
DAC:8 路高级 PWM 定时器可当 8 路 DAC 使用
GPIO
最多可达 45 个 GPIO:P0.0~P0.7、P1.0~ P1.7、P2.0~P2.7、P3.0~P3.7、P4.0~P4.7、P5.0~P5.4
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口时必须先设置 IO
口模式。另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP48、QFN48
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 29 -
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
管脚图
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.3/RxD_4/SCLK_3
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT
P5.1/TxD3_2
2.4.2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
36
35
34
33
32
31
30
29
28
27
26
25
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电
源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
37
38
39
40
41
42
43
44
45
46
47
48
24
23
22
21
20
19
18
17
16
15
14
13
LQFP48
QFN48
P5.0/RxD3_2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4//PWMETI/PWMETI2
P3.1/TxD
P3.0/RxD/INT4
P4.0/MOSI_3
Gnd
MCU-VCC
P5.5
Vcc
P5.4/RST/MCLKO/SS_3/PWM6_2
22u
0.1u
AVcc
TxD4_2/P5.3
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
TxD2_2/P4.7
T2/SS/PWM2P/ADC2/P1.2
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
AGnd
ADC_VRef+
1
2
3
4
5
6
7
8
9
10
11
12
MISO_2/SDA_2/PWM3P_2/A12/P2.4
SCLK_2/SCL_2/PWM3N_2/A13/P2.5
PWM4P_2/A14/P2.6
PWM4N_2/A15/P2.7
ALE/P4.5
RxD2_2/P4.6
T3_2/PWM5_3/RxD3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/TxD3/ADC9/AD1/P0.1
T4_2/PWM7_3/RxD4/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/TxD4/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
RxD4_2/P5.2
.
深圳国芯人工智能有限公司
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PDIP40
T3_2/PWM5_3/RxD3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/TxD3/ADC9/AD1/P0.1
T4_2/PWM7_3/RxD4/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/TxD4/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
T2/SS/PWM2P/ADC2/P1.2
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
AGnd
ADC_VRef+
AVcc
PWM6_2/SS_3/MCLKO/RSTP5.4
Vcc
P5.5
Gnd
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
国内分销商电话: 0513-5501 2928/2929/2966
P4.5/ALE
P2.7/A15/PWM4N_2
P2.6/A14/PWM4P_2
P2.5/A13/PWM3N_2/SCL_2/SCLK_2
P2.4/A12/PWM3P_2/SDA_2/MISO_2
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4/PWMETI/PWMETI2
P3.1/TxD
P3.0/RxD/INT4
传真: 0513-5501 2926/2956/2947
- 30 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
2.4.3
编号
名称
类型
说明
P5.3
I/O
TxD4_2
O
P0.5
I/O
标准 IO 口
AD5
I
地址总线
ADC13
I
ADC 模拟输入通道 13
T3CLKO
O
定时器 3 时钟分频输出
P0.6
I/O
标准 IO 口
AD6
I
地址总线
ADC14
I
ADC 模拟输入通道 14
T4
I
定时器 4 外部时钟输入
PWMETI2_2
I
PWM 外部触发输入脚 2
P0.7
I/O
标准 IO 口
AD7
I
地址总线
T4CLKO
O
定时器 4 时钟分频输出
P1.0
I/O
ADC0
I
PWM1P
I/O
RxD2
I
P1.1
I/O
ADC1
I
PWM1N
I/O
TxD2
I
P4.7
I/O
TxD2_2
I
P1.2
I/O
ADC2
I
PWM2P
I/O
SS
I
SPI 的从机选择脚(主机为输出)
T2
I
定时器 2 外部时钟输入
LQFP48/QFN48
1
2
3
4
5
6
7
8
深圳国芯人工智能有限公司
标准 IO 口
串口 4 的发送脚
标准 IO 口
ADC 模拟输入通道 0
PWMA 的捕获输入和脉冲输出正极
串口 2 的接收脚
标准 IO 口
ADC 模拟输入通道 1
PWMA 的捕获输入和脉冲输出负极
串口 2 的发送脚
标准 IO 口
串口 2 的发送脚
标准 IO 口
ADC 模拟输入通道
PWMB 的捕获输入和脉冲输出正极
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 31 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.6
I/O
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
PWM4P
I/O
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
PWM4N
I/O
PWM4 的捕获输入和脉冲输出负极
PWM5_2
I/O
PWM5 的捕获输入和脉冲输出
XTALI
I
11
AGnd
Gnd
12
ADC_VRef+
I
13
AVcc
Vcc
ADC 电源脚
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS_3
I
SPI 的从机选择脚(主机为输出)
PWM6_2
I/O
PWM6 的捕获输入和脉冲输出
15
Vcc
Vcc
电源脚
16
P5.5
I/O
标准 IO 口
17
Gnd
Gnd
地线
LQFP48/QFN48
9
10
14
深圳国芯人工智能有限公司
标准 IO 口
PWM4 的捕获输入和脉冲输出正极
标准 IO 口
外部晶振/外部时钟的输入脚
ADC 地线
ADC 外部参考电压源输入脚,要求不高时可直接
接 MCU 的 VCC
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 32 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P4.0
I/O
标准 IO 口
MOSI_3
I/O
SPI 主机输出从机输入
P3.0
I/O
标准 IO 口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
TxD
O
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
PWMETI
I
PWM 外部触发输入脚
PWMETI2
I
PWM 外部触发输入脚 2
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 接口的数据线
PWM4N_4
I/O
PWM4 的捕获输入和脉冲输出负极
PWM7_2
I/O
PWM7 的捕获输入和脉冲输出
P3.4
I/O
标准 IO 口
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
PWM4P_4
I/O
PWM4 的捕获输入和脉冲输出正极
PWM8_2
I/O
PWM8 的捕获输入和脉冲输出
CMPO
O
比较器输出
P5.0
I/O
标准 IO 口
RxD3_2
I
P5.1
I/O
TxD3_2
O
LQFP48/QFN48
18
19
20
21
22
23
24
25
深圳国芯人工智能有限公司
串口 1 的发送脚
串口 3 的接收脚
标准 IO 口
串口 3 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 33 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.5
I/O
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
PWMFLT
I
增强 PWM 的外部异常检测脚
P3.6
I/O
标准 IO 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
P4.1
I/O
标准 IO 口
MISO_3
I/O
SPI 主机输入从机输出
CMPO_2
O
比较器输出
PWMETI_2
I
PWM 外部触发输入脚
P4.2
I/O
WR
O
P4.3
I/O
RxD_4
I
SCLK_3
I/O
SPI 的时钟脚
P4.4
I/O
标准 IO 口
RD
O
外部总线的读信号线
TxD_4
O
串口 1 的发送脚
P2.0
I/O
标准 IO 口
A8
I
地址总线
PWM1P_2
I/O
PWMA 的捕获输入和脉冲输出正极
PWM5
I/O
PWM5 的捕获输入和脉冲输出
LQFP48/QFN48
26
27
28
29
30
31
32
33
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
外部总线的写信号线
标准 IO 口
串口 1 的接收脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 34 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.1
I/O
标准 IO 口
A9
I
地址总线
PWM1N_2
I/O
PWMA 的捕获输入和脉冲输出负极
PWM6
I/O
PWM6 的捕获输入和脉冲输出
P2.2
I/O
标准 IO 口
A10
I
地址总线
SS_2
I
SPI 的从机选择脚(主机为输出)
PWM2P_2
I/O
PWMB 的捕获输入和脉冲输出正极
PWM7
I/O
PWM7 的捕获输入和脉冲输出
P2.3
I/O
标准 IO 口
A11
I
地址总线
MOSI_2
I/O
SPI 主机输出从机输入
PWM2N_2
I/O
PWMB 的捕获输入和脉冲输出负极
PWM8
I/O
PWM8 的捕获输入和脉冲输出
P2.4
I/O
标准 IO 口
A12
I
地址总线
MISO_2
I/O
SPI 主机输入从机输出
SDA_2
I/O
I2C 接口的数据线
PWM3P_2
I/O
PWM3 的捕获输入和脉冲输出正极
P2.5
I/O
标准 IO 口
A13
I
地址总线
SCLK_2
I/O
SPI 的时钟脚
SCL_2
I/O
I2C 的时钟线
PWM3N_2
I/O
PWM3 的捕获输入和脉冲输出负极
P2.6
I/O
标准 IO 口
A14
I
地址总线
PWM4P_2
I/O
PWM4 的捕获输入和脉冲输出正极
P2.7
I/O
标准 IO 口
A15
I
地址总线
PWM4N_2
I/O
PWM4 的捕获输入和脉冲输出负极
P4.5
I/O
标准 IO 口
ALE
O
LQFP48/QFN48
34
35
36
37
38
39
40
41
深圳国芯人工智能有限公司
地址锁存信号
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 35 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
名称
类型
P4.6
I/O
RxD2_2
I
P0.0
I/O
标准 IO 口
AD0
I
地址总线
ADC8
I
ADC 模拟输入通道 8
RxD3
I
串口 3 的接收脚
PWM5_3
I/O
T3_2
I
P0.1
I/O
标准 IO 口
AD1
I
地址总线
ADC9
I
ADC 模拟输入通道 9
TxD3
O
串口 3 的发送脚
PWM6_3
I/O
T3CLKO_2
O
P0.2
I/O
标准 IO 口
AD2
I
地址总线
ADC10
I
ADC 模拟输入通道 10
RxD4
I
串口 4 的接收脚
PWM7_3
I/O
T4_2
I
P0.3
I/O
标准 IO 口
AD3
I
地址总线
ADC11
I
ADC 模拟输入通道 11
TxD4
O
串口 4 的发送脚
PWM8_3
I/O
T4CLKO_2
O
P0.4
I/O
标准 IO 口
AD4
I
地址总线
ADC12
I
ADC 模拟输入通道 12
T3
I
定时器 3 外部时钟输入
P5.2
I/O
RxD4_2
I
研发顾问: 13922805190
说明
LQFP48/QFN48
42
43
44
45
46
47
48
深圳国芯人工智能有限公司
标准 IO 口
串口 2 的接收脚
PWM5 的捕获输入和脉冲输出
定时器 3 外部时钟输入
PWM6 的捕获输入和脉冲输出
定时器 3 时钟输入
PWM7 的捕获输入和脉冲输出
定时器 4 外部时钟输入
PWM8 的捕获输入和脉冲输出
定时器 4 时钟输入
标准 IO 口
串口 4 的接收脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 36 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.5 STC8H8K64U-64Pin/48Pin USB系列
2.5.1
特性及价格
选型价格(不需要外部晶振、不需要外部复位,12 位 ADC,15 通道)
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
STC8H8K60U 1.9-5.5 60K 256 8K
2
4K 60
4
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
STC8H8K64U 1.9-5.5 64K 256 8K
2
IAP 60
4
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
QFN48
5
年新品供货信息
2020
有
QFN64
有
LQFP48
有
LQFP64
有
仿真
USB
4
本身就可在线仿真
直接下载和硬件
USB
2 32K 60
价格及封装
支持硬件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
看门狗 复位定时器
内部低压检测中断并可掉电唤醒
内部高精准时钟( 45MHz
以下可调)追频
内部高可靠复位(可选复位门槛电压)
比较器(可当 路
,可作外部掉电检测)
1
A/D
( 路
可当 路
使用)
ADC
8 PWM
8 D/A
掉电唤醒专用定时器
路高速
15
I2 C
位高级 PWM
定时器 互补对称死区控制
16
定时器 计/数器( T0-T4
外部管脚也可掉电唤醒)
硬件 16
位乘除法器
MDU16
SPI
全速 USB
串口并可掉电唤醒
口最多数量
I/O
万次 字节
EEPROM 10
强大的双 DPTR
可增可减
,内部大容量扩展 SRAM字节
xdata
,内部传统
idata
8051
RAM字节
程序存储器
万次 字节
Flash
10
工作电压( )
V
单片机型号
STC8H8K32U 1.9-5.5 32K 256 8K
是 ¥2.9 ¥3.1 ¥2.4 ¥2.6
送
是 ¥3.4 ¥3.6 ¥2.9 ¥3.1 样
中
是 ¥3.4 ¥3.6 ¥2.9 ¥3.1
注:以上的单价为 10K 及以上订货量的价格,量小则每片需增加 0.1 元人民币。当订货的总额达到或高于 3000 元时,
可免运费发货,否则需要由客户承担运费。零售 10 片起售。
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
22 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
8192 字节内部扩展 RAM(内部 XDATA)
1280 字节 USB 数据 RAM
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 37 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.35%~+1.30%温漂(全温度范围,-40℃~85℃)
-0.76%~+0.98%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效)
上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上
电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时,
芯片解除复位状态。
复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4
管脚为复位脚时,复位电平为低电平)
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:1.9V、2.3V、2.8V、3.7V。
每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向
下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 22 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支
持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定
时器 2、定时器 3、定时器 4、串口 1、串口 2、串口 3、串口 4、ADC 模数转换、LVD 低压检测、SPI、
I2C、比较器、PWMA、PWMB、USB
提供 4 级中断优先级
时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、
T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.4/P4.6)、RXD3(P0.0/P5.0)、
RXD4(P0.2/P5.2)、I2C_SDA(P1.4/P2.4/P3.3)以及比较器中断、低压检测中断、掉电唤醒定时器唤醒。
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
4 个高速串口:串口 1、串口 2、串口 3、串口 4,波特率时钟源最快可为 FOSC/4
8 路/2 组高级 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还支持 16 位定时器、8
个外部中断、8 路外部捕获测量脉宽等功能
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
USB:USB2.0/USB1.1 兼容全速 USB,6 个双向端点,支持 4 种端点传输模式(控制传输、中断传输、批
量传输和同步传输),每个端点拥有 64 字节的缓冲区
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 38 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
模拟外设
超高速 ADC,支持 12 位高精度 15 通道(通道 0~通道 14)的模数转换,速度最快能达到 800K(每秒进
行 80 万次 ADC 转换)
ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)
比较器,一组比较器(比较器的正端可选择 CMP+端口和所有的 ADC 输入端口,所以比较器可当作多路
比较器进行分时复用)
DAC:8 路高级 PWM 定时器可当 8 路 DAC 使用
GPIO
最多可达 61 个 GPIO:P0.0~P0.7、P1.0~ P1.7(无 P1.2)、P2.0~P2.7、P3.0~P3.7、P4.0~P4.7、P5.0~P5.4、
P6.0~P6.7、P7.0~P7.7
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口时必须先设置 IO
口模式。另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP64、QFN64、LQFP48、QFN48
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 39 -
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
管脚图
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电
源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.3/RxD_4/SCLK_3
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P7.3/PWMETI_3
P7.2
P7.1
P7.0
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P5.1/TxD3_2
2.5.2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
LQFP64
QFN64
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
P5.0/RxD3_2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4/PWMETI/PWMETI2
P3.1/TxD/D+
P3.0/RxD/D-/INT4
MCU-VCC
P6.7/PWM4N_3
P6.6/PWM4P_3
P6.5/PWM3N_3
22u
0.1u
P6.4/PWM3P_3
P4.0/MOSI_3
Gnd/AGnd
ADC_VRef+
Vcc/AVcc
P5.4/RST/MCLKO/SS/SS_3/PWM2P/PWM6_2/ADC2/T2
UCap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
MISO_2/SDA_2/PWM3P_2/A12/P2.4
SCLK_2/SCL_2/PWM3N_2/A13/P2.5
PWM4P_2/A14/P2.6
PWM4N_2/A15/P2.7
PWM5_4/P7.4
PWM6_4/P7.5
PWM7_4/P7.6
PWM8_4/P7.7
ALE/P4.5
RxD2_2/P4.6
T3_2/PWM5_3/RxD3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/TxD3/ADC9/AD1/P0.1
T4_2/PWM7_3/RxD4/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/TxD4/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
RxD4_2/P5.2
TxD4_2/P5.3
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
PWM1P_3/P6.0
PWM1N_3/P6.1
PWM2P_3/P6.2
PWM2N_3/P6.3
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
TxD2_2/P4.7
SDA/MISO/PWM3P/ADC4/P1.4
SCL/SCLK/PWM3N/ADC5/P1.5
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
T2CLKO/MOSI/PWM2N/ADC3/P1.3
0.1u
当用户使用硬件 USB 对 STC8H8K64U 系列进行 ISP 下载时不能调节内部 IRC 的频率,但用户可用选择
内部预置的 16 个频率(分别是 5.5296M、6M、11.0592M、12M、18.432M、20M、22.1184M、24M、
27M、30M、33.1776M、35M、36.864M、40M、44.2368M 和 48M)。下载时用户只能从频率下拉列表
中进行选择其中之一,而不能手动输入其他频率。(使用串口下载则可用输入 4M~48M 之间的任意频
率)。详情见 5.1.8 章的图示
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 40 -
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.3/RxD_4/SCLK_3
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P5.1/TxD3_2
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
36
35
34
33
32
31
30
29
28
27
26
25
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电
源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
37
38
39
40
41
42
43
44
45
46
47
48
LQFP48
QFN48
24
23
22
21
20
19
18
17
16
15
14
13
P5.0/RxD3_2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4/PWMETI/PWMETI2
MCU-VCC
P3.1/TxD/D+
22u
0.1u
P3.0/RxD/D-/INT4
P4.0/MOSI_3
Gnd/AGnd
ADC_VRef+
Vcc/AVcc
P5.4/RST/MCLKO/SS/SS_3/PWM2P/PWM6_2/ADC2/T2
UCap
1
2
3
4
5
6
7
8
9
10
11
12
MISO_2/SDA_2/PWM3P_2/A12/P2.4
SCLK_2/SCL_2/PWM3N_2/A13/P2.5
PWM4P_2/A14/P2.6
PWM4N_2/A15/P2.7
ALE/P4.5
RxD2_2/P4.6
T3_2/PWM5_3/RxD3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/TxD3/ADC9/AD1/P0.1
T4_2/PWM7_3/RxD4/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/TxD4/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
RxD4_2/P5.2
TxD4_2/P5.3
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
TxD2_2/P4.7
SDA/MISO/PWM3P/ADC4/P1.4
SCL/SCLK/PWM3N/ADC5/P1.5
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
T2CLKO/MOSI/PWM2N/ADC3/P1.3
0.1u
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 41 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
注意:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
PDIP40
T3_2/PWM5_3/RxD3/ADC8/AD0/P0.0
T3CLKO_2/PWM6_3/TxD3/ADC9/AD1/P0.1
T4_2/PWM7_3/RxD4/ADC10/AD2/P0.2
T4CLKO_2/PWM8_3/TxD4/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
RxD2/PWM1P/ADC0/P1.0
TxD2/PWM1N/ADC1/P1.1
SDA/MISO/PWM3P/ADC4/P1.4
SCL/SCLK/PWM3N/ADC5/P1.5
XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
T2CLKO/MOSI/PWM2N/ADC3/P1.3
UCap
T2/ADC2/PWM6_2/PWM2P/SS_3/SS/MCLKO/RSTP5.4
0.1u
Vcc/AVcc
ADC_VRef+
Gnd/AGnd
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
技术支持: 13922829991
研发顾问: 13922805190
P4.5/ALE
P2.7/A15/PWM4N_2
P2.6/A14/PWM4P_2
P2.5/A13/PWM3N_2/SCL_2/SCLK_2
P2.4/A12/PWM3P_2/SDA_2/MISO_2
P2.3/A11/PWM2N_2/PWM8/MOSI_2
P2.2/A10/PWM2P_2/PWM7/SS_2
P2.1/A9/PWM1N_2/PWM6
P2.0/A8/PWM1P_2/PWM5
P4.4/RD/TxD_4
P4.2/WR
P4.1/MISO_3/CMPO_2/PWMETI_2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4/PWMETI/PWMETI2
P3.1/TxD/D+
P3.0/RxD/D-/INT4
1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口
时必须先设置 I/O 口模式
2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入
模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
3、当使能 P5.4 口为复位脚时,复位电平为低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 42 -
STC8H 系列技术手册
2.5.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
LQFP64/QFN64
LQFP48/QFN48
1
1
2
3
4
2
3
4
5
6
7
8
9
10
11
12
深圳国芯人工智能有限公司
5
6
7
8
名称
类型
说明
P5.3
I/O
TxD4_2
O
P0.5
I/O
标准 IO 口
AD5
I
地址总线
ADC13
I
ADC 模拟输入通道 13
T3CLKO
O
定时器 3 时钟分频输出
P0.6
I/O
标准 IO 口
AD6
I
地址总线
ADC14
I
ADC 模拟输入通道 14
T4
I
定时器 4 外部时钟输入
PWMETI2_2
I
PWM 外部触发输入脚 2
P0.7
I/O
标准 IO 口
AD7
I
地址总线
T4CLKO
O
定时器 4 时钟分频输出
P6.0
I/O
标准 IO 口
PWM1P_3
I/O
PWMA 的捕获输入和脉冲输出正极
P6.1
I/O
标准 IO 口
PWM1N_3
I/O
PWMA 的捕获输入和脉冲输出负极
P6.2
I/O
标准 IO 口
PWM2P_3
I/O
PWMB 的捕获输入和脉冲输出正极
P6.3
I/O
标准 IO 口
PWM2N_3
I/O
PWMB 的捕获输入和脉冲输出负极
P1.0
I/O
标准 IO 口
ADC0
I
PWM1P
I/O
RxD2
I
P1.1
I/O
ADC1
I
PWM1N
I/O
TxD2
I
P4.7
I/O
TxD2_2
I
P1.4
I/O
ADC4
I
PWM3P
I/O
PWM3 的捕获输入和脉冲输出正极
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
标准 IO 口
串口 4 的发送脚
ADC 模拟输入通道 0
PWMA 的捕获输入和脉冲输出正极
串口 2 的接收脚
标准 IO 口
ADC 模拟输入通道 1
PWMA 的捕获输入和脉冲输出负极
串口 2 的发送脚
标准 IO 口
串口 2 的发送脚
标准 IO 口
ADC 模拟输入通道 4
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 43 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
LQFP64/QFN64
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.5
I/O
ADC5
I
PWM3N
I/O
PWM3 的捕获输入和脉冲输出负极
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
P1.6
I/O
标准 IO 口
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
PWM4P
I/O
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
PWM4N
I/O
PWM4 的捕获输入和脉冲输出负极
PWM5_2
I/O
PWM5 的捕获输入和脉冲输出
XTALI
I
P1.3
I/O
ADC3
I
ADC 模拟输入通道 3
MOSI
I/O
SPI 主机输出从机输入
PWM2N
I/O
PWMB 的捕获输入和脉冲输出负极
T2CLKO
O
定时器 2 时钟分频输出
UCAP
I
USB 内核电源稳压脚
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS_3
I
SPI 的从机选择脚(主机为输出)
SS
I
SPI 的从机选择脚(主机为输出)
PWM2P
I/O
PWMB 的捕获输入和脉冲输出正极
PWM6_2
I/O
PWM6 的捕获输入和脉冲输出
T2
I
定时器 2 外部时钟输入
ADC2
I
ADC 模拟输入通道 2
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源脚
ADC_VRef+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
P4.0
I/O
标准 IO 口
MOSI_3
I/O
SPI 主机输出从机输入
LQFP48/QFN48
13
14
15
16
17
18
9
10
11
12
13
14
19
15
20
16
21
17
22
18
深圳国芯人工智能有限公司
标准 IO 口
ADC 模拟输入通道 5
PWM4 的捕获输入和脉冲输出正极
标准 IO 口
外部晶振/外部时钟的输入脚
标准 IO 口
ADC 外部参考电压源输入脚,要求不高时
可直接接 MCU 的 VCC
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 44 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
LQFP64/QFN64
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P6.4
I/O
标准 IO 口
PWM3P_3
I/O
PWM3 的捕获输入和脉冲输出正极
P6.5
I/O
标准 IO 口
PWM3N_3
I/O
PWM3 的捕获输入和脉冲输出负极
P6.6
I/O
标准 IO 口
PWM4P_3
I/O
PWM4 的捕获输入和脉冲输出正极
P6.7
I/O
标准 IO 口
PWM4N_3
I/O
PWM4 的捕获输入和脉冲输出负极
P3.0
I/O
标准 IO 口
D-
I/O
USB 数据口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
D+
I/O
USB 数据口
TxD
O
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
PWMETI
I
PWM 外部触发输入脚
PWMETI2
I
PWM 外部触发输入脚 2
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 接口的数据线
PWM4N_4
I/O
PWM4 的捕获输入和脉冲输出负极
PWM7_2
I/O
PWM7 的捕获输入和脉冲输出
P3.4
I/O
标准 IO 口
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
PWM4P_4
I/O
PWM4 的捕获输入和脉冲输出正极
PWM8_2
I/O
PWM8 的捕获输入和脉冲输出
CMPO
O
比较器输出
P5.0
I/O
标准 IO 口
RxD3_2
I
P5.1
I/O
TxD3_2
O
LQFP48/QFN48
23
24
25
26
27
28
29
30
31
19
20
21
22
23
32
24
33
25
深圳国芯人工智能有限公司
串口 1 的发送脚
串口 3 的接收脚
标准 IO 口
串口 3 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 45 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
P3.5
I/O
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
PWMFLT
I
增强 PWMA 的外部异常检测脚
PWMFLT2
I
增强 PWMB 的外部异常检测脚
P3.6
I/O
标准 IO 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
37
P7.0
I/O
标准 IO 口
38
P7.1
I/O
标准 IO 口
39
P7.2
I/O
标准 IO 口
P7.3
I/O
标准 IO 口
PWMETI_3
I
P4.1
I/O
标准 IO 口
MISO_3
I/O
SPI 主机输入从机输出
CMPO_2
O
比较器输出
PWMETI_3
I
PWM 外部触发输入脚
P4.2
I/O
WR
O
P4.3
I/O
RxD_4
I
SCLK_3
I/O
SPI 的时钟脚
P4.4
I/O
标准 IO 口
RD
O
外部总线的读信号线
TxD_4
O
串口 1 的发送脚
P2.0
I/O
标准 IO 口
A8
I
地址总线
PWM1P_2
I/O
PWMA 的捕获输入和脉冲输出正极
PWM5
I/O
PWM5 的捕获输入和脉冲输出
LQFP64/QFN64
说明
LQFP48/QFN48
34
35
36
26
27
28
40
41
42
43
44
45
深圳国芯人工智能有限公司
29
30
31
32
33
标准 IO 口
PWM 外部触发输入脚
标准 IO 口
外部总线的写信号线
标准 IO 口
串口 1 的接收脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 46 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
LQFP64/QFN64
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.1
I/O
标准 IO 口
A9
I
地址总线
PWM1N_2
I/O
PWMA 的捕获输入和脉冲输出负极
PWM6
I/O
PWM6 的捕获输入和脉冲输出
P2.2
I/O
标准 IO 口
A10
I
地址总线
SS_2
I
SPI 的从机选择脚(主机为输出)
PWM2P_2
I/O
PWMB 的捕获输入和脉冲输出正极
PWM7
I/O
PWM7 的捕获输入和脉冲输出
P2.3
I/O
标准 IO 口
A11
I
地址总线
MOSI_2
I/O
SPI 主机输出从机输入
PWM2N_2
I/O
PWMB 的捕获输入和脉冲输出负极
PWM8
I/O
PWM8 的捕获输入和脉冲输出
P2.4
I/O
标准 IO 口
A12
I
地址总线
MISO_2
I/O
SPI 主机输入从机输出
SDA_2
I/O
I2C 接口的数据线
PWM3P_2
I/O
PWM3 的捕获输入和脉冲输出正极
P2.5
I/O
标准 IO 口
A13
I
地址总线
SCLK_2
I/O
SPI 的时钟脚
SCL_2
I/O
I2C 的时钟线
PWM3N_2
I/O
PWM3 的捕获输入和脉冲输出负极
P2.6
I/O
标准 IO 口
A14
I
地址总线
PWM4P_2
I/O
PWM4 的捕获输入和脉冲输出正极
P2.7
I/O
标准 IO 口
A15
I
地址总线
PWM4N_2
I/O
PWM4 的捕获输入和脉冲输出负极
P7.4
I/O
标准 IO 口
PWM5_4
I/O
PWM5 的捕获输入和脉冲输出
P7.5
I/O
标准 IO 口
PWM6_4
I/O
PWM6 的捕获输入和脉冲输出
P7.6
I/O
标准 IO 口
PWM7_4
I/O
PWM7 的捕获输入和脉冲输出
LQFP48/QFN48
46
47
48
49
50
51
52
53
54
55
深圳国芯人工智能有限公司
34
35
36
37
38
39
40
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 47 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
LQFP64/QFN64
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P7.7
I/O
标准 IO 口
PWM8_4
I/O
PWM8 的捕获输入和脉冲输出
P4.5
I/O
标准 IO 口
ALE
O
P4.6
I/O
RxD2_2
I
P0.0
I/O
标准 IO 口
AD0
I
地址总线
ADC8
I
ADC 模拟输入通道 8
RxD3
I
串口 3 的接收脚
PWM5_3
I/O
T3_2
I
P0.1
I/O
标准 IO 口
AD1
I
地址总线
ADC9
I
ADC 模拟输入通道 9
TxD3
O
串口 3 的发送脚
PWM6_3
I/O
T3CLKO_2
O
P0.2
I/O
标准 IO 口
AD2
I
地址总线
ADC10
I
ADC 模拟输入通道 10
RxD4
I
串口 4 的接收脚
PWM7_3
I/O
T4_2
I
P0.3
I/O
标准 IO 口
AD3
I
地址总线
ADC11
I
ADC 模拟输入通道 11
TxD4
O
串口 4 的发送脚
PWM8_3
I/O
T4CLKO_2
O
P0.4
I/O
标准 IO 口
AD4
I
地址总线
ADC12
I
ADC 模拟输入通道 12
T3
I
定时器 3 外部时钟输入
P5.2
I/O
RxD4_2
I
LQFP48/QFN48
56
57
41
58
42
59
60
61
62
63
64
深圳国芯人工智能有限公司
43
44
45
46
47
48
国内分销商电话: 0513-5501 2928/2929/2966
地址锁存信号
标准 IO 口
串口 2 的接收脚
PWM5 的捕获输入和脉冲输出
定时器 3 外部时钟输入
PWM6 的捕获输入和脉冲输出
定时器 3 时钟分频输出
PWM7 的捕获输入和脉冲输出
定时器 4 外部时钟输入
PWM8 的捕获输入和脉冲输出
定时器 4 时钟分频输出
标准 IO 口
串口 4 的接收脚
传真: 0513-5501 2926/2956/2947
- 48 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.6 STC8H2K64T-48Pin触摸按键系列
2.6.1
特性及价格
选型价格(不需要外部晶振、不需要外部复位,12 位 ADC,15 通道)
4
有
有
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
是
STC8H2K60T 1.9-5.5 60K 256 2K
2
4K 44
4
有
有
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
是
STC8H2K64T 1.9-5.5 64K 256 2K
2
IAP 44
4
有
有
有
有
有
有
5
8
有 12 位 有
有
有 4级 有
是
有
是
是
是
是
QFN48
LQFP48
2 32K 44
年新品供货信息
2020
价格及封装
直接下载
USB
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
看门狗 复位定时器
内部高精准时钟( 36MHz
以下可调)追频
内部高可靠复位(可选复位门槛电压)
内部低压检测中断并可掉电唤醒
路高速
15
比较器(可当 路
,可作外部掉电检测)
1
A/D
( 路
可当 路
使用)
ADC
8 PWM
8 D/A
掉电唤醒专用定时器
位高级 PWM
定时器 互补对称死区控制
16
定时器 计/数器( T0-T4
外部管脚也可掉电唤醒)
硬件 16
位乘除法器
MDU16
实时时钟
RTC
驱动
LED
触摸按键
I2 C
SPI
串口并可掉电唤醒
口最多数量
I/O
万次 字节
EEPROM 10
强大的双 DPTR
可增可减
,内部大容量扩展 SRAM字节
xdata
,内部传统
idata
8051
RAM字节
程序存储器
万次 字节
Flash
10
工作电压( )
V
单片机型号
STC8H2K32T 1.9-5.5 32K 256 2K
送
样
中
注:以上的单价为 10K 及以上订货量的价格,量小则每片需增加 0.1 元人民币。当订货的总额达到或高于 3000 元时,
可免运费发货,否则需要由客户承担运费。零售 10 片起售。
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
29 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
2048 字节内部扩展 RAM(内部 XDATA)
时钟控制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 49 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.35%~+1.30%温漂(全温度范围,-40℃~85℃)
-0.76%~+0.98%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效)
上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上
电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时,
芯片解除复位状态。
复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4
管脚为复位脚时,复位电平为低电平)
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.0V(实测为 1.90V~2.04V)、2.4V(实测为 2.30V~2.50V)、
2.7V(实测为 2.61V~2.82V)、3.0V(实测为 2.90V~3.13V)。
每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向
下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 29 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支
持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定
时器 2、定时器 3、定时器 4、串口 1、串口 2、串口 3、串口 4、ADC 模数转换、LVD 低压检测、SPI、
I2C、比较器、PWMA、PWMB、RTC、TKS、EXP0、EXP1、EXP2、EXP3、EXP4、EXP5
提供 4 级中断优先级
时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、
T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.4/P4.6)、RXD3(P0.0/P5.0)、
RXD4(P0.2/P5.2)、I2C_SDA(P1.4/P2.4/P3.3)以及比较器中断、低压检测中断、掉电唤醒定时器唤醒。
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
4 个高速串口:串口 1、串口 2、串口 3、串口 4,波特率时钟源最快可为 FOSC/4
8 路/2 组高级 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还支持 16 位定时器、8
个外部中断、8 路外部捕获测量脉宽等功能
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
I/O 口中断:所有的 I/O 均支持中断,每组 I/O 中断有独立的中断入口地址,所有的 I/O 中断可支持 4 种
中断模式:高电平中断、低电平中断、上升沿中断、下降沿中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 50 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
模拟外设
超高速 ADC,支持 12 位高精度 15 通道(通道 0~通道 14)的模数转换,速度最快能达到 800K(每秒进
行 80 万次 ADC 转换)
ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)
比较器,一组比较器(比较器的正端可选择 CMP+端口和所有的 ADC 输入端口,所以比较器可当作多路
比较器进行分时复用)
触摸按键:最多支持 16 个触摸按键;每个触摸按键能够独立使能;内部参考电压 4 级可调;灵活的充放
电时间设置以及内部工作频率设置;支持低功耗触摸唤醒
LED 驱动:最多可驱动 256(8*16*2)个 LED;可支持共阴模式、共阳模式以及共阴/共阳模式;支持 8
级灰度调节(亮度调节)
DAC:8 路高级 PWM 定时器可当 8 路 DAC 使用
GPIO
最多可达 44 个 GPIO:P0.0~P0.7、P1.0~ P1.7(无 P1.2)、P2.0~P2.7、P3.0~P3.7、P4.0~P4.7、P5.0~P5.4
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口时必须先设置 IO
口模式。另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP48、QFN48
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 51 -
STC8H 系列技术手册
技术支持: 13922829991
研发顾问: 13922805190
管脚图
P2.3/A11/PWM2N_2/PWM8/MOSI_2/COM3
P2.2/A10/PWM2P_2/PWM7/SS_2/COM2
P2.1/A9/PWM1N_2/PWM6/COM1
P2.0/A8/PWM1P_2/PWM5/COM0
P4.4/RD/TxD_4/SEG4
P4.3/RxD_4/SCLK_3/SEG3
P4.2/WR/SEG2
P4.1/MISO_3/CMPO_2/PWMETI_2/SEG1
P3.7/INT3/TxD_2/CMP+/SEG15
P3.6/INT2/RxD_2/CMP-/SEG14
P3.5/T1/T0CLKO/SS_4/PWMFLT/PWMFLT2/SEG13
P5.1/TxD3_2/TK9
2.6.2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
36
35
34
33
32
31
30
29
28
27
26
25
注意:
1、ADC的外部参考电源管脚ADC_VRef+,
一定不能浮空,必须接外部参考电
源或者直接连到Vcc
2、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平
37
38
39
40
41
42
43
44
45
46
47
48
LQFP48
QFN48
24
23
22
21
20
19
18
17
16
15
14
13
P5.0/RxD3_2/TK8
P3.4/T0/T1CLKO/MOSI_4/PWM4P_4/PWM8_2/CMPO/SEG12
P3.3/INT1/MISO_4/SDA_4/PWM4N_4/PWM7_2
P3.2/INT0/SCLK_4/SCL_4/PWMETI/PWMETI2
MCU-VCC
P3.1/TxD
22u
0.1u
P3.0/RxD/INT4
P4.0/MOSI_3/SEG0
Gnd/AGnd
ADC_VRef+
Vcc/AVcc
P5.4/RST/MCLKO/SS/SS_3/PWM2P/PWM6_2/ADC2/T2/TK2
TCap
1
2
3
4
5
6
7
8
9
10
11
12
COM4/MISO_2/SDA_2/PWM3P_2/A12/P2.4
COM5/SCLK_2/SCL_2/PWM3N_2/A13/P2.5
COM6/PWM4P_2/A14/P2.6
COM7/PWM4N_2/A15/P2.7
SEG5/ALE/P4.5
SEG6/RxD2_2/P4.6
SEG8/TK12/T3_2/PWM5_3/RxD3/ADC8/AD0/P0.0
SEG9/TK13/T3CLKO_2/PWM6_3/TxD3/ADC9/AD1/P0.1
SEG10/TK14/T4_2/PWM7_3/RxD4/ADC10/AD2/P0.2
SEG11/TK15/T4CLKO_2/PWM8_3/TxD4/ADC11/AD3/P0.3
T3/ADC12/AD4/P0.4
TK10/RxD4_2/P5.2
TK11/TxD4_2/P5.3
T3CLKO/ADC13/AD5/P0.5
PWMETI2_2/T4/ADC14/AD6/P0.6
T4CLKO/AD7/P0.7
TK0/RxD2/PWM1P/ADC0/P1.0
TK1/TxD2/PWM1N/ADC1/P1.1
SEG7/TxD2_2/P4.7
TK4/SDA/MISO/PWM3P/ADC4/P1.4
TK5/SCL/SCLK/PWM3N/ADC5/P1.5
TK6/XTALO/MCLKO_2/RxD_3/PWM4P/ADC6/P1.6
Tk7/XTALI/PWM5_2/TxD_3/PWM4N/ADC7/P1.7
TK3/T2CLKO/MOSI/PWM2N/ADC3/P1.3
0.01u
注意:
1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口
时必须先设置 I/O 口模式
2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入
模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
3、当使能 P5.4 口为复位脚时,复位电平为低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 52 -
STC8H 系列技术手册
2.6.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
名称
类型
说明
P5.3
I/O
TxD4_2
O
串口 4 的发送脚
TK11
I
触摸按键
P0.5
I/O
标准 IO 口
AD5
I
地址总线
ADC13
I
ADC 模拟输入通道 13
T3CLKO
O
定时器 3 时钟分频输出
P0.6
I/O
标准 IO 口
AD6
I
地址总线
ADC14
I
ADC 模拟输入通道 14
T4
I
定时器 4 外部时钟输入
PWMETI2_2
I
PWM 外部触发输入脚 2
P0.7
I/O
标准 IO 口
AD7
I
地址总线
T4CLKO
O
定时器 4 时钟分频输出
P1.0
I/O
ADC0
I
PWM1P
I/O
RxD2
I
串口 2 的接收脚
TK0
I
触摸按键
P1.1
I/O
标准 IO 口
ADC1
I
PWM1N
I/O
TxD2
I
串口 2 的发送脚
TK1
I
触摸按键
P4.7
I/O
标准 IO 口
TxD2_2
I
串口 2 的发送脚
SEG7
O
LED 驱动
P1.4
I/O
标准 IO 口
ADC4
I
PWM3P
I/O
PWM3 的捕获输入和脉冲输出正极
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
TK4
I
LQFP48/QFN48
1
2
3
4
5
6
7
8
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
ADC 模拟输入通道 0
PWMA 的捕获输入和脉冲输出正极
ADC 模拟输入通道 1
PWMA 的捕获输入和脉冲输出负极
ADC 模拟输入通道 4
触摸按键
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 53 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.5
I/O
ADC5
I
PWM3N
I/O
PWM3 的捕获输入和脉冲输出负极
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
TK5
I
触摸按键
P1.6
I/O
标准 IO 口
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
PWM4P
I/O
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
TK6
I
触摸按键
P1.7
I/O
标准 IO 口
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
PWM4N
I/O
PWM4 的捕获输入和脉冲输出负极
PWM5_2
I/O
PWM5 的捕获输入和脉冲输出
XTALI
I
外部晶振/外部时钟的输入脚
TK7
I
触摸按键
P1.3
I/O
标准 IO 口
ADC3
I
ADC 模拟输入通道 3
MOSI
I/O
SPI 主机输出从机输入
PWM2N
I/O
PWMB 的捕获输入和脉冲输出负极
T2CLKO
O
定时器 2 时钟分频输出
TK3
I
触摸按键
TCAP
I
触摸按键充放电电容
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS_3
I
SPI 的从机选择脚(主机为输出)
SS
I
SPI 的从机选择脚(主机为输出)
PWM2P
I/O
PWMB 的捕获输入和脉冲输出正极
PWM6_2
I/O
PWM6 的捕获输入和脉冲输出
T2
I
定时器 2 外部时钟输入
ADC2
I
ADC 模拟输入通道 2
TK2
I
触摸按键
LQFP48/QFN48
9
10
11
12
13
14
深圳国芯人工智能有限公司
标准 IO 口
ADC 模拟输入通道 5
PWM4 的捕获输入和脉冲输出正极
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 54 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源脚
ADC_VRef+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
P4.0
I/O
标准 IO 口
MOSI_3
I/O
SPI 主机输出从机输入
SEG0
O
LED 驱动
P3.0
I/O
标准 IO 口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
TxD
O
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
PWMETI
I
PWM 外部触发输入脚
PWMETI2
I
PWM 外部触发输入脚 2
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 接口的数据线
PWM4N_4
I/O
PWM4 的捕获输入和脉冲输出负极
PWM7_2
I/O
PWM7 的捕获输入和脉冲输出
P3.4
I/O
标准 IO 口
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
PWM4P_4
I/O
PWM4 的捕获输入和脉冲输出正极
PWM8_2
I/O
PWM8 的捕获输入和脉冲输出
CMPO
O
比较器输出
SEG12
O
LED 驱动
P5.0
I/O
标准 IO 口
RxD3_2
I
串口 3 的接收脚
TK8
I
触摸按键
P5.1
I/O
标准 IO 口
TxD3_2
O
串口 3 的发送脚
TK9
I
触摸按键
LQFP48/QFN48
15
16
17
18
19
20
21
22
23
24
25
深圳国芯人工智能有限公司
ADC 外部参考电压源输入脚,要求不高时
可直接接 MCU 的 VCC
串口 1 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 55 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
研发顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 56 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.5
I/O
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
PWMFLT
I
增强 PWMA 的外部异常检测脚
PWMFLT2
I
增强 PWMB 的外部异常检测脚
SEG13
O
LED 驱动
P3.6
I/O
标准 IO 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
SEG14
O
LED 驱动
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
SEG15
O
LED 驱动
P4.1
I/O
标准 IO 口
MISO_3
I/O
SPI 主机输入从机输出
CMPO_2
O
比较器输出
PWMETI_3
I
PWM 外部触发输入脚
SEG1
O
LED 驱动
P4.2
I/O
标准 IO 口
WR
O
外部总线的写信号线
SEG2
O
LED 驱动
P4.3
I/O
标准 IO 口
RxD_4
I
SCLK_3
I/O
SEG3
O
LED 驱动
P4.4
I/O
标准 IO 口
RD
O
外部总线的读信号线
TxD_4
O
串口 1 的发送脚
SEG4
O
LED 驱动
P2.0
I/O
标准 IO 口
A8
I
地址总线
PWM1P_2
I/O
PWMA 的捕获输入和脉冲输出正极
PWM5
I/O
PWM5 的捕获输入和脉冲输出
COM0
O
LQFP48/QFN48
26
27
28
29
30
31
32
33
深圳国芯人工智能有限公司
标准 IO 口
串口 1 的接收脚
SPI 的时钟脚
LED 驱动
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 57 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.1
I/O
标准 IO 口
A9
I
地址总线
PWM1N_2
I/O
PWMA 的捕获输入和脉冲输出负极
PWM6
I/O
PWM6 的捕获输入和脉冲输出
COM1
O
LED 驱动
P2.2
I/O
标准 IO 口
A10
I
地址总线
SS_2
I
SPI 的从机选择脚(主机为输出)
PWM2P_2
I/O
PWMB 的捕获输入和脉冲输出正极
PWM7
I/O
PWM7 的捕获输入和脉冲输出
COM2
O
LED 驱动
P2.3
I/O
标准 IO 口
A11
I
地址总线
MOSI_2
I/O
SPI 主机输出从机输入
PWM2N_2
I/O
PWMB 的捕获输入和脉冲输出负极
PWM8
I/O
PWM8 的捕获输入和脉冲输出
COM3
O
LED 驱动
P2.4
I/O
标准 IO 口
A12
I
地址总线
MISO_2
I/O
SPI 主机输入从机输出
SDA_2
I/O
I2C 接口的数据线
PWM3P_2
I/O
PWM3 的捕获输入和脉冲输出正极
COM4
O
LED 驱动
P2.5
I/O
标准 IO 口
A13
I
地址总线
SCLK_2
I/O
SPI 的时钟脚
SCL_2
I/O
I2C 的时钟线
PWM3N_2
I/O
PWM3 的捕获输入和脉冲输出负极
COM5
O
LED 驱动
P2.6
I/O
标准 IO 口
A14
I
地址总线
PWM4P_2
I/O
COM6
O
LED 驱动
P2.7
I/O
标准 IO 口
A15
I
地址总线
PWM4N_2
I/O
COM7
O
LQFP48/QFN48
34
35
36
37
38
39
40
深圳国芯人工智能有限公司
PWM4 的捕获输入和脉冲输出正极
PWM4 的捕获输入和脉冲输出负极
LED 驱动
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 58 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P4.5
I/O
ALE
O
地址锁存信号
SEG5
O
LED 驱动
P4.6
I/O
标准 IO 口
RxD2_2
I
串口 2 的接收脚
SEG6
O
LED 驱动
P0.0
I/O
标准 IO 口
AD0
I
地址总线
ADC8
I
ADC 模拟输入通道 8
RxD3
I
串口 3 的接收脚
PWM5_3
I/O
T3_2
I
定时器 3 外部时钟输入
TK12
I
触摸按键
SEG8
O
LED 驱动
P0.1
I/O
标准 IO 口
AD1
I
地址总线
ADC9
I
ADC 模拟输入通道 9
TxD3
O
串口 3 的发送脚
PWM6_3
I/O
T3CLKO_2
O
定时器 3 时钟分频输出
TK13
I
触摸按键
SEG9
O
LED 驱动
P0.2
I/O
标准 IO 口
AD2
I
地址总线
ADC10
I
ADC 模拟输入通道 10
RxD4
I
串口 4 的接收脚
PWM7_3
I/O
T4_2
I
定时器 4 外部时钟输入
TK14
I
触摸按键
SEG10
O
LED 驱动
P0.3
I/O
标准 IO 口
AD3
I
地址总线
ADC11
I
ADC 模拟输入通道 11
TxD4
O
串口 4 的发送脚
PWM8_3
I/O
T4CLKO_2
O
定时器 4 时钟分频输出
TK15
I
触摸按键
SEG11
O
LED 驱动
LQFP48/QFN48
41
42
43
44
45
46
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
标准 IO 口
PWM5 的捕获输入和脉冲输出
PWM6 的捕获输入和脉冲输出
PWM7 的捕获输入和脉冲输出
PWM8 的捕获输入和脉冲输出
传真: 0513-5501 2926/2956/2947
- 59 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P0.4
I/O
标准 IO 口
AD4
I
地址总线
ADC12
I
ADC 模拟输入通道 12
T3
I
定时器 3 外部时钟输入
P5.2
I/O
RxD4_2
I
LQFP48/QFN48
47
48
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
标准 IO 口
串口 4 的接收脚
传真: 0513-5501 2926/2956/2947
- 60 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
3 功能脚切换
STC8H 系列单片机的特殊外设串口、SPI、PWM、I2C 以及总线控制脚可以在多个 I/O 直接进行切
换,以实现一个外设当作多个设备进行分时复用。
3.1 功能脚切换相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
P_SW1
外设端口切换寄存器 1
A2H
P_SW2
外设端口切换寄存器 2
BAH
B6
S1_S[1:0]
EAXFR
B5
B4
-
-
I2C_S[1:0]
-
B3
B2
B1
B0
0
-
nnxx,000x
S4_S
S3_S
S2_S
0x00,0000
B2
B1
B0
SPI_S[1:0]
CMPO_S
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
MCLKOCR
主时钟输出控制寄存器
FE05H
MCLKODIV[6:0]
PWMA_PS
PWMA 切换寄存器
FEB2H
C4PS[1:0]
C3PS[1:0]
C2PS[1:0]
C1PS[1:0]
0000,0000
PWMB_PS
PWMB 切换寄存器
FEB6H
C8PS[1:0]
C7PS[1:0]
C6PS[1:0]
C5PS[1:0]
0000,0000
MCLKO_S
0000,0000
PWMA_ETRPS PWMA 的 ETR 选择寄存器
FEB0H
BRKAPS
ETRAPS[1:0]
xxxx,x000
PWMB_ETRPS PWMB 的 ETR 选择寄存器
FEB4H
BRKBPS
ETRBPS[1:0]
xxxx,x000
T3T4PIN
FEACH
T3/T4 选择寄存器
3.1.1
-
-
-
-
-
-
-
T3T4SEL xxxx,xxx0
外设端口切换控制寄存器 1(P_SW1)
,串口 1、SPI切换
符号
地址
P_SW1
A2H
B7
B6
S1_S[1:0]
B5
B4
-
-
B3
SPI_S[1:0]
B2
B1
B0
0
-
S1_S[1:0]:串口 1 功能脚选择位
S1_S[1:0]
RxD
TxD
00
P3.0
P3.1
01
P3.6
P3.7
10
P1.6
P1.7
11
P4.3
P4.4
SPI_S[1:0]:SPI 功能脚选择位
SPI_S[1:0]
SS
MOSI
MISO
SCLK
00
P1.2/P5.4
P1.3
P1.4
P1.5
01
P2.2
P2.3
P2.4
P2.5
10
P5.4
P4.0
P4.1
P4.3
11
P3.5
P3.4
P3.3
P3.2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 61 -
STC8H 系列技术手册
3.1.2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
外设端口切换控制寄存器 2(P_SW2),串口 2/3/4、I2C、
比较器输出切换
符号
地址
B7
B6
P_SW2
BAH
EAXFR
-
B5
B4
I2C_S[1:0]
B3
B2
B1
B0
CMPO_S
S4_S
S3_S
S2_S
B2
B1
B0
B2
B1
B0
EAXFR:扩展 RAM 区特殊功能寄存器(XFR)访问控制寄存器
0:禁止访问 XFR
1:使能访问 XFR。
当需要访问 XFR 时,必须先将 EAXFR 置 1,才能对 XFR 进行正常的读写
I2C_S[1:0]:I2C 功能脚选择位
I2C_S[1:0]
SCL
SDA
00
P1.5
P1.4
01
P2.5
P2.4
10
-
-
11
P3.2
P3.3
CMPO_S:比较器输出脚选择位
CMPO_S
CMPO
0
P3.4
1
P4.1
S4_S:串口 4 功能脚选择位
S4_S
RxD4
TxD4
0
P0.2
P0.3
1
P5.2
P5.3
S3_S:串口 3 功能脚选择位
S3_S
RxD3
TxD3
0
P0.0
P0.1
1
P5.0
P5.1
S2_S:串口 2 功能脚选择位
S2_S
RxD2
TxD2
0
P1.0
P1.1
1
P4.6
P4.7
3.1.3
时钟选择寄存器(MCLKOCR)
符号
地址
B7
MCLKOCR
FE05H
MCLKO_S
B6
B5
B4
B3
MCLKODIV[6:0]
MCLKO_S:主时钟输出脚选择位
MCLKO_S
MCLKO
0
P5.4
1
P1.6
3.1.4
符号
T3/T4 选择寄存器(T3T4PIN)
地址
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
传真: 0513-5501 2926/2956/2947
- 62 -
STC8H 系列技术手册
T3T4PIN
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
FEACH
-
-
-
技术支持: 13922829991
-
-
-
研发顾问: 13922805190
-
T3T4SEL
T3T4SEL:T3/T3CLKO/T4/T4CLKO 脚选择位
T3T4SEL
T3
T3CLKO
T4
T4CLKO
0
P0.4
P0.5
P0.6
P0.7
1
P0.0
P0.1
P0.2
P0.3
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 63 -
STC8H 系列技术手册
3.1.5
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
高级PWM选择寄存器(PWMx_PS)
B7
B6
B5
B4
B3
B2
B1
B0
符号
地址
PWMA_PS
FEB2H
C4PS[1:0]
C3PS[1:0]
C2PS[1:0]
C1PS[1:0]
PWMB_PS
FEB6H
C8PS[1:0]
C7PS[1:0]
C6PS[1:0]
C5PS[1:0]
C1PS[1:0]:高级 PWM 通道 1 输出脚选择位
C1PS[1:0]
PWM1P
PWM1N
00
P1.0
P1.1
01
P2.0
P2.1
10
P6.0
P6.1
11
-
-
C2PS[1:0]:高级 PWM 通道 2 输出脚选择位
C2PS[1:0]
PWM2P
PWM2N
00
P1.2/P5.4
P1.3
01
P2.2
P2.3
10
P6.2
P6.3
11
-
-
C3PS[1:0]:高级 PWM 通道 3 输出脚选择位
C3PS[1:0]
PWM3P
PWM3N
00
P1.4
P1.5
01
P2.4
P2.5
10
P6.4
P6.5
11
-
-
C4PS[1:0]:高级 PWM 通道 4 输出脚选择位
C4PS[1:0]
PWM4P
PWM4N
00
P1.6
P1.7
01
P2.6
P2.7
10
P6.6
P6.7
11
P3.4
P3.3
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 64 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C5PS[1:0]:高级 PWM 通道 5 输出脚选择位
C5PS[1:0]
PWM5
00
P2.0
01
P1.7
10
P0.0
11
P7.4
C6PS[1:0]:高级 PWM 通道 6 输出脚选择位
C6PS[1:0]
PWM6
00
P2.1
01
P5.4
10
P0.1
11
P7.5
C7PS[1:0]:高级 PWM 通道 7 输出脚选择位
C7PS[1:0]
PWM7
00
P2.2
01
P3.3
10
P0.2
11
P7.6
C8PS[1:0]:高级 PWM 通道 8 输出脚选择位
C8PS[1:0]
PWM8
00
P2.3
01
P3.4
10
P0.3
11
P7.7
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 65 -
STC8H 系列技术手册
3.1.6
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
高级PWM功能脚选择寄存器(PWMx_ETRPS)
B7
B6
B5
B4
B3
B2
B1
B0
符号
地址
PWMA_ETRPS
FEB0H
BRKAPS
ETRAPS[1:0]
PWMB_ETRPS
FEB4H
BRKBPS
ETRBPS[1:0]
ETRAPS[1:0]:高级 PWMA 的外部触发脚 ERI 选择位
ETRAPS [1:0]
PWMETI
00
P3.2
01
P4.1
10
P7.3
11
-
ETRBPS[1:0]:高级 PWMB 的外部触发脚 ERIB 选择位
ETRBPS [1:0]
PWMETI2
00
P3.2
01
P0.6
10
-
11
-
BRKAPS:高级 PWMA 的刹车脚 PWMFLT 选择位
BRKAPS
PWMFLT
0
P3.5
1
比较器的输出
BRKBPS:高级 PWMB 的刹车脚 PWMFLT2 选择位
BRKBPS
PWMFLT2
0
P3.5
1
比较器的输出
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 66 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
3.2 范例程序
串口 1 切换
3.2.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW1
=
0xa2;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
//
//
P_SW1 = 0x00;
P_SW1 = 0x40;
P_SW1 = 0x80;
P_SW1 = 0xc0;
//RXD/P3.0, TXD/P3.1
//RXD_2/P3.6, TXD_2/P3.7
//RXD_3/P1.6, TXD_3/P1.7
//RXD_4/P4.3, TXD_4/P4.4
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW1
DATA
0A2H
P1M1
P1M0
DATA
DATA
091H
092H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 67 -
STC8H 系列技术手册
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
P_SW1,#00H
P_SW1,#40H
P_SW1,#80H
P_SW1,#0C0H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;
;
;RXD/P3.0, TXD/P3.1
;RXD_2/P3.6, TXD_2/P3.7
;RXD_3/P1.6, TXD_3/P1.7
;RXD_4/P4.3, TXD_4/P4.4
END
3.2.2
串口 2 切换
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 68 -
STC8H 系列技术手册
sfr
sfr
sfr
sfr
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P4M1
P4M0
P5M1
P5M0
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
P_SW2 = 0x00;
P_SW2 = 0x01;
//RXD2/P1.0, TXD2/P1.1
//RXD2_2/P4.6, TXD2_2/P4.7
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 69 -
STC8H 系列技术手册
;
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
P_SW2,#00H
P_SW2,#01H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;RXD2/P1.0, TXD2/P1.1
;RXD2_2/P4.0, TXD2_2/P4.2
END
3.2.3
串口 3 切换
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
P_SW2 = 0x00;
P_SW2 = 0x02;
//RXD3/P0.0, TXD3/P0.1
//RXD3_2/P5.0, TXD3_2/P5.1
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 70 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
P_SW2,#00H
P_SW2,#02H
SJMP
$
MAIN:
;
;RXD3/P0.0, TXD3/P0.1
;RXD3_2/P5.0, TXD3_2/P5.1
END
3.2.4
串口 4 切换
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW2
=
0xba;
sfr
sfr
P0M1
P0M0
=
=
0x93;
0x94;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 71 -
STC8H 系列技术手册
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
P_SW2 = 0x00;
P_SW2 = 0x04;
//RXD4/P0.2, TXD4/P0.3
//RXD4_2/P5.2, TXD4_2/P5.3
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 72 -
STC8H 系列技术手册
;
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
P_SW2,#00H
P_SW2,#04H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;RXD4/P0.2, TXD4/P0.3
;RXD4_2/P5.2, TXD4_2/P5.3
END
3.2.5
SPI切换
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW1
=
0xa2;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW1 = 0x00;
深圳国芯人工智能有限公司
//SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 73 -
STC8H 系列技术手册
//
//
//
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P_SW1 = 0x04;
P_SW1 = 0x08;
P_SW1 = 0x0c;
技术支持: 13922829991
研发顾问: 13922805190
//SS_2/P2.2, MOSI_2/P2.3, MISO_2/P2.4, SCLK_2/P2.5
//SS_3/P5.4, MOSI_3/P4.0, MISO_3/P4.1, SCLK_3/P4.3
//SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW1
DATA
0A2H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
P_SW1,#00H
P_SW1,#04H
P_SW1,#08H
P_SW1,#0CH
SJMP
$
MAIN:
;
;
;
;SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5
;SS_2/P2.2, MOSI_2/P2.3, MISO_2/P2.4, SCLK_2/P2.5
;SS_3/P5.4, MOSI_3/P4.0, MISO_3/P4.1, SCLK_3/P4.3
;SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2
END
3.2.6
I2C切换
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 74 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
//
P_SW2 = 0x00;
P_SW2 = 0x10;
P_SW2 = 0x30;
//SCL/P1.5, SDA/P1.4
//SCL_2/P2.5, SDA_2/P2.4
//SCL_4/P3.2, SDA_4/P3.3
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 75 -
STC8H 系列技术手册
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
P_SW2,#00H
P_SW2,#10H
P_SW2,#30H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;
;SCL/P1.5, SDA/P1.4
;SCL_2/P2.5, SDA_2/P2.4
;SCL_4/P3.2, SDA_4/P3.3
END
3.2.7
比较器输出切换
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 76 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
P_SW2 = 0x00;
P_SW2 = 0x08;
//CMPO/P3.4
//CMPO_2/P4.1
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
P_SW2,#00H
P_SW2,#08H
SJMP
$
MAIN:
;
深圳国芯人工智能有限公司
;CMPO/P3.4
;CMPO_2/P4.1
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 77 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
END
主时钟输出切换
3.2.8
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#define
CLKOCR
(*(unsigned char volatile xdata *)0xfe00)
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
P_SW2 = 0x80;
CLKOCR = 0x04;
CLKOCR = 0x84;
P_SW2 = 0x00;
//IRC/4 output via MCLKO/P5.4
//IRC/4 output via MCLKO_2/P1.6
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
深圳国芯人工智能有限公司
0BAH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 78 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
CLKOCR
EQU
0FE05H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#04H
A,#84H
DPTR,#CLKOCR
@DPTR,A
P_SW2,#00H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;IRC/4 output via MCLKO/P5.4
;IRC/4 output via MCLKO_2/P1.6
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 79 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4 封装尺寸图
4.1 SOP8 封装尺寸图
8
5
1
4
e (1.27mm)
MAX
1.75
0.25
1.65
0.75
0.45
5.00
6.20
4.00
0.80
-
R1
A3
R
b(0.40mm)
A1
A
A2
一般尺寸
测量单位:毫米/mm
MIN
TYP
1.35
1.60
0.10
0.15
1.25
1.45
0.55
0.65
0.35
0.40
4.80
4.90
5.80
6.00
3.80
3.90
1.27BSC
0.45
0.60
1.04REF
0.25BSC
0.07
0.07
-
SYMBOL
A
A1
A2
A3
b
D
E
E1
e
L
L1
L2
R1
R2
E1 (3.9mm)
E (6.0mm)
D (4.9mm)
L2
?
L
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 80 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.2 DFN8 封装尺寸图(3mm*3mm)
D (3mm)
E (3mm)
1
8
PIN 1
4
5
L(0.4mm)
K
D2
b(0.2mm)
E2
4
R
MAX
0.80
0.05
0.60
0.225
3.11
3.11
1.75
2.45
0.55
0.419
-
A3
A1
A
e(0.5mm)
1
SYMBOL
A
A1
A2
A3
b
D
E
D2
E2
e
L
K
R
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.70
0.75
0
0.02
0.50
0.55
0.203REF
0.175
0.20
2.89
3.00
2.89
3.00
1.65
1.70
2.35
2.40
0.45
0.50
0.381
0.40
0.275REF
0.125
-
STC 现有 DFN8 封装芯片的背面金属片(衬底),在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 81 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.3 SOP16 封装尺寸图
16
9
1
8
e (1.27mm)
MAX
1.75
0.25
1.65
0.75
0.45
10.00
6.20
4.00
0.80
-
R1
A3
R
b(0.40mm)
A1
A
A2
一般尺寸
测量单位:毫米/mm
MIN
TYP
1.35
1.60
0.10
0.15
1.25
1.45
0.55
0.65
0.35
0.40
9.80
9.90
5.80
6.00
3.80
3.90
1.27BSC
0.45
0.60
1.04REF
0.25BSC
0.07
0.07
-
SYMBOL
A
A1
A2
A3
b
D
E
E1
e
L
L1
L2
R1
R2
E1 (3.9mm)
E (6.0mm)
D (9.9mm)
L2
?
L
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 82 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.4 TSSOP20 封装尺寸图
D (6.5mm)
11
SYMBOL
A
A1
A2
A3
b
D
E
E1
e
L
L1
L2
R1
R2
E1 (4.4mm)
E (6.5mm)
20
1
10
e (0.65mm)
MAX
1.20
0.15
1.05
0.54
0.28
6.60
6.60
4.50
0.75
-
R1
A3
R
b(0.24mm)
A1
A
A2
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.05
0.90
1.00
0.34
0.44
0.20
0.24
6.40
6.50
6.20
6.50
4.30
4.40
0.65BSC
0.45
0.60
1.00REF
0.25BSC
0.09
0.09
-
L2
?
L
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 83 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.5 QFN20 封装尺寸图(3mm*3mm)
D (3mm)
20
16
SYMBOL
A
A1
A2
A3
b
D
E
D2
E2
e
L
K
R
C1
C2
15
E (3mm)
1
PIN 1
5
11
6
10
K
18
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.70
0.75
0
0.02
0.50
0.55
0.20REF
0.15
0.20
2.90
3.00
2.90
3.00
1.40
1.50
1.40
1.50
0.30
0.40
0.35
0.40
0.35REF
0.085
0.07
0.07
MAX
0.80
0.05
0.60
0.25
3.10
3.10
1.60
1.60
0.50
0.45
-
20
L
E2
D2 R
4
11
C2
A3
C1
A1
b(0.20mm)
A
e(0.4mm)
1
STC 现有 QFN20 封装芯片的背面金属片(衬底)
,在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 84 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.6 LQFP32 封装尺寸图(9mm*9mm)
D (9mm)
D1 (7mm)
17
25
16
32
9
SYMBOL
A
A1
A2
A3
b1
b
c
D
D1
E
E1
e
L
L
L1
R
R1
E1 (7mm)
E (9mm)
24
1
8
e (0.80mm) b(0.30mm)
?
一般尺寸
测量单位:毫米/mm
MIN
TYP
1.45
1.55
0.01
1.35
1.40
0.254
0.30
0.35
0.31
0.37
0.127
8.80
9.00
6.90
7.00
8.80
9.00
6.90
7.00
0.70
0.80
0.43
1.00REF
0.25BSC
0.1
0.1
0°
-
(A-A的截面图)
R
A3
b1
b
?
L
A1
A
0.25
10°
R1
c
A2
MAX
1.65
0.21
1.45
0.40
0.43
9.20
7.10
9.20
7.10
0.90
0.71
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 85 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.7 QFN32 封装尺寸图(4mm*4mm)
D (4mm)
32
19
1
SYMBOL
A
A1
A2
A3
b
D
E
D2
E2
e
L
K
R
C1
C2
18
E (4mm)
PIN 1
8
17
9
16
K
27
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.70
0.75
0
0.02
0.50
0.55
0.20REF
0.15
0.20
3.90
4.00
3.90
4.00
2.60
2.70
2.60
2.70
0.30
0.40
0.35
0.40
0.25REF
0.09
0.16
0.16
MAX
0.80
0.05
0.60
0.25
4.10
4.10
2.80
2.80
0.50
0.45
-
32
L
e(0.4mm)
1
E2
R
b(0.20mm)
12
C1
A3
7
17
A1
A
D2
C2
STC 现有 QFN32 封装芯片的背面金属片(衬底)
,在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 86 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.8 LQFP48 封装尺寸图(9mm*9mm)
D (9mm)
D1 (7mm)
25
37
24
48
13
E1 (7mm)
E (9mm)
36
1
12
MAX
1.60
0.15
1.45
0.69
0.27
0.23
0.18
0.134
9.20
7.10
9.20
7.10
0.55
0.75
0.20
-
b
R1
A2
A3
R2
A1
A
e (0.5mm)
SYMBOL
A
A1
A2
A3
b
b1
c
c1
D
D1
E
E1
e
L
L1
L2
R1
R2
S
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.05
1.35
1.40
0.59
0.64
0.18
0.17
0.20
0.13
0.12
0.127
8.80
9.00
6.90
7.00
8.80
9.00
6.90
7.00
0.45
0.50
0.45
0.60
1.00REF
0.25BSC
0.08
0.08
0.20
-
L2
L
b
b1
c
L1
c1
(A-A的截面图)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 87 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.9 QFN48 封装尺寸图(6mm*6mm)
D (6mm)
48
37
1
36
E (6mm)
PIN 1
12
25
13
SYMBOL
A
A1
A3
b
D
E
D2
E2
e
L
K
R
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.70
0.75
0.00
0.02
0.20REF
0.15
0.20
5.90
6.00
5.90
6.00
3.95
4.05
3.95
4.05
0.35
0.40
0.35
0.40
0.20
0.09
-
MAX
0.80
0.05
0.25
6.10
6.10
4.15
4.15
0.45
0.45
-
24
K
39
48
A3
1
35
A1
A
L
E2
e(0.4mm)
R
D2
25
12
24
b(0.20mm)
13
STC 现有 QFN48 封装芯片的背面金属片(衬底)
,在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 88 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.10 LQFP64S封装尺寸图(12mm*12mm)
A
D (12mm)
A2
D1 (10mm)
48
A3
33
49
32
E1 (10mm)
E (12mm)
TOP E-MARK 2-Φ1.8±0.1 DEPTH 0.1±0.05
BTM E-MARK 2-Φ1.8±0.1 DEPTH 0.1±0.05
INDEX Φ1.2±0.1 DEPTH 0.2±0.1
64
17
1
16
e (0.5mm)
SYMBOL
A
A1
A2
A3
b
b1
c
c1
D
D1
E
E1
e
L
L1
L2
R1
R2
S
?
?1
?2
?3
深圳国芯人工智能有限公司
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.05
1.35
1.40
0.59
0.64
0.18
0.17
0.20
0.13
0.12
0.127
11.80
12.00
9.90
10.00
11.80
12.00
9.90
10.00
0.50BSC
0.45
0.60
1.00REF
0.25BSC
0.08
0.08
0.20
0°
3.5°
0°
11°
12°
11°
12°
A1
b
R1
MAX
1.60
0.15
1.45
0.69
0.27
0.23
0.18
0.134
12.20
10.10
12.20
10.10
R2
?3
?
L2
L1
L
S
b
0.75
0.20
7°
13°
13°
?2
?1
b1
c
c1
国内分销商电话: 0513-5501 2928/2929/2966
(A-A的截面图)
传真: 0513-5501 2926/2956/2947
- 89 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.11 QFN64 封装尺寸图(8mm*8mm)
D (8mm)
64
49
1
48
E (8mm)
PIN 1
16
SYMBOL
A
A1
A2
A3
b
D
E
D2
E2
e
L
K
R
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.70
0.75
0.00
0.02
0.50
0.55
0.20REF
0.15
0.20
7.90
8.00
7.90
8.00
5.90
6.00
5.90
6.00
0.30
0.40
0.30
0.40
0.40
0.09
-
MAX
0.80
0.05
0.60
0.25
8.10
8.10
6.10
6.10
0.50
0.50
-
33
32
K
51
A3
A1
A
17
64
L
1
47
R
e(0.4mm)
E2
D2
33
16
32
b(0.20mm)
17
STC 现有 QFN64 封装芯片的背面金属片(衬底)
,在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 90 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.12 STC8H系列单片机命名规则
STC
8x
xK
xx
Sx
U
USB
串口
4:4个独立串口
2:2个独立串口
程序空间大小
08:8K字节
16:16K字节
28:28K字节
64:64K字节
SRAM空间大小
1K:1K字节
2K:2K字节
8K:8K字节
子系列
8H:STC8H系列
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 91 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
5 ISP下载及典型应用线路图
5.1 STC8H系列ISP下载应用线路图
使用RS-232 转换器下载(一般精度ADC),也可支持仿真
5.1.1
Vcc
系统电源
(可从USB取电)
Vin
Power On
Vcc
47u
C?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
P0.0
P0.1
P0.2
P0.3
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
Vcc
Vref+
Gnd
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
Vcc
SP3232/
SP232/
MAX3232/
MAX232
0.1u
0.1u
0.1u
0.1u
1
2
3
4
5
6
7
8
VCC
C1+
GND
V+
T1OUT
C1R1IN
C2+
R1OUT
C2T1IN
VT2IN
T2OUT
R2OUT
R2IN
16 10u
15
14
13
12
11
10
9
0.1u
1
6
2
7
3
8
4
9
5
100欧
STC8H1K16
1N5819
47u钽电容(封装3528)参考价 8);
UartSend(*F32K);
//读取 32K 频率的高字节
//读取 32K 频率的低字节
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
F32K
DATA
EQU
8EH
03FF5H
BUSY
BIT
20H.0
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
; STC8H1K16
UART_ISR:
CHKRI:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 183 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JNB
CLR
UARTISR_EXIT:
RETI
技术支持: 13922829991
研发顾问: 13922805190
RI,UARTISR_EXIT
RI
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
CLR
MOVC
LCALL
INC
CLR
MOVC
LCALL
DPTR,#F32K
A
A,@A+DPTR
UART_SEND
DPTR
A
A,@A+DPTR
UART_SEND
JMP
LOOP
;65536-11059200/115200/4=0FFE8H
UART_SEND:
MAIN:
;读取 32K 频率的高字节
;读取 32K 频率的低字节
LOOP:
END
7.3.6
读取 32K掉电唤醒定时器的频率 (从RAM中读取)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 184 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
int
busy;
*F32K;
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 185 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
F32K = (int idata *)0xf8;
UartInit();
ES = 1;
EA = 1;
//读取 32K 频率的高字节
//读取 32K 频率的低字节
UartSend(*F32K >> 8);
UartSend(*F32K);
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
F32K
DATA
DATA
8EH
0F8H
BUSY
BIT
20H.0
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
UART_ISR:
CHKRI:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 186 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JNB
CLR
UARTISR_EXIT:
RETI
技术支持: 13922829991
研发顾问: 13922805190
RI,UARTISR_EXIT
RI
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
MOV
LCALL
INC
MOV
LCALL
R0,#F32K
A,@R0
UART_SEND
R0
A,@R0
UART_SEND
JMP
LOOP
;65536-11059200/115200/4=0FFE8H
UART_SEND:
MAIN:
;读取 32K 频率的高字节
;读取 32K 频率的低字节
LOOP:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 187 -
STC8H 系列技术手册
7.3.7
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
用户自定义内部IRC频率 (从Flash 程序存储器(ROM)中
读取)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
CKSEL
CLKDIV
(*(unsigned char volatile xdata *)0xfe00)
(*(unsigned char volatile xdata *)0xfe01)
sfr
sfr
P_SW2
IRCCR
=
=
0xba;
0x9f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
char
char
*IRC22M;
*IRC24M;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
IRC22M = (char code *)0x3df4;
IRC24M = (char code *) 03fdf3;
// STC8H1K16
IRCCR = *IRC22M;
IRCCR = *IRC24M;
//装载 22.1184MHz 的 IRC 参数
//装载 24MHz 的 IRC 参数
P_SW2 = 0x80;
CLKDIV = 0;
CKSEL = 0x40;
//主时钟不预分频
//主时钟 4 分频输出到 P5.4 口
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 188 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P_SW2 = 0x00;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
CKSEL
CLKDIV
DATA
EQU
EQU
0BAH
0FE00H
0FE01H
IRCCR
DATA
09FH
IRC22M
IRC24M
EQU
EQU
03DF4H
03DF3H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
CLR
MOVC
MOV
MOV
CLR
MOVC
MOV
DPTR,#IRC22M
A
A,@A+DPTR
IRCCR,A
DPTR,#IRC24M
A
A,@A+DPTR
IRCCR,A
; STC8H1K16
MAIN:
;
;
;
;
深圳国芯人工智能有限公司
;装载 22.1184MHz 的 IRC 参数
;装载 24MHz 的 IRC 参数
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 189 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#0
DPTR,#CLKDIV
@DPTR,A
A,#40H
DPTR,#CKSEL
@DPTR,A
P_SW2,#00H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;主时钟不预分频
;主时钟 4 分频输出到 P5.4 口
END
7.3.8
用户自定义内部IRC频率 (从RAM中读取)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
CKSEL
CLKDIV
(*(unsigned char volatile xdata *)0xfe00)
(*(unsigned char volatile xdata *)0xfe01)
sfr
sfr
P_SW2
IRCCR
=
=
0xba;
0x9f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
char
char
*IRC22M;
*IRC24M;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 190 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P5M0 = 0x00;
P5M1 = 0x00;
//
IRC22M = (char idata *)0xfa;
IRC24M = (char idata *) 0xfb;
IRCCR = *IRC22M;
IRCCR = *IRC24M;
P_SW2 = 0x80;
CLKDIV = 0;
CKSEL = 0x40;
P_SW2 = 0x00;
//装载 22.1184MHz 的 IRC 参数
//装载 24MHz 的 IRC 参数
//主时钟不预分频
//主时钟 4 分频输出到 P5.4 口
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
CKSEL
CLKDIV
DATA
EQU
EQU
0BAH
0FE00H
0FE01H
IRCCR
DATA
09FH
IRC22M
IRC24M
DATA
DATA
0FAH
0FBH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 191 -
STC8H 系列技术手册
;
;
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
P5M1, #00H
MOV
MOV
MOV
MOV
R0,#IRC22M
IRCCR,@R0
R0,#IRC24M
IRCCR,@R0
MOV
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#0
DPTR,#CLKDIV
@DPTR,A
A,#40H
DPTR,#CKSEL
@DPTR,A
P_SW2,#00H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;装载 22.1184MHz 的 IRC 参数
;装载 24MHz 的 IRC 参数
;主时钟不预分频
;主时钟 4 分频输出到 P5.4 口
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 192 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8 特殊功能寄存器
8.1 STC8H1K08-20Pin系列
0/8
1/9
2/A
3/B
4/C
5/D
6/E
F8H
F0H
RSTCFG
B
IAP_TPS
E8H
E0H
7/F
AUXINTIF
ACC
DPS
DPL1
DPH1
D8H
CMPCR1
CMPCR2
ADCCFG
D0H
PSW
C8H
P5
C0H
P5M1
P5M0
WDT_CONTR
IAP_DATA
B8H
IP
SADEN
P_SW2
B0H
P3
P3M1
P3M0
A8H
IE
SADDR
WKTCL
A0H
IAP_ADDRH
T2H
T2L
SPSTAT
SPCTL
SPDAT
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
ADC_CONTR
ADC_RES
ADC_RESL
IP2
IP2H
IPH
TA
IE2
IRCBAND
LIRTRIM
IRTRIM
TH1
AUXR
INTCLKO
WKTCH
P_SW1
98H
SCON
SBUF
S2CON
90H
P1
P1M1
P1M0
88H
TCON
TMOD
TL0
TL1
SP
DPL
DPH
80H
S2BUF
TH0
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
FEF8H
PWMB_CCR6L
PWMB_CCR7H
PWMB_CCR7L
PWMB_CCR8H
PWMB_CCR8L
PWMB_BKR
PWMB_DTR
PWMB_OISR
FEF0H
PWMB_PSCRH
PWMB_PSCRL
PWMB_ARRH
PWMB_ARRL
PWMB_RCR
FEE8H
PWMB_CCMR1 PWMB_CCMR2 PWMB_CCMR3
PWMB_CCMR4
PWMB_CCER1
PWMB_CCR5H PWMB_CCR5L
PWMB_CCR6H
PWMB_CCER2 PWMB_CNTRH PWMB_CNTRL
FEE0H
PWMB_CR1
PWMB_CR2
PWMB_SMCR
PWMB_ETR
PWMB_IER
PWMB_SR1
PWMB_SR2
PWMB_EGR
FED8H
PWMA_CCR2L
PWMA_CCR3H
PWMA_CCR3L
PWMA_CCR4H
PWMA_CCR4L
PWMA_BKR
PWMA_DTR
PWMA_OISR
FED0H
PWMA_PSCRH
PWMA_PSCRL
PWMA_ARRH
PWMA_ARRL
PWMA_RCR
PWMA_CCR1H PWMA_CCR1L PWMA_CCR2H
PWMA_CCER1
PWMA_CCER2 PWMA_CNTRH PWMA_CNTRL
FEC8H PWMA_CCMR1 PWMA_CCMR2 PWMA_CCMR3 PWMA_CCMR4
FEC0H
PWMA_CR1
PWMA_CR2
PWMA_SMCR
PWMA_ETR
PWMA_IER
PWMA_SR1
PWMA_SR2
PWMA_EGR
FEB0H
PWMA_ETRPS
PWMA_ENO
PWMA_PS
PWMA_IOAUX
PWMB_ETRPS
PWMB_ENO
PWMB_PS
PWMB_IOAUX
FEA8H
ADCTIM
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FEA0H
TM2PS
FE88H
I2CMSAUX
FE80H
I2CCFG
I2CMSCR
I2CMSST
FE30H
P1IE
P3IE
FE28H
P1DR
P3DR
P5DR
FE20H
P1SR
P3SR
P5SR
FE18H
P1NCS
P3NCS
P5NCS
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 193 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
FE10H
FE00H
P1PU
CKSEL
深圳国芯人工智能有限公司
CLKDIV
技术支持: 13922829991
P3PU
HIRCCR
XOSCCR
研发顾问: 13922805190
P5PU
IRC32KCR
国内分销商电话: 0513-5501 2928/2929/2966
MCLKOCR
IRCDB
传真: 0513-5501 2926/2956/2947
- 194 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8.2 STC8H1K28-32Pin系列
0/8
1/9
2/A
3/B
4/C
5/D
6/E
F8H
F0H
RSTCFG
B
IAP_TPS
E8H
E0H
7/F
AUXINTIF
ACC
DPS
DPL1
DPH1
D8H
CMPCR1
CMPCR2
ADCCFG
D0H
PSW
T4T3M
T4H
C8H
P5
P5M1
P5M0
WDT_CONTR
IAP_DATA
C0H
T4L
IAP_ADDRH
T3H
T3L
T2H
T2L
SPSTAT
SPCTL
SPDAT
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
ADC_CONTR
ADC_RES
ADC_RESL
IP2
IP2H
IPH
TA
IE2
IRCBAND
LIRTRIM
IRTRIM
B8H
IP
SADEN
P_SW2
B0H
P3
P3M1
P3M0
A8H
IE
SADDR
WKTCL
A0H
P2
98H
SCON
SBUF
S2CON
S2BUF
90H
P1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
88H
TCON
TMOD
TL0
TL1
TH0
TH1
AUXR
80H
P0
SP
DPL
DPH
WKTCH
P_SW1
INTCLKO
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
FEF8H
PWMB_CCR6L
PWMB_CCR7H
PWMB_CCR7L
PWMB_CCR8H
PWMB_CCR8L
PWMB_BKR
PWMB_DTR
PWMB_OISR
FEF0H
PWMB_PSCRH
PWMB_PSCRL
PWMB_ARRH
PWMB_ARRL
PWMB_RCR
FEE8H
PWMB_CCMR1 PWMB_CCMR2 PWMB_CCMR3
PWMB_CCMR4
PWMB_CCER1
PWMB_CCR5H PWMB_CCR5L
PWMB_CCR6H
PWMB_CCER2 PWMB_CNTRH PWMB_CNTRL
FEE0H
PWMB_CR1
PWMB_CR2
PWMB_SMCR
PWMB_ETR
PWMB_IER
PWMB_SR1
PWMB_SR2
PWMB_EGR
FED8H
PWMA_CCR2L
PWMA_CCR3H
PWMA_CCR3L
PWMA_CCR4H
PWMA_CCR4L
PWMA_BKR
PWMA_DTR
PWMA_OISR
FED0H
PWMA_PSCRH
PWMA_PSCRL
PWMA_ARRH
PWMA_ARRL
PWMA_RCR
PWMA_CCR1H PWMA_CCR1L PWMA_CCR2H
PWMA_CCER1
PWMA_CCER2 PWMA_CNTRH PWMA_CNTRL
FEC8H PWMA_CCMR1 PWMA_CCMR2 PWMA_CCMR3 PWMA_CCMR4
FEC0H
PWMA_CR1
PWMA_CR2
PWMA_SMCR
PWMA_ETR
PWMA_IER
PWMA_SR1
PWMA_SR2
PWMA_EGR
FEB0H
PWMA_ETRPS
PWMA_ENO
PWMA_PS
PWMA_IOAUX
PWMB_ETRPS
PWMB_ENO
PWMB_PS
PWMB_IOAUX
FEA8H
ADCTIM
TM2PS
TM3PS
TM4PS
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FEA0H
FE88H
I2CMSAUX
FE80H
I2CCFG
I2CMSCR
FE30H
P0IE
P1IE
FE28H
P0DR
P1DR
P2DR
P3DR
P5DR
FE20H
P0SR
P1SR
P2SR
P3SR
P5SR
FE18H
P0NCS
P1NCS
P2NCS
P3NCS
P5NCS
FE10H
P0PU
P1PU
P2PU
P3PU
P5PU
FE00H
CKSEL
CLKDIV
HIRCCR
XOSCCR
深圳国芯人工智能有限公司
IRC32KCR
国内分销商电话: 0513-5501 2928/2929/2966
MCLKOCR
IRCDB
传真: 0513-5501 2926/2956/2947
- 195 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
研发顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 196 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8.3 STC8H3K64S4-48Pin系列
0/8
F8H
P7
F0H
B
E8H
P6
E0H
ACC
1/9
2/A
3/B
4/C
5/D
6/E
7/F
RSTCFG
IAP_TPS
P7M1
P7M0
DPS
DPL1
DPH1
D8H
IP3H
AUXINTIF
CMPCR1
CMPCR2
ADCCFG
IP3
D0H
PSW
T4T3M
T4H
T4L
T3H
T3L
T2H
T2L
C8H
P5
P5M1
P5M0
P6M1
P6M0
SPSTAT
SPCTL
SPDAT
C0H
P4
WDT_CONTR
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
B8H
IP
SADEN
P_SW2
ADC_CONTR
ADC_RES
ADC_RESL
B0H
P3
P3M1
P3M0
P4M1
P4M0
IP2
IP2H
IPH
A8H
IE
SADDR
WKTCL
WKTCH
S3CON
S3BUF
TA
IE2
A0H
P2
BUS_SPEED
P_SW1
98H
SCON
SBUF
S2CON
S2BUF
IRCBAND
LIRTRIM
IRTRIM
90H
P1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
88H
TCON
TMOD
TL0
TL1
TH0
TH1
AUXR
80H
P0
SP
DPL
DPH
S4CON
S4BUF
INTCLKO
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
FEF8H
PWMB_CCR6L
PWMB_CCR7H
PWMB_CCR7L
PWMB_CCR8H
PWMB_CCR8L
PWMB_BKR
PWMB_DTR
PWMB_OISR
FEF0H
PWMB_PSCRH
PWMB_PSCRL
PWMB_ARRH
PWMB_ARRL
PWMB_RCR
FEE8H
PWMB_CCMR1 PWMB_CCMR2 PWMB_CCMR3
PWMB_CCMR4
PWMB_CCER1
PWMB_CCR5H PWMB_CCR5L
PWMB_CCR6H
PWMB_CCER2 PWMB_CNTRH PWMB_CNTRL
FEE0H
PWMB_CR1
PWMB_CR2
PWMB_SMCR
PWMB_ETR
PWMB_IER
PWMB_SR1
PWMB_SR2
PWMB_EGR
FED8H
PWMA_CCR2L
PWMA_CCR3H
PWMA_CCR3L
PWMA_CCR4H
PWMA_CCR4L
PWMA_BKR
PWMA_DTR
PWMA_OISR
FED0H
PWMA_PSCRH
PWMA_PSCRL
PWMA_ARRH
PWMA_ARRL
PWMA_RCR
PWMA_CCR1H PWMA_CCR1L PWMA_CCR2H
PWMA_CCER1
PWMA_CCER2 PWMA_CNTRH PWMA_CNTRL
FEC8H PWMA_CCMR1 PWMA_CCMR2 PWMA_CCMR3 PWMA_CCMR4
FEC0H
PWMA_CR1
PWMA_CR2
PWMA_SMCR
PWMA_ETR
PWMA_IER
PWMA_SR1
PWMA_SR2
PWMA_EGR
FEB0H
PWMA_ETRPS
PWMA_ENO
PWMA_PS
PWMA_IOAUX
PWMB_ETRPS
PWMB_ENO
PWMB_PS
PWMB_IOAUX
FEA8H
ADCTIM
T3T4PIN
FEA0H
TM2PS
TM3PS
TM4PS
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FE88H
I2CMSAUX
FE80H
I2CCFG
I2CMSCR
FE30H
P0IE
P1IE
FE28H
P0DR
P1DR
P2DR
P3DR
P4DR
P5DR
P6DR
P7DR
FE20H
P0SR
P1SR
P2SR
P3SR
P4SR
P5SR
P6SR
P7SR
FE18H
P0NCS
P1NCS
P2NCS
P3NCS
P4NCS
P5NCS
P6NCS
P7NCS
FE10H
P0PU
P1PU
P2PU
P3PU
P4PU
P5PU
P6PU
P7PU
FE08H
SPFUNC
RSTFLAG
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 197 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
FE00H
CKSEL
CLKDIV
HIRCCR
XOSCCR
IRC32KCR
MCLKOCR
IRCDB
IRC48MCR
FD30H
P0IM1
P1IM1
P2IM1
P3IM1
P4IM1
P5IM1
P6IM1
P7IM1
FD20H
P0IM0
P1IM0
P2IM0
P3IM0
P4IM0
P5IM0
P6IM0
P7IM0
FD10H
P0INTF
P1INTF
P2INTF
P3INTF
P4INTF
P5INTF
P6INTF
P7INTF
FD00H
P0INTE
P1INTE
P2INTE
P3INTE
P4INTE
P5INTE
P6INTE
P7INTE
FCF0H
MD3
MD2
MD1
MD0
MD5
MD4
ARCON
OPCON
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 198 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8.4 STC8H3K64S2-48Pin系列
0/8
F8H
P7
F0H
B
E8H
P6
E0H
ACC
1/9
2/A
3/B
4/C
5/D
6/E
7/F
RSTCFG
IAP_TPS
P7M1
P7M0
DPS
DPL1
DPH1
D8H
IP3H
AUXINTIF
CMPCR1
CMPCR2
ADCCFG
IP3
D0H
PSW
T4T3M
T4H
T4L
T3H
T3L
T2H
T2L
C8H
P5
P5M1
P5M0
P6M1
P6M0
SPSTAT
SPCTL
SPDAT
C0H
P4
WDT_CONTR
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
B8H
IP
SADEN
P_SW2
ADC_CONTR
ADC_RES
ADC_RESL
B0H
P3
P3M1
P3M0
P4M1
P4M0
IP2
IP2H
IPH
A8H
IE
SADDR
WKTCL
WKTCH
TA
IE2
A0H
P2
BUS_SPEED
P_SW1
98H
SCON
SBUF
S2CON
S2BUF
IRCBAND
LIRTRIM
IRTRIM
90H
P1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
88H
TCON
TMOD
TL0
TL1
TH0
TH1
AUXR
80H
P0
SP
DPL
DPH
INTCLKO
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
FEF8H
PWMB_CCR6L
PWMB_CCR7H
PWMB_CCR7L
PWMB_CCR8H
PWMB_CCR8L
PWMB_BKR
PWMB_DTR
PWMB_OISR
FEF0H
PWMB_PSCRH
PWMB_PSCRL
PWMB_ARRH
PWMB_ARRL
PWMB_RCR
FEE8H
PWMB_CCMR1 PWMB_CCMR2 PWMB_CCMR3
PWMB_CCMR4
PWMB_CCER1
PWMB_CCR5H PWMB_CCR5L
PWMB_CCR6H
PWMB_CCER2 PWMB_CNTRH PWMB_CNTRL
FEE0H
PWMB_CR1
PWMB_CR2
PWMB_SMCR
PWMB_ETR
PWMB_IER
PWMB_SR1
PWMB_SR2
PWMB_EGR
FED8H
PWMA_CCR2L
PWMA_CCR3H
PWMA_CCR3L
PWMA_CCR4H
PWMA_CCR4L
PWMA_BKR
PWMA_DTR
PWMA_OISR
FED0H
PWMA_PSCRH
PWMA_PSCRL
PWMA_ARRH
PWMA_ARRL
PWMA_RCR
PWMA_CCR1H PWMA_CCR1L PWMA_CCR2H
PWMA_CCER1
PWMA_CCER2 PWMA_CNTRH PWMA_CNTRL
FEC8H PWMA_CCMR1 PWMA_CCMR2 PWMA_CCMR3 PWMA_CCMR4
FEC0H
PWMA_CR1
PWMA_CR2
PWMA_SMCR
PWMA_ETR
PWMA_IER
PWMA_SR1
PWMA_SR2
PWMA_EGR
FEB0H
PWMA_ETRPS
PWMA_ENO
PWMA_PS
PWMA_IOAUX
PWMB_ETRPS
PWMB_ENO
PWMB_PS
PWMB_IOAUX
FEA8H
ADCTIM
T3T4PIN
FEA0H
TM2PS
TM3PS
TM4PS
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FE88H
I2CMSAUX
FE80H
I2CCFG
I2CMSCR
FE30H
P0IE
P1IE
FE28H
P0DR
P1DR
P2DR
P3DR
P4DR
P5DR
P6DR
P7DR
FE20H
P0SR
P1SR
P2SR
P3SR
P4SR
P5SR
P6SR
P7SR
FE18H
P0NCS
P1NCS
P2NCS
P3NCS
P4NCS
P5NCS
P6NCS
P7NCS
FE10H
P0PU
P1PU
P2PU
P3PU
P4PU
P5PU
P6PU
P7PU
FE08H
SPFUNC
RSTFLAG
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 199 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
FE00H
CKSEL
CLKDIV
HIRCCR
XOSCCR
IRC32KCR
MCLKOCR
IRCDB
IRC48MCR
FD30H
P0IM1
P1IM1
P2IM1
P3IM1
P4IM1
P5IM1
P6IM1
P7IM1
FD20H
P0IM0
P1IM0
P2IM0
P3IM0
P4IM0
P5IM0
P6IM0
P7IM0
FD10H
P0INTF
P1INTF
P2INTF
P3INTF
P4INTF
P5INTF
P6INTF
P7INTF
FD00H
P0INTE
P1INTE
P2INTE
P3INTE
P4INTE
P5INTE
P6INTE
P7INTE
FCF0H
MD3
MD2
MD1
MD0
MD5
MD4
ARCON
OPCON
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 200 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8.5 STC8H8K64U-64Pin/48Pin USB系列
0/8
1/9
2/A
3/B
4/C
F8H
P7
USBADR
F0H
B
USBCON
E8H
P6
USBDAT
E0H
ACC
P7M1
P7M0
DPS
D8H
5/D
6/E
7/F
RSTCFG
IAP_TPS
DPL1
DPH1
USBCLK
IP3H
AUXINTIF
CMPCR1
CMPCR2
ADCCFG
IP3
D0H
PSW
T4T3M
T4H
T4L
T3H
T3L
T2H
T2L
C8H
P5
P5M1
P5M0
P6M1
P6M0
SPSTAT
SPCTL
SPDAT
C0H
P4
WDT_CONTR
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
B8H
IP
SADEN
P_SW2
ADC_CONTR
ADC_RES
ADC_RESL
B0H
P3
P3M1
P3M0
P4M1
P4M0
IP2
IP2H
IPH
A8H
IE
SADDR
WKTCL
WKTCH
S3CON
S3BUF
TA
IE2
A0H
P2
BUS_SPEED
P_SW1
98H
SCON
SBUF
S2CON
S2BUF
IRCBAND
LIRTRIM
IRTRIM
90H
P1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
88H
TCON
TMOD
TL0
TL1
TH0
TH1
AUXR
80H
P0
SP
DPL
DPH
S4CON
S4BUF
INTCLKO
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
FEF8H
PWMB_CCR6L
PWMB_CCR7H
PWMB_CCR7L
PWMB_CCR8H
PWMB_CCR8L
PWMB_BKR
PWMB_DTR
PWMB_OISR
FEF0H
PWMB_PSCRH
PWMB_PSCRL
PWMB_ARRH
PWMB_ARRL
PWMB_RCR
FEE8H
PWMB_CCMR1 PWMB_CCMR2 PWMB_CCMR3
PWMB_CCMR4
PWMB_CCER1
PWMB_CCR5H PWMB_CCR5L
PWMB_CCR6H
PWMB_CCER2 PWMB_CNTRH PWMB_CNTRL
FEE0H
PWMB_CR1
PWMB_CR2
PWMB_SMCR
PWMB_ETR
PWMB_IER
PWMB_SR1
PWMB_SR2
PWMB_EGR
FED8H
PWMA_CCR2L
PWMA_CCR3H
PWMA_CCR3L
PWMA_CCR4H
PWMA_CCR4L
PWMA_BKR
PWMA_DTR
PWMA_OISR
FED0H
PWMA_PSCRH
PWMA_PSCRL
PWMA_ARRH
PWMA_ARRL
PWMA_RCR
PWMA_CCR1H PWMA_CCR1L PWMA_CCR2H
PWMA_CCER1
PWMA_CCER2 PWMA_CNTRH PWMA_CNTRL
FEC8H PWMA_CCMR1 PWMA_CCMR2 PWMA_CCMR3 PWMA_CCMR4
FEC0H
PWMA_CR1
PWMA_CR2
PWMA_SMCR
PWMA_ETR
PWMA_IER
PWMA_SR1
PWMA_SR2
PWMA_EGR
FEB0H
PWMA_ETRPS
PWMA_ENO
PWMA_PS
PWMA_IOAUX
PWMB_ETRPS
PWMB_ENO
PWMB_PS
PWMB_IOAUX
FEA8H
ADCTIM
T3T4PIN
FEA0H
TM2PS
TM3PS
TM4PS
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FE88H
I2CMSAUX
FE80H
I2CCFG
I2CMSCR
FE30H
P0IE
P1IE
FE28H
P0DR
P1DR
P2DR
P3DR
P4DR
P5DR
P6DR
P7DR
FE20H
P0SR
P1SR
P2SR
P3SR
P4SR
P5SR
P6SR
P7SR
FE18H
P0NCS
P1NCS
P2NCS
P3NCS
P4NCS
P5NCS
P6NCS
P7NCS
FE10H
P0PU
P1PU
P2PU
P3PU
P4PU
P5PU
P6PU
P7PU
FE08H
SPFUNC
RSTFLAG
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 201 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
FE00H
CKSEL
CLKDIV
HIRCCR
XOSCCR
IRC32KCR
MCLKOCR
IRCDB
IRC48MCR
FCF0H
MD3
MD2
MD1
MD0
MD5
MD4
ARCON
OPCON
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 202 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8.6 STC8H2K64T-48Pin系列
0/8
1/9
2/A
3/B
4/C
5/D
6/E
F8H
F0H
RSTCFG
B
IAP_TPS
E8H
E0H
7/F
ACC
DPS
IP3H
AUXINTIF
CMPCR1
CMPCR2
ADCCFG
IP3
T3L
T2H
T2L
SPSTAT
SPCTL
SPDAT
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
ADC_CONTR
ADC_RES
ADC_RESL
DPL1
DPH1
D8H
D0H
PSW
T4T3M
T4H
C8H
P5
P5M1
P5M0
C0H
P4
WDT_CONTR
IAP_DATA
B8H
IP
SADEN
P_SW2
B0H
P3
P3M1
P3M0
P4M1
P4M0
IP2
IP2H
IPH
A8H
IE
SADDR
WKTCL
WKTCH
S3CON
S3BUF
TA
IE2
A0H
P2
BUS_SPEED
P_SW1
98H
SCON
SBUF
S2CON
S2BUF
IRCBAND
LIRTRIM
IRTRIM
90H
P1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
88H
TCON
TMOD
TL0
TL1
TH0
TH1
AUXR
80H
P0
SP
DPL
DPH
S4CON
S4BUF
T4L
IAP_ADDRH
T3H
INTCLKO
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
FEF8H
PWMB_CCR6L
PWMB_CCR7H
PWMB_CCR7L
PWMB_CCR8H
PWMB_CCR8L
PWMB_BKR
PWMB_DTR
PWMB_OISR
FEF0H
PWMB_PSCRH
PWMB_PSCRL
PWMB_ARRH
PWMB_ARRL
PWMB_RCR
FEE8H
PWMB_CCMR1 PWMB_CCMR2 PWMB_CCMR3
PWMB_CCMR4
PWMB_CCER1
PWMB_CCR5H PWMB_CCR5L
PWMB_CCR6H
PWMB_CCER2 PWMB_CNTRH PWMB_CNTRL
FEE0H
PWMB_CR1
PWMB_CR2
PWMB_SMCR
PWMB_ETR
PWMB_IER
PWMB_SR1
PWMB_SR2
PWMB_EGR
FED8H
PWMA_CCR2L
PWMA_CCR3H
PWMA_CCR3L
PWMA_CCR4H
PWMA_CCR4L
PWMA_BKR
PWMA_DTR
PWMA_OISR
FED0H
PWMA_PSCRH
PWMA_PSCRL
PWMA_ARRH
PWMA_ARRL
PWMA_RCR
PWMA_CCR1H PWMA_CCR1L PWMA_CCR2H
PWMA_CCER1
PWMA_CCER2 PWMA_CNTRH PWMA_CNTRL
FEC8H PWMA_CCMR1 PWMA_CCMR2 PWMA_CCMR3 PWMA_CCMR4
FEC0H
PWMA_CR1
PWMA_CR2
PWMA_SMCR
PWMA_ETR
PWMA_IER
PWMA_SR1
PWMA_SR2
PWMA_EGR
FEB0H
PWMA_ETRPS
PWMA_ENO
PWMA_PS
PWMA_IOAUX
PWMB_ETRPS
PWMB_ENO
PWMB_PS
PWMB_IOAUX
FEA8H
ADCTIM
I2CRxD
T3T4PIN
FEA0H
TM2PS
TM3PS
TM4PS
FE88H
I2CMSAUX
FE80H
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
FE70H
YEAR
MONTH
DAY
HOUR
MIN
SEC
SSEC
FE68H
INIYEAR
INIMONTH
INIDAY
INIHOUR
INIMIN
INISEC
INISSEC
FE60H
RTCCR
RTCCFG
RTCIEN
RTCIF
ALAHOUR
ALAMIN
ALASEC
FE30H
P0IE
P1IE
FE28H
P0DR
P1DR
P2DR
P3DR
P4DR
P5DR
FE20H
P0SR
P1SR
P2SR
P3SR
P4SR
P5SR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
ALASSEC
- 203 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
FE18H
P0NCS
P1NCS
P2NCS
P3NCS
P4NCS
P5NCS
FE10H
P0PU
P1PU
P2PU
P3PU
P4PU
P5PU
FE08H
X32KCR
FE00H
CKSEL
CLKDIV
HIRCCR
XOSCCR
IRC32KCR
MCLKOCR
FD30H
P0IM1
P1IM1
P2IM1
P3IM1
P4IM1
P5IM1
FD20H
P0IM0
P1IM0
P2IM0
P3IM0
P4IM0
P5IM0
FD10H
P0INTF
P1INTF
P2INTF
P3INTF
P4INTF
P5INTF
FD00H
P0INTE
P1INTE
P2INTE
P3INTE
P4INTE
P5INTE
FCF0H
MD3
MD2
MD1
MD0
MD5
MD4
ARCON
OPCON
FB68H
TSTH12H
TSTH12L
TSTH13H
TSTH13L
TSTH14H
TSTH14L
TSTH15H
TSTH15L
FB60H
TSTH08H
TSTH08L
TSTH09H
TSTH09L
TSTH10H
TSTH10L
TSTH11H
TSTH11L
FB58H
TSTH04H
TSTH04L
TSTH05H
TSTH05L
TSTH06H
TSTH06L
TSTH07H
TSTH07L
FB50H
TSTH00H
TSTH00L
TSTH01H
TSTH01L
TSTH02H
TSTH02L
TSTH03H
TSTH03L
FB48H
TSRT
TSDATH
TSDATL
FB40H
TSCHEN1
TSCHEN2
TSCFG1
TSCFG2
TSWUTC
TSCTRL
TSSTA1
TSSTA2
FB28H
COM0_DC_H
COM1_DC_H
COM2_DC_H
COM3_DC_H
COM4_DC_H
COM5_DC_H
COM6_DC_H
COM7_DC_H
FB20H
COM0_DC_L
COM1_DC_L
COM2_DC_L
COM3_DC_L
COM4_DC_L
COM5_DC_L
COM6_DC_L
COM7_DC_L
FB18H
COM0_DA_H
COM1_DA_H
COM2_DA_H
COM3DA_H
COM4_DA_H
COM5_DA_H
COM6_DA_H
COM7_DA_H
FB10H
COM0_DA_L
COM1_DA_L
COM2_DA_L
COM3DA_L
COM4_DA_L
COM5_DA_L
COM6_DA_L
COM7_DA_L
FB00H
COMEN
SEGENL
SEGENH
LEDCTRL
LEDCKS
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
IRCDB
传真: 0513-5501 2926/2956/2947
- 204 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
8.7 特殊功能寄存器列表
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址。
、P2(A0H)
、IE
STC8H 能进行位寻址的寄存器:P0(80H)、TCON(88H)、P1(90H)、SCON(98H)
(A8H)、P3(B0H)、IP(B8H)、P4(C0H)、P5(C8H)、PSW(D0H)、ACC(E0H)
、P6(E8H)、B
(F0H)、P7(F8H)
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
P07
P06
P05
P04
P03
P02
P01
P00
P0
P0 端口
80H
SP
堆栈指针
81H
0000,0111
DPL
数据指针(低字节)
82H
0000,0000
DPH
数据指针(高字节)
83H
0000,0000
S4CON
串口 4 控制寄存器
84H
S4BUF
串口 4 数据寄存器
85H
PCON
电源控制寄存器
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
0011,0000
TCON
定时器控制寄存器
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0000,0000
TMOD
定时器模式寄存器
89H
GATE
C/T
M1
M0
GATE
C/T
M1
M0
0000,0000
TL0
定时器 0 低 8 为寄存器
8AH
0000,0000
TL1
定时器 1 低 8 为寄存器
8BH
0000,0000
TH0
定时器 0 高 8 为寄存器
8CH
0000,0000
TH1
定时器 1 高 8 为寄存器
8DH
0000,0000
辅助寄存器 1
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
中断与时钟输出控制寄存器
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
P1 端口
90H
P17
P16
P15
P14
P13
P12
P11
P1M1
P1 口配置寄存器 1
91H
P17M1
P16M1
P15M1
P14M1
P13M1
P12M1
P11M1
P10M1 1111,1111
P1M0
P1 口配置寄存器 0
92H
P17M0
P16M0
P15M0
P14M0
P13M0
P12M0
P11M0
P10M0 0000,0000
P0M1
P0 口配置寄存器 1
93H
P07M1
P06M1
P05M1
P04M1
P03M1
P02M1
P01M1
P00M1 1111,1111
P0M0
P0 口配置寄存器 0
94H
P07M0
P06M0
P05M0
P04M0
P03M0
P02M0
P01M0
P00M0 0000,0000
P2M1
P2 口配置寄存器 1
95H
P27M1
P26M1
P25M1
P24M1
P23M1
P22M1
P21M1
P20M1 1111,1111
P2M0
P2 口配置寄存器 0
96H
P27M0
P26M0
P25M0
P24M0
P23M0
P22M0
P21M0
P20M0 0000,0000
SCON
串口 1 控制寄存器
98H
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
SBUF
串口 1 数据寄存器
99H
S2CON
串口 2 控制寄存器
9AH
S2BUF
串口 2 数据寄存器
9BH
IRCBAND
IRC 频段选择检测
9DH
-
-
-
-
-
-
LIRTRIM
IRC 频率微调寄存器
9EH
-
-
-
-
-
-
IRTRIM
IRC 频率调整寄存器
9FH
P2 端口
A0H
AUXR
INTCLKO
P1
P2
BUS_SPEED
S4SM0
S4ST4
S4SM2
S4REN
S4TB8
S4RB8
S4TI
S4RI
1111,1111
0000,0000
0000,0000
S1ST2
0000,0001
T0CLKO x000,x000
P10
RI
1111,1111
0000,0000
0000,0000
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
0100,0000
0000,0000
-
SEL
xxxx,xxxn
LIRTRIM[1:0]
0000,00nn
IRTRIM[7:0]
P27
P26
P25
P24
nnnn,nnnn
P23
P22
P21
P20
A1H
RW_S[1:0]
外设端口切换寄存器 1
A2H
S1_S[1:0]
中断允许寄存器
A8H
SADDR
串口 1 从机地址寄存器
A9H
0000,0000
WKTCL
掉电唤醒定时器低字节
AAH
1111,1111
P_SW1
IE
总线速度控制寄存器
深圳国芯人工智能有限公司
EA
ELVD
SPEED[2:0]
1111,1111
SPI_S[1:0]
EADC
国内分销商电话: 0513-5501 2928/2929/2966
ES
ET1
EX1
00xx,x000
0
-
nn00,000x
ET0
EX0
0000,0000
传真: 0513-5501 2926/2956/2947
- 205 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
WKTCH
掉电唤醒定时器高字节
ABH
WKTEN
0111,1111
S3CON
串口 3 控制寄存器
ACH
S3SM0
S3BUF
串口 3 数据寄存器
ADH
0000,0000
TA
DPTR 时序控制寄存器
AEH
0000,0000
IE2
中断允许寄存器 2
AFH
EUSB
ET4
ET3
ES4
ES3
ET2
ESPI
ES2
x000,0000
P3
P3 端口
B0H
P37
P36
P35
P34
P33
P32
P31
P30
1111,1111
P3M1
P3 口配置寄存器 1
B1H
P37M1
P36M1
P35M1
P34M1
P33M1
P32M1
P31M1
P30M1 1111,1100
P3M0
P3 口配置寄存器 0
B2H
P37M0
P36M0
P35M0
P34M0
P33M0
P32M0
P31M0
P30M0 0000,0000
P4M1
P4 口配置寄存器 1
B3H
P47M1
P46M1
P45M1
P44M1
P43M1
P42M1
P41M1
P40M1 1111,1111
P4M0
P4 口配置寄存器 0
B4H
P47M0
P46M0
P45M0
P44M0
P43M0
P42M0
P41M0
P40M0 0000,0000
中断优先级控制寄存器 2
B5H
PI2C
PCMP
PX4
PPWMB
PPWMA
PSPI
PS2
0000,0000
高中断优先级控制寄存器 2
B6H
PI2CH
PCMPH
PX4H
PPWMBH
PPWMAH
PSPIH
PS2H
0000,0000
高中断优先级控制寄存器
B7H
-
PLVDH
PADCH
PSH
PT1H
PX1H
PT0H
PX0H
x000,0000
中断优先级控制寄存器
B8H
-
PLVD
PADC
PS
PT1
PX1
PT0
PX0
x000,0000
SADEN
串口 1 从机地址屏蔽寄存器
B9H
P_SW2
外设端口切换寄存器 2
BAH
S3ST4
S3SM2
S3REN
S3TB8
S3RB8
S3TI
S3RI
0000,0000
PUSB
IP2
PTKSU
PUSBH
IP2H
IPH
IP
ADC_CONTR ADC 控制寄存器
ADC_RES
PTKSUH
0000,0000
EAXFR
-
I2C_S[1:0]
CMPO_S
BCH ADC_POWER ADC_START ADC_FLAG ADC_EPWMT
-
-
S2_S
ADC_CHS[3:0]
0x00,0000
000x,0000
ADC 转换结果高位寄存器
BDH
0000,0000
ADC_RESL ADC 转换结果低位寄存器
BEH
0000,0000
P4
P4 端口
WDT_CONTR 看门狗控制寄存器
IAP_DATA
C0H
P47
C1H WDT_FLAG
P46
P45
P44
P43
-
EN_WDT
CLR_WDT
IDL_WDT
P42
P41
P40
WDT_PS[2:0]
1111,1111
0x00,0000
C2H
1111,1111
IAP_ADDRH IAP 高地址寄存器
C3H
0000,0000
IAP_ADDRL IAP 低地址寄存器
C4H
0000,0000
IAP 数据寄存器
IAP_CMD
IAP 命令寄存器
C5H
IAP_TRIG
IAP 触发寄存器
C6H
IAP_CONTR IAP 控制寄存器
C7H
IAPEN
SWBS
SWRST
CMD_FAIL
-
-
-
-
0000,xxxx
P5 端口
C8H
-
-
P55
P54
P53
P52
P51
P50
xx11,1111
P5M1
P5 口配置寄存器 1
C9H
-
-
P55M1
P54M1
P53M1
P52M1
P51M1
P50M1 xx11,1111
P5M0
P5 口配置寄存器 0
CAH
-
-
P55M0
P54M0
P53M0
P52M0
P51M0
P50M0 xx00,0000
P6M1
P6 口配置寄存器 1
CBH
P67M1
P66M1
P65M1
P64M1
P63M1
P62M1
P61M1
P60M1 0000,0000
P6M0
P6 口配置寄存器 0
CCH
P67M0
P66M0
P65M0
P64M0
P63M0
P62M0
P61M0
P60M0 0000,0000
SPSTAT
SPI 状态寄存器
CDH
SPIF
WCOL
-
-
-
-
-
SPCTL
SPI 控制寄存器
CEH
SSIG
SPEN
DORD
MSTR
CPOL
CPHA
SPDAT
SPI 数据寄存器
CFH
程序状态字寄存器
D0H
CY
AC
F0
RS1
RS0
OV
定时器 4/3 控制寄存器
D1H
T4R
T4_C/T
T4x12
T4CLKO
T3R
T3_C/T
T4H
定时器 4 高字节
D2H
0000,0000
T4L
定时器 4 低字节
D3H
0000,0000
T3H
定时器 3 高字节
D4H
0000,0000
T3L
定时器 3 低字节
D5H
0000,0000
T2H
定时器 2 高字节
D6H
0000,0000
P5
PSW
T4T3M
深圳国芯人工智能有限公司
-
-
-
-
-
-
CMD[1:0]
xxxx,xx00
0000,0000
SPR[1:0]
00xx,xxxx
0000,0100
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
F1
P
0000,0000
T3x12 T3CLKO 0000,0000
传真: 0513-5501 2926/2956/2947
- 206 -
STC8H 系列技术手册
T2L
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
定时器 2 低字节
D7H
USBCLK
USB 时钟控制寄存器
DCH
ENCKM
ADCCFG
ADC 配置寄存器
DEH
-
-
RESFMT
-
中断优先级控制寄存器 3
DFH
-
-
-
-
ACC
累加器
E0H
P7M1
P7 口配置寄存器 1
E1H
P77M1
P76M1
P75M1
P74M1
P73M1
P72M1
P71M1
P70M1 0000,0000
P7M0
P7 口配置寄存器 0
E2H
P77M0
P76M0
P75M0
P74M0
P73M0
P72M0
P71M0
P70M0 0000,0000
DPS
DPTR 指针选择器
E3H
ID1
ID0
TSL
AU1
AU0
-
-
DPL1
第二组数据指针(低字节)
E4H
0000,0000
DPH1
第二组数据指针(高字节)
E5H
0000,0000
CMPCR1
比较器控制寄存器 1
E6H
CMPCR2
比较器控制寄存器 2
E7H INVCMPO
P6 端口
E8H
USB 数据寄存器
ECH
高中断优先级控制寄存器 3
EEH
-
-
-
-
-
PRTCH
PS4H
PS3H
xxxx,x000
扩展外部中断标志寄存器
EFH
-
INT4IF
INT3IF
INT2IF
-
T4IF
T3IF
T2IF
x000,x000
B 寄存器
F0H
USBCON
USB 控制寄存器
F4H
ENUSB
USBRST
IAP_TPS
IAP 等待时间控制寄存器
F5H
-
-
P7 端口
F8H
P77
P76
USBADR
USB 地址寄存器
FCH
BUSY
AUTORD
RSTCFG
复位配置寄存器
FFH
-
ENLVR
IP3
P6
USBDAT
IP3H
AUXINTIF
B
P7
0000,0000
PCKI[1:0]
CRE
TST_USB TST_PHY
PHYTST[1:0]
SPEED[3:0]
PRTC
-
0010,0000
xx0x,0000
PS4
PS3
xxxx,x000
0000,0000
CMPEN
CMPIF
PIE
NIE
DISFLT
P67
P66
PIS
NIS
SEL
CMPOE CMPRES 0000,0000
LCDTY[5:0]
P65
P64
P63
0000,0xx0
0000,0000
P62
P61
P60
1111,1111
0000,0000
0000,0000
PS2M
PUEN
PDEN
DFREC
DP
DM
IAPTPS[5:0]
P75
P74
P73
xx00,0000
P72
P71
P70
UADR[5:0]
-
P54RST
0000,0000
-
1111,1111
0000,0000
-
LVDS[1:0]
0000,0000
下列特殊功能寄存器为扩展 SFR,逻辑地址位于 XDATA 区域,访问前需要将 P_SW2(BAH)寄
存器的最高位(EAXFR)置 1,然后使用 MOVX A,@DPTR 和 MOVX @DPTR,A 指令进行访问
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
-
-
-
-
-
-
B1
B0
CKSEL
时钟选择寄存器
FE00H
CLKDIV
时钟分频寄存器
FE01H
HIRCCR
内部高速振荡器控制寄存器
FE02H
ENHIRC
-
-
-
-
-
-
HIRCST
1xxx,xxx0
XOSCCR
外部晶振控制寄存器
FE03H
ENXOSC
XITYPE
-
-
-
-
-
XOSCST
00xx,xxx0
IRC32KCR
内部 32K 振荡器控制寄存器
FE04H ENIRC32K
-
-
-
-
-
-
MCLKOCR
主时钟输出控制寄存器
FE05H MCLKO_S
内部高速振荡器去抖控制
FE06H
内部 48M 振荡器控制寄存器
FE07H ENIRC48M
特殊功能控制寄存器
FE08H
复位标志寄存器
FE09H
P0PU
P0 口上拉电阻控制寄存器
FE10H
P07PU
P06PU
P05PU
P04PU
P1PU
P1 口上拉电阻控制寄存器
FE11H
P17PU
P16PU
P15PU
P2PU
P2 口上拉电阻控制寄存器
FE12H
P27PU
P26PU
P3PU
P3 口上拉电阻控制寄存器
FE13H
P37PU
P4PU
P4 口上拉电阻控制寄存器
FE14H
P5PU
P5 口上拉电阻控制寄存器
FE15H
IRCDB
IRC48MCR
SPFUNC
RSTFLAG
深圳国芯人工智能有限公司
MCKSEL[1:0]
xxxx,xx00
0000,0100
IRC32KST 0xxx,xxx0
MCLKODIV[6:0]
0000,0000
1000,0000
IRCDB_PAR[7:0]
-
-
-
-
-
-
IRC48MST 1xxx,xxx0
BKSWR
xxxx,xxx0
SWR
ROMOV
EXRST
xxxx,x000
P03PU
P02PU
P01PU
P00PU
0000,0000
P14PU
P13PU
P12PU
P11PU
P10PU
0000,0000
P25PU
P24PU
P23PU
P22PU
P21PU
P20PU
0000,0000
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
0000,0000
P47PU
P46PU
P45PU
P44PU
P43PU
P42PU
P41PU
P40PU
0000,0000
-
-
-
P54PU
P53PU
P52PU
P51PU
P50PU
xxx0,0000
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 207 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P6PU
P6 口上拉电阻控制寄存器
FE16H
P67PU
P66PU
P65PU
P64PU
P63PU
P62PU
P61PU
P60PU
0000,0000
P7PU
P7 口上拉电阻控制寄存器
FE17H
P77PU
P76PU
P75PU
P74PU
P73PU
P72PU
P71PU
P70PU
0000,0000
P0NCS
P0 口施密特触发控制寄存器
FE18H
P07NCS
P06NCS P05NCS P04NCS P03NCS P02NCS P01NCS
P00NCS 0000,0000
P1NCS
P1 口施密特触发控制寄存器
FE19H
P17NCS
P16NCS P15NCS P14NCS P13NCS P12NCS P11NCS
P10NCS 0000,0000
P2NCS
P2 口施密特触发控制寄存器
FE1AH P27NCS
P26NCS P25NCS P24NCS P23NCS P22NCS P21NCS
P20NCS 0000,0000
P3NCS
P3 口施密特触发控制寄存器
FE1BH P37NCS
P36NCS P35NCS P34NCS P33NCS P32NCS P31NCS
P30NCS 0000,0000
P4NCS
P4 口施密特触发控制寄存器
FE1CH P47NCS
P46NCS P45NCS P44NCS P43NCS P42NCS P41NCS
P40NCS 0000,0000
P5NCS
P5 口施密特触发控制寄存器
FE1DH
-
P54NCS P53NCS P52NCS P51NCS
P50NCS xxx0,0000
P6NCS
P6 口施密特触发控制寄存器
FE1EH
P67NCS
P66NCS P65NCS P64NCS P63NCS P62NCS P61NCS
P60NCS 0000,0000
P7NCS
P7 口施密特触发控制寄存器
FE1FH
P77NCS
P76NCS P75NCS P74NCS P73NCS P72NCS P71NCS
P70NCS 0000,0000
P0SR
P0 口电平转换速率寄存器
FE20H
P07SR
P06SR
P05SR
P04SR
P03SR
P02SR
P01SR
P00SR
1111,1111
P1SR
P1 口电平转换速率寄存器
FE21H
P17SR
P16SR
P15SR
P14SR
P13SR
P12SR
P11SR
P10SR
1111,1111
P2SR
P2 口电平转换速率寄存器
FE22H
P27SR
P26SR
P25SR
P24SR
P23SR
P22SR
P21SR
P20SR
1111,1111
P3SR
P3 口电平转换速率寄存器
FE23H
P37SR
P36SR
P35SR
P34SR
P33SR
P32SR
P31SR
P30SR
1111,1111
P4SR
P4 口电平转换速率寄存器
FE24H
P47SR
P46SR
P45SR
P44SR
P43SR
P42SR
P41SR
P40SR
1111,1111
P5SR
P5 口电平转换速率寄存器
FE25H
-
-
-
P54SR
P53SR
P52SR
P51SR
P50SR
xxx1,1111
P6SR
P6 口电平转换速率寄存器
FE26H
P57SR
P66SR
P65SR
P64SR
P63SR
P62SR
P61SR
P60SR
1111,1111
P7SR
P7 口电平转换速率寄存器
FE27H
P77SR
P76SR
P75SR
P74SR
P73SR
P72SR
P71SR
P70SR
1111,1111
P0DR
P0 口驱动电流控制寄存器
FE28H
P07DR
P06DR
P05DR
P04DR
P03DR
P02DR
P01DR
P00DR
1111,1111
P1DR
P1 口驱动电流控制寄存器
FE29H
P17DR
P16DR
P15DR
P14DR
P13DR
P12DR
P11DR
P10DR
1111,1111
P2DR
P2 口驱动电流控制寄存器
FE2AH
P27DR
P26DR
P25DR
P24DR
P23DR
P22DR
P21DR
P20DR
1111,1111
P3DR
P3 口驱动电流控制寄存器
FE2BH
P37DR
P36DR
P35DR
P34DR
P33DR
P32DR
P31DR
P30DR
1111,1111
P4DR
P4 口驱动电流控制寄存器
FE2CH
P47DR
P46DR
P45DR
P44DR
P43DR
P42DR
P41DR
P40DR
1111,1111
P5DR
P5 口驱动电流控制寄存器
FE2DH
-
-
-
P54DR
P53DR
P52DR
P51DR
P50DR
xxx1,1111
P6DR
P6 口驱动电流控制寄存器
FE2EH
P67DR
P66DR
P65DR
P64DR
P63DR
P62DR
P61DR
P60DR
1111,1111
P7DR
P7 口驱动电流控制寄存器
FE2FH
P77DR
P76DR
P75DR
P74DR
P73DR
P72DR
P71DR
P70DR
1111,1111
P0IE
P0 口输入使能控制寄存器
FE30H
P07IE
P06IE
P05IE
P04IE
P03IE
P02IE
P11IE
P00IE
1111,1111
P1IE
P1 口输入使能控制寄存器
FE31H
P17IE
P16IE
P15IE
P14IE
P13IE
P12IE
P11IE
P10IE
1111,1111
P3IE
P3 口输入使能控制寄存器
FE33H
P37IE
P36IE
P35IE
P34IE
P33IE
P32IE
P31IE
P30IE
1111,1111
I2C 配置寄存器
FE80H
ENI2C
MSSL
I2CMSCR
I2C 主机控制寄存器
FE81H
EMSI
-
-
-
I2CMSST
I2C 主机状态寄存器
FE82H MSBUSY
MSIF
-
-
-
-
MSACKI
I2CSLCR
I2C 从机控制寄存器
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
-
I2CSLST
I2C 从机状态寄存器
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
TXING
SLACKI
I2CSLADR
I2C 从机地址寄存器
FE85H
I2CCFG
-
-
MSSPEED[6:1]
0000,0000
MSCMD[3:0]
I2CSLADR[7:1]
0xxx,0000
MSACKO 00xx,xx00
SLRST
x000,0xx0
SLACKO 0000,0000
MA
0000,0000
2
FE86H
0000,0000
2
FE87H
0000,0000
2
I C 主机辅助控制寄存器
FE88H
TM2PS
定时器 2 时钟预分频寄存器
FEA2H
0000,0000
TM3PS
定时器 3 时钟预分频寄存器
FEA3H
0000,0000
TM4PS
定时器 4 时钟预分频寄存器
FEA4H
0000,0000
ADCTIM
ADC 时序控制寄存器
FEA8H CSSETUP
T3T4PIN
T3/T4 选择寄存器
FEACH
I2CTXD
I2CRXD
I2CMSAUX
I C 数据发送寄存器
I C 数据接收寄存器
PWMA_ETRPS PWMA 的 ETR 选择寄存器
深圳国芯人工智能有限公司
-
-
-
-
-
-
CSHOLD[1:0]
-
-
FEB0H
国内分销商电话: 0513-5501 2928/2929/2966
-
-
WDTA
0010,1010
SMPDUTY[4:0]
-
-
-
BRKAPS
xxxx,xxx0
-
T3T4SEL xxxx,xxx0
ETRAPS[1:0]
传真: 0513-5501 2926/2956/2947
xxxx,x000
- 208 -
STC8H 系列技术手册
PWMA_ENO
PWMA_PS
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
PWMA 输出使能控制
FEB1H
PWMA 输出脚选择寄存器
FEB2H
PWMA_IOAUX PWMA 辅助寄存器
FEB3H
PWMB_ETRPS PWMB 的 ETR 选择寄存器
FEB4H
PWMB_ENO
PWMB_PS
PWMB 输出使能控制
FEB5H
PWMB 输出脚选择寄存器
FEB6H
PWMB_IOAUX PWMB 辅助寄存器
ENO4N
ENO4P
ENO3N
C4PS[1:0]
AUX4N
技术支持: 13922829991
ENO3P
ENO2N
C3PS[1:0]
AUX4P
AUX3N
AUX3P
AUX2N
ENO8P
-
C8PS[1:0]
FEB7H
-
ENO7P
-
C7PS[1:0]
AUX8P
-
CMS[1:0]
ENO1P
C1PS[1:0]
AUX2P
BRKBPS
-
ENO1N
C2PS[1:0]
AUX1N
0000,0000
0000,0000
AUX1P
0000,0000
ETRBPS[1:0]
xxxx,x000
-
x0x0,x0x0
ENO6P
C6PS[1:0]
ENO5P
C5PS[1:0]
0000,0000
AUX7P
-
AUX6P
-
AUX5P
x0x0,x0x0
DIR
OPM
URS
UDIS
CEN
0000,0000
COMS
-
CCPC
x000,x0x0
PWMA_CR1
PWMA 控制寄存器 1
FEC0H
ARPE
PWMA_CR2
PWMA 控制寄存器 2
FEC1H
-
MMS[2:0]
-
FEC2H
MSM
TS[2:0]
-
PWMA_SMCR PWMA 从模式控制寄存器
ENO2P
研发顾问: 13922805190
SMS[2:0]
PWMA_ETR
PWMA 外部触发寄存器
FEC3H
ETP
ECE
PWMA_IER
PWMA 中断使能寄存器
FEC4H
BIE
TIE
COMIE
CC4IE
CC3IE
CC2IE
CC1IE
UIE
0000,0000
PWMA_SR1
PWMA 状态寄存器 1
FEC5H
BIF
TIF
COMIF
CC4IF
CC3IF
CC2IF
CC1IF
UIF
0000,0000
PWMA_SR2
PWMA 状态寄存器 2
FEC6H
-
-
-
CC4OF
CC3OF
CC2OF
CC1OF
-
xxx0,000x
PWMA_EGR
PWMA 事件发生寄存器
FEC7H
BG
TG
COMG
CC4G
CC3G
CC2G
CC1G
UG
0000,0000
OC1PE
OC1FE
PWMA_CCMR1
PWMA 捕获模式寄存器 1
FEC8H
OC1CE
PWMA 捕获模式寄存器 2
FEC9H
PWMA 捕获模式寄存器 3
PWMA 捕获模式寄存器 4
IC1PSC[1:0]
OC2M[2:0]
OC2PE
IC2F[3:0]
FECAH
OC3CE
FECBH
OC3M[2:0]
OC4CE
OC3PE
OC3FE
IC3PSC[1:0]
OC4M[2:0]
OC4PE
IC4F[3:0]
PWMA 比较模式寄存器 4
OC2FE
IC2PSC[1:0]
IC3F[3:0]
PWMA 比较模式寄存器 3
PWMA_CCMR4
OC1M[2:0]
OC2CE
PWMA 比较模式寄存器 2
PWMA_CCMR3
ETF[3:0]
IC1F[3:0]
PWMA 比较模式寄存器 1
PWMA_CCMR2
ETPS[1:0]
0000,x000
OC4FE
IC4PSC[1:0]
0000,0000
CC1S[1:0]
0000,0000
CC1S[1:0]
0000,0000
CC2S[1:0]
0000,0000
CC2S[1:0]
0000,0000
CC3S[1:0]
0000,0000
CC3S[1:0]
0000,0000
CC4S[1:0]
0000,0000
CC4S[1:0]
0000,0000
PWMA_CCER1 PWMA 捕获比较使能寄存器 1 FECCH
CC2NP
CC2NE
CC2P
CC2E
CC1NP
CC1NE
CC1P
CC1E
0000,0000
PWMA_CCER2 PWMA 捕获比较使能寄存器 2 FECDH
CC4NP
CC4NE
CC4P
CC4E
CC3NP
CC3NE
CC3P
CC3E
0000,0000
PWMA_CNTRH PWMA 计数器高字节
FECEH
0000,0000
PWMA_CNTRL PWMA 计数器低字节
FECFH
0000,0000
PWMA_PSCRH PWMA 预分频高字节
FED0H
0000,0000
PWMA_PSCRL PWMA 预分频低字节
FED1H
0000,0000
PWMA_ARRH PWMA 自动重装寄存器高字节 FED2H
0000,0000
PWMA_ARRL PWMA 自动重装寄存器低字节 FED3H
0000,0000
PWMA_RCR
FED4H
0000,0000
PWMA_CCR1H PWMA 比较捕获寄存器 1 高位 FED5H
0000,0000
PWMA_CCR1L PWMA 比较捕获寄存器 1 低位 FED6H
0000,0000
PWMA_CCR2H PWMA 比较捕获寄存器 2 高位 FED7H
0000,0000
PWMA_CCR2L PWMA 比较捕获寄存器 2 低位 FED8H
0000,0000
PWMA_CCR3H PWMA 比较捕获寄存器 3 高位 FED9H
0000,0000
PWMA_CCR3L PWMA 比较捕获寄存器 3 低位 FEDAH
0000,0000
PWMA_CCR4H PWMA 比较捕获寄存器 4 高位 FEDBH
0000,0000
PWMA_CCR4L PWMA 比较捕获寄存器 4 低位 FEDCH
0000,0000
PWMA 重复计数器寄存器
PWMA_BKR
PWMA 刹车寄存器
FEDDH
PWMA_DTR
PWMA 死区控制寄存器
FEDEH
MOE
OIS4N
PWMB_CR1
ARPE
深圳国芯人工智能有限公司
FEE0H
BKP
BKE
OSSR
OSSI
LOCK[1:0]
0000,000x
DTG[7:0]
PWMA_OISR PWMA 输出空闲状态寄存器 FEDFH
PWMB 控制寄存器 1
AOE
OIS4
OIS3N
CMS[1:0]
0000,0000
OIS3
OIS2N
OIS2
OIS1N
OIS1
0000,0000
DIR
OPM
URS
UDIS
CEN
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 209 -
STC8H 系列技术手册
PWMB_CR2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
PWMB 控制寄存器 2
PWMB_SMCR PWMB 从模式控制寄存器
技术支持: 13922829991
FEE1H
-
MMS[2:0]
-
FEE2H
MSM
TS[2:0]
-
研发顾问: 13922805190
COMS
-
CCPC
SMS[2:0]
0000,x000
PWMB_ETR
PWMB 外部触发寄存器
FEE3H
ETP
ECE
PWMB_IER
PWMB 中断使能寄存器
FEE4H
BIE
TIE
COMIE
CC8IE
CC7IE
CC6IE
CC5IE
UIE
0000,0000
PWMB_SR1
PWMB 状态寄存器 1
FEE5H
BIF
TIF
COMIF
CC8IF
CC7IF
CC6IF
CC5IF
UIF
0000,0000
PWMB_SR2
PWMB 状态寄存器 2
FEE6H
-
-
-
CC8OF
CC7OF
CC6OF
CC5OF
-
xxx0,000x
PWMB_EGR
PWMB 事件发生寄存器
FEE7H
BG
TG
COMG
CC8G
CC7G
CC6G
CC5G
UG
0000,0000
OC5PE
OC5FE
PWMB_CCMR1
PWMB 捕获模式寄存器 1
FEE8H
OC5CE
PWMB 捕获模式寄存器 2
FEE9H
PWMB 捕获模式寄存器 3
FEEAH
OC6M[2:0]
OC7CE
OC6PE
FEEBH
OC7M[2:0]
OC8CE
OC7PE
OC7FE
IC7PSC[1:0]
OC8M[2:0]
OC8PE
IC8F[3:0]
PWMB 比较模式寄存器 4
OC6FE
IC6PSC[1:0]
IC7F[3:0]
PWMB 捕获模式寄存器 4
0000,0000
IC5PSC[1:0]
IC6F[3:0]
PWMB 比较模式寄存器 3
PWMB_CCMR4
OC5M[2:0]
OC6CE
PWMB 比较模式寄存器 2
PWMB_CCMR3
ETF[3:0]
IC5F[3:0]
PWMB 比较模式寄存器 1
PWMB_CCMR2
ETPS[1:0]
x000,x0x0
OC8FE
IC8PSC[1:0]
CC5S[1:0]
0000,0000
CC5S[1:0]
0000,0000
CC6S[1:0]
0000,0000
CC6S[1:0]
0000,0000
CC7S[1:0]
0000,0000
CC7S[1:0]
0000,0000
CC8S[1:0]
0000,0000
CC8S[1:0]
0000,0000
PWMB_CCER1 PWMB 捕获比较使能寄存器 1 FEECH
-
-
CC6P
CC6E
-
-
CC5P
CC5E
xx00,xx00
PWMB_CCER2 PWMB 捕获比较使能寄存器 2 FEEDH
-
-
CC8P
CC8E
-
-
CC7P
CC7E
xx00,xx00
PWMB_CNTRH PWMB 计数器高字节
FEEEH
0000,0000
PWMB_CNTRL PWMB 计数器低字节
FEEFH
0000,0000
PWMB_PSCRH PWMB 预分频高字节
FEF0H
0000,0000
PWMB_PSCRL PWMB 预分频低字节
FEF1H
0000,0000
PWMB_ARRH PWMB 自动重装寄存器高字节
FEF2H
0000,0000
PWMB_ARRL PWMB 自动重装寄存器低字节
FEF3H
0000,0000
FEF4H
0000,0000
PWMB_CCR5H PWMB 比较捕获寄存器 1 高位
FEF5H
0000,0000
PWMB_CCR5L PWMB 比较捕获寄存器 1 低位
FEF6H
0000,0000
PWMB_CCR6H PWMB 比较捕获寄存器 2 高位
FEF7H
0000,0000
PWMB_CCR6L PWMB 比较捕获寄存器 2 低位
FEF8H
0000,0000
PWMB_CCR7H PWMB 比较捕获寄存器 3 高位
FEF9H
0000,0000
PWMB_CCR7L PWMB 比较捕获寄存器 3 低位
FEFAH
0000,0000
PWMB_CCR8H PWMB 比较捕获寄存器 4 高位
FEFBH
0000,0000
PWMB_CCR8L PWMB 比较捕获寄存器 4 低位
FEFCH
0000,0000
PWMB_RCR
PWMB 重复计数器寄存器
PWMB_BKR
PWMB 刹车寄存器
FEFDH
PWMB_DTR
PWMB 死区控制寄存器
FEFEH
PWMB_OISR PWMB 输出空闲状态寄存器
FEFFH
MOE
AOE
BKP
BKE
OSSR
OSSI
LOCK[1:0]
-
DTG[7:0]
-
OIS8
-
OIS7
0000,000x
0000,0000
-
OIS6
-
OIS5
x0x0,x0x0
MD3
MDU 数据寄存器
FCF0H
MD3[7:0]
0000,0000
MD2
MDU 数据寄存器
FCF1H
MD2[7:0]
0000,0000
MD1
MDU 数据寄存器
FCF2H
MD1[7:0]
0000,0000
MD0
MDU 数据寄存器
FCF3H
MD0[7:0]
0000,0000
MD5
MDU 数据寄存器
FCF4H
MD5[7:0]
0000,0000
MD4
MDU 数据寄存器
FCF5H
MD4[7:0]
0000,0000
ARCON
MDU 模式控制寄存器
FCF6H
OPCON
MDU 操作控制寄存器
FCF7H
P0INTE
P0 口中断使能寄存器
FD00H P07INTE
深圳国芯人工智能有限公司
MODE[2:0]
-
MDOV
SC[4:0]
-
-
-
-
0000,0000
RST
P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE
国内分销商电话: 0513-5501 2928/2929/2966
ENOP
0000,0000
P00INTE 0000,0000
传真: 0513-5501 2926/2956/2947
- 210 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P1INTE
P1 口中断使能寄存器
FD01H P17INTE
P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE
P10INTE 0000,0000
P2INTE
P2 口中断使能寄存器
FD02H P27INTE
P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE
P20INTE 0000,0000
P3INTE
P3 口中断使能寄存器
FD03H P37INTE
P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE
P30INTE 0000,0000
P4INTE
P4 口中断使能寄存器
FD04H P47INTE
P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE
P40INTE 0000,0000
P5INTE
P5 口中断使能寄存器
FD05H
P6INTE
P6 口中断使能寄存器
P7INTE
P54INTE P53INTE P52INTE P51INTE
P50INTE 0000,0000
FD06H P67INTE
P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE
P60INTE 0000,0000
P7 口中断使能寄存器
FD07H P77INTE
P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE
P70INTE 0000,0000
P0INTF
P0 口中断标志寄存器
FD10H
P07INTF
P06INTF P05INTF P04INTF P03INTF P02INTF
P01INTF
P00INTF 0000,0000
P1INTF
P1 口中断标志寄存器
FD11H
P17INTF
P16INTF P15INTF P14INTF P13INTF P12INTF
P11INTF
P10INTF 0000,0000
P2INTF
P2 口中断标志寄存器
FD12H
P27INTF
P26INTF P25INTF P24INTF P23INTF P22INTF
P21INTF
P20INTF 0000,0000
P3INTF
P3 口中断标志寄存器
FD13H
P37INTF
P36INTF P35INTF P34INTF P33INTF P32INTF
P31INTF
P30INTF 0000,0000
P4INTF
P4 口中断标志寄存器
FD14H
P47INTF
P46INTF P45INTF P44INTF P43INTF P42INTF
P41INTF
P40INTF 0000,0000
P5INTF
P5 口中断标志寄存器
FD15H
-
P54INTF P53INTF P52INTF
P51INTF
P50INTF 0000,0000
P6INTF
P6 口中断标志寄存器
FD16H
P67INTF
P66INTF P65INTF P64INTF P63INTF P62INTF
P61INTF
P60INTF 0000,0000
P7INTF
P7 口中断标志寄存器
FD17H
P77INTF
P76INTF P75INTF P74INTF P73INTF P72INTF
P71INTF
P70INTF 0000,0000
P0IM0
P0 口中断模式寄存器 0
FD20H
P07IM0
P06IM0
P05IM0
P04IM0
P03IM0
P02IM0
P01IM0
P00IM0
0000,0000
P1IM0
P1 口中断模式寄存器 0
FD21H
P17IM0
P16IM0
P15IM0
P14IM0
P13IM0
P12IM0
P11IM0
P10IM0
0000,0000
P2IM0
P2 口中断模式寄存器 0
FD22H
P27IM0
P26IM0
P25IM0
P24IM0
P23IM0
P22IM0
P21IM0
P20IM0
0000,0000
P3IM0
P3 口中断模式寄存器 0
FD23H
P37IM0
P36IM0
P35IM0
P34IM0
P33IM0
P32IM0
P31IM0
P30IM0
0000,0000
P4IM0
P4 口中断模式寄存器 0
FD24H
P47IM0
P46IM0
P45IM0
P44IM0
P43IM0
P42IM0
P41IM0
P40IM0
0000,0000
P5IM0
P5 口中断模式寄存器 0
FD25H
-
-
-
P54IM0
P53IM0
P52IM0
P51IM0
P50IM0
0000,0000
P6IM0
P6 口中断模式寄存器 0
FD26H
P67IM0
P66IM0
P65IM0
P64IM0
P63IM0
P62IM0
P61IM0
P60IM0
0000,0000
P7IM0
P7 口中断模式寄存器 0
FD27H
P77IM0
P76IM0
P75IM0
P74IM0
P73IM0
P72IM0
P71IM0
P70IM0
0000,0000
P0IM1
P0 口中断模式寄存器 1
FD30H
P07IM1
P06IM1
P05IM1
P04IM1
P03IM1
P02IM1
P01IM1
P00IM1
0000,0000
P1IM1
P1 口中断模式寄存器 1
FD31H
P17IM1
P16IM1
P15IM1
P14IM1
P13IM1
P12IM1
P11IM1
P10IM1
0000,0000
P2IM1
P2 口中断模式寄存器 1
FD32H
P27IM1
P26IM1
P25IM1
P24IM1
P23IM1
P22IM1
P21IM1
P20IM1
0000,0000
P3IM1
P3 口中断模式寄存器 1
FD33H
P37IM1
P36IM1
P35IM1
P34IM1
P33IM1
P32IM1
P31IM1
P30IM1
0000,0000
P4IM1
P4 口中断模式寄存器 1
FD34H
P47IM1
P46IM1
P45IM1
P44IM1
P43IM1
P42IM1
P41IM1
P40IM1
0000,0000
P5IM1
P5 口中断模式寄存器 1
FD35H
-
-
-
P54IM1
P53IM1
P52IM1
P51IM1
P50IM1
0000,0000
P6IM1
P6 口中断模式寄存器 1
FD36H
P67IM1
P66IM1
P65IM1
P64IM1
P63IM1
P62IM1
P61IM1
P60IM1
0000,0000
P7IM1
P7 口中断模式寄存器 1
FD37H
P77IM1
P76IM1
P75IM1
P74IM1
P73IM1
P72IM1
P71IM1
P70IM1
0000,0000
COMEN
COM 使能寄存器
FB00H
C7EN
C6EN
C5EN
C4EN
C3EN
C2EN
C1EN
C0EN
0000,0000
SEGENL
SEG 使能寄存器
FB01H
S7EN
S6EN
S5EN
S4EN
S3EN
S2EN
S1EN
S0EN
0000,0000
SEGENH
SEG 使能寄存器
FB02H
S15EN
S14EN
S13EN
S12EN
S11EN
S10EN
S9EN
S8EN
0000,0000
LEDCTRL
LED 控制寄存器
FB03H
LEDON
-
LEDCKS
LED 时钟分频寄存器
FB04H
0000,0001
COM0_DA_L 共阳模式显示数据
FB10H
0000,0000
COM1_DA_L 共阳模式显示数据
FB11H
0000,0000
COM2_DA_L 共阳模式显示数据
FB12H
0000,0000
COM3_DA_L 共阳模式显示数据
FB13H
0000,0000
COM4_DA_L 共阳模式显示数据
FB14H
0000,0000
COM5_DA_L 共阳模式显示数据
FB15H
0000,0000
COM6_DA_L 共阳模式显示数据
FB16H
0000,0000
COM7_DA_L 共阳模式显示数据
FB17H
0000,0000
深圳国芯人工智能有限公司
-
-
-
-
-
LEDMODE[1:0]
国内分销商电话: 0513-5501 2928/2929/2966
-
LEDDUTY[2:0]
传真: 0513-5501 2926/2956/2947
0000,0000
- 211 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
COM0_DA_H 共阳模式显示数据
FB18H
0000,0000
COM1_DA_H 共阳模式显示数据
FB19H
0000,0000
COM2_DA_H 共阳模式显示数据
FB1AH
0000,0000
COM3_DA_H 共阳模式显示数据
FB1BH
0000,0000
COM4_DA_H 共阳模式显示数据
FB1CH
0000,0000
COM5_DA_H 共阳模式显示数据
FB1DH
0000,0000
COM6_DA_H 共阳模式显示数据
FB1EH
0000,0000
COM7_DA_H 共阳模式显示数据
FB1FH
0000,0000
COM0_DC_L
共阴模式显示数据
FB20H
0000,0000
COM1_DC_L
共阴模式显示数据
FB21H
0000,0000
COM2_DC_L
共阴模式显示数据
FB22H
0000,0000
COM3_DC_L
共阴模式显示数据
FB23H
0000,0000
COM4_DC_L
共阴模式显示数据
FB24H
0000,0000
COM5_DC_L
共阴模式显示数据
FB25H
0000,0000
COM6_DC_L
共阴模式显示数据
FB26H
0000,0000
COM7_DC_L
共阴模式显示数据
FB27H
0000,0000
COM0_DC_H 共阴模式显示数据
FB28H
0000,0000
COM1_DC_H 共阴模式显示数据
FB29H
0000,0000
COM2_DC_H 共阴模式显示数据
FB2AH
0000,0000
COM3_DC_H 共阴模式显示数据
FB2BH
0000,0000
COM4_DC_H 共阴模式显示数据
FB2CH
0000,0000
COM5_DC_H 共阴模式显示数据
FB2DH
0000,0000
COM6_DC_H 共阴模式显示数据
FB2EH
0000,0000
COM7_DC_H 共阴模式显示数据
FB2FH
0000,0000
TSCHEN1
触摸按键使能寄存器 1
FB40H
TKEN7
TKEN6
TKEN2
TKEN1
TKEN0 0000,0000
TSCHEN2
触摸按键使能寄存器 2
FB41H
TKEN15
TKEN14 TKEN13 TKEN12 TKEN11 TKEN10
TKEN9
TKEN8 0000,0000
TSCFG1
触摸按键配置寄存器 1
FB42H
-
DT[2:0]
0000,0000
TSCFG2
触摸按键配置寄存器 2
FB43H
-
TSWUTC
触摸按键唤醒控制寄存器
FB44H
TSCTRL
触摸按键控制寄存器
FB45H
TSGO
SINGLE
TSWAIT
TSWUCS
TSSTA1
触摸按键状态寄存器 1
FB46H
LEDWK
-
-
-
TSWKCHN[3:0]
0000,0000
TSSTA2
触摸按键状态寄存器 2
FB47H
TSIF
TSDOV
-
-
TSDNCHN[3:0]
0000,0000
触摸按键时间控制寄存器
FB48H
0000,0000
TSDATH
触摸按键数据高字节
FB49H
0000,0000
TSDATL
触摸按键数据低字节
FB4AH
0000,0000
TSTH00H
触摸按键 0 门槛值高字节
FB50H
0000,0000
TSTH00L
触摸按键 0 门槛值低字节
FB51H
0000,0000
TSTH01H
触摸按键 1 门槛值高字节
FB52H
0000,0000
TSTH01L
触摸按键 1 门槛值低字节
FB53H
0000,0000
TSTH02H
触摸按键 2 门槛值高字节
FB54H
0000,0000
TSTH02L
触摸按键 2 门槛值低字节
FB55H
0000,0000
TSTH03H
触摸按键 3 门槛值高字节
FB56H
0000,0000
TSTH03L
触摸按键 3 门槛值低字节
FB57H
0000,0000
TSTH04H
触摸按键 4 门槛值高字节
FB58H
0000,0000
TSRT
深圳国芯人工智能有限公司
TKEN5
TKEN4
SCR[2:0]
-
TKEN3
-
-
-
-
-
TSVR[1:0]
0000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
TSDCEN TSWUEN
TSSAMP[1:0]
传真: 0513-5501 2926/2956/2947
0000,0000
- 212 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TSTH04L
触摸按键 4 门槛值低字节
FB59H
0000,0000
TSTH05H
触摸按键 5 门槛值高字节
FB5AH
0000,0000
TSTH05L
触摸按键 5 门槛值低字节
FB5BH
0000,0000
TSTH06H
触摸按键 6 门槛值高字节
FB5CH
0000,0000
TSTH06L
触摸按键 6 门槛值低字节
FB5DH
0000,0000
TSTH07H
触摸按键 7 门槛值高字节
FB5EH
0000,0000
TSTH07L
触摸按键 7 门槛值低字节
FB5FH
0000,0000
TSTH08H
触摸按键 8 门槛值高字节
FB60H
0000,0000
TSTH08L
触摸按键 8 门槛值低字节
FB61H
0000,0000
TSTH09H
触摸按键 9 门槛值高字节
FB62H
0000,0000
TSTH09L
触摸按键 9 门槛值低字节
FB63H
0000,0000
TSTH10H
触摸按键 10 门槛值高字节
FB64H
0000,0000
TSTH10L
触摸按键 10 门槛值低字节
FB65H
0000,0000
TSTH11H
触摸按键 11 门槛值高字节
FB66H
0000,0000
TSTH11L
触摸按键 11 门槛值低字节
FB67H
0000,0000
TSTH12H
触摸按键 12 门槛值高字节
FB68H
0000,0000
TSTH12L
触摸按键 12 门槛值低字节
FB69H
0000,0000
TSTH13H
触摸按键 13 门槛值高字节
FB6AH
0000,0000
TSTH13L
触摸按键 13 门槛值低字节
FB6BH
0000,0000
TSTH14H
触摸按键 14 门槛值高字节
FB6CH
0000,0000
TSTH14L
触摸按键 14 门槛值低字节
FB6DH
0000,0000
TSTH15H
触摸按键 15 门槛值高字节
FB6EH
0000,0000
TSTH15L
触摸按键 15 门槛值低字节
FB6FH
0000,0000
RTCCR
RTC 控制寄存器
FE60H
-
-
-
-
-
-
-
RUNRTC 0000,0000
RTCCFG
RTC 配置寄存器
FE61H
-
-
-
-
-
-
RTCCKS
SETRTC 0000,0000
RTCIEN
RTC 中断使能寄存器
FE62H
EALAI
EDAYI
EHOURI
EMINI
ESECI
ESEC2I
ESEC8I
ESEC32I 0000,0000
RTCIF
RTC 中断请求寄存器
FE63H
ALAIF
DAYIF
HOURIF
MINIF
SECIF
SEC2IF
SEC8IF
SEC32IF 0000,0000
ALAHOUR
RTC 闹钟的小时值
FE64H
-
-
-
ALAMIN
RTC 闹钟的分钟值
FE65H
-
-
0000,0000
ALASEC
RTC 闹钟的秒值
FE66H
-
-
0000,0000
ALASSEC
RTC 闹钟的 1/128 秒值
FE67H
-
0000,0000
INIYEAR
RTC 年初始化
FE68H
-
0000,0000
INIMONTH
RTC 月初始化
FE69H
-
-
-
INIDAY
RTC 日初始化
FE6AH
-
-
-
0000,0000
INIHOUR
RTC 小时初始化
FE6BH
-
-
-
0000,0000
INIMIN
RTC 分钟初始化
FE6CH
-
-
0000,0000
INISEC
RTC 秒初始化
FE6DH
-
-
0000,0000
INISSEC
RTC1/128 秒初始化
FE6EH
-
0000,0000
YEAR
RTC 的年计数值
FE70H
-
0000,0000
MONTH
RTC 的月计数值
FE71H
-
-
-
DAY
RTC 的日计数值
FE72H
-
-
-
0000,0000
HOUR
RTC 的小时计数值
FE73H
-
-
-
0000,0000
MIN
RTC 的分钟计数值
FE74H
-
-
0000,0000
SEC
RTC 的秒计数值
FE75H
-
-
0000,0000
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
0000,0000
-
0000,0000
-
0000,0000
传真: 0513-5501 2926/2956/2947
- 213 -
STC8H 系列技术手册
SSEC
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
RTC 的 1/128 秒计数值
深圳国芯人工智能有限公司
FE76H
技术支持: 13922829991
研发顾问: 13922805190
-
国内分销商电话: 0513-5501 2928/2929/2966
0000,0000
传真: 0513-5501 2926/2956/2947
- 214 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
9 I/O口
STC8H 系列单片机所有的 I/O 口均有 4 种工作模式:准双向口/弱上拉(标准 8051 输出口模式)
、
推挽输出/强上拉、高阻输入(电流既不能流入也不能流出)
、开漏输出。可使用软件对 I/O 口的工作模
式进行配置。
注意:除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在
使用 I/O 口时必须先设置 I/O 口模式
9.1
I/O口相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
P0
P0 端口
80H
P07
P06
P05
P04
P03
P02
P01
P00
1111,1111
P1
P1 端口
90H
P17
P16
P15
P14
P13
P12
P11
P10
1111,1111
P2
P2 端口
A0H
P27
P26
P25
P24
P23
P22
P21
P20
1111,1111
P3
P3 端口
B0H
P37
P36
P35
P34
P33
P32
P31
P30
1111,1111
P4
P4 端口
C0H
P47
P46
P45
P44
P43
P42
P41
P40
1111,1111
P5
P5 端口
C8H
-
-
-
P54
P53
P52
P51
P50
xx11,1111
P6
P6 端口
E8H
P67
P66
P65
P64
P63
P62
P61
P60
1111,1111
P7
P7 端口
F8H
P77
P76
P75
P74
P73
P72
P71
P70
1111,1111
P0M1
P0 口配置寄存器 1
93H
P07M1
P06M1
P05M1
P04M1
P03M1
P02M1
P01M1
P00M1
1111,1111
P0M0
P0 口配置寄存器 0
94H
P07M0
P06M0
P05M0
P04M0
P03M0
P02M0
P01M0
P00M0 0000,0000
P1M1
P1 口配置寄存器 1
91H
P17M1
P16M1
P15M1
P14M1
P13M1
P12M1
P11M1
P10M1
P1M0
P1 口配置寄存器 0
92H
P17M0
P16M0
P15M0
P14M0
P13M0
P12M0
P11M0
P10M0 0000,0000
P2M1
P2 口配置寄存器 1
95H
P27M1
P26M1
P25M1
P24M1
P23M1
P22M1
P21M1
P20M1
P2M0
P2 口配置寄存器 0
96H
P27M0
P26M0
P25M0
P24M0
P23M0
P22M0
P21M0
P20M0 0000,0000
P3M1
P3 口配置寄存器 1
B1H
P37M1
P36M1
P35M1
P34M1
P33M1
P32M1
P31M1
P30M1
P3M0
P3 口配置寄存器 0
B2H
P37M0
P36M0
P35M0
P34M0
P33M0
P32M0
P31M0
P30M0 0000,0000
P4M1
P4 口配置寄存器 1
B3H
P47M1
P46M1
P45M1
P44M1
P43M1
P42M1
P41M1
P40M1
P4M0
P4 口配置寄存器 0
B4H
P47M0
P46M0
P45M0
P44M0
P43M0
P42M0
P41M0
P40M0 0000,0000
P5M1
P5 口配置寄存器 1
C9H
-
-
-
P54M1
P53M1
P52M1
P51M1
P50M1
P5M0
P5 口配置寄存器 0
CAH
-
-
-
P54M0
P53M0
P52M0
P51M0
P50M0 xx00,0000
P6M1
P6 口配置寄存器 1
CBH
P67M1
P66M1
P65M1
P64M1
P63M1
P62M1
P61M1
P60M1 0000,0000
P6M0
P6 口配置寄存器 0
CCH
P67M0
P66M0
P65M0
P64M0
P63M0
P62M0
P61M0
P60M0 0000,0000
P7M1
P7 口配置寄存器 1
E1H
P77M1
P76M1
P75M1
P74M1
P73M1
P72M1
P71M1
P70M1 0000,0000
P7M0
P7 口配置寄存器 0
E2H
P77M0
P76M0
P75M0
P74M0
P73M0
P72M0
P71M0
P70M0 0000,0000
符号
描述
1111,1111
1111,1111
1111,1100
1111,1111
xx11,1111
位地址与符号
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
P0PU
P0 口上拉电阻控制寄存器
FE10H
P07PU
P06PU
P05PU
P04PU
P03PU
P02PU
P01PU
P00PU
0000,0000
P1PU
P1 口上拉电阻控制寄存器
FE11H
P17PU
P16PU
P15PU
P14PU
P13PU
P12PU
P11PU
P10PU
0000,0000
P2PU
P2 口上拉电阻控制寄存器
FE12H
P27PU
P26PU
P25PU
P24PU
P23PU
P22PU
P21PU
P20PU
0000,0000
P3PU
P3 口上拉电阻控制寄存器
FE13H
P37PU
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
0000,0000
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 215 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P4PU
P4 口上拉电阻控制寄存器
FE14H
P47PU
P46PU
P45PU
P44PU
P43PU
P42PU
P41PU
P40PU
0000,0000
P5PU
P5 口上拉电阻控制寄存器
FE15H
-
-
-
P54PU
P53PU
P52PU
P51PU
P50PU
xxx0,0000
P6PU
P6 口上拉电阻控制寄存器
FE16H
P67PU
P66PU
P65PU
P64PU
P63PU
P62PU
P61PU
P60PU
0000,0000
P7PU
P7 口上拉电阻控制寄存器
FE17H
P77PU
P76PU
P75PU
P74PU
P73PU
P72PU
P71PU
P70PU
0000,0000
P0NCS
P0 口施密特触发控制寄存器
FE18H
P07NCS
P06NCS
P05NCS P04NCS P03NCS P02NCS P01NCS
P00NCS 0000,0000
P1NCS
P1 口施密特触发控制寄存器
FE19H
P17NCS
P16NCS
P15NCS P14NCS P13NCS P12NCS
P11NCS
P10NCS 0000,0000
P2NCS
P2 口施密特触发控制寄存器
FE1AH P27NCS
P26NCS
P25NCS P24NCS P23NCS P22NCS P21NCS
P20NCS 0000,0000
P3NCS
P3 口施密特触发控制寄存器
FE1BH
P37NCS
P36NCS
P35NCS P34NCS P33NCS P32NCS P31NCS
P30NCS 0000,0000
P4NCS
P4 口施密特触发控制寄存器
FE1CH
P47NCS
P46NCS
P45NCS P44NCS P43NCS P42NCS P41NCS
P40NCS 0000,0000
P5NCS
P5 口施密特触发控制寄存器
FE1DH
-
-
P54NCS P53NCS P52NCS P51NCS
P50NCS xxx0,0000
P6NCS
P6 口施密特触发控制寄存器
FE1EH
P67NCS
P66NCS
P65NCS P64NCS P63NCS P62NCS P61NCS
P60NCS 0000,0000
P7NCS
P7 口施密特触发控制寄存器
FE1FH
P77NCS
P76NCS
P75NCS P74NCS P73NCS P72NCS P71NCS
P70NCS 0000,0000
P0SR
P0 口电平转换速率寄存器
FE20H
P07SR
P06SR
P05SR
P04SR
P03SR
P02SR
P01SR
P00SR
1111,1111
P1SR
P1 口电平转换速率寄存器
FE21H
P17SR
P16SR
P15SR
P14SR
P13SR
P12SR
P11SR
P10SR
1111,1111
P2SR
P2 口电平转换速率寄存器
FE22H
P27SR
P26SR
P25SR
P24SR
P23SR
P22SR
P21SR
P20SR
1111,1111
P3SR
P3 口电平转换速率寄存器
FE23H
P37SR
P36SR
P35SR
P34SR
P33SR
P32SR
P31SR
P30SR
1111,1111
P4SR
P4 口电平转换速率寄存器
FE24H
P47SR
P46SR
P45SR
P44SR
P43SR
P42SR
P41SR
P40SR
1111,1111
P5SR
P5 口电平转换速率寄存器
FE25H
-
-
-
P54SR
P53SR
P52SR
P51SR
P50SR
xxx1,1111
P6SR
P6 口电平转换速率寄存器
FE26H
P67SR
P66SR
P65SR
P64SR
P63SR
P62SR
P61SR
P60SR
1111,1111
P7SR
P7 口电平转换速率寄存器
FE27H
P77SR
P76SR
P75SR
P74SR
P73SR
P72SR
P71SR
P70SR
1111,1111
P0DR
P0 口驱动电流控制寄存器
FE28H
P07DR
P06DR
P05DR
P04DR
P03DR
P02DR
P01DR
P00DR
1111,1111
P1DR
P1 口驱动电流控制寄存器
FE29H
P17DR
P16DR
P15DR
P14DR
P13DR
P12DR
P11DR
P10DR
1111,1111
P2DR
P2 口驱动电流控制寄存器
FE2AH
P27DR
P26DR
P25DR
P24DR
P23DR
P22DR
P21DR
P20DR
1111,1111
P3DR
P3 口驱动电流控制寄存器
FE2BH
P37DR
P36DR
P35DR
P34DR
P33DR
P32DR
P31DR
P30DR
1111,1111
P4DR
P4 口驱动电流控制寄存器
FE2CH
P47DR
P46DR
P45DR
P44DR
P43DR
P42DR
P41DR
P40DR
1111,1111
P5DR
P5 口驱动电流控制寄存器
FE2DH
-
-
-
P54DR
P53DR
P52DR
P51DR
P50DR xxx1,1111
P6DR
P6 口驱动电流控制寄存器
FE2EH
P67DR
P66DR
P65DR
P64DR
P63DR
P62DR
P61DR
P60DR
1111,1111
P7DR
P7 口驱动电流控制寄存器
FE2FH
P77DR
P76DR
P75DR
P74DR
P73DR
P72DR
P71DR
P70DR
1111,1111
P0IE
P0 口输入使能控制寄存器
FE30H
P07IE
P06IE
P05IE
P04IE
P03IE
P02IE
P11IE
P00IE
1111,1111
P1IE
P1 口输入使能控制寄存器
FE31H
P17IE
P16IE
P15IE
P14IE
P13IE
P12IE
P11IE
P10IE
1111,1111
P3IE
P3 口输入使能控制寄存器
FE33H
P37IE
P36IE
P35IE
P34IE
P33IE
P32IE
P31IE
P30IE
1111,1111
深圳国芯人工智能有限公司
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 216 -
STC8H 系列技术手册
9.1.1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
端口数据寄存器(Px)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0
80H
P0.7
P0.6
P0.5
P0.4
P0.3
P0.2
P0.1
P0.0
P1
90H
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P2
A0H
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P3
B0H
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P4
C0H
P4.7
P4.6
P4.5
P4.4
P4.3
P4.2
P4.1
P4.0
P5
C8H
-
-
-
P5.4
P5.3
P5.2
P5.1
P5.0
P6
E8H
P6.7
P6.6
P6.5
P6.4
P6.3
P6.2
P6.1
P6.0
P7
F8H
P7.7
P7.6
P7.5
P7.4
P7.3
P7.2
P7.1
P7.0
读写端口状态
写 0:输出低电平到端口缓冲区
写 1:输出高电平到端口缓冲区
读:直接读端口管脚上的电平
9.1.2
端口模式配置寄存器(PxM0,PxM1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0M0
94H
P07M0
P06M0
P05M0
P04M0
P03M0
P02M0
P01M0
P00M0
P0M1
93H
P07M1
P06M1
P05M1
P04M1
P03M1
P02M1
P01M1
P00M1
P1M0
92H
P17M0
P16M0
P15M0
P14M0
P13M0
P12M0
P11M0
P10M0
P1M1
91H
P17M1
P16M1
P15M1
P14M1
P13M1
P12M1
P11M1
P10M1
P2M0
96H
P27M0
P26M0
P25M0
P24M0
P23M0
P22M0
P21M0
P20M0
P2M1
95H
P27M1
P26M1
P25M1
P24M1
P23M1
P22M1
P21M1
P20M1
P3M0
B2H
P37M0
P36M0
P35M0
P34M0
P33M0
P32M0
P31M0
P30M0
P3M1
B1H
P37M1
P36M1
P35M1
P34M1
P33M1
P32M1
P31M1
P30M1
P4M0
B4H
P47M0
P46M0
P45M0
P44M0
P43M0
P42M0
P41M0
P40M0
P4M1
B3H
P47M1
P46M1
P45M1
P44M1
P43M1
P42M1
P41M1
P40M1
P5M0
CAH
-
-
-
P54M0
P53M0
P52M0
P51M0
P50M0
P5M1
C9H
-
-
-
P54M1
P53M1
P52M1
P51M1
P50M1
P6M0
CCH
P67M0
P66M0
P65M0
P64M0
P63M0
P62M0
P61M0
P60M0
P6M1
CBH
P67M1
P66M1
P65M1
P64M1
P63M1
P62M1
P61M1
P60M1
P7M0
E2H
P77M0
P76M0
P75M0
P74M0
P73M0
P72M0
P71M0
P70M0
P7M1
E1H
P77M1
P76M1
P75M1
P74M1
P73M1
P72M1
P71M1
P70M1
配置端口的模式
PnM1.x
PnM0.x
Pn.x 口工作模式
0
0
准双向口
0
1
推挽输出
1
0
高阻输入
1
1
开漏输出
注意:当有I/O口被选择为ADC输入通道时,必须设置PxM0/PxM1寄存器将I/O口模式设置为输入模式。
另外如果MCU进入掉电模式/时钟停振模式后,仍需要使能ADC通道,则需要设置PxIE寄存器关闭数字输
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 217 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
入,才能保证不会有额外的耗电
9.1.3
端口上拉电阻控制寄存器(PxPU)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0PU
FE10H
P07PU
P06PU
P05PU
P04PU
P03PU
P02PU
P01PU
P00PU
P1PU
FE11H
P17PU
P16PU
P15PU
P14PU
P13PU
P12PU
P11PU
P10PU
P2PU
FE12H
P27PU
P26PU
P25PU
P24PU
P23PU
P22PU
P21PU
P20PU
P3PU
FE13H
P37PU
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
P4PU
FE14H
P47PU
P46PU
P45PU
P44PU
P43PU
P42PU
P41PU
P40PU
P5PU
FE15H
-
-
-
P54PU
P53PU
P52PU
P51PU
P50PU
P6PU
FE16H
P67PU
P66PU
P65PU
P64PU
P63PU
P62PU
P61PU
P60PU
P7PU
FE17H
P77PU
P76PU
P75PU
P74PU
P73PU
P72PU
P71PU
P70PU
端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些)
0:禁止端口内部的 4.1K 上拉电阻
1:使能端口内部的 4.1K 上拉电阻
9.1.4
端口施密特触发控制寄存器(PxNCS)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0NCS
FE18H
P07NCS
P06NCS
P05NCS
P04NCS
P03NCS
P02NCS
P01NCS
P00NCS
P1NCS
FE19H
P17NCS
P16NCS
P15NCS
P14NCS
P13NCS
P12NCS
P11NCS
P10NCS
P2NCS
FE1AH
P27NCS
P26NCS
P25NCS
P24NCS
P23NCS
P22NCS
P21NCS
P20NCS
P3NCS
FE1BH
P37NCS
P36NCS
P35NCS
P34NCS
P33NCS
P32NCS
P31NCS
P30NCS
P4NCS
FE1CH
P47NCS
P46NCS
P45NCS
P44NCS
P43NCS
P42NCS
P41NCS
P40NCS
P5NCS
FE1DH
-
-
-
P54NCS
P53NCS
P52NCS
P51NCS
P50NCS
P6NCS
FE1EH
P67NCS
P66NCS
P65NCS
P64NCS
P63NCS
P62NCS
P61NCS
P60NCS
P7NCS
FE1FH
P77NCS
P76NCS
P75NCS
P74NCS
P73NCS
P72NCS
P71NCS
P70NCS
端口施密特触发控制位
0:使能端口的施密特触发功能。(上电复位后默认使能施密特触发)
1:禁止端口的施密特触发功能。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 218 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
端口电平转换速度控制寄存器(PxSR)
9.1.5
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
复位值
P0SR
FE20H
P07SR
P06SR
P05SR
P04SR
P03SR
P02SR
P01SR
P00SR
1111,1111
P1SR
FE21H
P17SR
P16SR
P15SR
P14SR
P13SR
P12SR
P11SR
P10SR
1111,1111
P2SR
FE22H
P27SR
P26SR
P25SR
P24SR
P23SR
P22SR
P21SR
P20SR
1111,1111
P3SR
FE23H
P37SR
P36SR
P35SR
P34SR
P33SR
P32SR
P31SR
P30SR
1111,1111
P4SR
FE24H
P47SR
P46SR
P45SR
P44SR
P43SR
P42SR
P41SR
P40SR
1111,1111
P5SR
FE25H
-
-
-
P54SR
P53SR
P52SR
P51SR
P50SR
1111,1111
P6SR
FE26H
P57SR
P66SR
P65SR
P64SR
P63SR
P62SR
P61SR
P60SR
1111,1111
P7SR
FE27H
P77SR
P76SR
P75SR
P74SR
P73SR
P72SR
P71SR
P70SR
1111,1111
控制端口电平转换的速度
0:电平转换速度快,相应的上下冲会比较大
1:电平转换速度慢,相应的上下冲比较小
端口驱动电流控制寄存器(PxDR)
9.1.6
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
复位值
P0DR
FE28H
P07DR
P06DR
P05DR
P04DR
P03DR
P02DR
P01DR
P00DR
1111,1111
P1DR
FE29H
P17DR
P16DR
P15DR
P14DR
P13DR
P12DR
P11DR
P10DR
1111,1111
P2DR
FE2AH
P27DR
P26DR
P25DR
P24DR
P23DR
P22DR
P21DR
P20DR
1111,1111
P3DR
FE2BH
P37DR
P36DR
P35DR
P34DR
P33DR
P32DR
P31DR
P30DR
1111,1111
P4DR
FE2CH
P47DR
P46DR
P45DR
P44DR
P43DR
P42DR
P41DR
P40DR
1111,1111
P5DR
FE2DH
-
-
-
P54DR
P53DR
P52DR
P51DR
P50DR
1111,1111
P6DR
FE2EH
P67DR
P66DR
P65DR
P64DR
P63DR
P62DR
P61DR
P60DR
1111,1111
P7DR
FE2FH
P77DR
P76DR
P75DR
P74DR
P73DR
P72DR
P71DR
P70DR
1111,1111
控制端口的驱动能力
0:增强驱动能力
1:一般驱动能力
9.1.7
端口数字信号输入使能控制寄存器(PxIE)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0IE
FE30H
P07IE
P06IE
P05IE
P04IE
P03IE
P02IE
P11IE
P00IE
P1IE
FE31H
P17IE
P16IE
P15IE
P14IE
P13IE
P12IE
P11IE
P10IE
P3IE
FE33H
P37IE
P36IE
P35IE
P34IE
P33IE
P32IE
P31IE
P30IE
数字信号输入使能控制
0:禁止数字信号输入。若 I/O 被当作比较器输入口、ADC 输入口或者触摸按键输入口等模拟口时,
进入时钟停振模式前,必须设置为 0,否则会有额外的耗电。
1:使能数字信号输入。若 I/O 被当作数字口时,必须设置为 1,否 MCU 无法读取外部端口的电平。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 219 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
配置I/O口
9.2
每个 I/O 的配置都需要使用两个寄存器进行设置。
以 P0 口为例,配置 P0 口需要使用 P0M0 和 P0M1 两个寄存器进行配置,如下图所示:
配置 P0.7
配置 P0.5
配置 P0.3
配置 P0.1
P0M0
7
6
5
4
3
2
1
0
P0M1
7
6
5
4
3
2
1
0
配置 P0.6
配置 P0.4
配置 P0.2
配置 P0.0
即 P0M0 的第 0 位和 P0M1 的第 0 位组合起来配置 P0.0 口的模式
即 P0M0 的第 1 位和 P0M1 的第 1 位组合起来配置 P0.1 口的模式
其他所有 I/O 的配置都与此类似。
PnM0 与 PnM1 的组合方式如下表所示
PnM1
PnM0
0
0
I/O 口工作模式
准双向口(传统8051端口模式,弱上拉)
灌电流可达20mA,拉电流为270~150μA(存在制造误差)
0
1
推挽输出(强上拉输出,可达20mA,要加限流电阻)
1
0
高阻输入(电流既不能流入也不能流出)
开漏输出(Open-Drain),内部上拉电阻断开
1
1
开漏模式既可读外部状态也可对外输出(高电平或低电
平)。如要正确读外部状态或需要对外输出高电平,需外加
上拉电阻,否则读不到外部状态,也对外输不出高电平。
注:n = 0,1,2,3,4,5,6,7
注意:
虽然每个 I/O 口在弱上拉(准双向口)/强推挽输出/开漏模式时都能承受 20mA 的灌电流(还是要加限
流电阻,如 1K、560Ω、472Ω 等)
,在强推挽输出时能输出 20mA 的拉电流(也要加限流电阻)
,但整个芯片
的工作电流推荐不要超过 70mA,即从 Vcc 流入的电流建议不要超过 70mA,从 Gnd 流出电流建议不要超过
70mA,整体流入/流出电流建议都不要超过 70mA。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 220 -
STC8H 系列技术手册
9.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
I/O的结构图
9.3.1
准双向口(弱上拉)
准双向口(弱上拉)输出类型可用作输出和输入功能而不需重新配置端口输出状态。这是因为当端
口输出为 1 时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收
相当大的电流。准双向口有 3 个上拉晶体管适应不同的需要。
在 3 个上拉晶体管中,有 1 个上拉晶体管称为“弱上拉”,当端口寄存器为 1 且引脚本身也为 1 时
打开。此上拉提供基本驱动电流使准双向口输出为 1。如果一个引脚输出为 1 而由外部装置下拉到低时,
弱上拉关闭而“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力
使引脚上的电压降到门槛电压以下。对于 5V 单片机,
“弱上拉”晶体管的电流约 250uA;对于 3.3V 单
片机,“弱上拉”晶体管的电流约 150uA。
第 2 个上拉晶体管,称为“极弱上拉”,当端口锁存为 1 时打开。当引脚悬空时,这个极弱的上拉
源产生很弱的上拉电流将引脚上拉为高电平。对于 5V 单片机,
“极弱上拉”晶体管的电流约 18uA;对
于 3.3V 单片机,“极弱上拉”晶体管的电流约 5uA。
第 3 个上拉晶体管称为“强上拉”。当端口锁存器由 0 到 1 跳变时,这个上拉用来加快准双向口由
逻辑 0 到逻辑 1 转换。当发生这种情况时,强上拉打开约 2 个时钟以使引脚能够迅速地上拉到高电平。
准双向口(弱上拉)带有一个施密特触发输入以及一个干扰抑制电路。准双向口(弱上拉)读外部
状态前,要先锁存为 ‘1’,才可读到外部正确的状态.
准双向口(弱上拉)输出如下图所示:
VCC
2个CPU
时钟延时
强
VCC
VCC
极弱
弱
端口
引脚
端口锁存数据
输入数据
干扰抑制
9.3.2
推挽输出
强推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为 1 时提供持续
的强上拉。推挽模式一般用于需要更大驱动电流的情况。
强推挽引脚配置如下图所示:
VCC
强
端口
引脚
端口锁存数据
输入数据
干扰抑制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 221 -
STC8H 系列技术手册
9.3.3
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
高阻输入
电流既不能流入也不能流出
输入口带有一个施密特触发输入以及一个干扰抑制电路
高阻输入引脚配置如下图所示:
端口
引脚
输入数据
干扰抑制
9.3.4
开漏输出
开漏模式既可读外部状态也可对外输出(高电平或低电平)。如要正确读外部状态或需要对外输出
高电平,需外加上拉电阻。
当端口锁存器为 0 时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出高电平时,这种配置方
式必须有外部上拉,一般通过电阻外接到 Vcc。如果外部有上拉电阻,开漏的 I/O 口还可读外部状态,
即此时被配置为开漏模式的 I/O 口还可作为输入 I/O 口。这种方式的下拉与准双向口相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。
输出端口配置如下图所示:
端口
引脚
端口锁存数据
输入数据
干扰抑制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 222 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
新增 4.1K上拉电阻
9.3.5
STC8 系列所有的 I/O 口内部均可使能一个大约 4.1K 的上拉电阻(由于制造误差,上拉电阻的范围
可能为 3K~5K)
VCC
VCC
VCC
VCC
新增
4.1K
上拉电阻
2个CPU
时钟延时
强
极弱
弱
端口
引脚
端口锁存数据
PxPU控制位
输入数据
干扰抑制
端口上拉电阻控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0PU
FE10H
P07PU
P06PU
P05PU
P04PU
P03PU
P02PU
P01PU
P00PU
P1PU
FE11H
P17PU
P16PU
P15PU
P14PU
P13PU
P12PU
P11PU
P10PU
P2PU
FE12H
P27PU
P26PU
P25PU
P24PU
P23PU
P22PU
P21PU
P20PU
P3PU
FE13H
P37PU
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
P4PU
FE14H
P47PU
P46PU
P45PU
P44PU
P43PU
P42PU
P41PU
P40PU
P5PU
FE15H
-
-
-
P54PU
P53PU
P52PU
P51PU
P50PU
P6PU
FE16H
P67PU
P66PU
P65PU
P64PU
P63PU
P62PU
P61PU
P60PU
P7PU
FE17H
P77PU
P76PU
P75PU
P74PU
P73PU
P72PU
P71PU
P70PU
端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些)
0:禁止端口内部的 4.1K 上拉电阻
1:使能端口内部的 4.1K 上拉电阻
9.3.6
如何设置I/O口对外输出速度
当用户需要 I/O 口对外输出较快的频率时,可通过加大 I/O 口驱动电流以及增加 I/O 口电平转换速
度以达到提高 I/O 口对外输出速度
设置 PxSR 寄存器,可用于控制 I/O 口电平转换速度,设置为 0 时相应的 I/O 口为快速翻转,设置
为 1 时为慢速翻转。
设置 PxDR 寄存器,可用于控制 I/O 口驱动电流大小,设置为 1 时 I/O 输出为一般驱动电流,设置
为 0 时为强驱动电流
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 223 -
STC8H 系列技术手册
9.3.7
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
如何设置I/O口电流驱动能力
若需要改变 I/O 口的电流驱动能力,可通过设置 PxDR 寄存器来实现
设置 PxDR 寄存器,可用于控制 I/O 口驱动电流大小,设置为 1 时 I/O 输出为一般驱动电流,设置
为 0 时为强驱动电流
9.3.8
如何降低I/O口对外辐射
由于设置 PxSR 寄存器,可用于控制 I/O 口电平转换速度,设置 PxDR 寄存器,可用于控制 I/O 口
驱动电流大小
当需要降低 I/O 口对外的辐射时,需要将 PxSR 寄存器设置为 1 以降低 I/O 口电平转换速度,同时
需要将 PxDR 寄存器设为 1 以降低 I/O 驱动电流,最终达到降低 I/O 口对外辐射
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 224 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
范例程序
9.4
端口模式设置
9.4.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0x96;
0x95;
0xb2;
0xb1;
0xb4;
0xb3;
0xca;
0xc9;
0xcc;
0xcb;
0xe2;
0xe1;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0xff;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0xff;
P3M0 = 0xff;
P3M1 = 0xff;
//设置 P0.0~P0.7 为双向口模式
//设置 P1.0~P1.7 为推挽输出模式
//设置 P2.0~P2.7 为高阻输入模式
//设置 P3.0~P3.7 为开漏模式
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
094H
093H
092H
091H
096H
095H
0B2H
0B1H
0B4H
0B3H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 225 -
STC8H 系列技术手册
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
0CAH
0C9H
0CCH
0CBH
0E2H
0E1H
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP, #5FH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0,#00H
P0M1,#00H
P1M0,#0FFH
P1M1,#00H
P2M0,#00H
P2M1,#0FFH
P3M0,#0FFH
P3M1,#0FFH
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;设置 P0.0~P0.7 为双向口模式
;设置 P1.0~P1.7 为推挽输出模式
;设置 P2.0~P2.7 为高阻输入模式
;设置 P3.0~P3.7 为开漏模式
END
双向口读写操作
9.4.2
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sbit
P0M0
P0M1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
P00
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
P0^0;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 226 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P0M0 = 0x00;
P0M1 = 0x00;
//设置 P0.0~P0.7 为双向口模式
P00 = 1;
P00 = 0;
//P0.0 口输出高电平
//P0.0 口输出低电平
P00 = 1;
_nop_();
_nop_();
CY = P00;
//读取端口前先使能内部弱上拉电阻
//等待两个时钟
//
//读取端口状态
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
094H
093H
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 227 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
MOV
MOV
MOV
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
P0M0,#00H
P0M1,#00H
;设置 P0.0~P0.7 为双向口模式
SETB
CLR
P0.0
P0.0
;P0.0 口输出高电平
;P0.0 口输出低电平
SETB
NOP
NOP
MOV
P0.0
;读取端口前先使能内部弱上拉电阻
;等待两个时钟
C,P0.0
;读取端口状态
JMP
$
研发顾问: 13922805190
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 228 -
STC8H 系列技术手册
9.5
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
一种典型三极管控制电路
如果上拉控制,建议加上拉电阻 R1(3.3K~10K),如果不加上拉电阻 R1(3.3K~10K),建议 R2 的值在 15K
以上,或用强推挽输出。
9.6
典型发光二极管控制电路
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 229 -
STC8H 系列技术手册
9.7
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
混合电压供电系统 3V/5V器件I/O口互连
STC 的 5V 单片机连接 3.3V 器件时,为防止 3.3V 器件承受不了 5V,可将相应的 5V 单片机 I/O 口先串一
个 330Ω 的限流电阻到 3.3V 器件 I/O 口,程序初始化时将 5V 单片机的 I/O 口设置成开漏配置,断开内部上
拉电阻,相应的 3.3V 器件 I/O 口外部加 10K 上拉电阻到 3.3V 器件的 Vcc,这样高电平是 3.3V,低电平是 0V,
输入输出一切正常。
STC 的 3V 单片机连接 5V 器件时,为防止 3V 单片机承受不了 5V,如果相应的 I/O 口是输入,可在该 I/O
口上串接一个隔离二极管,隔离高压部分。外部信号电压高于单片机工作电压时截止,I/O 口因内内部上拉
到高电平,所以读 I/O 口状态是高电平;外部信号电压为低时导通,I/O 口被钳位在 0.7V,小于 0.8V 时单
片机读 I/O 口状态是低电平。
STC 的 3V 单片机连接 5V 器件时,为防止 3V 单片机承受不了 5V,如果相应的 I/O 口是输出,可用一个
NPN 三极管隔离,电路如下:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 230 -
STC8H 系列技术手册
9.8
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
如何让I/O口上电复位时为低电平
普通 8051 单片机上电复位时普通 I/O 口为弱上拉(准双向口)高电平输出,而很多实际应用要求上电时
某些 I/O 口为低电平输出,否则所控制的系统(如马达)就会误动作,现 STC 的单片机由于既有弱上拉输出又
有强推挽输出,就可以很轻松的解决此问题。
现可在 STC 的单片机 I/O 口上加一个下拉电阻(10K 左右),这样上电复位时,除了下载口 P3.0 和 P3.1
为弱上拉(准双向口)外,其他 I/O 口均为高阻输入模式,而外部有下拉电阻,所以该 I/O 口上电复位时外部
为低电平。如果要将此 I/O 口驱动为高电平,可将此 I/O 口设置为强推挽输出,而强推挽输出时,I/O 口驱
动电流可达 20mA,故肯定可以将该口驱动为高电平输出。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 231 -
STC8H 系列技术手册
9.9
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 232 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
9.10 I/O口直接驱动LED数码管应用线路图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 233 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
9.11 用STC系列MCU的I/O口直接驱动段码LCD
当产品需要段码 LCD 显示时,如果使用不带 LCD 驱动器的 MCU,则需要外接 LCD 驱动 IC,这
会增加成本。事实上,很多小项目,比如大量的小家电,需要显示的段码不多,常见的是 4 个 8 带小数
点或时钟的冒号“:”,这样如果使用 IO 口直接扫描显示,则会降低成本,工作更可靠。
但是,本方案不合适驱动太多的段( 占用 IO 太多),也不合适非常低功耗的场合(驱动会有几百
uA 电流)。
段码 LCD 驱动简单原理:如图 1 所示。
LCD 是一种特殊的液态晶体,在电场的作用下晶体的排列方向会发生扭转,因而改变其透光性,
从而可以看到显示内容。LCD 有一个扭转电压阀值,当 LCD 两端电压高于此阀值时,显示内容,低于
此阀值时,不显示。通常 LCD 有 3 个参数:工作电压、DUTY(对应 COM 数)和 BIAS(即偏压,对
应阀值),比如 3.0V、1/4 DUTY、1/3 BIAS,表示 LCD 显示电压为 3.0V,4 个 COM,阀值大约是 1.5V,
当加在某段 LCD 两端电压为 3.0V 时显示,而加 1.0V 时不显示。但是 LCD 对于驱动电压的反应不是很
敏感的,比如加 2V 时,可能会微弱显示,这就是通常说的“鬼影”。所以要保证驱动显示时,要大于
阀值电压比较多,而不显示时,要用比阀值小比较多的电压。
注意:LCD 要用交流驱动,其两端不能加直流电压,否则时间稍长就会损坏,所以要保证加在 LCD
两端的驱动电压的平均电压为 0。LCD 使用时分割扫描法,任何时候一个 COM 扫描有效,另外的 COM
处于无效状态。
驱动 1/4Duty 1/2BIAS 3V 的方案电路见图 1,LCD 扫描原理见图 3,MCU 为 3.0V 或 3.3V 工作,
并且每个 COM 都串一个 20K 电阻接到一个电容 C1,RC 滤波后得到一个中点电压 1/2VDD。在轮到某
个 COM 扫描时,连接的 IO 设置成推挽输出,其余 COM 设置成高阻,如果与本 COM 连接的 SEG 不
显示,则 SEG 输出与 COM 同相,如果显示,则反相。扫描完后,这个 COM 的 IO 就设置成高阻。每
个 COM 通过 20K 电阻连接到电容 C1 上的 1/2VDD 电压,而 SEG 根据是否显示输出高低电平,这样加
在 LCD 段上的电压,显示时是+-VDD,不显示时是+-1/2VDD,保证了 LCD 两端平均直流电压为 0。
驱动 1/4Duty 1/3BIAS 3V 的方案电路见图 4,LCD 扫描原理见图 5,MCU 为 5V 工作,SEG 接的 IO
通过电阻分压输出 1.5V、3.5V,COM 接的 IO 通过电阻分压输出 0.5V、2.5V(高阻时)、4.5V,分压电
阻公共点接到一个电容 C1,RC 滤波后得到一个中点电压 1/2VDD。在轮到某个 COM 扫描时,设置成
推挽输出,如果与本 COM 连接的 SEG 不显示,则 SEG 输出与 COM 同相,如果显示,则反相。扫描
完后,这个 COM 的 IO 就设置成高阻,这样这个 COM 就通过 47K 电阻连接到 2.5V 电压,而 SEG 根
据是否显示输出高低电平,这样加在 LCD 上的电压,显示时是+-3.0V,不显示时是+-1.0V,完全满足
LCD 的扫描要求。
当需要睡眠省电时,把所有 COM 和 SEG 驱动 IO 全部输出低电平,LCD 驱动部分不会增加额外电
流。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 234 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
图 1:驱动 1/4Duty 1/2BIAS 3V LCD 的电路
图 2:段码名称图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 235 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
图 3:1/4Duty 1/2BIAS 扫描原理图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 236 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
图 4:驱动 1/4Duty 1/3BIAS 3V LCD 的电路
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 237 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
图 5:1/4Duty 1/3BIAS 扫描原理图
为了使用方便,显示内容放在一个显存中,其中的各个位与 LCD 的段一一对应,见图 6。
图 6:LCD 真值表和显存影射表
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 238 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
图 7:驱动效果照片
本 LCD 扫描程序仅需要两个函数:
1、 LCD 段码扫描函数 void LCD_scan(void)
程序隔一定的时间调用这个函数,就会将 LCD 显示缓冲的内容显示到 LCD 上,全部扫描一次需要 8
个调用周期,调用间隔一般是 1~2ms,假如使用 1ms,则扫描周期就是 8ms,刷新率就是 125HZ。
2、 LCD 段码显示缓冲装载函数 void LCD_load(u8 n,u8 dat)
本函数用来将显示的数字或字符放在 LCD 显示缓冲中,比如 LCD_load(1,6),就是要在第一个数字位置
显示数字 6,支持显示 0~9,A~F,其它字符用户可以自己添加。
另外,用宏来显示、熄灭或闪烁冒号或小数点。
C 语言代码
/*****************功能说明******************
用 STC15 系列测试 I/O 直接驱动段码 LCD(6 个 8 字 LCD, 1/4 Dutys, 1/3 bias)。
上电后显示一个时间(时分秒).
P3.2 对地接一个开关,用来进入睡眠或唤醒.
******************************************/
#include "reg51.h"
#include "intrins.h"
typedef
typedef
typedef
unsigned char
unsigned int
unsigned long
u8;
u16;
u32;
sfr AUXR = 0x8e;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 239 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
sfr P1M1 = 0x91;
sfr P1M0 = 0x92;
sfr P2M1 = 0x95;
sfr P2M0 = 0x96;
/********************本地常量声明**************************/
#define MAIN_Fosc
11059200L
//定义主时钟
#define DIS_BLACK
#define DIS_
#define DIS_A
#define DIS_B
#define DIS_C
#define DIS_D
#define DIS_E
#define DIS_F
0x10
0x11
0x0A
0x0B
0x0C
0x0D
0x0E
0x0F
#define LCD_SET_DP2
#define LCD_CLR_DP2
#define LCD_FLASH_DP2
LCD_buff[0] |= 0x08
LCD_buff[0] &= ~0x08
LCD_buff[0] ^= 0x08
#define LCD_SET_DP4
#define LCD_CLR_DP4
#define LCD_FLASH_DP4
LCD_buff[4] |= 0x80
LCD_buff[4] &= ~0x80
LCD_buff[4] ^= 0x80
#define LCD_SET_2M
#define LCD_CLR_2M
#define LCD_FLASH_2M
LCD_buff[0] |= 0x20
LCD_buff[0] &= ~0x20
LCD_buff[0] ^= 0x20
#define LCD_SET_4M
#define LCD_CLR_4M
#define LCD_FLASH_4M
LCD_buff[0] |= 0x02
LCD_buff[0] &= ~0x02
LCD_buff[0] ^= 0x02
#define LCD_SET_DP5
#define LCD_CLR_DP5
#define LCD_FLASH_DP5
LCD_buff[4] |= 0x20
LCD_buff[4] &= ~0x20
LCD_buff[4] ^= 0x20
#define P1n_standard(bitn)
#define P1n_push_pull(bitn)
#define P1n_pure_input(bitn)
#define P1n_open_drain(bitn)
P1M1 &= ~(bitn), P1M0 &= ~(bitn)
P1M1 &= ~(bitn), P1M0 |= (bitn)
P1M1 |= (bitn), P1M0 &= ~(bitn)
P1M1 |= (bitn), P1M0 |= (bitn)
#define P2n_standard(bitn)
#define P2n_push_pull(bitn)
#define P2n_pure_input(bitn)
#define P2n_open_drain(bitn)
P2M1 &= ~(bitn), P2M0 &= ~(bitn)
P2M1 &= ~(bitn), P2M0 |= (bitn)
P2M1 |= (bitn), P2M0 &= ~(bitn)
P2M1 |= (bitn), P2M0 |= (bitn)
/********************本地变量声明**************************/
u8 cnt_500ms;
u8 second,minute,hour;
bit B_Second;
bit B_2ms;
u8 LCD_buff[8];
u8 scan_index;
/********************本地函数声明**************************/
void LCD_load(u8 n,u8 dat);
void LCD_scan(void);
void LoadRTC(void);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 240 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void delay_ms(u8 ms);
/********************主函数**************************/
void main(void)
{
u8 i;
AUXR = 0x80;
TMOD = 0x00;
TL0 = (65536 - (MAIN_Fosc / 500));
TH0 = (65536 - (MAIN_Fosc / 500)) >> 8;
TR0 = 1;
ET0 = 1;
EA = 1;
//初始化 LCD 显存
for(i=0; i= 250)
{
cnt_500ms = 0;
//
LCD_FLASH_2M;
//
LCD_FLASH_4M;
B_Second = ~B_Second;
if(B_Second)
{
if(++second >= 60)
{
second = 0;
if(++minute >= 60)
{
minute = 0;
if(++hour >= 24) hour = 0;
}
}
LoadRTC();
}
//500ms 到
//闪烁时分间隔:
//闪烁分秒间隔:
//1 分钟到
//1 小时到
//24 小时到
//显示时间
}
if(!INT0)
{
深圳国芯人工智能有限公司
//键按下,准备睡眠
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 241 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
LCD_CLR_2M;
LCD_CLR_4M;
LCD_load(1,DIS_BLACK);
LCD_load(2,DIS_BLACK);
LCD_load(3,0);
LCD_load(4,0x0F);
LCD_load(5,0x0F);
LCD_load(6,DIS_BLACK);
//显示时分间隔:
//显示分秒间隔:
while(!INT0) delay_ms(10);
delay_ms(50);
while(!INT0) delay_ms(10);
//等待释放按键
TR0 = 0;
IE0 = 0;
EX0 = 1;
IT0 = 1;
//关闭定时器
//外中断 0 标志位
//INT0 Enable
//INT0 下降沿中断
P1n_push_pull(0xff);
P2n_push_pull(0xff);
P1 = 0;
P2 = 0;
//com 和 seg 全部输出 0
PCON |= 0x02;
_nop_();
_nop_();
_nop_();
//Sleep
LCD_SET_2M;
LCD_SET_4M;
LoadRTC();
TR0 = 1;
while(!INT0) delay_ms(10);
delay_ms(50);
while(!INT0) delay_ms(10);
//显示时分间隔:
//显示分秒间隔:
//显示时间
//打开定时器
//等待释放按键
研发顾问: 13922805190
//再次等待释放按键
//再次等待释放按键
}
}
}
}
/********************延时函数**************************/
void delay_ms(u8 ms)
{
unsigned int i;
do{
i = MAIN_Fosc / 13000;
while(--i);
//14T per loop
}while(--ms);
}
/********************* Timer0 中断函数************************/
void timer0_int (void) interrupt 1
{
LCD_scan();
B_2ms = 1;
}
/********************* INT0 中断函数 *************************/
void INT0_int (void) interrupt 0
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 242 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
EX0 = 0;
IE0 = 0;
}
/****************** LCD 段码扫描函数 ***************************/
void LCD_scan(void)
//5us @22.1184MHZ
{
u8 code T_COM[4]={0x08,0x04,0x02,0x01};
u8 j;
j = scan_index >> 1;
P2n_pure_input(0x0f);
if(scan_index & 1)
{
P1 = ~LCD_buff[j];
P2 = ~(LCD_buff[j|4] & 0xf0);
}
else
{
P1 = LCD_buff[j];
P2 = LCD_buff[j|4] & 0xf0;
}
P2n_push_pull(T_COM[j]);
if(++scan_index >= 8) scan_index = 0;
//全部 COM 输出高阻, COM 为中点电压
//反相扫描
//正相扫描
//某个 COM 设置为推挽输出
}
/****************** 对第 1~6 数字装载显示函数 ***************************/
void LCD_load(u8 n, u8 dat)
//n 为第几个数字,dat 为要显示的数字
{
u8 code t_display[]={
//标准字库
// 0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71,
//black 0x00,0x40
};
u8 code T_LCD_mask[4] = {~0xc0,~0x30,~0x0c,~0x03};
u8 code T_LCD_mask4[4] = {~0x40,~0x10,~0x04,~0x01};
u8 i,k;
u8 *p;
if((n == 0) || (n > 6)) return;
i = t_display[dat];
if(n >2*n);
p++;
深圳国芯人工智能有限公司
//D
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 243 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
k = 0;
if(i & 0x04) k |= 0x40;
if(i & 0x10) k |= 0x80;
*p = (*p & T_LCD_mask[n]) | (k>>2*n);
p++;
k = 0;
if(i & 0x02) k |= 0x40;
if(i & 0x40) k |= 0x80;
*p = (*p & T_LCD_mask[n]) | (k>>2*n);
p++;
k = 0;
if(i & 0x01) k |= 0x40;
if(i & 0x20) k |= 0x80;
*p = (*p & T_LCD_mask[n]) | (k>>2*n);
技术支持: 13922829991
研发顾问: 13922805190
//C
//E
//B
//G
//A
//F
}
/********************显示时间 **************************/
void LoadRTC(void)
{
LCD_load(1,hour/10);
LCD_load(2,hour%10);
LCD_load(3,minute/10);
LCD_load(4,minute%10);
LCD_load(5,second/10);
LCD_load(6,second%10);
}
汇编代码
;用 STC8 系列测试 I/O 直接驱动段码 LCD(6 个 8 字 LCD, 1/4 Dutys, 1/3 bias)。
;上电后显示一个时间(时分秒).
;************************************************************
P0M1
DATA
0x93
P0M0
DATA
0x94
P1M1
DATA
0x91
P1M0
DATA
0x92
P2M1
DATA
0x95
P2M0
DATA
0x96
P3M1
DATA
0xB1
P3M0
DATA
0xB2
P4M1
DATA
0xB3
P4M0
DATA
0xB4
P5M1
DATA
0xC9
P5M0
DATA
0xC
P6M1
DATA
0xCB
P6M0
DATA
0xCC
P7M1
DATA
0xE1
P7M0
DATA
0xE2
AUXR
DATA
0x8E
INT_CLKO
DATA
0x8F
IE2
DATA
0xAF
P4
DATA
0xC0
T2H
DATA
0xD6
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 244 -
STC8H 系列技术手册
T2L
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
技术支持: 13922829991
研发顾问: 13922805190
0xD7
;************************************************************
DIS_BLACK
EQU
010H
DIS_
EQU
011H
DIS_A
EQU
00AH
DIS_B
EQU
00BH
DIS_C
EQU
00CH
DIS_D
EQU
00DH
DIS_E
EQU
00EH
DIS_F
EQU
00FH
B_2ms
B_Second
cnt_500ms
second
minute
hour
scan_index
BIT
BIT
DATA
DATA
DATA
DATA
DATA
20H.0
20H.1
30H
31H
32H
33H
34H
;2ms 信号
;秒信号
LCD_buff
DATA
40H
;40H~47H
;************************************************************
ORG
0000H
LJMP
F_Main
ORG
LJMP
000BH
F_Timer0_Interrupt
;************************************************************
ORG
0100H
F_Main:
CLR
A
MOV
P3M1, A
;设置为准双向口
MOV
P3M0, A
MOV
P5M1, A
;设置为准双向口
MOV
P5M0, A
MOV
MOV
ANL
ORL
ORL
ANL
MOV
MOV
USING
P1M1, #0
P1M0, #0ffh
P2M1, #NOT 0f0h
P2M0, #0f0h
P2M1, #00fH
P2M0, #0f0H
SP, #0D0H
PSW, #0
0
; segment 设置为推挽输出
; segment 设置为推挽输出
;全部 COM 输出高阻, COM 为中点电压
;选择第 0 组 R0~R7
;************************************************************
MOV
R2, #8
MOV
R0, #LCD_buff
L_ClearLcdRam:
MOV
@R0, #0
INC
R0
DJNZ
R2, L_ClearLcdRam
LCALL
SETB
深圳国芯人工智能有限公司
F_Timer0_init
EA
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 245 -
STC8H 系列技术手册
;
;
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
ORL
ORL
LCD_buff, #020H
LCD_buff, #002H
;显示时分间隔:
;显示分秒间隔:
MOV
MOV
MOV
LCALL
hour, #12
minute, #00
second, #00
F_LoadRTC
;显示时间
研发顾问: 13922805190
;************************************************************
L_Main_Loop:
JNB
B_2ms, L_Main_Loop
;2ms 节拍到
CLR
B_2ms
INC
MOV
CJNE
cnt_500ms
A, cnt_500ms
A, #250, L_Main_Loop
MOV
cnt_500ms, #0;
XRL
XRL
LCD_buff, #020H
LCD_buff, #002H
CPL
JNB
B_Second
B_Second, L_Main_Loop
INC
MOV
CJNE
MOV
INC
MOV
CJNE
MOV
INC
MOV
CJNE
MOV
second
A, second
A, #60, L_Main_Load
second, #0
minute
A, minute
A, #60, L_Main_Load
minute, #0;
hour
A, hour
A, #24, L_Main_Load
hour, #0
LCALL
LJMP
F_LoadRTC
L_Main_Loop
;500ms 到
;闪烁时分间隔:
;闪烁分秒间隔:
; 1 分钟到
;24 小时到
L_Main_Load:
;显示时间
;************************************************************
F_Timer0_init:
CLR
ANL
SETB
ORL
ANL
ORL
MOV
MOV
SETB
RET
TR0
TMOD, #0f0H
ET0
TMOD, #0
INT_CLKO, #NOT 0x01
AUXR, #0x80
TH0, #HIGH (-22118)
TL0, #LOW (-22118)
TR0
; 停止计数
; 允许中断
; 工作模式, 0: 16 位自动重装
; 不输出时钟
; 1T mode
; 2ms
;
; 开始运行
;************************************************************
F_Timer0_Interrupt:
;Timer0 1ms 中断函数
PUSH
PSW
;PSW 入栈
PUSH
ACC
;ACC 入栈
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 246 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
PUSH
PUSH
PUSH
PUSH
AR0
AR7
DPH
DPL
LCALL
SETB
F_LCD_scan
B_2ms
POP
POP
POP
POP
POP
POP
RETI
DPL
DPH
AR7
AR0
ACC
PSW
技术支持: 13922829991
研发顾问: 13922805190
;ACC 出栈
;PSW 出栈
;******************** 显示时间 **************************
F_LoadRTC:
MOV
R6, #1
;LCD_load(1,hour/10);
MOV
A, hour
MOV
B, #10
DIV
AB
MOV
R7, A
LCALL
F_LCD_load
;R6 为第几个数字,为 1~6,R7 为要显示的数字
MOV
MOV
MOV
DIV
MOV
LCALL
R6, #2
A, hour
B, #10
AB
R7, B
F_LCD_load
;LCD_load(2,hour%10);
MOV
MOV
MOV
DIV
MOV
LCALL
R6, #3
A, minute
B, #10
AB
R7, A
F_LCD_load
;LCD_load(3,minute/10);
MOV
MOV
MOV
DIV
MOV
LCALL
R6, #4
A, minute
B, #10
AB
R7, B
F_LCD_load
;LCD_load(4,minute%10);
MOV
MOV
MOV
DIV
MOV
LCALL
R6, #5
A, second
B, #10
AB
R7, A
F_LCD_load
;LCD_load(5,second/10);
MOV
MOV
MOV
DIV
MOV
LCALL
R6, #6
A, second
B, #10
AB
R7, B
F_LCD_load
;LCD_load(6,second%10);
深圳国芯人工智能有限公司
;R6 为第几个数字,为 1~6,R7 为要显示的数字
;R6 为第几个数字,为 1~6,R7 为要显示的数字
;R6 为第几个数字,为 1~6,R7 为要显示的数字
;R6 为第几个数字,为 1~6,R7 为要显示的数字
;R6 为第几个数字,为 1~6,R7 为要显示的数字
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 247 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RET
;************************************************************
T_COM:
DB
008H, 004H, 002H, 001H
F_LCD_scan:
MOV
CLR
RRC
MOV
ADD
MOV
ORL
ANL
A, scan_index
C
A
R7, A
A, #LCD_buff
R0, A
P2M1, #00fH
P2M0, #0f0H
MOV
JNB
MOV
CPL
MOV
MOV
ADD
MOV
MOV
ANL
CPL
MOV
SJMP
A, scan_index
ACC.0, L_LCD_Scan2
A, @R0
A
P1, A
A, R0
A, #4
R0, A
A, @R0
A, #0f0H
A
P2, A
L_LCD_Scan3
MOV
MOV
MOV
ADD
MOV
MOV
ANL
MOV
A, @R0
P1, A
A, R0
A, #4
R0, A
A, @R0
A, #0f0H
P2, A
MOV
MOV
MOVC
ORL
CPL
ANL
DPTR, #T_COM
A, R7
A, @A+DPTR
P2M0, A
A
P2M1, A
;某个 COM 设置为推挽输出
INC
MOV
CJNE
MOV
scan_index
A, scan_index
A, #8, L_QuitLcdScan
scan_index, #0
;if(++scan_index == 8) scan_index = 0;
L_LCD_Scan2:
;j = scan_index >> 1;
;R7 = j
;R0 = LCD_buff[j]
;全部 COM 输出高阻, COM 为中点电压
;if(scan_index & 1) //反相扫描
;P1 = ~LCD_buff[j];
;P2 = ~(LCD_buff[j|4] & 0xf0);
;正相扫描
;P1 = LCD_buff[j];
;P2 = (LCD_buff[j|4] & 0xf0);
L_LCD_Scan3:
L_QuitLcdScan:
RET
;******************* 标准字库 **************************
T_Display:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 248 -
STC8H 系列技术手册
;
DB
;
DB
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071H
black 000H,040H
;****************** 对第 1~6 数字装载显示函数 算法简单 ***************************
F_LCD_load:
;R6 为第几个数字,为 1~6,R7 为要显示的数字
MOV
DPTR, #T_Display
;i = t_display[dat];
MOV
A, R7
MOVC
A, @A+DPTR
MOV
B, A
;要显示的数字
MOV
CJNE
MOV
MOV
MOV
MOV
MOV
A, R6
A, #1, L_NotLoadChar1
R0,
A, @R0
C, B.3
ACC.6, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.2
ACC.6, C
C, B.4
ACC.7, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.1
ACC.6, C
C, B.6
ACC.7, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
RET
R0
A, @R0
C, B.0
ACC.6, C
C, B.5
ACC.7, C
@R0, A
L_NotLoadChar1:
CJNE
MOV
MOV
MOV
MOV
MOV
INC
MOV
MOV
MOV
MOV
MOV
深圳国芯人工智能有限公司
A, #2, L_NotLoadChar2
R0,#LCD_buff
A, @R0
C, B.3
ACC.4, C
@R0, A
R0
A, @R0
C, B.2
ACC.4, C
C, B.4
ACC.5, C
#LCD_buff
;D
;C
;E
;B
;G
;A
;F
;D
;C
;E
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 249 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.1
ACC.4, C
C, B.6
ACC.5, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
RET
R0
A, @R0
C, B.0
ACC.4, C
C, B.5
ACC.5, C
@R0, A
L_NotLoadChar2:
CJNE
MOV
MOV
MOV
MOV
MOV
A, #3, L_NotLoadChar3
R0,#LCD_buff
A, @R0
C, B.3
ACC.2, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.2
ACC.2, C
C, B.4
ACC.3, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.1
ACC.2, C
C, B.6
ACC.3, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
RET
R0
A, @R0
C, B.0
ACC.2, C
C, B.5
ACC.3, C
@R0, A
L_NotLoadChar3:
CJNE
MOV
MOV
MOV
MOV
MOV
深圳国芯人工智能有限公司
A, #4, L_NotLoadChar4
R0,#LCD_buff
A, @R0
C, B.3
ACC.0, C
@R0, A
技术支持: 13922829991
研发顾问: 13922805190
;B
;G
;A
;F
;D
;C
;E
;B
;G
;A
;F
;D
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 250 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.2
ACC.0, C
C, B.4
ACC.1, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.1
ACC.0, C
C, B.6
ACC.1, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
RET
R0
A, @R0
C, B.0
ACC.0, C
C, B.5
ACC.1, C
@R0, A
L_NotLoadChar4:
CJNE
MOV
MOV
MOV
MOV
MOV
A, #5, L_NotLoadChar5
R0,#LCD_buff+4
A, @R0
C, B.3
ACC.6, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.2
ACC.6, C
C, B.4
ACC.7, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.1
ACC.6, C
C, B.6
ACC.7, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
RET
R0
A, @R0
C, B.0
ACC.6, C
C, B.5
ACC.7, C
@R0, A
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
;C
;E
;B
;G
;A
;F
;D
;C
;E
;B
;G
;A
;F
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 251 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
L_NotLoadChar5:
CJNE
MOV
MOV
MOV
MOV
MOV
A, #6, L_NotLoadChar6
R0,#LCD_buff+4
A, @R0
C, B.3
ACC.4, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.2
ACC.4, C
C, B.4
ACC.5, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
R0
A, @R0
C, B.1
ACC.4, C
C, B.6
ACC.5, C
@R0, A
INC
MOV
MOV
MOV
MOV
MOV
MOV
RET
L_NotLoadChar6:
RET
R0
A, @R0
C, B.0
ACC.4, C
C, B.5
ACC.5, C
@R0, A
技术支持: 13922829991
研发顾问: 13922805190
;D
;C
;E
;B
;G
;A
;F
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 252 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
10 I/O口中断(后续新的单片机系列均会逐步增
加此功能)
STC8H 系列后续新的系列均支持所有的 I/O 中断,且支持 4 种中断模式:下降沿中断、上升沿中
断、低电平中断、高电平中断。每组 I/O 口都有独立的中断入口地址,且每个 I/O 可独立设置中断模式。
10.1 I/O口中断相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
P0INTE
P0 口中断使能寄存器
FD00H P07INTE
P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE
P00INTE 0000,0000
P1INTE
P1 口中断使能寄存器
FD01H P17INTE
P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE
P10INTE 0000,0000
P2INTE
P2 口中断使能寄存器
FD02H P27INTE
P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE
P20INTE 0000,0000
P3INTE
P3 口中断使能寄存器
FD03H P37INTE
P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE
P30INTE 0000,0000
P4INTE
P4 口中断使能寄存器
FD04H P47INTE
P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE
P40INTE 0000,0000
P5INTE
P5 口中断使能寄存器
FD05H
P6INTE
P6 口中断使能寄存器
P7INTE
P54INTE P53INTE P52INTE P51INTE
P50INTE 0000,0000
FD06H P67INTE
P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE
P60INTE 0000,0000
P7 口中断使能寄存器
FD07H P77INTE
P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE
P70INTE 0000,0000
P0INTF
P0 口中断标志寄存器
FD10H
P07INTF
P06INTF
P05INTF P04INTF P03INTF P02INTF
P01INTF
P00INTF 0000,0000
P1INTF
P1 口中断标志寄存器
FD11H
P17INTF
P16INTF
P15INTF P14INTF P13INTF P12INTF
P11INTF
P10INTF 0000,0000
P2INTF
P2 口中断标志寄存器
FD12H
P27INTF
P26INTF
P25INTF P24INTF P23INTF P22INTF
P21INTF
P20INTF 0000,0000
P3INTF
P3 口中断标志寄存器
FD13H
P37INTF
P36INTF
P35INTF P34INTF P33INTF P32INTF
P31INTF
P30INTF 0000,0000
P4INTF
P4 口中断标志寄存器
FD14H
P47INTF
P46INTF
P45INTF P44INTF P43INTF P42INTF
P41INTF
P40INTF 0000,0000
P5INTF
P5 口中断标志寄存器
FD15H
-
-
P54INTF P53INTF P52INTF
P51INTF
P50INTF 0000,0000
P6INTF
P6 口中断标志寄存器
FD16H
P67INTF
P66INTF
P65INTF P64INTF P63INTF P62INTF
P61INTF
P60INTF 0000,0000
P7INTF
P7 口中断标志寄存器
FD17H
P77INTF
P76INTF
P75INTF P74INTF P73INTF P72INTF
P71INTF
P70INTF 0000,0000
P0IM0
P0 口中断模式寄存器 0
FD20H
P07IM0
P06IM0
P05IM0
P04IM0
P03IM0
P02IM0
P01IM0
P00IM0 0000,0000
P1IM0
P1 口中断模式寄存器 0
FD21H
P17IM0
P16IM0
P15IM0
P14IM0
P13IM0
P12IM0
P11IM0
P10IM0 0000,0000
P2IM0
P2 口中断模式寄存器 0
FD22H
P27IM0
P26IM0
P25IM0
P24IM0
P23IM0
P22IM0
P21IM0
P20IM0 0000,0000
P3IM0
P3 口中断模式寄存器 0
FD23H
P37IM0
P36IM0
P35IM0
P34IM0
P33IM0
P32IM0
P31IM0
P30IM0 0000,0000
P4IM0
P4 口中断模式寄存器 0
FD24H
P47IM0
P46IM0
P45IM0
P44IM0
P43IM0
P42IM0
P41IM0
P40IM0 0000,0000
P5IM0
P5 口中断模式寄存器 0
FD25H
-
-
-
P54IM0
P53IM0
P52IM0
P51IM0
P50IM0 0000,0000
P6IM0
P6 口中断模式寄存器 0
FD26H
P67IM0
P66IM0
P65IM0
P64IM0
P63IM0
P62IM0
P61IM0
P60IM0 0000,0000
P7IM0
P7 口中断模式寄存器 0
FD27H
P77IM0
P76IM0
P75IM0
P74IM0
P73IM0
P72IM0
P71IM0
P70IM0 0000,0000
P0IM1
P0 口中断模式寄存器 1
FD30H
P07IM1
P06IM1
P05IM1
P04IM1
P03IM1
P02IM1
P01IM1
P00IM1 0000,0000
P1IM1
P1 口中断模式寄存器 1
FD31H
P17IM1
P16IM1
P15IM1
P14IM1
P13IM1
P12IM1
P11IM1
P10IM1 0000,0000
P2IM1
P2 口中断模式寄存器 1
FD32H
P27IM1
P26IM1
P25IM1
P24IM1
P23IM1
P22IM1
P21IM1
P20IM1 0000,0000
P3IM1
P3 口中断模式寄存器 1
FD33H
P37IM1
P36IM1
P35IM1
P34IM1
P33IM1
P32IM1
P31IM1
P30IM1 0000,0000
P4IM1
P4 口中断模式寄存器 1
FD34H
P47IM1
P46IM1
P45IM1
P44IM1
P43IM1
P42IM1
P41IM1
P40IM1 0000,0000
P5IM1
P5 口中断模式寄存器 1
FD35H
-
-
-
P54IM1
P53IM1
P52IM1
P51IM1
P50IM1 0000,0000
深圳国芯人工智能有限公司
-
-
-
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 253 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P6IM1
P6 口中断模式寄存器 1
FD36H
P67IM1
P66IM1
P65IM1
P64IM1
P63IM1
P62IM1
P61IM1
P60IM1 0000,0000
P7IM1
P7 口中断模式寄存器 1
FD37H
P77IM1
P76IM1
P75IM1
P74IM1
P73IM1
P72IM1
P71IM1
P70IM1 0000,0000
10.1.1 端口中断使能寄存器(PxINTE)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0INTE
FD00H
P07INTE
P06INTE
P05INTE
P04INTE
P03INTE
P02INTE
P01INTE
P00INTE
P1INTE
FD01H
P17INTE
P16INTE
P15INTE
P14INTE
P13INTE
P12INTE
P11INTE
P10INTE
P2INTE
FD02H
P27INTE
P26INTE
P25INTE
P24INTE
P23INTE
P22INTE
P21INTE
P20INTE
P3INTE
FD03H
P37INTE
P36INTE
P35INTE
P34INTE
P33INTE
P32INTE
P31INTE
P30INTE
P4INTE
FD04H
P47INTE
P46INTE
P45INTE
P44INTE
P43INTE
P42INTE
P41INTE
P40INTE
P5INTE
FD05H
-
-
-
P54INTE
P53INTE
P52INTE
P51INTE
P50INTE
P6INTE
FD06H
P67INTE
P66INTE
P65INTE
P64INTE
P63INTE
P62INTE
P61INTE
P60INTE
P7INTE
FD07H
P77INTE
P76INTE
P75INTE
P74INTE
P73INTE
P72INTE
P71INTE
P70INTE
PnINTE.x:端口中断使能控制位(n=0~7,x=0~7)
0:关闭 Pn.x 口中断功能
1:使能 Pn.x 口中断功能
10.1.2 端口中断标志寄存器(PxINTF)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0INTF
FD10H
P07INTF
P06INTF
P05INTF
P04INTF
P03INTF
P02INTF
P01INTF
P00INTF
P1INTF
FD11H
P17INTF
P16INTF
P15INTF
P14INTF
P13INTF
P12INTF
P11INTF
P10INTF
P2INTF
FD12H
P27INTF
P26INTF
P25INTF
P24INTF
P23INTF
P22INTF
P21INTF
P20INTF
P3INTF
FD13H
P37INTF
P36INTF
P35INTF
P34INTF
P33INTF
P32INTF
P31INTF
P30INTF
P4INTF
FD14H
P47INTF
P46INTF
P45INTF
P44INTF
P43INTF
P42INTF
P41INTF
P40INTF
P5INTF
FD15H
-
-
-
P54INTF
P53INTF
P52INTF
P51INTF
P50INTF
P6INTF
FD16H
P67INTF
P66INTF
P65INTF
P64INTF
P63INTF
P62INTF
P61INTF
P60INTF
P7INTF
FD17H
P77INTF
P76INTF
P75INTF
P74INTF
P73INTF
P72INTF
P71INTF
P70INTF
PnINTF.x:端口中断请求标志位(n=0~7,x=0~7)
0:Pn.x 口没有中断请求
1:Pn.x 口有中断请求,若使能中断,则会进入中断服务程序。标志位需软件清 0。
10.1.3 端口中断模式配置寄存器(PxIM0,PxIM1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0IM0
FD20H
P07IM0
P06IM0
P05IM0
P04IM0
P03IM0
P02IM0
P01IM0
P00IM0
P0IM1
FD30H
P07IM1
P06IM1
P05IM1
P04IM1
P03IM1
P02IM1
P01IM1
P00IM1
P1IM0
FD21H
P17IM0
P16IM0
P15IM0
P14IM0
P13IM0
P12IM0
P11IM0
P10IM0
P1IM1
FD31H
P17IM1
P16IM1
P15IM1
P14IM1
P13IM1
P12IM1
P11IM1
P10IM1
P2IM0
FD22H
P27IM0
P26IM0
P25IM0
P24IM0
P23IM0
P22IM0
P21IM0
P20IM0
P2IM1
FD32H
P27IM1
P26IM1
P25IM1
P24IM1
P23IM1
P22IM1
P21IM1
P20IM1
P3IM0
FD23H
P37IM0
P36IM0
P35IM0
P34IM0
P33IM0
P32IM0
P31IM0
P30IM0
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 254 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P3IM1
FD33H
P37IM1
P36IM1
P35IM1
P34IM1
P33IM1
P32IM1
P31IM1
P30IM1
P4IM0
FD24H
P47IM0
P46IM0
P45IM0
P44IM0
P43IM0
P42IM0
P41IM0
P40IM0
P4IM1
FD34H
P47IM1
P46IM1
P45IM1
P44IM1
P43IM1
P42IM1
P41IM1
P40IM1
P5IM0
FD25H
-
-
-
P54IM0
P53IM0
P52IM0
P51IM0
P50IM0
P5IM1
FD35H
-
-
-
P54IM1
P53IM1
P52IM1
P51IM1
P50IM1
P6IM0
FD26H
P67IM0
P66IM0
P65IM0
P64IM0
P63IM0
P62IM0
P61IM0
P60IM0
P6IM1
FD36H
P67IM1
P66IM1
P65IM1
P64IM1
P63IM1
P62IM1
P61IM1
P60IM1
P7IM0
FD27H
P77IM0
P76IM0
P75IM0
P74IM0
P73IM0
P72IM0
P71IM0
P70IM0
P7IM1
FD37H
P77IM1
P76IM1
P75IM1
P74IM1
P73IM1
P72IM1
P71IM1
P70IM1
配置端口的模式
PnIM1.x
PnIM0.x
Pn.x 口中断模式
0
0
下降沿中断
0
1
上升沿中断
1
0
低电平中断
1
1
高电平中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 255 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
10.2 范例程序
P0 口下降沿中断
10.2.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0x96;
0x95;
0xb2;
0xb1;
0xb4;
0xb3;
0xca;
0xc9;
0xcc;
0xcb;
0xe2;
0xe1;
sfr
P_SW2
=
0xba;
#define
#define
#define
#define
P0INTE
P0INTF
P0IM0
P0IM1
(*(unsigned char volatile xdata *)0xfd00)
(*(unsigned char volatile xdata *)0xfd10)
(*(unsigned char volatile xdata *)0xfd20)
(*(unsigned char volatile xdata *)0xfd30)
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 |= 0x80;
P0IM0 = 0x00;
P0IM1 = 0x00;
P0INTE = 0xff;
P_SW2 &= ~0x80;
深圳国芯人工智能有限公司
//下降沿中断
//使能 P0 口中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 256 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
EA = 1;
while (1);
}
//由于中断向量大于 31,在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{
unsigned char psw2_st;
unsigned char intf;
psw2_st = P_SW2;
P_SW2 |= 0x80;
intf = P0INTF;
if (intf)
{
P0INTF = 0x00;
if (intf & 0x01)
{
//P0.0 口中断
}
if (intf & 0x02)
{
//P0.1 口中断
}
if (intf & 0x04)
{
//P0.2 口中断
}
if (intf & 0x08)
{
//P0.3 口中断
}
if (intf & 0x10)
{
//P0.4 口中断
}
if (intf & 0x20)
{
//P0.5 口中断
}
if (intf & 0x40)
{
//P0.6 口中断
}
if (intf & 0x80)
{
//P0.7 口中断
}
}
P_SW2 = psw2_st;
}
// ISR.ASM
//将下面的代码保存为 ISP.ASM,然后将文件加入到项目中即可
CSEG
JMP
深圳国芯人工智能有限公司
AT 012BH
P0INT_ISR
;P0 口中断入口地址
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 257 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P0INT_ISR:
JMP
END
006BH
;借用 13 号中断的入口地址
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
094H
093H
092H
091H
096H
095H
0B2H
0B1H
0B4H
0B3H
0CAH
0C9H
0CCH
0CBH
0E2H
0E1H
P_SW2
DATA
0BAH
P0INTE
P0INTF
P0IM0
P0IM1
XDATA
XDATA
XDATA
XDATA
0FD00H
0FD10H
0FD20H
0FD30H
ORG
LJMP
0000H
MAIN
ORG
012BH
PUSH
PUSH
PUSH
PUSH
PUSH
ACC
B
DPL
DPH
P_SW2
MOV
MOVX
MOV
CLR
MOVX
MOV
DPTR,#P0INTF
A,@DPTR
B,A
A
@DPTR,A
A,B
JNB
NOP
ACC.0,CHECKP01
JNB
NOP
ACC.1,CHECKP02
JNB
ACC.2,CHECKP03
;P0 口中断入口地址
P0INT_ISR:
CHECKP00:
;P0.0 口中断
CHECKP01:
;P0.1 口中断
CHECKP02:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 258 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
;P0.2 口中断
NOP
CHECKP03
JNB
NOP
ACC.3,CHECKP04
JNB
NOP
ACC.4,CHECKP05
JNB
NOP
ACC.5,CHECKP06
JNB
NOP
ACC.6,CHECKP07
JNB
NOP
ACC.7,P0ISREXIT
POP
POP
POP
POP
POP
RETI
P_SW2
DPH
DPL
B
ACC
ORG
0200H
MOV
SP, #5FH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0,#00H
P0M1,#00H
P1M0,#00H
P1M1,#00H
P2M0,#00H
P2M1,#00H
P3M0,#00H
P3M1,#00H
ORL
CLR
MOV
MOVX
MOV
MOVX
MOV
MOV
MOVX
ANL
P_SW2,#80H
A
DPTR,# P0IM0
@DPTR,A
DPTR,# P0IM1
@DPTR,A
DPTR,# P0INTE
A,#0FFH
@DPTR,A
P_SW2,#7FH
SETB
EA
JMP
$
;P0.3 口中断
CHECKP04:
;P0.4 口中断
CHECKP05:
;P0.5 口中断
CHECKP06:
;P0.6 口中断
CHECKP07:
;P0.7 口中断
P0ISREXIT:
MAIN:
;下降沿中断
;使能 P0 口中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 259 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P1 口上升沿中断
10.2.2
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0x96;
0x95;
0xb2;
0xb1;
0xb4;
0xb3;
0xca;
0xc9;
0xcc;
0xcb;
0xe2;
0xe1;
sfr
P_SW2
=
0xba;
#define
#define
#define
#define
P1INTE
P1INTF
P1IM0
P1IM1
(*(unsigned char volatile xdata *)0xfd01)
(*(unsigned char volatile xdata *)0xfd11)
(*(unsigned char volatile xdata *)0xfd21)
(*(unsigned char volatile xdata *)0xfd31)
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 |= 0x80;
P1IM0 = 0xff;
P1IM1 = 0x00;
P1INTE = 0xff;
P_SW2 &= ~0x80;
//上升沿中断
//使能 P1 口中断
EA = 1;
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 260 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//由于中断向量大于 31,在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{
unsigned char psw2_st;
unsigned char intf;
psw2_st = P_SW2;
P_SW2 |= 0x80;
intf = P1INTF;
if (intf)
{
P1INTF = 0x00;
if (intf & 0x01)
{
//P1.0 口中断
}
if (intf & 0x02)
{
//P1.1 口中断
}
if (intf & 0x04)
{
//P1.2 口中断
}
if (intf & 0x08)
{
//P1.3 口中断
}
if (intf & 0x10)
{
//P1.4 口中断
}
if (intf & 0x20)
{
//P1.5 口中断
}
if (intf & 0x40)
{
//P1.6 口中断
}
if (intf & 0x80)
{
//P1.7 口中断
}
}
P_SW2 = psw2_st;
}
// ISR.ASM
//将下面的代码保存为 ISP.ASM,然后将文件加入到项目中即可
CSEG
JMP
AT 0133H
P1INT_ISR
;P1 口中断入口地址
JMP
END
006BH
;借用 13 号中断的入口地址
P1INT_ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 261 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
094H
093H
092H
091H
096H
095H
0B2H
0B1H
0B4H
0B3H
0CAH
0C9H
0CCH
0CBH
0E2H
0E1H
P_SW2
DATA
0BAH
P1INTE
P1INTF
P1IM0
P1IM1
XDATA
XDATA
XDATA
XDATA
0FD01H
0FD11H
0FD21H
0FD31H
ORG
LJMP
0000H
MAIN
ORG
0133H
PUSH
PUSH
PUSH
PUSH
PUSH
ACC
B
DPL
DPH
P_SW2
MOV
MOVX
MOV
CLR
MOVX
MOV
DPTR,#P1INTF
A,@DPTR
B,A
A
@DPTR,A
A,B
JNB
NOP
ACC.0,CHECKP11
JNB
NOP
ACC.1,CHECKP12
JNB
NOP
ACC.2,CHECKP13
JNB
NOP
ACC.3,CHECKP14
;P1 口中断入口地址
P1INT_ISR:
CHECKP10:
;P1.0 口中断
CHECKP11:
;P1.1 口中断
CHECKP12:
;P1.2 口中断
CHECKP13
深圳国芯人工智能有限公司
;P1.3 口中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 262 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
CHECKP14:
JNB
NOP
ACC.4,CHECKP15
JNB
NOP
ACC.5,CHECKP16
JNB
NOP
ACC.6,CHECKP17
JNB
NOP
ACC.7,P1ISREXIT
POP
POP
POP
POP
POP
RETI
P_SW2
DPH
DPL
B
ACC
ORG
0200H
MOV
SP, #5FH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0,#00H
P0M1,#00H
P1M0,#00H
P1M1,#00H
P2M0,#00H
P2M1,#00H
P3M0,#00H
P3M1,#00H
ORL
CLR
MOV
MOVX
MOV
MOVX
MOV
MOV
MOVX
ANL
P_SW2,#80H
A
DPTR,# P1IM0
@DPTR,A
DPTR,# P1IM1
@DPTR,A
DPTR,# P1INTE
A,#0FFH
@DPTR,A
P_SW2,#7FH
SETB
EA
JMP
$
;P1.4 口中断
CHECKP15:
;P1.5 口中断
CHECKP16:
;P1.6 口中断
CHECKP17:
;P1.7 口中断
P1ISREXIT:
MAIN:
;下降沿中断
;使能 P1 口中断
END
10.2.3
P2 口低电平中断
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 263 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0x96;
0x95;
0xb2;
0xb1;
0xb4;
0xb3;
0xca;
0xc9;
0xcc;
0xcb;
0xe2;
0xe1;
sfr
P_SW2
=
0xba;
#define
#define
#define
#define
P2INTE
P2INTF
P2IM0
P2IM1
(*(unsigned char volatile xdata *)0xfd02)
(*(unsigned char volatile xdata *)0xfd12)
(*(unsigned char volatile xdata *)0xfd22)
(*(unsigned char volatile xdata *)0xfd32)
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 |= 0x80;
P2IM0 = 0x00;
P2IM1 = 0xff;
P2INTE = 0xff;
P_SW2 &= ~0x80;
//低电平中断
//使能 P2 口中断
EA = 1;
while (1);
}
//由于中断向量大于 31,在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{
unsigned char psw2_st;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 264 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
unsigned char intf;
psw2_st = P_SW2;
P_SW2 |= 0x80;
intf = P2INTF;
if (intf)
{
P2INTF = 0x00;
if (intf & 0x01)
{
//P2.0 口中断
}
if (intf & 0x02)
{
//P2.1 口中断
}
if (intf & 0x04)
{
//P2.2 口中断
}
if (intf & 0x08)
{
//P0.3 口中断
}
if (intf & 0x10)
{
//P2.4 口中断
}
if (intf & 0x20)
{
//P2.5 口中断
}
if (intf & 0x40)
{
//P2.6 口中断
}
if (intf & 0x80)
{
//P2.7 口中断
}
}
P_SW2 = psw2_st;
}
// ISR.ASM
//将下面的代码保存为 ISP.ASM,然后将文件加入到项目中即可
CSEG
JMP
AT 013BH
P2INT_ISR
;P2 口中断入口地址
JMP
END
006BH
;借用 13 号中断的入口地址
P2INT_ISR:
汇编代码
;测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 265 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
094H
093H
092H
091H
096H
095H
0B2H
0B1H
0B4H
0B3H
0CAH
0C9H
0CCH
0CBH
0E2H
0E1H
P_SW2
DATA
0BAH
P2INTE
P2INTF
P2IM0
P2IM1
XDATA
XDATA
XDATA
XDATA
0FD02H
0FD12H
0FD22H
0FD32H
ORG
LJMP
0000H
MAIN
ORG
013BH
PUSH
PUSH
PUSH
PUSH
PUSH
ACC
B
DPL
DPH
P_SW2
MOV
MOVX
MOV
CLR
MOVX
MOV
DPTR,#P2INTF
A,@DPTR
B,A
A
@DPTR,A
A,B
JNB
NOP
ACC.0,CHECKP21
JNB
NOP
ACC.1,CHECKP22
JNB
NOP
ACC.2,CHECKP23
JNB
NOP
ACC.3,CHECKP24
JNB
NOP
ACC.4,CHECKP25
JNB
NOP
ACC.5,CHECKP26
技术支持: 13922829991
研发顾问: 13922805190
;P2 口中断入口地址
P2INT_ISR:
CHECKP20:
;P2.0 口中断
CHECKP21:
;P2.1 口中断
CHECKP22:
;P2.2 口中断
CHECKP23
;P2.3 口中断
CHECKP24:
;P2.4 口中断
CHECKP25:
深圳国芯人工智能有限公司
;P2.5 口中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 266 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
CHECKP26:
JNB
NOP
ACC.6,CHECKP27
JNB
NOP
ACC.7,P2ISREXIT
POP
POP
POP
POP
POP
RETI
P_SW2
DPH
DPL
B
ACC
ORG
0200H
MOV
SP, #5FH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0,#00H
P0M1,#00H
P1M0,#00H
P1M1,#00H
P2M0,#00H
P2M1,#00H
P3M0,#00H
P3M1,#00H
ORL
CLR
MOV
MOVX
MOV
MOVX
MOV
MOV
MOVX
ANL
P_SW2,#80H
A
DPTR,# P2IM0
@DPTR,A
DPTR,# P2IM1
@DPTR,A
DPTR,# P2INTE
A,#0FFH
@DPTR,A
P_SW2,#7FH
SETB
EA
JMP
$
;P2.6 口中断
CHECKP27:
;P2.7 口中断
P2ISREXIT:
MAIN:
;低电平中断
;使能 P2 口中断
END
P3 口高电平中断
10.2.4
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
P0M0
P0M1
深圳国芯人工智能有限公司
=
=
0x94;
0x93;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 267 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x92;
0x91;
0x96;
0x95;
0xb2;
0xb1;
0xb4;
0xb3;
0xca;
0xc9;
0xcc;
0xcb;
0xe2;
0xe1;
sfr
P_SW2
=
0xba;
#define
#define
#define
#define
P3INTE
P3INTF
P3IM0
P3IM1
(*(unsigned char volatile xdata *)0xfd03)
(*(unsigned char volatile xdata *)0xfd13)
(*(unsigned char volatile xdata *)0xfd23)
(*(unsigned char volatile xdata *)0xfd33)
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 |= 0x80;
P3IM0 = 0xff;
P3IM1 = 0xff;
P3INTE = 0xff;
P_SW2 &= ~0x80;
//高电平中断
//使能 P3 口中断
EA = 1;
while (1);
}
//由于中断向量大于 31,在 KEIL 中无法直接编译
//必须借用第 13 号中断入口地址
void common_isr() interrupt 13
{
unsigned char psw2_st;
unsigned char intf;
psw2_st = P_SW2;
P_SW2 |= 0x80;
intf = P3INTF;
if (intf)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 268 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
P3INTF = 0x00;
if (intf & 0x01)
{
//P3.0 口中断
}
if (intf & 0x02)
{
//P3.1 口中断
}
if (intf & 0x04)
{
//P3.2 口中断
}
if (intf & 0x08)
{
//P3.3 口中断
}
if (intf & 0x10)
{
//P3.4 口中断
}
if (intf & 0x20)
{
//P3.5 口中断
}
if (intf & 0x40)
{
//P3.6 口中断
}
if (intf & 0x80)
{
//P3.7 口中断
}
}
P_SW2 = psw2_st;
}
// ISR.ASM
//将下面的代码保存为 ISP.ASM,然后将文件加入到项目中即可
CSEG
JMP
AT 0143H
P3INT_ISR
;P3 口中断入口地址
JMP
END
006BH
;借用 13 号中断的入口地址
P3INT_ISR:
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
094H
093H
092H
091H
096H
095H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 269 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0B2H
0B1H
0B4H
0B3H
0CAH
0C9H
0CCH
0CBH
0E2H
0E1H
P_SW2
DATA
0BAH
P3INTE
P3INTF
P3IM0
P3IM1
XDATA
XDATA
XDATA
XDATA
0FD03H
0FD13H
0FD23H
0FD33H
ORG
LJMP
0000H
MAIN
ORG
0143H
PUSH
PUSH
PUSH
PUSH
PUSH
ACC
B
DPL
DPH
P_SW2
MOV
MOVX
MOV
CLR
MOVX
MOV
DPTR,#P3INTF
A,@DPTR
B,A
A
@DPTR,A
A,B
JNB
NOP
ACC.0,CHECKP31
JNB
NOP
ACC.1,CHECKP32
JNB
NOP
ACC.2,CHECKP33
JNB
NOP
ACC.3,CHECKP34
JNB
NOP
ACC.4,CHECKP35
JNB
NOP
ACC.5,CHECKP36
JNB
NOP
ACC.6,CHECKP37
JNB
NOP
ACC.7,P3ISREXIT
技术支持: 13922829991
研发顾问: 13922805190
;P3 口中断入口地址
P3INT_ISR:
CHECKP30:
;P3.0 口中断
CHECKP31:
;P3.1 口中断
CHECKP32:
;P3.2 口中断
CHECKP33
;P3.3 口中断
CHECKP34:
;P3.4 口中断
CHECKP35:
;P3.5 口中断
CHECKP36:
;P3.6 口中断
CHECKP37:
深圳国芯人工智能有限公司
;P3.7 口中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 270 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P3ISREXIT:
POP
POP
POP
POP
POP
RETI
P_SW2
DPH
DPL
B
ACC
ORG
0200H
MOV
SP, #5FH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0,#00H
P0M1,#00H
P1M0,#00H
P1M1,#00H
P2M0,#00H
P2M1,#00H
P3M0,#00H
P3M1,#00H
ORL
CLR
MOV
MOVX
MOV
MOVX
MOV
MOV
MOVX
ANL
P_SW2,#80H
A
DPTR,# P3IM0
@DPTR,A
DPTR,# P3IM1
@DPTR,A
DPTR,# P3INTE
A,#0FFH
@DPTR,A
P_SW2,#7FH
SETB
EA
JMP
$
MAIN:
;高电平中断
;使能 P3 口中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 271 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11 指令系统
助记符
指令说明
字节
时钟
ADD
A,Rn
寄存器内容加到累加器
1
1
ADD
A,direct
直接地址单元的数据加到累加器
2
1
ADD
A,@Ri
间接地址单元的数据加到累加器
1
1
ADD
A,#data
立即数加到累加器
2
1
ADDC
A,Rn
寄存器带进位加到累加器
1
1
ADDC
A,direct
直接地址单元的数据带进位加到累加器
2
1
ADDC
A,@Ri
间接地址单元的数据带进位加到累加器
1
1
ADDC
A,#data
立即数带进位加到累加器
2
1
SUBB
A,Rn
累加器带借位减寄存器内容
1
1
SUBB
A,direct
累加器带借位减直接地址单元的内容
2
1
SUBB
A,@Ri
累加器带借位减间接地址单元的内容
1
1
SUBB
A,#data
累加器带借位减立即数
2
1
INC
A
累加器加1
1
1
INC
Rn
寄存器加1
1
1
INC
direct
直接地址单元加1
2
1
INC
@Ri
间接地址单元加1
1
1
DEC
A
累加器减1
1
1
DEC
Rn
寄存器减1
1
1
DEC
direct
直接地址单元减1
2
1
DEC
@Ri
间接地址单元减1
1
1
INC
DPTR
地址寄存器DPTR加1
1
1
MUL
AB
A乘以B,B存放高字节,A存放低字节
1
2
DIV
AB
A除以B,B存放余数,A存放商
1
6
DA
A
累加器十进制调整
1
3
ANL
A,Rn
累加器与寄存器相与
1
1
ANL
A,direct
累加器与直接地址单元相与
2
1
ANL
A,@Ri
累加器与间接地址单元相与
1
1
ANL
A,#data
累加器与立即数相与
2
1
ANL
direct,A
直接地址单元与累加器相与
2
1
ANL
direct,#data
直接地址单元与立即数相与
3
1
ORL
A,Rn
累加器与寄存器相或
1
1
ORL
A,direct
累加器与直接地址单元相或
2
1
ORL
A,@Ri
累加器与间接地址单元相或
1
1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 272 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ORL
A,#data
累加器与立即数相或
2
1
ORL
direct,A
直接地址单元与累加器相或
2
1
ORL
direct,#data
直接地址单元与立即数相或
3
1
XRL
A,Rn
累加器与寄存器相异或
1
1
XRL
A,direct
累加器与直接地址单元相异或
2
1
XRL
A,@Ri
累加器与间接地址单元相异或
1
1
XRL
A,#data
累加器与立即数相异或
2
1
XRL
direct,A
直接地址单元与累加器相异或
2
1
XRL
direct,#data
直接地址单元与立即数相异或
3
1
CLR
A
累加器清0
1
1
CPL
A
累加器取反
1
1
RL
A
累加器循环左移
1
1
RLC
A
累加器带进位循环左移
1
1
RR
A
累加器循环右移
1
1
RRC
A
累加器带进位循环右移
1
1
SWAP
A
累加器高低半字节交换
1
1
CLR
C
清零进位位
1
1
CLR
bit
清0直接地址位
2
1
SETB
C
置1进位位
1
1
SETB
bit
置1直接地址位
2
1
CPL
C
进位位求反
1
1
CPL
bit
直接地址位求反
2
1
ANL
C,bit
进位位和直接地址位相与
2
1
ANL
C,/bit
进位位和直接地址位的反码相与
2
1
ORL
C,bit
进位位和直接地址位相或
2
1
ORL
C,/bit
进位位和直接地址位的反码相或
2
1
MOV
C,bit
直接地址位送入进位位
2
1
MOV
bit,C
进位位送入直接地址位
2
1
MOV
A,Rn
寄存器内容送入累加器
1
1
MOV
A,direct
直接地址单元中的数据送入累加器
2
1
MOV
A,@Ri
间接地址中的数据送入累加器
1
1
MOV
A,#data
立即数送入累加器
2
1
MOV
Rn,A
累加器内容送入寄存器
1
1
MOV
Rn,direct
直接地址单元中的数据送入寄存器
2
1
MOV
Rn,#data
立即数送入寄存器
2
1
MOV
direct,A
累加器内容送入直接地址单元
2
1
MOV
direct,Rn
寄存器内容送入直接地址单元
2
1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 273 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
MOV
direct,direct
直接地址单元中的数据送入另一个直接地址单元
3
1
MOV
direct,@Ri
间接地址中的数据送入直接地址单元
2
1
MOV
direct,#data
立即数送入直接地址单元
3
1
MOV
@Ri,A
累加器内容送间接地址单元
1
1
MOV
@Ri,direct
直接地址单元数据送入间接地址单元
2
1
MOV
@Ri,#data
立即数送入间接地址单元
2
1
MOV
DPTR,#data16
16位立即数送入数据指针
3
1
MOVC
A,@A+DPTR
以DPTR为基地址变址寻址单元中的数据送入累加器
1
4
MOVC
A,@A+PC
以PC为基地址变址寻址单元中的数据送入累加器
1
3
MOVX A,@Ri
扩展地址(8位地址)的内容送入累加器A中
1
3[1]
MOVX A,@DPTR
扩展RAM(16位地址)的内容送入累加器A中
1
2[1]
MOVX @Ri,A
将累加器A的内容送入扩展RAM(8位地址)中
1
3[1]
MOVX @DPTR,A
将累加器A的内容送入扩展RAM(16位地址)中
1
2[1]
PUSH
direct
直接地址单元中的数据压入堆栈
2
1
POP
direct
栈底数据弹出送入直接地址单元
2
1
XCH
A,Rn
寄存器与累加器交换
1
1
XCH
A,direct
直接地址单元与累加器交换
2
1
XCH
A,@Ri
间接地址与累加器交换
1
1
XCHD
A,@Ri
间接地址的低半字节与累加器交换
1
1
ACALL addr11
短调用子程序
2
3
LCALL addr16
长调用子程序
3
3
RET
子程序返回
1
3
RETI
中断返回
1
3
AJMP
addr11
短跳转
2
3
LJMP
addr16
长跳转
3
3
SJMP
rel
相对跳转
2
3
JMP
@A+DPTR
相对于DPTR的间接跳转
1
4
JZ
rel
累加器为零跳转
2
1/3[2]
JNZ
rel
累加器非零跳转
2
1/3[2]
JC
rel
进位位为1跳转
2
1/3[2]
JNC
rel
进位位为0跳转
2
1/3[2]
JB
bit,rel
直接地址位为1则跳转
3
1/3[2]
JNB
bit,rel
直接地址位为0则跳转
3
1/3[2]
JBC
bit,rel
直接地址位为1则跳转,该位清0
3
1/3[2]
CJNE
A,direct,rel
累加器与直接地址单元不相等跳转
3
2/3[3]
CJNE
A,#data,rel
累加器与立即数不相等跳转
3
1/3[2]
CJNE
Rn,#data,rel
寄存器与立即数不相等跳转
3
2/3[3]
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 274 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
CJNE
@Ri,#data,rel
间接地址单元与立即数不相等跳转
3
2/3[3]
DJNZ
Rn,rel
寄存器减1后非零跳转
2
2/3[3]
DJNZ
direct,rel
直接地址单元减1后非零跳转
3
2/3[3]
空操作
1
1
NOP
[1]
:访问外部扩展 RAM 时,指令的执行周期与寄存器 BUS_SPEED 中的 SPEED[2:0]位有关
:对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续
执行下一条指令,此时条件跳转语句的执行时间为 1 个时钟;当条件满足时,则会发生跳转,此时条件
跳转语句的执行时间为 3 个时钟。
[3]
:对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续
执行下一条指令,此时条件跳转语句的执行时间为 2 个时钟;当条件满足时,则会发生跳转,此时条件
跳转语句的执行时间为 3 个时钟。
[2]
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 275 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12 中断系统
(C 语言程序中使用中断号大于 31 的中断时,在 Keil 中编译会报错,解决办法请参考附录)
中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。
当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求 CPU 暂停当前的工作,
转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为
中断。实现这种功能的部件称为中断系统,请示 CPU 中断的请求源称为中断源。微型机的中断系统一
般允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在 CPU 优先响
应哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即
规定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。
当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它
还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求
源,处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中
断系统,没有中断嵌套功能的中断系统称为单级中断系统。
用户可以用关总中断允许位(EA/IE.7)或相应中断的允许位屏蔽相应的中断请求,也可以用打开
相应的中断允许位来使 CPU 响应相应的中断申请,每一个中断源可以用软件独立地控制为开中断或关
中断状态,部分中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,
低优先级的中断请求不可以打断高优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序
来决定系统先响应哪个中断。
12.1 STC8H系列中断源
下表中√表示对应的系列有相应的中断源
STC8H1K16
STC8H1K08
STC8H3K64S4
STC8H3K64S2
STC8H8K64U
STC8H2K64T
系列
系列
系列
系列
系列
系列
外部中断 0 中断(INT0)
√
√
√
√
√
√
定时器 0 中断(Timer0)
√
√
√
√
√
√
外部中断 1 中断(INT1)
√
√
√
√
√
√
定时器 1 中断(Timer1)
√
√
√
√
√
√
串口 1 中断(UART1)
√
√
√
√
√
√
模数转换中断(ADC)
√
√
√
√
√
√
低压检测中断(LVD)
√
√
√
√
√
√
捕获中断(CCP/PCA/PWM)
√
√
√
√
√
√
串口 2 中断(UART2)
√
√
√
√
√
√
串行外设接口中断(SPI)
√
√
√
√
√
√
外部中断 2 中断(INT2)
√
√
√
√
√
√
外部中断 3 中断(INT3)
√
√
√
√
√
√
定时器 2 中断(Timer2)
√
√
√
√
√
√
外部中断 4 中断(INT4)
√
√
√
√
√
√
中断源
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 276 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口 3 中断(UART3)
√
√
√
串口 4 中断(UART4)
√
√
√
定时器 3 中断(Timer3)
√
√
√
√
√
定时器 4 中断(Timer4)
√
√
√
√
√
比较器中断(CMP)
√
√
√
√
√
√
I2C 总线中断
√
√
√
√
√
√
PWMA
√
√
√
√
√
√
PWMB
√
√
√
√
√
√
USB 中断
√
触摸按键中断
√
RTC 中断
√
P0 口中断
√
√
√
P1 口中断
√
√
√
P2 口中断
√
√
√
P3 口中断
√
√
√
P4 口中断
√
√
√
P5 口中断
√
√
√
P6 口中断
√
√
P7 口中断
√
√
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 277 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.2 STC8H中断结构图
中断请求
中断允许控制
中断优先级控制
最低优先级
较低优先级
较高优先级
最高优先级
TCON.0/IT0=0
INT0
EX0
EA
ET0
EA
IE0
PX0/PX0H
0
PT0/PT0H
0
1
2
3
TCON.0/IT0=1
Timer0
TF0
1
2
3
TCON.2/IT1=0
EX1
INT1
EA
IE1
0
PX1/PX1H
1
2
3
TCON.2/IT1=1
Timer1
UART1
ET1
EA
PT1/PT1H
0
ES
EA
PS/PSH
0
TF1
RI
TI
ADC
EADC
EA
PADC/PADCH
0
ELVD
EA
PLVD/PLVDH
0
ADC_Flag
LVD
LVDF
1
1
1
1
2
2
2
2
ECF
3
3
3
3
CF
ECF0
CCF0
ECF1
PCA
EA
CCF1
0
PPCA/PPCAH
1
2
ECF2
3
CCF2
ECF3
CCF3
UART2
S2RI
S2TI
SPI
INT3
INT3IF
Timer2
Timer4
CMP
EA
S3TI
S4RI
S4TI
0
PSPI/PSPIH
0
优先级固定为最低优先级
EA
优先级固定为最低优先级
ET2
EA
优先级固定为最低优先级
EX4
EA
ES3
EA
INT4IF
S3RI
PS2/PS2H
EX3
T2IF
INT4
Timer3
EA
EX2
INT2IF
UART4
EA
SPIF
INT2
UART3
ES2
ESPI
优先级固定为最低优先级
ES4
EA
优先级固定为最低优先级
ET3
EA
优先级固定为最低优先级
ET4
EA
优先级固定为最低优先级
T3IF
T4IF
PIE
EA
CMPIF
PCMP/PCMPH
1
2
2
3
3
0
0
0
0
PX4/PX4H
1
1
2
3
0
0
0
0
0
1
2
NIE
3
ECBI
CBIF
C0IF
C1IF
C2IF
PWM
C3IF
C4IF
C5IF
C6IF
C7IF
PWMFD
EC0I
EC0T1SI
EC0T2SI
EC1I
EC1T1SI
EC1T2SI
EC2I
EC2T1SI
EC2T2SI
EC3I
EC3T1SI
EC3T2SI
EC4I
EC4T1SI
EC4T2SI
EC5I
EC5T1SI
EC5T2SI
EC6I
EC6T1SI
EC6T2SI
EC7I
EC7T1SI
EC7T2SI
EFDI
FDIF
EA
EA
PPWM/PPWMH
PPWMFD/PPWMFDH
0
0
1
1
2
2
EMSI
3
3
MSIF
ESTAI
STAIF
I2C
ESTOI
STOIF
PI2C/PI2CH
ERXI
0
1
2
3
RXIF
ETXI
TXIF
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 278 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.3 STC8H系列中断列表
中断源
中断向量
次序
优先级设置
优先级
中断请求位
中断允许位
INT0
0003H
0
PX0PX0H
0/1/2/3
IE0
EX0
Timer0
000BH
1
PT0,PT0H
0/1/2/3
TF0
ET0
INT1
0013H
2
PX1,PX1H
0/1/2/3
IE1
EX1
Timer1
001BH
3
PT1,PT1H
0/1/2/3
TF1
ET1
UART1
0023H
4
PS,PSH
0/1/2/3
RI || TI
ES
ADC
002BH
5
PADC,PADCH
0/1/2/3
ADC_FLAG
EADC
LVD
0033H
6
PLVD,PLVDH
0/1/2/3
LVDF
ELVD
CF
ECF
CCF0
ECCF0
CCF1
ECCF1
CCF2
ECCF2
CCF3
ECCF3
PCA
003BH
7
PPCA,PPCAH
0/1/2/3
UART2
0043H
8
PS2,PS2H
0/1/2/3
S2RI || S2TI
ES2
SPI
004BH
9
PSPI,PSPIH
0/1/2/3
SPIF
ESPI
INT2
0053H
10
0
INT2IF
EX2
INT3
005BH
11
0
INT3IF
EX3
Timer2
0063H
12
0
T2IF
ET2
INT4
0083H
16
PX4,PX4H
0/1/2/3
INT4IF
EX4
UART3
008BH
17
PS3,PS3H
0/1/2/3
S3RI || S3TI
ES3
UART4
0093H
18
PS4,PS4H
0/1/2/3
S4RI || S4TI
ES4
Timer3
009BH
19
0
T3IF
ET3
Timer4
00A3H
20
0
T4IF
ET4
CMP
00ABH
21
0/1/2/3
CMPIF
PIE|NIE
MSIF
EMSI
STAIF
ESTAI
RXIF
ERXI
TXIF
ETXI
STOIF
ESTOI
I2C
00C3H
深圳国芯人工智能有限公司
24
PCMP,PCMPH
PI2C,PI2CH
0/1/2/3
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 279 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
中断源
中断向量
次序
优先级设置
优先级
中断请求位
中断允许位
USB
00CBH
25
PUSB,PUSBH
0/1/2/3
USB Events
EUSB
PWMA
00D3H
26
PPWMA,PPWMAH
0/1/2/3
PWMA_SR
PWMA_IER
PWMB
00DDH
27
PPWMB,PPWMBH
0/1/2/3
PWMB_SR
PWMB_IER
TKSU
011BH
35
PTKSU,PTKSUH
0/1/2/3
TKIF
ETKSUI
ALAIF
EALAI
DAYIF
EDAYI
HOURIF
EHOURI
MINIF
EMINI
SECIF
ESECI
SEC2IF
ESEC2I
SEC8IF
ESEC8I
SEC32IF
ESEC32I
RTC
0123H
36
PRTC,PRTCH
0/1/2/3
P0 中断
012BH
37
0
P0INTF
P0INTE
P1 中断
0133H
38
0
P1INTF
P1INTE
P2 中断
013BH
39
0
P2INTF
P2INTE
P3 中断
0143H
40
0
P3INTF
P3INTE
P4 中断
014BH
41
0
P4INTF
P4INTE
P5 中断
0153H
42
0
P5INTF
P5INTE
P6 中断
015BH
43
0
P6INTF
P6INTE
P7 中断
0163H
44
0
P7INTF
P7INTE
在 C 语言中声明中断服务程序
void
INT0_Routine(void)
interrupt 0;
void
TM0_Rountine(void)
interrupt 1;
void
INT1_Routine(void)
interrupt 2;
void
TM1_Rountine(void)
interrupt 3;
void
UART1_Routine(void)
interrupt 4;
void
ADC_Routine(void)
interrupt 5;
void
LVD_Routine(void)
interrupt 6;
void
PCA_Routine(void)
interrupt 7;
void
UART2_Routine(void)
interrupt 8;
void
SPI_Routine(void)
interrupt 9;
void
INT2_Routine(void)
interrupt 10;
void
INT3_Routine(void)
interrupt 11;
void
TM2_Routine(void)
interrupt 12;
void
INT4_Routine(void)
interrupt 16;
void
UART3_Routine(void)
interrupt 17;
void
UART4_Routine(void)
interrupt 18;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 280 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
void
TM3_Routine(void)
interrupt 19;
void
TM4_Routine(void)
interrupt 20;
void
CMP_Routine(void)
interrupt 21;
void
I2C_Routine(void)
interrupt 24;
void
USB_Routine(void)
interrupt 25;
void
PWMA_Routine(void)
interrupt 26;
void
PWMB_Routine(void)
interrupt 27;
//void TKSU_Routine(void)
interrupt 35;
//void RTC_Routine(void)
interrupt 36;
//void P0Int_Routine(void)
interrupt 37;
//void P0Int_Routine(void)
interrupt 37;
//void P0Int_Routine(void)
interrupt 37;
//void P1Int_Routine(void)
interrupt 38;
//void P2Int_Routine(void)
interrupt 39;
//void P3Int_Routine(void)
interrupt 40;
//void P4Int_Routine(void)
interrupt 41;
//void P5Int_Routine(void)
interrupt 42;
//void P6Int_Routine(void)
interrupt 43;
//void P7Int_Routine(void)
interrupt 44;
技术支持: 13922829991
研发顾问: 13922805190
中断号超过31的C语言中断服务程序不能直接用interrupt声明,请参考“附录J” 的
处理方法,汇编语言不受影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 281 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.4 中断相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
IE
中断允许寄存器
A8H
EA
ELVD
EADC
ES
ET1
EX1
ET0
EX0
0000,0000
IE2
中断允许寄存器 2
AFH
EUSB
ET4
ET3
ES4
ES3
ET2
ESPI
ES2
0000,0000
中断与时钟输出控制寄存器
8FH
-
EX4
EX3
EX2
-
中断优先级控制寄存器
B8H
-
PLVD
PADC
PS
PT1
PX1
PT0
PX0
x000,0000
IPH
高中断优先级控制寄存器
B7H
-
PLVDH
PADCH
PSH
PT1H
PX1H
PT0H
PX0H
x000,0000
IP2
中断优先级控制寄存器 2
B5H
PI2C
PCMP
PX4
PPWMB
PPWMA
PSPI
PS2
0000,0000
高中断优先级控制寄存器 2
B6H
PI2CH
PCMPH
PX4H
PS2H
0000,0000
中断优先级控制寄存器 3
DFH
-
-
-
-
-
PRTC
PS4
PS3
xxxx,x000
IP3H
高中断优先级控制寄存器 3
EEH
-
-
-
-
-
PRTCH
PS4H
PS3H
xxxx,x000
TCON
定时器控制寄存器
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0000,0000
扩展外部中断标志寄存器
EFH
-
INT4IF
INT3IF
INT2IF
-
T4IF
T3IF
T2IF
x000,x000
SCON
串口 1 控制寄存器
98H
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
0000,0000
S2CON
串口 2 控制寄存器
9AH
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
0100,0000
S3CON
串口 3 控制寄存器
ACH
S3SM0
S3ST3
S3SM2
S3REN
S3TB8
S3RB8
S3TI
S3RI
0000,0000
S4CON
串口 4 控制寄存器
84H
S4SM0
S4ST4
S4SM2
S4REN
S4TB8
S4RB8
S4TI
S4RI
0000,0000
PCON
电源控制寄存器
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
0011,0000
INTCLKO
IP
T2CLKO T1CLKO
T0CLKO x000,x000
PUSB
PTKSU
PUSBH
IP2H
IP3
AUXINTIF
ADC_CONTR ADC 控制寄存器
PPWMBH PPWMAH PSPIH
PTKSUH
BCH ADC_POWER ADC_START ADC_FLAG ADC_EPWMT
ADC_CHS[3:0]
SPSTAT
SPI 状态寄存器
CDH
SPIF
WCOL
-
-
-
-
CMPCR1
比较器控制寄存器 1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
000x,0000
-
-
00xx,xxxx
CMPOE CMPRES 0000,0000
位地址与符号
符号
I2CMSCR
描述
I2C 主机控制寄存器
地址
FE81H
复位值
B7
B6
B5
B4
EMSI
-
-
-
B3
B2
B1
B0
MSCMD[3:0]
0xxx,0000
2
FE82H MSBUSY
MSIF
-
-
-
-
MSACKI
2
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
-
2
I C 从机状态寄存器
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
TXING
SLACKI
PWMA_IER
PWMA 中断使能寄存器
FEC4H
BIE
TIE
COMIE
CC4IE
CC3IE
CC2IE
CC1IE
UIE
0000,0000
PWMA_SR1
PWMA 状态寄存器 1
FEC5H
BIF
TIF
COMIF
CC4IF
CC3IF
CC2IF
CC1IF
UIF
0000,0000
PWMA_SR2
PWMA 状态寄存器 2
FEC6H
-
-
-
CC4OF
CC3OF
CC2OF
CC1OF
-
xxx0,000x
PWMB_IER
PWMB 中断使能寄存器
FEE4H
BIE
TIE
COMIE
CC8IE
CC7IE
CC6IE
CC5IE
UIE
0000,0000
PWMB_SR1
PWMB 状态寄存器 1
FEE5H
BIF
TIF
COMIF
CC8IF
CC7IF
CC6IF
CC5IF
UIF
0000,0000
PWMB_SR2
PWMB 状态寄存器 2
FEE6H
-
-
-
CC8OF
CC7OF
CC6OF
CC5OF
-
xxx0,000x
P0INTE
P0 口中断使能寄存器
FD00H P07INTE
P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE
P00INTE 0000,0000
P1INTE
P1 口中断使能寄存器
FD01H P17INTE
P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE
P10INTE 0000,0000
P2INTE
P2 口中断使能寄存器
FD02H P27INTE
P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE
P20INTE 0000,0000
P3INTE
P3 口中断使能寄存器
FD03H P37INTE
P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE
P30INTE 0000,0000
P4INTE
P4 口中断使能寄存器
FD04H P47INTE
P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE
P40INTE 0000,0000
I2CMSST
I2CSLCR
I2CSLST
I C 主机状态寄存器
I C 从机控制寄存器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
MSACKO 00xx,xx00
SLRST
x000,0xx0
SLACKO 0000,0000
传真: 0513-5501 2926/2956/2947
- 282 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P5INTE
P5 口中断使能寄存器
FD05H
P6INTE
P6 口中断使能寄存器
P7INTE
-
-
研发顾问: 13922805190
P54INTE P53INTE P52INTE P51INTE
P50INTE 0000,0000
FD06H P67INTE
P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE
P60INTE 0000,0000
P7 口中断使能寄存器
FD07H P77INTE
P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE
P70INTE 0000,0000
P0INTF
P0 口中断标志寄存器
FD10H
P07INTF
P06INTF
P05INTF P04INTF P03INTF P02INTF
P01INTF
P00INTF 0000,0000
P1INTF
P1 口中断标志寄存器
FD11H
P17INTF
P16INTF
P15INTF P14INTF P13INTF P12INTF
P11INTF
P10INTF 0000,0000
P2INTF
P2 口中断标志寄存器
FD12H
P27INTF
P26INTF
P25INTF P24INTF P23INTF P22INTF
P21INTF
P20INTF 0000,0000
P3INTF
P3 口中断标志寄存器
FD13H
P37INTF
P36INTF
P35INTF P34INTF P33INTF P32INTF
P31INTF
P30INTF 0000,0000
P4INTF
P4 口中断标志寄存器
FD14H
P47INTF
P46INTF
P45INTF P44INTF P43INTF P42INTF
P41INTF
P40INTF 0000,0000
P5INTF
P5 口中断标志寄存器
FD15H
-
-
P54INTF P53INTF P52INTF
P51INTF
P50INTF 0000,0000
P6INTF
P6 口中断标志寄存器
FD16H
P67INTF
P66INTF
P65INTF P64INTF P63INTF P62INTF
P61INTF
P60INTF 0000,0000
P7INTF
P7 口中断标志寄存器
FD17H
P77INTF
P76INTF
P75INTF P74INTF P73INTF P72INTF
P71INTF
P70INTF 0000,0000
12.4.1
-
技术支持: 13922829991
-
中断使能寄存器(中断允许位)
IE(中断使能寄存器)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IE
A8H
EA
ELVD
EADC
ES
ET1
EX1
ET0
EX0
EA:总中断允许控制位。EA 的作用是使中断允许形成多级控制。即各中断源首先受 EA 控制;其次还受
各中断源自己的中断允许控制位控制。
0:CPU 屏蔽所有的中断申请
1:CPU 开放中断
ELVD:低压检测中断允许位。
0:禁止低压检测中断
1:允许低压检测中断
EADC:A/D 转换中断允许位。
0:禁止 A/D 转换中断
1:允许 A/D 转换中断
ES:串行口 1 中断允许位。
0:禁止串行口 1 中断
1:允许串行口 1 中断
ET1:定时/计数器 T1 的溢出中断允许位。
0:禁止 T1 中断
1:允许 T1 中断
EX1:外部中断 1 中断允许位。
0:禁止 INT1 中断
1:允许 INT1 中断
ET0:定时/计数器 T0 的溢出中断允许位。
0:禁止 T0 中断
1:允许 T0 中断
EX0:外部中断 0 中断允许位。
0:禁止 INT0 中断
1:允许 INT0 中断
IE2(中断使能寄存器 2)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 283 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IE2
AFH
EUSB
ET4
ET3
ES4
ES3
ET2
ESPI
ES2
EUSB:USB 中断允许位。
0:禁止 USB 中断
1:允许 USB 中断
ET4:定时/计数器 T4 的溢出中断允许位。
0:禁止 T4 中断
1:允许 T4 中断
ET3:定时/计数器 T3 的溢出中断允许位。
0:禁止 T3 中断
1:允许 T3 中断
ES4:串行口 4 中断允许位。
0:禁止串行口 4 中断
1:允许串行口 4 中断
ES3:串行口 3 中断允许位。
0:禁止串行口 3 中断
1:允许串行口 3 中断
ET2:定时/计数器 T2 的溢出中断允许位。
0:禁止 T2 中断
1:允许 T3 中断
ESPI:SPI 中断允许位。
0:禁止 SPI 中断
1:允许 SPI 中断
ES2:串行口 2 中断允许位。
0:禁止串行口 2 中断
1:允许串行口 2 中断
INTCLKO(外部中断与时钟输出控制寄存器)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTCLKO
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
T0CLKO
EX4:外部中断 4 中断允许位。
0:禁止 INT4 中断
1:允许 INT4 中断
EX3:外部中断 3 中断允许位。
0:禁止 INT3 中断
1:允许 INT3 中断
EX2:外部中断 2 中断允许位。
0:禁止 INT2 中断
1:允许 INT2 中断
CMPCR1(比较器控制寄存器 1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CMPCR1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES
PIE:比较器上升沿中断允许位。
0:禁止比较器上升沿中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 284 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1:允许比较器上升沿中断
NIE:比较器下降沿中断允许位。
0:禁止比较器下降沿中断
1:允许比较器下降沿中断
I2C 控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
I2CMSCR
FE81H
EMSI
-
-
-
-
I2CSLCR
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
-
SLRST
MSCMD[2:0]
2
EMSI:I C主机模式中断允许位。
0:禁止 I2C 主机模式中断
1:允许 I2C 主机模式中断
2
ESTAI:I C从机接收START事件中断允许位。
0:禁止 I2C 从机接收 START 事件中断
1:允许 I2C 从机接收 START 事件中断
2
ERXI:I C从机接收数据完成事件中断允许位。
0:禁止 I2C 从机接收数据完成事件中断
1:允许 I2C 从机接收数据完成事件中断
2
ETXI:I C从机发送数据完成事件中断允许位。
0:禁止 I2C 从机发送数据完成事件中断
1:允许 I2C 从机发送数据完成事件中断
2
ESTOI:I C从机接收STOP事件中断允许位。
0:禁止 I2C 从机接收 STOP 事件中断
1:允许 I2C 从机接收 STOP 事件中断
PWMA 中断使能寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMA_IER
FEC4H
BIE
TIE
COMIE
CC4IE
CC3IE
CC2IE
CC1IE
UIE
BIE:PWMA刹车中断允许位。
0:禁止 PWMA 刹车中断
1:允许 PWMA 刹车中断
TIE:PWMA触发中断允许位。
0:禁止 PWMA 触发中断
1:允许 PWMA 触发中断
COMIE:PWMA比较中断允许位。
0:禁止 PWMA 比较中断
1:允许 PWMA 比较中断
CC4IE:PWMA捕获比较通道4中断允许位。
0:禁止 PWMA 捕获比较通道 4 中断
1:允许 PWMA 捕获比较通道 4 中断
CC3IE:PWMA捕获比较通道3中断允许位。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 285 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
0:禁止 PWMA 捕获比较通道 3 中断
1:允许 PWMA 捕获比较通道 3 中断
CC2IE:PWMA捕获比较通道2中断允许位。
0:禁止 PWMA 捕获比较通道 2 中断
1:允许 PWMA 捕获比较通道 2 中断
CC1IE:PWMA捕获比较通道1中断允许位。
0:禁止 PWMA 捕获比较通道 1 中断
1:允许 PWMA 捕获比较通道 1 中断
UIE:PWMA更新中断允许位。
0:禁止 PWMA 更新中断
1:允许 PWMA 更新中断
PWMB 中断使能寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMB_IER
FEE4H
BIE
TIE
COMIE
CC8IE
CC7IE
CC6IE
CC5IE
UIE
B1
B0
BIE:PWMB刹车中断允许位。
0:禁止 PWMB 刹车中断
1:允许 PWMB 刹车中断
TIE:PWMB触发中断允许位。
0:禁止 PWMB 触发中断
1:允许 PWMB 触发中断
COMIE:PWMB比较中断允许位。
0:禁止 PWMB 比较中断
1:允许 PWMB 比较中断
CC8IE:PWMB捕获比较通道8中断允许位。
0:禁止 PWMB 捕获比较通道 8 中断
1:允许 PWMB 捕获比较通道 8 中断
CC7IE:PWMB捕获比较通道7中断允许位。
0:禁止 PWMB 捕获比较通道 7 中断
1:允许 PWMB 捕获比较通道 7 中断
CC6IE:PWMB捕获比较通道6中断允许位。
0:禁止 PWMB 捕获比较通道 6 中断
1:允许 PWMB 捕获比较通道 6 中断
CC5IE:PWMB捕获比较通道5中断允许位。
0:禁止 PWMB 捕获比较通道 5 中断
1:允许 PWMB 捕获比较通道 5 中断
UIE:PWMB更新中断允许位。
0:禁止 PWMB 更新中断
1:允许 PWMB 更新中断
端口中断使能寄存器
符号
地址
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
B2
传真: 0513-5501 2926/2956/2947
- 286 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P0INTE
FD00H
P07INTE
P06INTE
P05INTE
P04INTE
P03INTE
P02INTE
P01INTE
P00INTE
P1INTE
FD01H
P17INTE
P16INTE
P15INTE
P14INTE
P13INTE
P12INTE
P11INTE
P10INTE
P2INTE
FD02H
P27INTE
P26INTE
P25INTE
P24INTE
P23INTE
P22INTE
P21INTE
P20INTE
P3INTE
FD03H
P37INTE
P36INTE
P35INTE
P34INTE
P33INTE
P32INTE
P31INTE
P30INTE
P4INTE
FD04H
P47INTE
P46INTE
P45INTE
P44INTE
P43INTE
P42INTE
P41INTE
P40INTE
P5INTE
FD05H
-
-
-
P54INTE
P53INTE
P52INTE
P51INTE
P50INTE
P6INTE
FD06H
P67INTE
P66INTE
P65INTE
P64INTE
P63INTE
P62INTE
P61INTE
P60INTE
P7INTE
FD07H
P77INTE
P76INTE
P75INTE
P74INTE
P73INTE
P72INTE
P71INTE
P70INTE
PnINTE.x:端口中断使能控制位(n=0~7,x=0~7)
0:关闭 Pn.x 口中断功能
1:使能 Pn.x 口中断功能
12.4.2
中断请求寄存器(中断标志位)
定时器控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TCON
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF1:定时器1溢出中断标志。中断服务程序中,硬件自动清零。
TF0:定时器0溢出中断标志。中断服务程序中,硬件自动清零。
IE1:外部中断1中断请求标志。中断服务程序中,硬件自动清零。
IE0:外部中断0中断请求标志。中断服务程序中,硬件自动清零。
中断标志辅助寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXINTIF
EFH
-
INT4IF
INT3IF
INT2IF
-
T4IF
T3IF
T2IF
INT4IF:外部中断4中断请求标志。中断服务程序中,硬件自动清零。
INT3IF:外部中断3中断请求标志。中断服务程序中,硬件自动清零。
INT2IF:外部中断2中断请求标志。中断服务程序中,硬件自动清零。
T4IF:定时器4溢出中断标志。中断服务程序中,硬件自动清零。
T3IF:定时器3溢出中断标志。中断服务程序中,硬件自动清零。
T2IF:定时器2溢出中断标志。中断服务程序中,硬件自动清零。
串口控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SCON
98H
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
S2CON
9AH
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
S3CON
ACH
S3SM0
S3ST3
S3SM2
S3REN
S3TB8
S3RB8
S3TI
S3RI
S4CON
84H
S4SM0
S4ST4
S4SM2
S4REN
S4TB8
S4RB8
S4TI
S4RI
TI:串口1发送完成中断请求标志。需要软件清零。
RI:串口1接收完成中断请求标志。需要软件清零。
S2TI:串口2发送完成中断请求标志。需要软件清零。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 287 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
S2RI:串口2接收完成中断请求标志。需要软件清零。
S3TI:串口3发送完成中断请求标志。需要软件清零。
S3RI:串口3接收完成中断请求标志。需要软件清零。
S4TI:串口4发送完成中断请求标志。需要软件清零。
S4RI:串口4接收完成中断请求标志。需要软件清零。
电源管理寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PCON
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
LVDF:低压检测中断请求标志。需要软件清零。
ADC 控制寄存器
符号
地址
B7
B6
B5
B4
B3
ADC_CONTR
BCH
ADC_POWER
ADC_START
ADC_FLAG
ADC_EPWMT
B2
B1
B0
ADC_CHS[3:0]
ADC_FLAG:ADC转换完成中断请求标志。需要软件清零。
SPI 状态寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SPSTAT
CDH
SPIF
WCOL
-
-
-
-
-
-
SPIF:SPI数据传输完成中断请求标志。需要软件清零。
比较器控制寄存器 1
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CMPCR1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES
CMPIF:比较器中断请求标志。需要软件清零。
I2C 状态寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
I2CMSST
FE82H
MSBUSY
MSIF
-
-
-
-
MSACKI
MSACKO
I2CSLST
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
TXING
SLACKI
SLACKO
2
MSIF:I C主机模式中断请求标志。需要软件清零。
2
ESTAI:I C从机接收START事件中断请求标志。需要软件清零。
2
ERXI:I C从机接收数据完成事件中断请求标志。需要软件清零。
2
ETXI:I C从机发送数据完成事件中断请求标志。需要软件清零。
2
ESTOI:I C从机接收STOP事件中断请求标志。需要软件清零。
PWMA 状态寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMA_SR1
FEC5H
BIF
TIF
COMIF
CC4IF
CC3IF
CC2IF
CC1IF
UIF
PWMA_SR2
FEC6H
-
-
-
CC4OF
CC3OF
CC2OF
CC1OF
-
BIF:PWMA刹车中断请求标志。需要软件清零。
TIF:PWMA触发中断请求标志。需要软件清零。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 288 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
COMIF:PWMA比较中断请求标志。需要软件清零。
CC4IF:PWMA通道4发生捕获比较中断请求标志。需要软件清零。
CC3IF:PWMA通道3发生捕获比较中断请求标志。需要软件清零。
CC2IF:PWMA通道2发生捕获比较中断请求标志。需要软件清零。
CC1IF:PWMA通道1发生捕获比较中断请求标志。需要软件清零。
TIF:PWMA更新中断请求标志。需要软件清零。
CC4OF:PWMA通道4发生重复捕获中断请求标志。需要软件清零。
CC3OF:PWMA通道3发生重复捕获中断请求标志。需要软件清零。
CC2OF:PWMA通道2发生重复捕获中断请求标志。需要软件清零。
CC1OF:PWMA通道1发生重复捕获中断请求标志。需要软件清零。
PWMB 状态寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMB_SR1
FEE5H
BIF
TIF
COMIF
CC8IF
CC7IF
CC6IF
CC5IF
UIF
PWMB_SR2
FEE6H
-
-
-
CC8OF
CC7OF
CC6OF
CC5OF
-
BIF:PWMB刹车中断请求标志。需要软件清零。
TIF:PWMB触发中断请求标志。需要软件清零。
COMIF:PWMB比较中断请求标志。需要软件清零。
CC8IF:PWMB通道8发生捕获比较中断请求标志。需要软件清零。
CC7IF:PWMB通道7发生捕获比较中断请求标志。需要软件清零。
CC6IF:PWMB通道6发生捕获比较中断请求标志。需要软件清零。
CC5IF:PWMB通道5发生捕获比较中断请求标志。需要软件清零。
TIF:PWMB更新中断请求标志。需要软件清零。
CC8OF:PWMB通道8发生重复捕获中断请求标志。需要软件清零。
CC7OF:PWMB通道7发生重复捕获中断请求标志。需要软件清零。
CC6OF:PWMB通道6发生重复捕获中断请求标志。需要软件清零。
CC5OF:PWMB通道5发生重复捕获中断请求标志。需要软件清零。
端口中断标志寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P0INTF
FD10H
P07INTF
P06INTF
P05INTF
P04INTF
P03INTF
P02INTF
P01INTF
P00INTF
P1INTF
FD11H
P17INTF
P16INTF
P15INTF
P14INTF
P13INTF
P12INTF
P11INTF
P10INTF
P2INTF
FD12H
P27INTF
P26INTF
P25INTF
P24INTF
P23INTF
P22INTF
P21INTF
P20INTF
P3INTF
FD13H
P37INTF
P36INTF
P35INTF
P34INTF
P33INTF
P32INTF
P31INTF
P30INTF
P4INTF
FD14H
P47INTF
P46INTF
P45INTF
P44INTF
P43INTF
P42INTF
P41INTF
P40INTF
P5INTF
FD15H
-
-
-
P54INTF
P53INTF
P52INTF
P51INTF
P50INTF
P6INTF
FD16H
P67INTF
P66INTF
P65INTF
P64INTF
P63INTF
P62INTF
P61INTF
P60INTF
P7INTF
FD17H
P77INTF
P76INTF
P75INTF
P74INTF
P73INTF
P72INTF
P71INTF
P70INTF
PnINTF.x:端口中断请求标志位(n=0~7,x=0~7)
0:Pn.x 口没有中断请求
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 289 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1:Pn.x 口有中断请求,若使能中断,则会进入中断服务程序。标志位需软件清 0。
12.4.3
中断优先级寄存器
除 INT2、INT3、定时器 2、定时器 3、定时器 4 以及全部的端口中断外,其他中断均有 4 级中断
优先级可设置
中断优先级控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IP
B8H
-
PLVD
PADC
PS
PT1
PX1
PT0
PX0
IPH
B7H
-
PLVDH
PADCH
PSH
PT1H
PX1H
PT0H
PX0H
IP2
B5H
PI2C
PCMP
PX4
PPWMB
PPWMA
PSPI
PS2
IP2H
B6H
PI2CH
PCMPH
PX4H
PPWMBH
PPWMAH
PSPIH
PS2H
IP3
DFH
-
-
-
-
-
PRTC
PS4
PS3
IP3H
EEH
-
-
-
-
-
PRTCH
PS4H
PS3H
PUSB
PTKSU
PUSBH
PTKSUH
PX0H,PX0:外部中断0中断优先级控制位
00:INT0 中断优先级为 0 级(最低级)
01:INT0 中断优先级为 1 级(较低级)
10:INT0 中断优先级为 2 级(较高级)
11:INT0 中断优先级为 3 级(最高级)
PT0H,PT0:定时器0中断优先级控制位
00:定时器 0 中断优先级为 0 级(最低级)
01:定时器 0 中断优先级为 1 级(较低级)
10:定时器 0 中断优先级为 2 级(较高级)
11:定时器 0 中断优先级为 3 级(最高级)
PX1H,PX1:外部中断1中断优先级控制位
00:INT1 中断优先级为 0 级(最低级)
01:INT1 中断优先级为 1 级(较低级)
10:INT1 中断优先级为 2 级(较高级)
11:INT1 中断优先级为 3 级(最高级)
PT1H,PT1:定时器1中断优先级控制位
00:定时器 1 中断优先级为 0 级(最低级)
01:定时器 1 中断优先级为 1 级(较低级)
10:定时器 1 中断优先级为 2 级(较高级)
11:定时器 1 中断优先级为 3 级(最高级)
PSH,PS:串口1中断优先级控制位
00:串口 1 中断优先级为 0 级(最低级)
01:串口 1 中断优先级为 1 级(较低级)
10:串口 1 中断优先级为 2 级(较高级)
11:串口 1 中断优先级为 3 级(最高级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 290 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PADCH,PADC:ADC中断优先级控制位
00:ADC 中断优先级为 0 级(最低级)
01:ADC 中断优先级为 1 级(较低级)
10:ADC 中断优先级为 2 级(较高级)
11:ADC 中断优先级为 3 级(最高级)
PLVDH,PLVD:低压检测中断优先级控制位
00:LVD 中断优先级为 0 级(最低级)
01:LVD 中断优先级为 1 级(较低级)
10:LVD 中断优先级为 2 级(较高级)
11:LVD 中断优先级为 3 级(最高级)
PS2H,PS2:串口2中断优先级控制位
00:串口 2 中断优先级为 0 级(最低级)
01:串口 2 中断优先级为 1 级(较低级)
10:串口 2 中断优先级为 2 级(较高级)
11:串口 2 中断优先级为 3 级(最高级)
PS3H,PS3:串口3中断优先级控制位
00:串口 3 中断优先级为 0 级(最低级)
01:串口 3 中断优先级为 1 级(较低级)
10:串口 3 中断优先级为 2 级(较高级)
11:串口 3 中断优先级为 3 级(最高级)
PS4H,PS4:串口4中断优先级控制位
00:串口 4 中断优先级为 0 级(最低级)
01:串口 4 中断优先级为 1 级(较低级)
10:串口 4 中断优先级为 2 级(较高级)
11:串口 4 中断优先级为 3 级(最高级)
PSPIH,PSPI:SPI中断优先级控制位
00:SPI 中断优先级为 0 级(最低级)
01:SPI 中断优先级为 1 级(较低级)
10:SPI 中断优先级为 2 级(较高级)
11:SPI 中断优先级为 3 级(最高级)
PPWMAH,PPWMA:高级PWMA中断优先级控制位
00:高级 PWMA 中断优先级为 0 级(最低级)
01:高级 PWMA 中断优先级为 1 级(较低级)
10:高级 PWMA 中断优先级为 2 级(较高级)
11:高级 PWMA 中断优先级为 3 级(最高级)
PPWMBH,PPWMB:高级PWMB中断优先级控制位
00:高级 PWMB 中断优先级为 0 级(最低级)
01:高级 PWMB 中断优先级为 1 级(较低级)
10:高级 PWMB 中断优先级为 2 级(较高级)
11:高级 PWMB 中断优先级为 3 级(最高级)
PX4H,PX4:外部中断4中断优先级控制位
00:INT4 中断优先级为 0 级(最低级)
01:INT4 中断优先级为 1 级(较低级)
10:INT4 中断优先级为 2 级(较高级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 291 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11:INT4 中断优先级为 3 级(最高级)
PCMPH,PCMP:比较器中断优先级控制位
00:CMP 中断优先级为 0 级(最低级)
01:CMP 中断优先级为 1 级(较低级)
10:CMP 中断优先级为 2 级(较高级)
11:CMP 中断优先级为 3 级(最高级)
PI2CH,PI2C:I2C中断优先级控制位
00:I2C 中断优先级为 0 级(最低级)
01:I2C 中断优先级为 1 级(较低级)
10:I2C 中断优先级为 2 级(较高级)
11:I2C 中断优先级为 3 级(最高级)
PUSBH,PUSB:USB中断优先级控制位
00:USB 中断优先级为 0 级(最低级)
01:USB 中断优先级为 1 级(较低级)
10:USB 中断优先级为 2 级(较高级)
11:USB 中断优先级为 3 级(最高级)
PTKSUH,PTKSU:触摸按键中断优先级控制位
00:触摸按键中断优先级为 0 级(最低级)
01:触摸按键中断优先级为 1 级(较低级)
10:触摸按键中断优先级为 2 级(较高级)
11:触摸按键中断优先级为 3 级(最高级)
PRTCH,PRTC:RTC中断优先级控制位
00:RTC 中断优先级为 0 级(最低级)
01:RTC 中断优先级为 1 级(较低级)
10:RTC 中断优先级为 2 级(较高级)
11:RTC 中断优先级为 3 级(最高级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 292 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.5 范例程序
INT0 中断(上升沿和下降沿),可同时支持上升沿和下降
12.5.1
沿
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void INT0_Isr() interrupt 0
{
if (INT0)
{
P10 = !P10;
}
else
{
P11 = !P11;
}
}
//判断上升沿和下降沿
//测试端口
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 293 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//使能 INT0 上升沿和下降沿中断
//使能 INT0 中断
IT0 = 0;
EX0 = 1;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0003H
INT0ISR
ORG
0100H
JB
CPL
RETI
INT0,RISING
P1.0
;判断上升沿和下降沿
;测试端口
CPL
RETI
P1.1
;测试端口
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
CLR
SETB
SETB
JMP
IT0
EX0
EA
$
INT0ISR:
RISING:
MAIN:
深圳国芯人工智能有限公司
;使能 INT0 上升沿和下降沿中断
;使能 INT0 中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 294 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
END
INT0 中断(下降沿)
12.5.2
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void INT0_Isr() interrupt 0
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
IT0 = 1;
EX0 = 1;
EA = 1;
//使能 INT0 下降沿中断
//使能 INT0 中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 295 -
STC8H 系列技术手册
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0003H
INT0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
SETB
SETB
SETB
JMP
IT0
EX0
EA
$
技术支持: 13922829991
研发顾问: 13922805190
INT0ISR:
;测试端口
MAIN:
;使能 INT0 下降沿中断
;使能 INT0 中断
END
12.5.3
INT1 中断(上升沿和下降沿),可同时支持上升沿和下降
沿
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 296 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void INT1_Isr() interrupt 2
{
if (INT1)
{
P10 = !P10;
}
else
{
P11 = !P11;
}
}
//判断上升沿和下降沿
//测试端口
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//使能 INT1 上升沿和下降沿中断
//使能 INT1 中断
IT1 = 0;
EX1 = 1;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
DATA
DATA
DATA
深圳国芯人工智能有限公司
091H
092H
093H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 297 -
STC8H 系列技术手册
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0013H
INT1ISR
ORG
0100H
JB
CPL
RETI
INT1,RISING
P1.0
;判断上升沿和下降沿
;测试端口
CPL
RETI
P1.1
;测试端口
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
CLR
SETB
SETB
JMP
IT1
EX1
EA
$
研发顾问: 13922805190
INT1ISR:
RISING:
MAIN:
;使能 INT1 上升沿和下降沿中断
;使能 INT1 中断
END
INT1 中断(下降沿)
12.5.4
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P1M1
深圳国芯人工智能有限公司
=
0x91;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 298 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void INT1_Isr() interrupt 2
{
P10 = !P10;
}
技术支持: 13922829991
研发顾问: 13922805190
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//使能 INT1 下降沿中断
//使能 INT1 中断
IT1 = 1;
EX1 = 1;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
0000H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 299 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
LJMP
ORG
LJMP
MAIN
0013H
INT1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
SETB
SETB
SETB
JMP
IT1
EX1
EA
$
技术支持: 13922829991
研发顾问: 13922805190
INT1ISR:
;测试端口
MAIN:
;使能 INT1 下降沿中断
;使能 INT1 中断
END
INT2 中断(下降沿),只支持下降沿中断
12.5.5
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
#define
#define
INTCLKO
EX2
EX3
=
0x8f;
0x10
0x20
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 300 -
STC8H 系列技术手册
#define
sbit
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
EX4
P10
=
技术支持: 13922829991
研发顾问: 13922805190
0x40
P1^0;
void INT2_Isr() interrupt 10
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//使能 INT2 中断
INTCLKO = EX2;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0053H
INT2ISR
ORG
0100H
CPL
P1.0
INT2ISR:
深圳国芯人工智能有限公司
;测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 301 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RETI
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
SETB
JMP
INTCLKO,#EX2
EA
$
;使能 INT2 中断
END
INT3 中断(下降沿),只支持下降沿中断
12.5.6
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
#define
#define
#define
sbit
INTCLKO
EX2
EX3
EX4
P10
=
0x8f;
0x10
0x20
0x40
P1^0;
void INT3_Isr() interrupt 11
{
P10 = !P10;
}
深圳国芯人工智能有限公司
=
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 302 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//使能 INT3 中断
INTCLKO = EX3;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
005BH
INT3ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
INT3ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 303 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
SETB
JMP
INTCLKO,#EX3
EA
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 INT3 中断
END
INT4 中断(下降沿),只支持下降沿中断
12.5.7
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
#define
#define
#define
sbit
INTCLKO
EX2
EX3
EX4
P10
=
0x8f;
0x10
0x20
0x40
P1^0;
=
void INT4_Isr() interrupt 16
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 304 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//使能 INT4 中断
INTCLKO = EX4;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0083H
INT4ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
INT4ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 305 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
SETB
JMP
INTCLKO,#EX4
EA
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 INT4 中断
END
定时器 0 中断
12.5.8
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
深圳国芯人工智能有限公司
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 306 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL0,#66H
TH0,#0FCH
TR0
ET0
EA
JMP
$
TM0ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 307 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
定时器 1 中断
12.5.9
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 308 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
ET1
EA
JMP
$
TM1ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
12.5.10 定时器 2 中断
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 309 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
sfr
#define
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
=
void TM2_Isr() interrupt 12
{
P10 = !P10;
}
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0xef;
0x01
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T2L = 0x66;
T2H = 0xfc;
AUXR = 0x10;
IE2 = ET2;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 310 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0063H
TM2ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T2L,#66H
T2H,#0FCH
AUXR,#10H
IE2,#ET2
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM2ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 311 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.5.11 定时器 3 中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
sfr
#define
T3L
T3H
T4T3M
IE2
ET3
AUXINTIF
T3IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM3_Isr() interrupt 19
{
P10 = !P10;
}
=
0xd5;
0xd4;
0xd1;
0xaf;
0x20
0xef;
0x02
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T3L = 0x66;
T3H = 0xfc;
T4T3M = 0x08;
IE2 = ET3;
EA = 1;
深圳国芯人工智能有限公司
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 312 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T3L
T3H
T4T3M
IE2
ET3
AUXINTIF
T3IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D5H
0D4H
0D1H
0AFH
20H
0EFH
02H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
009BH
TM3ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T3L,#66H
T3H,#0FCH
T4T3M,#08H
IE2,#ET3
EA
TM3ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 313 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JMP
技术支持: 13922829991
研发顾问: 13922805190
$
END
12.5.12 定时器 4 中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
#define
#define
sfr
#define
#define
T3L
T3H
T4L
T4H
T4T3M
IE2
ET3
ET4
AUXINTIF
T3IF
T4IF
=
=
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM4_Isr() interrupt 20
{
P10 = !P10;
}
=
0xd5;
0xd4;
0xd3;
0xd2;
0xd1;
0xaf;
0x20
0x40
0xef;
0x02
0x04
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 314 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0x80;
IE2 = ET4;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T3L
T3H
T4L
T4H
T4T3M
IE2
ET3
ET4
AUXINTIF
T3IF
T4IF
DATA
DATA
DATA
DATA
DATA
DATA
EQU
EQU
DATA
EQU
EQU
0D5H
0D4H
0D3H
0D2H
0D1H
0AFH
20H
40H
0EFH
02H
04H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00A3H
TM4ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
TM4ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 315 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T4L,#66H
T4H,#0FCH
T4T3M,#80H
IE2,#ET4
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
12.5.13 UART1 中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
T2L
T2H
AUXR
=
=
=
0xd7;
0xd6;
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void UART1_Isr() interrupt 4
{
if (TI)
{
TI = 0;
P10 = !P10;
}
if (RI)
{
深圳国芯人工智能有限公司
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 316 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//清中断标志
//测试端口
RI = 0;
P11 = !P11;
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
SCON = 0x50;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x15;
ES = 1;
EA = 1;
SBUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
DATA
DATA
DATA
0D7H
0D6H
8EH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART1ISR
ORG
0100H
UART1ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 317 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
JNB
CLR
CPL
TI,CHECKRI
TI
P1.0
;清中断标志
;测试端口
JNB
CLR
CPL
RI,ISREXIT
RI
P1.1
;清中断标志
;测试端口
研发顾问: 13922805190
CHECKRI:
ISREXIT:
RETI
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
SETB
MOV
SCON,#50H
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
ES
EA
SBUF,#5AH
JMP
$
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
12.5.14 UART2 中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
#define
T2L
T2H
AUXR
S2CON
S2BUF
IE2
ES2
=
=
=
=
=
=
0xd7;
0xd6;
0x8e;
0x9a;
0x9b;
0xaf;
0x01
sfr
sfr
P1M1
P1M0
=
=
0x91;
0x92;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 318 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P12
P13
=
=
P1^2;
P1^3;
void UART2_Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
P12 = !P12;
}
if (S2CON & 0x01)
{
S2CON &= ~0x01;
P13 = !P13;
}
}
技术支持: 13922829991
研发顾问: 13922805190
//清中断标志
//测试端口
//清中断标志
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
S2CON = 0x10;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x14;
IE2 = ES2;
EA = 1;
S2BUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
DATA
深圳国芯人工智能有限公司
0D7H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 319 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
T2H
AUXR
S2CON
S2BUF
IE2
ES2
DATA
DATA
DATA
DATA
DATA
EQU
0D6H
8EH
9AH
9BH
0AFH
01H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0043H
UART2ISR
ORG
0100H
PUSH
PUSH
MOV
JNB
ANL
CPL
ACC
PSW
A,S2CON
ACC.1,CHECKRI
S2CON,#NOT 02H
P1.2
;清中断标志
;测试端口
MOV
JNB
ANL
CPL
A,S2CON
ACC.0,ISREXIT
S2CON,#NOT 01H
P1.3
;清中断标志
;测试端口
POP
POP
RETI
PSW
ACC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
S2CON,#10H
研发顾问: 13922805190
UART2ISR:
CHECKRI:
ISREXIT:
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 320 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
SETB
MOV
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
IE2,#ES2
EA
S2BUF,#5AH
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
12.5.15 UART3 中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
#define
T2L
T2H
AUXR
S3CON
S3BUF
IE2
ES3
=
=
=
=
=
=
0xd7;
0xd6;
0x8e;
0xac;
0xad;
0xaf;
0x08
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P12
P13
=
=
P1^2;
P1^3;
void UART3_Isr() interrupt 17
{
if (S3CON & 0x02)
{
S3CON &= ~0x02;
P12 = !P12;
}
if (S3CON & 0x01)
{
S3CON &= ~0x01;
P13 = !P13;
}
}
深圳国芯人工智能有限公司
//清中断标志
//测试端口
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 321 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
S3CON = 0x10;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x14;
IE2 = ES3;
EA = 1;
S3BUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
S3CON
S3BUF
IE2
ES3
DATA
DATA
DATA
DATA
DATA
DATA
EQU
0D7H
0D6H
8EH
0ACH
0ADH
0AFH
08H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
008BH
UART3ISR
ORG
0100H
UART3ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 322 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
PUSH
PUSH
MOV
JNB
ANL
CPL
ACC
PSW
A,S3CON
ACC.1,CHECKRI
S3CON,#NOT 02H
P1.2
;清中断标志
;测试端口
MOV
JNB
ANL
CPL
A,S3CON
ACC.0,ISREXIT
S3CON,#NOT 01H
P1.3
;清中断标志
;测试端口
POP
POP
RETI
PSW
ACC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
MOV
SETB
MOV
S3CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
IE2,#ES3
EA
S3BUF,#5AH
JMP
$
研发顾问: 13922805190
CHECKRI:
ISREXIT:
MAIN:
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
12.5.16 UART4 中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
T2L
T2H
AUXR
S4CON
S4BUF
深圳国芯人工智能有限公司
=
=
=
=
=
0xd7;
0xd6;
0x8e;
0x84;
0x85;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 323 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
#define
IE2
ES4
=
0xaf;
0x10
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P12
P13
=
=
P1^2;
P1^3;
void UART4_Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02;
P12 = !P12;
}
if (S4CON & 0x01)
{
S4CON &= ~0x01;
P13 = !P13;
}
}
技术支持: 13922829991
研发顾问: 13922805190
//清中断标志
//测试端口
//清中断标志
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
S4CON = 0x10;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x14;
IE2 = ES4;
EA = 1;
S4BUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 324 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
S4CON
S4BUF
IE2
ES4
DATA
DATA
DATA
DATA
DATA
DATA
EQU
0D7H
0D6H
8EH
84H
85H
0AFH
10H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0093H
UART4ISR
ORG
0100H
PUSH
PUSH
MOV
JNB
ANL
CPL
ACC
PSW
A,S4CON
ACC.1,CHECKRI
S4CON,#NOT 02H
P1.2
;清中断标志
;测试端口
MOV
JNB
ANL
CPL
A,S4CON
ACC.0,ISREXIT
S4CON,#NOT 01H
P1.3
;清中断标志
;测试端口
POP
POP
RETI
PSW
ACC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
UART4ISR:
CHECKRI:
ISREXIT:
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 325 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
MOV
SETB
MOV
S4CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
IE2,#ES4
EA
S4BUF,#5AH
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
12.5.17 ADC中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sbit
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
EADC
=
=
=
=
=
0xbc;
0xbd;
0xbe;
0xde;
IE^5;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void ADC_Isr() interrupt 5
{
ADC_CONTR &= ~0x20;
P0 = ADC_RES;
P2 = ADC_RESL;
}
//清中断标志
//测试端口
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 326 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
ADCCFG = 0x00;
ADC_CONTR = 0xc0;
EADC = 1;
EA = 1;
//使能并启动 ADC 模块
//使能 ADC 中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
EADC
DATA
DATA
DATA
DATA
BIT
0BCH
0BDH
0BEH
0DEH
IE.5
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
002BH
ADCISR
ORG
0100H
ANL
MOV
MOV
RETI
ADC_CONTR,#NOT 20H
P0,ADC_RES
P2,ADC_RESL
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
ADCISR:
;清中断标志
;测试端口
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 327 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
SETB
SETB
ADCCFG,#00H
ADC_CONTR,#0C0H
EADC
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能并启动 ADC 模块
;使能 ADC 中断
END
12.5.18 LVD中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
#define
#define
#define
#define
#define
sbit
#define
RSTCFG
ENLVR
LVD2V2
LVD2V4
LVD2V7
LVD3V0
ELVD
LVDF
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sbit
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
P10
void LVD_Isr() interrupt 6
{
PCON &= ~LVDF;
P10 = !P10;
}
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0xff;
0x40
0x00
0x01
0x02
0x03
IE^6;
0x20
//RSTCFG.6
//LVD@2.2V
//LVD@2.4V
//LVD@2.7V
//LVD@3.0V
//PCON.5
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
P1^0;
//清中断标志
//测试端口
void main()
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 328 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//上电需要清中断标志
//设置 LVD 电压为 3.0V
PCON &= ~LVDF;
RSTCFG = LVD3V0;
ELVD = 1; //使能 LVD 中断
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
RSTCFG
ENLVR
LVD2V2
LVD2V4
LVD2V7
LVD3V0
ELVD
LVDF
DATA
EQU
EQU
EQU
EQU
EQU
BIT
EQU
0FFH
40H
00H
01H
02H
03H
IE.6
20H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0033H
LVDISR
ORG
0100H
ANL
CPL
RETI
PCON,#NOT LVDF
P1.0
;RSTCFG.6
;LVD@2.2V
;LVD@2.4V
;LVD@2.7V
;LVD@3.0V
;PCON.5
LVDISR:
深圳国芯人工智能有限公司
;清中断标志
;测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 329 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
ANL
MOV
SETB
SETB
JMP
PCON,#NOT LVDF
RSTCFG,# LVD3V0
ELVD
EA
$
;上电需要清中断标志
;设置 LVD 电压为 3.0V
;使能 LVD 中断
END
12.5.19 比较器中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
CMPCR1
CMPCR2
=
=
0xe6;
0xe7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void CMP_Isr() interrupt 21
{
CMPCR1 &= ~0x40;
P10 = !P10;
}
深圳国芯人工智能有限公司
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 330 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
CMPCR2 = 0x00;
CMPCR1 = 0x80;
CMPCR1 |= 0x30;
CMPCR1 &= ~0x08;
CMPCR1 |= 0x04;
CMPCR1 |= 0x02;
EA = 1;
//使能比较器模块
//使能比较器边沿中断
//P3.6 为 CMP+输入脚
//P3.7 为 CMP-输入脚
//使能比较器输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00ABH
CMPISR
ORG
0100H
ANL
CPL
RETI
CMPCR1,#NOT 40H
P1.0
MOV
SP, #5FH
CMPISR:
;清中断标志
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 331 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
ORL
ANL
ORL
ORL
SETB
CMPCR2,#00H
CMPCR1,#80H
CMPCR1,#30H
CMPCR1,#NOT 08H
CMPCR1,#04H
CMPCR1,#02H
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能比较器模块
;使能比较器边沿中断
;P3.6 为 CMP+输入脚
;P3.7 为 CMP-输入脚
;使能比较器输出
END
12.5.20 SPI中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
SPSTAT
SPCTL
SPDAT
IE2
ESPI
=
=
=
=
0xcd;
0xce;
0xcf;
0xaf;
0x02
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void SPI_Isr() interrupt 9
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 332 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
//清中断标志
//测试端口
SPSTAT = 0xc0;
P10 = !P10;
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//使能 SPI 主机模式
//清中断标志
//使能 SPI 中断
SPCTL = 0x50;
SPSTAT = 0xc0;
IE2 = ESPI;
EA = 1;
SPDAT = 0x5a;
//发送测试数据
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
004BH
SPIISR
ORG
0100H
SPIISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 333 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
CPL
RETI
SPSTAT,#0C0H
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
MOV
SPCTL,#50H
SPSTAT,#0C0H
IE2,#ESPI
EA
SPDAT,#5AH
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;清中断标志
;测试端口
MAIN:
;使能 SPI 主机模式
;清中断标志
;使能 SPI 中断
;发送测试数据
END
12.5.21 I2C中断
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P_SW2
#define
#define
#define
#define
#define
#define
#define
#d
efine
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTXD
(*(unsigned char volatile xdata *)0xfe80)
(*(unsigned char volatile xdata *)0xfe81)
(*(unsigned char volatile xdata *)0xfe82)
(*(unsigned char volatile xdata *)0xfe83)
(*(unsigned char volatile xdata *)0xfe84)
(*(unsigned char volatile xdata *)0xfe85)
(*(unsigned char volatile xdata *)0xfe86)
I2CRXD
(*(unsigned char volatile xdata *)0xfe87)
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
0xba;
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 334 -
STC8H 系列技术手册
sfr
sfr
sfr
sfr
sfr
sfr
sbit
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
P10
=
=
=
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
P1^0;
void I2C_Isr() interrupt 24
{
_push_(P_SW2);
P_SW2 |= 0x80;
if (I2CMSST & 0x40)
{
I2CMSST &= ~0x40;
P10 = !P10;
}
_pop_(P_SW2);
}
//清中断标志
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 = 0x80;
I2CCFG = 0xc0;
I2CMSCR = 0x80;
P_SW2 = 0x00;
EA = 1;
//使能 I2C 主机模式
//使能 I2C 中断;
P_SW2 = 0x80;
I2CMSCR = 0x81;
P_SW2 = 0x00;
//发送起始命令
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
XDATA
XDATA
XDATA
XDATA
XDATA
0FE80H
0FE81H
0FE82H
0FE83H
0FE84H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 335 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
I2CSLADR
I2CTXD
I2CRXD
XDATA
XDATA
XDATA
0FE85H
0FE86H
0FE87H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00C3H
I2CISR
ORG
0100H
PUSH
PUSH
PUSH
PUSH
MOV
MOV
MOVX
ANL
MOVX
CPL
POP
POP
POP
POP
RETI
ACC
DPL
DPH
P_SW2
P_SW2,#80H
DPTR,#I2CMSST
A,@DPTR
A,#NOT 40H
@DPTR,A
P1.0
P_SW2
DPH
DPL
ACC
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOVX
P_SW2,#80H
A,#0C0H
DPTR,#I2CCFG
@DPTR,A
技术支持: 13922829991
研发顾问: 13922805190
I2CISR:
;清中断标志
;测试端口
MAIN:
深圳国芯人工智能有限公司
;使能 I2C 主机模式
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 336 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOVX
MOV
SETB
A,#80H
DPTR,#I2CMSCR
@DPTR,A
P_SW2,#00H
EA
MOV
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#081H
DPTR,#I2CMSCR
@DPTR,A
P_SW2,#00H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 I2C 中断
;发送起始命令
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 337 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13 定时器/计数器
STC8H 系列单片机内部设置了 5 个 16 位定时器/计数器。5 个 16 位定时器 T0、T1、T2、T3 和 T4
都具有计数方式和定时方式两种工作方式。对定时器/计数器 T0 和 T1,用它们在特殊功能寄存器 TMOD
中相对应的控制位 C/T 来选择 T0 或 T1 为定时器还是计数器。对定时器/计数器 T2,用特殊功能寄存器
AUXR 中的控制位 T2_C/T 来选择 T2 为定时器还是计数器。对定时器/计数器 T3,用特殊功能寄存器
T4T3M 中的控制位 T3_C/T 来选择 T3 为定时器还是计数器。对定时器/计数器 T4,用特殊功能寄存器
T4T3M 中的控制位 T4_C/T 来选择 T4 为定时器还是计数器。定时器/计数器的核心部件是一个加法计数
器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,
此时定时器/计数器每 12 个时钟或者每 1 个时钟得到一个计数脉冲,计数值加 1;如果计数脉冲来自单
片机外部引脚,则为计数方式,每来一个脉冲加 1。
当定时器/计数器 T0、T1 及 T2 工作在定时模式时,特殊功能寄存器 AUXR 中的 T0x12、T1x12 和
T2x12 分别决定是系统时钟/12 还是系统时钟/1(不分频)后让 T0、T1 和 T2 进行计数。当定时器/计数
器 T3 和 T4 工作在定时模式时,特殊功能寄存器 T4T3M 中的 T3x12 和 T4x12 分别决定是系统时钟/12
还是系统时钟/1(不分频)后让 T3 和 T4 进行计数。当定时器/计数器工作在计数模式时,对外部脉冲
计数不分频。
定时器/计数器 0 有 4 种工作模式:模式 0(16 位自动重装载模式),模式 1(16 位不可重装载模
式),模式 2(8 位自动重装模式),模式 3(不可屏蔽中断的 16 位自动重装载模式)。定时器/计数器
1 除模式 3 外,其他工作模式与定时器/计数器 0 相同。T1 在模式 3 时无效,停止计数。定时器 T2 的
工作模式固定为 16 位自动重装载模式。T2 可以当定时器使用,也可以当串口的波特率发生器和可编程
时钟输出。定时器 3、定时器 4 与定时器 T2 一样,它们的工作模式固定为 16 位自动重装载模式。T3/T4
可以当定时器使用,也可以当串口的波特率发生器和可编程时钟输出。
13.1 定时器的相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
TCON
定时器控制寄存器
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0000,0000
TMOD
定时器模式寄存器
89H
GATE
C/T
M1
M0
GATE
C/T
M1
M0
0000,0000
TL0
定时器 0 低 8 为寄存器
8AH
0000,0000
TL1
定时器 1 低 8 为寄存器
8BH
0000,0000
TH0
定时器 0 高 8 为寄存器
8CH
0000,0000
TH1
定时器 1 高 8 为寄存器
8DH
0000,0000
AUXR
辅助寄存器 1
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12 EXTRAM
INTCLKO
中断与时钟输出控制寄存器
8FH
-
EX4
EX3
EX2
-
T2CLKO T1CLKO
WKTCL
掉电唤醒定时器低字节
AAH
WKTCH
掉电唤醒定时器高字节
ABH
WKTEN
T4T3M
定时器 4/3 控制寄存器
D1H
T4R
T4H
定时器 4 高字节
D2H
0000,0000
T4L
定时器 4 低字节
D3H
0000,0000
T3H
定时器 3 高字节
D4H
0000,0000
T3L
定时器 3 低字节
D5H
0000,0000
T2H
定时器 2 高字节
D6H
0000,0000
深圳国芯人工智能有限公司
S1ST2
0000,0001
T0CLKO x000,x000
1111,1111
0111,1111
T4_C/T
T4x12
国内分销商电话: 0513-5501 2928/2929/2966
T4CLKO
T3R
T3_C/T
T3x12
T3CLKO 0000,0000
传真: 0513-5501 2926/2956/2947
- 338 -
STC8H 系列技术手册
T2L
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
定时器 2 低字节
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
D7H
国内分销商电话: 0513-5501 2928/2929/2966
0000,0000
传真: 0513-5501 2926/2956/2947
- 339 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.2 定时器 0/1
定时器 0/1 控制寄存器(TCON)
13.2.1
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TCON
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF1:T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件将TF1位置“1”,
并向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”(也可由查询软件清“0”)。
TR1:定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时就允许T1
开始计数,TR1=0时禁止T1计数。当GATE(TMOD.7)=1,TR1=1且INT1输入高电平时,才允
许T1计数。
TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”TF0,
向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。
TR0:定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时就允许T0
开始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=1且INT0输入高电平时,才允
许T0计数,TR0=0时禁止T0计数。
IE1:外部中断1请求源(INT1/P3.3)标志。IE1=1,外部中断向CPU请求中断,当CPU响应该中断时由
硬件清“0”IE1。
IT1:外部中断源1触发控制位。IT1=0,上升沿或下降沿均可触发外部中断1。IT1=1,外部中断1程控为
下降沿触发方式。
IE0:外部中断0请求源(INT0/P3.2)标志。IE0=1外部中断0向CPU请求中断,当CPU响应外部中断时,
由硬件清“0”IE0(边沿触发方式)。
IT0:外部中断源0触发控制位。IT0=0,上升沿或下降沿均可触发外部中断0。IT0=1,外部中断0程控为
下降沿触发方式。
定时器 0/1 模式寄存器(TMOD)
13.2.2
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TMOD
89H
T1_GATE
T1_C/T
T1_M1
T1_M0
T0_GATE
T0_C/T
T0_M1
T0_M0
T1_GATE:控制定时器1,置1时只有在INT1脚为高及TR1控制位置1时才可打开定时器/计数器1。
T0_GATE:控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才可打开定时器/计数器0。
T1_C/T:控制定时器1用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T1/P3.5外部脉冲进行计数)。
T0_C/T:控制定时器0用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T0/P3.4外部脉冲进行计数)。
T1_M1/T1_M0:定时器定时器/计数器1模式选择
T1_M1
T1_M0
0
0
定时器/计数器1工作模式
16位自动重载模式
当[TH1,TL1]中的16位计数值溢出时,系统会自动将内部16位
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 340 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
重载寄存器中的重载值装入[TH1,TL1]中。
0
1
16位不自动重载模式
当[TH1,TL1]中的16位计数值溢出时,定时器1将从0开始计数
8位自动重载模式
1
0
当TL1中的8位计数值溢出时,系统会自动将TH1中的重载值
装入TL1中。
1
1
T1停止工作
T0_M1/T0_M0:定时器定时器/计数器0模式选择
T0_M1
定时器/计数器0工作模式
T0_M0
16位自动重载模式
0
0
当[TH0,TL0]中的16位计数值溢出时,系统会自动将内部16位
重载寄存器中的重载值装入[TH0,TL0]中。
0
1
16位不自动重载模式
当[TH0,TL0]中的16位计数值溢出时,定时器0将从0开始计数
8位自动重载模式
1
0
当TL0中的8位计数值溢出时,系统会自动将TH0中的重载值
装入TL0中。
16位自动重载模式
与模式0相同,不可屏蔽中断,中断优先级最高,高于其他所
1
1
有中断的优先级,并且不可关闭,可用作操作系统的系统节拍
定时器,或者系统监控定时器。唯一可停止的方法是关闭寄存
器TCON中的TR0位,停止给定时器0供应时钟。
13.2.3
定时器 0 计数寄存器(TL0,TH0)
符号
地址
TL0
8AH
TH0
8CH
B7
B6
B5
B4
B3
B2
B1
B0
当定时器/计数器0工作在16位模式(模式0、模式1、模式3)时,TL0和TH0组合成为一个16位寄存器,
TL0为低字节,TH0为高字节。若为8位模式(模式2)时,TL0和TH0为两个独立的8位寄存器。
13.2.4
定时器 1 计数寄存器(TL1,TH1)
符号
地址
TL1
8BH
TH1
8DH
B7
B6
B5
B4
B3
B2
B1
B0
当定时器/计数器1工作在16位模式(模式0、模式1)时,TL1和TH1组合成为一个16位寄存器,TL1为低
字节,TH1为高字节。若为8位模式(模式2)时,TL1和TH1为两个独立的8位寄存器。
13.2.5
辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 341 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
T0x12:定时器0速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
T1x12:定时器1速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
13.2.6
中断与时钟输出控制寄存器(INTCLKO)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTCLKO
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
T0CLKO
T0CLKO:定时器0时钟输出控制
0:关闭时钟输出
1:使能 P3.5 口的是定时器 0 时钟输出功能
当定时器 0 计数发生溢出时,P3.5 口的电平自动发生翻转。
T1CLKO:定时器1时钟输出控制
0:关闭时钟输出
1:使能 P3.4 口的是定时器 1 时钟输出功能
当定时器 1 计数发生溢出时,P3.4 口的电平自动发生翻转。
13.2.7
定时器 0 计算公式
定时器模式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
模式0/3
(16位自动重载)
模式1
(16位不自动重载)
模式2
(8位自动重载)
深圳国芯人工智能有限公司
65536 – [TH0, TL0]
SYSclk
65536 – [TH0, TL0]
SYSclk
65536 – [TH0, TL0]
SYSclk
65536 – [TH0, TL0]
SYSclk
256 – TH0
SYSclk
256 – TH0
SYSclk
国内分销商电话: 0513-5501 2928/2929/2966
(自动重载)
×12 (自动重载)
(需软件装载)
×12 (需软件装载)
(自动重载)
×12 (自动重载)
传真: 0513-5501 2926/2956/2947
- 342 -
STC8H 系列技术手册
13.2.8
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
定时器 1 计算公式
定时器模式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
模式0
(16位自动重载)
模式1
(16位不自动重载)
模式2
(8位自动重载)
深圳国芯人工智能有限公司
65536 – [TH1, TL1]
SYSclk
65536 – [TH1, TL1]
SYSclk
65536 – [TH1, TL1]
SYSclk
65536 – [TH1, TL1]
SYSclk
256 – TH1
SYSclk
256 – TH1
SYSclk
国内分销商电话: 0513-5501 2928/2929/2966
(自动重载)
×12 (自动重载)
(需软件装载)
×12 (需软件装载)
(自动重载)
×12 (自动重载)
传真: 0513-5501 2926/2956/2947
- 343 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.3 定时器 2
13.3.1
辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
T2R:定时器2的运行控制位
0:定时器 2 停止计数
1:定时器 2 开始计数
T2_C/T:控制定时器0用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T2/P1.2外部脉冲进行计数)。
T2x12:定时器2速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
13.3.2
中断与时钟输出控制寄存器(INTCLKO)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTCLKO
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
T0CLKO
T2CLKO:定时器2时钟输出控制
0:关闭时钟输出
1:使能 P1.3 口的是定时器 2 时钟输出功能
当定时器 2 计数发生溢出时,P1.3 口的电平自动发生翻转。
13.3.3
定时器 2 计数寄存器(T2L,T2H)
符号
地址
T2L
D7H
T2H
D6H
B7
B6
B5
B4
B3
B2
B1
B0
定时器/计数器2的工作模式固定为16位重载模式,T2L和T2H组合成为一个16位寄存器,T2L为低字节,
T2H为高字节。当[T2H,T2L]中的16位计数值溢出时,系统会自动将内部16位重载寄存器中的重载
值装入[T2H,T2L]中。
13.3.4
定时器 2 计算公式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
深圳国芯人工智能有限公司
65536 – [T2H, T2L]
SYSclk
65536 – [T2H, T2L]
SYSclk
(自动重载)
×12 (自动重载)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 344 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.4 定时器 3/4
13.4.1
定时器 4/3 控制寄存器(T4T3M)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
T4T3M
D1H
T4R
T4_C/T
T4x12
T4CLKO
T3R
T3_C/T
T3x12
T3CLKO
T4R:定时器4的运行控制位
0:定时器 4 停止计数
1:定时器 4 开始计数
T4_C/T:控制定时器4用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T4/P0.6外部脉冲进行计数)。
T4x12:定时器4速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
T4CLKO:定时器4时钟输出控制
0:关闭时钟输出
1:使能 P0.7 口的是定时器 4 时钟输出功能
当定时器 4 计数发生溢出时,P0.7 口的电平自动发生翻转。
T3R:定时器3的运行控制位
0:定时器 3 停止计数
1:定时器 3 开始计数
T3_C/T:控制定时器3用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T3/P0.4外部脉冲进行计数)。
T3x12:定时器3速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
T3CLKO:定时器3时钟输出控制
0:关闭时钟输出
1:使能 P0.5 口的是定时器 3 时钟输出功能
当定时器 3 计数发生溢出时,P0.5 口的电平自动发生翻转。
13.4.2
定时器 3 计数寄存器(T3L,T3H)
符号
地址
T3L
D5H
T3H
D4H
B7
B6
B5
B4
B3
B2
B1
B0
定时器/计数器3的工作模式固定为16位重载模式,T3L和T3H组合成为一个16位寄存器,T3L为低字节,
T3H为高字节。当[T3H,T3L]中的16位计数值溢出时,系统会自动将内部16位重载寄存器中的重载
值装入[T3H,T3L]中。
13.4.3
定时器 4 计数寄存器(T4L,T4H)
符号
地址
T4L
D3H
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
B2
B1
传真: 0513-5501 2926/2956/2947
B0
- 345 -
STC8H 系列技术手册
T4H
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
D2H
定时器/计数器 4 的工作模式固定为 16 位重载模式,T4L 和 T4H 组合成为一个 16 位寄存器,T4L 为低
字节,T4H 为高字节。当[T4H,T4L]中的 16 位计数值溢出时,系统会自动将内部 16 位重载寄存器中的
重载值装入[T4H,T4L]中。
13.4.4
定时器 3 计算公式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
13.4.5
65536 – [T3H, T3L]
(自动重载)
SYSclk
65536 – [T3H, T3L]
SYSclk
×12 (自动重载)
定时器 4 计算公式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
深圳国芯人工智能有限公司
65536 – [T4H, T4L]
SYSclk
65536 – [T4H, T4L]
SYSclk
(自动重载)
×12 (自动重载)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 346 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5 范例程序
定时器 0(模式 0-16 位自动重载),用作定时
13.5.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//模式 0
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 347 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL0,#66H
TH0,#0FCH
TR0
ET0
EA
JMP
$
TM0ISR:
;测试端口
MAIN:
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
13.5.2
定时器 0(模式 1-16 位不自动重载),用作定时
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 348 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
TL0 = 0x66;
TH0 = 0xfc;
P10 = !P10;
}
//重设定时参数
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 1
//65536-11.0592M/12/1000
TMOD = 0x01;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
DATA
DATA
深圳国芯人工智能有限公司
091H
092H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 349 -
STC8H 系列技术手册
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
MOV
MOV
CPL
RETI
TL0,#66H
TH0,#0FCH
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#01H
TL0,#66H
TH0,#0FCH
TR0
ET0
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM0ISR:
;重设定时参数
;测试端口
MAIN:
;模式 1
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
13.5.3
定时器 0(模式 2-8 位自动重载)
,用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 350 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 2
//256-11.0592M/12/76K
TMOD = 0x02;
TL0 = 0xf4;
TH0 = 0xf4;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
091H
092H
093H
094H
095H
096H
0B1H
0B2H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 351 -
STC8H 系列技术手册
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#02H
TL0,#0F4H
TH0,#0F4H
TR0
ET0
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM0ISR:
;测试端口
MAIN:
;模式 2
;256-11.0592M/12/76K
;启动定时器
;使能定时器中断
END
定时器 0(模式 3-16 位自动重载不可屏蔽中断)
,用作定
13.5.4
时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
P1M1
P1M0
P0M1
深圳国芯人工智能有限公司
=
=
=
0x91;
0x92;
0x93;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 352 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
技术支持: 13922829991
研发顾问: 13922805190
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
//模式 3
//65536-11.0592M/12/1000
TMOD = 0x03;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
//不受 EA 控制
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 353 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#03H
TL0,#66H
TH0,#0FCH
TR0
ET0
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM0ISR:
;测试端口
MAIN:
;
;模式 3
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
;不受 EA 控制
END
定时器 0(外部计数-扩展T0 为外部下降沿中断)
13.5.5
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 354 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
P5M0
=
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
技术支持: 13922829991
研发顾问: 13922805190
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//外部计数模式
TMOD = 0x04;
TL0 = 0xff;
TH0 = 0xff;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
P1.0
TM0ISR:
深圳国芯人工智能有限公司
;测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 355 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RETI
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#04H
TL0,#0FFH
TH0,#0FFH
TR0
ET0
EA
JMP
$
;外部计数模式
;启动定时器
;使能定时器中断
END
定时器 0(测量脉宽-INT0 高电平宽度)
13.5.6
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void INT0_Isr() interrupt 0
{
P0 = TL0;
P1 = TH0;
深圳国芯人工智能有限公司
//TL0 为测量值低字节
//TH0 为测量值高字节
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 356 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//1T 模式
//使能 GATE,INT0 为 1 时使能计时
AUXR = 0x80;
TMOD = 0x08;
TL0 = 0x00;
TH0 = 0x00;
while (INT0);
TR0 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
//等待 INT0 为低
//启动定时器
//使能 INT0 下降沿中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8EH
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0003H
INT0ISR
ORG
0100H
MOV
MOV
RETI
P0,TL0
P1,TH0
INT0ISR:
深圳国芯人工智能有限公司
;TL0 为测量值低字节
;TH0 为测量值高字节
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 357 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
JB
SETB
SETB
SETB
SETB
AUXR,#80H
TMOD,#08H
TL0,#00H
TH0,#00H
INT0,$
TR0
IT0
EX0
EA
JMP
$
;1T 模式
;使能 GATE,INT0 为 1 时使能计时
;等待 INT0 为低
;启动定时器
;使能 INT0 下降沿中断
END
定时器 0(模式 0),时钟分频输出
13.5.7
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
INTCLKO
=
0x8f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 358 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
INTCLKO = 0x01;
//启动定时器
//使能时钟输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8FH
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
TMOD,#00H
MAIN:
深圳国芯人工智能有限公司
;模式 0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 359 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
SETB
MOV
TL0,#66H
TH0,#0FCH
TR0
INTCLKO,#01H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
定时器 1(模式 0-16 位自动重载),用作定时
13.5.8
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
深圳国芯人工智能有限公司
//模式 0
//65536-11.0592M/12/1000
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 360 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//启动定时器
//使能定时器中断
TR1 = 1;
ET1 = 1;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
ET1
EA
JMP
$
TM1ISR:
;测试端口
MAIN:
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 361 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
定时器 1(模式 1-16 位不自动重载),用作定时
13.5.9
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
TL1 = 0x66;
TH1 = 0xfc;
P10 = !P10;
}
//重设定时参数
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x10;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
//模式 1
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 362 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
MOV
MOV
CPL
RETI
TL1,#66H
TH1,#0FCH
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#10H
TL1,#66H
TH1,#0FCH
TR1
ET1
EA
JMP
$
TM1ISR:
;重设定时参数
;测试端口
MAIN:
;模式 1
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 363 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5.10 定时器 1(模式 2-8 位自动重载)
,用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x20;
TL1 = 0xf4;
TH1 = 0xf4;
TR1 = 1;
ET1 = 1;
EA = 1;
//模式 2
//256-11.0592M/12/76K
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 364 -
STC8H 系列技术手册
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#20H
TL1,#0F4H
TH1,#0F4H
TR1
ET1
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM1ISR:
;测试端口
MAIN:
;模式 2
;256-11.0592M/12/76K
;启动定时器
;使能定时器中断
END
13.5.11 定时器 1(外部计数-扩展T1 为外部下降沿中断)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 365 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//外部计数模式
TMOD = 0x40;
TL1 = 0xff;
TH1 = 0xff;
TR1 = 1;
ET1 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
091H
092H
093H
094H
095H
096H
0B1H
0B2H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 366 -
STC8H 系列技术手册
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#40H
TL1,#0FFH
TH1,#0FFH
TR1
ET1
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM1ISR:
;测试端口
MAIN:
;外部计数模式
;启动定时器
;使能定时器中断
END
13.5.12 定时器 1(测量脉宽-INT1 高电平宽度)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
深圳国芯人工智能有限公司
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 367 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
AUXR
=
0x8e;
void INT1_Isr() interrupt 2
{
P0 = TL1;
P1 = TH1;
}
技术支持: 13922829991
研发顾问: 13922805190
//TL1 为测量值低字节
//TH1 为测量值高字节
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//1T 模式
//使能 GATE,INT1 为 1 时使能计时
AUXR = 0x40;
TMOD = 0x80;
TL1 = 0x00;
TH1 = 0x00;
while (INT1);
TR1 = 1;
IT1 = 1;
EX1 = 1;
EA = 1;
//等待 INT1 为低
//启动定时器
//使能 INT1 下降沿中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
8EH
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 368 -
STC8H 系列技术手册
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0013H
INT1ISR
ORG
0100H
MOV
MOV
RETI
P0,TL1
P1,TH1
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
JB
SETB
SETB
SETB
SETB
AUXR,#40H
TMOD,#80H
TL1,#00H
TH1,#00H
INT1,$
TR1
IT1
EX1
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
INT1ISR:
;TL1 为测量值低字节
;TH1 为测量值高字节
MAIN:
;1T 模式
;使能 GATE,INT1 为 1 时使能计时
;等待 INT1 为低
;启动定时器
;使能 INT1 下降沿中断
END
13.5.13 定时器 1(模式 0),时钟分频输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
INTCLKO
=
0x8f;
sfr
sfr
sfr
P1M1
P1M0
P0M1
=
=
=
0x91;
0x92;
0x93;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 369 -
STC8H 系列技术手册
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
INTCLKO = 0x02;
//启动定时器
//使能时钟输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8FH
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
SP, #5FH
P0M0, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 370 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
MOV
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
INTCLKO,#02H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
13.5.14 定时器 1(模式 0)做串口 1 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 371 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSend(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 372 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
UartSendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSend(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
JNB
CLR
MOV
ANL
ADD
MOV
MOV
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
;16 bytes
UART_ISR:
CHKRI:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 373 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
INC
UARTISR_EXIT:
POP
POP
RETI
技术支持: 13922829991
研发顾问: 13922805190
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
;65536-11059200/115200/4=0FFE8H
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
A,RPTR
A,WPTR
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 374 -
STC8H 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
END
13.5.15 定时器 1(模式 2)做串口 1 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(256 - FOSC / 115200 / 32)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 375 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x20;
TL1 = BRT;
TH1 = BRT;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSend(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSend(buffer[rptr++]);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 376 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 377 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#20H
TL1,#0FDH
TH1,#0FDH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
技术支持: 13922829991
研发顾问: 13922805190
;256-11059200/115200/32=0FDH
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 378 -
STC8H 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
LCALL
INC
JMP
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
END
13.5.16 定时器 2(16 位自动重载),用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
sfr
#define
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM2_Isr() interrupt 12
{
P10 = !P10;
}
=
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0xef;
0x01
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 379 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T2L = 0x66;
T2H = 0xfc;
AUXR = 0x10;
IE2 = ET2;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0063H
TM2ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
TM2ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 380 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T2L,#66H
T2H,#0FCH
AUXR,#10H
IE2,#ET2
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
13.5.17 定时器 2(外部计数-扩展T2 为外部下降沿中断)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
sfr
#define
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM2_Isr() interrupt 12
{
P10 = !P10;
}
=
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0xef;
0x01
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 381 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T2L = 0xff;
T2H = 0xff;
AUXR = 0x18;
IE2 = ET2;
EA = 1;
//设置外部计数模式并启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0063H
TM2ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
TM2ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 382 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T2L,#0FFH
T2H,#0FFH
AUXR,#18H
IE2,#ET2
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;设置外部计数模式并启动定时器
;使能定时器中断
END
13.5.18 定时器 2,时钟分频输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
T2L
T2H
AUXR
INTCLKO
=
=
=
=
0xd7;
0xd6;
0x8e;
0x8f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 383 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T2L = 0x66;
T2H = 0xfc;
AUXR = 0x10;
INTCLKO = 0x04;
//65536-11.0592M/12/1000
//启动定时器
//使能时钟输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
INTCLKO
DATA
DATA
DATA
DATA
0D7H
0D6H
8EH
8FH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
T2L,#66H
T2H,#0FCH
AUXR,#10H
INTCLKO,#04H
MAIN:
深圳国芯人工智能有限公司
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 384 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JMP
技术支持: 13922829991
研发顾问: 13922805190
$
END
13.5.19 定时器 2 做串口 1 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
AUXR
T2H
T2L
=
=
=
0x8e;
0xd6;
0xd7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 385 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
SCON = 0x50;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x15;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSend(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSend(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
深圳国芯人工智能有限公司
8EH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 386 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
T2H
T2L
DATA
DATA
0D6H
0D7H
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
研发顾问: 13922805190
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
深圳国芯人工智能有限公司
SCON,#50H
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
BUSY
WPTR,#00H
RPTR,#00H
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 387 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
UART_SEND:
JB
SETB
MOV
RET
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
BUSY,$
BUSY
SBUF,A
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 388 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5.20 定时器 2 做串口 2 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S2CON
S2BUF
IE2
=
=
=
=
=
=
0x8e;
0xd6;
0xd7;
0x9a;
0x9b;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void Uart2Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
busy = 0;
}
if (S2CON & 0x01)
{
S2CON &= ~0x01;
buffer[wptr++] = S2BUF;
wptr &= 0x0f;
}
}
void Uart2Init()
{
S2CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 389 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart2Send(char dat)
{
while (busy);
busy = 1;
S2BUF = dat;
}
void Uart2SendStr(char *p)
{
while (*p)
{
Uart2Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart2Init();
IE2 = 0x01;
EA = 1;
Uart2SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart2Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S2CON
S2BUF
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
8EH
0D6H
0D7H
9AH
9BH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 390 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
IE2
DATA
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0043H
UART2_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S2CON
ACC.1,CHKRI
S2CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
;16 bytes
UART2_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART2ISR_EXIT:
POP
POP
RETI
ACC.0,UART2ISR_EXIT
S2CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S2BUF
WPTR
PSW
ACC
UART2_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
深圳国芯人工智能有限公司
S2CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 391 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
UART2_SEND:
JB
SETB
MOV
RET
UART2_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND2END:
RET
BUSY,$
BUSY
S2BUF,A
A
A,@A+DPTR
SEND2END
UART2_SEND
DPTR
UART2_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART2_INIT
IE2,#01H
EA
MOV
LCALL
DPTR,#STRING
UART2_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART2_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 392 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5.21 定时器 2 做串口 3 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S3CON
S3BUF
IE2
=
=
=
=
=
=
0x8e;
0xd6;
0xd7;
0xac;
0xad;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void Uart3Isr() interrupt 17
{
if (S3CON & 0x02)
{
S3CON &= ~0x02;
busy = 0;
}
if (S3CON & 0x01)
{
S3CON &= ~0x01;
buffer[wptr++] = S3BUF;
wptr &= 0x0f;
}
}
void Uart3Init()
{
S3CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 393 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart3Send(char dat)
{
while (busy);
busy = 1;
S3BUF = dat;
}
void Uart3SendStr(char *p)
{
while (*p)
{
Uart3Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart3Init();
IE2 = 0x08;
EA = 1;
Uart3SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart3Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S3CON
S3BUF
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
8EH
0D6H
0D7H
0ACH
0ADH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 394 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
IE2
DATA
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
008BH
UART3_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S3CON
ACC.1,CHKRI
S3CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
;16 bytes
UART3_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART3ISR_EXIT:
POP
POP
RETI
ACC.0,UART3ISR_EXIT
S3CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S3BUF
WPTR
PSW
ACC
UART3_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
深圳国芯人工智能有限公司
S3CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 395 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
UART3_SEND:
JB
SETB
MOV
RET
UART3_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND3END:
RET
BUSY,$
BUSY
S3BUF,A
A
A,@A+DPTR
SEND3END
UART3_SEND
DPTR
UART3_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART3_INIT
IE2,#08H
EA
MOV
LCALL
DPTR,#STRING
UART3_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART3_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 396 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5.22 定时器 2 做串口 4 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S4CON
S4BUF
IE2
=
=
=
=
=
=
0x8e;
0xd6;
0xd7;
0x84;
0x85;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void Uart4Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02;
busy = 0;
}
if (S4CON & 0x01)
{
S4CON &= ~0x01;
buffer[wptr++] = S4BUF;
wptr &= 0x0f;
}
}
void Uart4Init()
{
S4CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 397 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart4Send(char dat)
{
while (busy);
busy = 1;
S4BUF = dat;
}
void Uart4SendStr(char *p)
{
while (*p)
{
Uart4Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart4Init();
IE2 = 0x10;
EA = 1;
Uart4SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart4Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S4CON
S4BUF
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
8EH
0D6H
0D7H
84H
85H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 398 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
IE2
DATA
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0093H
UART4_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S4CON
ACC.1,CHKRI
S4CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
;16 bytes
UART4_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART4ISR_EXIT:
POP
POP
RETI
ACC.0,UART4ISR_EXIT
S4CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S4BUF
WPTR
PSW
ACC
UART4_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
深圳国芯人工智能有限公司
S4CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 399 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
UART4_SEND:
JB
SETB
MOV
RET
UART4_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND4END:
RET
BUSY,$
BUSY
S4BUF,A
A
A,@A+DPTR
SEND4END
UART4_SEND
DPTR
UART4_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART4_INIT
IE2,#10H
EA
MOV
LCALL
DPTR,#STRING
UART4_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART4_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 400 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5.23 定时器 3(16 位自动重载),用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
#define
#define
#define
sfr
#define
#define
#define
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
=
=
=
=
=
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM3_Isr() interrupt 19
{
P10 = !P10;
}
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 401 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P5M0 = 0x00;
P5M1 = 0x00;
T3L = 0x66;
T3H = 0xfc;
T4T3M = 0x08;
IE2 = ET3;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
EQU
EQU
EQU
DATA
EQU
EQU
EQU
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
8EH
0AFH
04H
20H
40H
0EFH
01H
02H
04H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
009BH
TM3ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
SP, #5FH
P0M0, #00H
TM3ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 402 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T3L,#66H
T3H,#0FCH
T4T3M,#08H
IE2,#ET3
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
13.5.24 定时器 3(外部计数-扩展T3 为外部下降沿中断)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
#define
#define
#define
sfr
#define
#define
#define
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
=
=
=
=
=
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
=
=
=
=
=
=
=
=
深圳国芯人工智能有限公司
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 403 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
P4M1
P4M0
P5M1
P5M0
=
=
=
=
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM3_Isr() interrupt 19
{
P10 = !P10;
}
技术支持: 13922829991
研发顾问: 13922805190
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T3L = 0x66;
T3H = 0xfc;
T4T3M = 0x0c;
IE2 = ET3;
EA = 1;
//65536-11.0592M/12/1000
//设置外部计数模式并启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
DATA
T4L
DATA
T4H
DATA
T3L
DATA
T3H
DATA
T2L
DATA
T2H
DATA
AUXR
DATA
IE2
DATA
ET2
EQU
ET3
EQU
ET4
EQU
AUXINTIF
DATA
T2IF
EQU
T3IF
EQU
T4IF
EQU
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
8EH
0AFH
04H
20H
40H
0EFH
01H
02H
04H
P1M1
P1M0
P0M1
091H
092H
093H
DATA
DATA
DATA
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 404 -
STC8H 系列技术手册
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
009BH
TM3ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T3L,#66H
T3H,#0FCH
T4T3M,#0CH
IE2,#ET3
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM3ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;设置外部计数模式并启动定时器
;使能定时器中断
END
13.5.25 定时器 3,时钟分频输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
T4T3M
T4L
深圳国芯人工智能有限公司
=
=
0xd1;
0xd3;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 405 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
T4H
T3L
T3H
T2L
T2H
=
=
=
=
=
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T3L = 0x66;
T3H = 0xfc;
T4T3M = 0x09;
//65536-11.0592M/12/1000
//使能时钟输出并启动定时器
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 406 -
STC8H 系列技术手册
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
T3L,#66H
T3H,#0FCH
T4T3M,#09H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;65536-11.0592M/12/1000
;使能时钟输出并启动定时器
END
13.5.26 定时器 3 做串口 3 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S3CON
S3BUF
IE2
=
=
=
=
=
=
=
=
=
=
深圳国芯人工智能有限公司
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0xac;
0xad;
0xaf;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 407 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
=
=
=
=
=
=
=
=
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void Uart3Isr() interrupt 17
{
if (S3CON & 0x02)
{
S3CON &= ~0x02;
busy = 0;
}
if (S3CON & 0x01)
{
S3CON &= ~0x01;
buffer[wptr++] = S3BUF;
wptr &= 0x0f;
}
}
void Uart3Init()
{
S3CON = 0x50;
T3L = BRT;
T3H = BRT >> 8;
T4T3M = 0x0a;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart3Send(char dat)
{
while (busy);
busy = 1;
S3BUF = dat;
}
void Uart3SendStr(char *p)
{
while (*p)
{
Uart3Send(*p++);
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 408 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart3Init();
IE2 = 0x08;
EA = 1;
Uart3SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart3Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S3CON
S3BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
0ACH
0ADH
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 409 -
STC8H 系列技术手册
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
008BH
UART3_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S3CON
ACC.1,CHKRI
S3CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART3_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART3ISR_EXIT:
POP
POP
RETI
ACC.0,UART3ISR_EXIT
S3CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S3BUF
WPTR
PSW
ACC
UART3_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S3CON,#50H
T3L,#0E8H
T3H,#0FFH
T4T3M,#0AH
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S3BUF,A
;65536-11059200/115200/4=0FFE8H
UART3_SEND:
UART3_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND3END:
深圳国芯人工智能有限公司
A
A,@A+DPTR
SEND3END
UART3_SEND
DPTR
UART3_SENDSTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 410 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RET
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART3_INIT
IE2,#08H
EA
MOV
LCALL
DPTR,#STRING
UART3_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART3_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
13.5.27 定时器 4(16 位自动重载),用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
T4T3M
T4L
T4H
T3L
T3H
深圳国芯人工智能有限公司
=
=
=
=
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 411 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
#define
#define
#define
sfr
#define
#define
#define
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
=
void TM4_Isr() interrupt 20
{
P10 = !P10;
}
技术支持: 13922829991
研发顾问: 13922805190
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0x80;
IE2 = ET4;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 412 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
EQU
EQU
EQU
DATA
EQU
EQU
EQU
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
8EH
0AFH
04H
20H
40H
0EFH
01H
02H
04H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00A3H
TM4ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
T4L,#66H
T4H,#0FCH
T4T3M,#80H
技术支持: 13922829991
研发顾问: 13922805190
TM4ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
;65536-11.0592M/12/1000
;启动定时器
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 413 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
SETB
IE2,#ET4
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能定时器中断
END
13.5.28 定时器 4(外部计数-扩展T4 为外部下降沿中断)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
#define
#define
#define
sfr
#define
#define
#define
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
=
=
=
=
=
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM4_Isr() interrupt 20
{
P10 = !P10;
}
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
//测试端口
void main()
{
P0M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 414 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0xc0;
IE2 = ET4;
EA = 1;
//65536-11.0592M/12/1000
//设置外部计数模式并启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
T4IF
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
EQU
EQU
EQU
DATA
EQU
EQU
EQU
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
8EH
0AFH
04H
20H
40H
0EFH
01H
02H
04H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00A3H
TM4ISR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 415 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T4L,#66H
T4H,#0FCH
T4T3M,#0C0H
IE2,#ET4
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM4ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;设置外部计数模式并启动定时器
;使能定时器中断
END
13.5.29 定时器 4,时钟分频输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
=
=
=
=
=
=
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 416 -
STC8H 系列技术手册
sfr
sfr
sfr
sfr
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
P4M1
P4M0
P5M1
P5M0
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P3M1 = 0x00;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0x90;
//65536-11.0592M/12/1000
//使能时钟输出并启动定时器
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
SP, #5FH
P0M0, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 417 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
T4L,#66H
T4H,#0FCH
T4T3M,#90H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11.0592M/12/1000
;使能时钟输出并启动定时器
END
13.5.30 定时器 4 做串口 4 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S4CON
S4BUF
IE2
=
=
=
=
=
=
=
=
=
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x84;
0x85;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 418 -
STC8H 系列技术手册
bit
char
char
char
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
busy;
wptr;
rptr;
buffer[16];
void Uart4Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02;
busy = 0;
}
if (S4CON & 0x01)
{
S4CON &= ~0x01;
buffer[wptr++] = S4BUF;
wptr &= 0x0f;
}
}
void Uart4Init()
{
S4CON = 0x50;
T4L = BRT;
T4H = BRT >> 8;
T4T3M = 0xa0;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart4Send(char dat)
{
while (busy);
busy = 1;
S4BUF = dat;
}
void Uart4SendStr(char *p)
{
while (*p)
{
Uart4Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 419 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P5M1 = 0x00;
Uart4Init();
IE2 = 0x10;
EA = 1;
Uart4SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart4Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S4CON
S4BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
84H
85H
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0093H
UART4_ISR
ORG
0100H
PUSH
ACC
;16 bytes
UART4_ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 420 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
PUSH
MOV
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S4CON
ACC.1,CHKRI
S4CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART4ISR_EXIT:
POP
POP
RETI
ACC.0,UART4ISR_EXIT
S4CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S4BUF
WPTR
PSW
ACC
UART4_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S4CON,#50H
T4L,#0E8H
T4H,#0FFH
T4T3M,#0A0H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S4BUF,A
;65536-11059200/115200/4=0FFE8H
UART4_SEND:
UART4_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND4END:
RET
A
A,@A+DPTR
SEND4END
UART4_SEND
DPTR
UART4_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
深圳国芯人工智能有限公司
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 421 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART4_INIT
IE2,#10H
EA
MOV
LCALL
DPTR,#STRING
UART4_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART4_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 422 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14 串口通信
STC8H 系列单片机具有 4 个全双工异步串行通信接口。每个串行口由 2 个数据缓冲器、一个移位
寄存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由 2 个互相独立的
接收、发送缓冲器构成,可以同时发送和接收数据。
STC8 系列单片机的串口 1 有 4 种工作方式,其中两种方式的波特率是可变的,另两种是固定的,
以供不同应用场合选用。串口 2/串口 3/串口 4 都只有两种工作方式,这两种方式的波特率都是可变的。
用户可用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行
程序处理,使用十分灵活。
串口 1、串口 2、串口 3、串口 4 的通讯口均可以通过功能管脚的切换功能切换到多组端口,从而
可以将一个通讯口分时复用为多个通讯口。
14.1 串口相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
SCON
串口 1 控制寄存器
98H
SBUF
串口 1 数据寄存器
99H
S2CON
串口 2 控制寄存器
9AH
S2BUF
串口 2 数据寄存器
9BH
S3CON
串口 3 控制寄存器
ACH
S3BUF
串口 3 数据寄存器
ADH
S4CON
串口 4 控制寄存器
84H
S4BUF
串口 4 数据寄存器
85H
PCON
电源控制寄存器
87H
SMOD
SMOD0
LVDF
POF
GF1
AUXR
辅助寄存器 1
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
SADDR
串口 1 从机地址寄存器
A9H
0000,0000
SADEN
串口 1 从机地址屏蔽寄存器
B9H
0000,0000
深圳国芯人工智能有限公司
0000,0000
0000,0000
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
0100,0000
0000,0000
S3SM0
S3ST3
S3SM2
S3REN
S3TB8
S3RB8
S3TI
S3RI
0000,0000
0000,0000
S4SM0
S4ST4
S4SM2
S4REN
S4TB8
S4RB8
S4TI
S4RI
0000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
GF0
PD
T2x12 EXTRAM
IDL
0011,0000
S1ST2
0000,0001
传真: 0513-5501 2926/2956/2947
- 423 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.2 串口 1
14.2.1 串口 1 控制寄存器(SCON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SCON
98H
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
SM0/FE:当PCON寄存器中的SMOD0位为1时,该位为帧错误检测标志位。当UART在接收过程中检测
到一个无效停止位时,通过UART接收器将该位置1,必须由软件清零。当PCON寄存器中的SMOD0
位为0时,该位和SM1一起指定串口1的通信工作模式,如下表所示:
SM0
SM1
串口1工作模式
功能说明
0
0
模式0
同步移位串行方式
0
1
模式1
可变波特率8位数据方式
1
0
模式2
固定波特率9位数据方式
1
1
模式3
可变波特率9位数据方式
SM2:允许模式 2 或模式 3 多机通信控制位。当串口 1 使用模式 2 或模式 3 时,如果 SM2 位为 1 且 REN
位为 1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 RB8)来筛选地址帧,
若 RB8=1,说明该帧是地址帧,地址信息可以进入 SBUF,并使 RI 为 1,进而在中断服务程序
中再进行地址号比较;若 RB8=0,说明该帧不是地址帧,应丢掉且保持 RI=0。在模式 2 或模式
3 中,如果 SM2 位为 0 且 REN 位为 1,接收收机处于地址帧筛选被禁止状态,不论收到的 RB8
为 0 或 1,均可使接收到的信息进入 SBUF,并使 RI=1,此时 RB8 通常为校验位。模式 1 和模
式 0 为非多机通信方式,在这两种方式时,SM2 应设置为 0。
REN:允许/禁止串口接收控制位
0:禁止串口接收数据
1:允许串口接收数据
TB8:当串口 1 使用模式 2 或模式 3 时,TB8 为要发送的第 9 位数据,按需要由软件置位或清 0。在模
式 0 和模式 1 中,该位不用。
RB8:当串口 1 使用模式 2 或模式 3 时,RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数
据帧标志位。在模式 0 和模式 1 中,该位不用。
TI:串口 1 发送中断请求标志位。在模式 0 中,当串口发送数据第 8 位结束时,由硬件自动将 TI 置 1,
向主机请求中断,响应中断后 TI 必须用软件清零。在其他模式中,则在停止位开始发送时由硬
件自动将 TI 置 1,向 CPU 发请求中断,响应中断后 TI 必须用软件清零。
RI:串口 1 接收中断请求标志位。在模式 0 中,当串口接收第 8 位数据结束时,由硬件自动将 RI 置 1,
向主机请求中断,响应中断后 RI 必须用软件清零。在其他模式中,串行接收到停止位的中间时
刻由硬件自动将 RI 置 1,向 CPU 发中断申请,响应中断后 RI 必须由软件清零。
14.2.2 串口 1 数据寄存器(SBUF)
符号
地址
SBUF
99H
B7
B6
B5
B4
B3
B2
B1
B0
SBUF:串口 1 数据接收/发送缓冲区。SBUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分别
对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对 SBUF
进行读操作,实际是读取串口接收缓冲区,对 SBUF 进行写操作则是触发串口开始发送数据。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 424 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.2.3 电源管理寄存器(PCON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PCON
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
SMOD:串口 1 波特率控制位
0:串口 1 的各个模式的波特率都不加倍
1:串口 1 模式 1、模式 2、模式 3 的波特率加倍
SMOD0:帧错误检测控制位
0:无帧错检测功能
1:使能帧错误检测功能。此时 SCON 的 SM0/FE 为 FE 功能,即为帧错误检测标志位。
14.2.4 辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
UART_M0x6:串口 1 模式 0 的通讯速度控制
0:串口 1 模式 0 的波特率不加倍,固定为 Fosc/12
1:串口 1 模式 0 的波特率 6 倍速,即固定为 Fosc/12*6 = Fosc/2
S1ST2:串口 1 波特率发射器选择位
0:选择定时器 1 作为波特率发射器
1:选择定时器 2 作为波特率发射器
14.2.5
串口 1 模式 0,模式 0 波特率计算公式
当串口 1 选择工作模式为模式 0 时,串行通信接口工作在同步移位寄存器模式,当串行口模式 0
的通信速度设置位 UART_M0x6 为 0 时,其波特率固定为系统时钟时钟的 12 分频(SYSclk/12);当设
置 UART_M0x6 为 1 时,其波特率固定为系统时钟频率的 2 分频(SYSclk/2)。RxD 为串行通讯的数据
口,TxD 为同步移位脉冲输出脚,发送、接收的是 8 位数据,低位在先。
模式 0 的发送过程:当主机执行将数据写入发送缓冲器 SBUF 指令时启动发送,串行口即将 8 位数
据以 SYSclk/12 或 SYSclk/2(由 UART_M0x6 确定是 12 分频还是 2 分频)的波特率从 RxD 管脚输出(从
低位到高位),发送完中断标志 TI 置 1,TxD 管脚输出同步移位脉冲信号。当写信号有效后,相隔一个
时钟,发送控制端 SEND 有效(高电平),允许 RxD 发送数据,同时允许 TxD 输出同步移位脉冲。一帧
(8 位)数据发送完毕时,各控制端均恢复原状态,只有 TI 保持高电平,呈中断申请状态。在再次发送数
据前,必须用软件将 TI 清 0。
模式 0 的接收过程:首先将接收中断请求标志 RI 清零并置位允许接收控制位 REN 时启动模式 0
接收过程。启动接收过程后,RxD 为串行数据输入端,TxD 为同步脉冲输出端。串行接收的波特率为
SYSclk/12 或 SYSclk/2(由 UART_M0x6 确定是 12 分频还是 2 分频)。当接收完成一帧数据(8 位)后,
控制信号复位,中断标志 RI 被置 1,呈中断申请状态。当再次接收时,必须通过软件将 RI 清 0
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 425 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
写SBUF
TxD
RxD
D0
D1
D2
D3
D4
D5
D6
D7
D6
D7
TI
RI
发送数据(串口1模式0)
写SCON
REN=1, RI=0
TxD
RxD
D0
D1
D2
D3
D4
D5
TI
RI
接收数据(串口1模式0)
工作于模式 0 时,必须清 0 多机通信控制位 SM2,使之不影响 TB8 位和 RB8 位。由于波特率固定
为 SYSclk/12 或 SYSclk/2,无需定时器提供,直接由单片机的时钟作为同步移位脉冲。
串口 1 模式 0 的波特率计算公式如下表所示(SYSclk 为系统工作频率):
UART_M0x6
波特率计算公式
0
波特率 =
1
波特率 =
14.2.6
SYSclk
12
SYSclk
2
串口 1 模式 1,模式 1 波特率计算公式
当软件设置 SCON 的 SM0、SM1 为“01”时,串行口 1 则以模式 1 进行工作。此模式为 8 位 UART
格式,一帧信息为 10 位:1 位起始位,8 位数据位(低位在先)和 1 位停止位。波特率可变,即可根据
需要进行设置波特率。TxD 为数据发送口,RxD 为数据接收口,串行口全双工接受/发送。
模式 1 的发送过程:串行通信模式发送时,数据由串行发送端 TxD 输出。当主机执行一条写 SBUF
的指令就启动串行通信的发送,写“SBUF”信号还把“1”装入发送移位寄存器的第 9 位,并通知 TX
控制单元开始发送。移位寄存器将数据不断右移送 TxD 端口发送,在数据的左边不断移入“0”作补充。
当数据的最高位移到移位寄存器的输出位置,紧跟其后的是第 9 位“1”,在它的左边各位全为“0”,这
个状态条件,使 TX 控制单元作最后一次移位输出,然后使允许发送信号“SEND”失效,完成一帧信
息的发送,并置位中断请求位 TI,即 TI=1,向主机请求中断处理。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 426 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
模式 1 的接收过程:当软件置位接收允许标志位 REN,即 REN=1 时,接收器便对 RxD 端口的信
号进行检测,当检测到 RxD 端口发送从“1”→“0”的下降沿跳变时就启动接收器准备接收数据,并
立即复位波特率发生器的接收计数器,将 1FFH 装入移位寄存器。接收的数据从接收移位寄存器的右边
移入,已装入的 1FFH 向左边移出,当起始位"0"移到移位寄存器的最左边时,使 RX 控制器作最后一次
移位,完成一帧的接收。若同时满足以下两个条件:
·RI=0;
·SM2=0 或接收到的停止位为 1。
则接收到的数据有效,实现装载入 SBUF,停止位进入 RB8,RI 标志位被置 1,向主机请求中断,
若上述两条件不能同时满足,则接收到的数据作废并丢失,无论条件满足与否,接收器重又检测 RxD
端口上的"1"→"0"的跳变,继续下一帧的接收。接收有效,在响应中断后,RI 标志位必须由软件清 0。
通常情况下,串行通信工作于模式 1 时,SM2 设置为"0"。
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
TI
发送数据(串口1模式1)
写SCON
RxD
REN=1, RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
RI
接收数据(串口1模式1)
串口 1 的波特率是可变的,其波特率可由定时器 1 或者定时器 2 产生。当定时器采用 1T 模式时(12
倍速),相应的波特率的速度也会相应提高 12 倍。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 427 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口 1 模式 1 的波特率计算公式如下表所示:(SYSclk 为系统工作频率)
选择定时器
定时器速
波特率计算公式
度
1T
定时器2重载值 = 65536 -
12T
定时器2重载值 = 65536 -
1T
定时器1重载值 = 65536 -
12T
定时器1重载值 = 65536 -
1T
定时器1重载值 = 256 -
12T
定时器1重载值 = 256 -
SYSclk
4×波特率
定时器2
SYSclk
12×4×波特率
SYSclk
4×波特率
定时器1模式0
SYSclk
12×4×波特率
2SMOD×SYSclk
32×波特率
定时器1模式2
2SMOD×SYSclk
12×32×波特率
下面为常用频率与常用波特率所对应定时器的重载值
频率
(MHz)
11.0592
18.432
22.1184
定时器 2
波特率
定时器 1 模式 0
1T 模式
12T 模式
1T 模式
12T 模式
115200
FFE8H
FFFEH
FFE8H
57600
FFD0H
FFFCH
38400
FFB8H
19200
定时器 1 模式 2
SMOD=1
SMOD=0
1T 模式
12T 模式
1T 模式
12T 模式
FFFEH
FAH
-
FDH
-
FFD0H
FFFCH
F4H
FFH
FAH
-
FFFAH
FFB8H
FFFAH
EEH
-
F7H
-
FF70H
FFF4H
FF70H
FFF4H
DCH
FDH
EEH
-
9600
FEE0H
FFE8H
FEE0H
FFE8H
B8H
FAH
DCH
FDH
115200
FFD8H
-
FFD8H
-
F6H
-
FBH
-
57600
FFB0H
-
FFB0H
-
ECH
-
F6H
-
38400
FF88H
FFF6H
FF88H
FFF6H
E2H
-
F1H
-
19200
FF10H
FFECH
FF10H
FFECH
C4H
FBH
E2H
-
9600
FE20H
FFD8H
FE20H
FFD8H
88H
F6H
C4H
FBH
115200
FFD0H
FFFCH
FFD0H
FFFCH
F4H
FFH
FAH
-
57600
FFA0H
FFF8H
FFA0H
FFF8H
E8H
FEH
F4H
FFH
38400
FF70H
FFF4H
FF70H
FFF4H
DCH
FDH
EEH
-
19200
FEE0H
FFE8H
FEE0H
FFE8H
B8H
FAH
DCH
FDH
9600
FDC0H
FFD0H
FDC0H
FFD0H
70H
F4H
B8H
FAH
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 428 -
STC8H 系列技术手册
14.2.7
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口 1 模式 2,模式 2 波特率计算公式
当 SM0、SM1 两位为 10 时,串行口 1 工作在模式 2。串行口 1 工作模式 2 为 9 位数据异步通信
UART 模式,其一帧的信息由 11 位组成:1 位起始位,8 位数据位(低位在先),1 位可编程位(第 9
位数据)和 1 位停止位。发送时可编程位(第 9 位数据)由 SCON 中的 TB8 提供,可软件设置为 1 或
0,或者可将 PSW 中的奇/偶校验位 P 值装入 TB8(TB8 既可作为多机通信中的地址数据标志位,又可
作为数据的奇偶校验位)
。接收时第 9 位数据装入 SCON 的 RB8。TxD 为发送端口,RxD 为接收端口,
以全双工模式进行接收/发送。
模式 2 的波特率固定为系统时钟的 64 分频或 32 分频(取决于 PCON 中 SMOD 的值)
串口 1 模式 2 的波特率计算公式如下表所示(SYSclk 为系统工作频率):
SMOD
波特率计算公式
0
波特率 =
1
波特率 =
SYSclk
64
SYSclk
32
模式 2 和模式 1 相比,除波特率发生源略有不同,发送时由 TB8 提供给移位寄存器第 9 数据位不
同外,其余功能结构均基本相同,其接收/发送操作过程及时序也基本相同。
当接收器接收完一帧信息后必须同时满足下列条件:
·RI=0
·SM2=0 或者 SM2=1 且接收到的第 9 数据位 RB8=1。
当上述两条件同时满足时,才将接收到的移位寄存器的数据装入 SBUF 和 RB8 中,RI 标志位被置
1,并向主机请求中断处理。如果上述条件有一个不满足,则刚接收到移位寄存器中的数据无效而丢失,
也不置位 RI。无论上述条件满足与否,接收器又重新开始检测 RxD 输入端口的跳变信息,接收下一帧
的输入信息。在模式 2 中,接收到的停止位与 SBUF、RB8 和 RI 无关。
通过软件对 SCON 中的 SM2、TB8 的设置以及通信 Ð 议的约定,为多机通信提供了方便。
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D6
D7
RB8
Stop
TI
发送数据(串口1模式2)
写SCON
RxD
REN=1,RI=0
Start
D0
D1
D2
D3
D4
D5
RI
接收数据(串口1模式2)
14.2.8
串口 1 模式 3,模式 3 波特率计算公式
当 SM0、SM1 两位为 11 时,串行口 1 工作在模式 3。串行通信模式 3 为 9 位数据异步通信 UART
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 429 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
模式,其一帧的信息由 11 位组成:1 位起始位,8 位数据位(低位在先),1 位可编程位(第 9 位数据)
和 1 位停止位。发送时可编程位(第 9 位数据)由 SCON 中的 TB8 提供,可软件设置为 1 或 0,或者
可将 PSW 中的奇/偶校验位 P 值装入 TB8(TB8 既可作为多机通信中的地址数据标志位,又可作为数据
的奇偶校验位)。接收时第 9 位数据装入 SCON 的 RB8。TxD 为发送端口,RxD 为接收端口,以全双工
模式进行接收/发送。
模式 3 和模式 1 相比,除发送时由 TB8 提供给移位寄存器第 9 数据位不同外,其余功能结构均基
本相同,其接收‘发送操作过程及时序也基本相同。
当接收器接收完一帧信息后必须同时满足下列条件:
·RI=0
·SM2=0 或者 SM2=1 且接收到的第 9 数据位 RB8=1。
当上述两条件同时满足时,才将接收到的移位寄存器的数据装入 SBUF 和 RB8 中,RI 标志位被置
1,并向主机请求中断处理。如果上述条件有一个不满足,则刚接收到移位寄存器中的数据无效而丢失,
也不置位 RI。无论上述条件满足与否,接收器又重新开始检测 RxD 输入端口的跳变信息,接收下一帧
的输入信息。在模式 3 中,接收到的停止位与 SBUF、RB8 和 RI 无关。
通过软件对 SCON 中的 SM2、TB8 的设置以及通信协议的约定,为多机通信提供了方便。
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D6
D7
RB8
Stop
TI
发送数据(串口1模式3)
写SCON
RxD
REN=1,RI=0
Start
D0
D1
D2
D3
D4
D5
RI
接收数据(串口1模式3)
串口 1 模式 3 的波特率计算公式与模式 1 是完全相同的。请参考模式 1 的波特率计算公式。
14.2.9
自动地址识别
14.2.10串口 1 从机地址控制寄存器(SADDR,SADEN)
符号
地址
SADDR
A9H
SADEN
B9H
B7
B6
B5
B4
B3
B2
B1
B0
SADDR:从机地址寄存器
SADEN:从机地址屏蔽位寄存器
自动地址识别功能典型应用在多机通讯领域,其主要原理是从机系统通过硬件比较功能来识别来自
于主机串口数据流中的地址信息,通过寄存器 SADDR 和 SADEN 设置的本机的从机地址,硬件自动对
从机地址进行过滤,当来自于主机的从机地址信息与本机所设置的从机地址相匹配时,硬件产生串口中
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 430 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
断;否则硬件自动丢弃串口数据,而不产生中断。当众多处于空闲模式的从机链接在一起时,只有从机
地址相匹配的从机才会从空闲模式唤醒,从而可以大大降低从机 MCU 的功耗,即使从机处于正常工作
状态也可避免不停地进入串口中断而降低系统执行效率。
要使用串口的自动地址识别功能,首先需要将参与通讯的 MCU 的串口通讯模式设置为模式 2 或者
模式 3(通常都选择波特率可变的模式 3,因为模式 2 的波特率是固定的,不便于调节),并开启从机的
SCON 的 SM2 位。对于串口模式 2 或者模式 3 的 9 位数据位中,第 9 位数据(存放在 RB8 中)为地址
/数据的标志位,当第 9 位数据为 1 时,表示前面的 8 位数据(存放在 SBUF 中)为地址信息。当 SM2
被设置为 1 时,从机 MCU 会自动过滤掉非地址数据(第 9 位为 0 的数据),而对 SBUF 中的地址数据
(第 9 位为 1 的数据)自动与 SADDR 和 SADEN 所设置的本机地址进行比较,若地址相匹配,则会将
RI 置“1”,并产生中断,否则不予处理本次接收的串口数据。
从机地址的设置是通过 SADDR 和 SADEN 两个寄存器进行设置的。SADDR 为从机地址寄存器,
里面存放本机的从机地址。SADEN 为从机地址屏蔽位寄存器,用于设置地址信息中的忽略位,设置方
法如下:
例如
11001010
SADDR =
SADEN =
10000001
则匹配地址为 1xxxxxx0
即,只要主机送出的地址数据中的 bit0 为 0 且 bit7 为 1 就可以和本机地址相匹配
再例如
11001010
SADDR =
00001111
SADEN =
则匹配地址为 xxxx1010
即,只要主机送出的地址数据中的低 4 位为 1010 就可以和本机地址相匹配,而高 4 为被忽略,可
以为任意值。
主机可以使用广播地址(FFH)同时选中所有的从机来进行通讯。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 431 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.3 串口 2
14.3.1 串口 2 控制寄存器(S2CON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
S2CON
9AH
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
S2SM0:指定串口2的通信工作模式,如下表所示:
S2SM0
串口2工作模式
功能说明
0
模式0
可变波特率8位数据方式
1
模式1
可变波特率9位数据方式
S2SM2:允许串口 2 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S2SM2 位为 1 且 S2REN 位为
1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S2RB8)来筛选地址帧:
若 S2RB8=1,说明该帧是地址帧,地址信息可以进入 S2BUF,并使 S2RI 为 1,进而在中断服务
程序中再进行地址号比较;若 S2RB8=0,说明该帧不是地址帧,应丢掉且保持 S2RI=0。在模式
1 中,如果 S2SM2 位为 0 且 S2REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的
S2RB8 为 0 或 1,均可使接收到的信息进入 S2BUF,并使 S2RI=1,此时 S2RB8 通常为校验位。
模式 0 为非多机通信方式,在这种方式时,要设置 S2SM2 应为 0。
S2REN:允许/禁止串口接收控制位
0:禁止串口接收数据
1:允许串口接收数据
S2TB8:当串口 2 使用模式 1 时,S2TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧
标志位,按需要由软件置位或清 0。在模式 0 中,该位不用。
S2RB8:当串口 2 使用模式 1 时,S2RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧
标志位。在模式 0 中,该位不用。
S2TI:串口 2 发送中断请求标志位。在停止位开始发送时由硬件自动将 S2TI 置 1,向 CPU 发请求中断,
响应中断后 S2TI 必须用软件清零。
S2RI:串口 2 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S2RI 置 1,向 CPU 发
中断申请,响应中断后 S2RI 必须由软件清零。
14.3.2 串口 2 数据寄存器(S2BUF)
符号
地址
S2BUF
9BH
B7
B6
B5
B4
B3
B2
B1
B0
S2BUF:串口 1 数据接收/发送缓冲区。S2BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S2BUF 进行读操作,实际是读取串口接收缓冲区,对 S2BUF 进行写操作则是触发串口开始发送
数据。
14.3.3
串口 2 模式 0,模式 0 波特率计算公式
串行口 2 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始
位,8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD2 为数据
发送口,RxD2 为数据接收口,串行口全双工接受/发送。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 432 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
写S2BUF
TxD2
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
S2TI
发送数据(串口2模式0)
写S2CON
S2REN=1, S2RI=0
RxD2
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
S2RI
接收数据(串口2模式0)
串口 2 的波特率是可变的,其波特率由定时器 2 产生。当定时器采用 1T 模式时(12 倍速),相应
的波特率的速度也会相应提高 12 倍。
串口 2 模式 0 的波特率计算公式如下表所示:(SYSclk 为系统工作频率)
选择定时器
定时器速度
波特率计算公式
1T
定时器2重载值 = 65536 -
12T
定时器2重载值 = 65536 -
SYSclk
4×波特率
定时器2
14.3.4
SYSclk
12×4×波特率
串口 2 模式 1,模式 1 波特率计算公式
串行口 2 的模式 1 为 9 位数据位可变波特率 UART 工作模式。此模式一帧信息为 11 位:1 位起始
位,9 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD2 为数据
发送口,RxD2 为数据接收口,串行口全双工接受/发送。
写S2BUF
TxD2
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D6
D7
RB8
Stop
S2TI
发送数据(串口2模式1)
写S2CON
RxD2
S2REN=1,S2RI=0
Start
D0
D1
D2
D3
D4
D5
S2RI
接收数据(串口2模式1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 433 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口 2 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 434 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.4 串口 3
14.4.1 串口 3 控制寄存器(S3CON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
S3CON
ACH
S3SM0
S3ST3
S3SM2
S3REN
S3TB8
S3RB8
S3TI
S3RI
S3SM0:指定串口3的通信工作模式,如下表所示:
S3SM0
串口3工作模式
功能说明
0
模式0
可变波特率8位数据方式
1
模式1
可变波特率9位数据方式
S3ST3:选择串口 3 的波特率发生器
0:选择定时器 2 为串口 3 的波特率发生器
1:选择定时器 3 为串口 3 的波特率发生器
S3SM2:允许串口 3 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S3SM2 位为 1 且 S3REN 位为
1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S3RB8)来筛选地址帧:
若 S3RB8=1,说明该帧是地址帧,地址信息可以进入 S3BUF,并使 S3RI 为 1,进而在中断服务
程序中再进行地址号比较;若 S3RB8=0,说明该帧不是地址帧,应丢掉且保持 S3RI=0。在模式
1 中,如果 S3SM2 位为 0 且 S3REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的
S3RB8 为 0 或 1,均可使接收到的信息进入 S3BUF,并使 S3RI=1,此时 S3RB8 通常为校验位。
模式 0 为非多机通信方式,在这种方式时,要设置 S3SM2 应为 0。
S3REN:允许/禁止串口接收控制位
0:禁止串口接收数据
1:允许串口接收数据
S3TB8:当串口 3 使用模式 1 时,S3TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧
标志位,按需要由软件置位或清 0。在模式 0 中,该位不用。
S3RB8:当串口 3 使用模式 1 时,S3RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧
标志位。在模式 0 中,该位不用。
S3TI:串口 3 发送中断请求标志位。在停止位开始发送时由硬件自动将 S3TI 置 1,向 CPU 发请求中断,
响应中断后 S3TI 必须用软件清零。
S3RI:串口 3 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S3RI 置 1,向 CPU 发
中断申请,响应中断后 S3RI 必须由软件清零。
14.4.2 串口 3 数据寄存器(S3BUF)
符号
地址
S3BUF
ADH
B7
B6
B5
B4
B3
B2
B1
B0
S3BUF:串口 1 数据接收/发送缓冲区。S3BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S3BUF 进行读操作,实际是读取串口接收缓冲区,对 S3BUF 进行写操作则是触发串口开始发送
数据。
14.4.3
串口 3 模式 0,模式 0 波特率计算公式
串行口 3 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 435 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
位,8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD3 为数据
发送口,RxD3 为数据接收口,串行口全双工接受/发送。
写S3BUF
TxD3
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
S3TI
发送数据(串口3模式0)
写S3CON
RxD3
S3REN=1, S3RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
S3RI
接收数据(串口3模式0)
串口 3 的波特率是可变的,其波特率可由定时器 2 或定时器 3 产生。当定时器采用 1T 模式时(12
倍速),相应的波特率的速度也会相应提高 12 倍。
串口 3 模式 0 的波特率计算公式如下表所示:(SYSclk 为系统工作频率)
选择定时器
定时器速度
波特率计算公式
1T
定时器2重载值 = 65536 -
12T
定时器2重载值 = 65536 -
1T
定时器3重载值 = 65536 -
12T
定时器3重载值 = 65536 -
SYSclk
4×波特率
定时器2
SYSclk
12×4×波特率
SYSclk
4×波特率
定时器3
14.4.4
SYSclk
12×4×波特率
串口 3 模式 1,模式 1 波特率计算公式
串行口 3 的模式 1 为 9 位数据位可变波特率 UART 工作模式。此模式一帧信息为 11 位:1 位起始
位,9 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD3 为数据
发送口,RxD3 为数据接收口,串行口全双工接受/发送。
写S3BUF
TxD3
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
S3TI
发送数据(串口3模式1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 436 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
写S3CON
RxD3
技术支持: 13922829991
研发顾问: 13922805190
S3REN=1,S3RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
RB8
Stop
S3RI
接收数据(串口3模式1)
串口 3 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 437 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.5 串口 4
14.5.1 串口 4 控制寄存器(S4CON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
S4CON
84H
S4SM0
S4ST4
S4SM2
S4REN
S4TB8
S4RB8
S4TI
S4RI
S4SM0:指定串口4的通信工作模式,如下表所示:
S4SM0
串口4工作模式
功能说明
0
模式0
可变波特率8位数据方式
1
模式1
可变波特率9位数据方式
S4ST4:选择串口 4 的波特率发生器
0:选择定时器 2 为串口 4 的波特率发生器
1:选择定时器 4 为串口 4 的波特率发生器
S4SM2:允许串口 4 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S4SM2 位为 1 且 S4REN 位为
1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S4RB8)来筛选地址帧:
若 S4RB8=1,说明该帧是地址帧,地址信息可以进入 S4BUF,并使 S4RI 为 1,进而在中断服务
程序中再进行地址号比较;若 S4RB8=0,说明该帧不是地址帧,应丢掉且保持 S4RI=0。在模式
1 中,如果 S4SM2 位为 0 且 S4REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的
S4RB8 为 0 或 1,均可使接收到的信息进入 S4BUF,并使 S4RI=1,此时 S4RB8 通常为校验位。
模式 0 为非多机通信方式,在这种方式时,要设置 S4SM2 应为 0。
S4REN:允许/禁止串口接收控制位
0:禁止串口接收数据
1:允许串口接收数据
S4TB8:当串口 4 使用模式 1 时,S4TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧
标志位,按需要由软件置位或清 0。在模式 0 中,该位不用。
S4RB8:当串口 4 使用模式 1 时,S4RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧
标志位。在模式 0 中,该位不用。
S4TI:串口 4 发送中断请求标志位。在停止位开始发送时由硬件自动将 S4TI 置 1,向 CPU 发请求中断,
响应中断后 S4TI 必须用软件清零。
S4RI:串口 4 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S4RI 置 1,向 CPU 发
中断申请,响应中断后 S4RI 必须由软件清零。
14.5.2 串口 4 数据寄存器(S4BUF)
符号
地址
S4BUF
85H
B7
B6
B5
B4
B3
B2
B1
B0
S4BUF:串口 1 数据接收/发送缓冲区。S4BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S4BUF 进行读操作,实际是读取串口接收缓冲区,对 S4BUF 进行写操作则是触发串口开始发送
数据。
14.5.3
串口 4 模式 0,模式 0 波特率计算公式
串行口 4 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始
位,8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD4 为数据
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 438 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
发送口,RxD4 为数据接收口,串行口全双工接受/发送。
写S4BUF
TxD4
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
S4TI
发送数据(串口4模式0)
写S4CON
RxD4
S4REN=1, S4RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
S4RI
接收数据(串口4模式0)
串口 4 的波特率是可变的,其波特率可由定时器 2 或定时器 4 产生。当定时器采用 1T 模式时(12
倍速),相应的波特率的速度也会相应提高 12 倍。
串口 4 模式 0 的波特率计算公式如下表所示:(SYSclk 为系统工作频率)
选择定时器
定时器速度
波特率计算公式
1T
定时器2重载值 = 65536 -
12T
定时器2重载值 = 65536 -
1T
定时器4重载值 = 65536 -
12T
定时器4重载值 = 65536 -
SYSclk
4×波特率
定时器2
SYSclk
12×4×波特率
SYSclk
4×波特率
定时器4
14.5.4
SYSclk
12×4×波特率
串口 4 模式 1,模式 1 波特率计算公式
串行口 4 的模式 1 为 9 位数据位可变波特率 UART 工作模式。此模式一帧信息为 11 位:1 位起始
位,9 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD4 为数据
发送口,RxD4 为数据接收口,串行口全双工接受/发送。
写S4BUF
TxD4
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
S4TI
发送数据(串口4模式1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 439 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
写S4CON
RxD4
技术支持: 13922829991
研发顾问: 13922805190
S4REN=1,S4RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
RB8
Stop
S4RI
接收数据(串口4模式1)
串口 4 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 440 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.6 串口注意事项
关于串口中断请求有如下问题需要注意:(串口 1、串口 2、串口 3、串口 4 均类似,下面以串口 1
为例进行说明)
8 位数据模式时,发送完成约 1/3 个停止位后产生 TI 中断请求,如下图所示:
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
TI
发送数据(8位数据)
8 位数据模式时,接收完成一半个停止位后产生 RI 中断请求,如下图所示:
写SCON
RxD
REN=1, RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
RI
接收数据(8位数据)
9 位数据模式时,发送完成约 1/3 个停止位后产生 TI 中断请求:
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D7
RB8
Stop
TI
发送数据(9位数据)
9 位数据模式时,一半个停止位后产生 RI 中断请求,如下图所示:
写SCON
RxD
REN=1,RI=0
Start
D0
D1
D2
D3
D4
D5
D6
RI
接收数据(9位数据)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 441 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.7 范例程序
串口 1 使用定时器 2 做波特率发生器
14.7.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
AUXR
T2H
T2L
=
=
=
0x8e;
0xd6;
0xd7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
T2L = BRT;
T2H = BRT >> 8;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 442 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
AUXR = 0x15;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSend(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSend(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
DATA
DATA
DATA
深圳国芯人工智能有限公司
8EH
0D6H
0D7H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 443 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
研发顾问: 13922805190
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
SCON,#50H
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
BUSY
WPTR,#00H
RPTR,#00H
JB
BUSY,$
;65536-11059200/115200/4=0FFE8H
UART_SEND:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 444 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
SETB
MOV
RET
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
技术支持: 13922829991
研发顾问: 13922805190
BUSY
SBUF,A
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
14.7.2
串口 1 使用定时器 1(模式 0)做波特率发生器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 445 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 446 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSend(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSend(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 447 -
STC8H 系列技术手册
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
;65536-11059200/115200/4=0FFE8H
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
深圳国芯人工智能有限公司
A
A,@A+DPTR
SENDEND
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 448 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
LCALL
INC
JMP
技术支持: 13922829991
研发顾问: 13922805190
UART_SEND
DPTR
UART_SENDSTR
SENDEND:
RET
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
串口 1 使用定时器 1(模式 2)做波特率发生器
14.7.3
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
FOSC
深圳国芯人工智能有限公司
11059200UL
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 449 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
BRT
(256 - FOSC / 115200 / 32)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
研发顾问: 13922805190
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x20;
TL1 = BRT;
TH1 = BRT;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 450 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
while (*p)
{
UartSend(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSend(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 451 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#20H
TL1,#0FDH
TH1,#0FDH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
;256-11059200/115200/32=0FDH
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 452 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
LOOP:
STRING:
END
串口 2 使用定时器 2 做波特率发生器
14.7.4
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S2CON
S2BUF
=
=
=
=
=
深圳国芯人工智能有限公司
0x8e;
0xd6;
0xd7;
0x9a;
0x9b;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 453 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
IE2
=
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
研发顾问: 13922805190
void Uart2Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
busy = 0;
}
if (S2CON & 0x01)
{
S2CON &= ~0x01;
buffer[wptr++] = S2BUF;
wptr &= 0x0f;
}
}
void Uart2Init()
{
S2CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart2Send(char dat)
{
while (busy);
busy = 1;
S2BUF = dat;
}
void Uart2SendStr(char *p)
{
while (*p)
{
Uart2Send(*p++);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 454 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart2Init();
IE2 = 0x01;
EA = 1;
Uart2SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart2Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S2CON
S2BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
8EH
0D6H
0D7H
9AH
9BH
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 455 -
STC8H 系列技术手册
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0043H
UART2_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S2CON
ACC.1,CHKRI
S2CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART2_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART2ISR_EXIT:
POP
POP
RETI
ACC.0,UART2ISR_EXIT
S2CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S2BUF
WPTR
PSW
ACC
UART2_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S2CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S2BUF,A
;65536-11059200/115200/4=0FFE8H
UART2_SEND:
UART2_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND2END:
RET
A
A,@A+DPTR
SEND2END
UART2_SEND
DPTR
UART2_SENDSTR
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 456 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART2_INIT
IE2,#01H
EA
MOV
LCALL
DPTR,#STRING
UART2_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART2_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
LOOP:
STRING:
END
串口 3 使用定时器 2 做波特率发生器
14.7.5
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S3CON
S3BUF
=
=
=
=
=
深圳国芯人工智能有限公司
0x8e;
0xd6;
0xd7;
0xac;
0xad;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 457 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
IE2
=
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
研发顾问: 13922805190
void Uart3Isr() interrupt 17
{
if (S3CON & 0x02)
{
S3CON &= ~0x02;
busy = 0;
}
if (S3CON & 0x01)
{
S3CON &= ~0x01;
buffer[wptr++] = S3BUF;
wptr &= 0x0f;
}
}
void Uart3Init()
{
S3CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart3Send(char dat)
{
while (busy);
busy = 1;
S3BUF = dat;
}
void Uart3SendStr(char *p)
{
while (*p)
{
Uart3Send(*p++);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 458 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart3Init();
IE2 = 0x08;
EA = 1;
Uart3SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart3Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S3CON
S3BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
8EH
0D6H
0D7H
0ACH
0ADH
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 459 -
STC8H 系列技术手册
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
008BH
UART3_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S3CON
ACC.1,CHKRI
S3CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART3_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART3ISR_EXIT:
POP
POP
RETI
ACC.0,UART3ISR_EXIT
S3CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S3BUF
WPTR
PSW
ACC
UART3_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S3CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S3BUF,A
;65536-11059200/115200/4=0FFE8H
UART3_SEND:
UART3_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND3END:
RET
A
A,@A+DPTR
SEND3END
UART3_SEND
DPTR
UART3_SENDSTR
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 460 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART3_INIT
IE2,#08H
EA
MOV
LCALL
DPTR,#STRING
UART3_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART3_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
LOOP:
STRING:
END
串口 3 使用定时器 3 做波特率发生器
14.7.6
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
T4T3M
T4L
T4H
T3L
T3H
=
=
=
=
=
深圳国芯人工智能有限公司
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 461 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
T2L
T2H
S3CON
S3BUF
IE2
=
=
=
=
=
0xd7;
0xd6;
0xac;
0xad;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
研发顾问: 13922805190
void Uart3Isr() interrupt 17
{
if (S3CON & 0x02)
{
S3CON &= ~0x02;
busy = 0;
}
if (S3CON & 0x01)
{
S3CON &= ~0x01;
buffer[wptr++] = S3BUF;
wptr &= 0x0f;
}
}
void Uart3Init()
{
S3CON = 0x50;
T3L = BRT;
T3H = BRT >> 8;
T4T3M = 0x0a;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart3Send(char dat)
{
while (busy);
busy = 1;
S3BUF = dat;
}
void Uart3SendStr(char *p)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 462 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
while (*p)
{
Uart3Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart3Init();
IE2 = 0x08;
EA = 1;
Uart3SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart3Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S3CON
S3BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
0ACH
0ADH
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
DATA
DATA
DATA
093H
094H
091H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 463 -
STC8H 系列技术手册
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
008BH
UART3_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S3CON
ACC.1,CHKRI
S3CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART3_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART3ISR_EXIT:
POP
POP
RETI
ACC.0,UART3ISR_EXIT
S3CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S3BUF
WPTR
PSW
ACC
UART3_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S3CON,#50H
T3L,#0E8H
T3H,#0FFH
T4T3M,#0AH
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S3BUF,A
;65536-11059200/115200/4=0FFE8H
UART3_SEND:
UART3_SENDSTR:
CLR
MOVC
深圳国芯人工智能有限公司
A
A,@A+DPTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 464 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JZ
LCALL
INC
JMP
技术支持: 13922829991
研发顾问: 13922805190
SEND3END
UART3_SEND
DPTR
UART3_SENDSTR
SEND3END:
RET
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART3_INIT
IE2,#08H
EA
MOV
LCALL
DPTR,#STRING
UART3_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART3_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
14.7.7
串口 4 使用定时器 2 做波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 465 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S4CON
S4BUF
IE2
=
=
=
=
=
=
0x8e;
0xd6;
0xd7;
0x84;
0x85;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
研发顾问: 13922805190
void Uart4Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02;
busy = 0;
}
if (S4CON & 0x01)
{
S4CON &= ~0x01;
buffer[wptr++] = S4BUF;
wptr &= 0x0f;
}
}
void Uart4Init()
{
S4CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart4Send(char dat)
{
while (busy);
busy = 1;
S4BUF = dat;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 466 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
void Uart4SendStr(char *p)
{
while (*p)
{
Uart4Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart4Init();
IE2 = 0x10;
EA = 1;
Uart4SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart4Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S4CON
S4BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
8EH
0D6H
0D7H
84H
85H
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
DATA
DATA
DATA
093H
094H
091H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 467 -
STC8H 系列技术手册
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0093H
UART4_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S4CON
ACC.1,CHKRI
S4CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
UART4_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART4ISR_EXIT:
POP
POP
RETI
ACC.0,UART4ISR_EXIT
S4CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S4BUF
WPTR
PSW
ACC
UART4_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S4CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S4BUF,A
;65536-11059200/115200/4=0FFE8H
UART4_SEND:
UART4_SENDSTR:
CLR
MOVC
深圳国芯人工智能有限公司
A
A,@A+DPTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 468 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JZ
LCALL
INC
JMP
技术支持: 13922829991
研发顾问: 13922805190
SEND4END
UART4_SEND
DPTR
UART4_SENDSTR
SEND4END:
RET
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART4_INIT
IE2,#10H
EA
MOV
LCALL
DPTR,#STRING
UART4_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART4_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
14.7.8
串口 4 使用定时器 4 做波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 469 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S4CON
S4BUF
IE2
=
=
=
=
=
=
=
=
=
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x84;
0x85;
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
研发顾问: 13922805190
void Uart4Isr() interrupt 18
{
if (S4CON & 0x02)
{
S4CON &= ~0x02;
busy = 0;
}
if (S4CON & 0x01)
{
S4CON &= ~0x01;
buffer[wptr++] = S4BUF;
wptr &= 0x0f;
}
}
void Uart4Init()
{
S4CON = 0x50;
T4L = BRT;
T4H = BRT >> 8;
T4T3M = 0xa0;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart4Send(char dat)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 470 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
while (busy);
busy = 1;
S4BUF = dat;
}
void Uart4SendStr(char *p)
{
while (*p)
{
Uart4Send(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart4Init();
IE2 = 0x10;
EA = 1;
Uart4SendStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart4Send(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S4CON
S4BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
84H
85H
0AFH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 471 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0093H
UART4_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S4CON
ACC.1,CHKRI
S4CON,#NOT 02H
BUSY
技术支持: 13922829991
研发顾问: 13922805190
;16 bytes
UART4_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART4ISR_EXIT:
POP
POP
RETI
ACC.0,UART4ISR_EXIT
S4CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S4BUF
WPTR
PSW
ACC
UART4_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S4CON,#50H
T4L,#0E8H
T4H,#0FFH
T4T3M,#0A0H
BUSY
WPTR,#00H
RPTR,#00H
;65536-11059200/115200/4=0FFE8H
UART4_SEND:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 472 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
JB
SETB
MOV
RET
UART4_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND4END:
RET
技术支持: 13922829991
研发顾问: 13922805190
BUSY,$
BUSY
S4BUF,A
A
A,@A+DPTR
SEND4END
UART4_SEND
DPTR
UART4_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART4_INIT
IE2,#10H
EA
MOV
LCALL
DPTR,#STRING
UART4_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART4_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 473 -
STC8H 系列技术手册
14.7.9
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口多机通讯
现参考 STC15 系列数据手册,后续补充
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 474 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15 比较器,掉电检测,内部 1.19V参考信号源
STC8H 系列单片机内部集成了一个比较器。比较器的正极可以是 P3.7 端口或者 ADC 的模拟输入
通道,而负极可以 P3.6 端口或者是内部 BandGap 经过 OP 后的 REFV 电压(内部固定比较电压)
。通过
多路选择器和分时复用可实现多个比较器的应用。
比较器内部有可程序控制的两级滤波:模拟滤波和数字滤波。模拟滤波可以过滤掉比较输入信号中
的毛刺信号,数字滤波可以等待输入信号更加稳定后再进行比较。比较结果可直接通过读取内部寄存器
位获得,也可将比较器结果正向或反向输出到外部端口。将比较结果输出到外部端口可用作外部事件的
触发信号和反馈信号,可扩大比较的应用范围。
15.1 比较器内部结构图
P3.7
0
ADCIN
1
CMPRES
模拟滤波
0.1us
PIS
0
LCC
1
内部REFV(1.19V)
0
P3.6
1
DISFLT
数字滤波
延时LCDTY个
CPU 时钟
CMPO
E
PIE
0
P3.4
1
P4.1
CMPO_S
CMPIF
NIS
ADCIN包括:ADC0、ADC1、ADC2、ADC3、
ADC4、ADC5、ADC6、ADC7、
ADC8、ADC9、ADC10、ADC11、
ADC12、ADC13、ADC14、ADC15
比较器内部结构
NIE
注意:当比较器正极选择ADC输入通道时,请务必要
打开ADC_CONTR寄存器中的ADC电源控制位
ADC_POWER和ADC通道选择位ADC_CHS
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 475 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15.2 比较器相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
PIE
NIE
PIS
NIS
CMPCR1
比较器控制寄存器 1
E6H
CMPEN
CMPIF
CMPCR2
比较器控制寄存器 2
E7H
INVCMPO
DISFLT
B1
B0
CMPOE CMPRES 0000,0000
LCDTY[5:0]
0000,0000
15.2.1 比较器控制寄存器 1(CMPCR1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CMPCR1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES
CMPEN:比较器模块使能位
0:关闭比较功能
1:使能比较功能
CMPIF:比较器中断标志位。当 PIE 或 NIE 被使能后,若产生相应的中断信号,硬件自动将 CMPIF 置
1,并向 CPU 提出中断请求。此标志位必须用户软件清零。
(注意:没有使能比较器中断时,硬件不会设置此中断标志,即使用查询方式访问比较器时,不
能查询此中断标志)
PIE:比较器上升沿中断使能位。
0:禁止比较器上升沿中断。
1:使能比较器上升沿中断。使能比较器的比较结果由 0 变成 1 时产生中断请求。
NIE:比较器下降沿中断使能位。
0:禁止比较器下降沿中断。
1:使能比较器下降沿中断。使能比较器的比较结果由 1 变成 0 时产生中断请求。
PIS:比较器的正极选择位
0:选择外部端口 P3.7 为比较器正极输入源。
1:通过 ADC_CONTR 中的 ADC_CHS 位选择 ADC 的模拟输入端作为比较器正极输入源。
(注意 1:当比较器正极选择 ADC 输入通道时,请务必要打开 ADC_CONTR 寄存器中的 ADC 电
源控制位 ADC_POWER 和 ADC 通道选择位 ADC_CHS)
(注意 2:当需要使用比较器中断唤醒掉电模式/时钟停振模式时,比较器正极必须选择 P3.7,不
能使用 ADC 输入通道)
NIS:比较器的负极选择位
0:选择内部 BandGap 经过 OP 后的电压 REFV 作为比较器负极输入源。 (芯片在出厂时,内部
参考信号源调整为 1.19V)
1:选择外部端口 P3.6 为比较器负极输入源。
CMPOE:比较器结果输出控制位
0:禁止比较器结果输出
1:使能比较器结果输出。比较器结果输出到 P3.4 或者 P4.1(由 P_SW2 中的 CMPO_S 进行设定)
CMPRES:比较器的比较结果。此位为只读。
0:表示 CMP+的电平低于 CMP-的电平
1:表示 CMP+的电平高于 CMP-的电平
CMPRES 是经过数字滤波后的输出信号,而不是比较器的直接输出结果。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 476 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15.2.2 比较器控制寄存器 2(CMPCR2)
符号
地址
B7
B6
CMPCR2
E7H
INVCMPO
DISFLT
B5
B4
B3
B2
B1
B0
LCDTY[5:0]
INVCMPO:比较器结果输出控制
0:比较器结果正向输出。若 CMPRES 为 0,则 P3.4/P4.1 输出低电平,反之输出高电平。
1:比较器结果反向输出。若 CMPRES 为 0,则 P3.4/P4.1 输出高电平,反之输出低电平。
DISFLT:模拟滤波功能控制
0:使能 0.1us 模拟滤波功能
1:关闭 0.1us 模拟滤波功能,可略微提高比较器的比较速度。
LCDTY[5:0]:数字滤波功能控制
数字滤波功能即为数字信号去抖动功能。当比较结果发生上升沿或者下降沿变化时,比较器侦测变
化后的信号必须维持 LCDTY 所设置的 CPU 时钟数不发生变化,才认为数据变化是有效的;否
则将视同信号无变化。
注意:当使能数字滤波功能后,芯片内部实际的等待时钟需额外增加两个状态机切换时间,即若
LCDTY 设置为 0 时,为关闭数字滤波功能;若 LCDTY 设置为非 0 值 n(n=1~63)时,则实际
的数字滤波时间为(n+2)个系统时钟
比较器输出
CMPRES
(LCDTY[5:0]+2)
个CPU时钟
比较器输出
CMPRES
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 477 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15.3 范例程序
比较器的使用(中断方式)
15.3.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
CMPCR1
CMPCR2
=
=
0xe6;
0xe7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void CMP_Isr() interrupt 21
{
CMPCR1 &= ~0x40;
if (CMPCR1 & 0x01)
{
P10 = !P10;
}
else
{
P11 = !P11;
}
}
//清中断标志
//下降沿中断测试端口
//上升沿中断测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 478 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P5M1 = 0x00;
//
//
//
//
//
//
//
//
//
//
CMPCR2 = 0x00;
CMPCR2 &= ~0x80;
CMPCR2 |= 0x80;
CMPCR2 &= ~0x40;
CMPCR2 |= 0x40;
CMPCR2 &= ~0x3f;
CMPCR2 |= 0x10;
CMPCR1 = 0x00;
CMPCR1 |= 0x30;
CMPCR1 &= ~0x20;
CMPCR1 |= 0x20;
CMPCR1 &= ~0x10;
CMPCR1 |= 0x10;
CMPCR1 &= ~0x08;
CMPCR1 |= 0x08;
CMPCR1 &= ~0x04;
CMPCR1 |= 0x04;
CMPCR1 &= ~0x02;
CMPCR1 |= 0x02;
CMPCR1 |= 0x80;
//比较器正向输出
//比较器反向输出
//使能 0.1us 滤波
//禁止 0.1us 滤波
//比较器结果直接输出
//比较器结果经过 16 个去抖时钟后输出
//使能比较器边沿中断
//禁止比较器上升沿中断
//使能比较器上升沿中断
//禁止比较器下降沿中断
//使能比较器下降沿中断
//P3.7 为 CMP+输入脚
//ADC 输入脚为 CMP+输入脚
//内部 1.19V 参考信号源为 CMP-输入脚
//P3.6 为 CMP-输入脚
//禁止比较器输出
//使能比较器输出
//使能比较器模块
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00ABH
CMPISR
ORG
0100H
PUSH
ANL
MOV
JB
ACC
CMPCR1,#NOT 40H
A,CMPCR1
ACC.0,RSING
CMPISR:
深圳国芯人工智能有限公司
;清中断标志
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 479 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
FALLING:
CPL
POP
RETI
P1.0
ACC
;下降沿中断测试端口
CPL
POP
RETI
P1.1
ACC
;上升沿中断测试端口
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
ANL
ORL
ANL
ORL
ANL
ORL
MOV
ORL
ANL
ORL
ANL
ORL
ANL
ORL
ANL
ORL
ANL
ORL
ORL
SETB
CMPCR2,#00H
CMPCR2,#NOT 80H
CMPCR2,#80H
CMPCR2,#NOT 40H
CMPCR2,#40H
CMPCR2,#NOT 3FH
CMPCR2,#10H
CMPCR1,#00H
CMPCR1,#30H
CMPCR1,#NOT 20H
CMPCR1,#20H
CMPCR1,#NOT 10H
CMPCR1,#10H
CMPCR1,#NOT 08H
CMPCR1,#08H
CMPCR1,#NOT 04H
CMPCR1,#04H
CMPCR1,#NOT 02H
CMPCR1,#02H
CMPCR1,#80H
EA
JMP
$
RSING:
MAIN:
;
;
;
;
;
;
;
;
;
;
;比较器正向输出
;比较器反向输出
;使能 0.1us 滤波
;禁止 0.1us 滤波
;比较器结果直接输出
;比较器结果经过 16 个去抖时钟后输出
;使能比较器边沿中断
;禁止比较器上升沿中断
;使能比较器上升沿中断
;禁止比较器下降沿中断
;使能比较器下降沿中断
;P3.7 为 CMP+输入脚
;ADC 输入脚为 CMP+输入脚
;内部 1.19V 参考信号源为 CMP-输入脚
;P3.6 为 CMP-输入脚
;禁止比较器输出
;使能比较器输出
;使能比较器模块
END
15.3.2
比较器的使用(查询方式)
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 480 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "reg51.h"
#include "intrins.h"
sfr
sfr
CMPCR1
CMPCR2
=
=
0xe6;
0xe7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
//
//
//
//
//
//
//
//
//
CMPCR2 = 0x00;
CMPCR2 &= ~0x80;
CMPCR2 |= 0x80;
CMPCR2 &= ~0x40;
CMPCR2 |= 0x40;
CMPCR2 &= ~0x3f;
CMPCR2 |= 0x10;
CMPCR1 = 0x00;
CMPCR1 |= 0x30;
CMPCR1 &= ~0x20;
CMPCR1 |= 0x20;
CMPCR1 &= ~0x10;
CMPCR1 |= 0x10;
CMPCR1 &= ~0x08;
CMPCR1 |= 0x08;
CMPCR1 &= ~0x04;
CMPCR1 |= 0x04;
CMPCR1 &= ~0x02;
CMPCR1 |= 0x02;
CMPCR1 |= 0x80;
//比较器正向输出
//比较器反向输出
//使能 0.1us 滤波
//禁止 0.1us 滤波
//比较器结果直接输出
//比较器结果经过 16 个去抖时钟后输出
//使能比较器边沿中断
//禁止比较器上升沿中断
//使能比较器上升沿中断
//禁止比较器下降沿中断
//使能比较器下降沿中断
//P3.7 为 CMP+输入脚
//ADC 输入脚为 CMP+输入脚
//内部 1.19V 参考信号源为 CMP-输入脚
//P3.6 为 CMP-输入脚
//禁止比较器输出
//使能比较器输出
//使能比较器模块
while (1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 481 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
P10 = CMPCR1 & 0x01;
//读取比较器比较结果
}
}
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
ANL
ORL
ANL
ORL
ANL
ORL
MOV
ORL
ANL
ORL
ANL
ORL
ANL
ORL
CMPCR2,#00H
CMPCR2,#NOT 80H
CMPCR2,#80H
CMPCR2,#NOT 40H
CMPCR2,#40H
CMPCR2,#NOT 3FH
CMPCR2,#10H
CMPCR1,#00H
CMPCR1,#30H
CMPCR1,#NOT 20H
CMPCR1,#20H
CMPCR1,#NOT 10H
CMPCR1,#10H
CMPCR1,#NOT 08H
CMPCR1,#08H
MAIN:
;
;
;
;
;
;
;
;
深圳国芯人工智能有限公司
;比较器正向输出
;比较器反向输出
;使能 0.1us 滤波
;禁止 0.1us 滤波
;比较器结果直接输出
;比较器结果经过 16 个去抖时钟后输出
;使能比较器边沿中断
;禁止比较器上升沿中断
;使能比较器上升沿中断
;禁止比较器下降沿中断
;使能比较器下降沿中断
;P3.7 为 CMP+输入脚
;ADC 输入脚为 CMP+输入脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 482 -
STC8H 系列技术手册
;
;
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
ANL
ORL
ANL
ORL
ORL
CMPCR1,#NOT 04H
CMPCR1,#04H
CMPCR1,#NOT 02H
CMPCR1,#02H
CMPCR1,#80H
MOV
MOV
MOV
JMP
A,CMPCR1
C,ACC.0
P1.0,C
LOOP
技术支持: 13922829991
研发顾问: 13922805190
;内部 1.19V 参考信号源为 CMP-输入脚
;P3.6 为 CMP-输入脚
;禁止比较器输出
;使能比较器输出
;使能比较器模块
LOOP:
;读取比较器比较结果
END
比较器的多路复用应用(比较器+ADC输入通道)
15.3.3
由于比较器的正极可以选择 ADC 的模拟输入通道,因此可以通过多路选择器和分时复用可实现多个比
较器的应用。
注意:当比较器正极选择 ADC 输入通道时,请务必要打开 ADC_CONTR 寄存器中的 ADC 电源控制
位 ADC_POWER 和 ADC 通道选择位 ADC_CHS
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
CMPCR1
CMPCR2
=
=
0xe6;
0xe7;
sfr
ADC_CONTR
=
0xbc;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 483 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//设置 P1.0 为输入口
P1M0 &= 0xfe;
P1M1 |= 0x01;
ADC_CONTR = 0x80;
//使能 ADC 模块并选择 P1.0 为 ADC 输入脚
CMPCR2 = 0x00;
CMPCR1 = 0x00;
//ADC 输入脚为 CMP+输入脚
//P3.6 为 CMP-输入脚
//使能比较器输出
//使能比较器模块
CMPCR1 |= 0x08;
CMPCR1 |= 0x04;
CMPCR1 |= 0x02;
CMPCR1 |= 0x80;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
ADC_CONTR
DATA
DATA
DATA
0E6H
0E7H
0BDH
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 484 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
P4M1, #00H
P5M0, #00H
P5M1, #00H
ANL
ORL
MOV
P1M0,#0FEH
P1M1,#01H
ADC_CONTR,#80H
MOV
MOV
CMPCR2,#00H
CMPCR1,#00H
ORL
ORL
ORL
ORL
CMPCR1,#08H
CMPCR1,#04H
CMPCR1,#02H
CMPCR1,#80H
JMP
LOOP
技术支持: 13922829991
研发顾问: 13922805190
;设置 P1.0 为输入口
;使能 ADC 模块并选择 P1.0 为 ADC 输入脚
;ADC 输入脚为 CMP+输入脚
;P3.6 为 CMP-输入脚
;使能比较器输出
;使能比较器模块
LOOP:
END
15.3.4
比较器作外部掉电检测(掉电过程中应及时保存用户数据
到EEPROM中)
Vcc
7805
Vin
470u
104
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
P0.3
P0.4
P0.5
P0.6
P0.7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
AGnd
AVref
AVcc
P5.4
Vcc
P5.5
Gnd
P0.2
P0.1
P0.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P4.1
CMP+ / P3.7
CMP- / P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
R1
100K以上
R2
?
STC8A8K64S4A12
上图中电阻 R1 和 R2 对稳压块 7805 的前端电压进行分压,分压后的电压作为比较器 CMP+的外部
输入与内部 1.19V 参考信号源进行比较。
一般当交流电在 220V 时,稳压块 7805 前端的直流电压为 11V,但当交流电压降到 160V 时,稳压
块 7805 前端的直留电压为 8.5V。当稳压块 7805 前端的直留电压低于或等于 8.5V 时,该前端输入的直
留电压被电阻 R1 和 R2 分压到比较器正极输入端 CMP+,CMP+端输入电压低于内部 1.19V 参考信号源,
此时可产生比较器中断,这样在掉电检测时就有充足的时间将数据保存到 EEPROM 中。当稳压块 7805
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 485 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
前端的直留电压高高于 8.5V 时,该前端输入的直流电压被电阻 R1 和 R2 分压到比较器正极输入端
CMP+,CMP+端输入电压高于内部 1.19V 参考信号源,此时 CPU 可继续正常工作。
内部 1.19V参考信号源即为内部BandGap经过OP后的电压REFV(芯片在出厂时,内部参考信号源
调整为 1.19V)。具体的数值要通过读取内部 1.19V参考信号源在内部RAM区或者Flash 程序存储器
(ROM)区所占用的地址的值获得。对于STC8 系列,内部 1.19V参考信号源值在RAM和Flash 程序存
储器(ROM)中的存储地址请参考 “7.3 存储器中的特殊参数”
15.3.5
比较器检测工作电压(电池电压)
Vcc
47u
C?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
P0.3
P0.4
P0.5
P0.6
P0.7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
AGnd
AVref
AVcc
P5.4
Vcc
P5.5
Gnd
P0.2
P0.1
P0.0
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P4.1
CMP+/P3.7
CMP-/P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
R0
100K
R6
35.3K (约5.0V)
R5
40.6K (约4.5V)
R4
47.9K (约4.0V)
R3
58.2K (约3.5V)
R2
74.3K (约3.0V)
R1
103K (约2.5V)
STC8H3K64S4
系统时钟10MHz
103(0.01uF)
上图中,利用电阻分压的原理可以近似的测量出 MCU 的工作电压(选通的通道,MCU 的 IO 口输
出低电平,端口电压值接近 Gnd,未选通的通道,MCU 的 IO 口输出开漏模式的高,不影响其他通道)。
比较器的负端选择内部 1.19V 参考信号源,正端选择通过电阻分压后输入到 CMP+管脚的电压值。
初始化时 P2.5~P2.0 口均设置为开漏模式,并输出高。首先 P2.0 口输出低电平,此时若 Vcc 电压
低于 2.5V 则比较器的比较值为 0,反之若 Vcc 电压高于 2.5V 则比较器的比较值为 1;
若确定 Vcc 高于 2.5V,则将 P2.0 口输出高,P2.1 口输出低电平,此时若 Vcc 电压低于 3.0V 则比
较器的比较值为 0,反之若 Vcc 电压高于 3.0V 则比较器的比较值为 1;
若确定 Vcc 高于 3.0V,则将 P2.1 口输出高,P2.2 口输出低电平,此时若 Vcc 电压低于 3.5V 则比
较器的比较值为 0,反之若 Vcc 电压高于 3.5V 则比较器的比较值为 1;
若确定 Vcc 高于 3.5V,则将 P2.2 口输出高,P2.3 口输出低电平,此时若 Vcc 电压低于 4.0V 则比
较器的比较值为 0,反之若 Vcc 电压高于 4.0V 则比较器的比较值为 1;
若确定 Vcc 高于 4.0V,则将 P2.3 口输出高,P2.4 口输出低电平,此时若 Vcc 电压低于 4.5V 则比
较器的比较值为 0,反之若 Vcc 电压高于 4.5V 则比较器的比较值为 1;
若确定 Vcc 高于 4.5V,则将 P2.4 口输出高,P2.5 口输出低电平,此时若 Vcc 电压低于 5.0V 则比
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 486 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
较器的比较值为 0,反之若 Vcc 电压高于 5.0V 则比较器的比较值为 1。
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
CMPCR1
CMPCR2
=
=
0xe6;
0xe7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
sfr
P2M0
P2M1
=
=
0x96;
0x95;
void delay ()
{
char i;
for (i=0; i3.0V
//P2.2 输出 0
//电压>3.5V
//P2.3 输出 0
//电压>4.0V
//P2.4 输出 0
//电压>4.5V
//P2.5 输出 0
//电压>5.0V
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
P2M0
P2M1
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
096H
095H
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 488 -
STC8H 系列技术手册
P5M0
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DATA
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
MOV
ANL
ANL
ANL
ORL
P2M0,#00111111B
P2M1,#00111111B
P2,#0FFH
CMPCR2,#10H
CMPCR1,#00H
CMPCR1,#NOT 08H
CMPCR1,#NOT 04H
CMPCR1,#NOT 02H
CMPCR1,#80H
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
R0,#00000000B
P2,#11111110B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00000001B
P2,#11111101B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00000011B
P2,#11111011B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00000111B
P2,#11110111B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00001111B
P2,#11101111B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00011111B
P2,#11011111B
DELAY
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;P2.5~P2.0 初始化为开漏模式
;比较器结果经过 16 个去抖时钟后输出
;P3.7 为 CMP+输入脚
;内部 1.19V 参考信号源为 CMP-输入脚
;禁止比较器输出
;使能比较器模块
LOOP:
深圳国芯人工智能有限公司
;电压2.5V
;P2.1 输出 0
;电压>3.0V
P2.2 输出 0
;电压>3.5V
;P2.3 输出 0
;电压>4.0V
;P2.4 输出 0
;电压>4.5V
;P2.5 输出 0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 489 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
JNB
MOV
A,CMPCR1
ACC.0,SKIP
R0,#00111111B
MOV
MOV
CPL
MOV
JMP
P2,#11111111B
A,R0
A
P0,A
LOOP
MOV
DJNZ
RET
R0,#20
R0,$
技术支持: 13922829991
研发顾问: 13922805190
;电压>5.0V
SKIP:
;P0.5~P0.0 口显示电压
DELAY:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 490 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16 IAP/EEPROM/DATA-FLASH
STC8H 系列单片机内部集成了大容量的 EEPROM。利用 ISP/IAP 技术可将内部 Data Flash 当
EEPROM,擦写次数在 10 万次以上。EEPROM 可分为若干个扇区,每个扇区包含 512 字节。
注意:EEPROM 的写操作只能将字节中的 1 写为 0,当需要将字节中的 0 写为 1,则必须执行扇区
擦除操作。EEPROM 的读/写操作是以 1 字节为单位进行,而 EEPROM 擦除操作是以 1 扇区(512 字节)
为单位进行,在执行擦除操作时,如果目标扇区中有需要保留的数据,则必须预先将这些数据读取到
RAM 中暂存,待擦除完成后再将保存的数据和需要更新的数据一起再写回 EEPROM/DATA-FLASH。
所以在使用 EEPROM 时,建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不
同的扇区,不一定要用满。数据存储器的擦除操作是按扇区进行的(每扇区 512 字节)。
EEPROM 可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。在用户程序中,可
以对 EEPROM 进行字节读/字节编程/扇区擦除操作。在工作电压偏低时,建议不要进行 EEPROM 操作,
以免发送数据丢失的情况。
16.1 EEPROM操作时间
读取 1 字节:4 个系统时钟(使用 MOVC 指令读取更方便快捷)
编程 1 字节:约 30~40us(实际的编程时间为 6~7.5us,但还需要加上状态转换时间和各种控
制信号的 SETUP 和 HOLD 时间)
擦除 1 扇区(512 字节):约 4~6ms
EEPROM 操作所需时间是硬件自动控制的,用户只需要正确设置 IAP_TPS 寄存器即可。
IAP_TPS=系统工作频率/1000000(小数部分四舍五入进行取整)
例如:系统工作频率为 12MHz,则 IAP_TPS 设置为 12
又例如:系统工作频率为 22.1184MHz,则 IAP_TPS 设置为 22
再例如:系统工作频率为 5.5296MHz,则 IAP_TPS 设置为 6
16.2 EEPROM相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
IAP_DATA
IAP 数据寄存器
C2H
1111,1111
IAP_ADDRH
IAP 高地址寄存器
C3H
0000,0000
IAP_ADDRL
IAP 低地址寄存器
C4H
0000,0000
IAP_CMD
IAP 命令寄存器
C5H
IAP_TRIG
IAP 触发寄存器
C6H
IAP_CONTR
IAP 控制寄存器
C7H
IAPEN
SWBS
IAP_TPS
IAP 等待时间控制寄存器
F5H
-
-
-
-
-
-
-
-
CMD[1:0]
xxxx,xx00
0000,0000
SWRST
CMD_FAIL
-
-
-
-
IAPTPS[5:0]
0000,xxxx
xx00,0000
16.2.1 EEPROM数据寄存器(IAP_DATA)
符号
地址
IAP_DATA
C2H
B7
B6
B5
B4
B3
B2
B1
B0
在进行 EEPROM 的读操作时,命令执行完成后读出的 EEPROM 数据保存在 IAP_DATA 寄存器中。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 491 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
在进行 EEPROM 的写操作时,在执行写命令前,必须将待写入的数据存放在 IAP_DATA 寄存器中,再
发送写命令。擦除 EEPROM 命令与 IAP_DATA 寄存器无关。
16.2.2 EEPROM地址寄存器(IAP_ADDR)
符号
地址
IAP_ADDRH
C3H
IAP_ADDRL
C4H
B7
B6
B5
B4
B3
B2
B1
B0
EEPROM 进行读、写、擦除操作的目标地址寄存器。IAP_ADDRH 保存地址的高字节,IAP_ADDRL
保存地址的低字节
16.2.3 EEPROM命令寄存器(IAP_CMD)
符号
地址
B7
B6
B5
B4
B3
B2
IAP_CMD
C5H
-
-
-
-
-
-
B1
B0
CMD[1:0]
CMD[1:0]:发送EEPROM操作命令
00:空操作
01:读 EEPROM 命令。读取目标地址所在的 1 字节。
10:写 EEPROM 命令。写目标地址所在的 1 字节。注意:写操作只能将目标字节中的 1 写为 0,
而不能将 0 写为 1。一般当目标字节不为 FFH 时,必须先擦除。
11:擦除 EEPROM。擦除目标地址所在的 1 页(1 扇区/512 字节)。注意:擦除操作会一次擦除 1
个扇区(512 字节),整个扇区的内容全部变成 FFH。
16.2.4 EEPROM触发寄存器(IAP_TRIG)
符号
地址
IAP_TRIG
C6H
B7
B6
B5
B4
B3
B2
B1
B0
设置完成 EEPROM 读、写、擦除的命令寄存器、地址寄存器、数据寄存器以及控制寄存器后,需
要向触发寄存器 IAP_TRIG 依次写入 5AH、A5H(顺序不能交换)两个触发命令来触发相应的读、写、
擦除操作。操作完成后,EEPROM 地址寄存器 IAP_ADDRH、IAP_ADDRL 和 EEPROM 命令寄存器
IAP_CMD 的 内 容 不 变。 如 果 接 下来 要 对 下 一个 地 址 的 数据 进 行 操 作, 需 手 动 更新 地 址 寄 存 器
IAP_ADDRH 和寄存器 IAP_ADDRL 的值。
注意:每次 EEPROM 操作时,都要对 IAP_TRIG 先写入 5AH,再写入 A5H,相应的命令才会生效。
写完触发命令后,CPU 会处于 IDLE 等待状态,直到相应的 IAP 操作执行完成后 CPU 才会从 IDLE 状
态返回正常状态继续执行 CPU 指令。
16.2.5 EEPROM控制寄存器(IAP_CONTR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IAP_CONTR
C7H
IAPEN
SWBS
SWRST
CMD_FAIL
-
-
-
-
IAPEN:EEPROM操作使能控制位
0:禁止 EEPROM 操作
1:使能 EEPROM 操作
SWBS:软件复位选择控制位,(需要与SWRST配合使用)
0:软件复位后从用户代码开始执行程序
1:软件复位后从系统 ISP 监控代码区开始执行程序
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 492 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
SWRST:软件复位控制位
0:无动作
1:产生软件复位
CMD_FAIL:EEPROM操作失败状态位,需要软件清零
0:EEPROM 操作正确
1:EEPROM 操作失败
16.2.6 EEPROM擦除等待时间控制寄存器(IAP_TPS)
符号
地址
B7
B6
IAP_TPS
F5H
-
-
B5
B4
B3
B2
B1
B0
IAPTPS[5:0]
需要根据工作频率进行设置
若工作频率为12MHz,则需要将IAP_TPS设置为12;若工作频率为24MHz,则需要将IAP_TPS设置为24,
其他频率以此类推。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 493 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16.3 EEPROM大小及地址
STC8H 系列单片机内部均有用于保存用户数据的 EEPROM。内部的 EEPROM 有 3 操作方式:读、
写和擦除,其中擦除操作是以扇区为单位进行操作,每扇区为 512 字节,即每执行一次擦除命令就会擦
除一个扇区,而读数据和写数据都是以字节为单位进行操作的,即每执行一次读或者写命令时只能读出
或者写入一个字节。
STC8H 系列单片机内部的 EEPROM 的访问方式有两种:IAP 方式和 MOVC 方式。IAP 方式可对
EEPROM 执行读、写、擦除操作,但 MOVC 只能对 EEPROM 进行读操作,而不能进行写和擦除操作。
无论是使用 IAP 方式还是使用 MOVC 方式访问 EEPROM,首先都需要设置正确的目标地址。IAP 方式
时,目标地址与 EEPROM 实际的物理地址是一致的,均是从地址 0000H 开始访问,但若要使用 MOVC
指令进行读取 EEPROM 数据时,目标地址必须是在 EEPROM 实际的物理地址的基础上还有加上程序
大小的偏移。下面以 STC8H1K16 这个型号为例,对目标地址进行详细说明:
0000h
ROM
3FFFh
0000h
1234h
EEPROM
2FFFh
STC8H1K16
STC8H1K16 的程序空间为 16K 字节(0000h~3FFFh),EEPROM 空间为 12K(0000h~2FFFh)。当
需要对 EEPROM 物理地址 1234h 的单元进行读、写、擦除时,若使用 IAP 方式进行访问时,设置的目
标地址为 1234h,即 IAP_ADDRH 设置 12h,IAP_ADDRL 设置 34h,然后设置相应的触发命令即可对
1234h 单元进行正确操作了。但若是使用 MOVC 方式读取 EEPROM 的 1234h 单元,则必须在 1234h 的
基础上还有加上 ROM 空间的大小 4000h,即必须将 DPTR 设置为 5234h,然后才能使用 MOVC 指令进
行读取。
注意:由于擦除是以 512 字节为单位进行操作的,所以执行擦除操作时所设置的目标地址的低 9
位是无意义的。例如:执行擦除命令时,设置地址 1234H/1200H/1300H/13FFH,最终执行擦除的动作
都是相同的,都是擦除 1200H~13FFH 这 512 字节。
不同型号内部 EEPROM 的大小及访问地址会存在差异,针对各个型号 EEPROM 的详细大小和地
址请参考下表
型号
大小
扇区
STC8H1K16
12K
STC8H1K24
4K
STC8H1K28
深圳国芯人工智能有限公司
IAP方式读/写/擦除
MOVC读取
起始地址
结束地址
起始地址
结束地址
24
0000h
2FFFh
4000h
6FFFh
8
0000h
0FFFh
6000h
6FFFh
[1]
用户自定义
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 494 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
研发顾问: 13922805190
用户自定义[1]
STC8H1K33
STC8H1K08
技术支持: 13922829991
4K
8
0000h
0FFFh
STC8H1K12
用户自定义[1]
STC8H1K17
用户自定义[1]
STC8H3K32S4
32K
64
0000h
7FFFh
STC8H3K60S4
4K
8
0000h
0FFFh
2000h
2FFFh
8000h
FFFFh
F000h
FFFFh
8000h
FFFFh
F000h
FFFFh
[1]
STC8H3K64S4
用户自定义
STC8H3K32S2
32K
64
0000h
7FFFh
STC8H3K60S2
4K
8
0000h
0FFFh
[1]
STC8H3K64S2
用户自定义
STC8H8K32U
32K
64
0000h
7FFFh
8000h
FFFFh
STC8H8K60U
4K
8
0000h
0FFFh
F000h
FFFFh
8000h
FFFFh
F000h
FFFFh
用户自定义[1]
STC8H8K64U
STC8H2K32T
32K
64
0000h
7FFFh
STC8H2K60T
4K
8
0000h
0FFFh
STC8H2K64T
[1]
[1]
用户自定义
:这个为特殊型号,这个型号的 EEPROM 大小是可用在 ISP 下载时用户自己设置的。如下图所
示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 495 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
用户可用根据自己的需要在整个 FLASH 空间中规划出任意不超过 FLASH 大小的 EEPROM 空间,
但需要注意:EEPROM 总是从后向前进行规划的。
例如:STC8H1K28 这个型号的 FLASH 为 28K,此时若用户想分出其中的 8K 作为 EEPROM 使用,
则 EEPROM 的物理地址则为 28K 的最后 8K,物理地址为 5000h~6FFFh,当然,用户若使用 IAP 的方
式进行访问,目标地址仍然从 0000h 开始,到 1FFFh 结束,当使用 MOVC 读取则需要从 5000h 开始,
到 6FFFh 结束。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 496 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16.4 范例程序
16.4.1
EEPROM基本操作
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
=
=
=
=
=
=
=
0xC2;
0xC3;
0xC4;
0xC5;
0xC6;
0xC7;
0xF5;
void IapIdle()
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRH = 0x80;
IAP_ADDRL = 0;
}
//关闭 IAP 功能
//清除命令寄存器
//清除触发寄存器
//将地址设置到非 IAP 区域
char IapRead(int addr)
{
char dat;
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 1;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
dat = IAP_DATA;
IapIdle();
深圳国芯人工智能有限公司
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 读命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//读 IAP 数据
//关闭 IAP 功能
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 497 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
return dat;
}
void IapProgram(int addr, char dat)
{
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 2;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_DATA = dat;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
void IapErase(int addr)
{
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 3;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 擦除命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//
//关闭 IAP 功能
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
IapErase(0x0400);
P0 = IapRead(0x0400);
IapProgram(0x0400, 0x12);
P1 = IapRead(0x0400);
//P0=0xff
//P1=0x12
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
IAP_DATA
IAP_ADDRH
DATA
DATA
深圳国芯人工智能有限公司
0C2H
0C3H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 498 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
DATA
DATA
DATA
DATA
DATA
0C4H
0C5H
0C6H
0C7H
0F5H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
RET
IAP_CONTR,#0
IAP_CMD,#0
IAP_TRIG,#0
IAP_ADDRH,#80H
IAP_ADDRL,#0
;关闭 IAP 功能
;清除命令寄存器
;清除触发寄存器
;将地址设置到非 IAP 区域
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
MOV
LCALL
RET
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#1
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 读命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
A,IAP_DATA
IAP_IDLE
;读取 IAP 数据
;关闭 IAP 功能
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#2
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_DATA,A
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 写命令
;设置 IAP 低地址
;设置 IAP 高地址
;写 IAP 数据
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
研发顾问: 13922805190
IAP_IDLE:
IAP_READ:
IAP_PROGRAM:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
IAP_ERASE:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 499 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
技术支持: 13922829991
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#3
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 擦除命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
研发顾问: 13922805190
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
LCALL
MOV
LCALL
MOV
MOV
MOV
LCALL
MOV
LCALL
MOV
DPTR,#0400H
IAP_ERASE
DPTR,#0400H
IAP_READ
P0,A
DPTR,#0400H
A,#12H
IAP_PROGRAM
DPTR,#0400H
IAP_READ
P1,A
SJMP
$
;P0=0FFH
;P1=12H
END
使用MOVC读取EEPROM
16.4.2
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
深圳国芯人工智能有限公司
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 500 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
=
=
=
=
=
=
=
0xC2;
0xC3;
0xC4;
0xC5;
0xC6;
0xC7;
0xF5;
#define
IAP_OFFSET
0x4000H
void IapIdle()
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRH = 0x80;
IAP_ADDRL = 0;
}
研发顾问: 13922805190
//STC8H1K16
//关闭 IAP 功能
//清除命令寄存器
//清除触发寄存器
//将地址设置到非 IAP 区域
char IapRead(int addr)
{
addr += IAP_OFFSET;
return *(char code *)(addr);
}
//使用 MOVC 读取 EEPROM 需要加上相应的偏移
//使用 MOVC 读取数据
void IapProgram(int addr, char dat)
{
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 2;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_DATA = dat;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
void IapErase(int addr)
{
IAP_CONTR = 0x80;
IAP_TPS = 12; //设置擦除等待参数 12MHz
IAP_CMD = 3; //设置 IAP 擦除命令
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
深圳国芯人工智能有限公司
技术支持: 13922829991
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
//使能 IAP
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//
//关闭 IAP 功能
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 501 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
IapErase(0x0400);
P0 = IapRead(0x0400);
IapProgram(0x0400, 0x12);
P1 = IapRead(0x0400);
//P0=0xff
//P1=0x12
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0C2H
0C3H
0C4H
0C5H
0C6H
0C7H
0F5H
IAP_OFFSET EQU
4000H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
IAP_CONTR,#0
IAP_CMD,#0
IAP_TRIG,#0
;STC8H1K16
IAP_IDLE:
深圳国芯人工智能有限公司
;关闭 IAP 功能
;清除命令寄存器
;清除触发寄存器
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 502 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
MOV
MOV
RET
IAP_ADDRH,#80H
IAP_ADDRL,#0
;将地址设置到非 IAP 区域
MOV
ADD
MOV
MOV
ADDC
MOV
CLR
MOVC
RET
A,#LOW IAP_OFFSET
A,DPL
DPL,A
A,@HIGH IAP_OFFSET
A,DPH
DPH,A
A
A,@A+DPTR
;使用 MOVC 读取 EEPROM 需要加上相应的偏移
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#2
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_DATA,A
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 写命令
;设置 IAP 低地址
;设置 IAP 高地址
;写 IAP 数据
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#3
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 擦除命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
IAP_READ:
IAP_PROGRAM:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
;使用 MOVC 读取数据
IAP_ERASE:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
LCALL
MOV
LCALL
DPTR,#0400H
IAP_ERASE
DPTR,#0400H
IAP_READ
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 503 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
MOV
MOV
LCALL
MOV
LCALL
MOV
P0,A
DPTR,#0400H
A,#12H
IAP_PROGRAM
DPTR,#0400H
IAP_READ
P1,A
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;P0=0FFH
;P1=12H
END
使用串口送出EEPROM数据
16.4.3
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
sfr
sfr
AUXR
T2H
T2L
=
=
=
0x8e;
0xd6;
0xd7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
=
=
=
=
=
=
=
0xC2;
0xC3;
0xC4;
0xC5;
0xC6;
0xC7;
0xF5;
void UartInit()
{
SCON = 0x5a;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x15;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 504 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void UartSend(char dat)
{
while (!TI);
TI = 0;
SBUF = dat;
}
void IapIdle()
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRH = 0x80;
IAP_ADDRL = 0;
}
//关闭 IAP 功能
//清除命令寄存器
//清除触发寄存器
//将地址设置到非 IAP 区域
char IapRead(int addr)
{
char dat;
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 读命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 1;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
dat = IAP_DATA;
IapIdle();
//读 IAP 数据
//关闭 IAP 功能
return dat;
}
void IapProgram(int addr, char dat)
{
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 2;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_DATA = dat;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
void IapErase(int addr)
{
IAP_CONTR = 0x80;
IAP_TPS = 12;
IAP_CMD = 3;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
深圳国芯人工智能有限公司
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 擦除命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//
//关闭 IAP 功能
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 505 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
IapErase(0x0400);
UartSend(IapRead(0x0400));
IapProgram(0x0400, 0x12);
UartSend(IapRead(0x0400));
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
DATA
DATA
DATA
8EH
0D6H
0D7H
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0C2H
0C3H
0C4H
0C5H
0C6H
0C7H
0F5H
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 506 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
UART_INIT:
MOV
MOV
MOV
MOV
RET
SCON,#5AH
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
JNB
CLR
MOV
RET
TI,$
TI
SBUF,A
MOV
MOV
MOV
MOV
MOV
RET
IAP_CONTR,#0
IAP_CMD,#0
IAP_TRIG,#0
IAP_ADDRH,#80H
IAP_ADDRL,#0
;关闭 IAP 功能
;清除命令寄存器
;清除触发寄存器
;将地址设置到非 IAP 区域
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
MOV
LCALL
RET
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#1
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 读命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
A,IAP_DATA
IAP_IDLE
;读取 IAP 数据
;关闭 IAP 功能
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#2
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_DATA,A
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 写命令
;设置 IAP 低地址
;设置 IAP 高地址
;写 IAP 数据
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
IAP_CONTR,#80H
IAP_TPS,#12
IAP_CMD,#3
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置擦除等待参数 12MHz
;设置 IAP 擦除命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
;65536-11059200/115200/4=0FFE8H
UART_SEND:
IAP_IDLE:
IAP_READ:
IAP_PROGRAM:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
IAP_ERASE:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 507 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
LCALL
MOV
LCALL
LCALL
MOV
MOV
LCALL
MOV
LCALL
LCALL
UART_INIT
DPTR,#0400H
IAP_ERASE
DPTR,#0400H
IAP_READ
UART_SEND
DPTR,#0400H
A,#12H
IAP_PROGRAM
DPTR,#0400H
IAP_READ
UART_SEND
SJMP
$
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 508 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17 ADC模数转换,内部 1.19V参考信号源
STC8H1K16 和 STC8H1K08 系列单片机内部集成了一个 10 位高速 A/D 转换器,STC8H3K64S4、
STC8H3K64S2、STC8H8K64U、STC8H2K64T 系列单片机内部集成了一个 12 位高速 A/D 转换器。ADC
的时钟频率为系统频率 2 分频再经过用户设置的分频系数进行再次分频(ADC 的工作时钟频率范围为
SYSclk/2/1 到 SYSclk/2/16)。
STC8H 系列的 ADC 最快速度:12 位 ADC 为 800K(每秒进行 80 万次 ADC 转换),10 位 ADC
为 500K(每秒进行 50 万次 ADC 转换)
ADC 转换结果的数据格式有两种:左对齐和右对齐。可方便用户程序进行读取和引用。
注意:ADC 的第 15 通道只能用于检测内部参考信号源,参考信号源值出厂时校准为 1.19V,由于
制造误差以及测量误差,导致实际的内部参考信号源相比 1.19V,大约有±1%的误差。如果用户需要
知道每一颗芯片的准确内部参考信号源值,可外接精准参考信号源,然后利用 ADC 的第 15 通道进行
测量标定。
如果芯片有 ADC 的外部参考电源管脚 ADC_VRef+,则一定不能浮空,必须接外部参考电源或者
直接连到 VCC
17.1 ADC相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
BCH ADC_POWER ADC_START ADC_FLAG ADC_EPWMT
B2
B1
B0
ADC_CONTR
ADC 控制寄存器
ADC_RES
ADC 转换结果高位寄存器
BDH
0000,0000
ADC_RESL
ADC 转换结果低位寄存器
BEH
0000,0000
ADCCFG
ADC 配置寄存器
DEH
符号
描述
地址
-
-
RESFMT
ADC_CHS[3:0]
-
000x,0000
SPEED[3:0]
xx0x,0000
位地址与符号
复位值
B7
ADCTIM
FEA8H CSSETUP
ADC 时序控制寄存器
B6
B5
B4
B3
CSHOLD[1:0]
B2
B1
B0
0010,1010
SMPDUTY[4:0]
17.1.1 ADC控制寄存器(ADC_CONTR),PWM触发ADC控制
符号
地址
B7
B6
B5
B4
ADC_CONTR
BCH
ADC_POWER
ADC_START
ADC_FLAG
ADC_EPWMT
B3
B2
B1
B0
ADC_CHS[3:0]
ADC_POWER:ADC 电源控制位
0:关闭 ADC 电源
1:打开 ADC 电源。
建议进入空闲模式和掉电模式前将 ADC 电源关闭,以降低功耗
ADC_START:ADC 转换启动控制位。写入 1 后开始 ADC 转换,转换完成后硬件自动将此位清零。
0:无影响。即使 ADC 已经开始转换工作,写 0 也不会停止 A/D 转换。
1:开始 ADC 转换,转换完成后硬件自动将此位清零。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 509 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ADC_FLAG:ADC 转换结束标志位。当 ADC 完成一次转换后,硬件会自动将此位置 1,并向 CPU 提
出中断请求。此标志位必须软件清零。
ADC_EPWMT:使能 PWM 实时触发 ADC 功能。详情请参考 16 位高级 PWM 定时器章节
ADC_CHS[3:0]:ADC 模拟通道选择位
(注意:被选择为 ADC 输入通道的 I/O 口,必须设置 PxM0/PxM1 寄存器将 I/O 口模式设置为高
阻输入模式。另外如果 MCU 进入掉电模式/时钟停振模式后,仍需要使能 ADC 通道,则需要设置
PxIE 寄存器关闭数字输入通道,以防止外部模拟输入信号忽高忽低而产生额外的功耗)
(注意:下面表格中红色字体的通道代表不同系列可能在不同端口上,红色只是表示凸显)
(STC8H1K28 系列)
ADC_CHS[3:0]
ADC 通道
0000
P1.0/ADC0
0001
P1.1/ADC1
0010
P1.2/ADC2
0011
P1.3/ADC3
0100
P1.4/ADC4
0101
P1.5/ADC5
0110
P1.6/ADC6
0111
P1.7/ADC7
1000
P0.0/ADC8
1001
P0.1/ADC9
1010
P0.2/ADC10
1011
P0.3/ADC11
1100
无此通道
1101
无此通道
1110
无此通道
1111
测试内部 1.19V
(STC8H1K08 系列)
ADC_CHS[3:0]
ADC 通道
0000
P1.0/ADC0
0001
P1.1/ADC1
0010
无此通道
0011
无此通道
0100
无此通道
0101
无此通道
0110
无此通道
0111
无此通道
1000
P3.0/ADC8
1001
P3.1/ADC9
1010
P3.2/ADC10
1011
P3.3/ADC11
1100
P3.4/ADC12
1101
P3.5/ADC13
1110
P3.6/ADC14
1111
测试内部 1.19V
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 510 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
(STC8H3K64S4/STC8H3K64S2 系列)
ADC_CHS[3:0]
ADC 通道
0000
P1.0/ADC0
0001
P1.1/ADC1
0010
P1.2/ADC2
0011
无此通道
0100
无此通道
0101
无此通道
0110
P1.6/ADC6
0111
P1.7/ADC7
1000
P0.0/ADC8
1001
P0.1/ADC9
1010
P0.2/ADC10
1011
P0.3/ADC11
1100
P0.4/ADC12
1101
P0.5/ADC13
1110
P0.6/ADC14
1111
测试内部 1.19V
(STC8H8K64U、STC8H2K64T 系列)
ADC_CHS[3:0]
ADC 通道
0000
P1.0/ADC0
0001
P1.1/ADC1
0010
P5.4/ADC2
0011
P1.3/ADC3
0100
P1.4/ADC4
0101
P1.5/ADC5
0110
P1.6/ADC6
0111
P1.7/ADC7
1000
P0.0/ADC8
1001
P0.1/ADC9
1010
P0.2/ADC10
1011
P0.3/ADC11
1100
P0.4/ADC12
1101
P0.5/ADC13
1110
P0.6/ADC14
1111
测试内部 1.19V
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 511 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17.1.2 ADC配置寄存器(ADCCFG)
符号
地址
B7
B6
B5
B4
ADCCFG
DEH
-
-
RESFMT
-
B3
B2
B1
B0
SPEED[3:0]
RESFMT:ADC 转换结果格式控制位(STC8H1K28 系列、STC8H1K08 系列)
0:转换结果左对齐。ADC_RES 保存结果的高 8 位,ADC_RESL 保存结果的低 2 位。格式如下:
ADC_RES
ADC_RESL
D9 D8 D7 D6 D5 D4 D3 D2
D1 D0
0
0
0
0
0
0
自动填0
10位转换结果
RESFMT=0
1:转换结果右对齐。ADC_RES 保存结果的高 2 位,ADC_RESL 保存结果的低 8 位。格式如下:
ADC_RES
0
0
0
0
0
0
ADC_RESL
D9 D8
D7 D6 D5 D4 D3 D2 D1 D0
自动填0
10位转换结果
RESFMT=1
RESFMT:ADC 转换结果格式控制位(STC8H3K64S4 系列、STC8H3K64S2 系列、STC8H8K64U 系
列、STC8H2K64T 系列)
0:转换结果左对齐。ADC_RES 保存结果的高 8 位,ADC_RESL 保存结果的低 4 位。格式如下:
ADC_RES
ADC_RESL
D11 D10 D9 D8 D7 D6 D5 D4
D3 D2 D1 D0
0
0
0
0
自动填0
12位转换结果
RESFMT=0
1:转换结果右对齐。ADC_RES 保存结果的高 4 位,ADC_RESL 保存结果的低 8 位。格式如下:
ADC_RES
0
0
0
自动填0
ADC_RESL
0 D11 D10 D9 D8
D7 D6 D5 D4 D3 D2 D1 D0
12位转换结果
RESFMT=1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 512 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
SPEED[3:0]:设置 ADC 工作时钟频率{FADC=SYSclk/2/(SPEED+1)}
SPEED[3:0]
给 ADC 的工作时钟频率
0000
SYSclk/2/1
0001
SYSclk/2/2
0010
SYSclk/2/3
...
...
1101
SYSclk/2/14
1110
SYSclk/2/15
1111
SYSclk/2/16
17.1.3 ADC转换结果寄存器(ADC_RES,ADC_RESL)
符号
地址
ADC_RES
BDH
ADC_RESL
BEH
B7
B6
B5
B4
B3
B2
B1
B0
当 A/D 转换完成后,10 位/12 位的转换结果会自动保存到 ADC_RES 和 ADC_RESL 中。保存结果
的数据格式请参考 ADC_CFG 寄存器中的 RESFMT 设置。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 513 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17.1.4 ADC时序控制寄存器
符号
地址
B7
ADCTIM
FEA8H
CSSETUP
B6
B5
B4
B3
CSHOLD[1:0]
B2
B1
B0
SMPDUTY[4:0]
CSSETUP:ADC 通道选择时间控制 Tsetup
CSSETUP
占用 ADC 工作时钟数
0
1(默认值)
1
2
CSHOLD[1:0]:ADC 通道选择保持时间控制 Thold
CSHOLD[1:0]
占用 ADC 工作时钟数
00
1
01
2(默认值)
10
3
11
4
SMPDUTY[4:0]:ADC 模拟信号采样时间控制 Tduty(注意:SMPDUTY 一定不能设置小于 01010B)
SMPDUTY[4:0]
占用 ADC 工作时钟数
00000
1
00001
2
...
...
01010
11(默认值)
...
...
11110
31
11111
32
ADC 数模转换时间:Tconvert
10 位 ADC 的转换时间固定为 10 个 ADC 工作时钟
12 位 ADC 的转换时间固定为 12 个 ADC 工作时钟
一个完整的 ADC 转换时间为: Tsetup + Tduty + Thold + Tconvert,如下图所示
ADC时钟FADC
SYSclk/2/(SPEED+1)
使能信号
ADC_POWER
开始信号
ADC_START
完成信号
ADC_FLAG
模拟输入通道
ADCx_IN
开始选择通道
开始采样
结束采样
关闭通道并开始转换
转换完成
采样时间Tduty
转换时间Tconvert
(SMPDUTY+1)
(10位ADC为10个ADC时钟)
准备时间Tsetup
保持时间Thold
(CSSETUP+1)
(CSHOLD+1)
(12位ADC为12个ADC时钟)
ADC整体转换时序图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 514 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17.2 ADC相关计算公式
17.2.1 ADC速度计算公式
ADC 的转换速度由 ADCCFG 寄存器中的 SPEED 和 ADCTIM 寄存器共同控制。转换速度的计算公式如
下所示:
MCU工作频率SYSclk
10位ADC转换速度 =
2×(SPEED[3:0] + 1)×[(CSSETUP + 1) + (CSHOLD + 1) + (SMPDUTY + 1) + 10]
MCU工作频率SYSclk
12位ADC转换速度 =
2×(SPEED[3:0] + 1)×[(CSSETUP + 1) + (CSHOLD + 1) + (SMPDUTY + 1) + 12]
注意:
10 位 ADC 的速度不能高于 500KHz
12 位 ADC 的速度不能高于 800KHz
SMPDUTY 的值不能小于 10,建议设置为 15
CSSETUP 可使用上电默认值 0
CHOLD 可使用上电默认值 1(ADCTIM 建议设置为 3FH)
17.2.2 ADC转换结果计算公式
ADC被转换通道的输入电压Vin
10位ADC转换结果 = 1024 ×
(无独立ADC_Vref+管脚)
MCU工作电压Vcc
ADC被转换通道的输入电压Vin
10位ADC转换结果 = 1024 ×
(有独立ADC_Vref+管脚)
ADC外部参考源的电压
ADC被转换通道的输入电压Vin
12位ADC转换结果 = 4096 ×
(无独立ADC_Vref+管脚)
MCU工作电压Vcc
ADC被转换通道的输入电压Vin
12位ADC转换结果 = 4096 ×
(有独立ADC_Vref+管脚)
ADC外部参考源的电压
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 515 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17.2.3 反推ADC输入电压计算公式
10位ADC转换结果
ADC被转换通道的输入电压Vin = MCU工作电压Vcc ×
(无独立ADC_Vref+管脚)
1024
10位ADC转换结果
ADC被转换通道的输入电压Vin = ADC外部参考源的电压 ×
(有独立ADC_Vref+管脚)
1024
12位ADC转换结果
ADC被转换通道的输入电压Vin = MCU工作电压Vcc ×
(无独立ADC_Vref+管脚)
4096
12位ADC转换结果
ADC被转换通道的输入电压Vin = ADC外部参考源的电压 ×
(有独立ADC_Vref+管脚)
4096
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 516 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17.2.4 反推工作电压计算公式
当需要使用 ADC 输入电压和 ADC 转换结果反推工作电压时,若目标芯片无独立的 ADC_Vref+管脚,
则可直接测量并使用下面公式,若目标芯片有独立 ADC_Vref+管脚时,则必须将 ADC_Vref+管脚连接
到 Vcc 管脚。
ADC被转换通道的输入电压Vin
MCU工作电压Vcc = 1024 ×
10位ADC转换结果
ADC被转换通道的输入电压Vin
MCU工作电压Vcc = 4096 ×
12位ADC转换结果
17.3 10 位ADC静态特性
符号
最小值
典型值
最大值
单位
分辨率
-
10
-
Bits
ET
整体误差
-
1.3
3
LSB
EO
偏移误差
-
0.3
1
LSB
EG
增益误差
-
0
1
LSB
ED
微分非线性误差
-
0.7
1.5
LSB
EI
积分非线性误差
-
1
2
LSB
RAIN
通道等效电阻
-
∞
-
ohm
RESD
采样保持电容前串接的抗
静电电阻
-
700
-
ohm
CADC
内部采样保持电容
-
16.5
-
pF
最小值
典型值
最大值
单位
分辨率
-
12
-
Bits
ET
整体误差
-
0.5
1
LSB
EO
偏移误差
-
-0.1
1
LSB
EG
增益误差
-
0
1
LSB
ED
微分非线性误差
-
0.7
1.5
LSB
EI
积分非线性误差
-
1
2
LSB
RAIN
通道等效电阻
-
∞
-
ohm
RESD
采样保持电容前串接的抗
静电电阻
-
700
-
ohm
CADC
内部采样保持电容
-
16.5
-
pF
RES
描述
17.4 12 位ADC静态特性
符号
RES
描述
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 517 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
17.5 ADC应用参考线路图
17.5.1 一般精度ADC参考线路图
Vcc
系统电源
(可从USB取电)
Vin
Power On
Vcc
47u
C?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
P0.0
P0.1
P0.2
P0.3
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
Vcc
Vref+
Gnd
P2.7
P2.6
P2.5
P2.4
P2.3
P2.2
P2.1
P2.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
Vcc
SP3232/
SP232/
MAX3232/
MAX232
0.1u
0.1u
0.1u
0.1u
1
2
3
4
5
6
7
8
C1+
VCC
V+
GND
C1T1OUT
C2+
R1IN
C2R1OUT
VT1IN
T2OUT
T2IN
R2IN
R2OUT
16 10u
15
14
13
12
11
10
9
0.1u
1
6
2
7
3
8
4
9
5
100欧
STC8H1K16
1N5819
47u钽电容(封装3528)参考价 CCR4L = 0x05;
////////////通道配置////////////
TIM2-> CCMR1 = 0x43;
TIM2-> CCMR2 = 0x41;
TIM2-> CCMR3 = 0x41;
TIM2-> CCMR4 = 0x70;
TIM2-> CCER1 = 0x11;
TIM2-> CCER2 = 0x11;
//通道模式配置
////////////模式配置////////////
TIM2-> CR2 = 0xf0;
TIM2-> CR1 = 0x81;
TIM2-> SMCR = 0x44;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 670 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
////////////使能&中断配置////////////
TIM2-> BKR = 0x80;
TIM2-> IER = 0x02;
技术支持: 13922829991
研发顾问: 13922805190
//主输出使能
//使能中断
/************PWMA 控制马达换相****************/
////////////时基单元////////////
TIM1-> PSCRH = 0x00;
TIM1-> PSCRL = 0x00;
TIM1-> ARRH = (u8)(TIM1_Period >> 8);
TIM1-> ARRL = (u8)(TIM1_Period);
////////////通道配置////////////
TIM1-> CCMR1 = 0x70;
TIM1-> CCMR2 = 0x70;
TIM1-> CCMR3 = 0x70;
TIM1-> CCER1 = 0x11;
TIM1-> CCER2 = 0x01;
TIM1-> OISR = 0xAA;
//预分频寄存器
//通道模式配置
//配置通道输出使能和极性
//配置通道输出使能和极性
//配置 MOE=0 时各通道输出电平
////////////模式配置////////////
TIM1-> CR1 = 0xA0;
TIM1-> CR2 = 0x24;
TIM1-> SMCR = 0x20;
////////////使能&中断配置////////////
TIM1-> BKR = 0x1c;
TIM1-> CR1 |= 0x01;
//使能计数器
EA = 1;
while (1)
{
P22=~P22;
Display_dat = Motor_speed;
//Motor_speed
switch(Motor_sta)
{
case START:
MOTOR_START();
Motor_sta = RUN;
break;
case RUN:
SPEED_ADJ();
if((KEY_detect() == 2)||(BRK_occur == TRUE))
Motor_sta = STOP;
break;
case STOP:
MOTOR_STOP();
Motor_sta = IDLE;
break;
case IDLE:
if(KEY_detect()==1)
Motor_sta = START;
BRK_occur = FALSE;
Motor_speed = 0;
CAP1_avg = 0;
CAP1_cnt = 0;
CAP1_sum = 0;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 671 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
break;
}
}
}
void TIM0_ISR() interrupt 1
{
TH0=0xf0;
if(Display_num>8)
Display_num=1;
LED4_Display(Display_dat,Display_num);
Display_num=(Display_num CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_OCMODE_PWMB;
break;
case 2:
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 |= CC3N_POLARITY_HIGH;
break;
case 6:
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_OCMODE_PWMB;
break;
case 4:
TIM1-> CCER1 |= CC1N_POLARITY_HIGH;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
break;
case 5:
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_OCMODE_PWMB;
break;
case 1:
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
TIM1-> CCER1 |= CC2N_POLARITY_HIGH;
break;
}
CAP1_sum += TIM2_CAP1_v;
CAP1_cnt++;
if(CAP1_cnt==128)
{
CAP1_cnt=0;
CAP1_avg = (CAP1_sum>>7);
CAP1_sum = 0;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 672 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
Motor_speed = 5000000/CAP1_avg;
}
//清零
TIM1->SR1 &=~0x20;
}
if((TIM1->SR1 & 0x80))
{
BRK_occur = TRUE;
TIM1->SR1 &=~0x80;
}
//BRK
//清零
}
void PWMB_ISR() interrupt 27
{
if((TIM2->SR1 & 0x02))
{
TIM2_CAP1_v = TIM2-> CCR1H;
TIM2_CAP1_v = (TIM2_CAP1_vSR1 &=~0x02;
}
}
void DelayXus(unsigned char delayTime)
{
int i = 0;
while( delayTime--)
{
for( i = 0 ; i < 1 ; i++);
}
}
void DelayXms( unsigned char delayTime )
{
int i = 0;
while( delayTime--)
{
for( i = 0 ; i < 2 ; i++)
{
DelayXus(100);
}
}
}
unsigned int ADC_Convert(u8 ch)
{
u16 res=0;
ADC_CONTR &= ~0x0f;
ADC_CONTR |= ch;
ADC_CONTR |= 0x40;
DelayXus(1);
while (!(ADC_CONTR & 0x20));
ADC_CONTR &= ~0x20;
res = ADC_RES;
res = (res6);
return res;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 673 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void SPEED_ADJ()
{
u16 ADC_result;
ADC_result = (ADC_Convert(RV09_CH)/3);
TIM1-> CCR1H = (u8)(ADC_result >> 8);
TIM1-> CCR1L = (u8)(ADC_result);
TIM1-> CCR2H = (u8)(ADC_result >> 8);
TIM1-> CCR2L = (u8)(ADC_result);
TIM1-> CCR3H = (u8)(ADC_result >> 8);
TIM1-> CCR3L = (u8)(ADC_result);
//计数器比较值
}
unsigned char RD_HALL()
{
unsigned char Hall_sta = 0;
(P17)? (Hall_sta|=0x01) : (Hall_sta&=~0x01);
(P54)? (Hall_sta|=0x02) : (Hall_sta&=~0x02);
(P33)? (Hall_sta|=0x04) : (Hall_sta&=~0x04);
return Hall_sta;
}
void MOTOR_START()
{
u16 temp;
u16 ADC_result;
TIM1-> CCR1H = (u8)(TIM1_STPulse >> 8);
TIM1-> CCR1L = (u8)(TIM1_STPulse);
TIM1-> CCR2H = (u8)(TIM1_STPulse >> 8);
TIM1-> CCR2L = (u8)(TIM1_STPulse);
TIM1-> CCR3H = (u8)(TIM1_STPulse >> 8);
TIM1-> CCR3L = (u8)(TIM1_STPulse);
TIM1-> BKR |= 0x80;
TIM1-> IER |= 0xA0;
//计数器比较值
//主输出使能相当于总开关
//使能中断
switch(RD_HALL())
{
case 1:
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
TIM1-> CCER1 |= CC2N_POLARITY_HIGH;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_OCMODE_PWMB;
break;
case 3:
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_OCMODE_PWMB;
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 674 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 |= CC3N_POLARITY_HIGH;
break;
case 2:
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 |= CC3N_POLARITY_HIGH;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_OCMODE_PWMB;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
break;
case 6:
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_OCMODE_PWMB;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
TIM1-> CCER1 |= CC1N_POLARITY_HIGH;
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
break;
case 4:
TIM1-> CCER1 |= CC1N_POLARITY_HIGH;
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_OCMODE_PWMB;
break;
case 5:
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_OCMODE_PWMB;
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
TIM1-> CCER1 |= CC2N_POLARITY_HIGH;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
break;
}
ADC_result = (ADC_Convert(RV09_CH)/3);
for(temp = TIM1_STPulse; temp > ADC_result; temp--)
{
TIM1-> CCR1H = (u8)(temp >> 8);
TIM1-> CCR1L = (u8)(temp);
TIM1-> CCR2H = (u8)(temp >> 8);
TIM1-> CCR2L = (u8)(temp);
TIM1-> CCR3H = (u8)(temp >> 8);
TIM1-> CCR3L = (u8)(temp);
DelayXms(10);
深圳国芯人工智能有限公司
//计数器比较值
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 675 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
}
void MOTOR_STOP()
{
TIM1-> BKR &= ~0x80;
TIM1-> IER &= ~0xA0;
}
void LED4_Display (u16 dat,u8 num)
{
switch(num)
{
case 0x01:
LED_OUT(LED_0F[(dat/1)%10]);
LED_OUT(0x01);
RCLK = 0;
RCLK = 1;
break;
case 0x02:
LED_OUT(LED_0F[(dat/10)%10]
LED_OUT(0x02);
RCLK = 0;
RCLK = 1;
break;
case 0x04:
LED_OUT(LED_0F[(dat/100)%10]);
LED_OUT(0x04);
RCLK = 0;
RCLK = 1;
break;
case 0x08:
LED_OUT(LED_0F[(dat/1000)%10]);
LED_OUT(0x08);
RCLK = 0;
RCLK = 1;
break;
}
}
void LED_OUT(u8 X)
{
u8 i;
for(i=8;i>=1;i--)
{
if (X&0x80) DIO=1;
else DIO=0;
X ARRH = 0xff;
//自动重装载寄存器,计数器 overflow 点
TIM2-> ARRL = 0xff;
TIM2-> CCR4H = 0x00;
TIM2-> CCR4L = 0x05;
//////////// 通道配置 ////////////
TIM2-> CCMR1 = 0xf3;
//通道模式配置
TIM2-> CCMR2 = 0xf1;
TIM2-> CCMR3 = 0xf1;
TIM2-> CCMR4 = 0x70;
TIM2-> CCER1 = 0x11;
TIM2-> CCER2 = 0x11;
//////////// 模式配置 ////////////
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 681 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
TIM2-> CR2 = 0xf0;
TIM2-> CR1 = 0x81;
TIM2-> SMCR = 0x44;
//////////// 使能 & 中断配置 ////////////
TIM2-> BKR = 0x80;
TIM2-> IER = 0x02;
/************PWMA 控制马达换相 ****************/
//////////// 时基单元 ////////////
TIM1-> PSCRH = 0x00;
TIM1-> PSCRL = 0x00;
TIM1-> ARRH = (u8)(TIM1_Period >> 8);
TIM1-> ARRL = (u8)(TIM1_Period);
//////////// 通道配置 ////////////
TIM1-> CCMR1 = 0x70;
TIM1-> CCMR2 = 0x70;
TIM1-> CCMR3 = 0x70;
TIM1-> CCER1 = 0x11;
TIM1-> CCER2 = 0x01;
TIM1-> OISR = 0xAA;
//////////// 模式配置 ////////////
TIM1-> CR1 = 0xA0;
TIM1-> CR2 = 0x24;
TIM1-> SMCR = 0x20;
TIM1-> BKR = 0x0c;
//////////// 使能 & 中断配置 ////////////
TIM1-> CR1 |= 0x01;
EA = 1;
技术支持: 13922829991
研发顾问: 13922805190
//主输出使能
//使能中断
//预分频寄存器
//通道模式配置
//配置通道输出使能和极性
//配置通道输出使能和极性
//配置 MOE=0 时各通道输出电平
//使能计数器
UART_INIT();
while (1)
{
switch(Motor_sta)
{
case START:
MOTOR_START();
Motor_sta = RUN;
for(temp = TIM1_STPulse; temp > ADC_result; temp--)
{
ADC_result = (ADC_Convert(RV09_CH)/4);
TIM1-> CCR1H = (u8)(temp >> 8);
TIM1-> CCR1L = (u8)(temp);
TIM1-> CCR2H = (u8)(temp >> 8);
TIM1-> CCR2L = (u8)(temp);
TIM1-> CCR3H = (u8)(temp >> 8);
TIM1-> CCR3L = (u8)(temp);
DelayXms(10);
}
break;
case RUN:
SPEED_ADJ();
//马达调速
if((BRK_occur == TRUE))
Motor_sta = STOP;
break;
case STOP:
MOTOR_STOP();
Motor_sta = IDLE;
break;
case IDLE:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
//开环启动
传真: 0513-5501 2926/2956/2947
- 682 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
if(KEY_detect()==1)
Motor_sta = START;
BRK_occur = FALSE;
Motor_speed = 0;
CAP1_avg = 0;
CAP1_cnt = 0;
CAP1_sum = 0;
break;
技术支持: 13922829991
研发顾问: 13922805190
//启动马达
}
}
}
void TIM0_ISR() interrupt 1
{
if(Motor_sta == START)
{
if(Timer0_cnt CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_OCMODE_PWMB;
break;
case 1:
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 |= CC3N_POLARITY_HIGH;
break;
case 2:
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_OCMODE_PWMB;
break;
case 3:
TIM1-> CCER1 |= CC1N_POLARITY_HIGH;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
break;
case 4:
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_OCMODE_PWMB;
break;
case 5:
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
TIM1-> CCER1 |= CC2N_POLARITY_HIGH;
break;
}
HA++;
}
if(Motor_sta == RUN)
{
TR0=0;
switch(RD_HALL())
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 683 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
case 3:
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_OCMODE_PWMB;
break;
case 1:
TIM1-> CCER1 &= CC2N_POLARITY_LOW;
TIM1-> CCER2 |= CC3N_POLARITY_HIGH;
break;
case 5:
TIM1-> CCMR1 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR1 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_OCMODE_PWMB;
break;
case 4:
TIM1-> CCER1 |= CC1N_POLARITY_HIGH;
TIM1-> CCER2 &= CC3N_POLARITY_LOW;
break;
case 6:
TIM1-> CCMR2 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR2 |= TIM1_FORCE_INACTIVE;
TIM1-> CCMR3 &= ~TIM1_OCMODE_MASK;
TIM1-> CCMR3 |= TIM1_OCMODE_PWMB;
break;
case 2:
TIM1-> CCER1 &= CC1N_POLARITY_LOW;
TIM1-> CCER1 |= CC2N_POLARITY_HIGH;
break;
}
}
}
void PWMA_ISR() interrupt 26
{
if((TIM1->SR1 & 0x20))
{
P00=0;
CAP1_sum += TIM2_CAP1_v;
CAP1_cnt++;
if(CAP1_cnt==128)
{
CAP1_cnt=0;
CAP1_avg = (CAP1_sum>>7);
CAP1_sum = 0;
Motor_speed = 5000000/CAP1_avg;
}
TIM1->SR1 &=~0x20;
}
if((TIM1->SR1 & 0x80))
{
BRK_occur = TRUE;
TIM1->SR1 &=~0x80;
}
}
//清零
//BRK
//清零
void PWMB_ISR() interrupt 27
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 684 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
unsigned char ccr_tmp=0;
if((TIM2->SR1 & 0X02))
{
ccr_tmp = TIM2-> CCR1H;
if(ccr_tmp>1)
//软件滤波
{
TIM2_CAP1_v = ccr_tmp;
TIM2_CAP1_v = (TIM2_CAP1_v>9);
}
}
TIM2->SR1 &=~0X02;
}
}
void UART_INIT()
{
SCON = 0x50;
AUXR = 0x40;
TMOD = 0x20;
//
//8 位可变波特率
//定时器 1 为 1T 模式
//定时器 1 为模式 0(16 位自动重载)
TL1 = 254;
TH1 = 254;
ET1 = 0;
TR1 = 1;
}
void DelayXus(unsigned char delayTime)
{
int i = 0;
while( delayTime--)
{
for( i = 0 ; i < 1 ; i++);
}
}
void DelayXms( unsigned char delayTime )
{
int i = 0;
while( delayTime--)
{
for( i = 0 ; i < 2 ; i++)
{
DelayXus(100);
}
}
}
unsigned int ADC_Convert(u8 ch)
{
u16 res=0;
ADC_CONTR &= ~0x0f;
ADC_CONTR |= ch;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 685 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ADC_CONTR |= 0x40;
DelayXus(1);
while (!(ADC_CONTR & 0x20));
ADC_CONTR &= ~0x20;
res = ADC_RES;
res = (res6);
if (res < 360) res=360;
if (res > 900) res=900;
return res;
}
void SPEED_ADJ()
{
u16 ADC_result;
ADC_result = (ADC_Convert(RV09_CH)/4);
TIM1-> CCR1H = (u8)(ADC_result >> 8);
TIM1-> CCR1L = (u8)(ADC_result);
TIM1-> CCR2H = (u8)(ADC_result >> 8);
TIM1-> CCR2L = (u8)(ADC_result);
TIM1-> CCR3H = (u8)(ADC_result >> 8);
TIM1-> CCR3L = (u8)(ADC_result);
//调速旋钮 ADC 采样
//计数器比较值
}
//读霍尔传感器
unsigned char RD_HALL()
{
unsigned char Hall_sta = 0;
DelayXus(40);
(P17)? (Hall_sta|=0x01) : (Hall_sta&=~0x01);
(P54)? (Hall_sta|=0x02) : (Hall_sta&=~0x02);
(P33)? (Hall_sta|=0x04) : (Hall_sta&=~0x04);
return Hall_sta;
}
void MOTOR_START()
{
TIM1-> CCR1H = (u8)(TIM1_STPulse >> 8);
TIM1-> CCR1L = (u8)(TIM1_STPulse);
TIM1-> CCR2H = (u8)(TIM1_STPulse >> 8);
TIM1-> CCR2L = (u8)(TIM1_STPulse);
TIM1-> CCR3H = (u8)(TIM1_STPulse >> 8);
TIM1-> CCR3L = (u8)(TIM1_STPulse);
TIM1-> BKR |= 0x80;
TIM1-> IER = 0x00;
TR0 = 1;
//计数器比较值
//主输出使能相当于总开关
//使能中断
while (HA < 6*20);
TIM1-> IER = 0xa0;
//使能中断
}
void MOTOR_STOP()
{
TIM1-> BKR &= ~0x80;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 686 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TIM1-> IER &= ~0x20;
}
unsigned char KEY_detect()
{
if(!P37)
{
DelayXms(10);
if(!P37)
{
return 1;
}
else return 0;
}
else if(!P03)
{
DelayXms(10);
if(!P03)
{
return 2;
}
else return 0;
}
else return 0;
}
20.8.3 正交编码器模式
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef struct TIM1_struct
{
volatile unsigned char CR1;
volatile unsigned char CR2;
volatile unsigned char SMCR;
volatile unsigned char ETR;
volatile unsigned char IER;
volatile unsigned char SR1;
volatile unsigned char SR2;
volatile unsigned char EGR;
volatile unsigned char CCMR1;
volatile unsigned char CCMR2;
volatile unsigned char CCMR3;
volatile unsigned char CCMR4;
volatile unsigned char CCER1;
volatile unsigned char CCER2;
volatile unsigned char CNTRH;
volatile unsigned char CNTRL;
volatile unsigned char PSCRH;
volatile unsigned char PSCRL;
volatile unsigned char ARRH;
volatile unsigned char ARRL;
volatile unsigned char RCR;
深圳国芯人工智能有限公司
/*!< control register 1 */
/*!< control register 2 */
/*!< Synchro mode control register */
/*!< external trigger register */
/*!< interrupt enable register*/
/*!< status register 1 */
/*!< status register 2 */
/*!< event generation register */
/*!< CC mode register 1 */
/*!< CC mode register 2 */
/*!< CC mode register 3 */
/*!< CC mode register 4 */
/*!< CC enable register 1 */
/*!< CC enable register 2 */
/*!< counter high */
/*!< counter low */
/*!< prescaler high */
/*!< prescaler low */
/*!< auto-reload register high */
/*!< auto-reload register low */
/*!< Repetition Counter register */
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 687 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
volatile unsigned char CCR1H;
volatile unsigned char CCR1L;
volatile unsigned char CCR2H;
volatile unsigned char CCR2L;
volatile unsigned char CCR3H;
volatile unsigned char CCR3L;
volatile unsigned char CCR4H;
volatile unsigned char CCR4L;
volatile unsigned char BKR;
volatile unsigned char DTR;
volatile unsigned char OISR;
}TIM1_TypeDef;
技术支持: 13922829991
研发顾问: 13922805190
/*!< capture/compare register 1 high */
/*!< capture/compare register 1 low */
/*!< capture/compare register 2 high */
/*!< capture/compare register 2 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< Break Register */
/*!< dead-time register */
/*!< Output idle register */
#define
TIM1_BaseAddress
0xFEC0
#define
#define
#define
TIM1
PWMA_ENO
PWMA_PS
((TIM1_TypeDef xdata*)TIM1_BaseAddress)
(*(unsigned char volatile xdata *)0xFEB1)
(*(unsigned char volatile xdata *)0xFEB2)
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P_SW2
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xba;
sbit
P03
=
P0^3;
unsigned char cnt_H, cnt_L;
void main(void)
{
P_SW2 = 0x80;
P1M1 = 0x0f;
P1M0 = 0x00;
PWMA_ENO = 0x00;
PWMA_PS = 0x00;
//配置成 TRGI 的 pin 需关掉 ENO 对应 bit 并配成 input
//00:PWM at P1
TIM1-> PSCRH = 0x00;
TIM1-> PSCRL = 0x00;
//预分频寄存器
TIM1-> CCMR1
TIM1-> CCMR2
= 0x21;
= 0x21;
//通道模式配置为输入,接编码器,滤波器 4 时钟
//通道模式配置为输入,接编码器,滤波器 4 时钟
TIM1-> SMCR
= 0x03;
//编码器模式 3
TIM1-> CCER1
TIM1-> CCER2
= 0x55;
= 0x55;
//配置通道使能和极性
//配置通道使能和极性
TIM1-> IER
= 0x02;
TIM1-> CR1 |= 0x01;
//使能中断
//使能计数器
EA = 1;
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 688 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
/******************** PWM 中断读编码器计数值**************************/
void PWMA_ISR() interrupt 26
{
if (TIM1->SR1 & 0X02)
{
P03 = ~P03;
cnt_H = TIM1->CCR1H;
cnt_L = TIM1->CCR1L;
TIM1->SR1 & = ~0X02;
}
}
20.8.4 单脉冲模式(触发控制脉冲输出)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef struct TIM1_struct
{
volatile unsigned char CR1;
volatile unsigned char CR2;
volatile unsigned char SMCR;
volatile unsigned char ETR;
volatile unsigned char IER;
volatile unsigned char SR1;
volatile unsigned char SR2;
volatile unsigned char EGR;
volatile unsigned char CCMR1;
volatile unsigned char CCMR2;
volatile unsigned char CCMR3;
volatile unsigned char CCMR4;
volatile unsigned char CCER1;
volatile unsigned char CCER2;
volatile unsigned char CNTRH;
volatile unsigned char CNTRL;
volatile unsigned char PSCRH;
volatile unsigned char PSCRL;
volatile unsigned char ARRH;
volatile unsigned char ARRL;
volatile unsigned char RCR;
volatile unsigned char CCR1H;
volatile unsigned char CCR1L;
volatile unsigned char CCR2H;
volatile unsigned char CCR2L;
volatile unsigned char CCR3H;
volatile unsigned char CCR3L;
volatile unsigned char CCR4H;
volatile unsigned char CCR4L;
volatile unsigned char BKR;
volatile unsigned char DTR;
volatile unsigned char OISR;
}TIM1_TypeDef;
#define
TIM1_BaseAddress
深圳国芯人工智能有限公司
/*!< control register 1 */
/*!< control register 2 */
/*!< Synchro mode control register */
/*!< external trigger register */
/*!< interrupt enable register*/
/*!< status register 1 */
/*!< status register 2 */
/*!< event generation register */
/*!< CC mode register 1 */
/*!< CC mode register 2 */
/*!< CC mode register 3 */
/*!< CC mode register 4 */
/*!< CC enable register 1 */
/*!< CC enable register 2 */
/*!< counter high */
/*!< counter low */
/*!< prescaler high */
/*!< prescaler low */
/*!< auto-reload register high */
/*!< auto-reload register low */
/*!< Repetition Counter register */
/*!< capture/compare register 1 high */
/*!< capture/compare register 1 low */
/*!< capture/compare register 2 high */
/*!< capture/compare register 2 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< Break Register */
/*!< dead-time register */
/*!< Output idle register */
0xFEC0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 689 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
#define
#define
TIM1
PWMA_ENO
PWMA_PS
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P_SW2
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xba;
sbit
P03
=
P0^3;
技术支持: 13922829991
研发顾问: 13922805190
((TIM1_TypeDef xdata*)TIM1_BaseAddress)
(*(unsigned char volatile xdata *)0xFEB1)
(*(unsigned char volatile xdata *)0xFEB2)
void main(void)
{
P_SW2 = 0x80;
P0M1 = 0x00;
P0M0 = 0xFF;
P1M1 = 0x0c;
P1M0 = 0xF3;
PWMA_ENO = 0xF3;
PWMA_PS = 0x00;
//IO 输出 PWM
//00:PWM at P1
/**********************************************************
PWMx_duty = [CCRx/(ARR + 1)]*100
***********************************************************/
//配置成 TRGI 的 pin 需关掉 ENO 对应 bit 并配成 input
TIM1-> PSCRH = 0x00;
//预分频寄存器
TIM1-> PSCRL = 0x00;
TIM1-> DTR = 0x00;
//死区时间配置
TIM1-> CCMR1 = 0x68;
TIM1-> CCMR2 = 0x01;
TIM1-> CCMR3 = 0x68;
TIM1-> CCMR4 = 0x68;
TIM1-> SMCR
//通道模式配置
//配置成输入通道
= 0x66;
TIM1-> ARRH = 0x08;
TIM1-> ARRL = 0x00;
//自动重装载寄存器,计数器 overflow 点
TIM1-> CCR1H = 0x04;
TIM1-> CCR1L = 0x00;
TIM1-> CCR2H = 0x02;
TIM1-> CCR2L = 0x00;
TIM1-> CCR3H = 0x01;
TIM1-> CCR3L = 0x00;
TIM1-> CCR4H = 0x01;
TIM1-> CCR4L = 0x00;
//计数器比较值
TIM1-> CCER1 = 0x55;
TIM1-> CCER2 = 0x55;
//配置通道输出使能和极性
//配置通道输出使能和极性
TIM1-> BKR = 0x80;
TIM1-> IER = 0x02;
TIM1-> CR1 = 0x08;
TIM1-> CR1 |= 0x01;
//主输出使能 相当于总开关
//使能中断
//单脉冲模式
//使能计数器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 690 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
if (TIM1->SR1 & 0X02)
{
P03 = ~P03;
TIM1->SR1 & = ~0X02;
}
}
20.8.5 门控模式(输入电平使能计数器)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef struct TIM1_struct
{
volatile unsigned char CR1;
volatile unsigned char CR2;
volatile unsigned char SMCR;
volatile unsigned char ETR;
volatile unsigned char IER;
volatile unsigned char SR1;
volatile unsigned char SR2;
volatile unsigned char EGR;
volatile unsigned char CCMR1;
volatile unsigned char CCMR2;
volatile unsigned char CCMR3;
volatile unsigned char CCMR4;
volatile unsigned char CCER1;
volatile unsigned char CCER2;
volatile unsigned char CNTRH;
volatile unsigned char CNTRL;
volatile unsigned char PSCRH;
volatile unsigned char PSCRL;
volatile unsigned char ARRH;
volatile unsigned char ARRL;
volatile unsigned char RCR;
volatile unsigned char CCR1H;
volatile unsigned char CCR1L;
volatile unsigned char CCR2H;
volatile unsigned char CCR2L;
volatile unsigned char CCR3H;
volatile unsigned char CCR3L;
volatile unsigned char CCR4H;
volatile unsigned char CCR4L;
volatile unsigned char BKR;
volatile unsigned char DTR;
volatile unsigned char OISR;
}TIM1_TypeDef;
深圳国芯人工智能有限公司
/*!< control register 1 */
/*!< control register 2 */
/*!< Synchro mode control register */
/*!< external trigger register */
/*!< interrupt enable register*/
/*!< status register 1 */
/*!< status register 2 */
/*!< event generation register */
/*!< CC mode register 1 */
/*!< CC mode register 2 */
/*!< CC mode register 3 */
/*!< CC mode register 4 */
/*!< CC enable register 1 */
/*!< CC enable register 2 */
/*!< counter high */
/*!< counter low */
/*!< prescaler high */
/*!< prescaler low */
/*!< auto-reload register high */
/*!< auto-reload register low */
/*!< Repetition Counter register */
/*!< capture/compare register 1 high */
/*!< capture/compare register 1 low */
/*!< capture/compare register 2 high */
/*!< capture/compare register 2 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< Break Register */
/*!< dead-time register */
/*!< Output idle register */
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 691 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
#define
TIM1_BaseAddress
0xFEC0
#define
#define
#define
TIM1
PWMA_ENO
PWMA_PS
((TIM1_TypeDef xdata*)TIM1_BaseAddress)
(*(unsigned char volatile xdata *)0xFEB1)
(*(unsigned char volatile xdata *)0xFEB2)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P3M0
P3M1
P_SW2
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xb2;
0xb1;
0xba;
sbit
P03
=
P0^3;
研发顾问: 13922805190
void main(void)
{
P_SW2 = 0x80;
P0M1 = 0x00;
P0M0 = 0xFF;
P1M1 = 0x00;
P1M0 = 0xFF;
P3M1 = 0x04;
P3M0 = 0x00;
PWMA_ENO = 0xFF;
PWMA_PS = 0x00;
//IO 输出 PWM
//00:PWM at P1
/**********************************************************
PWMx_duty = [CCRx/(ARR + 1)]*100
***********************************************************/
//配置成 TRGI 的 pin 需关掉 ENO 对应 bit 并配成 input
TIM1-> PSCRH = 0x00;
//预分频寄存器
TIM1-> PSCRL = 0x00;
TIM1-> DTR = 0x00;
//死区时间配置
TIM1-> CCMR1 = 0x68;
TIM1-> CCMR2 = 0x68;
TIM1-> CCMR3 = 0x68;
TIM1-> CCMR4 = 0x68;
//通道模式配置
//配置成输入通道
TIM1-> SMCR = 0x75;
//门控触发模式 ETRF 输入
TIM1-> ARRH = 0x08;
TIM1-> ARRL = 0x00;
//自动重装载寄存器,计数器 overflow 点
TIM1-> CCR1H = 0x04;
TIM1-> CCR1L = 0x00;
TIM1-> CCR2H = 0x02;
TIM1-> CCR2L = 0x00;
TIM1-> CCR3H = 0x01;
TIM1-> CCR3L = 0x00;
TIM1-> CCR4H = 0x01;
TIM1-> CCR4L = 0x00;
//计数器比较值
//
//
//
//
//
//
//
TIM1-> CCER1 = 0x55;
TIM1-> CCER2 = 0x55;
//配置通道输出使能和极性
//配置通道输出使能和极性
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 692 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
TIM1-> BKR = 0x80;
TIM1-> IER = 0x02;
//主输出使能 相当于总开关
//使能中断
TIM1-> CR1 |= 0x01;
//使能计数器
研发顾问: 13922805190
EA = 1;
while (1) ;
}
void PWMA_ISR() interrupt 26
{
if(TIM1->SR1 & 0X02)
{
P03 = ~P03;
TIM1->SR1 &=~0X02;
}
}
20.8.6 外部时钟模式
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef struct TIM1_struct
{
volatile unsigned char CR1;
volatile unsigned char CR2;
volatile unsigned char SMCR;
volatile unsigned char ETR;
volatile unsigned char IER;
volatile unsigned char SR1;
volatile unsigned char SR2;
volatile unsigned char EGR;
volatile unsigned char CCMR1;
volatile unsigned char CCMR2;
volatile unsigned char CCMR3;
volatile unsigned char CCMR4;
volatile unsigned char CCER1;
volatile unsigned char CCER2;
volatile unsigned char CNTRH;
volatile unsigned char CNTRL;
volatile unsigned char PSCRH;
volatile unsigned char PSCRL;
volatile unsigned char ARRH;
volatile unsigned char ARRL;
volatile unsigned char RCR;
volatile unsigned char CCR1H;
volatile unsigned char CCR1L;
volatile unsigned char CCR2H;
volatile unsigned char CCR2L;
volatile unsigned char CCR3H;
volatile unsigned char CCR3L;
volatile unsigned char CCR4H;
volatile unsigned char CCR4L;
深圳国芯人工智能有限公司
/*!< control register 1 */
/*!< control register 2 */
/*!< Synchro mode control register */
/*!< external trigger register */
/*!< interrupt enable register*/
/*!< status register 1 */
/*!< status register 2 */
/*!< event generation register */
/*!< CC mode register 1 */
/*!< CC mode register 2 */
/*!< CC mode register 3 */
/*!< CC mode register 4 */
/*!< CC enable register 1 */
/*!< CC enable register 2 */
/*!< counter high */
/*!< counter low */
/*!< prescaler high */
/*!< prescaler low */
/*!< auto-reload register high */
/*!< auto-reload register low */
/*!< Repetition Counter register */
/*!< capture/compare register 1 high */
/*!< capture/compare register 1 low */
/*!< capture/compare register 2 high */
/*!< capture/compare register 2 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 693 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
volatile unsigned char BKR;
volatile unsigned char DTR;
volatile unsigned char OISR;
}TIM1_TypeDef;
技术支持: 13922829991
研发顾问: 13922805190
/*!< Break Register */
/*!< dead-time register */
/*!< Output idle register */
#define
TIM1_BaseAddress
0xFEC0
#define
#define
#define
TIM1
PWMA_ENO
PWMA_PS
((TIM1_TypeDef xdata*)TIM1_BaseAddress)
(*(unsigned char volatile xdata *)0xFEB1)
(*(unsigned char volatile xdata *)0xFEB2)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P3M0
P3M1
P_SW2
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xb2;
0xb1;
0xba;
sbit
P03
=
P0^3;
void main(void)
{
P_SW2 = 0x80;
P0M1 = 0x00;
P0M0 = 0xFF;
P1M1 = 0x00;
P1M0 = 0xFF;
P3M1 = 0x04;
P3M0 = 0x00;
PWMA_ENO = 0xFF;
PWMA_PS = 0x00;
//IO 输出 PWM
//00:PWM at P1
/**********************************************************
PWMx_duty = [CCRx/(ARR + 1)]*100
***********************************************************/
//配置成 TRGI 的 pin 需关掉 ENO 对应 bit 并配成 input
TIM1-> PSCRH = 0x00;
//预分频寄存器
TIM1-> PSCRL = 0x00;
TIM1-> DTR = 0x00;
//死区时间配置
TIM1-> CCMR1 = 0x68;
TIM1-> CCMR2 = 0x68;
TIM1-> CCMR3 = 0x68;
TIM1-> CCMR4 = 0x68;
//通道模式配置
//配置成输入通道
TIM1-> SMCR = 0x77;
//ETRF 输入
TIM1-> ARRH = 0x08;
TIM1-> ARRL = 0x00;
//自动重装载寄存器,计数器 overflow 点
TIM1-> CCR1H = 0x04;
TIM1-> CCR1L = 0x00;
TIM1-> CCR2H = 0x02;
TIM1-> CCR2L = 0x00;
TIM1-> CCR3H = 0x01;
TIM1-> CCR3L = 0x00;
//计数器比较值
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 694 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TIM1-> CCR4H = 0x01;
TIM1-> CCR4L = 0x00;
TIM1-> CCER1 = 0x55;
TIM1-> CCER2 = 0x55;
//配置通道输出使能和极性
//配置通道输出使能和极性
TIM1-> BKR = 0x80;
TIM1-> IER = 0x02;
TIM1-> CR1 |= 0x01;
//主输出使能 相当于总开关
//使能中断
//使能计数器
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
if(TIM1->SR1 & 0X02)
{
P03 = ~P03;
TIM1->SR1 &=~0X02;
}
}
20.8.7 输入捕获模式测量脉冲周期(捕获上升沿到上升沿或者下降
沿到下降沿)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef struct TIM1_struct
{
volatile unsigned char CR1;
volatile unsigned char CR2;
volatile unsigned char SMCR;
volatile unsigned char ETR;
volatile unsigned char IER;
volatile unsigned char SR1;
volatile unsigned char SR2;
volatile unsigned char EGR;
volatile unsigned char CCMR1;
volatile unsigned char CCMR2;
volatile unsigned char CCMR3;
volatile unsigned char CCMR4;
volatile unsigned char CCER1;
volatile unsigned char CCER2;
volatile unsigned char CNTRH;
volatile unsigned char CNTRL;
volatile unsigned char PSCRH;
volatile unsigned char PSCRL;
volatile unsigned char ARRH;
volatile unsigned char ARRL;
volatile unsigned char RCR;
volatile unsigned char CCR1H;
深圳国芯人工智能有限公司
/*!< control register 1 */
/*!< control register 2 */
/*!< Synchro mode control register */
/*!< external trigger register */
/*!< interrupt enable register*/
/*!< status register 1 */
/*!< status register 2 */
/*!< event generation register */
/*!< CC mode register 1 */
/*!< CC mode register 2 */
/*!< CC mode register 3 */
/*!< CC mode register 4 */
/*!< CC enable register 1 */
/*!< CC enable register 2 */
/*!< counter high */
/*!< counter low */
/*!< prescaler high */
/*!< prescaler low */
/*!< auto-reload register high */
/*!< auto-reload register low */
/*!< Repetition Counter register */
/*!< capture/compare register 1 high */
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 695 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
volatile unsigned char CCR1L;
volatile unsigned char CCR2H;
volatile unsigned char CCR2L;
volatile unsigned char CCR3H;
volatile unsigned char CCR3L;
volatile unsigned char CCR4H;
volatile unsigned char CCR4L;
volatile unsigned char BKR;
volatile unsigned char DTR;
volatile unsigned char OISR;
}TIM1_TypeDef;
技术支持: 13922829991
研发顾问: 13922805190
/*!< capture/compare register 1 low */
/*!< capture/compare register 2 high */
/*!< capture/compare register 2 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< Break Register */
/*!< dead-time register */
/*!< Output idle register */
#define
TIM1_BaseAddress
0xFEC0
#define
#define
#define
TIM1
PWMA_ENO
PWMA_PS
((TIM1_TypeDef xdata*)TIM1_BaseAddress)
(*(unsigned char volatile xdata *)0xFEB1)
(*(unsigned char volatile xdata *)0xFEB2)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P3M0
P3M1
P_SW2
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xb2;
0xb1;
0xba;
sbit
P03
=
P0^3;
int
cap;
void main(void)
{
P_SW2 = 0x80;
P0M1 = 0x00;
P0M0 = 0xFF;
P1M1 = 0x0c;
P1M0 = 0xF3;
//IO 输出 PWM
//00:PWM at P1
PWMA_ENO = 0xF3;
PWMA_PS = 0x00;
/*配置成 TRGI 的 pin 需关掉 ENO 对应 bit 并配成 input*/
TIM1-> PSCRH = 0x00;
TIM1-> PSCRL = 0x00;
TIM1-> DTR = 0x00;
TIM1-> CCMR1 = 0x68;
TIM1-> CCMR2 = 0x01;
TIM1-> CCMR3 = 0x68;
TIM1-> CCMR4 = 0x68;
//预分频寄存器
//死区时间配置
//通道模式配置
//配置成输入通道
TIM1-> SMCR = 0x66;
TIM1-> CCER1 = 0x55;
TIM1-> CCER2 = 0x55;
//配置通道输出使能和极性
//配置通道输出使能和极性
TIM1-> IER = 0x04;
//使能中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 696 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//使能计数器
TIM1-> CR1 |= 0x01;
EA = 1;
while (1);
}
/*通道 2 输入,捕获数据通过 TIM1-> CCR2H / TIM1-> CCR2L 读取 */
void PWMA_ISR() interrupt 26
{
if(TIM1->SR1 & 0X02)
{
P03 = ~P03;
TIM1->SR1 &=~0X02;
}
if(TIM1->SR1 & 0X04)
{
P03 = ~P03;
cap = TIM1-> CCR2H;
//读取 CCR2H
cap = (cap CCR2L;
//读取 CCR2L
TIM1->SR1 &=~0X04;
}
}
20.8.8 输入捕获模式测量脉冲高电平宽度(捕获上升沿到下降沿)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P_SW2
P1M0
P1M1
P3M0
P3M1
P5M0
P5M1
#define
#define
#define
#define
#define
#define
#define
#define
PWMA_CR1
PWMA_IER
PWMA_SR1
PWMA_CCMR1
PWMA_CCMR2
PWMA_CCER1
PWMA_CCR1
PWMA_CCR2
=
=
=
=
=
=
=
0xba;
0x92;
0x91;
0xb2;
0xb1;
0xca;
0xc9;
(*(unsigned char volatile xdata *)0xfec0)
(*(unsigned char volatile xdata *)0xfec4)
(*(unsigned char volatile xdata *)0xfec5)
(*(unsigned char volatile xdata *)0xfec8)
(*(unsigned char volatile xdata *)0xfec9)
(*(unsigned char volatile xdata *)0xfecc)
(*(unsigned int volatile xdata *)0xfed5)
(*(unsigned int volatile xdata *)0xfed7)
void main()
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 = 0x80;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 697 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//(CC1 捕获 TI1 上升沿,CC2 捕获 TI1 下降沿)
PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x01;
PWMA_CCMR2 = 0x02;
PWMA_CCER1 = 0x11;
PWMA_CCER1 |= 0x00;
PWMA_CCER1 |= 0x20;
PWMA_CR1 = 0x01;
//CC1 为输入模式,且映射到 TI1FP1 上
//CC2 为输入模式,且映射到 TI1FP2 上
//使能 CC1/CC2 上的捕获功能
//设置捕获极性为 CC1 的上升沿
//设置捕获极性为 CC2 的下降沿
//使能 CC2 捕获中断
PWMA_IER = 0x04;
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
unsigned int cnt;
if (PWMA_SR1 & 0x04)
{
PWMA_SR1 &= ~0x04;
cnt = PWMA_CCR2 - PWMA_CCR1;
//差值即为高电平宽度
}
}
20.8.9 输入捕获模式测量脉冲低电平宽度(捕获下降沿到上升沿)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P_SW2
P1M0
P1M1
P3M0
P3M1
P5M0
P5M1
#define
#define
#define
#define
#define
#define
#define
#define
PWMA_CR1
PWMA_IER
PWMA_SR1
PWMA_CCMR1
PWMA_CCMR2
PWMA_CCER1
PWMA_CCR1
PWMA_CCR2
=
=
=
=
=
=
=
0xba;
0x92;
0x91;
0xb2;
0xb1;
0xca;
0xc9;
(*(unsigned char volatile xdata *)0xfec0)
(*(unsigned char volatile xdata *)0xfec4)
(*(unsigned char volatile xdata *)0xfec5)
(*(unsigned char volatile xdata *)0xfec8)
(*(unsigned char volatile xdata *)0xfec9)
(*(unsigned char volatile xdata *)0xfecc)
(*(unsigned int volatile xdata *)0xfed5)
(*(unsigned int volatile xdata *)0xfed7)
void main()
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 698 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 = 0x80;
//(CC1 捕获 TI1 上升沿,CC2 捕获 TI1 下降沿)
PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x01;
PWMA_CCMR2 = 0x02;
PWMA_CCER1 = 0x11;
PWMA_CCER1 |= 0x00;
PWMA_CCER1 |= 0x20;
PWMA_CR1 = 0x01;
//CC1 为输入模式,且映射到 TI1FP1 上
//CC2 为输入模式,且映射到 TI1FP2 上
//使能 CC1/CC2 上的捕获功能
//设置捕获极性为 CC1 的上升沿
//设置捕获极性为 CC2 的下降沿
//使能 CC1 捕获中断
PWMA_IER = 0x02;
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
unsigned int cnt;
if (PWMA_SR1 & 0x02)
{
PWMA_SR1 &= ~0x02;
cnt = PWMA_CCR1 - PWMA_CCR2;
//差值即为低电平宽度
}
}
20.8.10输入捕获模式同时测量脉冲周期和占空比
注意:只有 PWM1P、PWM2P、PWM5、PWM6 这些端口上才可同时测量周期和占空比
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P_SW2
P1M0
P1M1
P3M0
P3M1
P5M0
P5M1
#define
#define
#define
#define
#define
#define
#define
#define
#define
PWMA_CR1
PWMA_SMCR
PWMA_IER
PWMA_SR1
PWMA_CCMR1
PWMA_CCMR2
PWMA_CCER1
PWMA_CCR1
PWMA_CCR2
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
0xba;
0x92;
0x91;
0xb2;
0xb1;
0xca;
0xc9;
(*(unsigned char volatile xdata *)0xfec0)
(*(unsigned char volatile xdata *)0xfec2)
(*(unsigned char volatile xdata *)0xfec4)
(*(unsigned char volatile xdata *)0xfec5)
(*(unsigned char volatile xdata *)0xfec8)
(*(unsigned char volatile xdata *)0xfec9)
(*(unsigned char volatile xdata *)0xfecc)
(*(unsigned int volatile xdata *)0xfed5)
(*(unsigned int volatile xdata *)0xfed7)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 699 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void main()
{
P1M0 = 0x00;
P1M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 = 0x80;
//(CC1 捕获 TI1 上升沿,CC2 捕获 TI1 下降沿)
//CC1 捕获周期宽度,CC2 捕获高电平宽度
PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x01;
PWMA_CCMR2 = 0x02;
PWMA_CCER1 = 0x11;
PWMA_CCER1 |= 0x00;
PWMA_CCER1 |= 0x20;
PWMA_SMCR = 0x54;
PWMA_CR1 = 0x01;
//CC1 为输入模式,且映射到 TI1FP1 上
//CC2 为输入模式,且映射到 TI1FP2 上
//使能 CC1/CC2 上的捕获功能
//设置捕获极性为 CC1 的上升沿
//设置捕获极性为 CC2 的下降沿
//TS=TI1FP1,SMS=TI1 上升沿复位模式
//使能 CC1/CC2 捕获中断
PWMA_IER = 0x06;
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
unsigned int cnt;
if (PWMA_SR1 & 0x02)
{
PWMA_SR1 &= ~0x02;
//CC1 捕获周期宽度
cnt = PWMA_CCR1;
}
if (PWMA_SR1 & 0x04)
{
PWMA_SR1 &= ~0x04;
//CC2 捕获占空比(高电平宽度)
cnt = PWMA_CCR2;
}
}
20.8.11带死区控制的PWM互补输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef struct TIM1_struct
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 700 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
volatile unsigned char CR1;
volatile unsigned char CR2;
volatile unsigned char SMCR;
volatile unsigned char ETR;
volatile unsigned char IER;
volatile unsigned char SR1;
volatile unsigned char SR2;
volatile unsigned char EGR;
volatile unsigned char CCMR1;
volatile unsigned char CCMR2;
volatile unsigned char CCMR3;
volatile unsigned char CCMR4;
volatile unsigned char CCER1;
volatile unsigned char CCER2;
volatile unsigned char CNTRH;
volatile unsigned char CNTRL;
volatile unsigned char PSCRH;
volatile unsigned char PSCRL;
volatile unsigned char ARRH;
volatile unsigned char ARRL;
volatile unsigned char RCR;
volatile unsigned char CCR1H;
volatile unsigned char CCR1L;
volatile unsigned char CCR2H;
volatile unsigned char CCR2L;
volatile unsigned char CCR3H;
volatile unsigned char CCR3L;
volatile unsigned char CCR4H;
volatile unsigned char CCR4L;
volatile unsigned char BKR;
volatile unsigned char DTR;
volatile unsigned char OISR;
}TIM1_TypeDef;
技术支持: 13922829991
研发顾问: 13922805190
/*!< control register 1 */
/*!< control register 2 */
/*!< Synchro mode control register */
/*!< external trigger register */
/*!< interrupt enable register*/
/*!< status register 1 */
/*!< status register 2 */
/*!< event generation register */
/*!< CC mode register 1 */
/*!< CC mode register 2 */
/*!< CC mode register 3 */
/*!< CC mode register 4 */
/*!< CC enable register 1 */
/*!< CC enable register 2 */
/*!< counter high */
/*!< counter low */
/*!< prescaler high */
/*!< prescaler low */
/*!< auto-reload register high */
/*!< auto-reload register low */
/*!< Repetition Counter register */
/*!< capture/compare register 1 high */
/*!< capture/compare register 1 low */
/*!< capture/compare register 2 high */
/*!< capture/compare register 2 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< capture/compare register 3 high */
/*!< capture/compare register 3 low */
/*!< Break Register */
/*!< dead-time register */
/*!< Output idle register */
#define
TIM1_BaseAddress
0xFEC0
#define
#define
#define
TIM1
PWMA_ENO
PWMA_PS
((TIM1_TypeDef xdata*)TIM1_BaseAddress)
(*(unsigned char volatile xdata *)0xFEB1)
(*(unsigned char volatile xdata *)0xFEB2)
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P3M0
P3M1
P_SW2
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xb2;
0xb1;
0xba;
sbit
P03
=
P0^3;
void main(void)
{
P_SW2 = 0x80;
P0M1 = 0x00;
P0M0 = 0xFF;
P1M1 = 0x00;
P1M0 = 0xFF;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 701 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//IO 输出 PWM
//00:PWM at P1
PWMA_ENO = 0xFF;
PWMA_PS = 0x00;
/**********************************************************
PWMx_duty = [CCRx/(ARR + 1)]*100
***********************************************************/
TIM1-> PSCRH = 0x00;
//预分频寄存器
TIM1-> PSCRL = 0x00;
TIM1-> DTR = 0x00;
//死区时间配置
TIM1-> CCMR1 = 0x68;
TIM1-> CCMR2 = 0x68;
TIM1-> CCMR3 = 0x68;
TIM1-> CCMR4 = 0x68;
//通道模式配置
TIM1-> ARRH = 0x08;
TIM1-> ARRL = 0x00;
//自动重装载寄存器,计数器 overflow 点
TIM1-> CCR1H = 0x04;
TIM1-> CCR1L = 0x00;
TIM1-> CCR2H = 0x02;
TIM1-> CCR2L = 0x00;
TIM1-> CCR3H = 0x01;
TIM1-> CCR3L = 0x00;
TIM1-> CCR4H = 0x01;
TIM1-> CCR4L = 0x00;
//计数器比较值
TIM1-> CCER1 = 0x55;
TIM1-> CCER2 = 0x55;
//配置通道输出使能和极性
//配置通道输出使能和极性
TIM1-> BKR = 0x80;
TIM1-> IER = 0x02;
TIM1-> CR1 = 0x01;
//主输出使能 相当于总开关
//使能中断
//使能计数器
EA = 1;
while (1);
}
void PWMA_ISR() interrupt 26
{
if(TIM1->SR1 & 0X02)
{
P03 = ~P03;
TIM1->SR1 &=~0X02;
}
}
20.8.12PWM端口做外部中断(下降沿中断或者上升沿中断)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
PWMA_CR1
PWMA_IER
深圳国芯人工智能有限公司
(*(unsigned char volatile xdata *)0xfec0)
(*(unsigned char volatile xdata *)0xfec4)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 702 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
#define
#define
PWMA_SR1
PWMA_CCMR1
PWMA_CCER1
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P3M0
P3M1
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xb2;
0xb1;
sfr
P_SW2
=
0xba;
sbit
P37
=
P3^7;
技术支持: 13922829991
研发顾问: 13922805190
(*(unsigned char volatile xdata *)0xfec5)
(*(unsigned char volatile xdata *)0xfec8)
(*(unsigned char volatile xdata *)0xfecc)
void main(void)
{
P_SW2 = 0x80;
P1M1 = 0x00;
P1M0 = 0x00;
P3M1 = 0x00;
P3M0 = 0x00;
P_SW2 = 0x80;
//(捕获 PWM1P 上升沿/下降沿)
//
PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x01;
PWMA_CCER1 = 0x01;
PWMA_CCER1 |= 0x00;
PWMA_CCER1 |= 0x02;
PWMA_CR1 = 0x01;
PWMA_IER = 0x02;
EA = 1;
//CC1 为输入模式,且映射到 TI1FP1 上
//使能 CC1 上的捕获功能
//设置捕获极性为 CC1 的上升沿
//设置捕获极性为 CC1 的下降沿
while (1);
}
void PWMA_ISR() interrupt 26
{
if(PWMA_SR1 & 0X02)
{
P37 = ~P37;
PWMA_SR1 &=~0X02;
}
}
20.8.13 输出任意周期和任意占空比的波形
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P_SW2
深圳国芯人工智能有限公司
=
0xba;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 703 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
#define
#define
#define
#define
#define
#define
PWMA_CCER1
PWMA_CCMR1
PWMA_ENO
PWMA_BKR
PWMA_CCR1
PWMA_ARR
PWMA_CR1
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
技术支持: 13922829991
研发顾问: 13922805190
(*(unsigned char volatile xdata *)0xfecc)
(*(unsigned char volatile xdata *)0xfec8)
(*(unsigned char volatile xdata *)0xfeb1)
(*(unsigned char volatile xdata *)0xfedd)
(*(unsigned int volatile xdata *)0xfed5)
(*(unsigned int volatile xdata *)0xfed2)
(*(unsigned char volatile xdata *)0xfec0)
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P_SW2 = 0x80;
PWMA_CCER1 = 0x00;
PWMA_CCMR1 = 0x60;
PWMA_CCER1 = 0x01;
PWMA_CCR1 = 100;
PWMA_ARR = 500;
PWMA_ENO = 0x01;
PWMA_BKR = 0x80;
PWMA_CR1 = 0x01;
//写 CCMRx 前必须先清零 CCERx 关闭通道
//设置 CC1 为 PWMA 输出模式
//使能 CC1 通道
//设置占空比时间
//设置周期时间
//使能 PWM1P 端口输出
//使能主输出
//开始计时
while (1);
}
20.8.14使用PWM的CEN启动PWMA定时器,实时触发ADC
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 704 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "reg51.h"
#include "intrins.h"
#define
#define
#define
#define
#define
#define
#define
PWMA_CR1
PWMA_CR2
PWMA_IER
PWMA_SR1
PWMA_CCMR1
PWMA_CCER1
PWMA_ARR
(*(unsigned char volatile xdata *)0xfec0)
(*(unsigned char volatile xdata *)0xfec1)
(*(unsigned char volatile xdata *)0xfec4)
(*(unsigned char volatile xdata *)0xfec5)
(*(unsigned char volatile xdata *)0xfec8)
(*(unsigned char volatile xdata *)0xfecc)
(*(unsigned int volatile xdata *)0xfed2)
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P3M0
P3M1
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0xb2;
0xb1;
sfr
P_SW2
=
0xba;
sfr
#define
#define
#define
#define
sfr
sfr
ADC_CONTR =
ADC_POWER
ADC_START
ADC_FLAG
ADC_EPWMT
ADC_RES
=
ADC_RESL
=
0xbc;
0x80
0x40
0x20
0x10
0xbd;
0xbe;
sbit
EADC
IE^5;
=
void delay()
{
int i;
for (i=0; i> 8);
PWMA_CCR1L = (u8)(PWMA_Duty);
//设置占空比时间
PWMA_DTR = 0x0C;
//设置死区时间
PWMA_ENO = 0x00;
PWMA_ENO |= ENO1P;
PWMA_ENO |= ENO1N;
PWMA_ENO |= ENO2P;
PWMA_ENO |= ENO2N;
//使能输出
//使能输出
//使能输出
//使能输出
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 709 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
//
//
//
//
PWMA_ENO |= ENO3P;
PWMA_ENO |= ENO3N;
PWMA_ENO |= ENO4P;
PWMA_ENO |= ENO4N;
//使能输出
//使能输出
//使能输出
//使能输出
//
//
//
PWMA_PS = 0x00;
PWMA_PS |= PWMA_3;
PWMA_PS |= PWMB_3;
PWMA_PS |= PWM3_3;
PWMA_PS |= PWM4_3;
//高级
//选择
//选择
//选择
//选择
PWMA_BKR = 0x80;
PWMA_IER = 0x01;
PWMA_CR1 |= 0x01;
//使能主输出
//使能中断
//开始计时
研发顾问: 13922805190
PWM 通道输出脚选择位
PWMA_3 通道
PWMB_3 通道
PWM3_3 通道
PWM4_3 通道
P_SW2 &= 0x7f;
//打开总中断
EA = 1;
while (1)
{
}
}
/******************** 中断函数 **************************/
void PWMA_ISR() interrupt 26
{
P_SW2 |= 0x80;
if (PWMA_SR1 & 0x01)
{
PWMA_SR1 &=~0x01;
PWMA_Duty = T_SinTable[PWM_Index];
if (++PWM_Index >= 200)
PWM_Index = 0;
PWMA_CCR1H = (u8)(PWMA_Duty >> 8);
PWMA_CCR1L = (u8)(PWMA_Duty);
//设置占空比时间
}
PWMA_SR1 = 0;
P_SW2 &= 0x7f;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 710 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
21 USB通用串行总线
STC8H8K64U 系列单片机内部集成 USB2.0/USB1.1 兼容全速 USB,6 个双向端点,支持 4 种端点
传输模式(控制传输、中断传输、批量传输和同步传输),每个端点拥有 64 字节的缓冲区。
USB 模块共有 1280 字节的 FIFO,结构如下:
64 Bytes
Control
Endp 0
INT
BULK
ISO
Endp 1-IN
64 Bytes
64 Bytes
Endp 1-OUT
INT
BULK
ISO
INT
BULK
ISO
Endp 2-IN
64 Bytes
64 Bytes
Endp 2-OUT
INT
BULK
ISO
INT
BULK
ISO
Endp 3-IN
64 Bytes
64 Bytes
Endp 3-OUT
INT
BULK
ISO
INT
BULK
ISO
Endp 4-IN
128 Bytes
256 Bytes
Endp 4-OUT
INT
BULK
ISO
INT
BULK
ISO
Endp 5-IN
128 Bytes
256 Bytes
Endp 5-OUT
INT
BULK
ISO
21.1 USB相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
USBCLK
USB 时钟控制寄存器
DCH
USBDAT
USB 数据寄存器
ECH
USBCON
USB 控制寄存器
F4H
ENUSB
USBRST
USBADR
USB 地址寄存器
FCH
BUSY
AUTORD
21.1.1
ENCKM
B6
B5
PCKI[1:0]
B4
B3
CRE
B2
TST_USB TST_PHY
B1
B0
PHYTST[1:0]
0010,0000
0000,0000
PS2M
PUEN
PDEN
DFREC
DP
DM
UADR[5:0]
0000,0000
0000,0000
USB控制寄存器(USBCON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
USBCON
DFH
ENUSB
USBRST
PS2M
PUEN
PDEN
DFREC
DP
DM
ENUSB:USB 功能与 USB 时钟控制位
0:关闭 USB 功能与 USB 时钟
1:使能 USB 功能与 USB 时钟
ENRST:USB 复位设置控制位
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 711 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
0:关闭 USB 复位设置
1:使能 USB 复位
PS2M:PS2 mode 功能控制位
0:关闭 PS2 mode 功能
1:使能 PS2 mode 功能
PUEN:DP/DM 端口上 1.5K 上拉电阻控制位
0:禁止上拉电阻
1:使能上拉电阻
PDEN:DP/DM 端口上 500K 下拉电阻控制位
0:禁止下拉电阻
1:使能下拉电阻
DFREC:差分接收状态位(只读)
0:当前 DP/DM 的差分状态为“0”
1:当前 DP/DM 的差分状态为“1”
DP:D+端口状态(PS2 为 0 时只读,PS2 为 1 时可读写)
0:当前 D+为逻辑 0 电平
1:当前 D+为逻辑 1 电平
DM:D-端口状态(PS2 为 0 时只读,PS2 为 1 时可读写)
0:当前 D-为逻辑 0 电平
1:当前 D-为逻辑 1 电平
21.1.2
USB时钟控制寄存器(USBCLK)
符号
地址
B7
USBCLK
DEH
ENCKM
B6
B5
PCKI[1:0]
B4
B3
B2
CRE
TST_USB
TST_PHY
B1
B0
PHYTST[1:0]
ENCKM:PLL 倍频控制
0:禁止 PLL 倍频
1:使能 PLL 倍频
PCKI[1:0]:PLL 时钟选择
PCKI[1:0]
PLL 时钟源
00
6M
01
12M(default)
10
24M
11
IRC/2
CRE:时钟追频控制位
0:禁止时钟追频
1:使能时钟追频
TST_USB: USB 测试模式
0:禁止 USB 测试模式
1:使能 USB 测试模式
TST_PHY: PHY 测试模式
0:禁止 PHY 测试模式
1:使能 PHY 测试模式
PHYTST[1:0]:USB PHY 测试
PHYTST[1:0]
00
方式
方式 0:正常
深圳国芯人工智能有限公司
DP
DM
x
x
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 712 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
01
方式 1:强制“1”
1
0
10
方式 2:强制“0”
0
1
11
方式 3:强制单端“0”
0
0
21.1.3
技术支持: 13922829991
研发顾问: 13922805190
USB间址地址寄存器(USBADDR)
符号
地址
B7
B6
USBADDR
EEH
BUSY
AUTORD
B5
B4
B3
B2
B1
B0
UADR[5:0]
BUSY:USB 寄存器读忙标志位
写 0:无意义
写 1:启动 USB 间接寄存器的读操作,地址由 USBADDR 设定
读 0:USBDATA 寄存器中的数据有效
读 1:USBDATA 寄存器中的数据无效,USB 正在读取间接寄存器
AUTORD:USB 寄存器自动读标志,用于 USB 的 FIFO 的块读取
写 0:每次读取间接 USB 寄存器都必须先写 BUSY 标志位
写 1:当软件读取 USBDATA 时,下一个 USB 间接寄存器的读取将自动启动(USBADDR 不变)
UADR[5:0]:USB 间接寄存器的地址
21.1.4
USB间址数据寄存器(USBDATA)
符号
地址
USBDATA
EFH
B7
B6
B5
B4
B3
B2
B1
B0
UDAT[7:0]
UDAT[7:0]:用于间接读写 USB 寄存器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 713 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
21.2 USB控制器寄存器(SIE)
30H
0/8
1/9
UTRKCTL
UTRKSTS
FIFO0
FIFO1
2/A
3/B
4/C
5/D
6/E
FIFO2
FIFO3
FIFO4
FIFO5
INCSR2
OUTMAXP
OUTCSR1
OUTCSR2
INTRUSBE
FRAME1
FRAME2
INDEX
-
INTROUT1
-
INTRUSB
7/F
28H
20H
18H
10H
08H
00H
CSR0
INMAXP
INCSR1
INTROUT1E
FADDR
POWER
INTRIN1
COUNT0
OUTCOUNT1
OUTCOUNT2
INTRIN1E
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
FADDR
USB 功能地址寄存器
00H
UPDATE
POWER
USB 电源管理寄存器
01H
ISOUD
-
-
-
USBRST
USBRSU
USBSUS
ENSUS
0xxx,0000
INTRIN1
USB 端点 IN 中断标志位
02H
-
-
EP5INIF
EP4INIF
EP3INIF
EP2INIF
EP1INIF
EP0IF
xx00,0000
INTROUT1 USB 端点 OUT 中断标志位
04H
-
-
-
xx00,000x
INTRUSB
USB 电源中断标志位
06H
-
-
-
-
SOFIF
RSTIF
RSUIF
SUSIF
xxxx,0000
INTRIN1E
USB 端点 IN 中断允许位
07H
-
-
EP5INIE
EP4INIE
EP3INIE
EP2INIE
EP1INIE
EP0IE
xx11,1111
09H
-
-
-
xx11,111x
0BH
-
-
SUSIE
xxxx,0110
INTROUT1E USB 端点 OUT 中断允许位
INTRUSBE USB 电源中断允许位
UADDR[6:0]
0000,0000
EP5OUTIF EP4OUTIF EP3OUTIF EP2OUTIF EP1OUTIF
EP5OUTIE EP4OUTIE EP3OUTIE EP2OUTIE EP1OUTIE
-
-
SOFIE
RSTIE
RSUIE
FRAME1
USB 数据帧号低字节
0CH
FRAME2
USB 数据帧号高字节
0DH
-
-
-
-
-
FRAME[10:8]
xxxx,x000
INDEX
USB 端点索引寄存器
0EH
-
-
-
-
-
INDEX[2:0]
xxxx,x000
IN 端点的最大数据包大小
10H
端点 0 控制状态寄存器
11H
INCSR1
IN 端点控制状态寄存器 1
11H
INCSR2
IN 端点控制状态寄存器 2
12H AUTOSET
INMAXP
CSR0
FRAME[7:0]
INMAXP[7:0]
SSUEND SOPRDY
CLRDT
SUEND
DATEND
STSTL
IPRDY
OPRDY
0000,0000
STSTL
SDSTL
FLUSH
-
UNDRUN
FIFONE
IPRDY
0000,x000
ISO
MODE
ENDMA
FCDT
-
-
-
0010,0xxx
OUTMAXP[7:0]
OUTCSR1
OUT 端点控制状态寄存器 1
14H
OUTCSR2
OUT 端点控制状态寄存器 2
15H AUTOCLR
COUNT0
端点 0 的 OUT 长度
16H
16H
OUTCOUNT2 USB 端点 OUT 长度高字节
17H
0000,0000
SDSTL
OUTMAXP OUT 端点的最大数据包大小 13H
OUTCOUNT1 USB 端点 OUT 长度低字节
0000,0000
CLRDT
0000,0000
STSTL
SDSTL
FLUSH
DATERR
OVRRUN
FIFOFUL
OPRDY
0000,0000
ISO
ENDMA
DMAMD
-
-
-
-
0000,xxxx
-
OUTCNT0[6:0]
x000,0000
OUTCNT[7:0]
-
-
-
-
-
0000,0000
OUTCNT[10:8]
xxxx,x000
FIFO0
端点 0 的 FIFO 访问寄存器
20H
FIFO0[7:0]
0000,0000
FIFO1
端点 1 的 FIFO 访问寄存器
21H
FIFO1[7:0]
0000,0000
FIFO2
端点 2 的 FIFO 访问寄存器
22H
FIFO2[7:0]
0000,0000
FIFO3
端点 3 的 FIFO 访问寄存器
23H
FIFO3[7:0]
0000,0000
FIFO4
端点 4 的 FIFO 访问寄存器
24H
FIFO4[7:0]
0000,0000
FIFO5
端点 5 的 FIFO 访问寄存器
25H
FIFO5[7:0]
0000,0000
UTRKCTL
USB 跟踪控制寄存器
30H
UTRKSTS
USB 跟踪状态寄存器
31H
深圳国芯人工智能有限公司
FTM1
FTM0
INTV[1:0]
INTVCNT[3:0]
国内分销商电话: 0513-5501 2928/2929/2966
ENST5
STS[1:0]
RES[2:0]
1011,1011
TST_UTRK UTRK_RDY 1111,00x0
传真: 0513-5501 2926/2956/2947
- 714 -
STC8H 系列技术手册
21.2.1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
USB功能地址寄存器(FADDR)
符号
地址
B7
FADDR
00H
UPDATE
B6
B5
B4
B3
B2
B1
B0
UADDR[6:0]
UPDATE:更新 USB 功能地址
0:最后的 UADDR 地址已生效
1:最后的 UADDR 地址还未生效
UADDR[6:0]:保存 USB 的 7 位功能地址
21.2.2
USB电源控制寄存器(POWER)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
POWER
01H
ISOUD
-
-
-
USBRST
USBRSU
USBSUS
ENSUS
ISOUD(ISO Update):ISO 更新
0:当软件向 IPRDY 写“1”时,USB 在收到下一个 IN 令牌后发送数据包
1:当软件向 IPRDY 写“1”时,USB 在收到 SOF 令牌后发送数据包,如果 SOF 令牌之前收到 IN
令牌,则 USB 发送长度为 0 的数据包
USBRST(USB Reset):USB 复位控制位
向此位写“1”,可强制产生异步 USB 复位。读取此位可以获得当前总线上的复位状态信息
0:总线上没有检测到复位信号
1:总线上检测到了复位信号
USBRSU(USB Resume):USB 恢复控制位
以软件方式在总线上强制产生恢复信号,以便将 USB 设备从挂起方式进行远程唤醒。当 USB 处
于挂起模式(USBSUS=1)时,向此位写“1”,将强制在 USB 总线上产生恢复信号,软件应在
10-15ms 后向此位写“0”,以结束恢复信号。软件向 USBRSU 写入“0”后将产生 USB 恢复中断,
此时硬件会自动将 USBSUS 清“0”
:USB 挂起控制位
USBSUS(USB Suspend)
当 USB 进入挂起方式时,此位被硬件置“1”。当以软件方式在总线上强制产生恢复信号后或者在
总线上检测到恢复信号时且在读取了 INTRUSB 寄存器后,硬件自动将此位清“0”
。
ENSUS(Enable Suspend Detection):使能 USB 挂起方式检测
0:禁止挂起检测,USB 将忽略总线上的挂起信号
1:使能挂起检测,当检测到总线上的挂起信号,USB 将进入挂起方式
21.2.3
USB端点IN中断标志位(INTRIN1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTRIN1
02H
-
-
EP5INIF
EP4INIF
EP3INIF
EP2INIF
EP1INIF
EP0IF
EP5INIF:端点 5 的 IN 中断标志位
0:端点 5 的 IN 中断无效
1:端点 5 的 IN 中断有效
EP4INIF:端点 4 的 IN 中断标志位
0:端点 4 的 IN 中断无效
1:端点 4 的 IN 中断有效
EP3INIF:端点 3 的 IN 中断标志位
0:端点 3 的 IN 中断无效
1:端点 3 的 IN 中断有效
EP2INIF:端点 2 的 IN 中断标志位
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 715 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
0:端点 2 的 IN 中断无效
1:端点 2 的 IN 中断有效
EP1INIF:端点 1 的 IN 中断标志位
0:端点 1 的 IN 中断无效
1:端点 1 的 IN 中断有效
EP0IF:端点 0 的 IN/OUT 中断标志位
0:端点 0 的 IN/OUT 中断无效
1:端点 0 的 IN/OUT 中断有效
在软件读取 INTRIN1 寄存器后,硬件将自动清除 INTRIN1 中的所有的中断标志
21.2.4
USB端点OUT中断标志位(INTROUT1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTROUT1
04H
-
-
EP5OUTIF
EP4OUTIF
EP3OUTIF
EP2OUTIF
EP1OUTIF
-
EP5OUTIF:端点 5 的 OUT 中断标志位
0:端点 5 的 OUT 中断无效
1:端点 5 的 OUT 中断有效
EP4OUTIF:端点 4 的 OUT 中断标志位
0:端点 4 的 OUT 中断无效
1:端点 4 的 OUT 中断有效
EP3OUTIF:端点 3 的 OUT 中断标志位
0:端点 3 的 OUT 中断无效
1:端点 3 的 OUT 中断有效
EP2OUTIF:端点 2 的 OUT 中断标志位
0:端点 2 的 OUT 中断无效
1:端点 2 的 OUT 中断有效
EP1OUTIF:端点 1 的 OUT 中断标志位
0:端点 1 的 OUT 中断无效
1:端点 1 的 OUT 中断有效
在软件读取 INTROUT1 寄存器后,硬件将自动清除 INTROUT1 中的所有的中断标志
21.2.5
USB电源中断标志(INTRUSB)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTRUSB
06H
-
-
-
-
SOFIF
RSTIF
RSUIF
SUSIF
SOFIF:USB 帧起始信号中断标志
0:USB 帧起始信号中断无效
1:USB 帧起始信号中断有效
RSTIF:USB 复位信号中断标志
0:USB 复位信号中断无效
1:USB 复位信号中断有效
RSUIF:USB 恢复信号中断标志
0:USB 恢复信号中断无效
1:USB 恢复信号中断有效
SUSIF:USB 挂起信号中断标志
0:USB 挂起信号中断无效
1:USB 挂起信号中断有效
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 716 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
在软件读取 INTRUSB 寄存器后,硬件将自动清除 INTRUSB 中的所有的中断标志
21.2.6
USB端点IN中断允许寄存器(INTRIN1E)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTRIN1E
07H
-
-
EP5INIE
EP4INIE
EP3INIE
EP2INIE
EP1INIE
EP0IE
EP5INIE:端点 5 的 IN 中断控制位
0:禁止端点 5 的 IN 中断
1:允许端点 5 的 IN 中断
EP4INIE:端点 4 的 IN 中断控制位
0:禁止端点 4 的 IN 中断
1:允许端点 4 的 IN 中断
EP3INIE:端点 3 的 IN 中断控制位
0:禁止端点 3 的 IN 中断
1:允许端点 3 的 IN 中断
EP2INIE:端点 2 的 IN 中断控制位
0:禁止端点 2 的 IN 中断
1:允许端点 2 的 IN 中断
EP1INIE:端点 1 的 IN 中断控制位
0:禁止端点 1 的 IN 中断
1:允许端点 1 的 IN 中断
EP0IE:端点 0 的 IN/OUT 中断控制位
0:禁止端点 0 的 IN/OUT 中断
1:允许端点 0 的 IN/OUT 中断
21.2.7
USB端点OUT中断允许寄存器(INTROUT1E)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTROUT1E
09H
-
-
EP5OUTIE
EP4OUTIE
EP3OUTIE
EP2OUTIE
EP1OUTIE
-
EP5OUTIE:端点 5 的 OUT 中断控制位
0:禁止端点 5 的 OUT 中断
1:允许端点 5 的 OUT 中断
EP4OUTIE:端点 4 的 OUT 中断控制位
0:禁止端点 4 的 OUT 中断
1:允许端点 4 的 OUT 中断
EP3OUTIE:端点 3 的 OUT 中断控制位
0:禁止端点 3 的 OUT 中断
1:允许端点 3 的 OUT 中断
EP2OUTIE:端点 2 的 OUT 中断控制位
0:禁止端点 2 的 OUT 中断
1:允许端点 2 的 OUT 中断
EP1OUTIE:端点 1 的 OUT 中断控制位
0:禁止端点 1 的 OUT 中断
1:允许端点 1 的 OUT 中断
21.2.8
符号
USB电源中断允许寄存器(INTRUSB)
地址
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
B2
B1
传真: 0513-5501 2926/2956/2947
B0
- 717 -
STC8H 系列技术手册
INTRUSB
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
0BH
-
-
技术支持: 13922829991
-
-
研发顾问: 13922805190
SOFIE
RSTIE
RSUIE
SUSIE
B3
B2
B1
B0
SOFIE:USB 帧起始信号中断控制位
0:禁止 USB 帧起始信号中断
1:允许 USB 帧起始信号中断
RSTIE:USB 复位信号中断控制位
0:禁止 USB 复位信号中断
1:允许 USB 复位信号中断
RSUIE:USB 恢复信号中断控制位
0:禁止 USB 恢复信号中断
1:允许 USB 恢复信号中断
SUSIE:USB 挂起信号中断控制位
0:禁止 USB 挂起信号中断
1:允许 USB 挂起信号中断
21.2.9
USB数据帧号寄存器(FRAMEn))
符号
地址
FRAME1
0CH
FRAME2
0DH
B7
B6
B5
B4
FRAME[7:0]
-
-
-
-
-
FRAME[10:8]
FRAME[10:0]:用于保存最后接收到的数据帧的 11 位帧号
21.2.10 USB端点索引寄存器(INDEX)
符号
地址
B7
B6
B5
B4
B3
INDEX
0EH
-
-
-
-
-
B2
B1
B0
INDEX[2:0]
INDEX[2:0]:选择 USB 端点
INDEX[2:0]
目标端点
000
端点 0
001
端点 1
010
端点 2
011
端点 3
100
端点 4
101
端点 5
21.2.11 IN端点的最大数据包大小(INMAXP)
符号
地址
INMAXP
10H
B7
B6
B5
B4
B3
B2
B1
B0
INMAXP[7:0]
INMAXP[7:0]:设置 USB 的 IN 端点最大数据包的大小
当需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 0~5
21.2.12 USB端点 0 控制状态寄存器(CSR0)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CSR0
11H
SSUEND
SOPRDY
SDSTL
SUEND
DATEND
STSTL
IPRDY
OPRDY
SSUEND(Serviced Setup End)
SETUP 结束事件处理完成标志。当处理完成 SETUP 结束事件(SUEND)后,软件需要设置 SSUEND
标志位,硬件检测到 SSUEND 被写入“1”时自动将 SUEND 位清“0”。
SOPRDY(Serviced OPRDY)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 718 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
OPRDY 事件处理完成标志。当处理完成从端点 0 接收到的数据包后,软件需要设置 SOPRDY 标
志位,硬件检测到 SOPRDY 被写入“1”时自动将 OPRDY 位清“0”。
SDSTL(Send Stall)
当接收到错误的条件或者不支持的请求时,可以向此位写“1”来结束当前的数据传输。当 STALL
信号被发送后,硬件自动将此位清“0”。
SUEND(Setup End)
SETUP 安装包结束标志。当一次控制传输在软件向 DATAEND 位写“1”之前结束时,硬件将此只
读位置“1”
。当软件向 SSUEND 写‘1’后,硬件将该位清“0”。
DATEND(Data End)
数据结束。软件应在下列情况下将此位写“1”
:
1、当发送最后一个数据包后,固件向 IPRDY 写“1”时;
2、当发送一个零长度数据包后,固件向 IPRDY 写“1”时;
3、当接收完最后一个数据包后,固件向 SOPRDY 写“1”时;
该位将被硬件自动清“0”
STSTL(Sent Stall)
STALL 信号发送完成标志。发送完成 STALL 信号后,硬件将该位置“1”。该位必须用软件清“0”。
IPRDY(IN Packet Ready)
IN 数据包准备完成标志。软件应在将一个要发送的数据包装入到端点 0 的 FIFO 后,将该位置“1”。
在发生下列条件之一时,硬件将该位清“0”:
1、数据包已发送时;
2、数据包被一个 SETUP 包覆盖时;
3、数据包被一个 OUT 包覆盖时;
OPRDY(OUT Packet Ready)
OUT 数据包准备完成标志。当收到一个 OUT 数据包时,硬件将该只读位置“1”,并产生中断。该
位只在软件向 SOPRDY 位写“1”时才被清“0”
。
当需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 0
21.2.13 IN端点控制状态寄存器 1(INCSR1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INCSR1
11H
CLRDT
STSTL
SDSTL
FLUSH
-
UNDRUN
FIFONE
IPRDY
CLRDT(Clear Data Toggle):复位 IN 数据切换位。
当 IN 端点由于被重新配置或者被 STALL 而需要将数据切换位复位到“0”时,软件需要向此数据
位写“1”。
STSTL(Sent Stall):STALL 信号发送完成标志。
当 STALL 信号被发送完成后,硬件会将该位置“1”
(此时 FIFO 被清空,IPRDY 位被清“0”)。该
标志必须用软件清“0”
。
SDSTL(Send Stall):STALL 信号发送请求位。
软件应向该位写“1”以产生 STALL 信号作为对一个 IN 令牌的应答。软件应向该位写“0”以结
束 STALL 信号。该位对 ISO 方式没有影响。
FLUSH(FIFO Flush):清除 IN 端点的 FIFO 的下一个数据包。
向该位写“1”将从 IN 端点 FIFO 中清除待发送的下一个数据包。FIFO 指针被复位,IPRDY 位被
清“0”。如果 FIFO 中包含多个数据包,软件必须对每个数据包向 FLUSH 写“1”。当 FIFO 清空完
成后,硬件将 FLUSH 位清“0”。
UNDRUN(Data Underrun):数据不足。
该位的功能取决于 IN 端点的方式:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 719 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ISO 方式:在 IPRDY 为“0”且收到一个 IN 令牌后发送了一个零长度数据包时,该位被置“1”
。
中断/批量方式:当使用 NAK 作为对一个 IN 令牌的应答时,该位被置“1”。
该位必须用软件清“0”
。
FIFONE(FIFO Not Empty):IN 端点的 FIFO 非空标志
0:IN 端点的 FIFO 为空
1:IN 端点的 FIFO 包含有一个或者多个数据包
IPRDY(IN Packet Ready):IN 数据包准备完成标志。
软件应在将一个要发送的数据包装入到端点的 FIFO 后,将该位置“1”
。在发生下列条件之一时,
硬件将该位清“0”:
1、数据包已发送时;
2、自动设置被使能(AUTOSET =‘1’)且端点 IN 的 FIFO 数据包达到 INMAXP 所设置的值;
3、如果端点处于同步方式且 ISOUD 为“1”,在收到下一个 SOF 之前 IPRDY 的读出值总是为 0。
需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 1~5
21.2.14 IN端点控制状态寄存器 2(INCSR2)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INCSR2
12H
AUTOSET
ISO
MODE
ENDMA
FCDT
-
-
-
AUTOSET:自动设置 IPRDY 标志控制位。
0:禁止自动设置 IPRDY 标志
1:使能自动设置 IPRDY(必须向 IN FIFO 中装载的数据达到 INMAXP 所设置的值,否则 IPRDY
标志必须手动设置)
ISO:同步传输使能。
0:端点被配置为批量/中断传输方式
1:端点被配置为同步传输方式
MODE:端点方向选择位。
0:选择端点方向为 OUT
1:选择端点方向为 IN
ENDMA:IN 端点的 DMA 控制
0:禁止 IN 端点的 DMA 请求
1:使能 IN 端点的 DMA 请求
FCDT:强制 DATA0/DATA1 数据切换设置。
0:端点数据只在发送完一个数据包后且收到 ACK 时切换。
1:端点数据在每发送完一个数据包后被强制切换,不管是否收到 ACK。
需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 1~5
21.2.15 OUT端点的最大数据包大小(OUTMAXP)
符号
地址
OUTMAXP
13H
B7
B6
B5
B4
B3
B2
B1
B0
OUTMAXP[7:0]
OUTMAXP[7:0]:设置 USB 的 OUT 端点最大数据包的大小
需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 1~5
21.2.16 OUT端点控制状态寄存器 1(OUTCSR1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
OUTCSR1
14H
CLRDT
STSTL
SDSTL
FLUSH
DATERR
OVRRUN
FIFOFUL
OPRDY
CLRDT(Clear Data Toggle):复位 OUT 数据切换位。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 720 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
当 OUT 端点由于被重新配置或者被 STALL 而需要将数据切换位复位到“0”时,软件需要向此数
据位写“1”
。
STSTL(Sent Stall):STALL 信号发送完成标志。
当 STALL 信号被发送完成后,硬件会将该位置“1”。该标志必须用软件清“0”。
SDSTL(Send Stall):STALL 信号发送请求位。
软件应向该位写“1”以产生 STALL 信号作为对一个 OUT 令牌的应答。软件应向该位写“0”以
结束 STALL 信号。该位对 ISO 方式没有影响。
FLUSH(FIFO Flush):清除 OUT 端点的 FIFO 的下一个数据包。
向该位写“1”将从 OUT 端点 FIFO 中清除下一个数据包。FIFO 指针被复位,OPRDY 位被清“0”。
如果 FIFO 中包含多个数据包,软件必须对每个数据包向 FLUSH 写“1”。当 FIFO 清空完成后,
硬件将 FLUSH 位清“0”
。
OVRRUN(Data Overrun):数据溢出。
当一个输入数据包不能被装入到 OUT 端点 FIFO 时,该位被硬件置“1”。该位只在 ISO 方式有效。
该位必须用软件清“0”
。
0:无数据溢出
1:自该标志最后一次被清除以来,因 FIFO 已满导致数据包丢失
FIFOFUL(FIFO Full):OUT 端点的 FIFO 数据满标志。
0:OUT 端点的 FIFO 未满
1:OUT 端点的 FIFO 已满
OPRDY(OUT Packet Ready):OUT 数据包接收完成标志。
当有数据包可用时硬件将该位置“1”。软件应在将每个数据包从 OUT 端点 FIFO 卸载后将该位清
‘0’。
需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 1~5
21.2.17 OUT端点控制状态寄存器 2(OUTCSR2)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
OUTCSR2
15H
AUTOCLR
ISO
ENDMA
DMAMD
-
-
-
-
AUTOCLR:自动清除 OPRDY 标志控制位。
0:禁止自动清除 OPRDY 标志
1:使能自动清除 OPRDY(必须从 OUT FIFO 中下载的数据达到 OUTMAXP 所设置的值,否则
OPRDY 标志必须手动清除)
ISO:同步传输使能。
0:端点被配置为批量/中断传输方式
1:端点被配置为同步传输方式
ENDMA:OUT 端点的 DMA 控制
0:禁止 OUT 端点的 DMA 请求
1:使能 OUT 端点的 DMA 请求
DMAMD:设置 OUT 端点的 DMA 模式
需要获取/设置此信息时,首先必须使用 INDEX 来选择目标端点 1~5
21.2.18 USB端点 0 的OUT长度(COUNT0)
符号
地址
B7
COUNT0
16H
-
B6
B5
B4
B3
B2
B1
B0
OUTCNT0[6:0]
OUTCNT0[6:0]:端点 0 的 OUT 字节长度
COUNT0 专用于保存端点 0 最后接收到的 OUT 数据包的数据长度(由于端点 0 数据包最长只能为
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 721 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
64 字节,所以只需要 7 位)。此长度值只在端点 0 的 OPRDY 位为“1”时才有效。
需要获取此长度信息时,首先必须使用 INDEX 来选择目标端点 0
21.2.19 USB端点的OUT长度(OUTCOUNTn))
符号
地址
OUTCOUNT1
16H
OUTCOUNT2
17H
B7
B6
B5
B4
B3
B2
B1
B0
OUTCNT[7:0]
-
-
-
-
-
OUTCNT[10:8]
OUTCNT[10:0]:端点的 OUT 字节长度
OUTCOUNT1 和 OUTCOUNT2 联合组成一个 11 位的数,保存最后 OUT 数据包的数据长度,适用
于端点 1~5。此长度值只在端点 1~5 的 OPRDY 位为“1”时才有效。
需要获取此长度信息时,首先必须使用 INDEX 来选择目标端点 1~5
21.2.20 USB端点的FIFO数据访问寄存器(FIFOn)
B7
B6
B5
B4
B3
符号
地址
FIFO0
20H
FIFO0[7:0]
FIFO1
21H
FIFO1[7:0]
FIFO2
22H
FIFO2[7:0]
FIFO3
23H
FIFO3[7:0]
FIFO4
24H
FIFO4[7:0]
FIFO5
25H
FIFO5[7:0]
B2
B1
B0
FIFOn[7:0]:USB 各个端点的 IN/OUT 数据间接访问寄存器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 722 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
21.3 范例程序
21.3.1 HID人机接口设备范例
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
typedef
typedef
typedef
unsigned char
unsigned int
unsigned long
sfr
IE2
=
0xAF;
sfr
sfr
sfr
sfr
USBCLK
USBDAT
USBCON
USBADR
=
=
=
=
0xDC;
0xEC;
0xF4;
0xFC;
sfr
P_SW2
=
0xBA;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
;
#define
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca
IRC48MCR
(*(unsigned char volatile xdata *)0xfe07)
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
FADDR
POWER
INTRIN1
EP5INIF
EP4INIF
EP3INIF
EP2INIF
EP1INIF
EP0IF
INTROUT1
EP5OUTIF
EP4OUTIF
EP3OUTIF
EP2OUTIF
EP1OUTIF
INTRUSB
SOFIF
RSTIF
RSUIF
0
1
2
0x20
0x10
0x08
0x04
0x02
0x01
4
0x20
0x10
0x08
0x04
0x02
6
0x08
0x04
0x02
深圳国芯人工智能有限公司
BYTE;
WORD;
DWORD;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 723 -
STC8H 系列技术手册
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
SUSIF
INTRIN1E
EP5INIE
EP4INIE
EP3INIE
EP2INIE
EP1INIE
EP0IE
INTROUT1E
EP5OUTIE
EP4OUTIE
EP3OUTIE
EP2OUTIE
EP1OUTIE
INTRUSBE
SOFIE
RSTIE
RSUIE
SUSIE
FRAME1
FRAME2
INDEX
INMAXP
CSR0
SSUEND
SOPRDY
SDSTL
SUEND
DATEND
STSTL
IPRDY
OPRDY
INCSR1
INCLRDT
INSTSTL
INSDSTL
INFLUSH
INUNDRUN
INFIFONE
INIPRDY
INCSR2
INAUTOSET
INISO
INMODEIN
INMODEOUT
INENDMA
INFCDT
OUTMAXP
OUTCSR1
OUTCLRDT
OUTSTSTL
OUTSDSTL
OUTFLUSH
OUTDATERR
OUTOVRRUN
OUTFIFOFUL
OUTOPRDY
OUTCSR2
OUTAUTOCLR
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
0x01
7
0x20
0x10
0x08
0x04
0x02
0x01
9
0x20
0x10
0x08
0x04
0x02
11
0x08
0x04
0x02
0x01
12
13
14
16
17
0x80
0x40
0x20
0x10
0x08
0x04
0x02
0x01
17
0x40
0x20
0x10
0x08
0x04
0x02
0x01
18
0x80
0x40
0x20
0x00
0x10
0x08
19
20
0x80
0x40
0x20
0x10
0x08
0x04
0x02
0x01
21
0x80
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 724 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
OUTISO
OUTENDMA
OUTDMAMD
COUNT0
OUTCOUNT1
OUTCOUNT2
FIFO0
FIFO1
FIFO2
FIFO3
FIFO4
FIFO5
UTRKCTL
UTRKSTS
0x40
0x20
0x10
22
22
23
32
33
34
35
36
37
48
49
#define
#define
#define
#define
#define
EPIDLE
EPSTATUS
EPDATAIN
EPDATAOUT
EPSTALL
0
1
2
3
-1
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
GET_STATUS
CLEAR_FEATURE
SET_FEATURE
SET_ADDRESS
GET_DESCRIPTOR
SET_DESCRIPTOR
GET_CONFIG
SET_CONFIG
GET_INTERFACE
SET_INTERFACE
SYNCH_FRAME
0x00
0x01
0x03
0x05
0x06
0x07
0x08
0x09
0x0A
0x0B
0x0C
#define
#define
#define
#define
#define
#define
GET_REPORT
GET_IDLE
GET_PROTOCOL
SET_REPORT
SET_IDLE
SET_PROTOCOL
0x01
0x02
0x03
0x09
0x0A
0x0B
#define
#define
#define
#define
DESC_DEVICE
DESC_CONFIG
DESC_STRING
DESC_HIDREPORT
0x01
0x02
0x03
0x22
#define
#define
#define
#define
STANDARD_REQUEST
CLASS_REQUEST
VENDOR_REQUEST
REQUEST_MASK
0x00
0x20
0x40
0x60
typedef struct
{
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
BYTE
技术支持: 13922829991
研发顾问: 13922805190
bmRequestType;
bRequest;
wValueL;
wValueH;
wIndexL;
wIndexH;
wLengthL;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 725 -
STC8H 系列技术手册
BYTE
}SETUP;
typedef struct
{
BYTE
WORD
BYTE
}EP0STAGE;
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
wLengthH;
bStage;
wResidue;
*pData;
void UsbInit();
BYTE ReadReg(BYTE addr);
void WriteReg(BYTE addr, BYTE dat);
BYTE ReadFifo(BYTE fifo, BYTE *pdat);
void WriteFifo(BYTE fifo, BYTE *pdat, BYTE cnt);
char code DEVICEDESC[18];
char code CONFIGDESC[41];
char code HIDREPORTDESC[27];
char code LANGIDDESC[4];
char code MANUFACTDESC[8];
char code PRODUCTDESC[30];
SETUP Setup;
EP0STAGE Ep0Stage;
BYTE xdata HidFreature[64];
BYTE xdata HidInput[64];
BYTE xdata HidOutput[64];
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UsbInit();
IE2 = 0x80;
EA = 1;
while (1);
}
BYTE ReadReg(BYTE addr)
{
BYTE dat;
while (USBADR & 0x80);
USBADR = addr | 0x80;
while (USBADR & 0x80);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 726 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
dat = USBDAT;
return dat;
}
void WriteReg(BYTE addr, BYTE dat)
{
while (USBADR & 0x80);
USBADR = addr & 0x7f;
USBDAT = dat;
}
BYTE ReadFifo(BYTE fifo, BYTE *pdat)
{
BYTE cnt;
BYTE ret;
ret = cnt = ReadReg(COUNT0);
while (cnt--)
{
*pdat++ = ReadReg(fifo);
}
return ret;
}
void WriteFifo(BYTE fifo, BYTE *pdat, BYTE cnt)
{
while (cnt--)
{
WriteReg(fifo, *pdat++);
}
}
void UsbInit()
{
P3M0 = 0x00;
P3M1 = 0x03;
P_SW2 |= 0x80;
IRC48MCR = 0x80;
while (!(IRC48MCR & 0x01));
P_SW2 &= ~0x80;
USBCLK = 0x00;
USBCON = 0x90;
WriteReg(FADDR, 0x00);
WriteReg(POWER, 0x08);
WriteReg(INTRIN1E, 0x3f);
WriteReg(INTROUT1E, 0x3f);
WriteReg(INTRUSBE, 0x00);
WriteReg(POWER, 0x01);
Ep0Stage.bStage = EPIDLE;
}
void usb_isr() interrupt 25
{
BYTE intrusb;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 727 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
BYTE intrin;
BYTE introut;
BYTE csr;
BYTE cnt;
WORD len;
intrusb = ReadReg(INTRUSB);
intrin = ReadReg(INTRIN1);
introut = ReadReg(INTROUT1);
if (intrusb & RSTIF)
{
WriteReg(INDEX, 1);
WriteReg(INCSR1, INCLRDT);
WriteReg(INDEX, 1);
WriteReg(OUTCSR1, OUTCLRDT);
Ep0Stage.bStage = EPIDLE;
}
if (intrin & EP0IF)
{
WriteReg(INDEX, 0);
csr = ReadReg(CSR0);
if (csr & STSTL)
{
WriteReg(CSR0, csr & ~STSTL);
Ep0Stage.bStage = EPIDLE;
}
if (csr & SUEND)
{
WriteReg(CSR0, csr | SSUEND);
}
switch (Ep0Stage.bStage)
{
case EPIDLE:
if (csr & OPRDY)
{
Ep0Stage.bStage = EPSTATUS;
ReadFifo(FIFO0, (BYTE *)&Setup);
((BYTE *)&Ep0Stage.wResidue)[0] = Setup.wLengthH;
((BYTE *)&Ep0Stage.wResidue)[1]= Setup.wLengthL;
switch (Setup.bmRequestType & REQUEST_MASK)
{
case STANDARD_REQUEST:
switch (Setup.bRequest)
{
case SET_ADDRESS:
WriteReg(FADDR, Setup.wValueL);
break;
case SET_CONFIG:
WriteReg(INDEX, 1);
WriteReg(INCSR2, INMODEIN);
WriteReg(INMAXP, 8);
WriteReg(INDEX, 1);
WriteReg(INCSR2, INMODEOUT);
WriteReg(OUTMAXP, 8);
WriteReg(INDEX, 0);
break;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 728 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
case GET_DESCRIPTOR:
Ep0Stage.bStage = EPDATAIN;
switch (Setup.wValueH)
{
case DESC_DEVICE:
Ep0Stage.pData = DEVICEDESC;
len = sizeof(DEVICEDESC);
break;
case DESC_CONFIG:
Ep0Stage.pData = CONFIGDESC;
len = sizeof(CONFIGDESC);
break;
case DESC_STRING:
switch (Setup.wValueL)
{
case 0:
Ep0Stage.pData = LANGIDDESC;
len = sizeof(LANGIDDESC);
break;
case 1:
Ep0Stage.pData = MANUFACTDESC;
len = sizeof(MANUFACTDESC);
break;
case 2:
Ep0Stage.pData = PRODUCTDESC;
len = sizeof(PRODUCTDESC);
break;
default:
Ep0Stage.bStage = EPSTALL;
break;
}
break;
case DESC_HIDREPORT:
Ep0Stage.pData = HIDREPORTDESC;
len = sizeof(HIDREPORTDESC);
break;
default:
Ep0Stage.bStage = EPSTALL;
break;
}
if (len < Ep0Stage.wResidue)
{
Ep0Stage.wResidue = len;
}
break;
default:
Ep0Stage.bStage = EPSTALL;
break;
}
break;
case CLASS_REQUEST:
switch (Setup.bRequest)
{
case GET_REPORT:
Ep0Stage.pData = HidFreature;
Ep0Stage.bStage = EPDATAIN;
break;
case SET_REPORT:
Ep0Stage.pData = HidFreature;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 729 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
Ep0Stage.bStage = EPDATAOUT;
break;
case SET_IDLE:
break;
case GET_IDLE:
case GET_PROTOCOL:
case SET_PROTOCOL:
default:
Ep0Stage.bStage = EPSTALL;
break;
}
break;
default:
Ep0Stage.bStage = EPSTALL;
break;
}
switch (Ep0Stage.bStage)
{
case EPDATAIN:
WriteReg(CSR0, SOPRDY);
goto L_Ep0SendData;
break;
case EPDATAOUT:
WriteReg(CSR0, SOPRDY);
break;
case EPSTATUS:
WriteReg(CSR0, SOPRDY | DATEND);
Ep0Stage.bStage = EPIDLE;
break;
case EPSTALL:
WriteReg(CSR0, SOPRDY | SDSTL);
Ep0Stage.bStage = EPIDLE;
break;
}
}
break;
case EPDATAIN:
if (!(csr & IPRDY))
{
L_Ep0SendData:
cnt = Ep0Stage.wResidue > 64 ? 64 : Ep0Stage.wResidue;
WriteFifo(FIFO0, Ep0Stage.pData, cnt);
Ep0Stage.wResidue -= cnt;
Ep0Stage.pData += cnt;
if (Ep0Stage.wResidue == 0)
{
WriteReg(CSR0, IPRDY | DATEND);
Ep0Stage.bStage = EPIDLE;
}
else
{
WriteReg(CSR0, IPRDY);
}
}
break;
case EPDATAOUT:
if (csr & OPRDY)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 730 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
cnt = ReadFifo(FIFO0, Ep0Stage.pData);
Ep0Stage.wResidue -= cnt;
Ep0Stage.pData += cnt;
if (Ep0Stage.wResidue == 0)
{
WriteReg(CSR0, SOPRDY | DATEND);
Ep0Stage.bStage = EPIDLE;
}
else
{
WriteReg(CSR0, SOPRDY);
}
}
break;
}
}
if (intrin & EP1INIF)
{
WriteReg(INDEX, 1);
csr = ReadReg(INCSR1);
if (csr & INSTSTL)
{
WriteReg(INCSR1, INCLRDT);
}
if (csr & INUNDRUN)
{
WriteReg(INCSR1, 0);
}
}
if (introut & EP1OUTIF)
{
WriteReg(INDEX, 1);
csr = ReadReg(OUTCSR1);
if (csr & OUTSTSTL)
{
WriteReg(OUTCSR1, OUTCLRDT);
}
if (csr & OUTOPRDY)
{
ReadFifo(FIFO1, HidOutput);
WriteReg(OUTCSR1, 0);
WriteReg(INDEX, 1);
WriteFifo(FIFO1, HidOutput, 64);
WriteReg(INCSR1, INIPRDY);
}
}
}
char code DEVICEDESC[18] =
{
0x12,
0x01,
0x00,0x02,
0x00,
0x00,
0x00,
深圳国芯人工智能有限公司
//bLength(18);
//bDescriptorType(Device);
//bcdUSB(2.00);
//bDeviceClass(0);
//bDeviceSubClass0);
//bDeviceProtocol(0);
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 731 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
0x40,
0x54,0x53,
0x80,0x43,
0x00,0x01,
0x01,
0x02,
0x00,
0x01,
技术支持: 13922829991
研发顾问: 13922805190
//bMaxPacketSize0(64);
//idVendor(5354);
//idProduct(4380);
//bcdDevice(1.00);
//iManufacturer(1);
//iProduct(2);
//iSerialNumber(0);
//bNumConfigurations(1);
};
char code CONFIGDESC[41] =
{
0x09,
0x02,
0x29,0x00,
0x01,
0x01,
0x00,
0x80,
0x32,
//bLength(9);
//bDescriptorType(Configuration);
//wTotalLength(41);
//bNumInterfaces(1);
//bConfigurationValue(1);
//iConfiguration(0);
//bmAttributes(BUSPower);
//MaxPower(100mA);
0x09,
0x04,
0x00,
0x00,
0x02,
0x03,
0x00,
0x00,
0x00,
//bLength(9);
//bDescriptorType(Interface);
//bInterfaceNumber(0);
//bAlternateSetting(0);
//bNumEndpoints(2);
//bInterfaceClass(HID);
//bInterfaceSubClass(0);
//bInterfaceProtocol(0);
//iInterface(0);
0x09,
0x21,
0x01,0x01,
0x00,
0x01,
0x22,
0x1b,0x00,
//bLength(9);
//bDescriptorType(HID);
//bcdHID(1.01);
//bCountryCode(0);
//bNumDescriptors(1);
//bDescriptorType(HID Report);
//wDescriptorLength(27);
0x07,
0x05,
0x81,
0x03,
0x40,0x00,
0x01,
//bLength(7);
//bDescriptorType(Endpoint);
//bEndpointAddress(EndPoint1 as IN);
//bmAttributes(Interrupt);
//wMaxPacketSize(64);
//bInterval(10ms);
0x07,
0x05,
0x01,
0x03,
0x40,0x00,
0x01,
//bLength(7);
//bDescriptorType(Endpoint);
//bEndpointAddress(EndPoint1 as OUT);
//bmAttributes(Interrupt);
//wMaxPacketSize(64);
//bInterval(10ms);
};
char code HIDREPORTDESC[27] =
{
0x05,0x0c,
0x09,0x01,
0xa1,0x01,
深圳国芯人工智能有限公司
//USAGE_PAGE(Consumer);
//USAGE(Consumer Control);
//COLLECTION(Application);
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 732 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
0x15,0x00,
0x25,0xff,
0x75,0x08,
0x95,0x40,
0x09,0x01,
0xb1,0x02,
0x09,0x01,
0x81,0x02,
0x09,0x01,
0x91,0x02,
0xc0,
技术支持: 13922829991
研发顾问: 13922805190
//
LOGICAL_MINIMUM(0);
//
LOGICAL_MAXIMUM(255);
//
REPORT_SIZE(8);
//
REPORT_COUNT(64);
//
USAGE(Consumer Control);
//
FEATURE(Data,Variable);
//
USAGE(Consumer Control);
//
INPUT(Data,Variable);
//
USAGE(Consumer Control);
//
OUTPUT(Data,Variable);
//END_COLLECTION;
};
char code LANGIDDESC[4] =
{
0x04,0x03,
0x09,0x04,
};
char code MANUFACTDESC[8] =
{
0x08,0x03,
'S',0,
'T',0,
'C',0,
};
char code PRODUCTDESC[30] =
{
0x1e,0x03,
'S',0,
'T',0,
'C',0,
' ',0,
'U',0,
'S',0,
'B',0,
' ',0,
'D',0,
'e',0,
'v',0,
'i',0,
'c',0,
'e',0,
};
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 733 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
22 触摸按键控制器,先工程样片,可少量送样
STC8H 系列部分型号的单片机内部集成了一个触摸按键控制器(TSU),最大能连接 16 个按键,
能够侦测手指触摸于按键电极后导致的微小电容变化,并将之量化为 16-bit 的数字。从原理上看来,TSU
模块与 16-bit ADC 雷同,差异仅是 ADC 为侦测及量化仿真电压或电流,而 TSU 是侦测及量化电容大
小。触摸按键的感测,应用时需要外加一个约 10nF 至 47nF 之间的固定电容当参考,如果应用环境温
度变化快速且激烈的环境下,应选用低温飘特性电容,才能保持 TSU 输出数据不会有太大变化,避免
软件误判。
下图为一说明,对某一个按键做连续感测,在没有手指碰触时,计数器输出值为 2572 附近,当有
手指触摸后,计数器输出变成 2443 附近,有无手指触摸的计数器输出值差异约 5%
Counter value
No touch
2572
2443
Finger touch
Time
0
Fig. counter value for touch-sensing
TSU 模块最大能连接 16 个按键,通过 TSCHEN1 及 TSCHEN2 两个八位寄存器能对每一个触摸按
键口独立使能,不做触摸按键的 I/O 口,仍能维持其原本 GPIO 或特殊功能如 LED。开关电容电路的频
率,透过 SCR[2:0]来选择,建议频率不要超过 12.5MHz,能避免产生较大的误差,TSU 模块内部比较
器的参考电压,透过 TSVR[1:0]来选取,共有四段可选,改变参考电压会改变触摸感测时间及灵敏度。
触摸按键扫描可配置成连续不断地循环扫描或是扫描已使能键一轮后就停止,这功能由 SINGLE
位来控制,配置寄存器 TSSAMP[1:0]允许 TSU 模块对同一个通道做最多连续 4 次的扫描采样并计算数
据的平均值,这有硬件滤波的效果。而 WAIT 位,则能让 TSU 模块在 TSIF 标志位为 1 时,进入等待模
式,直到软件将 WAIT 位清除为 0,TSU 才会接续做按键扫描,这有助于负担沉重的 CPU 有足够的时
间做处理。外部电容 Cref 值推荐 10nF~47nF 范围,Cref 的起始放电至零的时间必需充足,这可以透过
DT[2:0]弹性调整放电时间。
当完成一个按键的扫描时,16 位计数器的输出值会被写入 TSDATAH 及 TSDATAL 中,硬件也同
时将标志位 TSIF 设成 1,同时会把已扫描完成的触摸信道号码写入 TSDNCHN[3:0],若模块外部中断
控制器使能,TSIF 能向 CPU 发出中断请求,软件能读取 TSDNCHN[3:0]寄存器内容以判别发出 TSIF
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 734 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
中断的是哪一个触摸通道,而软件读取 TSWKCHN[3:0]与 TSGO 则能实时了解 TSU 模块正在扫描的状
态与正在扫描的按键号。如果 16 位计数器发生溢位情形,硬件会将 TSDOV 标志位设成 1。
TSU 模块能与 LED 驱动电路做 I/O 口分时复用,当 TSRT 寄存器内容不为零时,即代表当 TSGO
使能 TSU 工作后是要一起使能 LED 驱动电路并分时复用 I/O 口。因此在 TSGO 使能前,软件必需先依
步配置好 TSU 模块与 LED 驱动电路的相关寄存器,最后才使能 TSGO。在 TSU/LED 分时多任务模式
下,为了维持 LED 固定的 frame rate,若分配给按键扫描的时间已到达但正扫描的按键尚未完成,则该
按键将于 LED 分时工作时间终止后,由重新扫描该未完成按键开始新一轮按键扫描。
22.1 触摸按键控制器内部框架图
22.2 低功耗触摸唤醒
TSU 模块内部有一专用计时与控制电路,能接受外部 32KHz 晶振或内部 32KHz RC 振荡电路为时
钟源,每隔一段时间唤醒 TSU 模块做按键扫描,以 duty control 方式实现低功耗触摸唤醒功能。每一个
触摸通道有一个专属的 16 位阀值寄存器{TSTHHx,TSTHLx},当唤醒使能位 TSWUEN 置 1 及数字比较
器使能位 TSDCEN 置 1 后 MCU 进入 power-down 状态,整个芯片进入低功耗触摸唤醒模式,TSU 模块
能重复不断地规则性短暂自我唤醒做按键扫描以便唤醒 CPU,当按键扫描的数据结果(或者数据平均结
果)小于设定的阀值时,硬件会将 TSIF 置 1 并唤醒 CPU 离开 power-down 状态。TSU 模块内部有一硬件
平均电路,能够对同一通道最多连续四次的扫描采样数据结果做平均计算,这透过 TSSAMP[1:0]寄存
器来配置采样的次数,而{TSDATAH, TSDATAL}则存放着数据平均值。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 735 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
22.3 仅做触摸按键功能时的操作步骤
1. 选择需要扫描的信道,寄存器为 TSCHEN1 及 TSCHEN2
2. 设置 TSRT 内容为 0x00,代表没有开启 LED 驱动分时多任务功能
3. 依据 Cref 大小及触摸按键电容大小配置开关频率 SCR[2:0]与放电时间 DT[2:0],根据所需要的扫
描时间及灵敏度选择内部比较器参考电压 TSVR[1:0]
4. 配置 SINGLE 位来决定是扫描一轮自动停止或者是连续不停扫描,配置 TSSAMP[1:0]能让一通道
的重复采样最多四次,若 CPU 任务繁重,配置 TSWAIT 以利用 TSIF 状态来延时下一个信道的扫
描
5. 必要的话,配置 TSDCEN 以使能内部数字比较功能
6. 设置 TSGO=1,触摸按键开始扫描,软件读取 TSWKCHN[3:0]来了解当下在扫描那一个信道,每
扫完一个通道,硬件会将 TSIF 设置成 1,同时完成的信道号码会写入 TSDNCHN[3:0]中,若有溢
位发生,TSOV 也会被设置成 1,软件应读取这些寄存器以决定接下来怎么做。TSIF 及 TSOV 仅
能由硬件设置及软件清除
7. 若 SINGLE=1,一轮扫完后硬件将自动将 TSGO 清除并结束扫描,否则 TSGO 维持在 1,继续新
一轮扫描。
8. 若软件想停止触摸按键扫描,可随时将 TSGO 设置成 0,若想要降低功耗,务必将 TSPD 设成 1。
22.4 低功耗触摸按键唤醒功能的操作步骤
1.
2.
3.
4.
5.
6.
7.
8.
9.
选择需要扫描的信道,寄存器为 TSCHEN1 及 TSCHEN2
务必设置 TSRT 内容为 0x00,此时不能开启 LED 驱动分时多任务功能
配置开关频率 SCR[2:0],放电时间 DT[2:0]及选择内部比较器参考电压 TSVR[1:0]
配置 SINGLE 位为 0 做连续不停扫描,配置 TSWAIT 为 0。
配置 TSWUCS,决定唤醒控制器的时钟来源是外部 32KHz 晶振或内部 32KHz IRC。
配置 TSWUTC,以决定 TSU 每隔多久需要起来干活,干活完就自动进入省电模式
配置 TSSAMP[1:0]以决定每一个信道的扫描采样次数,配置 TSDCEN=1 使能内部数字比较功能
配置好每一个信道的唤醒阀值{TSTHHx, TSTHLx},这阀值会与扫描结果的平均值做比较
使能 TSWUEN=1,设置 TSPD=1 以关闭 TSU 模块模拟电源,以及使能 TSIF 能唤醒 CPU,然后
让 MCU 进入 power-down 状态。MCU 一旦进入 power-down 状态,TSU 内部的唤醒控制器即开
始工作,周期性控制 TSU 模块的电源开关、按键扫描、数据比较等等。
10. 当数据结果低于所设定的阀值,硬件会将 TSIF 设成 1,将该按键号码写入 TSDNCHN[3:0]中 CPU
被唤醒,低功耗触摸唤醒模式结束。
11. CPU 被唤醒后,除了可以直接读取 TSDNCHN[3:0]认定是那个按键有触摸外, 也可以在正常工作
模式再施行按键扫描以确认是否唤醒是因为噪声干扰所致。
22.5 触摸按键相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B0
TSCHEN1
触摸按键使能寄存器 1
FB40H TKEN7
TKEN1
TKEN0 0000,0000
TSCHEN2
触摸按键使能寄存器 2
FB41H TKEN15 TKEN14 TKEN13 TKEN12 TKEN11 TKEN10 TKEN9
TKEN8 0000,0000
TSCFG1
触摸按键配置寄存器 1
FB42H
-
TSCFG2
触摸按键配置寄存器 2
FB43H
-
深圳国芯人工智能有限公司
TKEN6 TKEN5 TKEN4 TKEN3 TKEN2
B1
SCR[2:0]
-
-
-
国内分销商电话: 0513-5501 2928/2929/2966
-
DT[2:0]
-
TSVR[1:0]
0000,0000
0000,0000
传真: 0513-5501 2926/2956/2947
- 736 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TSWUTC
触摸按键唤醒控制寄存器
FB44H
TSCTRL
触摸按键控制寄存器
FB45H
TSSTA1
触摸按键状态寄存器 1
FB46H LEDWK
TSSTA2
触摸按键状态寄存器 2
FB47H
触摸按键时间控制寄存器
FB48H
0000,0000
TSDATH
触摸按键数据高字节
FB49H
0000,0000
TSDATL
触摸按键数据低字节
FB4AH
0000,0000
TSTH00H
触摸按键 0 门槛值高字节
FB50H
0000,0000
TSTH00L
触摸按键 0 门槛值低字节
FB51H
0000,0000
TSTH01H
触摸按键 1 门槛值高字节
FB52H
0000,0000
TSTH01L
触摸按键 1 门槛值低字节
FB53H
0000,0000
TSTH02H
触摸按键 2 门槛值高字节
FB54H
0000,0000
TSTH02L
触摸按键 2 门槛值低字节
FB55H
0000,0000
TSTH03H
触摸按键 3 门槛值高字节
FB56H
0000,0000
TSTH03L
触摸按键 3 门槛值低字节
FB57H
0000,0000
TSTH04H
触摸按键 4 门槛值高字节
FB58H
0000,0000
TSTH04L
触摸按键 4 门槛值低字节
FB59H
0000,0000
TSTH05H
触摸按键 5 门槛值高字节
FB5AH
0000,0000
TSTH05L
触摸按键 5 门槛值低字节
FB5BH
0000,0000
TSTH06H
触摸按键 6 门槛值高字节
FB5CH
0000,0000
TSTH06L
触摸按键 6 门槛值低字节
FB5DH
0000,0000
TSTH07H
触摸按键 7 门槛值高字节
FB5EH
0000,0000
TSTH07L
触摸按键 7 门槛值低字节
FB5FH
0000,0000
TSTH08H
触摸按键 8 门槛值高字节
FB60H
0000,0000
TSTH08L
触摸按键 8 门槛值低字节
FB61H
0000,0000
TSTH09H
触摸按键 9 门槛值高字节
FB62H
0000,0000
TSTH09L
触摸按键 9 门槛值低字节
FB63H
0000,0000
TSTH10H
触摸按键 10 门槛值高字节
FB64H
0000,0000
TSTH10L
触摸按键 10 门槛值低字节
FB65H
0000,0000
TSTH11H
触摸按键 11 门槛值高字节
FB66H
0000,0000
TSTH11L
触摸按键 11 门槛值低字节
FB67H
0000,0000
TSTH12H
触摸按键 12 门槛值高字节
FB68H
0000,0000
TSTH12L
触摸按键 12 门槛值低字节
FB69H
0000,0000
TSTH13H
触摸按键 13 门槛值高字节
FB6AH
0000,0000
TSTH13L
触摸按键 13 门槛值低字节
FB6BH
0000,0000
TSTH14H
触摸按键 14 门槛值高字节
FB6CH
0000,0000
TSTH14L
触摸按键 14 门槛值低字节
FB6DH
0000,0000
TSTH15H
触摸按键 15 门槛值高字节
FB6EH
0000,0000
TSTH15L
触摸按键 15 门槛值低字节
FB6FH
0000,0000
TSRT
22.5.1
0000,0000
TSGO
TSIF
SINGLE TSWAIT TSWUCS TSDCEN TSWUEN
TSSAMP[1:0]
0000,0000
-
-
-
TSWKCHN[3:0]
0000,0000
TSDOV
-
-
TSDNCHN[3:0]
0000,0000
触摸按键使能寄存器(TSCHENn))
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TSCHEN1
FB40H
TKEN7
TKEN6
TKEN5
TKEN4
TKEN3
TKEN2
TKEN1
TKEN0
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 737 -
STC8H 系列技术手册
TSCHEN2
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
FB41H
TKEN15
TKEN14
TKEN13
技术支持: 13922829991
TKEN12
研发顾问: 13922805190
TKEN11
TKEN10
TKEN9
TKEN8
B3
B2
B1
B0
TKENn:触摸按键使能位(n=0~15)
0:相应的 TKn 管脚为 GPIO
1:相应的 TKn 管脚为触摸按键
触摸按键配置寄存器(TSCFGn)
22.5.2
符号
地址
B7
TSCFG1
FB42H
-
TSCFG2
FB43H
-
B6
B5
B4
SCR[2:0]
-
-
-
-
DT[2:0]
-
TSVR[1:0]
SCR:配置触摸按键控制器内部的开关电容工作频率(频率越高充电时间越短)
开关电容工作频率 =
系统工作频率
2 * ( SCR[2:0] + 1 )
DT[2:0]:配置触摸按键控制器内部的Cref的起始对地放电时间
DT[2:0]
放电时间
000
125个系统时钟
001
250个系统时钟
010
500个系统时钟
011
1000个系统时钟
100
2000个系统时钟
101
2500个系统时钟
110
5000个系统时钟
111
7500个系统时钟
TSCV[1:0]:配置触摸按键控制器内部的参考电压
TSCV[1:0]
参考电压
00
1/4 AVcc
01
1/2 AVcc
10
5/8 AVcc
11
3/4 AVcc
22.5.3
触摸按键低电模式唤醒时间控制寄存器(TSWUTC)
符号
地址
TSWUTC
FB44H
B7
B6
B5
B4
B3
B2
B1
B0
TSWUTC 寄存器用于配置每隔多久唤醒一次触摸按键控制器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 738 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
唤醒频率 =
技术支持: 13922829991
研发顾问: 13922805190
F32K
32 * 8 * TSWUTC[7:0]
例如:若外挂 32.768KHz 的晶振,且 TSWUTC = 0x80,
则触摸按键控制器的唤醒频率则为 32768 / (32 * 8 * 0x80) = 1Hz,即 1 秒唤醒一次。
注意:若设置的唤醒频率太快,唤醒的时间不足以完成一轮按键扫描,则触摸按键控制器会持续不停
的扫描,而无法进入省电模式。
22.5.4
触摸按键控制寄存器(TSCTRL)
符号
地址
B7
B6
B5
B4
B3
B2
TSCTRL
FB45H
TSGO
SINGLE
TSWAIT
TSWUCS
TSDCEN
TSWUEN
B1
B0
TSSAMP[1:0]
TSGO:触摸按键控制器启动控制
0:触摸按键控制器不工作
1:触摸按键控制器开始启动。
SINGLE:单次扫描模式控制
0:重复扫描模式
1:单次扫描模式。当 TSGO=1 时,当完成一轮按键扫描后,硬件自动将 TSGO 清 0 终止扫描。
注意:当 TSGO=1,且 TSRT 不为 0 时,代表触摸按键控制器与 LED 驱动器为共享 GPIO 且分
时多工,此时 SINGLE 控制位无效。
TSWAIT:触摸按键控制器等待控制
0:触摸按键控制器自动重复扫描
1:完成一轮扫描后,TSIF 被硬件置 1,此时触摸按键控制器会暂停扫描,直到 TSIF 标志位被清 0
后才开始下一轮的扫描。
TSWUCS:低功耗模式下触摸按键控制器时钟源选择
0:低功耗模式下触摸按键控制器时钟源为内部 32K 的 IRC
1:低功耗模式下触摸按键控制器时钟源为外部 32K 晶振
TSDCEN:触摸按键控制器内部16位数字比较器控制位
0:关闭触摸按键控制器内部 16 位数字比较器
1:使能触摸按键控制器内部 16 位数字比较器
注意:当 TSU 内部数字比较器被使能, 只有当触摸感测数据结果 { TSDATAH, TSDATAL } 小于
该对应通道所设定的阀值 { TSTHHx, TSTHLx }时, TSIF 才会被设置 1。此功能用于低功耗
模式下可实行触摸唤醒 CPU
TSWUEN:触摸按键控制器低功耗唤醒使能位
0:关闭触摸按键控制器低功耗唤醒功能
1:使能触摸按键控制器低功耗唤醒功能。使能后当 MCU 进入 power-down 状态,旋即进入触摸按
键低功耗唤醒 MCU 模式。在此模式下,触摸按键控制器内部低功耗时序控制电路将周期性使能
TSU 做按键摸扫描,以 duty control 维持极低的平均电流。TSWUEN 只有在 MCU 进入 power-down
mode 以及 TSIF 为 0 时才会真正有作用。
注意:此芯片内部有两个 32K 的振荡器,一个是外部的 32K 晶振,另一个是内部的 IRC32K 振荡
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 739 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
器。在非 STOP-mode 的情况下:内部 IRC32K 的使能机制单纯是透过 XFR:IRC32KCR[7];
外部的 X32K 的使能机制单纯是透过 XFR:X2KCR[7]。在 STOP-mode 的情况下:内部
IRC32K 的使能机制除了 XFR:IRC32KCR[7] 必须被设 1 外, 还必须 SFR:ENWKT 或是
外部的 X32K 的使能机制除了 XFR:X32KCR[7] 必须被设 1 外, 还
XFR:TSWUEN 被设 1;
必须 XFR:TSWUEN 被设 1。强调的重点是:TSWUEN 在 STOP-mode 的情况下还扮演
启动或是不启动 32K 振荡器的角色。
TSSAMP[1:0]:单一触摸通道重复扫描次
TSSAMP [1:0]
重复扫描次
00
1次
01
2次
10
3次
11
4次
注意:中断标志位 TSIF 只有当扫描同一按键的次数到达 TSSAMP 的配置时才会被置 1,这时
{TSDATAH,TSDATAL}里是写入的是数次结果的平均值。但若有任一次溢位发生, 硬件会
将 TSDOV 置 1。在 TSWKEN 使能的情况下,平均值必须小于门槛内容才会导致中断标志
位 TSIF 置 1,才能唤醒 CPU。
22.5.5
触摸按键状态寄存器 1(TSSTA1)
符号
地址
B7
B6
B5
B4
TSSTA1
FB46H
LEDWK
-
-
-
B3
B2
B1
B0
TSWKCHN[3:0]
LEDWK:触摸按键控制器与LED驱动器分时多工时的工作状态
0:LED 驱动器处于等待状态,触摸按键控制器处于工作状态
1:LED 驱动器处于工作状态,触摸按键控制器处于等待状态
TSWKCHN [3:0]:触摸通道扫描状态
TSWKCHN [3:0]
触摸通道状态
0000
触摸通道 0 正在被扫描
0001
触摸通道 1 正在被扫描
0010
触摸通道 2 正在被扫描
0011
触摸通道 3 正在被扫描
0100
触摸通道 4 正在被扫描
0101
触摸通道 5 正在被扫描
0110
触摸通道 6 正在被扫描
0111
触摸通道 7 正在被扫描
1000
触摸通道 8 正在被扫描
1001
触摸通道 9 正在被扫描
1010
触摸通道 10 正在被扫描
1011
触摸通道 11 正在被扫描
1100
触摸通道 12 正在被扫描
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 740 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
1101
触摸通道 13 正在被扫描
1110
触摸通道 14 正在被扫描
1111
触摸通道 15 正在被扫描
22.5.6
技术支持: 13922829991
研发顾问: 13922805190
触摸按键状态寄存器 2(TSSTA2)
符号
地址
B7
B6
B5
B4
TSSTA2
FB47H
TSIF
TSDOV
-
-
B3
B2
B1
B0
TSDNCHN[3:0]
TSIF:触摸按键通道扫描完成标志(软件写1清0)
0:还未完成扫描
1:当完成 TSSAMP 所设定的扫描次数时,硬件会将 TSIF 置 1,TSIF 可以对 CPU 发出中断请求。
如果是在低功耗唤醒模式下,还必需加上扫描数据结果值低于设定的门槛,TSIF 才会被设成 1。
注意:TSIF 只能由硬件置 1,软件无法将 TSIF 设成 1。特别注意的是软件写 1 至 TSIF 会将 TSIF
清为 0,软件写 0 至 TSIF 则对内容毫无影响。当 TSWAIT=1 时且 TSIF 为 1 时,TSU 处
于暂停等待状态,等待 CPU 忙完后将 TSIF 清为 0 后才会继续下一个按键的扫描。
TSDOV:按键扫描数据溢出标志(软件写1清0)
0:按键扫描数据没有溢出,扫描数据小于或等于 0xFFFF
1:按键扫描数据发生溢出,扫描数据大于 0xFFFF。此时软件配置(如 TSVR)或系统硬件必需调整
以免溢位发生。TSDOV 仅能由硬件设 1,软件必需对 TSDOV 写入 1 方能将其清除,软件对此
位写 0 无任何作用。
TSDNCHN [3:0]:触摸通道完成状态
TSDNCHN [3:0]
触摸通道状态
0000
触摸通道 0 完成扫描
0001
触摸通道 1 完成扫描
0010
触摸通道 2 完成扫描
0011
触摸通道 3 完成扫描
0100
触摸通道 4 完成扫描
0101
触摸通道 5 完成扫描
0110
触摸通道 6 完成扫描
0111
触摸通道 7 完成扫描
1000
触摸通道 8 完成扫描
1001
触摸通道 9 完成扫描
1010
触摸通道 10 完成扫描
1011
触摸通道 11 完成扫描
1100
触摸通道 12 完成扫描
1101
触摸通道 13 完成扫描
1110
触摸通道 14 完成扫描
1111
触摸通道 15 完成扫描
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 741 -
STC8H 系列技术手册
22.5.7
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
触摸按键时间控制寄存器(TSRT)
符号
地址
TSRT
FB48H
B7
B6
B5
B4
B3
B2
B1
B0
TSRT 寄存器用于配置触摸按键控制器和 LED 驱动器分时多工。
当 TSRT 不为 00 时,表示触摸按键控制器和 LED 驱动器为分时多工模式。触摸按键控制器分得的时间
长度为 TSRT * TLED(TLED 请参考 LED 驱动说明部分)
22.5.8
触摸按键数据寄存器(TSDAT)
B7
B6
B5
B4
B3
符号
地址
TSDATH
FB49H
TSDAT[15:8]
TSDATL
FB4AH
TSDAT[7:0]
B2
B1
B0
B2
B1
B0
TSDAT[15:0]:触摸按键扫描的数据
22.5.9
触摸按键门槛值寄存器(TSTH)
B7
B6
B5
B4
B3
符号
地址
TSTH00H
FB50H
TSTH00[15:8]
TSTH00L
FB51H
TSTH00[7:0]
TSTH01H
FB52H
TSTH01[15:8]
TSTH01L
FB53H
TSTH01[7:0]
TSTH02H
FB54H
TSTH02[15:8]
TSTH02L
FB55H
TSTH02[7:0]
TSTH03H
FB56H
TSTH03[15:8]
TSTH03L
FB57H
TSTH03[7:0]
TSTH04H
FB58H
TSTH04[15:8]
TSTH04L
FB59H
TSTH04[7:0]
TSTH05H
FB5AH
TSTH05[15:8]
TSTH05L
FB5BH
TSTH05[7:0]
TSTH06H
FB5CH
TSTH06[15:8]
TSTH06L
FB5DH
TSTH06[7:0]
TSTH07H
FB5EH
TSTH07[15:8]
TSTH07L
FB5FH
TSTH07[7:0]
TSTH08H
FB60H
TSTH08[15:8]
TSTH08L
FB61H
TSTH08[7:0]
TSTH09H
FB62H
TSTH09[15:8]
TSTH09L
FB63H
TSTH09[7:0]
TSTH10H
FB64H
TSTH10[15:8]
TSTH10L
FB65H
TSTH10[7:0]
TSTH11H
FB66H
TSTH11[15:8]
TSTH11L
FB67H
TSTH11[7:0]
TSTH12H
FB68H
TSTH12[15:8]
TSTH12L
FB69H
TSTH12[7:0]
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 742 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
TSTH13H
FB6AH
TSTH13[15:8]
TSTH13L
FB6BH
TSTH13[7:0]
TSTH14H
FB6CH
TSTH14[15:8]
TSTH14L
FB6DH
TSTH14[7:0]
TSTH15H
FB6EH
TSTH15[15:8]
TSTH15L
FB6FH
TSTH15[7:0]
研发顾问: 13922805190
TSTHn[15:0]:触摸按键扫描数据门槛值。当数字比较器被使能后,只有当扫描述据低于此门坎值,TSIF
才会被硬件置 1。
22.6 基本参考电路图以及注意事项
VCC
10u
C?
104
1
2
3
4
5
6
7
8
9
10
P1.4
P1.5
P1.6
P1.7
P1.3
TK_CAP
P5.4
VCC
VREF
GND
P1.1
P1.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
R?
20
19
18
17
16
15
14
13
12
11
STC8G1K08T
建议值
建议封装
C?
10nF ~ 47nF
0603
R?
470欧 ~ 1K欧
0603
注意:参考线路图中,C?为触摸按键的灵敏度调节电容,R?为 ESD 保护电阻,在 PCB 布板时,C?与 R?请务必
尽量靠近 IC 管脚。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 743 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23 LED驱动器
STC8H 系列部分型号的单片机内部集成了一个 LED 驱动器。
LED 驱动电路包含一个时序控制器,8 个 COM 输出引脚及 8 个 SEGMENT 输出引脚。每一个引脚
有一个对应的寄存器使能位,能独立控制该引脚使能与否,没使能的引脚能当做 GPIO 或其它功能的引
脚。
LED 驱动支持共阴、共阳、共阴/共阳三种模式,同时能选择 1/8 ~ 8/8 占空比来调节灰度,因此仅
需透过软件即可调节 LED 及数码管的亮度。
上电复位后,LEDON 使能位为 0,LED 驱动电路关闭。配置 LEDON 为 1 使能 LED 驱动电路,当
LEDMODE=00 时,驱动电路工作于共阴模式,此时被选中的 COM 输出低电平,被选中的 SEGMENT
且希望 LED 发亮则输出高电平,因此 SEGMENT 与 COM 两端点间的 LED 顺向偏压导通发亮。同理,
当 LEDMODE=01 时,驱动电路工作于共阳模式,此时被选中的 COM 输出高电平,被选中的 SEGMENT
且希望 LED 发亮则输出低电平,因此 SEGMENT 与 COM 两端点间的 LED 顺向偏压导通发亮。当
LEDMODE=10 时,驱动电路工作于共阴/共阳分时驱动模式,COM 的电平为低电平与高电平分时交错,
LED 导通发亮原理与共阴、共阳是相同的。
共阴模式及共阳模式下 display RAM 是独立的地址,共阴/共阳分时多任务模式下 display RAM 的
位置也是从独立的地址去读取。
23.1 LED驱动器内部框架图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 744 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23.2 LED驱动相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
COMEN
COM 使能寄存器
FB00H
C7EN
C6EN
C5EN
C4EN
C3EN
C2EN
C1EN
C0EN
0000,0000
SEGENL
SEG 使能寄存器
FB01H
S7EN
S6EN
S5EN
S4EN
S3EN
S2EN
S1EN
S0EN
0000,0000
SEGENH
SEG 使能寄存器
FB01H
S15EN
S14EN
S13EN
S12EN
S11EN
S10EN
S9EN
S8EN
0000,0000
LEDCTRL
LED 控制寄存器
FB03H LEDON
LEDCKS
LED 时钟分频寄存器
FB04H
0000,0001
COM0_DA_L 共阳模式显示数据
FB10H
0000,0000
COM1_DA_L 共阳模式显示数据
FB11H
0000,0000
COM2_DA_L 共阳模式显示数据
FB12H
0000,0000
COM3_DA_L 共阳模式显示数据
FB13H
0000,0000
COM4_DA_L 共阳模式显示数据
FB14H
0000,0000
COM5_DA_L 共阳模式显示数据
FB15H
0000,0000
COM6_DA_L 共阳模式显示数据
FB16H
0000,0000
COM7_DA_H 共阳模式显示数据
FB17H
0000,0000
COM0_DA_H 共阳模式显示数据
FB18H
0000,0000
COM1_DA_H 共阳模式显示数据
FB19H
0000,0000
COM2_DA_H 共阳模式显示数据
FB1AH
0000,0000
COM3_DA_H 共阳模式显示数据
FB1BH
0000,0000
COM4_DA_H 共阳模式显示数据
FB1CH
0000,0000
COM5_DA_H 共阳模式显示数据
FB1DH
0000,0000
COM6_DA_H 共阳模式显示数据
FB1EH
0000,0000
COM7_DA_H 共阳模式显示数据
FB1FH
0000,0000
COM0_DC_L 共阴模式显示数据
FB20H
0000,0000
COM1_DC_L 共阴模式显示数据
FB21H
0000,0000
COM2_DC_L 共阴模式显示数据
FB22H
0000,0000
COM3_DC_L 共阴模式显示数据
FB23H
0000,0000
COM4_DC_L 共阴模式显示数据
FB24H
0000,0000
COM5_DC_L 共阴模式显示数据
FB25H
0000,0000
COM6_DC_L 共阴模式显示数据
FB26H
0000,0000
COM7_DC_L 共阴模式显示数据
FB27H
0000,0000
COM0_DC_H 共阴模式显示数据
FB28H
0000,0000
COM1_DC_H 共阴模式显示数据
FB29H
0000,0000
COM2_DC_H 共阴模式显示数据
FB2AH
0000,0000
COM3_DC_H 共阴模式显示数据
FB2BH
0000,0000
COM4_DC_H 共阴模式显示数据
FB2CH
0000,0000
COM5_DC_H 共阴模式显示数据
FB2DH
0000,0000
COM6_DC_H 共阴模式显示数据
FB2EH
0000,0000
COM7_DC_H 共阴模式显示数据
FB2FH
0000,0000
深圳国芯人工智能有限公司
-
LEDMODE[1:0]
国内分销商电话: 0513-5501 2928/2929/2966
-
LEDDUTY[2:0]
0000,0000
传真: 0513-5501 2926/2956/2947
- 745 -
STC8H 系列技术手册
23.2.1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
COM使能寄存器(COMEN)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
COMEN
FB00H
C7EN
C6EN
C5EN
C4EN
C3EN
C2EN
C1EN
C0EN
CnEN:COMn使能控制位(n=0~7)
0:不使能 COMn,仍然为 GPIO
1:使能 COMn,对应的 I/O 在 LEDON=1 时输出 COM 的驱动波形。
23.2.2
SEG使能寄存器(SEGEN)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SEGENL
FB01H
S7EN
S6EN
S5EN
S4EN
S3EN
S2EN
S1EN
S0EN
SEGENH
FB02H
S15EN
S14EN
S13EN
S12EN
S11EN
S10EN
S9EN
S8EN
B1
B0
SnEN:SEGn使能控制位(n=0~15)
0:不使能 SEGn,仍然为 GPIO
1:使能 SEGn,对应的 I/O 在 LEDON=1 时输出 SEG 的驱动波形。
23.2.3
LED控制寄存器(LEDCTRL)
符号
地址
B7
B6
LEDCTRL
FB03H
LEDON
-
B5
B4
B3
LEDMODE[1:0]
-
B2
LEDDUTY[2:0]
LEDON:LED驱动器使能控制
0:关闭 LED 驱动器
1:使能 LED 驱动器。
LEDMODE[1:0]:LED驱动模式
LEDMODE[1:0]
驱动模式
00
共阴模式
01
共阳模式
10
共阴/共阳模式
11
保留
LEDDUTY[2:0]:LED灰度调节
LEDDUTY[2:0]
LED占空比
LED亮度
000
8/8
100%
001
7/8
87.5%
010
6/8
75%
011
5/8
62.5%
100
4/8
50%
101
3/8
37.5%
110
2/8
25%
111
1/8
12.5%
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 746 -
STC8H 系列技术手册
23.2.4
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
LED时钟分频寄存器(LEDCKS)
符号
地址
LEDCKS
FB04H
B7
B6
B5
B4
B3
B2
B1
B0
LEDCKS:LED时钟分频控制。
LED工作频率 =
SYSclk
160 * LEDCKS[7:0]
寄存器 LEDCKS 的值若设置太大,会导致 LED 产生闪烁现象,一般 LED 刷新频率大于或等于 75Hz
则不会有明显的闪烁
建议值:
SYSclk
160 * 8 * NCOM * LEDCKS[7:0]
≥ 75Hz
NCOM:使能的COM数,若为共阴/共阳模式,则为COM数的两倍
例如:若单片机的工作频率为 11.0592MHz,LED 的工作模式为共阴/共阳模式,COMEN 设置为 0FFH,
即使能 8 个 COM,则 11059200 / 160 / 8 / 16 / LEDCKS ≥ 75,得到 LEDCKS ≤ 7.2,所以 LEDCKS
建议设置为 7。
23.2.5
LED共阳模式数据寄存器(COMn_DA)
符号
地址
COM0_DA_L
FB10H
COM1_DA_L
FB11H
COM2_DA_L
FB12H
COM3_DA_L
FB13H
COM4_DA_L
FB14H
COM5_DA_L
FB15H
COM6_DA_L
FB16H
COM7_DA_L
FB17H
COM0_DA_H
FB18H
COM1_DA_H
FB19H
COM2_DA_H
FB1AH
COM3_DA_H
FB1BH
COM4_DA_H
FB1CH
COM5_DA_H
FB1DH
COM6_DA_H
FB1EH
COM7_DA_H
FB1FH
23.2.6
符号
B7
B6
B5
B4
B3
B2
B1
B0
B2
B1
B0
LED共阴模式数据寄存器(COMn_DC)
地址
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
传真: 0513-5501 2926/2956/2947
- 747 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
COM0_DC_L
FB20H
COM1_DC_L
FB21H
COM2_DC_L
FB22H
COM3_DC_L
FB23H
COM4_DC_L
FB24H
COM5_DC_L
FB25H
COM6_DC_L
FB26H
COM7_DC_L
FB27H
COM0_DC_H
FB28H
COM1_DC_H
FB29H
COM2_DC_H
FB2AH
COM3_DC_H
FB2BH
COM4_DC_H
FB2CH
COM5_DC_H
FB2DH
COM6_DC_H
FB2EH
COM7_DC_H
FB2FH
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
研发顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 748 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23.3 LED共阴模式(LEDMODE = 00)
COM0
COM1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
D00
1
D10
0
D01
0
D11
0
D02
0
D12
1
传真: 0513-5501 2926/2956/2947
D03
1
D13
1
- 749 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23.4 LED共阳模式(LEDMODE = 01)
COM0
COM1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
D00
1
D10
0
D01
0
D11
0
D02
0
D12
1
传真: 0513-5501 2926/2956/2947
D03
1
D13
1
- 750 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23.5 LED共阴/共阳模式(LEDMODE = 10)
COM0
COM0
COM1
COM1
D00A
1
D00C
0
D10A
0
D10C
1
D01A
0
D01C
0
D11A
0
D11C
0
D02A
0
D02C
1
D12A
1
D12C
0
D03A
1
D03C
1
D13A
1
D13C
1
SEG0
D00A
D10A
D00C
D10C
D01C
D11C
D02C
D12C
D03C
D13C
SEG1
D01A
D11A
SEG2
D02A
D12A
D03A
D13A
SEG3
COM0
COM1
Tn = one TLED cycle
SEGx state mapping to LED RAM : 1: Low , 0 : Hi-Z
COMx state : active : High, inactive : Hi-Z
LED clock
Hi-Z state
COM1
SEG0
SEG1
SEG2
D00A ON
D01A OFF
D02A OFF
SEG3
D03A ON
Hi-Z state
COM0
Active
COM0
Active
COM0
COM1
Active
D00C OFF
D01A OFF
D01C OFF
D02C ON
D03C ON
COM0
Active
COM1
Active
Hi-Z state
D10C ON
D00A ON
D01A OFF
D11C OFF
D01A OFF
D12A ON
D12C OFF
D02A OFF
D13A ON
D13C ON
D03A ON
Note : LED duty control : change SEGx low pulse width to adjust LED brightness.
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 751 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23.6 触摸按键与LED分时复用I/O
Inactive state is determined by GPIO controller
COM0
active state “Low” is determined by LED controller
COM1
COM2
Unfinished channel is terminated due to time-over
TSU reworks on last unfinished channel
Cref
TK6/SEG6
TK7/SEG5
COM0_DC[5]
COM1_DC[5]
COM2_DC[5]
COM0_DC[5]
COM1_DC[5]
COM2_DC[5]
COM0_DC[4]
COM1_DC[4]
COM2_DC[4]
COM0_DC[5]
COM1_DC[5]
COM2_DC[5]
TK8/SEG4
TK9/SEG3
* TKIF : Set by hardware
Clear by software
TKIF
* TKGO : Set by software
Clear by software or hardware
TKGO
* LEDWK : Set by hardware
Clear by hardware
LEDWK
Fig. Touch/LED share timing diagram
(Common Cathode, only COM 0~2 and TK6~TK9 are enabled)
操作步骤:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
选择需要扫描的触摸按键通道,寄存器为 TSCHEN1 及 TSCHEN2。
配置开关频率 SCR[2:0],放电时间 DT[2:0]及选择内部比较器参考电压 TSVR[1:0]。
配置 TSSAMP[1:0]以决定同一信道的重复扫描次数,若 CPU 任务繁重,配置 TSWAIT 以利用
TSIF 状态来延时下一个信道的扫描。
必要的话,配置 TSDCEN 以使能内部数字比较功能。
设置 TSRT 内容,当 TSRT 内容不为 0x00 代表没有将开启 LED 驱动分时多任务功能。
配置 SEGEN、COMEN 寄存器。
配置 LEDCKS 以决定每一个 COM 作用的时间长度,这需要与 TKRT 寄存器一起考虑以计算
出 LED 的刷新率。
根据 LED 所需的工作模式及辉度配置 LEDMODE[1:0]及 LEDDUTY。
写入数据至 LED 的数据寄存器 COMx_DC 及 COM_DA 中。
设置 TSGO=1,触摸按键开始扫描。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 752 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
a)
11.
软件可读取 TSWKCHN[3:0]来了解当下那一个信道正被扫描,每扫完一个通道,硬件
会将 TSIF 设置成 1,同时完成的信道号码会写入 TSDNCHN[3:0]中,若有溢位发生,
TSOV 也会被设置成 1,软件应读取这些寄存器以决定接下来怎么做。TSIF 及 TSOV 仅
能由硬件设置及软件清除。
当切换成 LED 工作时间时,软件读取 LEDWK 位会得到 1,用以判断当下是触摸按键
b)
控制器正在工作或 LED 驱动电路正在工作
软件依实际需要,持续更新 LED 数据寄存器
c)
若软件想终止触摸按键与 LED 分时多任务模式,需写入 TSGO=0,则多任务模示终止,触摸
按键与 LED 皆不工作, I/O 口的控制权回归 GPIO 控制器
注意:
1.
2.
3.
SINGLE 控制位在触摸按键与 LED 分时多任务模式下无效,只有软件写入 TSGO 才能控制模
块的开启和关闭
由于触摸按键扫描时间终止并转换为 LED 作用时间时,最后的那一个按键几乎都没完成,这
时硬件的处理是不会发出 TSIF 也不会更新触摸数据记相关的寄存器,但是硬件会记住该信道
号码,等 LED 作用期间终止并转换为触摸按键扫描时间时,会由该信道重新扫描来启始新的
一轮扫描。
LED 与触摸复用的电路图如上,要注意的是 LED 的发光颜色不同,代表的 LED 等效电容大小会
不同,电容愈大对触摸按键愈不利,零敏度会下降。一般而言,红光 LED 电容值可能为 35pF,但是
黄光会高达 100pF,这时如果要提高触摸按键的灵敏度,可以串一个 1N4148 二级管。1N4148
本身电容仅有 4pF,1N4148 串一个 100pF 的黄光 LED,对该键的寄生电容会比 4pF 略小
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 753 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C OM7
C OM6
C OM6
C OM4
C OM4
C OM5
C OM3
C OM3
C OM5
C OM2
C OM2
C OM1
C OM0
23.7 共阴模式参考电路图
SEG0
SEG1
SEG2
SEG3
SEG4
SEG5
SEG6
SEG7
C OM7
C OM1
C OM0
23.8 共阳模式参考电路图
SEG0
SEG1
SEG2
SEG3
SEG4
SEG5
SEG6
SEG7
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 754 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C OM7
C OM6
C OM5
C OM4
C OM3
C OM2
C OM1
C OM0
23.9 共阴/共阳模式参考电路图
SEG0
SEG1
SEG2
SEG3
SEG4
SEG5
SEG6
SEG7
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 755 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
23.10 范例程序
23.10.1 共阴/共阳模式驱动 16 个 7 段数码管
1
2
3
4
U1
STC8 G1 K0 8T
C OM2
C OM1
SEG1
8
7
10 SEG5
D
9
SEG1
P1 .1
P1 .0
P3 .7
P3 .6
P3 .5
P3 .4
P3 .3
P3 .2
P3 .1
P3 .0
11 SEG0
C OM5
7
20
19
18
17
16
15
14
13
12
11
12 C OM3
C OM6
8
10 4
12 C OM7
22 uF
10 SEG5
P5 .4
VCC
P1 .4 /ADC4 /MISO/I2 CS DA/X3 2O/C C P1_ 3/TK4/COM4
C OM1 /TK1 /C C P0/ADC 1/P1 .1
P1 .5 /ADC5 /S CLK/I2C SC L/X3 2I/C C P2_ 3/TK5/COM5
C OM0 /TK0 /C C P1/ADC 0/P1 .0
P1 .6 /ADC6 /R xD_3 /MC LKO_2/XTALO/TK6 /C OM6
SEG7 /TK1 5/CMP +/CC P2 /C C P2_ 2/TxD_2 /INT3/P3 .7
P1 .7 /ADC7 /TxD_3/XTALI/TK7 /C OM7
SEG6 /TK1 4/CMP -/C CP 1_2 /R xD_2 /INT2/ADC 14 /P 3.6
P1 .3 /ADC3 /MOSI/T2C LKO/ECI/CC P0 _3/TK3/C OM3
SEG5 /TK1 3/SS_ 4/CC P0 _2/T0 CLKO/T1/ADC 13 /P 3.5
TK_C AP
SEG4 /TK1 2/MOS I_ 4/CMP O/EC I_2/T1 CLKO/T0/ADC 12 /P 3.4
P5 .4 /ADC2 /R ST/MC LKO/S S/T2/EC I_3/TK2/C OM2 SEG3 /TK1 1/I2 CS DA_4 /MISO_4 /INT1/ADC 11 /P 3.3
AVC C /VC C
SEG2 /TK1 0/I2 CS CL_4/SC LK_4 /INT0/ADC 10 /P 3.2
VREF+
SEG1 /TK9 /TxD/ADC9 /P 3.1
VREF-/AGND/GND
SEG0 /TK8 /INT4/R xD/ADC8 /P 3.0
9
D
1
2
3
4
5
6
7
8
9
10
11 SEG0
P1 .4
P1 .5
P1 .6
P1 .7
P1 .3
b
K3
K2
f
a
K1
b
K3
K2
f
a
36 41AS
K1
36 41AS
C
C
K4
g
c
h
d
e
K4
g
c
h
e
6
5
4
3
2
6
C OM4
SEG1
7
1
5
SEG6
C OM5
8
4
SEG2
C OM6
9
3
SEG7
10 SEG5
2
1
SEG3
SEG4
SEG3
SEG7
SEG2
SEG6
C OM0
12 C OM3
11 SEG0
10 SEG5
C OM2
C OM1
SEG1
9
8
7
b
K3
K2
f
a
K1
b
K3
K2
f
K4
g
c
h
d
e
C OM6
K4
C OM5
2
3
1
2
3
4
5
6
SEG3
SEG7
SEG2
SEG6
C OM0
共阳数码管
SEG4
C OM4
1
SEG4
1
6
C OM7
47 0R
A
SEG4
C OM4
g
47 0R
C OM3
5
47 0R
36 41B S
SEG6
P1 .7
47 0R
B
C OM2
c
P1 .6
47 0R
共阴数码管
36 41B S
C OM1
4
P1 .5
47 0R
C OM0
SEG2
P1 .4
47 0R
SEG7
h
P1 .3
47 0R
SEG6
3
P5 .4
47 0R
SEG5
SEG7
P1 .1
47 0R
12 C OM7
P1 .0
47 0R
11 SEG0
P3 .7
SEG4
a
P3 .6
B
47 0R
SEG3
K1
P3 .5
47 0R
SEG2
d
P3 .4
47 0R
SEG1
e
P3 .3
47 0R
2
P3 .2
47 0R
SEG3
P3 .1
d
SEG0
P3 .0
A
4
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 756 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
#define COMEN
#define SEGENL
#define LEDCTR
#define LEDCKS
#define COM0_DA
#define COM1_DA
#define COM2_DA
#define COM3_DA
#define COM4_DA
#define COM5_DA
#define COM6_DA
#define COM7_DA
#define COM0_DC
#define COM1_DC
#define COM2_DC
#define COM3_DC
#define COM4_DC
#define COM5_DC
#define COM6_DC
#define COM7_DC
技术支持: 13922829991
研发顾问: 13922805190
(*(unsigned char volatile xdata *)0xfb00)
(*(unsigned char volatile xdata *)0xfb01)
(*(unsigned char volatile xdata *)0xfb03)
(*(unsigned char volatile xdata *)0xfb04)
(*(unsigned char volatile xdata *)0xfb10)
(*(unsigned char volatile xdata *)0xfb11)
(*(unsigned char volatile xdata *)0xfb12)
(*(unsigned char volatile xdata *)0xfb13)
(*(unsigned char volatile xdata *)0xfb14)
(*(unsigned char volatile xdata *)0xfb15)
(*(unsigned char volatile xdata *)0xfb16)
(*(unsigned char volatile xdata *)0xfb17)
(*(unsigned char volatile xdata *)0xfb20)
(*(unsigned char volatile xdata *)0xfb21)
(*(unsigned char volatile xdata *)0xfb22)
(*(unsigned char volatile xdata *)0xfb23)
(*(unsigned char volatile xdata *)0xfb24)
(*(unsigned char volatile xdata *)0xfb25)
(*(unsigned char volatile xdata *)0xfb26)
(*(unsigned char volatile xdata *)0xfb27)
char code PATTERN[16] =
{
0x3f,
//0
0x06,
//1
0x5b,
//2
0x4f,
//3
0x66,
//4
0x6d,
//5
0x7d,
//6
0x27,
//7
0x7f,
//8
0x6f,
//9
0x77,
//A
0x7c,
//b
0x39,
//C
0x5E,
//d
0x79,
//E
0x71,
//F
};
void main()
{
P1M0 = 0xff;
P1M1 = 0x00;
P3M0 = 0xff;
P3M1 = 0x00;
P5M0 = 0x10;
P5M1 = 0x00;
P_SW2 = 0x80;
COMEN = 0xff;
SEGENL = 0xff;
LEDCTRL = 0x20;
LEDCKS = 7;
//使能 COM0~COM7
//使能 SEG0~SEG7
//LED 驱动共阴/共阳模式
//设置 LED 刷新频率
COM0_DA = PATTERN[0];
//设置 LED 显示内容
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 757 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
COM1_DA = PATTERN[1];
COM2_DA = PATTERN[2];
COM3_DA = PATTERN[3];
COM4_DA = PATTERN[4];
COM5_DA = PATTERN[5];
COM6_DA = PATTERN[6];
COM7_DA = PATTERN[7];
COM0_DC = PATTERN[8];
COM1_DC = PATTERN[9];
COM2_DC = PATTERN[10];
COM3_DC = PATTERN[11];
COM4_DC = PATTERN[12];
COM5_DC = PATTERN[13];
COM6_DC = PATTERN[14];
COM7_DC = PATTERN[15];
LEDCTRL |= 0x80;
//启动 LED 驱动
P_SW2 &= ~0x80;
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 758 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
24 RTC实时时钟
STC8H2K64T 系列单片机内部集成一个实时时钟控制电路,主要有如下特性:
低功耗:RTC 模块工作电流低至 10uA
长时间跨度:支持 2000 年~2099 年,并自动判断闰年
闹钟:支持一组闹钟设置
支持多个中断:闹钟中断、日中断、小时中断、分钟中断、秒中断、1/2 秒中断、1/8 秒中断、
1/32 秒中断
支持掉电唤醒
24.1 RTC相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
RTCCR
RTC 控制寄存器
FE60H
-
-
-
-
-
-
-
RUNRTC 0000,0000
RTCCFG
RTC 配置寄存器
FE61H
-
-
-
-
-
-
RTCCKS
SETRTC 0000,0000
RTCIEN
RTC 中断使能寄存器
FE62H
EALAI
EDAYI
EHOURI
EMINI
ESECI
ESEC2I
ESEC8I
ESEC32I 0000,0000
RTCIF
RTC 中断请求寄存器
FE63H
ALAIF
DAYIF
HOURIF
MINIF
SECIF
SEC2IF
SEC8IF
SEC32IF 0000,0000
ALAHOUR
RTC 闹钟的小时值
FE64H
-
-
-
ALAMIN
RTC 闹钟的分钟值
FE65H
-
-
0000,0000
ALASEC
RTC 闹钟的秒值
FE66H
-
-
0000,0000
ALASSEC
RTC 闹钟的 1/128 秒值
FE67H
-
0000,0000
INIYEAR
RTC 年初始化
FE68H
-
0000,0000
INIMONTH
RTC 月初始化
FE69H
-
-
-
INIDAY
RTC 日初始化
FE6AH
-
-
-
0000,0000
INIHOUR
RTC 小时初始化
FE6BH
-
-
-
0000,0000
INIMIN
RTC 分钟初始化
FE6CH
-
-
0000,0000
INISEC
RTC 秒初始化
FE6DH
-
-
0000,0000
INISSEC
RTC1/128 秒初始化
FE6EH
-
0000,0000
YEAR
RTC 的年计数值
FE70H
-
0000,0000
MONTH
RTC 的月计数值
FE71H
-
-
-
DAY
RTC 的日计数值
FE72H
-
-
-
0000,0000
HOUR
RTC 的小时计数值
FE73H
-
-
-
0000,0000
MIN
RTC 的分钟计数值
FE74H
-
-
0000,0000
SEC
RTC 的秒计数值
FE75H
-
-
0000,0000
SSEC
RTC 的 1/128 秒计数值
FE76H
-
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
0000,0000
-
0000,0000
-
0000,0000
0000,0000
传真: 0513-5501 2926/2956/2947
- 759 -
STC8H 系列技术手册
24.1.1
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RTC控制寄存器(RTCCR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
RTCCR
FE60H
-
-
-
-
-
-
-
RUNRTC
RUNRTC:RTC 模块控制位
0:关闭 RTC,RTC 停止计数
1:使能 RTC,并开始 RTC 计数
24.1.2
RTC配置寄存器(RTCCFG)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
RTCCFG
FE61H
-
-
-
-
-
-
RTCCKS
SETRTC
RTCCKS:RTC 时钟源选择
0:选择外部 32.768KHz 时钟源
1:选择内部 32K 时钟源
SETRTC:设置 RTC 初始值
0:无意义
1:触发 RTC 寄存器初始化。当 SETRTC 设置为 1 时,硬件会自动将寄存器 INIYEAR、INIMONTH、
INIDAY、INIHOUR、INIMIN、INISEC、INISSEC 中的值复制到寄存器 YEAR、MONTH、DAY、
HOUR、MIN、SEC、SSEC 中。初始完成后,硬件会自动将 SETRTC 位清 0。
24.1.3
RTC中断使能寄存器(RTCIEN)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
RTCIEN
FE62H
EALAI
EDAYI
EHOURI
EMINI
ESECI
ESEC2I
ESEC8I
ESEC32I
EALAI:闹钟中断使能位
0:关闭闹钟中断
1:使能闹钟中断
EDAYI:一日(24 小时)中断使能位
0:关闭一日中断
1:使能一日中断
EHOURI:一小时(60 分钟)中断使能位
0:关闭小时中断
1:使能小时中断
EMINI:一分钟(60 秒)中断使能位
0:关闭小时中断
1:使能小时中断
ESECI:一秒中断使能位
0:关闭秒中断
1:使能秒中断
ESEC2I:1/2 秒中断使能位
0:关闭 1/2 秒中断
1:使能 1/2 秒中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 760 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ESEC8I:1/8 秒中断使能位
0:关闭 1/8 秒中断
1:使能 1/8 秒中断
ESEC32I:1/32 秒中断使能位
0:关闭 1/32 秒中断
1:使能 1/32 秒中断
24.1.4
RTC中断请求寄存器(RTCIF)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
RTCIF
FE63H
ALAIF
DAYIF
HOURIF
MINIF
SECIF
SEC2IF
SEC8IF
SEC32IF
B2
B1
B0
ALAIF:闹钟中断请求位。需软件清,软件写 1 无效。
DAYIF:一日(24 小时)中断请求位。需软件清,软件写 1 无效。
HOURIF:一小时(60 分钟)中断请求位。需软件清,软件写 1 无效。
MINIF:一分钟(60 秒)中断请求位。需软件清,软件写 1 无效。
SECIF:一秒中断请求位。需软件清,软件写 1 无效。
SEC2IF:1/2 秒中断请求位。需软件清,软件写 1 无效。
SEC8IF:1/8 秒中断请求位。需软件清,软件写 1 无效。
SEC32IF:1/32 秒中断请求位。需软件清,软件写 1 无效。
24.1.5
RTC闹钟设置寄存器
符号
地址
B7
B6
B5
ALAHOUR
FE64H
-
-
-
ALAMIN
FE65H
-
-
ALASEC
FE66H
-
-
ALASSEC
FE67H
-
B4
B3
ALAHOUR:设置每天闹钟的小时值。
注意:设置的值不是 BCD 码,而是 HEX 码,比如需要设置小时值 20 到 ALAHOUR,则需使用
如下代码进行设置
MOV
DPTR,#ALAHOUR
MOV
A,#14H
MOVX
@@DPTR,A
ALAMIN:设置每天闹钟的分钟值。数字编码与 ALAHOUR 相同。
ALASEC:设置每天闹钟的秒值。数字编码与 ALAHOUR 相同。
ALASSEC:设置每天闹钟的 1/128 秒值。数字编码与 ALAHOUR 相同。
24.1.6
RTC实时时钟初始值设置寄存器
符号
地址
B7
INIYEAR
FE68H
-
INIMONTH
FE69H
INIDAY
FE6AH
INIHOUR
FE6BH
深圳国芯人工智能有限公司
-
B6
B5
-
-
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
B2
B1
传真: 0513-5501 2926/2956/2947
B0
- 761 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
INIMIN
FE6CH
-
-
INISEC
FE6DH
-
-
INISSEC
FE6EH
-
技术支持: 13922829991
研发顾问: 13922805190
INIYEAR:设置当前实时时间的年值。有效值范围 00~99。对应 2000 年~2099 年
注意:设置的值不是 BCD 码,而是 HEX 码,比如需要设置 20 到 INIYEAR,则需使用如下代码
进行设置
MOV
DPTR,#INIYEAR
MOV
A,#14H
MOVX
@@DPTR,A
INIMONTH:设置当前实时时间的月值。有效值范围 1~12。数字编码与 INIYEAR 相同。
INIDAY:设置当前实时时间的日值。有效值范围 1~31。数字编码与 INIYEAR 相同。
INIHOUR:设置当前实时时间的小时值。有效值范围 00~23。数字编码与 INIYEAR 相同。
INIMIN:设置当前实时时间的分钟值。有效值范围 00~59。数字编码与 INIYEAR 相同。
INISEC:设置当前实时时间的秒值。有效值范围 00~59。数字编码与 INIYEAR 相同。
INISSEC:设置当前实时时间的 1/128 秒值。有效值范围 00~127。数字编码与 INIYEAR 相同。
当用户设置完成上面的初始值寄存器后,用户还需要向 SETRTC 位(RTCCFG.0)写 1 来
触发硬件将初始值装载到 RTC 实时计数器中
另需注意:硬件不会对初始化数据的有效性进行检查,需要用户在设置初始值时,必须保
证数据的有效性,不能超出其有效范围。
24.1.7
RTC实时时钟计数寄存器
符号
地址
B7
B6
B5
YEAR
FE70H
-
MONTH
FE71H
DAY
FE72H
HOUR
FE73H
-
-
-
MIN
FE74H
-
-
SEC
FE75H
-
-
SSEC
FE76H
-
B4
B3
B2
B1
B0
YEAR:当前实时时间的年值。注意:寄存器的值不是 BCD 码,而是 HEX 码
MONTH:当前实时时间的月值。数字编码与 YEAR 相同。
DAY:当前实时时间的日值。数字编码与 YEAR 相同。
HOUR:当前实时时间的小时值。数字编码与 YEAR 相同。
MIN:当前实时时间的分钟值。数字编码与 YEAR 相同。
SEC:当前实时时间的秒值。数字编码与 YEAR 相同。
SSEC:当前实时时间的 1/128 秒值。数字编码与 YEAR 相同。
注意:YEAR、MONTH、DAY、HOUR、MIN、SEC 和 SSEC 均为只读寄存器,若需要对这些寄存
器执行写操作,必须通过寄存器 INIYEAR、INIMONTlH、INIDAT、INIHOU、INIMIN、INISEC、
INISSEC 和 SETRTC 来实现。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 762 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
25 增强型双数据指针
STC8H 系列的单片机内部集成了两组 16 位的数据指针。通过程序控制,可实现数据指针自动递增或
递减功能以及两组数据指针的自动切换功能
25.1 相关的特殊功能寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
DPL
数据指针(低字节)
82H
0000,0000
DPH
数据指针(高字节)
83H
0000,0000
DPL1
第二组数据指针(低字节)
E4H
0000,0000
DPH1
第二组数据指针(高字节)
E5H
0000,0000
DPS
DPTR 指针选择器
E3H
TA
DPTR 时序控制寄存器
AEH
25.1.1
ID1
ID0
TSL
AU1
AU0
-
-
SEL
0000,0xx0
0000,0000
第 1 组 16 位数据指针寄存器(DPTR0)
符号
地址
DPL
82H
DPH
83H
B7
B6
B5
B4
B3
B2
B1
B0
DPL为低8位数据(低字节)
DPH为高8位数据(高字节)
DPL和DPH组合为第一组16位数据指针寄存器DPTR0
25.1.2
第 2 组 16 位数据指针寄存器(DPTR1)
符号
地址
DPL1
E4H
DPH1
E5H
B7
B6
B5
B4
B3
B2
B1
B0
DPL1为低8位数据(低字节)
DPH1为高8位数据(高字节)
DPL1和DPH1组合为第二组16位数据指针寄存器DPTR1
25.1.3
数据指针控制寄存器(DPS)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
DPS
E3H
ID1
ID0
TSL
AU1
AU0
-
-
SEL
ID1:控制DPTR1自动递增方式
0:DPTR1 自动递增
1:DPTR1 自动递减
ID0:控制DPTR0自动递增方式
0:DPTR0 自动递增
1:DPTR0 自动递减
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 763 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TSL:DPTR0/DPTR1自动切换控制(自动对SEL进行取反)
0:关闭自动切换功能
1:使能自动切换功能
当 TSL 位被置 1 后,每当执行完成相关指令后,系统会自动将 SEL 位取反。
与 TSL 相关的指令包括如下指令:
MOV
DPTR,#data16
INC
DPTR
MOVC
A,@A+DPTR
MOVX
A,@DPTR
MOVX
@DPTR,A
AU1/AU0:使能DPTR1/DPTR0使用ID1/ID0控制位进行自动递增/递减控制
0:关闭自动递增/递减功能
1:使能自动递增/递减功能
注意:在写保护模式下,AU0 和 AU1 位无法直接单独使能,若单独使能 AU1 位,则 AU0 位也会
被自动使能,若单独使能 AU0,没有效果。若需要单独使能 AU1 或者 AU0,则必须使用 TA
寄存器触发 DPS 的保护机制(参考 TA 寄存器的说明)。另外,只有执行下面的 3 条指令后才
会对 DPTR0/DPTR1 进行自动递增/递减操作。3 条相关指令如下:
MOVC
A,@A+DPTR
MOVX
A,@DPTR
MOVX
@DPTR,A
SEL:选择DPTR0/DPTR1作为当前的目标DPTR
0:选择 DPTR0 作为目标 DPTR
1:选择 DPTR1 作为目标 DPTR
SEL 选择目标 DPTR 对下面指令有效:
MOV
DPTR,#data16
INC
DPTR
MOVC
A,@A+DPTR
MOVX
A,@DPTR
MOVX
@DPTR,A
JMP
@A+DPTR
数据指针控制寄存器
符号
地址
TA
AEH
B7
B6
B5
B4
B3
B2
B1
B0
TA寄存器是对DPS寄存器中的AU1和AU0进行写保护的。由于程序无法对DPS中的AU1和AU0进行单独
的写入,所以当需要单独使能AU1或者AU0时,必须使用TA寄存器进行触发。TA寄存器是只写寄存器。
当需要对AU1或者AU0进行单独使能时,必须按照如下的步骤进行操作:
CLR
MOV
EA
TA,#0AAH
MOV
TA,#55H
MOV
DPS,#xxH
深圳国芯人工智能有限公司
;关闭中断(必需)
;写入触发命令序列 1
;此处不能有其他任何指令
;写入触发命令序列 2
;此处不能有其他任何指令
;写保护暂时关闭,可向 DPS 中写入任何值
;DSP 再次进行写保护状态
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 764 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
SETB
深圳国芯人工智能有限公司
EA
技术支持: 13922829991
研发顾问: 13922805190
;打开中断(如有必要)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 765 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
25.2 范例程序
25.2.1
示例代码 1
将程序空间 1000H~1003H 的 4 个字节数据反向复制到扩展 RAM 的 0100H~0103H 中,即
C:1000H -> X:0103H
C:1001H -> X:0102H
C:1002H -> X:0101H
C:1003H -> X:0100H
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
DPS,#00100000B
DPTR,#1000H
DPTR,#0103H
DPS,#10111000B
MOV
R7,#4
CLR
MOVC
A
A,@A+DPTR
MOVX
@DPTR,A
MAIN:
;使能 TSL,并选择 DPTR0
;将 1000H 写入 DPTR0 后选择 DPTR1 为 DPTR
;将 0103H 写入 DPTR1 中
;设置 DPTR1 为递减模式,DPTR0 为递加模式,使能 TSL
;AU0 和 AU1,并选择 DPTR0 为当前的 DPTR
;设置数据复制个数
COPY_NEXT:
深圳国芯人工智能有限公司
;
;从 DPTR0 所指的程序空间读取数据,
;完成后 DPTR0 自动加 1 并将 DPTR1 设置为 DPTR
;将 ACC 的数据写入到 DPTR1 所指的 XDATA 中,
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 766 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
DJNZ
R7,COPY_NEXT
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;完成后 DPTR1 自动减 1 并将 DPTR0 设置为 DPTR
;
END
25.2.2
示例代码 2
将扩展 RAM 的 0100H~0103H 中的数据依次发送到 P0 口
汇编代码
;测试工作频率为 11.0592MHz
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
CLR
MOV
MOV
MOV
SETB
MOV
MOVX
MOV
MOVX
MOV
MOVX
MOV
MOVX
EA
TA,#0AAH
TA,#55H
DPS,#00001000B
EA
DPTR,#0100H
A,@DPTR
P0,A
A,@DPTR
P0,A
A,@DPTR
P0,A
A,@DPTR
MAIN:
深圳国芯人工智能有限公司
;关闭中断
;写入 DPS 写保护触发命令 1
;写入 DPS 写保护触发命令 2
;DPTR0 递增,单独使能 AU0,并选择 DPTR0
;打开中断
;将 0100H 写入 DPTR0 中
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
;数据输出到 P0 口
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
;数据输出到 P0 口
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
;数据输出到 P0 口
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 767 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
MOV
P0,A
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;数据输出到 P0 口
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 768 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
26 MDU16 硬件 16 位乘除法器
STC8H 系列部分型号的单片机内部集成了 MDU16/16 位硬件乘除法器。
支持如下数据运算:
数据规格化(需要 3~20 个时钟的运算时间)
逻辑左移(需要 3~18 个时钟的运算时间)
逻辑右移(需要 3~18 个时钟的运算时间)
16 位乘以 16 位(需要 10 个时钟的运算时间)
16 位除以 16 位(需要 9 个时钟的运算时间)
32 位除以 16 位(需要 17 个时钟的运算时间)
所有的操作都是基于无符号整形数据类型。
26.1 相关的特殊功能寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
MD3
MDU 数据寄存器
FCF0H
MD3[7:0]
0000,0000
MD2
MDU 数据寄存器
FCF1H
MD2[7:0]
0000,0000
MD1
MDU 数据寄存器
FCF2H
MD1[7:0]
0000,0000
MD0
MDU 数据寄存器
FCF3H
MD0[7:0]
0000,0000
MD5
MDU 数据寄存器
FCF4H
MD5[7:0]
0000,0000
MD4
MDU 数据寄存器
FCF5H
MD4[7:0]
0000,0000
ARCON
MDU 模式控制寄存器
FCF6H
OPCON
MDU 操作控制寄存器
FCF7H
26.1.1
MODE[2:0]
-
MDOV
SC[4:0]
-
-
-
RST
ENOP
0000,0000
操作数 1 数据寄存器(MD0~MD3)
B7
B6
B5
B4
符号
地址
MD3
FCF0H
MD3[7:0]
MD2
FCF1H
MD2[7:0]
MD1
FCF2H
MD1[7:0]
MD0
FCF3H
MD0[7:0]
26.1.2
-
0000,0000
B3
B2
B1
B0
B3
B2
B1
B0
操作数 2 数据寄存器(MD4~MD5)
B7
B6
B5
B4
符号
地址
MD5
FCF4H
MD5[7:0]
MD4
FCF5H
MD4[7:0]
32位除以16位除法:
被除数:{MD3,MD2,MD1,MD0}
除数:{MD5,MD4}
商:{MD3,MD2,MD1,MD0}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 769 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
余数:{MD5,MD4}
16位除以16位除法:
被除数:{MD1,MD0}
除数:{MD5,MD4}
商:{MD1,MD0}
余数:{MD5,MD4}
16位乘以16位乘法:
被乘数:{MD1,MD0}
乘数:{MD5,MD4}
积:{MD3,MD2,MD1,MD0}
32 位逻辑左移/逻辑右移
操作数:{MD3,MD2,MD1,MD0}
32 位数据规格化:
操作数:{MD3,MD2,MD1,MD0}
MDU模式控制寄存器(ARCON),运算所需时钟数
26.1.3
符号
地址
ARCON
FCF6H
B7
B6
B5
B4
B3
MODE[2:0]
B2
B1
B0
SC[4:0]
MODE[2:0]:MDU模式选择
MODE[2:0]
模式
时钟数
1
逻辑右移
3~18
2
逻辑左移
3~18
操作说明
将{MD3,MD2,MD1,MD0}中的数据右移SC[4:0]位,
MD3的高位补0
将{MD3,MD2,MD1,MD0}中的数据左移SC[4:0]位,
MD0的低位补0
对{MD3,MD2,MD1,MD0}中的数据进行逻辑左移,将数据
3
数据规格化
3~20
高位的0全部移出,使MD3的最高位为1,逻辑左移的位数
被记录在SC[4:0]中
4
16位×16位
10
5
16位÷16位
9
6
32位÷16位
17
其他
无效
{MD1,MD0}×{MD5,MD4}={MD3,MD2,MD1,MD0}
{MD1,MD0}÷{MD5,MD4}=
{MD1,MD0}…{MD5,MD4}
{MD3,MD2,MD1,MD0}÷{MD5,MD4}=
{MD3,MD2,MD1,MD0}…{MD5,MD4}
SC[4:0]:数据移动位数
当 MDU 为移动模式时,SC 用于设置左移/右移的位数
当 MDU 为数据规格化模式时,SC 为数据规格化后数据所移动的实际位数
26.1.4
MDU操作控制寄存器(OPCON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
OPCON
FCF7H
-
MDOV
-
-
-
-
RST
ENOP
MDOV:MDU溢出标志位(只读标志位)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 770 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
在如下几种情况时,MDOV 会被硬件自动置 1:
1、除数为 0 时;
2、乘法的积大于 0FFFFH 时;
当软件写 OPCON.0(EN)或者写 ARCON 时,硬件会自动清除 MDOV
RST:软件复位 MDU 乘除单元。写 1 触发软件复位,MDU 复位完成后硬件自动清零。
注:软件复位 MDU 乘除单元时,ARCON 寄存器的值会被清除。
ENOP:MDU 模块使能。写 1 触发 MDU 模块开始计算,当 MDU 计算完成后,硬件自动将 ENOP 清零。
软件可以在对 ENOP 置 1 后,循环的查询 ENOP,当 ENOP 由 1 变 0 则表示计算完成。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 771 -
STC8H 系列技术手册
官方网站: www.STCMCUDATA.com/ www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
26.2 范例程序
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
#define
#define
MD3U32
MD3U16
MD1U16
MD5U16
(*(unsigned long volatile xdata *)0xfcf0)
(*(unsigned int volatile xdata *)0xfcf0)
(*(unsigned int volatile xdata *)0xfcf2)
(*(unsigned int volatile xdata *)0xfcf4)
#define
#define
#define
#define
#define
#define
#define
#define
MD3
MD2
MD1
MD0
MD5
MD4
ARCON
OPCON
(*(unsigned char volatile xdata *)0xfcf0)
(*(unsigned char volatile xdata *)0xfcf1)
(*(unsigned char volatile xdata *)0xfcf2)
(*(unsigned char volatile xdata *)0xfcf3)
(*(unsigned char volatile xdata *)0xfcf4)
(*(unsigned char volatile xdata *)0xfcf5)
(*(unsigned char volatile xdata *)0xfcf6)
(*(unsigned char volatile xdata *)0xfcf7)
sfr
P_SW2
=
0xBA;
////////////////////////////////////////////////////////////////////////////////
//16 位乘 16 位
////////////////////////////////////////////////////////////////////////////////
unsigned long res;
unsigned int dat1, dat2;
//访问扩展寄存器 xsfr
//dat1 用户给定
//dat2 用户给定
//16 位*16 位,乘法模式
//启动计算
//等待计算完成
//32 位结果
P_SW2 |= 0x80;
MD1U16 = dat1;
MD5U16 = dat2;
ARCON = 4