STC micro
TM
宏 晶 科 技
深圳国芯人工智能有限公司
STC8G 系列单片机
技术参考手册
技术支持网站:http://www.STCMCUDATA.com / www.STCMCU.com
资料更新日期:2020/4/16
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
目录
1
2
2.1
2.2
2.3
2.4
2.5
2.6
3
3.1
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.2.6
3.2.7
3.2.8
3.2.9
4
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
5
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.1.6
5.1.7
6
6.1
概述.......................................................................................................................................... 1
特性、价格及管脚.................................................................................................................. 2
STC8G1K08-20PIN系列 ......................................................................................................... 2
STC8G1K08-8PIN系列 ........................................................................................................... 9
STC8G1K08A-8PIN系列 ...................................................................................................... 13
STC8G2K64S4-48PIN系列 ................................................................................................... 18
STC8G2K64S2-48PIN系列 ................................................................................................... 27
STC8G1K08T-20PIN触摸按键系列 ..................................................................................... 37
功能脚切换............................................................................................................................ 44
功能脚切换相关寄存器 ........................................................................................................ 44
范例程序................................................................................................................................ 47
串口 1 切换............................................................................................................................ 47
串口 2 切换............................................................................................................................ 48
串口 3 切换............................................................................................................................ 50
串口 4 切换............................................................................................................................ 51
SPI切换 .................................................................................................................................. 53
PCA/CCP/PWM切换............................................................................................................. 54
I2C切换.................................................................................................................................. 56
比较器输出切换 .................................................................................................................... 57
主时钟输出切换 .................................................................................................................... 59
封装尺寸图............................................................................................................................ 62
SOP8 封装尺寸图.................................................................................................................. 62
DFN8 封装尺寸图(3mm*3mm)....................................................................................... 63
SOP16 封装尺寸图................................................................................................................ 64
TSSOP20 封装尺寸图 ........................................................................................................... 65
QFN20 封装尺寸图(3mm*3mm)..................................................................................... 66
LQFP48 封装尺寸图(9mm*9mm) ................................................................................... 67
QFN48 封装尺寸图(6mm*6mm)..................................................................................... 68
STC8 系列单片机命名规则.................................................................................................. 69
ISP下载及典型应用线路图.................................................................................................. 70
STC8G系列ISP下载应用线路图 .......................................................................................... 70
使用RS-232 转换器下载(无独立VREF脚)..................................................................... 70
使用RS-232 转换器下载(有独立VREF脚、一般精度ADC)......................................... 71
使用RS-232 转换器下载(有独立VREF脚、高精度ADC) ............................................ 72
使用PL2303-GL下载............................................................................................................. 73
使用U8-Mini工具下载 .......................................................................................................... 74
使用U8W工具下载 ............................................................................................................... 75
USB直接ISP下载 .................................................................................................................. 76
时钟、复位、省电模式与系统电源管理 ............................................................................ 78
系统时钟控制 ........................................................................................................................ 78
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-i-
STC8G 系列技术手册
6.2
6.2.1
6.3
6.4
6.5
6.5.1
6.5.2
6.5.3
6.5.4
6.5.5
6.5.6
6.5.7
6.5.8
6.5.9
6.5.10
6.5.11
6.5.12
6.5.13
6.5.14
7
7.1
7.2
7.2.1
7.2.2
7.2.3
7.3
7.3.1
7.3.2
7.3.3
7.3.4
7.3.5
7.3.6
7.3.7
7.3.8
8
8.1
8.2
8.3
8.4
8.5
8.6
8.7
9
9.1
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
STC8G系列内部IRC频率调整 ............................................................................................. 81
微调分频出 3MHz用户工作频率的示例 ............................................................................. 83
系统复位................................................................................................................................ 86
省电模式与系统电源管理 .................................................................................................... 88
范例程序................................................................................................................................ 89
选择系统时钟源 .................................................................................................................... 89
主时钟分频输出 .................................................................................................................... 91
看门狗定时器应用 ................................................................................................................ 93
软复位实现自定义下载 ........................................................................................................ 95
低压检测................................................................................................................................ 96
省电模式................................................................................................................................ 98
使用INT0/INT1/INT2/INT3/INT4 中断唤醒MCU省电模式 ............................................ 100
使用T0/T1/T2/T3/T4 中断唤醒MCU省电模式 ................................................................. 104
使用RxD/RxD2/RxD3/RxD4 中断唤醒MCU省电模式..................................................... 108
使用I2C的SDA脚唤醒MCU省电模式 ................................................................................111
使用LVD中断唤醒MCU省电模式 ......................................................................................114
使用CCP0/CCP1/CCP2 中断唤醒MCU省电模式 ..............................................................116
CMP中断唤醒MCU省电模式..............................................................................................119
使用LVD功能检测工作电压(电池电压) ...................................................................... 121
存储器.................................................................................................................................. 126
程序存储器 .......................................................................................................................... 126
数据存储器 .......................................................................................................................... 128
内部RAM............................................................................................................................. 128
内部扩展RAM..................................................................................................................... 129
8051 中可位寻址的数据存储器 ......................................................................................... 131
存储器中的特殊参数 .......................................................................................................... 133
读取内部参考电压值 (从Flash 程序存储器(ROM)中读取) ...................................... 134
读取内部参考电压值 (从RAM中读取) ............................................................................ 137
读取全球唯一ID号 (从Flash 程序存储器(ROM)中读取).......................................... 140
读取全球唯一ID号 (从RAM中读取) ................................................................................ 143
读取 32K掉电唤醒定时器的频率 (从Flash 程序存储器(ROM)中读取) .................. 146
读取 32K掉电唤醒定时器的频率 (从RAM中读取)......................................................... 149
用户自定义内部IRC频率 (从Flash 程序存储器(ROM)中读取) ............................... 152
用户自定义内部IRC频率 (从RAM中读取)...................................................................... 155
特殊功能寄存器.................................................................................................................. 158
STC8G1K08-20PIN系列 ..................................................................................................... 158
STC8G1K08-8PIN系列 ....................................................................................................... 159
STC8G1K08A-8PIN系列 .................................................................................................... 160
STC8G2K64S4-48PIN系列 ................................................................................................. 161
STC8G2K64S2-48PIN系列 ................................................................................................. 163
STC8G1K08T-20PIN触摸按键系列 ................................................................................... 165
特殊功能寄存器列表 .......................................................................................................... 167
I/O口 .................................................................................................................................... 181
I/O口相关寄存器................................................................................................................. 181
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- ii -
STC8G 系列技术手册
9.2
9.3
9.3.1
9.3.2
9.3.3
9.3.4
9.3.5
9.4
9.4.1
9.4.2
9.5
9.6
9.7
9.8
9.9
9.10
9.11
10
11
11.1
11.2
11.3
11.4
11.4.1
11.4.2
11.4.3
11.5
11.5.1
11.5.2
11.5.3
11.5.4
11.5.5
11.5.6
11.5.7
11.5.8
11.5.9
11.5.10
11.5.11
11.5.12
11.5.13
11.5.14
11.5.15
11.5.16
11.5.17
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
配置I/O口............................................................................................................................. 185
I/O的结构图......................................................................................................................... 187
准双向口(弱上拉) .......................................................................................................... 187
推挽输出.............................................................................................................................. 187
高阻输入.............................................................................................................................. 188
开漏输出.............................................................................................................................. 188
新增 4.1K上拉电阻 ............................................................................................................. 189
范例程序.............................................................................................................................. 190
端口模式设置 ...................................................................................................................... 190
双向口读写操作 .................................................................................................................. 191
一种典型三极管控制电路 .................................................................................................. 194
典型发光二极管控制电路 .................................................................................................. 194
混合电压供电系统 3V/5V器件I/O口互连 ......................................................................... 195
如何让I/O口上电复位时为低电平..................................................................................... 196
利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图 .......................................... 197
I/O口直接驱动LED数码管应用线路图 ............................................................................. 198
用STC系列MCU的I/O口直接驱动段码LCD .................................................................... 199
指令系统.............................................................................................................................. 218
中断系统.............................................................................................................................. 222
STC8G系列中断源.............................................................................................................. 222
STC8G中断结构图.............................................................................................................. 224
STC8G系列中断列表.......................................................................................................... 225
中断相关寄存器 .................................................................................................................. 228
中断使能寄存器(中断允许位) ...................................................................................... 230
中断请求寄存器(中断标志位) ...................................................................................... 235
中断优先级寄存器 .............................................................................................................. 238
范例程序.............................................................................................................................. 242
INT0 中断(上升沿和下降沿) ........................................................................................ 242
INT0 中断(下降沿) ........................................................................................................ 244
INT1 中断(上升沿和下降沿) ........................................................................................ 245
INT1 中断(下降沿) ........................................................................................................ 247
INT2 中断(下降沿) ........................................................................................................ 249
INT3 中断(下降沿) ........................................................................................................ 251
INT4 中断(下降沿) ........................................................................................................ 252
定时器 0 中断 ...................................................................................................................... 254
定时器 1 中断 ...................................................................................................................... 256
定时器 2 中断 ...................................................................................................................... 258
定时器 3 中断 ...................................................................................................................... 260
定时器 4 中断 ...................................................................................................................... 262
UART1 中断 ........................................................................................................................ 264
UART2 中断 ........................................................................................................................ 267
UART3 中断 ........................................................................................................................ 269
UART4 中断 ........................................................................................................................ 272
ADC中断 ............................................................................................................................. 274
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- iii -
STC8G 系列技术手册
11.5.18
11.5.19
11.5.20
11.5.21
11.5.22
11.5.23
12
12.1
12.2
12.3
12.4
12.5
12.6
12.6.1
12.6.2
12.6.3
12.6.4
12.6.5
12.6.6
12.6.7
12.6.8
12.6.9
12.6.10
12.6.11
12.6.12
12.6.13
12.6.14
12.6.15
12.6.16
12.6.17
12.6.18
12.6.19
12.6.20
12.6.21
12.6.22
12.6.23
12.6.24
12.6.25
12.6.26
12.6.27
12.6.28
12.6.29
12.6.30
13
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
LVD中断 .............................................................................................................................. 276
PCA中断 .............................................................................................................................. 278
SPI中断 ................................................................................................................................ 281
CMP中断 ............................................................................................................................. 283
PWM中断 ............................................................................................................................ 285
I2C中断................................................................................................................................ 288
定时器/计数器..................................................................................................................... 291
定时器的相关寄存器 .......................................................................................................... 291
定时器 0/1............................................................................................................................ 293
定时器 2............................................................................................................................... 296
定时器 3/4............................................................................................................................ 297
掉电唤醒定时器 .................................................................................................................. 299
范例程序.............................................................................................................................. 300
定时器 0(模式 0-16 位自动重载) ............................................................................... 300
定时器 0(模式 1-16 位不自动重载) ........................................................................... 301
定时器 0(模式 2-8 位自动重载) ................................................................................. 303
定时器 0(模式 3-16 位自动重载不可屏蔽中断) ....................................................... 305
定时器 0(外部计数-扩展T0 为外部下降沿中断)...................................................... 307
定时器 0(测量脉宽-INT0 高电平宽度)...................................................................... 309
定时器 0(时钟分频输出) ................................................................................................311
定时器 1(模式 0-16 位自动重载) ............................................................................... 312
定时器 1(模式 1-16 位不自动重载) ........................................................................... 314
定时器 1(模式 2-8 位自动重载) ................................................................................. 316
定时器 1(外部计数-扩展T1 为外部下降沿中断)...................................................... 318
定时器 1(测量脉宽-INT1 高电平宽度)...................................................................... 320
定时器 1(时钟分频输出) ............................................................................................... 322
定时器 1(模式 0)做串口 1 波特率发生器 .................................................................... 323
定时器 1(模式 2)做串口 1 波特率发生器 .................................................................... 327
定时器 2(16 位自动重载) .............................................................................................. 331
定时器 2(外部计数-扩展T2 为外部下降沿中断)...................................................... 333
定时器 2(时钟分频输出) ............................................................................................... 335
定时器 2 做串口 1 波特率发生器 ...................................................................................... 337
定时器 2 做串口 2 波特率发生器 ...................................................................................... 341
定时器 2 做串口 3 波特率发生器 ...................................................................................... 345
定时器 2 做串口 4 波特率发生器 ...................................................................................... 349
定时器 3(16 位自动重载) .............................................................................................. 353
定时器 3(外部计数-扩展T3 为外部下降沿中断)...................................................... 355
定时器 3(时钟分频输出) ............................................................................................... 357
定时器 3 做串口 3 波特率发生器 ...................................................................................... 359
定时器 4(16 位自动重载) .............................................................................................. 363
定时器 4(外部计数-扩展T4 为外部下降沿中断)...................................................... 366
定时器 4(时钟分频输出) ............................................................................................... 368
定时器 4 做串口 4 波特率发生器 ...................................................................................... 370
串口通信.............................................................................................................................. 375
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- iv -
STC8G 系列技术手册
13.1
13.2
13.2.1
13.2.2
13.2.3
13.2.4
13.2.5
13.3
13.3.1
13.3.2
13.4
13.4.1
13.4.2
13.5
13.5.1
13.5.2
13.6
13.7
13.7.1
13.7.2
13.7.3
13.7.4
13.7.5
13.7.6
13.7.7
13.7.8
14
14.1
14.2
14.3
14.3.1
14.3.2
14.3.3
14.3.4
15
15.1
15.2
15.3
15.3.1
15.3.2
15.3.3
16
16.1
16.2
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口相关寄存器 .................................................................................................................. 375
串口 1................................................................................................................................... 376
串口 1 模式 0 ....................................................................................................................... 377
串口 1 模式 1 ....................................................................................................................... 378
串口 1 模式 2 ....................................................................................................................... 381
串口 1 模式 3 ....................................................................................................................... 381
自动地址识别 ...................................................................................................................... 382
串口 2................................................................................................................................... 384
串口 2 模式 0 ....................................................................................................................... 384
串口 2 模式 1 ....................................................................................................................... 385
串口 3................................................................................................................................... 387
串口 3 模式 0 ....................................................................................................................... 387
串口 3 模式 1 ....................................................................................................................... 388
串口 4................................................................................................................................... 390
串口 4 模式 0 ....................................................................................................................... 390
串口 4 模式 1 ....................................................................................................................... 391
串口注意事项 ...................................................................................................................... 393
范例程序.............................................................................................................................. 394
串口 1 使用定时器 2 做波特率发生器 .............................................................................. 394
串口 1 使用定时器 1(模式 0)做波特率发生器 ............................................................ 397
串口 1 使用定时器 1(模式 2)做波特率发生器 ............................................................ 401
串口 2 使用定时器 2 做波特率发生器 .............................................................................. 405
串口 3 使用定时器 2 做波特率发生器 .............................................................................. 409
串口 3 使用定时器 3 做波特率发生器 .............................................................................. 413
串口 4 使用定时器 2 做波特率发生器 .............................................................................. 417
串口 4 使用定时器 4 做波特率发生器 .............................................................................. 421
比较器,掉电检测,内部参考电压 .................................................................................. 426
比较器内部结构图 .............................................................................................................. 426
比较器相关的寄存器 .......................................................................................................... 427
范例程序.............................................................................................................................. 429
比较器的使用(中断方式) .............................................................................................. 429
比较器的使用(查询方式) .............................................................................................. 431
比较器作外部掉电检测 ...................................................................................................... 434
比较器检测工作电压(电池电压) .................................................................................. 435
IAP/EEPROM .................................................................................................................... 440
EEPROM相关的寄存器...................................................................................................... 440
EEPROM大小及地址.......................................................................................................... 442
范例程序.............................................................................................................................. 445
EEPROM基本操作.............................................................................................................. 445
使用MOVC读取EEPROM.................................................................................................. 448
使用串口送出EEPROM数据.............................................................................................. 452
ADC模数转换,内部参考电压 ......................................................................................... 457
ADC相关的寄存器.............................................................................................................. 457
ADC静态特性...................................................................................................................... 461
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-v-
STC8G 系列技术手册
16.3
16.3.1
16.3.2
16.3.3
16.3.4
16.3.5
16.3.6
17
17.1
17.2
17.2.1
17.2.2
17.2.3
17.2.4
17.3
17.3.1
17.3.2
17.3.3
17.3.4
17.3.5
17.3.6
18
18.1
18.2
18.2.1
18.2.2
18.2.3
19
19.1
19.2
19.2.1
19.2.2
19.2.3
19.3
19.4
19.5
19.5.1
19.5.2
19.5.3
19.5.4
19.5.5
19.5.6
20
20.1
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
范例程序.............................................................................................................................. 462
ADC基本操作(查询方式).............................................................................................. 462
ADC基本操作(中断方式).............................................................................................. 464
格式化ADC转换结果.......................................................................................................... 466
利用ADC第 15 通道测量外部电压或电池电压................................................................ 468
ADC做电容感应触摸按键.................................................................................................. 470
ADC作按键扫描应用线路图.............................................................................................. 483
PCA/CCP/PWM应用 ......................................................................................................... 484
PCA相关的寄存器 .............................................................................................................. 484
PCA工作模式 ...................................................................................................................... 487
捕获模式.............................................................................................................................. 487
软件定时器模式 .................................................................................................................. 487
高速脉冲输出模式 .............................................................................................................. 488
PWM脉宽调制模式 ............................................................................................................ 488
范例程序.............................................................................................................................. 492
PCA输出PWM(6/7/8/10 位) .......................................................................................... 492
PCA捕获测量脉冲宽度 ...................................................................................................... 494
PCA实现 16 位软件定时 .................................................................................................... 498
PCA输出高速脉冲 .............................................................................................................. 501
PCA扩展外部中断 .............................................................................................................. 504
利用CCP/PCA模块实现 8~16 位DAC的参考线路图 ....................................................... 508
精度可达 15 位的增强型PWM.......................................................................................... 509
PWM相关的寄存器 ............................................................................................................ 509
范例程序.............................................................................................................................. 529
输出任意周期和任意占空比的波形 .................................................................................. 529
两路PWM实现互补对称带死区控制的波形..................................................................... 531
PWM实现渐变灯(呼吸灯)............................................................................................. 535
同步串行外设接口SPI........................................................................................................ 540
SPI相关的寄存器 ................................................................................................................ 540
SPI通信方式 ........................................................................................................................ 542
单主单从.............................................................................................................................. 542
互为主从.............................................................................................................................. 542
单主多从.............................................................................................................................. 543
配置SPI ................................................................................................................................ 544
数据模式.............................................................................................................................. 546
范例程序.............................................................................................................................. 548
SPI单主单从系统主机程序(中断方式) ........................................................................ 548
SPI单主单从系统从机程序(中断方式) ........................................................................ 550
SPI单主单从系统主机程序(查询方式) ........................................................................ 552
SPI单主单从系统从机程序(查询方式) ........................................................................ 554
SPI互为主从系统程序(中断方式) ................................................................................ 556
SPI互为主从系统程序(查询方式) ................................................................................ 559
I2C总线 ................................................................................................................................ 563
I2C相关的寄存器................................................................................................................. 563
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- vi -
STC8G 系列技术手册
20.2
20.3
20.4
20.4.1
20.4.2
20.4.3
20.4.4
20.4.5
20.4.6
21
21.1
21.2
21.3
21.4
21.5
21.6
22
22.1
22.2
22.3
22.4
22.5
22.6
22.7
22.8
22.9
23
23.1
23.1.1
23.1.2
24
24.1
附录A
附录B
附录C
附录D
附录E
附录F
附录G
附录H
附录I
附录J
附录K
附录L
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
I2C主机模式......................................................................................................................... 564
I2C从机模式......................................................................................................................... 567
范例程序.............................................................................................................................. 570
I2C主机模式访问AT24C256(中断方式) ....................................................................... 570
I2C主机模式访问AT24C256(查询方式) ....................................................................... 576
I2C主机模式访问PCF8563.................................................................................................. 581
I2C从机模式(中断方式)................................................................................................. 587
I2C从机模式(查询方式)................................................................................................. 592
测试I2C从机模式代码的主机代码..................................................................................... 596
触摸按键控制器.................................................................................................................. 602
触摸按键控制器内部框架图 .............................................................................................. 603
低功耗触摸唤醒 .................................................................................................................. 603
仅做触摸按键功能时的操作步骤 ...................................................................................... 604
低功耗触摸按键唤醒功能的操作步骤 .............................................................................. 604
触摸按键相关的寄存器 ...................................................................................................... 604
基本参考电路图以及注意事项 ...........................................................................................611
LED驱动器.......................................................................................................................... 612
LED驱动器内部框架图 ...................................................................................................... 612
LED驱动相关的寄存器 ...................................................................................................... 613
LED共阴模式(LEDMODE = 00)................................................................................... 617
LED共阳模式(LEDMODE = 01)................................................................................... 618
LED共阴/共阳模式(LEDMODE = 10) ......................................................................... 619
触摸按键与LED分时复用I/O ............................................................................................. 620
共阴模式参考电路图 .......................................................................................................... 622
共阳模式参考电路图 .......................................................................................................... 622
共阴/共阳模式参考电路图 ................................................................................................. 623
增强型双数据指针.............................................................................................................. 624
范例程序.............................................................................................................................. 626
示例代码 1 ........................................................................................................................... 626
示例代码 2 ........................................................................................................................... 627
MDU16 硬件 16 位乘除法器 ............................................................................................. 629
相关的特殊功能寄存器 ...................................................................................................... 629
STC仿真器使用指南 .......................................................................................................... 632
如何让传统的 8051 单片机学习板可仿真 ........................................................................ 639
STC-USB驱动程序安装说明 ............................................................................................. 641
USB下载步骤演示 .............................................................................................................. 704
RS485 自动控制或I/O口控制线路图 ................................................................................ 708
U8W下载工具中RS485 部分线路图 ................................................................................. 709
运行用户程序时收到用户命令后自动启动ISP下载(不停电) ......................................... 710
使用第三方MCU对STC8G系列单片机进行ISP下载范例程序 ..................................... 712
在Keil中建立多文件项目的方法....................................................................................... 720
关于中断号大于 31 在Keil中编译出错的处理................................................................. 724
电气特性.............................................................................................................................. 734
STC8G系列头文件 ............................................................................................................. 738
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- vii -
STC8G 系列技术手册
附录M
附录N
附录O
附录P
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
应用注意事项...................................................................................................................... 749
触摸按键的PCB设计指导 .................................................................................................. 754
更新记录.............................................................................................................................. 756
产品授权书.......................................................................................................................... 760
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- viii -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1 概述
STC8G 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为
目标的 8051 单片机,在相同的工作频率下,STC8G 系列单片机比传统的 8051 约快 12 倍
(速度快 11.2~13.2
倍),依次按顺序执行完全部的 111 条指令,STC8G 系列单片机仅需 147 个时钟,而传统 8051 则需要
1944 个时钟。STC8G 系列单片机是 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 时钟(ISP 下载时可进行调节)、内部 32KHz 的低
速 IRC、外部 4M~33M 晶振或外部时钟信号。用户代码中可自由选择时钟源,时钟源选定后可再经过 8-bit
的分频器分频后再将时钟信号提供给 CPU 和各个外设(如定时器、串口、SPI 等)。
MCU 提供两种低功耗模式:IDLE 模式和 STOP 模式。IDLE 模式下,MCU 停止给 CPU 提供时钟,
CPU 无时钟,CPU 停止执行指令,但所有的外设仍处于工作状态,此时功耗约为 1.0mA(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)、CCP0(P1.1/P3.5/P2.5)、CCP1(P1.0/P3.6/P2.6)、CCP2(P3.7/P2.7)、I2C_SDA(P1.4/P2.4/P3.3)
以及比较器中断、低压检测中断、掉电唤醒定时器继续唤醒。
MCU 提供了丰富的数字外设(串口、定时器、PCA、PWM 以及 I2C、SPI)接口与模拟外设(超高
速 ADC、比较器),可满足广大用户的设计需求。
STC8G 系列单片机内部集成了增强型的双数据指针。通过程序控制,可实现数据指针自动递增或递
减功能以及两组数据指针的自动切换功能。
产品线
I/O
UART
定时器
ADC
增强型
PWM
PCA
CMP
SPI
I2C
MDU16
●
●
●
●
●
●
●
●
●
●
STC8G1K08-20PIN 系列
18
2
3
STC8G1K08-8PIN 系列
6
1
2
STC8G1K08A-8PIN 系列
6
1
2
6CH*10B
STC8G2K64S4-48PIN 系列
45
4
5
15CH*10B
●
●
●
●
●
●
STC8G2K64S2-48PIN 系列
45
2
5
15CH*10B
●
●
●
●
●
●
STC8G1K08T-20PIN 系列
16
1
3
15CH*10B
●
●
●
●
深圳国芯人工智能有限公司
15CH*10B
●
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
LED
●
触摸
按键
●
-1-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2 特性、价格及管脚
2.1 STC8G1K08-20PIN系列
特性及价格
封装
程序加密后传输(防拦截)
支持 RS485
下载
可设置下次更新程序需口令
以下可调)追频
36MHz
内部高可靠复位(可选复位门槛电压)
内部高精准时钟(
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.15 ¥1.20¥1.30
STC8G1K12 1.9-5.5 12K 256B 1K
2
IAP 18
2
有
有
3
-
-
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.30 ¥1.35¥1.40
STC8G1K17 1.9-5.5 17K 256B 1K
2
IAP 18
2
有
有
3
-
-
3
有 10 位 有
有
有 4级 有
是
有
是
是
-
- ¥1.30 ¥1.35¥1.40
SOP16
TSSOP20
现
货
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
16 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
直接下载
USB
可增可减
DPTR
SRAM字节
DATA RAM
年新品供货信息
2020
-
QFN20 (3mm*3mm)
-
本身就可在线仿真
3
支持软件
有
可对外输出时钟及复位
有
看门狗 复位定时器
2
I2 C
SPI
串口并可掉电唤醒
4K 18
大容量扩展
2
内部
STC8G1K08 1.9-5.5 8K 256B 1K
万次 字节
10
口最多数量
I/O
万次 字节
EEPROM 10
强大的双
内部低压检测中断并可掉电唤醒
路高速
15
比较器(可当 路
,可作外部掉电检测)
1 A/D
( 路
可当 路
使用)
ADC
3 PCA
3 D/A
掉电唤醒专用定时器
工作电压( )
V
(可当外部中断并可掉电唤醒)
PCA/CCP/PWM
位增强型 PWM
满足舞台灯光要求
15
单片机型号
位高级 PWM
定时器 互补对称死区
16
定时器 计/数器( T0-T2
外部管脚也可掉电唤醒)
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,15 通道)
程序存储器
Flash
-40℃~85℃
Flash 存储器
最大 12K 字节 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
-2-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.38%~+1.42%温漂(全温度范围,-40℃~85℃)
-0.88%~+1.05%温漂(温度范围,-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 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 16 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、定时器 2、串口 1、串口 2、
ADC 模数转换、LVD 低压检测、SPI、I2C、比较器、PCA/CCP/PWM
提供 4 级中断优先级
数字外设
3 个 16 位定时器:定时器 0、定时器 1、定时器 2,其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功
能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
2 个高速串口:串口 1、串口 2,波特率时钟源最快可为 FOSC/4
3 组 16 位 PCA 模块:CCP0、CCP1、CCP2,可用于捕获、高速脉冲输出,及 6/7/8/10 位的 PWM 输出
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
模拟外设
超高速 ADC,支持 10 位精度 15 通道(通道 0~通道 14)的模数转换
ADC 的通道 15 用于测试内部参考电压(芯片在出厂时,内部参考电压调整为 1.19V)
比较器,一组比较器附近
GPIO
最多可达 18 个 GPIO:P1.0~P1.7、P3.0~P3.7、P5.4~P5.5
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O
口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-3-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
封装
TSSOP20、QFN20(3mm*3mm)、SOP16、SOP8(暂未生产)
管脚图
1
2
3
4
5
6
7
8
9
10
RxD2/CCP1/ADC0/P1.0
TxD2/CCP0/ADC1/P1.1
XTALO/MCLKO_2/RxD_3/ADC6/P1.6
XTALI/TxD_3/ADC7/P1.7
MCLKO/RST/P5.4
Vcc/AVcc/ADC_VRef+
P5.5
Gnd/AGnd
1
2
3
4
5
6
7
8
MCLKO/RST/P5.4
Vcc/AVcc/ADC_VRef+
P5.5
Gnd/AGnd
1
2
3
4
TSSOP20
T2/ECI/SS/ADC2/P1.2
T2CLKO/MOSI/ADC3/P1.3
I2CSDA/MISO/ADC4/P1.4
I2CSCL/SCLK/ADC5/P1.5
XTALO/MCLKO_2/RxD_3/ADC6/P1.6
XTALI/TxD_3/ADC7/P1.7
MCLKO/RST/P5.4
Vcc/AVcc/ADC_VRef+
P5.5
Gnd/AGnd
20
19
18
17
16
15
14
13
12
11
P1.1/ADC1/TxD2/CCP0
P1.0/ADC0/RxD2/CCP1
P3.7/INT3/TxD_2/CCP2_2/CCP2/CMP+
P3.6/ADC14/INT2/RxD_2/CCP1_2/CMPP3.5/ADC13/T1/T0CLKO/CCP0_2/SS_4
P3.4/ADC12/T0/T1CLKO/ECI_2/CMPO/MOSI_4
P3.3/ADC11/INT1/MISO_4/I2CSDA_4
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4
P3.1/ADC9/TxD
P3.0/ADC8/RxD/INT4
SOP16
16
15
14
13
12
11
10
9
P3.7/INT3/TxD_2/CCP2/CCP2_2CMP+
P3.6/ADC14/INT2/RxD_2/CCP1_2/CMPP3.5/ADC13/T1/T0CLKO/CCP0_2/SS_4
P3.4/ADC12/T0/T1CLKO/ECI_2/CMPO/MOSI_4
P3.3/ADC11/INT1/MISO_4/I2CSDA_4
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4
P3.1/ADC9/TxD
P3.0/ADC8/RxD/INT4
SOP8
8
7
6
5
P3.3/ADC11/INT1/MISO_4/I2CSDA_4
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4
P3.1/ADC9/TxD
P3.0/ADC8/RxD/INT4
暂未生产,请选择STC8G1K08A-SOP8
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-4-
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15
14
13
12
11
P3.7/INT3/TxD_2/CCP2/CCP2_2/CMP+
P3.6/ADC14/INT2/RxD_2/CCP1_2/CMPP3.5/ADC13/T1/T0CLKO/CCP0_2/SS_4
P3.4/ADC12/T0/T1CLKO/ECI_2/MOSI_4/CMPO
P3.3/ADC11/INT1/MISO_4/I2CSDA_4
STC8G 系列技术手册
16
17
18
19
20
QFN20
10
9
8
7
6
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4
P3.1/ADC9/TxD
P3.0/ADC8/RxD/INT4
Gnd/AGnd
P5.5
I2CSCL/SCLK/ADC5/P1.5
XTALO/MCLKO_2/RxD_3/ADC6/P1.6
XTALI/TxD_3/ADC7/P1.7
MCLKO/RST/P5.4
Vcc/AVcc/ADC_VRef+
1
2
3
4
5
CCP1/RxD2/ADC0/P1.0
I2CSDA/MISO/ADC4/P1.4
T2CLKO/MOSI/ADC3/P1.3
T2/ECI/SS/ADC2/P1.2
CCP0/TxD2/ADC1/P1.1
注意: 1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在
使用 I/O 口时必须先设置 I/O 口模式
2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或
者高阻输入模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
3、当使能 P5.4 口为复位脚时,复位电平为低电平
4、对于 STC8G1K08-20PIN 系列 B 版芯片,P5.4 作 I/O 口使用时,电流不要超过
50mA,也不要有强的冲击
5、STC8G1K08-20PIN 系列芯片所支持的 USB 下载为 I/O 口软件模拟的 USB 通信,
不可避免的受各种软硬件因素的影响,尤其是电脑端的不同软件和硬件版本的
影响,导致有一定比例的芯片无法进行 USB 下载(实测约有 0.2%无法 USB 下
载)。建议批量生产还是使用普通的串口下载或 USB 转串口下载。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-5-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
TSSOP20
1
2
3
4
5
6
7
8
QFN20
SOP16
19
18
17
1
2
3
4
5
3
4
5
6
1
2
9
6
7
3
10
7
8
4
深圳国芯人工智能有限公司
名称
类
型
P1.2
I/O
ADC2
I
SS
I/O
T2
I
定时器 2 外部时钟输入
ECI
I
PCA 的外部脉冲输入
P1.3
I/O
ADC3
I
ADC 模拟输入通道 3
T2CLKO
O
定时器 2 时钟分频输出
MOSI
I/O
SPI 主机输出从机输入
P1.4
I/O
标准 I/O 口
ADC4
I
ADC 模拟输入通道 4
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
P1.5
I/O
标准 I/O 口
ADC5
I
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
P1.6
I/O
标准 I/O 口
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振脚
P1.7
I/O
标准 I/O 口
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
XTALI
I
外部晶振脚
P5.4
I/O
标准 I/O 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SDA_2
I/O
I2C 的数据线
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源
ADC_VRef+
I
P5.5
I/O
标准 I/O 口
SCL_2
I/O
I2C 的时钟线
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
SOP8
说明
标准 I/O 口
ADC 模拟输入通道 2
SPI 从机选择
标准 I/O 口
ADC 模拟输入通道 5
ADC 的参考电压脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-6-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
TSSOP20
11
12
13
14
15
16
17
QFN20
8
9
10
11
12
13
14
深圳国芯人工智能有限公司
SOP16
9
10
11
12
13
14
15
技术支持: 13922829991
名称
类型
P3.0
I/O
RxD
I
串口 1 的接收脚
ADC8
I
ADC 模拟输入通道 8
INT4
I
外部中断 4
P3.1
I/O
标准 I/O 口
TxD
O
串口 1 的发送脚
ADC9
I
ADC 模拟输入通道 9
P3.2
I/O
标准 I/O 口
INT0
I
外部中断 0
ADC10
I
ADC 模拟输入通道 10
SCLK_4
I/O
SPI 的时钟脚
P3.3
I/O
标准 I/O 口
INT1
I
外部中断 1
ADC11
I
ADC 模拟输入通道 11
MISO_4
I/O
SPI 主机输入从机输出
P3.4
I/O
标准 I/O 口
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
ADC12
I
ADC 模拟输入通道 12
ECI_2
I
PCA 的外部脉冲输入
CMPO
O
比较器输出
MOSI_4
I/O
SPI 主机输出从机输入
P3.5
I/O
标准 I/O 口
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
ADC13
I
ADC 模拟输入通道 13
CCP0_2
I/O
SS_4
I
P3.6
I/O
标准 I/O 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
ADC14
I
ADC 模拟输入通道 14
CCP1_2
I/O
CMP-
I
研发顾问: 13922805190
说明
SOP8
5
6
7
8
标准 I/O 口
PCA 的捕获输入和脉冲输出
SPI 的从机选择脚(主机为输出)
PCA 的捕获输入和脉冲输出
比较器负极输入
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-7-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
TSSOP20
18
19
20
QFN20
15
16
20
深圳国芯人工智能有限公司
SOP16
16
1
2
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.7
I/O
标准 I/O 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CCP2
I/O
PCA 的捕获输入和脉冲输出
CCP2_2
I/O
PCA 的捕获输入和脉冲输出
CMP+
I
P1.0
I/O
RxD2
I
串口 2 的接收脚
ADC0
I
ADC 模拟输入通道 0
CCP1
I/O
PCA 的捕获输入和脉冲输出
P1.1
I/O
标准 I/O 口
TxD2
O
串口 2 的发送脚
ADC1
I
ADC 模拟输入通道 1
CCP0
I/O
SOP8
比较器正极输入
标准 I/O 口
PCA 的捕获输入和脉冲输出
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-8-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.2 STC8G1K08-8PIN系列
特性及价格
封装
DFN8
SOP8
STC8G1K08 1.9-5.5 8K 256B 1K
2
4K
6
1
有
有
有
2
-
-
-
有
-
有
有 4级 有
是
有
是
是
是
是 ¥0.65 ¥0.7
STC8G1K12 1.9-5.5 12K 256B 1K
2
IAP
6
1
有
有
有
2
-
-
-
有
-
有
有 4级 有
是
有
是
是
是
是
STC8G1K17 1.9-5.5 17K 256B 1K
2
IAP
6
1
有
有
有
2
-
-
-
有
-
有
有 4级 有
是
有
是
是
-
3
月
送
样
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
11 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
- ¥0.75 ¥0.8
年新品供货信息
2020
直接下载
USB
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
看门狗 复位定时器
内部高精准时钟( 36MHz
以下可调)追频
内部高可靠复位(可选复位门槛电压)
内部低压检测中断并可掉电唤醒
比较器(可当 路
,可作外部掉电检测)
1
A/D
( 路
可当 路
使用)
ADC
8 PWM
8 D/A
掉电唤醒专用定时器
路高速
15
(可当外部中断并可掉电唤醒)
PCA/CCP/PWM
位增强型 PWM
满足舞台灯光要求
15
位高级
定时器 互补对称死区
16
PWM
定时器 计/数器( T0-T1
外部管脚也可掉电唤醒)
I2 C
SPI
硬件 16
位乘除法器
MDU16
串口并可掉电唤醒
大容量扩展
DATA RAM
万次 字节
10
口最多数量
I/O
工作电压( )
V
万次 字节
EEPROM 10
强大的双
可增可减
DPTR
SRAM字节
单片机型号
内部
选型价格(不需要外部晶振、不需要外部复位)
程序存储器
Flash
-40℃~85℃
Flash 存储器
最大 12K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
1024 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-9-
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
-1.38%~+1.42%温漂(全温度范围,-40℃~85℃)
-0.88%~+1.05%温漂(温度范围,-20℃~65℃)
技术支持: 13922829991
研发顾问: 13922805190
内部 32KHz 低速 IRC(误差较大)
复位
硬件复位
上电复位,实测电压值为 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 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 11 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、串口 1、LVD 低压检测、SPI、
I2C
提供 4 级中断优先级
数字外设
2 个 16 位定时器:定时器 0、定时器 1、其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功能,定时器
0 和定时器 1 的模式 0 为 16 位自动重载模式
1 个高速串口:串口 1,波特率时钟源最快可为 FOSC/4
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
GPIO
最多可达 6 个 GPIO:P3.0~P3.3、P5.4~P5.5
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O
口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
SOP8
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 10 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚图
MCLKO/RST/SCL_2/MOSI/RxD_3/T1CLKO/T0/INT2/P5.4
Vcc
SDA_2/SS/TxD_3/T0CLKO/T1/INT3/P5.5
Gnd
深圳国芯人工智能有限公司
1
2
3
4
SOP8
国内分销商电话: 0513-5501 2928/2929/2966
8
7
6
5
P3.3/TxD_2/INT1/MISO/SDA
P3.2/RxD_2/INT0/SCLK/SCL
P3.1/TxD
P3.0/RxD/INT4
传真: 0513-5501 2926/2956/2947
- 11 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
名称
类型
说明
P5.4
I/O
RST
I
复位引脚
MCLKO
O
主时钟分频输出
INT2
I
外部中断 2
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
RxD_3
I
串口 1 的接收脚
MOSI
I/O
SPI 主机输出从机输入
SCL_2
I/O
I2C 的时钟线
Vcc
Vcc
电源脚
P5.5
I/O
标准 I/O 口
INT3
I
外部中断 3
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
TxD_3
O
串口 1 的发送脚
SS
I
SPI 的从机选择脚(主机为输出)
SDA_2
I/O
I2C 的数据线
Gnd
Gnd
地线
P3.0
I/O
标准 I/O 口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 I/O 口
TxD
O
P3.2
I/O
标准 I/O 口
INT0
I
外部中断 0
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
RxD_2
I
P3.3
I/O
标准 I/O 口
INT1
I
外部中断 1
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 的数据线
TxD_2
O
SOP8
1
2
3
4
5
6
7
8
深圳国芯人工智能有限公司
标准 I/O 口
串口 1 的发送脚
串口 1 的接收脚
串口 1 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 12 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.3 STC8G1K08A-8PIN系列
特性及价格
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,6 通道)
封装
2
4K
6
1
有
有
有
2
-
-
3
有 10 位
有
有 4级 有
是
有
是
是
是
是 ¥0.75 ¥0.8
STC8G1K12A 1.9-5.5 12K 256B 1K
2
IAP
6
1
有
有
有
2
-
-
3
有 10 位
有
有 4级 有
是
有
是
是
是
是
STC8G1K17A 1.9-5.5 17K 256B 1K
2
IAP
6
1
有
有
有
2
-
-
3
有 10 位
有
有 4级 有
是
有
是
是
-
3
月
送
样
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
13 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
- ¥0.85 ¥0.9
年新品供货信息
2020
SOP8
DFN8
直接下载
USB
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
看门狗 复位定时器
内部高精准时钟( 36MHz
以下可调)追频
内部高可靠复位(可选复位门槛电压)
内部低压检测中断并可掉电唤醒
使用)
D/A
,可作外部掉电检测)
A/D
可当 路
PWM
8
掉电唤醒专用定时器
( 路
ADC
8
比较器(可当 路
1
路
6 高速
(可当外部中断并可掉电唤醒)
PCA/CCP/PWM
位增强型 PWM
满足舞台灯光要求
15
位高级 PWM
定时器 互补对称死区
16
定时器 计/数器( T0-T1
外部管脚也可掉电唤醒)
I2 C
SPI
硬件 16
位乘除法器
MDU16
串口并可掉电唤醒
口最多数量
I/O
DATA RAM
万次 字节
10
万次 字节
EEPROM 10
强大的双
可增可减
DPTR
SRAM字节
大容量扩展
内部
程序存储器
Flash
工作电压( )
V
单片机型号
STC8G1K08A 1.9-5.5 8K 256B 1K
-40℃~85℃
Flash 存储器
最大 12K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
1024 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 13 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
-1.38%~+1.42%温漂(全温度范围,-40℃~85℃)
-0.88%~+1.05%温漂(温度范围,-20℃~65℃)
技术支持: 13922829991
研发顾问: 13922805190
内部 32KHz 低速 IRC(误差较大)
复位
硬件复位
上电复位,实测电压值为 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 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 13 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、串口 1、ADC 模数转换、
LVD 低压检测、SPI、I2C、PCA/CCP/PWM
提供 4 级中断优先级
数字外设
2 个 16 位定时器:定时器 0、定时器 1、其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功能,定时器
0 和定时器 1 的模式 0 为 16 位自动重载模式
1 个高速串口:串口 1,波特率时钟源最快可为 FOSC/4
3 组 16 位 PCA 模块:CCP0、CCP1、CCP2,可用于捕获、高速脉冲输出,及 6/7/8/10 位的 PWM 输出
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
模拟外设
超高速 ADC,支持 10 位精度 6 通道(通道 0~通道 5)的模数转换
ADC 的通道 15 用于测试内部参考电压(芯片在出厂时,内部参考电压调整为 1.19V)
GPIO
最多可达 6 个 GPIO:P3.0~P3.3、P5.4~P5.5
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O
口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
SOP8
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 14 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚图
CCP2_2/CCP2/MCLKO/RST/SCL_2/MOSI/RxD_3/T1CLKO/T0/INT2/ADC4/P5.4
Vcc/AVcc
ECI_2/ECI/CCP2_3/SDA_2/SS/TxD_3/T0CLKO/T1/INT3/ADC5/P5.5
Gnd/AGnd
深圳国芯人工智能有限公司
1
2
3
4
SOP8
国内分销商电话: 0513-5501 2928/2929/2966
8
7
6
5
P3.3/ADC3/TxD_2/INT1/MISO/SDA/CCP1/CCP1_2/CCP1_3
P3.2/ADC2/RxD_2/INT0/SCLK/SCL/CCP0/CCP0_3
P3.1/ADC1/TxD/CCP0_2/ECI_3
P3.0/ADC0/RxD/INT4
传真: 0513-5501 2926/2956/2947
- 15 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
名称
类型
说明
P5.4
I/O
RST
I
复位引脚
MCLKO
O
主时钟分频输出
INT2
I
外部中断 2
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
RxD_3
I
串口 1 的接收脚
MOSI
I/O
SPI 主机输出从机输入
SCL_2
I/O
I2C 的时钟线
ADC5
I
CCP2
I/O
PCA 的捕获输入和脉冲输出
CCP2_2
I/O
PCA 的捕获输入和脉冲输出
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源脚
P5.5
I/O
标准 I/O 口
INT3
I
外部中断 3
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
TxD_3
O
串口 1 的发送脚
SS
I
SPI 的从机选择脚(主机为输出)
SDA_2
I/O
ADC4
I
ADC 模拟输入通道 4
ECI
I
PCA 的外部脉冲输入
ECI_2
I
PCA 的外部脉冲输入
CCP2_3
I/O
PCA 的捕获输入和脉冲输出
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
P3.0
I/O
标准 I/O 口
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
ADC0
I
ADC 模拟输入通道 0
P3.1
I/O
TxD
O
串口 1 的发送脚
ADC1
I
ADC 模拟输入通道 1
ECI_3
I
PCA 的外部脉冲输入
CCP0_2
I/O
SOP8
1
2
3
4
5
6
深圳国芯人工智能有限公司
标准 I/O 口
ADC 模拟输入通道 5
I2C 的数据线
标准 I/O 口
PCA 的捕获输入和脉冲输出
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 16 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.2
I/O
标准 I/O 口
INT0
I
外部中断 0
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
RxD_2
I
串口 1 的接收脚
ADC2
I
ADC 模拟输入通道 2
CCP0
I/O
PCA 的捕获输入和脉冲输出
CCP0_3
I/O
PCA 的捕获输入和脉冲输出
P3.3
I/O
标准 I/O 口
INT1
I
外部中断 1
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 的数据线
TxD_2
O
串口 1 的发送脚
ADC3
I
ADC 模拟输入通道 3
CCP1
I/O
PCA 的捕获输入和脉冲输出
CCP1_2
I/O
PCA 的捕获输入和脉冲输出
CCP1_3
I/O
PCA 的捕获输入和脉冲输出
SOP8
7
8
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 17 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.4 STC8G2K64S4-48PIN系列
特性及价格
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,15 通道)
封装
QFN48
2
32K 45
4
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是
STC8G2K60S4 1.9-5.5 60K 256B 2K
2
4K 45
4
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥2.2 ¥2.4
STC8G2K64S4 1.9-5.5 64K 256B 2K
2
IAP 45
4
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥2.2 ¥2.4
2
月
送
样
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
29 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
年新品供货信息
2020
LQFP48
直接下载
USB
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
以下可调)追频
36MHz
内部高可靠复位(可选复位门槛电压)
内部高精准时钟(
看门狗 复位定时器
内部低压检测中断并可掉电唤醒
比较器(可当 路
,可作外部掉电检测)
1 A/D
(全部 PWM
均可当 D/A
使用)
ADC
掉电唤醒专用定时器
路高速
15
(可当外部中断并可掉电唤醒)
PCA/CCP/PWM
位增强型 PWM
满足舞台灯光要求
15
I2 C
位高级 PWM
定时器 互补对称死区
16
定时器 计/数器( T0-T4
外部管脚也可掉电唤醒)
SPI
硬件 16
位乘除法器
MDU16
串口并可掉电唤醒
口最多数量
I/O
DATA RAM
万次 字节
10
万次 字节
EEPROM 10
强大的双
可增可减
DPTR
SRAM字节
大容量扩展
内部
程序存储器
Flash
工作电压( )
V
单片机型号
STC8G2K32S4 1.9-5.5 32K 256B 2K
-40℃~85℃
Flash 存储器
最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
2048 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 18 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
-1.38%~+1.42%温漂(全温度范围,-40℃~85℃)
-0.88%~+1.05%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
技术支持: 13922829991
研发顾问: 13922805190
复位
硬件复位
上电复位,实测电压值为 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、比较器、PCA/CCP/PWM、
增强型 PWM0、增强型 PWM1、增强型 PWM2、增强型 PWM3、增强型 PWM4、增强型 PWM5、增强型
PWM0 异常检测、增强型 PWM2 异常检测、增强型 PWM4 异常检测。
提供 4 级中断优先级
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
4 个高速串口:串口 1、串口 2、串口 3、串口 4,波特率时钟源最快可为 FOSC/4
3 组 16 位 PCA 模块:CCP0、CCP1、CCP2,可用于捕获、高速脉冲输出,及 6/7/8/10 位的 PWM 输出
45 组 15 位增强型 PWM,可实现带死区的控制信号,并支持外部异常检测功能(另外还有 3 组传统的
PCA/CCP/PWM 可作 PWM)
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
模拟外设
超高速 ADC,支持 10 位精度 15 通道(通道 0~通道 14)的模数转换
ADC 的通道 15 用于测试内部参考电压(芯片在出厂时,内部参考电压调整为 1.19V)
比较器,一组比较器
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 19 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O
口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP48、QFN48
36
35
34
33
32
31
30
29
28
27
26
25
P2.3/PWM23/A11/MOSI_2
P2.2/PWM22/A10/SS_2
P2.1/PWM21/A9
P2.0/PWM20/A8
P4.4/PWM44/RD/TxD_4
P4.3/PWM43/RxD_4/SCLK_3
P4.2/PWM42/WR
P4.1/PWM41/MISO_3/CMPO_2
P3.7/PWM37/INT3/TxD_2/CMP+/CCP2_2/CCP2
P3.6/PWM36/INT2/RxD_2/CMP-/CCP1_2
P3.5/PWM35/T1/T0CLKO/SS_4/CCP0_2/PWMFLT
P5.1/PWM51/TxD3_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/PWM50/RxD3_2
P3.4/PWM34/T0/T1CLKO/ECI_2/MOSI_4/CMPO
P3.3/PWM33/INT1/MISO_4/I2CSDA_4
P3.2/PWM32/INT0/SCLK_4/I2CSCL_4
P3.1/PWM31/TxD
P3.0/PWM30/RxD/INT4
P4.0/PWM40/MOSI_3
Gnd/AGnd
ADC_VRef+
Vcc/AVcc
P5.4/PWM54/RST/MCLKO/SS_3
P1.7/PWM17/ADC7/TxD_3/XTALI
TxD4_2/PWM53/P5.3
T3CLKO/AD5/ADC13/PWM05/P0.5
PWMFLT2/T4/AD6/ADC14/PWM06/P0.6
PWMFLT3/T4CLKO/AD7/PWM07/P0.7
RxD2/CCP1/ADC0/PWM10/P1.0
TxD2/CCP0/ADC1/PWM11/P1.1
TxD2_2/PWM47/P4.7
T2/SS/ECI/ADC2/PWM12/P1.2
T2CLKO/MOSI/ADC3/PWM13/P1.3
I2CSDA/MISO/ADC4/PWM14/P1.4
I2CSCL/SCLK/ADC5/PWM15/P1.5
XTALO/MCLKO_2/RxD_3/ADC6/PWM16/P1.6
1
2
3
4
5
6
7
8
9
10
11
12
MISO_2/I2CSDA_2/ECI_3/A12/PWM24/P2.4
SCLK_2/I2CSCL_2/CCP0_3/A13/PWM25/P2.5
CCP1_3/A14/PWM26/P2.6
CCP2_3/A15/PWM27/P2.7
ALE/PWM45/P4.5
RxD2_2/PWM46/P4.6
RxD3/AD0/ADC8/PWM00/P0.0
TxD3/AD1/ADC9/PWM01/P0.1
RxD4/AD2/ADC10/PWM02/P0.2
TxD4/AD3/ADC11/PWM03/P0.3
T3/AD4/ADC12/PWM04/P0.4
RxD4_2/PWM52/P5.2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 20 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
名称
类
型
P5.3
I/O
PWM53
O
增强 PWM 输出脚
TxD4_2
O
串口 4 的发送脚
P0.5
I/O
PWM05
O
增强 PWM 输出脚
AD5
I
地址总线
ADC13
I
ADC 模拟输入通道 13
T3CLKO
O
定时器 3 时钟分频输出
P0.6
I/O
PWM06
O
增强 PWM 输出脚
AD6
I
地址总线
ADC14
I
ADC 模拟输入通道 14
T4
I
定时器 4 外部时钟输入
PWMFLT2
I
增强 PWM 的外部异常检测脚
P0.7
I/O
PWM07
O
增强 PWM 输出脚
AD7
I
地址总线
T4CLKO
O
定时器 4 时钟分频输出
PWMFLT3
I
增强 PWM 的外部异常检测脚
P1.0
I/O
PWM10
O
增强 PWM 输出脚
ADC0
I
ADC 模拟输入通道 0
CCP1
I/O
RxD2
I
P1.1
I/O
PWM11
O
增强 PWM 输出脚
ADC1
I
ADC 模拟输入通道 1
CCP0
I/O
TxD2
O
P4.7
I/O
PWM47
O
增强 PWM 输出脚
TxD2_2
O
串口 2 的发送脚
P1.2
I/O
PWM12
O
增强 PWM 输出脚
ADC2
I
ADC 模拟输入通道 2
ECI
I
PCA 的外部脉冲输入
SS
I
SPI 的从机选择脚(主机为输出)
T2
I
定时器 2 外部时钟输入
LQFP48
1
2
3
4
5
6
7
8
深圳国芯人工智能有限公司
说明
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
PCA 的捕获输入和脉冲输出
串口 2 的接收脚
标准 IO 口
PCA 的捕获输入和脉冲输出
串口 2 的发送脚
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 21 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.3
I/O
PWM13
O
增强 PWM 输出脚
ADC3
I
ADC 模拟输入通道 3
MOSI
I/O
SPI 主机输出从机输入
T2CLKO
O
定时器 2 时钟分频输出
P1.4
I/O
PWM14
O
增强 PWM 输出脚
ADC4
I
ADC 模拟输入通道 4
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
P1.5
I/O
标准 IO 口
PWM15
O
增强 PWM 输出脚
ADC5
I
ADC 模拟输入通道 5
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
P1.6
I/O
标准 IO 口
PWM16
O
增强 PWM 输出脚
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
PWM17
O
增强 PWM 输出脚
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
XTALI
I
外部晶振/外部时钟的输入脚
P5.4
I/O
PWM54
O
增强 PWM 输出脚
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS_3
I
SPI 的从机选择脚(主机为输出)
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源脚
ADC_VRef+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
LQFP48
9
10
11
12
13
14
15
16
17
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
ADC 的参考电压脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 22 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
名称
类型
P4.0
I/O
PWM40
O
MOSI_3
I/O
SPI 主机输出从机输入
P3.0
I/O
标准 IO 口
PWM30
O
增强 PWM 输出脚
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
PWM31
O
增强 PWM 输出脚
TxD
O
串口 1 的发送脚
P3.2
I/O
PWM32
O
增强 PWM 输出脚
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
P3.3
I/O
标准 IO 口
PWM33
O
增强 PWM 输出脚
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 接口的数据线
P3.4
I/O
标准 IO 口
PWM34
O
增强 PWM 输出脚
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
ECI_2
I
PCA 的外部脉冲输入
MOSI_4
I/O
SPI 主机输出从机输入
CMPO
O
比较器输出
P5.0
I/O
标准 IO 口
PWM50
O
增强 PWM 输出脚
RxD3_2
I
串口 3 的接收脚
P5.1
I/O
PWM52
O
增强 PWM 输出脚
TxD3_2
O
串口 3 的发送脚
研发顾问: 13922805190
说明
LQFP48
18
19
20
21
22
23
24
25
深圳国芯人工智能有限公司
标准 IO 口
增强 PWM 输出脚
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 23 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.5
I/O
PWM35
O
增强 PWM 输出脚
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
CCP0_2
I/O
PWMFLT
I
P3.6
I/O
PWM36
O
增强 PWM 输出脚
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
CCP1_2
I/O
PCA 的捕获输入和脉冲输出
P3.7
I/O
标准 IO 口
PWM37
O
增强 PWM 输出脚
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
CCP2
I/O
PCA 的捕获输入和脉冲输出
CCP2_2
I/O
PCA 的捕获输入和脉冲输出
P4.1
I/O
标准 IO 口
PWM41
O
MISO_3
I/O
CMPO_2
O
比较器输出
P4.2
I/O
标准 IO 口
PWM42
O
增强 PWM 输出脚
WR
O
外部总线的写信号线
P4.3
I/O
PWM43
O
增强 PWM 输出脚
RxD_4
I
串口 1 的接收脚
SCLK_3
I/O
SPI 的时钟脚
P4.4
I/O
标准 IO 口
PWM44
O
增强 PWM 输出脚
RD
O
外部总线的读信号线
TxD_4
O
串口 1 的发送脚
P2.0
I/O
PWM20
O
增强 PWM 输出脚
A8
I
地址总线
LQFP48
26
27
28
29
30
31
32
33
深圳国芯人工智能有限公司
标准 IO 口
PCA 的捕获输入和脉冲输出
增强 PWM 的外部异常检测脚
标准 IO 口
增强 PWM 输出脚
SPI 主机输入从机输出
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 24 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.1
I/O
PWM21
O
增强 PWM 输出脚
A9
I
地址总线
P2.2
I/O
标准 IO 口
PWM22
O
增强 PWM 输出脚
A10
I
地址总线
SS_2
I
SPI 的从机选择脚(主机为输出)
P2.3
I/O
PWM23
O
增强 PWM 输出脚
A11
I
地址总线
MOSI_2
I/O
SPI 主机输出从机输入
CCP0_2
I/O
PCA 的捕获输入和脉冲输出
P2.4
I/O
标准 IO 口
PWM24
O
增强 PWM 输出脚
A12
I
地址总线
ECI_3
I
PCA 的外部脉冲输入
SDA_2
I/O
I2C 接口的数据线
MISO_2
I/O
SPI 主机输入从机输出
P2.5
I/O
标准 IO 口
PWM25
O
增强 PWM 输出脚
A13
I
地址总线
CCP0_3
I/O
PCA 的捕获输入和脉冲输出
SCL_2
I/O
I2C 的时钟线
SCLK_2
I/O
SPI 的时钟脚
P2.6
I/O
标准 IO 口
PWM26
O
增强 PWM 输出脚
A14
I
地址总线
CCP1_3
I/O
PCA 的捕获输入和脉冲输出
P2.7
I/O
标准 IO 口
PWM27
O
增强 PWM 输出脚
A15
I
地址总线
CCP2_3
I/O
PCA 的捕获输入和脉冲输出
P4.5
I/O
标准 IO 口
PWM45
O
增强 PWM 输出脚
ALE
O
地址锁存信号
LQFP48
34
35
36
37
38
39
40
41
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 25 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
名称
类型
P4.6
I/O
PWM46
O
增强 PWM 输出脚
RxD2_2
I
串口 2 的接收脚
P0.0
I/O
PWM00
O
增强 PWM 输出脚
ADC8
I
ADC 模拟输入通道 8
AD0
I
地址总线
RxD3
I
串口 3 的接收脚
P0.1
I/O
PWM01
O
增强 PWM 输出脚
ADC9
I
ADC 模拟输入通道 9
AD1
I
地址总线
TxD3
O
串口 3 的发送脚
P0.2
I/O
PWM02
O
增强 PWM 输出脚
ADC10
I
ADC 模拟输入通道 10
AD2
I
地址总线
RxD4
I
串口 4 的接收脚
P0.3
I/O
PWM03
O
增强 PWM 输出脚
ADC11
I
ADC 模拟输入通道 11
AD3
I
地址总线
TxD4
O
串口 4 的发送脚
P0.4
I/O
PWM04
O
增强 PWM 输出脚
ADC12
I
ADC 模拟输入通道 12
AD4
I
地址总线
T3
I
定时器 3 外部时钟输入
P5.2
I/O
PWM52
O
增强 PWM 输出脚
RxD4_2
I
串口 4 的接收脚
研发顾问: 13922805190
说明
LQFP48
42
43
44
45
46
47
48
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 26 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.5 STC8G2K64S2-48PIN系列
特性及价格
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,15 通道)
封装
QFN48
2
48K 45
2
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.6 ¥1.8
STC8G2K32S2 1.9-5.5 32K 256B 2K
2
32K 45
2
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
是 ¥1.8 ¥2.0
STC8G2K60S2 1.9-5.5 60K 256B 2K
2
4K 45
2
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
STC8G2K64S2 1.9-5.5 64K 256B 2K
2
IAP 45
2
有
有
有
5
-
45
3
有 10 位 有
有
有 4级 有
是
有
是
是
是
2
月
送
是 ¥2.0 ¥2.2
样
是 ¥2.0 ¥2.2
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
27 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
年新品供货信息
2020
LQFP48
直接下载
USB
本身就可在线仿真
支持软件
支持 RS485
下载
可设置下次更新程序需口令
可对外输出时钟及复位
程序加密后传输(防拦截)
以下可调)追频
36MHz
内部高可靠复位(可选复位门槛电压)
内部高精准时钟(
看门狗 复位定时器
内部低压检测中断并可掉电唤醒
比较器(可当 路
,可作外部掉电检测)
1 A/D
( PWM
可当 D/A
使用)
ADC
掉电唤醒专用定时器
路高速
15
(可当外部中断并可掉电唤醒)
PCA/CCP/PWM
位增强型 PWM
满足舞台灯光要求
15
I2 C
位高级 PWM
定时器 互补对称死区
16
定时器 计/数器( T0-T4
外部管脚也可掉电唤醒)
SPI
硬件 16
位乘除法器
MDU16
串口并可掉电唤醒
口最多数量
I/O
DATA RAM
万次 字节
10
万次 字节
EEPROM 10
强大的双
可增可减
DPTR
SRAM字节
大容量扩展
内部
程序存储器
Flash
工作电压( )
V
单片机型号
STC8G2K16S2 1.9-5.5 16K 256B 2K
-40℃~85℃
Flash 存储器
最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
2048 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 27 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
误差±0.3%(常温下 25℃)
-1.38%~+1.42%温漂(全温度范围,-40℃~85℃)
-0.88%~+1.05%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~33MHz)和外部时钟
技术支持: 13922829991
研发顾问: 13922805190
复位
硬件复位
上电复位,实测电压值为 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 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 27 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、定时器 2、定时器 3、定时
器 4、串口 1、串口 2、ADC 模数转换、LVD 低压检测、SPI、I2C、比较器、PCA/CCP/PWM、增强型 PWM0、
增强型 PWM1、增强型 PWM2、增强型 PWM3、增强型 PWM4、增强型 PWM5、增强型 PWM0 异常检
测、增强型 PWM2 异常检测、增强型 PWM4 异常检测。
提供 4 级中断优先级
数字外设
5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI
(不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
2 个高速串口:串口 1、串口 2,波特率时钟源最快可为 FOSC/4
3 组 16 位 PCA 模块:CCP0、CCP1、CCP2,可用于捕获、高速脉冲输出,及 6/7/8/10 位的 PWM 输出
45 组 15 位增强型 PWM,可实现带死区的控制信号,并支持外部异常检测功能(另外还有 3 组传统的
PCA/CCP/PWM 可作 PWM)
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数
据规格化等运算)
模拟外设
超高速 ADC,支持 10 位精度 15 通道(通道 0~通道 14)的模数转换
ADC 的通道 15 用于测试内部参考电压(芯片在出厂时,内部参考电压调整为 1.19V)
比较器,一组比较器
GPIO
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 28 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
最多可达 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 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O
口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
LQFP48、QFN48
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 29 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
36
35
34
33
32
31
30
29
28
27
26
25
P2.3/PWM23/A11/MOSI_2
P2.2/PWM22/A10/SS_2
P2.1/PWM21/A9
P2.0/PWM20/A8
P4.4/PWM44/RD/TxD_4
P4.3/PWM43/RxD_4/SCLK_3
P4.2/PWM42/WR
P4.1/PWM41/MISO_3/CMPO_2
P3.7/PWM37/INT3/TxD_2/CMP+/CCP2_2/CCP2
P3.6/PWM36/INT2/RxD_2/CMP-/CCP1_2
P3.5/PWM35/T1/T0CLKO/SS_4/CCP0_2/PWMFLT
P5.1/PWM51
管脚图
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/PWM50
P3.4/PWM34/T0/T1CLKO/ECI_2/MOSI_4/CMPO
P3.3/PWM33/INT1/MISO_4/I2CSDA_4
P3.2/PWM32/INT0/SCLK_4/I2CSCL_4
P3.1/PWM31/TxD
P3.0/PWM30/RxD/INT4
P4.0/PWM40/MOSI_3
Gnd/AGnd
ADC_Vref+
Vcc/AVcc
P5.4/PWM54/RST/MCLKO/SS_3
P1.7/PWM17/ADC7/TxD_3/XTALI
PWM53/P5.3
T3CLKO/AD5/ADC13/PWM05/P0.5
PWMFLT2/T4/AD6/ADC14/PWM06/P0.6
PWMFLT3/T4CLKO/AD7/PWM07/P0.7
RxD2/CCP1/ADC0/PWM10/P1.0
TxD2/CCP0/ADC1/PWM11/P1.1
TxD2_2/PWM47/P4.7
T2/SS/ECI/ADC2/PWM12/P1.2
T2CLKO/MOSI/ADC3/PWM13/P1.3
I2CSDA/MISO/ADC4/PWM14/P1.4
I2CSCL/SCLK/ADC5/PWM15/P1.5
XTALO/MCLKO_2/RxD_3/ADC6/PWM16/P1.6
1
2
3
4
5
6
7
8
9
10
11
12
MISO_2/I2CSDA_2/ECI_3/A12/PWM24/P2.4
SCLK_2/I2CSCL_2/CCP0_3/A13/PWM25/P2.5
CCP1_3/A14/PWM26/P2.6
CCP2_3/A15/PWM27/P2.7
ALE/PWM45/P4.5
RxD2_2/PWM46/P4.6
AD0/ADC8/PWM00/P0.0
AD1/ADC9/PWM01/P0.1
AD2/ADC10/PWM02/P0.2
AD3/ADC11/PWM03/P0.3
T3/AD4/ADC12/PWM04/P0.4
PWM52/P5.2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 30 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
名称
类
型
P5.3
I/O
PWM53
O
P0.5
I/O
PWM05
O
增强 PWM 输出脚
AD5
I
地址总线
ADC13
I
ADC 模拟输入通道 13
T3CLKO
O
定时器 3 时钟分频输出
P0.6
I/O
PWM06
O
增强 PWM 输出脚
AD6
I
地址总线
ADC14
I
ADC 模拟输入通道 14
T4
I
定时器 4 外部时钟输入
PWMFLT2
I
增强 PWM 的外部异常检测脚
P0.7
I/O
PWM07
O
增强 PWM 输出脚
AD7
I
地址总线
T4CLKO
O
定时器 4 时钟分频输出
PWMFLT3
I
增强 PWM 的外部异常检测脚
P1.0
I/O
PWM10
O
增强 PWM 输出脚
ADC0
I
ADC 模拟输入通道 0
CCP1
I/O
RxD2
I
P1.1
I/O
PWM11
O
增强 PWM 输出脚
ADC1
I
ADC 模拟输入通道 1
CCP0
I/O
TxD2
O
P4.7
I/O
PWM47
O
增强 PWM 输出脚
TxD2_2
O
串口 2 的发送脚
P1.2
I/O
PWM12
O
增强 PWM 输出脚
ADC2
I
ADC 模拟输入通道 2
ECI
I
PCA 的外部脉冲输入
SS
I
SPI 的从机选择脚(主机为输出)
T2
I
定时器 2 外部时钟输入
LQFP48
1
2
3
4
5
6
7
8
深圳国芯人工智能有限公司
说明
标准 IO 口
增强 PWM 输出脚
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
PCA 的捕获输入和脉冲输出
串口 2 的接收脚
标准 IO 口
PCA 的捕获输入和脉冲输出
串口 2 的发送脚
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 31 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P1.3
I/O
PWM13
O
增强 PWM 输出脚
ADC3
I
ADC 模拟输入通道 3
MOSI
I/O
SPI 主机输出从机输入
T2CLKO
O
定时器 2 时钟分频输出
P1.4
I/O
PWM14
O
增强 PWM 输出脚
ADC4
I
ADC 模拟输入通道 4
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
P1.5
I/O
标准 IO 口
PWM15
O
增强 PWM 输出脚
ADC5
I
ADC 模拟输入通道 5
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
P1.6
I/O
标准 IO 口
PWM16
O
增强 PWM 输出脚
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
PWM17
O
增强 PWM 输出脚
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
XTALI
I
外部晶振/外部时钟的输入脚
P5.4
I/O
PWM54
O
增强 PWM 输出脚
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS_3
I
SPI 的从机选择脚(主机为输出)
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源脚
ADC_Vref+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
LQFP48
9
10
11
12
13
14
15
16
17
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
标准 IO 口
标准 IO 口
ADC 的参考电压脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 32 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
名称
类型
P4.0
I/O
PWM40
O
MOSI_3
I/O
SPI 主机输出从机输入
P3.0
I/O
标准 IO 口
PWM30
O
增强 PWM 输出脚
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
PWM31
O
增强 PWM 输出脚
TxD
O
串口 1 的发送脚
P3.2
I/O
PWM32
O
增强 PWM 输出脚
INT0
I
外部中断 0
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
P3.3
I/O
标准 IO 口
PWM33
O
增强 PWM 输出脚
INT1
I
外部中断 1
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 接口的数据线
P3.4
I/O
标准 IO 口
PWM34
O
增强 PWM 输出脚
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
ECI_2
I
PCA 的外部脉冲输入
MOSI_4
I/O
SPI 主机输出从机输入
CMPO
O
比较器输出
P5.0
I/O
标准 IO 口
PWM50
O
增强 PWM 输出脚
RxD3_2
I
串口 3 的接收脚
P5.1
I/O
PWM52
O
研发顾问: 13922805190
说明
LQFP48
18
19
20
21
22
23
24
25
深圳国芯人工智能有限公司
标准 IO 口
增强 PWM 输出脚
标准 IO 口
标准 IO 口
增强 PWM 输出脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 33 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.5
I/O
PWM35
O
增强 PWM 输出脚
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
CCP0_2
I/O
PWMFLT
I
P3.6
I/O
PWM36
O
增强 PWM 输出脚
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
CCP1_2
I/O
PCA 的捕获输入和脉冲输出
P3.7
I/O
标准 IO 口
PWM37
O
增强 PWM 输出脚
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
CCP2
I/O
PCA 的捕获输入和脉冲输出
CCP2_2
I/O
PCA 的捕获输入和脉冲输出
P4.1
I/O
标准 IO 口
PWM41
O
MISO_3
I/O
CMPO_2
O
比较器输出
P4.2
I/O
标准 IO 口
PWM42
O
增强 PWM 输出脚
WR
O
外部总线的写信号线
P4.3
I/O
PWM43
O
增强 PWM 输出脚
RxD_4
I
串口 1 的接收脚
SCLK_3
I/O
SPI 的时钟脚
P4.4
I/O
标准 IO 口
PWM44
O
增强 PWM 输出脚
RD
O
外部总线的读信号线
TxD_4
O
串口 1 的发送脚
P2.0
I/O
PWM20
O
增强 PWM 输出脚
A8
I
地址总线
LQFP48
26
27
28
29
30
31
32
33
深圳国芯人工智能有限公司
标准 IO 口
PCA 的捕获输入和脉冲输出
增强 PWM 的外部异常检测脚
标准 IO 口
增强 PWM 输出脚
SPI 主机输入从机输出
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 34 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P2.1
I/O
PWM21
O
增强 PWM 输出脚
A9
I
地址总线
P2.2
I/O
标准 IO 口
PWM22
O
增强 PWM 输出脚
A10
I
地址总线
SS_2
I
SPI 的从机选择脚(主机为输出)
P2.3
I/O
PWM23
O
增强 PWM 输出脚
A11
I
地址总线
MOSI_2
I/O
SPI 主机输出从机输入
CCP0_2
I/O
PCA 的捕获输入和脉冲输出
P2.4
I/O
标准 IO 口
PWM24
O
增强 PWM 输出脚
A12
I
地址总线
ECI_3
I
PCA 的外部脉冲输入
SDA_2
I/O
I2C 接口的数据线
MISO_2
I/O
SPI 主机输入从机输出
P2.5
I/O
标准 IO 口
PWM25
O
增强 PWM 输出脚
A13
I
地址总线
CCP0_3
I/O
PCA 的捕获输入和脉冲输出
SCL_2
I/O
I2C 的时钟线
SCLK_2
I/O
SPI 的时钟脚
P2.6
I/O
标准 IO 口
PWM26
O
增强 PWM 输出脚
A14
I
地址总线
CCP1_3
I/O
PCA 的捕获输入和脉冲输出
P2.7
I/O
标准 IO 口
PWM27
O
增强 PWM 输出脚
A15
I
地址总线
CCP2_3
I/O
PCA 的捕获输入和脉冲输出
P4.5
I/O
标准 IO 口
PWM45
O
增强 PWM 输出脚
ALE
O
地址锁存信号
LQFP48
34
35
36
37
38
39
40
41
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 35 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
技术支持: 13922829991
名称
类型
P4.6
I/O
PWM46
O
增强 PWM 输出脚
RxD2_2
I
串口 2 的接收脚
P0.0
I/O
PWM00
O
增强 PWM 输出脚
ADC8
I
ADC 模拟输入通道 8
AD0
I
地址总线
P0.1
I/O
标准 IO 口
PWM01
O
增强 PWM 输出脚
ADC9
I
ADC 模拟输入通道 9
AD1
I
地址总线
P0.2
I/O
标准 IO 口
PWM02
O
增强 PWM 输出脚
ADC10
I
ADC 模拟输入通道 10
AD2
I
地址总线
P0.3
I/O
标准 IO 口
PWM03
O
增强 PWM 输出脚
ADC11
I
ADC 模拟输入通道 11
AD3
I
地址总线
P0.4
I/O
标准 IO 口
PWM04
O
增强 PWM 输出脚
ADC12
I
ADC 模拟输入通道 12
AD4
I
地址总线
T3
I
定时器 3 外部时钟输入
P5.2
I/O
PWM52
O
研发顾问: 13922805190
说明
LQFP48
42
43
44
45
46
47
48
深圳国芯人工智能有限公司
标准 IO 口
标准 IO 口
标准 IO 口
增强 PWM 输出脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 36 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2.6 STC8G1K08T-20PIN触摸按键系列
特性及价格
选型价格(不需要外部晶振、不需要外部复位,10 位 ADC,15 通道)
有
是
是
是
STC8G1K17T 1.9-5.5 17K 256B 1K
2
IAP 16
1
有
有
有
有
3
3
有 10 位 有
有
有 4级 有
是
有
是
是
-
直接下载
USB
-
¥1.5
3
月
送
样
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
16 个中断源,4 级中断优先级
支持在线仿真
工作电压
1.9V~5.5V
内建 LDO
工作温度
可增可减
DPTR
SRAM字节
DATA RAM
内部
是 ¥1.4
年新品供货信息
2020
是
SOP16
有 4级 有
QFN20 (3mm*3mm)
有
封装
有 10 位 有
TSSOP20
3
支持软件
3
可对外输出时钟及复位
有
看门狗 复位定时器
有
本身就可在线仿真
程序加密后传输(防拦截)
支持 RS485
下载
可设置下次更新程序需口令
以下可调)追频
36MHz
内部高可靠复位(可选复位门槛电压)
内部低压检测中断并可掉电唤醒
内部高精准时钟(
比较器(可当 路
,可作外部掉电检测)
1 A/D
( 路
可当 路
使用)
ADC
3 PCA
3 D/A
掉电唤醒专用定时器
路高速
15
(可当外部中断并可掉电唤醒)
PCA/CCP/PWM
定时器 计/数器( T0-T2
外部管脚也可掉电唤醒)
有
驱动
LED
触摸按键
有
I2 C
SPI
串口并可掉电唤醒
1
大容量扩展
16
万次 字节
10
口最多数量
I/O
万次 字节
EEPROM 10
强大的双
程序存储器
Flash
4K
工作电压( )
V
2
单片机型号
STC8G1K08T 1.9-5.5 8K 256B 1K
-40℃~85℃
Flash 存储器
最大 12K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
1024 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部高精度 IRC(ISP 编程时可进行上下调整)
误差±0.3%(常温下 25℃)
-1.38%~+1.42%温漂(全温度范围,-40℃~85℃)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 37 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
-0.88%~+1.05%温漂(温度范围,-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 上升到低压检测的上限门槛电压
时,低压检测生效。
软件复位
软件方式写复位触发寄存器
中断
提供 16 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、定时器 2、串口 1、ADC 模
数转换、LVD 低压检测、SPI、I2C、比较器、PCA/CCP/PWM、触摸按键
提供 4 级中断优先级
数字外设
3 个 16 位定时器:定时器 0、定时器 1、定时器 2,其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功
能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
1 个高速串口:串口 1,波特率时钟源最快可为 FOSC/4
3 组 16 位 PCA 模块:CCP0、CCP1、CCP2,可用于捕获、高速脉冲输出,及 6/7/8/10 位的 PWM 输出
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
触摸按键:最多支持 16 个触摸按键;每个触摸按键能够独立使能;内部参考电压 4 级可调;灵活的充放
电时间设置以及内部工作频率设置;支持低功耗触摸唤醒
LED 驱动:最多可驱动 128(8*8*2)个 LED;可支持共阴模式、共阳模式以及共阴/共阳模式;支持 8
级灰度调节(亮度调节)
模拟外设
超高速 ADC,支持 10 位精度 15 通道(通道 0~通道 14)的模数转换
ADC 的通道 15 用于测试内部参考电压(芯片在出厂时,内部参考电压调整为 1.19V)
比较器,一组比较器附近
GPIO
最多可达 16 个 GPIO:P1.0~P1.1、P1.3~P1.7、P3.0~P3.7、P5.4
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 38 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻
封装
TSSOP20、QFN20(3mm*3mm)
管脚图
深圳国芯人工智能有限公司
1
2
3
4
5
6
7
8
9
10
TSSOP20
COM4/TK4/CCP1_3/X32O/I2CSDA/MISO/ADC4/P1.4
COM5/TK5/CCP2_3/X32I/I2CSCL/SCLK/ADC5/P1.5
COM6/TK6/XTALO/MCLKO_2/RxD_3/ADC6/P1.6
COM7/TK7/XTALI/TxD_3/ADC7/P1.7
COM3/TK3/CCP0_3/ECI/T2CLKO/MOSI/ADC3/P1.3
TK_Cap
COM2/TK2/ECI_3/T2/SS/MCLKO/RST/ADC2/P5.4
Vcc/AVcc
ADC_VRef+
Gnd/AGnd
20
19
18
17
16
15
14
13
12
11
P1.1/ADC1/CCP0/TK1/COM1
P1.0/ADC0/CCP1/TK0/COM0
P3.7/INT3/TxD_2/CCP2_2/CCP2/CMP+/TK15/SEG7
P3.6/ADC14/INT2/RxD_2/CCP1_2/CMP-/TK14/SEG6
P3.5/ADC13/T1/T0CLKO/CCP0_2/SS_4/TK13/SEG5
P3.4/ADC12/T0/T1CLKO/ECI_2/CMPO/MOSI_4/TK12/SEG4
P3.3/ADC11/INT1/MISO_4/I2CSDA_4/TK11/SEG3
P3.2/ADC10/INT0/SCLK_4/I2CSCL_4/TK10/SEG2
P3.1/ADC9/TxD/TK9/SEG1
P3.0/ADC8/RxD/INT4/TK8/SEG0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 39 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
管脚说明
编号
TSSOP20
名称
类型
说明
P1.4
I/O
ADC4
I
ADC 模拟输入通道 4
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
X32O
O
CCP1_3
I/O
TK4
I
触摸按键
COM4
O
LED 驱动
P1.5
I/O
标准 I/O 口
ADC5
I
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
X32I
I
CCP2_3
I/O
TK5
I
触摸按键
COM5
O
LED 驱动
P1.6
I/O
ADC6
I
ADC 模拟输入通道 6
RxD_3
I
串口 1 的接收脚
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振脚
TK6
I
触摸按键
COM6
O
LED 驱动
P1.7
I/O
标准 I/O 口
ADC7
I
ADC 模拟输入通道 7
TxD_3
O
串口 1 的发送脚
XTALI
I
外部晶振脚
TK7
I
触摸按键
COM7
O
LED 驱动
QFN20
1
2
3
4
深圳国芯人工智能有限公司
标准 I/O 口
外部晶振脚
PCA 的捕获输入和脉冲输出
ADC 模拟输入通道 5
外部晶振脚
PCA 的捕获输入和脉冲输出
标准 I/O 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 40 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
TSSOP20
技术支持: 13922829991
名称
类型
P1.3
I/O
ADC3
I
ADC 模拟输入通道 3
T2CLKO
O
定时器 2 时钟分频输出
MOSI
I/O
SPI 主机输出从机输入
ECI
I
PCA 的外部脉冲输入
CCP0_3
I/O
TK3
I
触摸按键
COM3
O
LED 驱动
TK_Cap
I
触摸按键外接电容
P5.4
I/O
ADC2
I
ADC 模拟输入通道 2
RST
I
复位引脚
MCLKO
O
主时钟分频输出
SS
I/O
SPI 从机选择
T2
I
定时器 2 外部时钟输入
ECI_3
I
PCA 的外部脉冲输入
TK2
I
触摸按键
COM2
O
LED 驱动
Vcc
Vcc
电源脚
AVcc
Vcc
ADC 电源
ADC_VRef+
I
Gnd
Gnd
地线
AGnd
Gnd
ADC 地线
P3.0
I/O
标准 I/O 口
RxD
I
串口 1 的接收脚
ADC8
I
ADC 模拟输入通道 8
INT4
I
外部中断 4
TK8
I
触摸按键
SEG0
O
LED 驱动
P3.1
I/O
TxD
O
串口 1 的发送脚
ADC9
I
ADC 模拟输入通道 9
TK9
I
触摸按键
SEG1
O
LED 驱动
研发顾问: 13922805190
说明
QFN20
5
6
7
8
9
10
11
12
深圳国芯人工智能有限公司
标准 I/O 口
PCA 的捕获输入和脉冲输出
标准 I/O 口
ADC 的参考电压脚
标准 I/O 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 41 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
TSSOP20
技术支持: 13922829991
研发顾问: 13922805190
名称
类型
说明
P3.2
I/O
标准 I/O 口
INT0
I
外部中断 0
ADC10
I
ADC 模拟输入通道 10
SCLK_4
I/O
SPI 的时钟脚
SCL_4
I/O
I2C 的时钟线
TK10
I
触摸按键
SEG2
O
LED 驱动
P3.3
I/O
标准 I/O 口
INT1
I
外部中断 1
ADC11
I
ADC 模拟输入通道 11
MISO_4
I/O
SPI 主机输入从机输出
SDA_4
I/O
I2C 的数据线
TK11
I
触摸按键
SEG3
O
LED 驱动
P3.4
I/O
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
ADC12
I
ADC 模拟输入通道 12
ECI_2
I
PCA 的外部脉冲输入
CMPO
O
比较器输出
MOSI_4
I/O
TK12
I
触摸按键
SEG4
O
LED 驱动
P3.5
I/O
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
ADC13
I
ADC 模拟输入通道 13
CCP0_2
I/O
SS_4
I
SPI 的从机选择脚(主机为输出)
TK13
I
触摸按键
SEG5
O
LED 驱动
P3.6
I/O
标准 I/O 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
ADC14
I
ADC 模拟输入通道 14
CCP1_2
I/O
CMP-
I
比较器负极输入
TK14
I
触摸按键
SEG6
O
LED 驱动
QFN20
13
14
15
16
17
深圳国芯人工智能有限公司
标准 I/O 口
SPI 主机输出从机输入
标准 I/O 口
PCA 的捕获输入和脉冲输出
PCA 的捕获输入和脉冲输出
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 42 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
编号
TSSOP20
技术支持: 13922829991
名称
类型
P3.7
I/O
标准 I/O 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CCP2
I/O
PCA 的捕获输入和脉冲输出
CCP2_2
I/O
PCA 的捕获输入和脉冲输出
CMP+
I
比较器正极输入
TK15
I
触摸按键
SEG7
O
LED 驱动
P1.0
I/O
ADC0
I
CCP1
I/O
TK0
I
触摸按键
COM0
O
LED 驱动
P1.1
I/O
ADC1
I
CCP0
I/O
TK1
I
触摸按键
COM1
O
LED 驱动
研发顾问: 13922805190
说明
QFN20
18
19
20
深圳国芯人工智能有限公司
标准 I/O 口
ADC 模拟输入通道 0
PCA 的捕获输入和脉冲输出
标准 I/O 口
ADC 模拟输入通道 1
PCA 的捕获输入和脉冲输出
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 43 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
3 功能脚切换
STC8G 系列单片机的特殊外设串口、SPI、PCA、I2C 以及总线控制脚可以在多个 I/O 直接进行切换,
以实现一个外设当作多个设备进行分时复用。
3.1 功能脚切换相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
P_SW1
外设端口切换寄存器 1
A2H
P_SW2
外设端口切换寄存器 2
BAH
符号
描述
地址
B6
B5
S1_S[1:0]
B4
B3
CCP_S[1:0]
EAXFR
-
B2
B1
B0
0
-
nn00,000x
S4_S
S3_S
S2_S
0x00,0000
B2
B1
SPI_S[1:0]
I2C_S[1:0]
CMPO_S
位地址与符号
复位值
B7
MCLKOCR
FE05H
主时钟输出控制寄存器
B6
B5
B4
B3
B0
MCLKODIV[6:0]
MCLKO_S
0000,0000
外设端口切换控制寄存器 1
符号
地址
P_SW1
A2H
B7
B6
B5
S1_S[1:0]
B4
CCP_S[1:0]
B3
B2
SPI_S[1:0]
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
S1_S[1:0]:串口 1 功能脚选择位(STC8G1K08-8PIN 系列、STC8G1K08A-8PIN 系列)
S1_S[1:0]
RxD
TxD
00
P3.0
P3.1
01
P3.2
P3.3
10
P5.4
P5.3
11
-
-
CCP_S[1:0]:PCA 功能脚选择位
CCP_S[1:0]
ECI
CCP0
CCP1
CCP2
00
P1.2
P1.1
P1.0
P3.7
01
P3.4
P3.5
P3.6
P3.7
10
P2.4
P2.5
P2.6
P2.7
11
-
-
-
-
CCP_S[1:0]:PCA 功能脚选择位(STC8G1K08A-8PIN 系列)
CCP_S[1:0]
ECI
CCP0
CCP1
CCP2
00
P5.5
P3.2
P3.3
P5.4
01
P5.5
P3.1
P3.3
P5.4
10
P3.1
P3.2
P3.3
P5.5
11
-
-
-
-
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 44 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
SPI_S[1:0]:SPI 功能脚选择位
SPI_S[1:0]
SS
MOSI
MISO
SCLK
00
P1.2
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
SPI_S[1:0]:SPI 功能脚选择位(STC8G1K08-8PIN 系列、STC8G1K08A-8PIN 系列)
SPI_S[1:0]
SS
MOSI
MISO
SCLK
00
P5.5
P5.4
P3.3
P3.2
01
-
-
-
-
10
-
-
-
-
11
-
-
-
-
外设端口切换控制寄存器 2
符号
P_SW2
地址
B7
B6
BAH
EAXFR
-
B5
B4
I2C_S[1:0]
B3
CMPO_S
B2
S4_S
B1
S3_S
B0
S2_S
2
I2C_S[1:0]:I C 功能脚选择位
I2C_S[1:0]
SCL
SDA
00
P1.5
P1.4
01
P2.5
P2.4
10
-
-
P3.2
P3.3
11
2
I2C_S[1:0]:I C 功能脚选择位(STC8G1K08-8PIN 系列、STC8G1K08A-8PIN 系列)
I2C_S[1:0]
SCL
SDA
00
P3.2
P3.3
01
P5.4
P5.5
10
-
-
11
-
-
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 45 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
时钟选择寄存器
符号
地址
B7
MCLKOCR
FE05H
MCLKO_S
B6
B5
B4
B3
B2
B1
B0
MCLKODIV[6:0]
MCLKO_S:主时钟输出脚选择位
MCLKO_S
MCLKO
0
P5.4
1
P1.6
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 46 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
3.2 范例程序
3.2.1
串口 1 切换
汇编代码
;测试工作频率为 11.0592MHz
P_SW1
DATA
0A2H
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
MOV
MOV
P_SW1,#00H
P_SW1,#40H
P_SW1,#80H
P_SW1,#0C0H
SJMP
$
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 47 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
P_SW1
=
0xa2;
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;
技术支持: 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_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);
}
3.2.2
串口 2 切换
汇编代码
;测试工作频率为 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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 48 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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,#01H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;RXD2/P1.0, TXD2/P1.1
;RXD2_2/P4.0, TXD2_2/P4.2
END
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 49 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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);
}
3.2.3
串口 3 切换
汇编代码
;测试工作频率为 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
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 50 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#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);
}
3.2.4
串口 4 切换
汇编代码
;测试工作频率为 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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 51 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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,#04H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;RXD4/P0.2, TXD4/P0.3
;RXD4_2/P5.2, TXD4_2/P5.3
END
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 52 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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);
}
3.2.5
SPI切换
汇编代码
;测试工作频率为 11.0592MHz
P_SW1
DATA
0A2H
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
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 53 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW1
=
0xa2;
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_SW1 = 0x00;
P_SW1 = 0x04;
P_SW1 = 0x08;
P_SW1 = 0x0c;
//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
while (1);
}
3.2.6
PCA/CCP/PWM切换
汇编代码
;测试工作频率为 11.0592MHz
P_SW1
DATA
0A2H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 54 -
STC8G 系列技术手册
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
P_SW1,#00H
P_SW1,#10H
P_SW1,#20H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;
;ECI/P1.2, CCP0/P1.1, CCP1/P1.0, CCP2/P3.7
;ECI_2/P3.4, CCP0_2/P3.5, CCP1_2/P3.6, CCP2_2/P3.7
;ECI_3/P2.4, CCP0_3/P2.5, CCP1_3/P2.6, CCP2_3/P2.7
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
sfr
P_SW1
=
0xa2;
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 55 -
STC8G 系列技术手册
官方网站: 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;
//
//
P_SW1 = 0x00;
P_SW1 = 0x10;
P_SW1 = 0x20;
//ECI/P1.2, CCP0/P1.1, CCP1/P1.0, CCP2/P3.7
//ECI_2/P3.4, CCP0_2/P3.5, CCP1_2/P3.6, CCP2_2/P3.7
//ECI_3/P2.4, CCP0_3/P2.5, CCP1_3/P2.6, CCP2_3/P2.7
while (1);
}
3.2.7
I2C切换
汇编代码
;测试工作频率为 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
P_SW2,#00H
MAIN:
深圳国芯人工智能有限公司
;SCL/P1.5, SDA/P1.4
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 56 -
STC8G 系列技术手册
;
;
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
P_SW2,#10H
P_SW2,#30H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;SCL_2/P2.5, SDA_2/P2.4
;SCL_4/P3.2, SDA_4/P3.3
END
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 = 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);
}
3.2.8
比较器输出切换
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
P0M1
DATA
093H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 57 -
STC8G 系列技术手册
P0M0
P1M1
P1M0
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
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,#08H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;
;CMPO/P3.4
;CMPO_2/P4.1
END
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 58 -
STC8G 系列技术手册
官方网站: 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;
//
P_SW2 = 0x00;
P_SW2 = 0x08;
//CMPO/P3.4
//CMPO_2/P4.1
while (1);
}
3.2.9
主时钟输出切换
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
CLKOCR
EQU
0FE05H
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
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
- 59 -
STC8G 系列技术手册
;
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
MOV
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
;HIRC/4 output via MCLKO/P5.4
;HIRC/4 output via MCLKO_2/P1.6
END
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
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 = 0x80;
CLKOCR = 0x04;
CLKOCR = 0x84;
P_SW2 = 0x00;
//HIRC/4 output via MCLKO/P5.4
//HIRC/4 output via MCLKO_2/P1.6
while (1);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 60 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 61 -
STC8G 系列技术手册
官方网站: 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
- 62 -
STC8G 系列技术手册
官方网站: 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
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 63 -
STC8G 系列技术手册
官方网站: 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
- 64 -
STC8G 系列技术手册
官方网站: 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
- 65 -
STC8G 系列技术手册
官方网站: 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
国内分销商电话: 0513-5501 2928/2929/2966
A3
C1
A1
b(0.20mm)
A
e(0.4mm)
1
传真: 0513-5501 2926/2956/2947
- 66 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.6 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.40
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.30
0.35
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
- 67 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.7 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
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 68 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
4.8 STC8 系列单片机命名规则
STC
8x
xK
08
程序空间大小
12:12K字节
08:8K字节
SRAM空间大小
1K:1K字节
子系列
8G:STC8G系列
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 69 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
5 ISP下载及典型应用线路图
5.1 STC8G系列ISP下载应用线路图
5.1.1
使用RS-232 转换器下载(无独立VREF脚)
Vcc
Vcc
SP3232/
SP232/
MAX3232/
MAX232
0.1u
系统电源
(可从USB取电)
Vin
Power On
Vcc
47u
C?
1
2
3
4
5
6
7
8
9
10
P1.1
P1.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
VCC
P5.5
GND
20
19
18
17
16
15
14
13
12
11
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
300R
STC8G1K08
1N5819
47u钽电容(封装3528)参考价> 8;
TR0 = 1;
ET0 = 1;
EA = 1;
//初始化 LCD 显存
for(i=0; i= 250)
{
cnt_500ms = 0;
//
LCD_FLASH_2M;
//
LCD_FLASH_4M;
//500ms 到
//闪烁时分间隔:
//闪烁分秒间隔:
B_Second = ~B_Second;
if(B_Second)
{
if(++second >= 60)
//1 分钟到
{
second = 0;
if(++minute >= 60)
//1 小时到
{
minute = 0;
if(++hour >= 24) hour = 0; //24 小时到
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 214 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
LoadRTC();
技术支持: 13922829991
研发顾问: 13922805190
//显示时间
}
}
if(!INT0)
{
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);
//显示时分间隔:
//显示分秒间隔:
//显示时间
//打开定时器
//等待释放按键
//再次等待释放按键
//再次等待释放按键
}
}
}
}
/********************延时函数**************************/
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
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 215 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
LCD_scan();
B_2ms = 1;
}
/********************* INT0 中断函数 *************************/
void INT0_int (void) interrupt 0
{
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++;
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);
//D
//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);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 217 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
10 指令系统
助记符
指令说明
字节
时钟
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
- 218 -
STC8G 系列技术手册
官方网站: 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
- 219 -
STC8G 系列技术手册
官方网站: 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
- 220 -
STC8G 系列技术手册
官方网站: 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[1:0]位有关
:对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执
行下一条指令,此时条件跳转语句的执行时间为 1 个时钟;当条件满足时,则会发生跳转,此时条件跳
转语句的执行时间为 3 个时钟。
[3]
:对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执
行下一条指令,此时条件跳转语句的执行时间为 2 个时钟;当条件满足时,则会发生跳转,此时条件跳
转语句的执行时间为 3 个时钟。
[2]
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 221 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11 中断系统
(C 语言程序中使用中断号大于 31 的中断时,在 Keil 中编译会报错,解决办法请参考附录 I)
中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。
当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求 CPU 暂停当前的工作,
转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为
中断。实现这种功能的部件称为中断系统,请示 CPU 中断的请求源称为中断源。微型机的中断系统一般
允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在 CPU 优先响应
哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规
定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。
当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它
还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,
处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系
统,没有中断嵌套功能的中断系统称为单级中断系统。
用户可以用关总中断允许位(EA/IE.7)或相应中断的允许位屏蔽相应的中断请求,也可以用打开相
应的中断允许位来使 CPU 响应相应的中断申请,每一个中断源可以用软件独立地控制为开中断或关中断
状态,部分中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,低
优先级的中断请求不可以打断高优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来
决定系统先响应哪个中断。
11.1 STC8G系列中断源
下表中√表示对应的系列有相应的中断源
STC8G1K08
STC8G1K08
STC8G1K08A
STC8G2K64S4
STC8G2K64S2
STC8G1K08T
20PIN系列
8PIN系列
8PIN系列
48PIN系列
48PIN系列
20PIN系列
外部中断 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
- 222 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
串口 3 中断(UART3)
√
串口 4 中断(UART4)
√
定时器 3 中断(Timer3)
√
√
定时器 4 中断(Timer4)
√
√
√
√
增强型 PWM0 中断
√
√
PWM0 异常检测中断(PWM0FD)
√
√
√
√
√
比较器中断(CMP)
√
I2C 总线中断
√
√
√
√
√
触摸按键中断
增强型 PWM1 中断
√
√
增强型 PWM2 中断
√
√
增强型 PWM3 中断
√
√
增强型 PWM4 中断
√
√
增强型 PWM5 中断
√
√
PWM2 异常检测中断(PWM2FD)
√
√
PWM4 异常检测中断(PWM4FD)
√
√
深圳国芯人工智能有限公司
研发顾问: 13922805190
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 223 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11.2 STC8G中断结构图
中断请求
中断允许控制
中断优先级控制
最低优先级
较低优先级
较高优先级
最高优先级
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
PX1/PX1H
IE1
0
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
PPCA/PPCAH
0
1
2
ECF2
3
CCF2
ECF3
CCF3
UART2
S2RI
S2TI
SPI
INT3
INT3IF
Timer2
Timer4
CMP
EA
PS2/PS2H
0
PSPI/PSPIH
0
优先级固定为最低优先级
EX3
EA
优先级固定为最低优先级
ET2
EA
优先级固定为最低优先级
EX4
EA
ES3
EA
T2IF
INT4
Timer3
EA
EX2
INT2IF
UART4
EA
SPIF
INT2
UART3
ES2
ESPI
PX4/PX4H
INT4IF
S3RI
S3TI
S4RI
S4TI
优先级固定为最低优先级
ES4
EA
优先级固定为最低优先级
ET3
EA
优先级固定为最低优先级
ET4
EA
优先级固定为最低优先级
T3IF
T4IF
PIE
EA
CMPIF
PCMP/PCMPH
1
1
2
2
3
3
0
0
0
0
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
- 224 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11.3 STC8G系列中断列表
中断源
中断向量
次序
优先级设置
优先级
中断请求位
中断允许位
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
深圳国芯人工智能有限公司
PCMP,PCMPH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 225 -
STC8G 系列技术手册
中断源
PWM0
PWM0FD
I2C
PWM1
官方网站: www.STCMCUDATA.com / www.STCMCU.com
中断向量
00B3H
00BBH
00C3H
00E3H
次序
22
优先级设置
PPWM0,PPWM0H
23
PPWM0FD,PPWM0FDH
24
PI2C,PI2CH
28
PPWM1,PPWM1H
技术支持: 13922829991
优先级
0/1/2/3
0/1/2/3
0/1/2/3
0/1/2/3
研发顾问: 13922805190
中断请求位
中断允许位
CBIF
ECBI
CnIF
ECnI && ECnT1SI
ECnI && ECnT2SI
FDIF
EFDI
MSIF
EMSI
STAIF
ESTAI
RXIF
ERXI
TXIF
ETXI
STOIF
ESTOI
CBIF
ECBI
CnIF
ECnI && ECnT1SI
ECnI && ECnT2SI
CBIF
PWM2
00EBH
29
PPWM2,PPWM2H
0/1/2/3
CnIF
ECBI
ECnI && ECnT1SI
ECnI && ECnT2SI
CBIF
PWM3
00F3H
30
PPWM3,PPWM3H
0/1/2/3
CnIF
ECBI
ECnI && ECnT1SI
ECnI && ECnT2SI
CBIF
PWM4
00FBH
31
PPWM4,PPWM4H
0/1/2/3
CnIF
ECBI
ECnI && ECnT1SI
ECnI && ECnT2SI
CBIF
PWM5
0103H
32
PPWM5,PPWM5H
0/1/2/3
CnIF
ECBI
ECnI && ECnT1SI
ECnI && ECnT2SI
PWM2FD
010BH
33
PPWM2FD,PPWM2FDH
0/1/2/3
FDIF
EFDI
PWM4FD
0113H
34
PPWM4FD,PPWM4FDH
0/1/2/3
FDIF
EFDI
TKSU
011BH
35
PTKSU,PTKSUH
0/1/2/3
TKIF
ETKSUI
在 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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 226 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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;
void
TM3_Routine(void)
interrupt 19;
void
TM4_Routine(void)
interrupt 20;
void
CMP_Routine(void)
interrupt 21;
void
PWM0_Routine(void)
interrupt 22;
void
PWM0FD_Routine(void) interrupt 23;
void
I2C_Routine(void)
interrupt 24;
void
PWM1_Routine(void)
interrupt 28;
void
PWM2_Routine(void)
interrupt 29;
void
PWM3_Routine(void)
interrupt 30;
void
PWM4_Routine(void)
interrupt 31;
//void PWM5_Routine(void)
interrupt 32;
技术支持: 13922829991
研发顾问: 13922805190
//void PWM2FD_Routine(void) interrupt 33;
//void PWM4FD_Routine(void) interrupt 34;
//void TKSU_Routine(void)
interrupt 35;
中断号超过31的C语言中断服务程序不能直接用interrupt声明,请参考“附录J” 的
处理方法,汇编语言不受影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 227 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11.4 中断相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
IE
中断允许寄存器
A8H
EA
ELVD
EADC
ES
ET1
EX1
ET0
EX0
0000,0000
IE2
中断允许寄存器 2
AFH
ETKSUI
ET4
ET3
ES4
ES3
ET2
ESPI
ES2
x000,0000
中断与时钟输出控制寄存器
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
T0CLKO
x000,x000
中断优先级控制寄存器
B8H
PPCA
PLVD
PADC
PS
PT1
PX1
PT0
PX0
0000,0000
高中断优先级控制寄存器
B7H
PPCAH
PLVDH
PADCH
PSH
PT1H
PX1H
PT0H
PX0H
0000,0000
PI2C
PCMP
PX4
PPWM0FD
PPWM0
PSPI
PS2
0000,0000
PI2CH
PCMPH
PX4H
PSPIH
PS2H
0000,0000
PPWM5
PPWM4
PPWM3
PS4
PS3
0000,0000
PS4H
PS3H
0000,0000
INTCLKO
IP
IPH
PPWM2FD
IP2
中断优先级控制寄存器 2
B5H
PTKSU
PPWM2FDH
IP2H
高中断优先级控制寄存器 2
B6H
PPWM0FDH PPWM0H
PTKSUH
IP3
中断优先级控制寄存器 3
DFH
IP3H
高中断优先级控制寄存器 3
EEH PPWM4FDH
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
0000,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
AUXINTIF
ADC_CONTR ADC 控制寄存器
PPWM4FD
PPWM5H PPWM4H
PPWM2
PPWM3H
PPWM1
PPWM2H PPWM1H
BCH ADC_POWER ADC_START ADC_FLAG ADC_EPWMT
ADC_CHS[3:0]
000x,0000
SPSTAT
SPI 状态寄存器
CDH
SPIF
WCOL
-
-
-
-
-
-
00xx,xxxx
CCON
PCA 控制寄存器
D8H
CF
CR
-
-
-
CCF2
CCF1
CCF0
00xx,x000
CMOD
PCA 模式寄存器
D9H
CIDL
-
-
-
ECF
0xxx,0000
CCAPM0
PCA 模块 0 模式控制寄存器
DAH
-
ECOM0
CCAPP0
CCAPN0
MAT0
TOG0
PWM0
ECCF0 x000,0000
CCAPM1
PCA 模块 1 模式控制寄存器
DBH
-
ECOM1
CCAPP1
CCAPN1
MAT1
TOG1
PWM1
ECCF1 x000,0000
CCAPM2
PCA 模块 2 模式控制寄存器
DCH
-
ECOM2
CCAPP2
CCAPN2
MAT2
TOG2
PWM2
ECCF2 x000,0000
CMPCR1
比较器控制寄存器 1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES 0000,0000
PWMCFG01 增强型 PWM 配置寄存器
F6H
PWM1CBIF
EPWM1CBI
FLTPS0
PWM1CEN
PWM0CBIF EPWM0CBI ENPWM0TA PWM0CEN 0000,0000
PWMCFG23 增强型 PWM 配置寄存器
F7H
PWM3CBIF
EPWM3CBI
FLTPS1
PWM3CEN
PWM2CBIF EPWM2CBI ENPWM2TA PWM2CEN 0000,0000
PWMCFG45 增强型 PWM 配置寄存器
FEH PWM5CBIF
EPWM5CBI
FLTPS2
PWM5CEN
PWM4CBIF EPWM4CBI ENPWM4TA PWM4CEN 0000,0000
CPS[2:0]
位地址与符号
符号
I2CMSCR
I2CMSST
I2CSLCR
描述
I2C 主机控制寄存器
地址
复位值
B7
B6
B5
B4
B3
B2
B1
FE81H
EMSI
-
-
-
2
FE82H
MSBUSY
MSIF
-
-
-
-
2
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
-
2
I C 主机状态寄存器
I C 从机控制寄存器
B0
MSCMD[3:0]
0xxx,0000
MSACKI MSACKO 00xx,xx00
SLRST
x000,0xx0
I2CSLST
I C 从机状态寄存器
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
TXING
SLACKI
PWM0IF
PWM0 中断标志寄存器
FF05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
FF06H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
0000,0000
FF14H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM0FDCR PWM0 异常检测控制寄存器
PWM00CR
PWM00 控制寄存器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
SLACKO 0000,0000
传真: 0513-5501 2926/2956/2947
- 228 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM01CR
PWM01 控制寄存器
FF1CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM02CR
PWM02 控制寄存器
FF24H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM03CR
PWM03 控制寄存器
FF2CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM04CR
PWM04 控制寄存器
FF34H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM05CR
PWM05 控制寄存器
FF3CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM06CR
PWM06 控制寄存器
FF44H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM07CR
PWM07 控制寄存器
FF4CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM1 中断标志寄存器
FF55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
FF56H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
0000,0000
PWM1IF
PWM1FDCR PWM1 异常检测控制寄存器
PWM10CR
PWM10 控制寄存器
FF64H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM11CR
PWM11 控制寄存器
FF6CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM12CR
PWM12 控制寄存器
FF74H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM13CR
PWM13 控制寄存器
FF7CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM14CR
PWM14 控制寄存器
FF84H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM15CR
PWM15 控制寄存器
FF8CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM16CR
PWM16 控制寄存器
FF94H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM17CR
PWM17 控制寄存器
FF9CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM2 中断标志寄存器
FFA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
FFA6H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
0000,0000
PWM2IF
PWM2FDCR PWM2 异常检测控制寄存器
PWM20CR
PWM20 控制寄存器
FFB4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM21CR
PWM21 控制寄存器
FFBCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM22CR
PWM22 控制寄存器
FFC4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM23CR
PWM23 控制寄存器
FFCCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM24CR
PWM24 控制寄存器
FFD4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM25CR
PWM25 控制寄存器
FFDCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM26CR
PWM26 控制寄存器
FFE4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM27CR
PWM27 控制寄存器
FFECH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM3 中断标志寄存器
FC05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
FC06H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
0000,0000
PWM3IF
PWM3FDCR PWM3 异常检测控制寄存器
PWM30CR
PWM30 控制寄存器
FC14H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM31CR
PWM31 控制寄存器
FC1CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM32CR
PWM32 控制寄存器
FC24H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM33CR
PWM33 控制寄存器
FC2CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM34CR
PWM34 控制寄存器
FC34H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM35CR
PWM35 控制寄存器
FC3CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM36CR
PWM36 控制寄存器
FC44H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM37CR
PWM37 控制寄存器
FC4CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM4 中断标志寄存器
FC55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
FC56H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
0000,0000
PWM4IF
PWM4FDCR PWM4 异常检测控制寄存器
PWM40CR
PWM40 控制寄存器
FC64H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM41CR
PWM41 控制寄存器
FC6CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM42CR
PWM42 控制寄存器
FC74H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM43CR
PWM43 控制寄存器
FC7CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM44CR
PWM44 控制寄存器
FC84H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 229 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM45CR
PWM45 控制寄存器
FC8CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM46CR
PWM46 控制寄存器
FC94H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM47CR
PWM47 控制寄存器
FC9CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM5 中断标志寄存器
FCA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
FCA6H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
0000,0000
PWM5IF
PWM5FDCR PWM5 异常检测控制寄存器
PWM50CR
PWM50 控制寄存器
FCB4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM51CR
PWM51 控制寄存器
FCBCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM52CR
PWM52 控制寄存器
FCC4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM53CR
PWM53 控制寄存器
FCCCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM54CR
PWM54 控制寄存器
FCD4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM55CR
PWM55 控制寄存器
FCDCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM56CR
PWM56 控制寄存器
FCE4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
PWM57CR
PWM57 控制寄存器
FCECH
ENO
INI
-
-
ENI
ENT2I
ENT1I
00xx,x000
触摸按键状态寄存器 2
FB47H
TSIF
TSDOV
-
-
TSSTA2
11.4.1
TSDNCHN[3:0]
00xx,0000
中断使能寄存器(中断允许位)
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 中断允许位。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 230 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
0:禁止 INT0 中断
1:允许 INT0 中断
IE2(中断使能寄存器 2)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IE2
AFH
ETKSUI
ET4
ET3
ES4
ES3
ET2
ESPI
ES2
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:允许 T2 中断
ESPI:SPI 中断允许位。
0:禁止 SPI 中断
1:允许 SPI 中断
ES2:串行口 2 中断允许位。
0:禁止串行口 2 中断
1:允许串行口 2 中断
ETKSUI:触摸按键中断允许位。
0:禁止触摸按键中断
1:允许触摸按键中断
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 中断
PCA/CCP/PWM 中断控制寄存器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 231 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
B3
B2
研发顾问: 13922805190
符号
地址
B7
B6
B5
B4
B1
CMOD
D9H
CIDL
-
-
-
CCAPM0
DAH
-
ECOM0
CCAPP0
CCAPN0
MAT0
TOG0
PWM0
ECCF0
CCAPM1
DBH
-
ECOM1
CCAPP1
CCAPN1
MAT1
TOG1
PWM1
ECCF1
CCAPM2
DCH
-
ECOM2
CCAPP2
CCAPN2
MAT2
TOG2
PWM2
ECCF2
CPS[2:0]
B0
ECF
ECF:PCA 计数器中断允许位。
0:禁止 PCA 计数器中断
1:允许 PCA 计数器中断
ECCF0:PCA 模块 0 中断允许位。
0:禁止 PCA 模块 0 中断
1:允许 PCA 模块 0 中断
ECCF1:PCA 模块 1 中断允许位。
0:禁止 PCA 模块 1 中断
1:允许 PCA 模块 1 中断
ECCF2:PCA 模块 2 中断允许位。
0:禁止 PCA 模块 2 中断
1:允许 PCA 模块 2 中断
CMPCR1(比较器控制寄存器 1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CMPCR1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES
B3
B2
PIE:比较器上升沿中断允许位。
0:禁止比较器上升沿中断
1:允许比较器上升沿中断
NIE:比较器下降沿中断允许位。
0:禁止比较器下降沿中断
1:允许比较器下降沿中断
I2C 控制寄存器
符号
地址
B7
B6
B5
B4
I2CMSCR
FE81H
EMSI
-
-
-
I2CSLCR
FE83H
-
ESTAI
ERXI
ETXI
B1
B0
MSCMD[3:0]
ESTOI
-
-
SLRST
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 从机发送数据完成事件中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 232 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1:允许 I2C 从机发送数据完成事件中断
2
ESTOI:I C从机接收STOP事件中断允许位。
0:禁止 I2C 从机接收 STOP 事件中断
1:允许 I2C 从机接收 STOP 事件中断
增强型 PWM 配置寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMCFG01
F6H
PWM1CBIF
EPWM1CBI
FLTPS0
PWM1CEN
PWM0CBIF
EPWM0CBI
ENPWM0TA
PWM0CEN
PWMCFG23
F7H
PWM3CBIF
EPWM3CBI
FLTPS1
PWM3CEN
PWM2CBIF
EPWM2CBI
ENPWM2TA
PWM2CEN
PWMCFG45
FEH
PWM5CBIF
EPWM5CBI
FLTPS2
PWM5CEN
PWM4CBIF
EPWM4CBI
ENPWM4TA
PWM4CEN
EPWM0CBI:增强PWM0计数器中断允许位。
0:禁止 PWM0 计数器中断
1:允许 PWM0 计数器中断
EPWM1CBI:增强PWM1计数器中断允许位。
0:禁止 PWM1 计数器中断
1:允许 PWM1 计数器中断
EPWM2CBI:增强PWM2计数器中断允许位。
0:禁止 PWM2 计数器中断
1:允许 PWM2 计数器中断
EPWM3CBI:增强PWM3计数器中断允许位。
0:禁止 PWM3 计数器中断
1:允许 PWM3 计数器中断
EPWM4CBI:增强PWM4计数器中断允许位。
0:禁止 PWM4 计数器中断
1:允许 PWM4 计数器中断
EPWM5CBI:增强PWM5计数器中断允许位。
0:禁止 PWM5 计数器中断
1:允许 PWM5 计数器中断
增强型 PWM 异常检测控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWM0FDCR
FF06H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM1FDCR
FF56H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
PWM2FDCR
FFA6H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM3FDCR
FC06H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
PWM4FDCR
FC56H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM5FDCR
FCA6H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
EFDI:PWM外部异常事件中断允许位。
0:禁止 PWM 外部异常事件中断
1:允许 PWM 外部异常事件中断
增强型 PWM 控制寄存器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 233 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
符号
地址
B7
B6
B5
B4
PWM00CR
FF14H
ENO
INI
-
PWM01CR
FF1CH
ENO
INI
PWM02CR
FF24H
ENO
PWM03CR
FF2CH
PWM04CR
B2
B1
B0
-
ENI
ENT2I
ENT1I
-
-
ENI
ENT2I
ENT1I
INI
-
-
ENI
ENT2I
ENT1I
ENO
INI
-
-
ENI
ENT2I
ENT1I
FF34H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM05CR
FF3CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM06CR
FF44H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM07CR
FF4CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM10CR
FF64H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM11CR
FF6CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM12CR
FF74H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM13CR
FF7CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM14CR
FF84H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM15CR
FF8CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM16CR
FF94H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM17CR
FF9CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM20CR
FFB4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM21CR
FFBCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM22CR
FFC4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM23CR
FFCCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM24CR
FFD4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM25CR
FFDCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM26CR
FFE4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM27CR
FFECH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM30CR
FC14H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM31CR
FC1CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM32CR
FC24H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM33CR
FC2CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM34CR
FC34H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM35CR
FC3CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM36CR
FC44H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM37CR
FC4CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM40CR
FC64H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM41CR
FC6CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM42CR
FC74H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM43CR
FC7CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM44CR
FC84H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM45CR
FC8CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM46CR
FC94H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM47CR
FC9CH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM50CR
FCB4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM51CR
FCBCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM52CR
FCC4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
B3
研发顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 234 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM53CR
FCCCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM54CR
FCD4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM55CR
FCDCH
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM56CR
FCE4H
ENO
INI
-
-
ENI
ENT2I
ENT1I
PWM57CR
FCECH
ENO
INI
-
-
ENI
ENT2I
ENT1I
ECI:PWM通道中断允许位。
0:禁止 PWM 中断
1:允许 PWM 中断
ET2SI:PWM通道第2个触发点中断允许位。
0:禁止 PWM 的第 2 个触发点中断
1:允许 PWM 的第 2 个触发点中断
ET1SI:PWM通道第1个触发点中断允许位。
0:禁止 PWM 的第 1 个触发点中断
1:允许 PWM 的第 1 个触发点中断
11.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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 235 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TI:串口1发送完成中断请求标志。需要软件清零。
RI:串口1接收完成中断请求标志。需要软件清零。
S2TI:串口2发送完成中断请求标志。需要软件清零。
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
ADC_CONTR
BCH
ADC_POWER
ADC_START
ADC_FLAG
ADC_EPWMT
B3
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数据传输完成中断请求标志。需要软件清零。
PCA 控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CCON
D8H
CF
CR
-
-
-
CCF2
CCF1
CCF0
CF:PCA计数器中断请求标志。需要软件清零。
CCF2:PCA模块2中断请求标志。需要软件清零。
CCF1:PCA模块1中断请求标志。需要软件清零。
CCF0:PCA模块0中断请求标志。需要软件清零。
比较器控制寄存器 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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 236 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2
MSIF:I C主机模式中断请求标志。需要软件清零。
2
ESTAI:I C从机接收START事件中断请求标志。需要软件清零。
2
ERXI:I C从机接收数据完成事件中断请求标志。需要软件清零。
2
ETXI:I C从机发送数据完成事件中断请求标志。需要软件清零。
2
ESTOI:I C从机接收STOP事件中断请求标志。需要软件清零。
增强型 PWM 配置寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMCFG01
F6H
PWM1CBIF
EPWM1CBI
FLTPS0
PWM1CEN
PWM0CBIF
EPWM0CBI
ENPWM0TA
PWM0CEN
PWMCFG23
F7H
PWM3CBIF
EPWM3CBI
FLTPS1
PWM3CEN
PWM2CBIF
EPWM2CBI
ENPWM2TA
PWM2CEN
PWMCFG45
FEH
PWM5CBIF
EPWM5CBI
FLTPS2
PWM5CEN
PWM4CBIF
EPWM4CBI
ENPWM4TA
PWM4CEN
PWM0CBIF:增强型PWM0计数器中断请求标志。需要软件清零。
PWM1CBIF:增强型PWM1计数器中断请求标志。需要软件清零。
PWM2CBIF:增强型PWM2计数器中断请求标志。需要软件清零。
PWM3CBIF:增强型PWM3计数器中断请求标志。需要软件清零。
PWM4CBIF:增强型PWM4计数器中断请求标志。需要软件清零。
PWM5CBIF:增强型PWM5计数器中断请求标志。需要软件清零。
增强型 PWM 中断标志寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWM0IF
FF05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM1IF
FF55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM2IF
FFA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM3IF
FC05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM4IF
FC55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM5IF
FCA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
C7IF:增强型PWM通道7中断请求标志。需要软件清零。
C6IF:增强型PWM通道6中断请求标志。需要软件清零。
C5IF:增强型PWM通道5中断请求标志。需要软件清零。
C4IF:增强型PWM通道4中断请求标志。需要软件清零。
C3IF:增强型PWM通道3中断请求标志。需要软件清零。
C2IF:增强型PWM通道2中断请求标志。需要软件清零。
C1IF:增强型PWM通道1中断请求标志。需要软件清零。
C0IF:增强型PWM通道0中断请求标志。需要软件清零。
增强型 PWM 异常检测控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWM0FDCR
FF06H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 237 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM1FDCR
FF56H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
PWM2FDCR
FFA6H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM3FDCR
FC06H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
PWM4FDCR
FC56H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM5FDCR
FCA6H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
B2
B1
B0
FDIF:增强型PWM异常检测中断请求标志。需要软件清零。
触摸按键状态寄存器 2
符号
地址
B7
B6
B5
B4
TSSTA2
FB47H
TSIF
TSDOV
-
-
B3
TSDNCHN[3:0]
TSIF:触摸按键中断标志。需软件写1清零。
11.4.3
中断优先级寄存器
中断优先级控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IP
B8H
PPCA
PLVD
PADC
PS
PT1
PX1
PT0
PX0
IPH
B7H
PPCAH
PLVDH
PADCH
PSH
PT1H
PX1H
PT0H
PX0H
IP2
B5H
PI2C
PCMP
PX4
PPWM0FD
PPWM0
PSPI
PS2
IP2H
B6H
PI2CH
PCMPH
PX4H
PPWM0FDH
PPWM0H
PSPIH
PS2H
IP3
DFH
PPWM4FD
PPWM5
PPWM4
PPWM3
PPWM2
PPWM1
PS4
PS3
IP3H
EEH
PPWM4FDH
PPWM5H
PPWM4H
PPWM3H
PPWM2H
PPWM1H
PS4H
PS3H
PPWM2FD
PTKSU
PPWM2FDH
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 级(最低级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 238 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
01:定时器 1 中断优先级为 1 级(较低级)
10:定时器 1 中断优先级为 2 级(较高级)
11:定时器 1 中断优先级为 3 级(最高级)
PSH,PS:串口1中断优先级控制位
00:串口 1 中断优先级为 0 级(最低级)
01:串口 1 中断优先级为 1 级(较低级)
10:串口 1 中断优先级为 2 级(较高级)
11:串口 1 中断优先级为 3 级(最高级)
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 级(最高级)
PPCAH,PPCA:CCP/PCA/PWM中断优先级控制位
00:CCP/PCA/PWM 中断优先级为 0 级(最低级)
01:CCP/PCA/PWM 中断优先级为 1 级(较低级)
10:CCP/PCA/PWM 中断优先级为 2 级(较高级)
11:CCP/PCA/PWM 中断优先级为 3 级(最高级)
PS2H,PS2:串口2中断优先级控制位
00:串口 2 中断优先级为 0 级(最低级)
01:串口 2 中断优先级为 1 级(较低级)
10:串口 2 中断优先级为 2 级(较高级)
11:串口 2 中断优先级为 3 级(最高级)
PSPIH,PSPI:SPI中断优先级控制位
00:SPI 中断优先级为 0 级(最低级)
01:SPI 中断优先级为 1 级(较低级)
10:SPI 中断优先级为 2 级(较高级)
11:SPI 中断优先级为 3 级(最高级)
PX4H,PX4:外部中断4中断优先级控制位
00:INT4 中断优先级为 0 级(最低级)
01:INT4 中断优先级为 1 级(较低级)
10:INT4 中断优先级为 2 级(较高级)
11:INT4 中断优先级为 3 级(最高级)
PCMPH,PCMP:比较器中断优先级控制位
00:CMP 中断优先级为 0 级(最低级)
01:CMP 中断优先级为 1 级(较低级)
10:CMP 中断优先级为 2 级(较高级)
11:CMP 中断优先级为 3 级(最高级)
PI2CH,PI2C:I2C中断优先级控制位
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 239 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
00:I2C 中断优先级为 0 级(最低级)
01:I2C 中断优先级为 1 级(较低级)
10:I2C 中断优先级为 2 级(较高级)
11:I2C 中断优先级为 3 级(最高级)
PPWM0H,PPWM0:增强型PWM0中断优先级控制位
00:增强型 PWM0 中断优先级为 0 级(最低级)
01:增强型 PWM0 中断优先级为 1 级(较低级)
10:增强型 PWM0 中断优先级为 2 级(较高级)
11:增强型 PWM0 中断优先级为 3 级(最高级)
PPWM1H,PPWM1:增强型PWM1中断优先级控制位
00:增强型 PWM1 中断优先级为 0 级(最低级)
01:增强型 PWM1 中断优先级为 1 级(较低级)
10:增强型 PWM1 中断优先级为 2 级(较高级)
11:增强型 PWM1 中断优先级为 3 级(最高级)
PPWM2H,PPWM2:增强型PWM2中断优先级控制位
00:增强型 PWM2 中断优先级为 0 级(最低级)
01:增强型 PWM2 中断优先级为 1 级(较低级)
10:增强型 PWM2 中断优先级为 2 级(较高级)
11:增强型 PWM2 中断优先级为 3 级(最高级)
PPWM3H,PPWM3:增强型PWM3中断优先级控制位
00:增强型 PWM3 中断优先级为 0 级(最低级)
01:增强型 PWM3 中断优先级为 1 级(较低级)
10:增强型 PWM3 中断优先级为 2 级(较高级)
11:增强型 PWM3 中断优先级为 3 级(最高级)
PPWM4H,PPWM4:增强型PWM4中断优先级控制位
00:增强型 PWM4 中断优先级为 0 级(最低级)
01:增强型 PWM4 中断优先级为 1 级(较低级)
10:增强型 PWM4 中断优先级为 2 级(较高级)
11:增强型 PWM4 中断优先级为 3 级(最高级)
PPWM5H,PPWM5:增强型PWM5中断优先级控制位
00:增强型 PWM5 中断优先级为 0 级(最低级)
01:增强型 PWM5 中断优先级为 1 级(较低级)
10:增强型 PWM5 中断优先级为 2 级(较高级)
11:增强型 PWM5 中断优先级为 3 级(最高级)
PPWM0FDH,PPWM0FD:增强型PWM0异常检测中断优先级控制位
00:PWM0FD 中断优先级为 0 级(最低级)
01:PWM0FD 中断优先级为 1 级(较低级)
10:PWM0FD 中断优先级为 2 级(较高级)
11:PWM0FD 中断优先级为 3 级(最高级)
PPWM2FDH,PPWM2FD:增强型PWM2异常检测中断优先级控制位
00:PWM2FD 中断优先级为 0 级(最低级)
01:PWM2FD 中断优先级为 1 级(较低级)
10:PWM2FD 中断优先级为 2 级(较高级)
11:PWM2FD 中断优先级为 3 级(最高级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 240 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PPWM4FDH,PPWM4FD:增强型PWM4异常检测中断优先级控制位
00:PWM4FD 中断优先级为 0 级(最低级)
01:PWM4FD 中断优先级为 1 级(较低级)
10:PWM4FD 中断优先级为 2 级(较高级)
11:PWM4FD 中断优先级为 3 级(最高级)
PTKSUH,PTKSU:触摸按键中断优先级控制位
00:触摸按键中断优先级为 0 级(最低级)
01:触摸按键中断优先级为 1 级(较低级)
10:触摸按键中断优先级为 2 级(较高级)
11:触摸按键中断优先级为 3 级(最高级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 241 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11.5 范例程序
11.5.1
INT0 中断(上升沿和下降沿)
汇编代码
;测试工作频率为 11.0592MHz
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
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:
E
深圳国芯人工智能有限公司
;使能 INT0 上升沿和下降沿中断
;使能 INT0 中断
N
国内分销商电话: 0513-5501 2928/2929/2966
D
传真: 0513-5501 2926/2956/2947
- 242 -
STC8G 系列技术手册
官方网站: 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
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
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;
IT0 = 0;
EX0 = 1;
EA = 1;
//使能 INT0 上升沿和下降沿中断
//使能 INT0 中断
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 243 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
INT0 中断(下降沿)
11.5.2
汇编代码
;测试工作频率为 11.0592MHz
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
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
$
INT0ISR:
;测试端口
MAIN:
;使能 INT0 下降沿中断
;使能 INT0 中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P0M1
深圳国芯人工智能有限公司
=
0x93;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 244 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void INT0_Isr() interrupt 0
{
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;
//使能 INT0 下降沿中断
//使能 INT0 中断
IT0 = 1;
EX0 = 1;
EA = 1;
while (1);
}
11.5.3
INT1 中断(上升沿和下降沿)
汇编代码
;测试工作频率为 11.0592MHz
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
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 245 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
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
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;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 246 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
void INT1_Isr() interrupt 2
{
if (INT1)
{
P10 = !P10;
}
else
{
P11 = !P11;
}
}
技术支持: 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 = 0;
EX1 = 1;
EA = 1;
while (1);
}
11.5.4
INT1 中断(下降沿)
汇编代码
;测试工作频率为 11.0592MHz
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
0013H
INT1ISR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 247 -
STC8G 系列技术手册
官方网站: 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
SETB
SETB
SETB
JMP
IT1
EX1
EA
$
技术支持: 13922829991
研发顾问: 13922805190
INT1ISR:
;测试端口
MAIN:
;使能 INT1 下降沿中断
;使能 INT1 中断
END
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;
sbit
P10
=
P1^0;
void INT1_Isr() interrupt 2
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 248 -
STC8G 系列技术手册
官方网站: 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;
//使能 INT1 下降沿中断
//使能 INT1 中断
IT1 = 1;
EX1 = 1;
EA = 1;
while (1);
}
11.5.5
INT2 中断(下降沿)
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
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
0053H
INT2ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
INT2ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 249 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
SETB
JMP
INTCLKO,#EX2
EA
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 INT2 中断
END
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;
sfr
#define
#define
#define
sbit
INTCLKO
EX2
EX3
EX4
P10
=
0x8f;
0x10
0x20
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 250 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//使能 INT2 中断
INTCLKO = EX2;
EA = 1;
while (1);
}
11.5.6
INT3 中断(下降沿)
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
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
005BH
INT3ISR
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
SETB
JMP
INTCLKO,#EX3
EA
$
INT3ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
;使能 INT3 中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 251 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
END
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;
sfr
#define
#define
#define
sbit
INTCLKO
EX2
EX3
EX4
P10
=
0x8f;
0x10
0x20
0x40
P1^0;
=
void INT3_Isr() interrupt 11
{
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;
//使能 INT3 中断
INTCLKO = EX3;
EA = 1;
while (1);
}
11.5.7
INT4 中断(下降沿)
汇编代码
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 252 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
;测试工作频率为 11.0592MHz
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
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
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
MOV
SETB
JMP
INTCLKO,#EX4
EA
$
INT4ISR:
;测试端口
MAIN:
;使能 INT4 中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P0M1
深圳国芯人工智能有限公司
=
0x93;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 253 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x91;
0x92;
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;
}
技术支持: 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;
//使能 INT4 中断
INTCLKO = EX4;
EA = 1;
while (1);
}
11.5.8
定时器 0 中断
汇编代码
;测试工作频率为 11.0592MHz
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 254 -
STC8G 系列技术手册
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
DATA
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
$
技术支持: 13922829991
研发顾问: 13922805190
TM0ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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
- 255 -
STC8G 系列技术手册
sbit
官方网站: www.STCMCUDATA.com / www.STCMCU.com
P10
=
技术支持: 13922829991
研发顾问: 13922805190
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;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
11.5.9
定时器 1 中断
汇编代码
;测试工作频率为 11.0592MHz
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
001BH
TM1ISR
ORG
0100H
TM1ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 256 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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
$
技术支持: 13922829991
研发顾问: 13922805190
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 257 -
STC8G 系列技术手册
官方网站: 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;
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
11.5.10 定时器 2 中断
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
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
0063H
TM2ISR
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T2IF
TM2ISR:
深圳国芯人工智能有限公司
;测试端口
;清中断标志
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 258 -
STC8G 系列技术手册
官方网站: 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
SETB
T2L,#66H
T2H,#0FCH
AUXR,#10H
IE2,#ET2
EA
JMP
$
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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
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
P10
=
P1^0;
void TM2_Isr() interrupt 12
{
P10 = !P10;
深圳国芯人工智能有限公司
=
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0xef;
0x01
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 259 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//清中断标志
AUXINTIF &= ~T2IF;
}
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.5.11 定时器 3 中断
汇编代码
;测试工作频率为 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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 260 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T3IF
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
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM3ISR:
;测试端口
;清中断标志
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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
=
=
=
=
=
=
=
=
=
=
=
=
深圳国芯人工智能有限公司
=
0xd5;
0xd4;
0xd1;
0xaf;
0x20
0xef;
0x02
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 261 -
STC8G 系列技术手册
sbit
官方网站: www.STCMCUDATA.com / www.STCMCU.com
P10
=
技术支持: 13922829991
研发顾问: 13922805190
P1^0;
void TM3_Isr() interrupt 19
{
P10 = !P10;
AUXINTIF &= ~T3IF;
}
//测试端口
//清中断标志
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
//启动定时器
//使能定时器中断
while (1);
}
11.5.12 定时器 4 中断
汇编代码
;测试工作频率为 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
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
093H
094H
095H
096H
0B1H
0B2H
0B3H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 262 -
STC8G 系列技术手册
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
DATA
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
00A3H
TM4ISR
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T4IF
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,#80H
IE2,#ET4
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM4ISR:
;测试端口
;清中断标志
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
0xd5;
0xd4;
0xd3;
0xd2;
0xd1;
0xaf;
0x20
0x40
0xef;
0x02
0x04
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 263 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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;
AUXINTIF &= ~T4IF;
}
技术支持: 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;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0x80;
IE2 = ET4;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
11.5.13 UART1 中断
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
DATA
DATA
DATA
0D7H
0D6H
8EH
P0M1
P0M0
P1M1
P1M0
DATA
DATA
DATA
DATA
093H
094H
091H
092H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 264 -
STC8G 系列技术手册
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART1ISR
ORG
0100H
JNB
CLR
CPL
TI,CHECKRI
TI
P1.0
;清中断标志
;测试端口
JNB
CLR
CPL
RI,ISREXIT
RI
P1.1
;清中断标志
;测试端口
研发顾问: 13922805190
UART1ISR:
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 265 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
T2L
T2H
AUXR
=
=
=
0xd7;
0xd6;
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;
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void UART1_Isr() interrupt 4
{
if (TI)
{
TI = 0;
P10 = !P10;
}
if (RI)
{
RI = 0;
P11 = !P11;
}
}
技术支持: 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;
SCON = 0x50;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x15;
ES = 1;
EA = 1;
SBUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 266 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
11.5.14 UART2 中断
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
S2CON
S2BUF
IE2
ES2
DATA
DATA
DATA
DATA
DATA
DATA
EQU
0D7H
0D6H
8EH
9AH
9BH
0AFH
01H
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
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
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
UART2ISR:
CHECKRI:
ISREXIT:
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 267 -
STC8G 系列技术手册
官方网站: 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
MOV
SETB
MOV
S2CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
IE2,#ES2
EA
S2BUF,#5AH
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
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
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 UART2_Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
P12 = !P12;
}
if (S2CON & 0x01)
深圳国芯人工智能有限公司
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 268 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
//清中断标志
//测试端口
S2CON &= ~0x01;
P13 = !P13;
}
}
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.5.15 UART3 中断
汇编代码
;测试工作频率为 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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 269 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
ORG
LJMP
ORG
LJMP
0000H
MAIN
008BH
UART3ISR
ORG
0100H
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
UART3ISR:
CHECKRI:
ISREXIT:
MAIN:
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
T2L
T2H
深圳国芯人工智能有限公司
=
=
0xd7;
0xd6;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 270 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
#define
AUXR
S3CON
S3BUF
IE2
ES3
=
=
=
=
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;
}
}
技术支持: 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
//启动定时器
//使能串口中断
//发送测试数据
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 271 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
while (1);
}
11.5.16 UART4 中断
汇编代码
;测试工作频率为 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
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
UART4ISR:
CHECKRI:
ISREXIT:
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 272 -
STC8G 系列技术手册
官方网站: 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
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
#define
T2L
T2H
AUXR
S4CON
S4BUF
IE2
ES4
=
=
=
=
=
=
0xd7;
0xd6;
0x8e;
0x84;
0x85;
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;
}
深圳国芯人工智能有限公司
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 273 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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);
}
11.5.17 ADC中断
汇编代码
;测试工作频率为 11.0592MHz
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
EADC
DATA
DATA
DATA
DATA
BIT
0BCH
0BDH
0BEH
0DEH
IE.5
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 274 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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
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
SETB
SETB
ADCCFG,#00H
ADC_CONTR,#0C0H
EADC
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
ADCISR:
;清中断标志
;测试端口
;测试端口
MAIN:
;使能并启动 ADC 模块
;使能 ADC 中断
END
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 275 -
STC8G 系列技术手册
sfr
sfr
sfr
官方网站: www.STCMCUDATA.com / www.STCMCU.com
P4M0
P5M1
P5M0
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
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;
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.5.18 LVD中断
汇编代码
;测试工作频率为 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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
深圳国芯人工智能有限公司
;RSTCFG.6
;LVD@2.2V
;LVD@2.4V
;LVD@2.7V
;LVD@3.0V
;PCON.5
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 276 -
STC8G 系列技术手册
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0033H
LVDISR
ORG
0100H
ANL
CPL
RETI
PCON,#NOT LVDF
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
ANL
MOV
SETB
SETB
JMP
PCON,#NOT LVDF
RSTCFG,# LVD3V0
ELVD
EA
$
技术支持: 13922829991
研发顾问: 13922805190
LVDISR:
;清中断标志
;测试端口
MAIN:
;上电需要清中断标志
;设置 LVD 电压为 3.0V
;使能 LVD 中断
END
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
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
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 277 -
STC8G 系列技术手册
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 LVD_Isr() interrupt 6
{
PCON &= ~LVDF;
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;
//上电需要清中断标志
//设置 LVD 电压为 3.0V
PCON &= ~LVDF;
RSTCFG = LVD3V0;
ELVD = 1; //使能 LVD 中断
EA = 1;
while (1);
}
11.5.19 PCA中断
汇编代码
;测试工作频率为 11.0592MHz
CCON
CF
CR
CCF3
CCF2
CCF1
CCF0
CMOD
CL
CH
CCAPM0
CCAP0L
CCAP0H
PCA_PWM0
CCAPM1
CCAP1L
DATA
BIT
BIT
BIT
BIT
BIT
BIT
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
0D8H
CCON.7
CCON.6
CCON.3
CCON.2
CCON.1
CCON.0
0D9H
0E9H
0F9H
0DAH
0EAH
0FAH
0F2H
0DBH
0EBH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 278 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
CCAP1H
PCA_PWM1
CCAPM2
CCAP2L
CCAP2H
PCA_PWM2
CCAPM3
CCAP3L
CCAP3H
PCA_PWM3
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
0FBH
0F3H
0DCH
0ECH
0FCH
0F4H
0DDH
0EDH
0FDH
0F5H
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
003BH
PCAISR
ORG
0100H
JNB
CLR
CPL
CF,ISREXIT
CF
P1.0
技术支持: 13922829991
研发顾问: 13922805190
PCAISR:
;清中断标志
;测试端口
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
SETB
SETB
CCON,#00H
CMOD,#09H
CR
EA
JMP
$
深圳国芯人工智能有限公司
;PCA 时钟为系统时钟,使能 PCA 计时中断
;启动 PCA 计时器
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 279 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sbit
sbit
sbit
sbit
sbit
sbit
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
CCON
CF
CR
CCF3
CCF2
CCF1
CCF0
CMOD
CL
CH
CCAPM0
CCAP0L
CCAP0H
PCA_PWM0
CCAPM1
CCAP1L
CCAP1H
PCA_PWM1
CCAPM2
CCAP2L
CCAP2H
PCA_PWM2
CCAPM3
CCAP3L
CCAP3H
PCA_PWM3
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0xd8;
CCON^7;
CCON^6;
CCON^3;
CCON^2;
CCON^1;
CCON^0;
0xd9;
0xe9;
0xf9;
0xda;
0xea;
0xfa;
0xf2;
0xdb;
0xeb;
0xfb;
0xf3;
0xdc;
0xec;
0xfc;
0xf4;
0xdd;
0xed;
0xfd;
0xf5;
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
P10
=
P1^0;
void PCA_Isr() interrupt 7
{
if (CF)
{
CF = 0;
P10 = !P10;
}
}
深圳国芯人工智能有限公司
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 280 -
STC8G 系列技术手册
官方网站: 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;
CCON = 0x00;
CMOD = 0x09;
CR = 1;
EA = 1;
//PCA 时钟为系统时钟,使能 PCA 计时中断
//启动 PCA 计时器
while (1);
}
11.5.20 SPI中断
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
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
004BH
SPIISR
ORG
0100H
MOV
CPL
RETI
SPSTAT,#0C0H
P1.0
SPIISR:
深圳国芯人工智能有限公司
;清中断标志
;测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 281 -
STC8G 系列技术手册
官方网站: 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
SETB
MOV
SPCTL,#50H
SPSTAT,#0C0H
IE2,#ESPI
EA
SPDAT,#5AH
JMP
$
;使能 SPI 主机模式
;清中断标志
;使能 SPI 中断
;发送测试数据
END
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
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
P10
=
P1^0;
void SPI_Isr() interrupt 9
{
SPSTAT = 0xc0;
P10 = !P10;
}
深圳国芯人工智能有限公司
//清中断标志
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 282 -
STC8G 系列技术手册
官方网站: 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;
//使能 SPI 主机模式
//清中断标志
//使能 SPI 中断
SPCTL = 0x50;
SPSTAT = 0xc0;
IE2 = ESPI;
EA = 1;
SPDAT = 0x5a;
//发送测试数据
while (1);
}
11.5.21 CMP中断
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
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
00ABH
CMPISR
ORG
0100H
ANL
CPL
RETI
CMPCR1,#NOT 40H
P1.0
CMPISR:
;清中断标志
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 283 -
STC8G 系列技术手册
官方网站: 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
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
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
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
P10
=
P1^0;
void CMP_Isr() interrupt 21
{
CMPCR1 &= ~0x40;
P10 = !P10;
}
//清中断标志
//测试端口
void main()
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 284 -
STC8G 系列技术手册
官方网站: 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;
CMPCR2 = 0x00;
CMPCR1 = 0x80;
CMPCR1 |= 0x30;
CMPCR1 &= ~0x08;
CMPCR1 |= 0x04;
CMPCR1 |= 0x02;
EA = 1;
//使能比较器模块
//使能比较器边沿中断
//P3.6 为 CMP+输入脚
//P3.7 为 CMP-输入脚
//使能比较器输出
while (1);
}
11.5.22 PWM中断
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
PWMSET
PWMCFG01
DATA
DATA
0F1H
0F6H
PWM0CH
PWM0CL
PWM0CKS
EQU
EQU
EQU
0FF00H
0FF01H
0FF02H
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
00B3H
PWM0ISR
ORG
0100H
PWM0ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 285 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PUSH
PUSH
MOV
JNB
ANL
CPL
ACC
PSW
A,PWMCFG01
ACC.3,ISREXIT
PWMCFG01,#NOT 08H
P1.0
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
PWMSET,#01H
MOV
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#0FH
DPTR,#PWM0CKS
@DPTR,A
A,#01H
DPTR,#PWM0CH
@DPTR,A
A,#00H
DPTR,#PWM0CL
@DPTR,A
P_SW2,#00H
MOV
SETB
PWMCFG01,#05H
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;清中断标志
;测试端口
ISREXIT:
MAIN:
;使能 PWM0 模块(必须先使能模块后面的设置才有效)
;PWM0 时钟为系统时钟/16
;设置 PWM0 周期为 256 个 PWM0 时钟
;启动 PWM0 模块并使能 PWM0 计数器中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P_SW2
=
0xba;
sfr
sfr
PWMSET
PWMCFG01
=
=
0xF1;
0xF6;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 286 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
#define
#define
#define
PWM0CH
PWM0CL
PWM0CKS
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
P10
P11
=
=
P1^0;
P1^1;
技术支持: 13922829991
研发顾问: 13922805190
(*(unsigned char volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF01)
(*(unsigned char volatile xdata *)0xFF02)
void PWM0_Isr() interrupt 22
{
if (PWMCFG01 & 0x08)
{
PWMCFG01 &= ~0x08;
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;
PWMSET = 0x01;
P_SW2 = 0x80;
PWM0CKS = 0x0f;
PWM0CH = 0x01;
PWM0CL = 0x00;
P_SW2 = 0x00;
PWMCFG01 = 0x05;
EA = 1;
//使能 PWM0 模块(必须先使能模块后面的设置才有效)
//PWM0 时钟为系统时钟/16
//设置 PWM0 周期为 256 个 PWM0 时钟
//启动 PWM0 模块并使能 PWM0 计数器中断
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 287 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
11.5.23 I2C中断
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTXD
I2CRXD
XDATA
XDATA
XDATA
XDATA
XDATA
XDATA
XDATA
XDATA
0FE80H
0FE81H
0FE82H
0FE83H
0FE84H
0FE85H
0FE86H
0FE87H
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
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
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
I2CISR:
;清中断标志
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 288 -
STC8G 系列技术手册
官方网站: 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
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
SETB
P_SW2,#80H
A,#0C0H
DPTR,#I2CCFG
@DPTR,A
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 主机模式
;使能 I2C 中断
;发送起始命令
END
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
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
=
=
=
=
0xba;
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 289 -
STC8G 系列技术手册
sfr
sbit
官方网站: www.STCMCUDATA.com / www.STCMCU.com
P5M0
P10
=
=
void I2C_Isr() interrupt 24
{
_push_(P_SW2);
P_SW2 |= 0x80;
if (I2CMSST & 0x40)
{
I2CMSST &= ~0x40;
P10 = !P10;
}
_pop_(P_SW2);
}
技术支持: 13922829991
研发顾问: 13922805190
0xca;
P1^0;
//清中断标志
//测试端口
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;
P_SW2 = 0x80;
I2CMSCR = 0x81;
P_SW2 = 0x00;
//使能 I2C 主机模式
//使能 I2C 中断;
//发送起始命令
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 290 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12 定时器/计数器
STC8G 系列单片机内部设置了 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 可以当定
时器使用,也可以当串口的波特率发生器和可编程时钟输出。
12.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
- 291 -
STC8G 系列技术手册
T2L
官方网站: www.STCMCUDATA.com / www.STCMCU.com
定时器 2 低字节
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
D7H
国内分销商电话: 0513-5501 2928/2929/2966
0000,0000
传真: 0513-5501 2926/2956/2947
- 292 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.2 定时器 0/1
定时器 0/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 模式寄存器
符号
地址
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
- 293 -
STC8G 系列技术手册
官方网站: 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中。
1
1
16位自动重载模式
与模式0相同,产生不可屏蔽中断
定时器 0 计数寄存器
符号
地址
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位寄存器。
定时器 1 计数寄存器
符号
地址
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位寄存器。
辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
T0x12:定时器0速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 294 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
T1x12:定时器1速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
中断与时钟输出控制寄存器(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 口的电平自动发生翻转。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 295 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.3 定时器 2
辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
TR2:定时器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)
中断与时钟输出控制寄存器(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 口的电平自动发生翻转。
定时器 2 计数寄存器
符号
地址
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]中。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 296 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.4 定时器 3/4
定时器 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
TR4:定时器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 口的电平自动发生翻转。
TR3:定时器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 口的电平自动发生翻转。
定时器 3 计数寄存器
符号
地址
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]中。
定时器 4 计数寄存器
符号
地址
T4L
D3H
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
B2
B1
传真: 0513-5501 2926/2956/2947
B0
- 297 -
STC8G 系列技术手册
T4H
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
D2H
定时器/计数器 4 的工作模式固定为 16 位重载模式,T4L 和 T4H 组合成为一个 16 位寄存器,T4L 为低
字节,T4H 为高字节。当[T4H,T4L]中的 16 位计数值溢出时,系统会自动将内部 16 位重载寄存器中的
重载值装入[T4H,T4L]中。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 298 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.5 掉电唤醒定时器
内部掉电唤醒定时器是一个 15 位的计数器(由{WKTCH[6:0],WKTCL[7:0]}组成 15 位)
。用于唤醒
处于掉电模式的 MCU。
掉电唤醒定时器计数寄存器
符号
地址
WKTCL
AAH
WKTCH
ABH
B7
B6
B5
B4
B3
B2
B1
B0
WKTEN
WKTEN:掉电唤醒定时器的使能控制位
0:停用掉电唤醒定时器
1:启用掉电唤醒定时器
如果 STC8 系列单片机内置掉电唤醒专用定时器被允许(通过软件将 WKTCH 寄存器中的 WKTEN
位置 1),当 MCU 进入掉电模式/停机模式后,掉电唤醒专用定时器开始计数,当计数值与用户所设置的
值相等时,掉电唤醒专用定时器将 MCU 唤醒。MCU 唤醒后,程序从上次设置单片机进入掉电模式语句
的下一条语句开始往下执行。掉电唤醒之后,可以通过读 WKTCH 和 WKTCL 中的内容获取单片机在掉
电模式中的睡眠时间。
这里请注意:用户在寄存器{WKTCH[6:0],WKTCL[7:0]}中写入的值必须比实际计数值少 1。如用户
需计数 10 次,则将 9 写入寄存器{WKTCH[6:0],WKTCL[7:0]}中。同样,如果用户需计数 32767 次,则
。
(计数值 0 和计数值 32767 为内部保留值,用
应对{WKTCH[6:0],WKTCL[7:0]}写入 7FFEH(即 32766)
户不能使用)
内部掉电唤醒定时器有自己的内部时钟,掉电唤醒定时器计数一次的时间就是由该时钟决定的。内
部掉电唤醒定时器的时钟频率约为 32KHz,误差较大。用户可以通过读 RAM 区 F8H 和 F9H 的内容(F8H
存放频率的高字节,F9H 存放低字节)来获取内部掉电唤醒专用定时器出厂时所记录的时钟频率。
掉电唤醒专用定时器计数时间的计算公式如下所示:
(Fwt 为我们从 RAM 区 F8H 和 F9H 获取到的内
部掉电唤醒专用定时器的时钟频率)
掉电唤醒定时器定时时间 =
106×16×计数次数
Fwt
(微秒)
假设 Fwt=32KHz,则有:
{WKTCH[6:0],WKTCL[7:0]}
掉电唤醒专用定时器计数时间
0(内部保留)
1
106÷32K×16×(1+1) ≈ 1 毫秒
9
106÷32K×16×(1+9) ≈ 5 毫秒
99
106÷32K×16×(1+99) ≈ 50 毫秒
999
106÷32K×16×(1+999) ≈ 0.5 秒
4095
106÷32K×16×(1+4095) ≈ 2 秒
32766
106÷32K×16×(1+32766) ≈ 16 秒
32767(内部保留)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 299 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.6 范例程序
12.6.1
定时器 0(模式 0-16 位自动重载)
汇编代码
;测试工作频率为 11.0592MHz
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
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 300 -
STC8G 系列技术手册
官方网站: 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
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
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;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.2
定时器 0(模式 1-16 位不自动重载)
汇编代码
;测试工作频率为 11.0592MHz
P0M1
DATA
深圳国芯人工智能有限公司
093H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 301 -
STC8G 系列技术手册
P0M0
P1M1
P1M0
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
094H
091H
092H
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
P0M1
P0M0
深圳国芯人工智能有限公司
=
=
0x93;
0x94;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 302 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
TL0 = 0x66;
TH0 = 0xfc;
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;
//模式 1
//65536-11.0592M/12/1000
TMOD = 0x01;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.3
定时器 0(模式 2-8 位自动重载)
汇编代码
;测试工作频率为 11.0592MHz
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
093H
094H
091H
092H
095H
096H
0B1H
0B2H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 303 -
STC8G 系列技术手册
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 304 -
STC8G 系列技术手册
官方网站: 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;
//模式 2
//256-11.0592M/12/76K
TMOD = 0x02;
TL0 = 0xf4;
TH0 = 0xf4;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.4
定时器 0(模式 3-16 位自动重载不可屏蔽中断)
汇编代码
;测试工作频率为 11.0592MHz
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
000BH
TM0ISR
ORG
0100H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 305 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
TM0ISR:
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
$
;测试端口
MAIN:
;
;模式 3
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
;不受 EA 控制
END
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;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
//测试端口
void main()
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 306 -
STC8G 系列技术手册
官方网站: 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;
//
//模式 3
//65536-11.0592M/12/1000
TMOD = 0x03;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
//不受 EA 控制
while (1);
}
12.6.5
定时器 0(外部计数-扩展T0 为外部下降沿中断)
汇编代码
;测试工作频率为 11.0592MHz
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
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
TM0ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 307 -
STC8G 系列技术手册
官方网站: 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
SETB
SETB
SETB
TMOD,#04H
TL0,#0FFH
TH0,#0FFH
TR0
ET0
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;外部计数模式
;启动定时器
;使能定时器中断
END
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;
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 308 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P5M1 = 0x00;
//外部计数模式
TMOD = 0x04;
TL0 = 0xff;
TH0 = 0xff;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.6
定时器 0(测量脉宽-INT0 高电平宽度)
汇编代码
;测试工作频率为 11.0592MHz
AUXR
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8EH
093H
094H
091H
092H
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
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
AUXR,#80H
INT0ISR:
;TL0 为测量值低字节
;TH0 为测量值低高字节
MAIN:
深圳国芯人工智能有限公司
;1T 模式
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 309 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
MOV
JB
SETB
SETB
SETB
SETB
TMOD,#08H
TL0,#00H
TH0,#00H
INT0,$
TR0
IT0
EX0
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 GATE,INT0 为 1 时使能计时
;等待 INT0 为低
;启动定时器
;使能 INT0 下降沿中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
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;
void INT0_Isr() interrupt 0
{
P0 = TL0; //TL0 为测量值低字节(会有约 10 个时钟的误差)
P1 = TH0; //TH0 为测量值低高字节
}
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;
AUXR = 0x80;
TMOD = 0x08;
TL0 = 0x00;
深圳国芯人工智能有限公司
//1T 模式
//使能 GATE,INT0 为 1 时使能计时
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 310 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
TH0 = 0x00;
while (INT0);
TR0 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
技术支持: 13922829991
研发顾问: 13922805190
//等待 INT0 为低
//启动定时器
//使能 INT0 下降沿中断
while (1);
}
12.6.7
定时器 0(时钟分频输出)
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8FH
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
MOV
SETB
MOV
TMOD,#00H
TL0,#66H
TH0,#0FCH
TR0
INTCLKO,#01H
JMP
$
MAIN:
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 311 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
INTCLKO
=
0x8f;
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;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
INTCLKO = 0x01;
//启动定时器
//使能时钟输出
while (1);
}
12.6.8
定时器 1(模式 0-16 位自动重载)
汇编代码
;测试工作频率为 11.0592MHz
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
093H
094H
091H
092H
095H
096H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 312 -
STC8G 系列技术手册
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
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
$
技术支持: 13922829991
研发顾问: 13922805190
TM1ISR:
;测试端口
MAIN:
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 313 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
P4M0
P5M1
P5M0
=
=
=
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
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;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.9
定时器 1(模式 1-16 位不自动重载)
汇编代码
;测试工作频率为 11.0592MHz
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
001BH
TM1ISR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 314 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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
$
技术支持: 13922829991
研发顾问: 13922805190
TM1ISR:
;重设定时参数
;测试端口
MAIN:
;模式 1
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
TL1 = 0x66;
深圳国芯人工智能有限公司
//重设定时参数
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 315 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
TH1 = 0xfc;
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;
//模式 1
//65536-11.0592M/12/1000
TMOD = 0x10;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.10 定时器 1(模式 2-8 位自动重载)
汇编代码
;测试工作频率为 11.0592MHz
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
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
TM1ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 316 -
STC8G 系列技术手册
官方网站: 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
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#20H
TL1,#0F4H
TH1,#0F4H
TR1
ET1
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;模式 2
;256-11.0592M/12/76K
;启动定时器
;使能定时器中断
END
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;
sbit
P10
=
P1^0;
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 317 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 2
//256-11.0592M/12/76K
TMOD = 0x20;
TL1 = 0xf4;
TH1 = 0xf4;
TR1 = 1;
ET1 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
12.6.11 定时器 1(外部计数-扩展T1 为外部下降沿中断)
汇编代码
;测试工作频率为 11.0592MHz
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
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
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
TM1ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 318 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#40H
TL1,#0FFH
TH1,#0FFH
TR1
ET1
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;外部计数模式
;启动定时器
;使能定时器中断
END
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;
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;
深圳国芯人工智能有限公司
//外部计数模式
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 319 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//启动定时器
//使能定时器中断
TR1 = 1;
ET1 = 1;
EA = 1;
while (1);
}
12.6.12 定时器 1(测量脉宽-INT1 高电平宽度)
汇编代码
;测试工作频率为 11.0592MHz
AUXR
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8EH
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
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
AUXR,#40H
TMOD,#80H
TL1,#00H
TH1,#00H
INT1,$
TR1
INT1ISR:
;TL1 为测量值低字节
;TH1 为测量值低高字节
MAIN:
深圳国芯人工智能有限公司
;1T 模式
;使能 GATE,INT1 为 1 时使能计时
;等待 INT1 为低
;启动定时器
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 320 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
SETB
SETB
SETB
IT1
EX1
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 INT1 下降沿中断
END
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;
sfr
AUXR
=
0x8e;
void INT1_Isr() interrupt 2
{
P0 = TL1;
P1 = TH1;
}
//TL1 为测量值低字节(会有约 11 个时钟的误差)
//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;
AUXR = 0x40;
TMOD = 0x80;
TL1 = 0x00;
TH1 = 0x00;
while (INT1);
TR1 = 1;
IT1 = 1;
EX1 = 1;
深圳国芯人工智能有限公司
//1T 模式
//使能 GATE,INT1 为 1 时使能计时
//等待 INT1 为低
//启动定时器
//使能 INT1 下降沿中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 321 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
EA = 1;
while (1);
}
12.6.13 定时器 1(时钟分频输出)
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
8FH
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
MOV
SETB
MOV
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
INTCLKO,#02H
JMP
$
MAIN:
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 322 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#include "reg51.h"
#include "intrins.h"
sfr
INTCLKO
=
0x8f;
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;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
INTCLKO = 0x02;
//启动定时器
//使能时钟输出
while (1);
}
12.6.14 定时器 1(模式 0)做串口 1 波特率发生器
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
DATA
DATA
DATA
DATA
093H
094H
091H
092H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 323 -
STC8G 系列技术手册
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
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
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
深圳国芯人工智能有限公司
A
A,@A+DPTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 324 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
JZ
LCALL
INC
JMP
技术支持: 13922829991
研发顾问: 13922805190
SENDEND
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
AUXR
=
深圳国芯人工智能有限公司
0x8e;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 325 -
STC8G 系列技术手册
官方网站: 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 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)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSEND(*p++);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 326 -
STC8G 系列技术手册
官方网站: 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();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
12.6.15 定时器 1(模式 2)做串口 1 波特率发生器
汇编代码
;测试工作频率为 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
ORG
0000H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 327 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
LJMP
ORG
LJMP
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:
MOV
MOV
深圳国芯人工智能有限公司
SP, #5FH
P0M0, #00H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 328 -
STC8G 系列技术手册
官方网站: 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
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
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 329 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
P5M1
P5M0
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
=
=
技术支持: 13922829991
研发顾问: 13922805190
0xc9;
0xca;
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)
{
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 330 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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;
}
}
}
12.6.16 定时器 2(16 位自动重载)
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
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
0063H
TM2ISR
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T2IF
TM2ISR:
深圳国芯人工智能有限公司
;测试端口
;清中断标志
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 331 -
STC8G 系列技术手册
官方网站: 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
SETB
T2L,#66H
T2H,#0FCH
AUXR,#10H
IE2,#ET2
EA
JMP
$
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
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
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
P10
=
P1^0;
void TM2_Isr() interrupt 12
{
P10 = !P10;
深圳国芯人工智能有限公司
=
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0xef;
0x01
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 332 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//清中断标志
AUXINTIF &= ~T2IF;
}
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);
}
12.6.17 定时器 2(外部计数-扩展T2 为外部下降沿中断)
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
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
0063H
TM2ISR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 333 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T2IF
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,#0FFH
T2H,#0FFH
AUXR,#18H
IE2,#ET2
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM2ISR:
;测试端口
;清中断标志
MAIN:
;设置外部计数模式并启动定时器
;使能定时器中断
END
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
深圳国芯人工智能有限公司
=
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0xef;
0x01
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 334 -
STC8G 系列技术手册
sbit
官方网站: www.STCMCUDATA.com / www.STCMCU.com
P10
=
技术支持: 13922829991
研发顾问: 13922805190
P1^0;
void TM2_Isr() interrupt 12
{
P10 = !P10;
AUXINTIF &= ~T2IF;
}
//测试端口
//清中断标志
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 = 0xff;
T2H = 0xff;
AUXR = 0x18;
IE2 = ET2;
EA = 1;
//设置外部计数模式并启动定时器
//使能定时器中断
while (1);
}
12.6.18 定时器 2(时钟分频输出)
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
INTCLKO
DATA
DATA
DATA
DATA
0D7H
0D6H
8EH
8FH
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 335 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
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
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 336 -
STC8G 系列技术手册
官方网站: 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);
}
12.6.19 定时器 2 做串口 1 波特率发生器
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
DATA
DATA
DATA
8EH
0D6H
0D7H
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
JNB
RI,UARTISR_EXIT
;16 bytes
UART_ISR:
CHKRI:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 337 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
技术支持: 13922829991
研发顾问: 13922805190
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
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 338 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
LOOP:
STRING:
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
END
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)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 339 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 340 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
}
}
12.6.20 定时器 2 做串口 2 波特率发生器
汇编代码
;测试工作频率为 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
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
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
JNB
ANL
MOV
ANL
ADD
MOV
MOV
ACC.0,UART2ISR_EXIT
S2CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S2BUF
;16 bytes
UART2_ISR:
CHKRI:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 341 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
INC
UART2ISR_EXIT:
POP
POP
RETI
技术支持: 13922829991
研发顾问: 13922805190
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:
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
A,RPTR
A,WPTR
A,#0FH
LOOP
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 342 -
STC8G 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART2_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
END
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
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 Uart2Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
busy = 0;
}
if (S2CON & 0x01)
{
S2CON &= ~0x01;
buffer[wptr++] = S2BUF;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 343 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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++);
}
}
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;
}
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 344 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.6.21 定时器 2 做串口 3 波特率发生器
汇编代码
;测试工作频率为 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
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
;16 bytes
UART3_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART3ISR_EXIT:
POP
深圳国芯人工智能有限公司
ACC.0,UART3ISR_EXIT
S3CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S3BUF
WPTR
PSW
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 345 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
POP
RETI
ACC
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
技术支持: 13922829991
研发顾问: 13922805190
UART3_INIT:
;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:
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
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 346 -
STC8G 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
LCALL
INC
JMP
R0,A
A,@R0
UART3_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
END
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;
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 347 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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++);
}
}
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;
}
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 348 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.6.22 定时器 2 做串口 4 波特率发生器
汇编代码
;测试工作频率为 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
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
;16 bytes
UART4_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART4ISR_EXIT:
POP
POP
深圳国芯人工智能有限公司
ACC.0,UART4ISR_EXIT
S4CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S4BUF
WPTR
PSW
ACC
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 349 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RETI
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
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
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
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 350 -
STC8G 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
LCALL
INC
JMP
A,@R0
UART4_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
END
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;
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 351 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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;
}
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;
}
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 352 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
12.6.23 定时器 3(16 位自动重载)
汇编代码
;测试工作频率为 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
ANL
RETI
P1.0
AUXINTIF,#NOT T3IF
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
TM3ISR:
;测试端口
;清中断标志
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 353 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
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
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;
AUXINTIF &= ~T3IF;
}
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
//测试端口
//清中断标志
void main()
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 354 -
STC8G 系列技术手册
官方网站: 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;
T3L = 0x66;
T3H = 0xfc;
T4T3M = 0x08;
IE2 = ET3;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
12.6.24 定时器 3(外部计数-扩展T3 为外部下降沿中断)
汇编代码
;测试工作频率为 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
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
- 355 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
LJMP
ORG
LJMP
MAIN
009BH
TM3ISR
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T3IF
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
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
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
=
=
=
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 356 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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;
AUXINTIF &= ~T3IF;
}
技术支持: 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);
}
12.6.25 定时器 3(时钟分频输出)
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 357 -
STC8G 系列技术手册
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
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
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
P1M1
P1M0
P0M1
P0M0
=
=
=
=
0x91;
0x92;
0x93;
0x94;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 358 -
STC8G 系列技术手册
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
官方网站: www.STCMCUDATA.com / www.STCMCU.com
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
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;
T3L = 0x66;
T3H = 0xfc;
T4T3M = 0x09;
//65536-11.0592M/12/1000
//使能时钟输出并启动定时器
while (1);
}
12.6.26 定时器 3 做串口 3 波特率发生器
汇编代码
;测试工作频率为 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
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 359 -
STC8G 系列技术手册
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
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
深圳国芯人工智能有限公司
A
A,@A+DPTR
SEND3END
UART3_SEND
DPTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 360 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
JMP
技术支持: 13922829991
研发顾问: 13922805190
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
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
- 361 -
STC8G 系列技术手册
官方网站: 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
- 362 -
STC8G 系列技术手册
官方网站: 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;
}
}
}
12.6.27 定时器 4(16 位自动重载)
汇编代码
;测试工作频率为 11.0592MHz
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
AUXR
IE2
ET2
ET3
ET4
AUXINTIF
T2IF
T3IF
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
EQU
EQU
EQU
DATA
EQU
EQU
深圳国芯人工智能有限公司
0D1H
0D3H
0D2H
0D5H
0D4H
0D7H
0D6H
8EH
0AFH
04H
20H
40H
0EFH
01H
02H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 363 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
T4IF
EQU
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
ANL
RETI
P1.0
AUXINTIF,#NOT T4IF
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,#80H
IE2,#ET4
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
TM4ISR:
;测试端口
;清中断标志
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
T4T3M
深圳国芯人工智能有限公司
=
0xd1;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 364 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
#define
#define
#define
sfr
#define
#define
#define
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;
AUXINTIF &= ~T4IF;
}
技术支持: 13922829991
研发顾问: 13922805190
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;
P5M0 = 0x00;
P5M1 = 0x00;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0x80;
IE2 = ET4;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 365 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
12.6.28 定时器 4(外部计数-扩展T4 为外部下降沿中断)
汇编代码
;测试工作频率为 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
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T4IF
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
TM4ISR:
;测试端口
;清中断标志
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 366 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
MOV
MOV
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
;65536-11.0592M/12/1000
;设置外部计数模式并启动定时器
;使能定时器中断
END
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;
AUXINTIF &= ~T4IF;
}
深圳国芯人工智能有限公司
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0x8e;
0xaf;
0x04
0x20
0x40
0xef;
0x01
0x02
0x04
//测试端口
//清中断标志
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 367 -
STC8G 系列技术手册
官方网站: 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;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0xc0;
IE2 = ET4;
EA = 1;
//65536-11.0592M/12/1000
//设置外部计数模式并启动定时器
//使能定时器中断
while (1);
}
12.6.29 定时器 4(时钟分频输出)
汇编代码
;测试工作频率为 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
- 368 -
STC8G 系列技术手册
官方网站: 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
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
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 369 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P4M1 = 0x00;
P5M0 = 0x00;
P3M1 = 0x00;
T4L = 0x66;
T4H = 0xfc;
T4T3M = 0x90;
//65536-11.0592M/12/1000
//使能时钟输出并启动定时器
while (1);
}
12.6.30 定时器 4 做串口 4 波特率发生器
汇编代码
;测试工作频率为 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
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
A,S4CON
;16 bytes
UART4_ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 370 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
JNB
ANL
CLR
技术支持: 13922829991
研发顾问: 13922805190
ACC.1,CHKRI
S4CON,#NOT 02H
BUSY
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
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
UART4_INIT
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 371 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
SETB
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
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;
bit
busy;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 372 -
STC8G 系列技术手册
char
char
char
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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;
P5M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 373 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
Uart4Init();
IE2 = 0x10;
EA = 1;
Uart4SENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart4SEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 374 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13 串口通信
STC8G 系列单片机具有 4 个全双工异步串行通信接口。每个串行口由 2 个数据缓冲器、一个移位寄
存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由 2 个互相独立的接
收、发送缓冲器构成,可以同时发送和接收数据。
STC8G 系列单片机的串口 1 有 4 种工作方式,其中两种方式的波特率是可变的,另两种是固定的,
以供不同应用场合选用。串口 2/串口 3/串口 4 都只有两种工作方式,这两种方式的波特率都是可变的。
用户可用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行程
序处理,使用十分灵活。
串口 1、串口 2、串口 3、串口 4 的通讯口均可以通过功能管脚的切换功能切换到多组端口,从而可
以将一个通讯口分时复用为多个通讯口。
13.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
传真: 0513-5501 2926/2956/2947
IDL
0011,0000
S1ST2
0000,0001
- 375 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.2 串口 1
串口 1 控制寄存器
符号
地址
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 必须由软件清零。
串口 1 数据寄存器
符号
地址
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
- 376 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
电源管理寄存器
符号
地址
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 功能,即为帧错误检测标志位。
辅助寄存器 1
符号
地址
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 作为波特率发射器
13.2.1
串口 1 模式 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
- 377 -
STC8G 系列技术手册
官方网站: 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
波特率 =
13.2.2
SYSclk
12
SYSclk
2
串口 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
- 378 -
STC8G 系列技术手册
官方网站: 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
- 379 -
STC8G 系列技术手册
官方网站: 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
- 380 -
STC8G 系列技术手册
13.2.3
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口 1 模式 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)
13.2.4
串口 1 模式 3
当 SM0、SM1 两位为 11 时,串行口 1 工作在模式 3。串行通信模式 3 为 9 位数据异步通信 UART
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 381 -
STC8G 系列技术手册
官方网站: 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 的波特率计算公式。
13.2.5
自动地址识别
串口 1 从机地址控制寄存器
符号
地址
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
- 382 -
STC8G 系列技术手册
官方网站: 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
- 383 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.3 串口 2
串口 2 控制寄存器
符号
地址
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 必须由软件清零。
串口 2 数据寄存器
符号
地址
S2BUF
9BH
B7
B6
B5
B4
B3
B2
B1
B0
S2BUF:串口 1 数据接收/发送缓冲区。S2BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S2BUF 进行读操作,实际是读取串口接收缓冲区,对 S2BUF 进行写操作则是触发串口开始发送
数据。
13.3.1
串口 2 模式 0
串行口 2 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位,
8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD2 为数据发送口,
RxD2 为数据接收口,串行口全双工接受/发送。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 384 -
STC8G 系列技术手册
官方网站: 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
13.3.2
SYSclk
12×4×波特率
串口 2 模式 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
- 385 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
串口 2 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 386 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.4 串口 3
串口 3 控制寄存器
符号
地址
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 必须由软件清零。
串口 3 数据寄存器
符号
地址
S3BUF
ADH
B7
B6
B5
B4
B3
B2
B1
B0
S3BUF:串口 1 数据接收/发送缓冲区。S3BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S3BUF 进行读操作,实际是读取串口接收缓冲区,对 S3BUF 进行写操作则是触发串口开始发送
数据。
13.4.1
串口 3 模式 0
串行口 3 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位,
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 387 -
STC8G 系列技术手册
官方网站: 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
S3REN=1, S3RI=0
RxD3
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
13.4.2
SYSclk
12×4×波特率
串口 3 模式 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
- 388 -
STC8G 系列技术手册
官方网站: 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
- 389 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.5 串口 4
串口 4 控制寄存器
符号
地址
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 必须由软件清零。
串口 4 数据寄存器
符号
地址
S4BUF
85H
B7
B6
B5
B4
B3
B2
B1
B0
S4BUF:串口 1 数据接收/发送缓冲区。S4BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S4BUF 进行读操作,实际是读取串口接收缓冲区,对 S4BUF 进行写操作则是触发串口开始发送
数据。
13.5.1
串口 4 模式 0
串行口 4 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位,
8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD4 为数据发送口,
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 390 -
STC8G 系列技术手册
官方网站: 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
S4REN=1, S4RI=0
RxD4
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
13.5.2
SYSclk
12×4×波特率
串口 4 模式 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
- 391 -
STC8G 系列技术手册
官方网站: 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
- 392 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.6 串口注意事项
关于串口中断请求有如下问题需要注意:(串口 1、串口 2、串口 3、串口 4 均类似,下面以串口 1
为例进行说明)
8 位数据模式时,发送完成整个停止位后产生 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 位数据模式时,发送完成整个第 9 位数据位后产生 TI 中断请求,如下图所示:
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
TI
发送数据(9位数据)
9 位数据模式时,接收完成一半个第 9 位数据位后产生 RI 中断请求,如下图所示:
写SCON
RxD
REN=1,RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
RB8
Stop
RI
接收数据(9位数据)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 393 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
13.7 范例程序
13.7.1
串口 1 使用定时器 2 做波特率发生器
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
DATA
DATA
DATA
8EH
0D6H
0D7H
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
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
深圳国芯人工智能有限公司
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 394 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RETI
UART_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
SCON,#50H
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
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
ANL
JZ
MOV
ANL
ADD
MOV
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 395 -
STC8G 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
LCALL
INC
JMP
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
研发顾问: 13922805190
END
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 396 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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;
}
}
}
13.7.2
串口 1 使用定时器 1(模式 0)做波特率发生器
汇编代码
;测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 397 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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
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
SETB
MOV
CLR
MOV
MOV
深圳国芯人工智能有限公司
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 398 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
RET
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
- 399 -
STC8G 系列技术手册
官方网站: 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
- 400 -
STC8G 系列技术手册
官方网站: 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;
}
}
}
13.7.3
串口 1 使用定时器 1(模式 2)做波特率发生器
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
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
- 401 -
STC8G 系列技术手册
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
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
深圳国芯人工智能有限公司
A
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 402 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOVC
JZ
LCALL
INC
JMP
技术支持: 13922829991
研发顾问: 13922805190
A,@A+DPTR
SENDEND
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(256 - FOSC / 115200 / 32)
sfr
AUXR
=
深圳国芯人工智能有限公司
0x8e;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 403 -
STC8G 系列技术手册
官方网站: 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 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)
{
while (*p)
{
UartSEND(*p++);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 404 -
STC8G 系列技术手册
官方网站: 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();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
13.7.4
串口 2 使用定时器 2 做波特率发生器
汇编代码
;测试工作频率为 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
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
- 405 -
STC8G 系列技术手册
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
DATA
DATA
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
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:
深圳国芯人工智能有限公司
A
A,@A+DPTR
SEND2END
UART2_SEND
DPTR
UART2_SENDSTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 406 -
STC8G 系列技术手册
官方网站: 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
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
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;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 407 -
STC8G 系列技术手册
官方网站: 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 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
- 408 -
STC8G 系列技术手册
官方网站: 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;
}
}
}
13.7.5
串口 3 使用定时器 2 做波特率发生器
汇编代码
;测试工作频率为 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
- 409 -
STC8G 系列技术手册
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
- 410 -
STC8G 系列技术手册
官方网站: 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
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
P0M1
P0M0
P1M1
=
=
=
0x93;
0x94;
0x91;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 411 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
=
=
=
=
=
=
=
=
=
技术支持: 13922829991
研发顾问: 13922805190
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 = 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++);
}
}
void main()
{
P0M0 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 412 -
STC8G 系列技术手册
官方网站: 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;
Uart3Init();
IE2 = 0x08;
EA = 1;
Uart3SENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart3SEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
13.7.6
串口 3 使用定时器 3 做波特率发生器
汇编代码
;测试工作频率为 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
P4M1
P4M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 413 -
STC8G 系列技术手册
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
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:
RET
深圳国芯人工智能有限公司
A
A,@A+DPTR
SEND3END
UART3_SEND
DPTR
UART3_SENDSTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 414 -
STC8G 系列技术手册
官方网站: 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
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
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
T4T3M
T4L
T4H
T3L
T3H
T2L
T2H
S3CON
S3BUF
=
=
=
=
=
=
=
=
=
深圳国芯人工智能有限公司
0xd1;
0xd3;
0xd2;
0xd5;
0xd4;
0xd7;
0xd6;
0xac;
0xad;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 415 -
STC8G 系列技术手册
官方网站: 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 = 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
- 416 -
STC8G 系列技术手册
官方网站: 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;
}
}
}
13.7.7
串口 4 使用定时器 2 做波特率发生器
汇编代码
;测试工作频率为 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
P1M0
P2M1
P2M0
P3M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 417 -
STC8G 系列技术手册
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
DATA
DATA
DATA
DATA
DATA
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
JZ
LCALL
INC
JMP
深圳国芯人工智能有限公司
A
A,@A+DPTR
SEND4END
UART4_SEND
DPTR
UART4_SENDSTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 418 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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
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;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 419 -
STC8G 系列技术手册
官方网站: 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 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;
}
void Uart4SendStr(char *p)
{
while (*p)
{
Uart4SEND(*p++);
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 420 -
STC8G 系列技术手册
官方网站: 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;
Uart4Init();
IE2 = 0x10;
EA = 1;
Uart4SENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart4SEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
13.7.8
串口 4 使用定时器 4 做波特率发生器
汇编代码
;测试工作频率为 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
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 421 -
STC8G 系列技术手册
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
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,#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
深圳国芯人工智能有限公司
A
A,@A+DPTR
SEND4END
UART4_SEND
DPTR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 422 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
JMP
技术支持: 13922829991
研发顾问: 13922805190
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
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
- 423 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
sfr
sfr
sfr
T2L
T2H
S4CON
S4BUF
IE2
=
=
=
=
=
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)
{
while (busy);
busy = 1;
S4BUF = dat;
}
void Uart4SendStr(char *p)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 424 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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;
}
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 425 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14 比较器,掉电检测,内部参考电压
STC8G 系列单片机内部集成了一个比较器。比较器的正极可以是 P3.7 端口或者 ADC 的模拟输入通
。
道,而负极可以 P3.6 端口或者是内部 BandGap 经过 OP 后的 REFV 电压(内部固定比较电压)
比较器内部有可程序控制的两级滤波:模拟滤波和数字滤波。模拟滤波可以过滤掉比较输入信号中
的毛刺信号,数字滤波可以等待输入信号更加稳定后再进行比较。比较结果可直接通过读取内部寄存器
位获得,也可将比较器结果正向或反向输出到外部端口。将比较结果输出到外部端口可用作外部事件的
触发信号和反馈信号,可扩大比较的应用范围。
14.1 比较器内部结构图
P3.7
0
ADCIN
1
CMPRES
模拟滤波
0.1us
PIS
0
LCC
1
内部REFV
0
P3.6
1
DISFLT
数字滤波
延时LCDTY个
CPU 时钟
CMPO
E
PIE
0
P3.4
1
P4.1
CMPO_S
CMPIF
NIS
NIE
比较器内部结构
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 426 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.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
比较器控制寄存器 1
符号
地址
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 的模拟输入端作为比较器正极输入源。
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 是经过数字滤波后的输出信号,而不是比较器的直接输出结果。
比较器控制寄存器 2
符号
地址
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 输出高电平,反之输出低电平。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 427 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
DISFLT:模拟滤波功能控制
0:使能 0.1us 模拟滤波功能
1:关闭 0.1us 模拟滤波功能,可略微提高比较器的比较速度。
LCDTY[5:0]:数字滤波功能控制
数字滤波功能即为数字信号去抖动功能。当比较结果发生上升沿或者下降沿变化时,比较器侦测变
化后的信号必须维持 LCDTY 所设置的 CPU 时钟数不发生变化,才认为数据变化是有效的;否
则将视同信号无变化。
若 LCDTY 设置为 0 时表示关闭数字滤波功能。
比较器输出
CMPRES
LCDTY[5:0]
个CPU时钟
比较器输出
CMPRES
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 428 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
14.3 范例程序
14.3.1
比较器的使用(中断方式)
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
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
00ABH
CMPISR
ORG
0100H
PUSH
ANL
MOV
JB
ACC
CMPCR1,#NOT 40H
A,CMPCR1
ACC.0,RSING
CPL
POP
RETI
P1.0
ACC
;下降沿中断测试端口
CPL
POP
RETI
P1.1
ACC
;上升沿中断测试端口
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
CMPISR:
;清中断标志
FALLING:
RSING:
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 429 -
STC8G 系列技术手册
;
;
;
;
;
;
;
;
;
;
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
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
$
技术支持: 13922829991
研发顾问: 13922805190
;比较器正向输出
;比较器反向输出
;禁止 0.1us 滤波
;使能 0.1us 滤波
;比较器结果直接输出
;比较器结果经过 16 个去抖时钟后输出
;使能比较器边沿中断
;禁止比较器上升沿中断
;使能比较器上升沿中断
;禁止比较器下降沿中断
;使能比较器下降沿中断
;P3.7 为 CMP+输入脚
;ADC 输入脚为 CMP+输入教
;内部参考电压为 CMP-输入脚
;P3.6 为 CMP-输入脚
;禁止比较器输出
;使能比较器输出
;使能比较器模块
END
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
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
P10
P11
=
=
P1^0;
P1^1;
void CMP_Isr() interrupt 21
{
CMPCR1 &= ~0x40;
if (CMPCR1 & 0x01)
{
深圳国芯人工智能有限公司
//清中断标志
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 430 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
P10 = !P10;
//下降沿中断测试端口
P11 = !P11;
//上升沿中断测试端口
研发顾问: 13922805190
}
else
{
}
}
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+输入教
//内部参考电压为 CMP-输入脚
//P3.6 为 CMP-输入脚
//禁止比较器输出
//使能比较器输出
//使能比较器模块
EA = 1;
while (1);
}
14.3.2
比较器的使用(查询方式)
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
P0M1
DATA
093H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 431 -
STC8G 系列技术手册
P0M0
P1M1
P1M0
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
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
ANL
ORL
ANL
ORL
ANL
ORL
MOV
ORL
ANL
ORL
ANL
ORL
ANL
ORL
ANL
ORL
ANL
ORL
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
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
MAIN:
;
;
;
;
;
;
;
;
;
;
;比较器正向输出
;比较器反向输出
;禁止 0.1us 滤波
;使能 0.1us 滤波
;比较器结果直接输出
;比较器结果经过 16 个去抖时钟后输出
;使能比较器边沿中断
;禁止比较器上升沿中断
;使能比较器上升沿中断
;禁止比较器下降沿中断
;使能比较器下降沿中断
;P3.7 为 CMP+输入脚
;ADC 输入脚为 CMP+输入教
;内部参考电压为 CMP-输入脚
;P3.6 为 CMP-输入脚
;禁止比较器输出
;使能比较器输出
;使能比较器模块
LOOP:
;读取比较器比较结果
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 432 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
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
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
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;
深圳国芯人工智能有限公司
//比较器正向输出
//比较器反向输出
//禁止 0.1us 滤波
//使能 0.1us 滤波
//比较器结果直接输出
//比较器结果经过 16 个去抖时钟后输出
//使能比较器边沿中断
//禁止比较器上升沿中断
//使能比较器上升沿中断
//禁止比较器下降沿中断
//使能比较器下降沿中断
//P3.7 为 CMP+输入脚
//ADC 输入脚为 CMP+输入教
//内部参考电压为 CMP-输入脚
//P3.6 为 CMP-输入脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 433 -
STC8G 系列技术手册
//
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//禁止比较器输出
//使能比较器输出
//使能比较器模块
CMPCR1 &= ~0x02;
CMPCR1 |= 0x02;
CMPCR1 |= 0x80;
while (1)
{
P10 = CMPCR1 & 0x01;
}
//读取比较器比较结果
}
14.3.3
比较器作外部掉电检测
Vcc
7805
Vin
470u
104
1
2
3
4
5
6
7
8
9
10
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
Vcc
P5.5
Gnd
P1.1
P1.0
CMP+ / P3.7
CMP- / P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
20
19
18
17
16
15
14
13
12
11
R1
100K以上
R2
?
STC8G1K08
上图中电阻 R1 和 R2 对稳压块 7805 的前端电压进行分压,分压后的电压作为比较器 CMP+的外部
输入与内部参考电压进行比较。
一般当交流电在 220V 时,稳压块 7805 前端的直流电压为 11V,但当交流电压降到 160V 时,稳压
块 7805 前端的直留电压为 8.5V。当稳压块 7805 前端的直留电压低于或等于 8.5V 时,该前端输入的直
留电压被电阻 R1 和 R2 分压到比较器正极输入端 CMP+,CMP+端输入电压低于内部参考电压,此时可
产生比较器中断,这样在掉电检测时就有充足的时间将数据保存到 EEPROM 中。当稳压块 7805 前端的
CMP+
直留电压高高于 8.5V 时,该前端输入的直流电压被电阻 R1 和 R2 分压到比较器正极输入端 CMP+,
端输入电压高于内部参考电压,此时 CPU 可继续正常工作。
内部参考电压即为内部 BandGap 经过 OP 后的电压 REFV (芯片在出厂时,内部参考电压调整为
1.19V)。具体的数值要通过读取内部参考电压在内部RAM区或者Flash 程序存储器(ROM)区所占用
的地址的值获得。对于STC8 系列,内部参考电压值在RAM和Flash 程序存储器(ROM)中的存储地址
请参考“7.3 章 存储器中的特殊参数”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 434 -
STC8G 系列技术手册
14.3.4
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
比较器检测工作电压(电池电压)
R0
100K
Vcc
47u
C?
1
2
3
4
5
6
7
8
9
10
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
Vcc
P5.5
Gnd
P1.1
P1.0
CMP+/P3.7
CMP-/P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
20
19
18
17
16
15
14
13
12
11
R6
36.5K (约5.0V)
R5
42.2K (约4.5V)
R4
49.9K (约4.0V)
R3
61.9K (约3.5V)
R2
80.6K (约3.0V)
R1
115K (约2.5V)
STC8G1K08
C?
系统时钟10MHz
103(0.01uF)
上图中,利用电阻分压的原理可以近似的测量出 MCU 的工作电压(选通的通道,MCU 的 I/O 口输
。
出低电平,端口电压值接近 Gnd,未选通的通道,MCU 的 I/O 口输出开漏模式的高,不影响其他通道)
比较器的负端选择内部参考电压,正端选择通过电阻分压后输入到 CMP+管脚的电压值。
初始化时 P1.5~P1.0 口均设置为开漏模式,并输出高。首先 P1.0 口输出低电平,此时若 Vcc 电压低
于 2.5V 则比较器的比较值为 0,反之若 Vcc 电压高于 2.5V 则比较器的比较值为 1;
若确定 Vcc 高于 2.5V,则将 P1.0 口输出高,P1.1 口输出低电平,此时若 Vcc 电压低于 3.0V 则比较
器的比较值为 0,反之若 Vcc 电压高于 3.0V 则比较器的比较值为 1;
若确定 Vcc 高于 3.0V,则将 P1.1 口输出高,P1.2 口输出低电平,此时若 Vcc 电压低于 3.5V 则比较
器的比较值为 0,反之若 Vcc 电压高于 3.5V 则比较器的比较值为 1;
若确定 Vcc 高于 3.5V,则将 P1.2 口输出高,P1.3 口输出低电平,此时若 Vcc 电压低于 4.0V 则比较
器的比较值为 0,反之若 Vcc 电压高于 4.0V 则比较器的比较值为 1;
若确定 Vcc 高于 4.0V,则将 P1.3 口输出高,P1.4 口输出低电平,此时若 Vcc 电压低于 4.5V 则比较
器的比较值为 0,反之若 Vcc 电压高于 4.5V 则比较器的比较值为 1;
若确定 Vcc 高于 4.5V,则将 P1.4 口输出高,P1.5 口输出低电平,此时若 Vcc 电压低于 5.0V 则比较
器的比较值为 0,反之若 Vcc 电压高于 5.0V 则比较器的比较值为 1。
汇编代码
;测试工作频率为 11.0592MHz
CMPCR1
CMPCR2
DATA
DATA
深圳国芯人工智能有限公司
0E6H
0E7H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 435 -
STC8G 系列技术手册
P2M0
P2M1
P0M1
P0M0
P1M1
P1M0
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
DATA
DATA
096H
095H
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
MOV
MOV
MOV
ANL
ANL
ANL
ORL
P1M0,#00111111B
P1M1,#00111111B
P1,#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
R0,#00000000B
P1,#11111110B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00000001B
P1,#11111101B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00000011B
P1,#11111011B
DELAY
A,CMPCR1
技术支持: 13922829991
研发顾问: 13922805190
MAIN:
;P1.5~P1.0 初始化为开漏模式
;比较器结果经过 16 个去抖时钟后输出
;P3.7 为 CMP+输入脚
;内部参考电压为 CMP-输入脚
;禁止比较器输出
;使能比较器模块
LOOP:
深圳国芯人工智能有限公司
;电压2.5V
;P1.1 输出 0
;电压>3.0V
;P1.2 输出 0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 436 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
JNB
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
MOV
JNB
MOV
MOV
CALL
MOV
JNB
MOV
ACC.0,SKIP
R0,#00000111B
P1,#11110111B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00001111B
P1,#11101111B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00011111B
P1,#11011111B
DELAY
A,CMPCR1
ACC.0,SKIP
R0,#00111111B
MOV
MOV
CPL
MOV
JMP
P1,#11111111B
A,R0
A
P0,A
LOOP
MOV
DJNZ
RET
R0,#20
R0,$
技术支持: 13922829991
研发顾问: 13922805190
;电压>3.5V
;P1.3 输出 0
;电压>4.0V
;P1.4 输出 0
;电压>4.5V
;P1.5 输出 0
;电压>5.0V
SKIP:
;P0.5~P0.0 口显示电压
DELAY:
END
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
sfr
P2M0
P2M1
=
=
0x96;
0x95;
void delay ()
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 437 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
char i;
for (i=0; i3.0V
//P1.2 输出 0
//电压>3.5V
//P1.3 输出 0
//电压>4.0V
//P1.4 输出 0
//电压>4.5V
//P1.5 输出 0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 438 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
v = 0x3f;
技术支持: 13922829991
研发顾问: 13922805190
//电压>5.0V
ShowVol:
P1 = 0xff;
P0 = ~v;
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 439 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15 IAP/EEPROM
STC8G 系列单片机内部集成了大容量的 EEPROM 。利用 ISP/IAP 技术可将内部 Data Flash 当
EEPROM,擦写次数在 10 万次以上。EEPROM 可分为若干个扇区,每个扇区包含 512 字节。使用时,
建议同一次修改的数据放在同一个扇区,不是同一次修改的数据放在不同的扇区,不一定要用满。数据
存储器的擦除操作是按扇区进行的。
EEPROM 可用于保存一些需要在应用过程中修改并且掉电不丢失的参数数据。在用户程序中,可以
对 EEPROM 进行字节读/字节编程/扇区擦除操作。在工作电压偏低时,建议不要进行 EEPROM 操作,
以免发送数据丢失的情况。
15.1 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
EEPROM 数据寄存器(IAP_DATA)
符号
地址
IAP_DATA
C2H
B7
B6
B5
B4
B3
B2
B1
B0
在进行 EEPROM 的读操作时,命令执行完成后读出的 EEPROM 数据保存在 IAP_DATA 寄存器中。
在进行 EEPROM 的写操作时,在执行写命令前,必须将待写入的数据存放在 IAP_DATA 寄存器中,再
发送写命令。擦除 EEPROM 命令与 IAP_DATA 寄存器无关。
EEPROM 地址寄存器
符号
地址
IAP_ADDRH
C3H
IAP_ADDRL
C4H
B7
B6
B5
B4
B3
B2
B1
B0
EEPROM 进行读、写、擦除操作的目标地址寄存器。IAP_ADDRH 保存地址的高字节,IAP_ADDRL
保存地址的低字节
EEPROM 命令寄存器(IAP_CMD)
符号
地址
B7
B6
B5
B4
B3
B2
IAP_CMD
C5H
-
-
-
-
-
-
B1
B0
CMD[1:0]
CMD[1:0]:发送EEPROM操作命令
00:空操作
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 440 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
01:读 EEPROM 命令。读取目标地址所在的 1 字节。
10:写 EEPROM 命令。写目标地址所在的 1 字节。
11:擦除 EEPROM。擦除目标地址所在的 1 页(1 扇区/512 字节)。
EEPROM 触发寄存器
符号
地址
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 指令。
EEPROM 控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IAP_CONTR
C7H
IAPEN
SWBS
SWRST
CMD_FAIL
-
-
-
-
B3
B2
B1
B0
IAPEN:EEPROM操作使能控制位
0:禁止 EEPROM 操作
1:使能 EEPROM 操作
SWBS:软件复位选择控制位,(需要与SWRST配合使用)
0:软件复位后从用户代码开始执行程序
1:软件复位后从系统 ISP 监控代码区开始执行程序
SWRST:软件复位控制位
0:无动作
1:产生软件复位
CMD_FAIL:EEPROM操作失败状态位,需要软件清零
0:EEPROM 操作正确
1:EEPROM 操作失败
EEPROM 擦除等待时间控制寄存器
符号
地址
B7
B6
IAP_TPS
F5H
-
-
B5
B4
IAPTPS[5:0]
需要根据工作频率进行设置
若工作频率为12MHz,则需要将IAP_TPS设置为12;若工作频率为24MHz,则需要将IAP_TPS设置为24,
其他频率以此类推。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 441 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15.2 EEPROM大小及地址
STC8G 系列单片机内部均有用于保存用户数据的 EEPROM。内部的 EEPROM 有 3 操作方式:读、
写和擦除,其中擦除操作是以扇区为单位进行操作,每扇区为 512 字节,即每执行一次擦除命令就会擦
除一个扇区,而读数据和写数据都是以字节为单位进行操作的,即每执行一次读或者写命令时只能读出
或者写入一个字节。
STC8G 系列单片机内部的 EEPROM 的访问方式有两种:IAP 方式和 MOVC 方式。IAP 方式可对
EEPROM 执行读、写、擦除操作,但 MOVC 只能对 EEPROM 进行读操作,而不能进行写和擦除操作。
无论是使用 IAP 方式还是使用 MOVC 方式访问 EEPROM,首先都需要设置正确的目标地址。IAP 方式
时,目标地址与 EEPROM 实际的物理地址是一致的,均是从地址 0000H 开始访问,但若要使用 MOVC
指令进行读取 EEPROM 数据时,目标地址必须是在 EEPROM 实际的物理地址的基础上还有加上程序大
小的偏移。下面以 STC8G1K08 这个型号为例,对目标地址进行详细说明:
0000h
ROM
1FFFh
0000h
0234h
EEPROM
0FFFh
STC8C1K08
STC8G1K08 的程序空间为 8K 字节(0000h~1FFFh),EEPROM 空间为 4K(0000h~0FFFh)。当需要
对 EEPROM 物理地址 0234h 的单元进行读、写、擦除时,若使用 IAP 方式进行访问时,设置的目标地
址为 0234h,即 IAP_ADDRH 设置 02h,IAP_ADDRL 设置 34h,然后设置相应的触发命令即可对 0234h
单元进行正确操作了。但若是使用 MOVC 方式读取 EEPROM 的 0234h 单元,则必须在 0234h 的基础上
还有加上 Flash 程序存储器(ROM)空间的大小 2000h,即必须将 DPTR 设置为 2234h,然后才能使用
MOVC 指令进行读取。
注意:由于擦除是以 512 字节为单位进行操作的,所以执行擦除操作时所设置的目标地址的低 9 位
是无意义的。例如:执行擦除命令时,设置地址 0234H/0200H/0300H/03FFH,最终执行擦除的动作都是
相同的,都是擦除 0200H~03FFH 这 512 字节。
不同型号内部 EEPROM 的大小及访问地址会存在差异,针对各个型号 EEPROM 的详细大小和地址
请参考下表
型号
大小
扇区
STC8G1K08-20PIN
4K
8
IAP 方式读/写/擦除
MOVC 读取
起始地址
结束地址
起始地址
结束地址
0000h
0FFFh
2000h
2FFFh
2000h
2FFFh
[1]
STC8G1K12-20PIN
用户自定义
STC8G1K17-20PIN
用户自定义[1]
STC8G1K08-8PIN
深圳国芯人工智能有限公司
4K
8
0000h
国内分销商电话: 0513-5501 2928/2929/2966
0FFFh
传真: 0513-5501 2926/2956/2947
- 442 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
STC8G1K12-8PIN
用户自定义[1]
STC8G1K17-8PIN
用户自定义[1]
STC8G1K08A-8PIN
4K
8
0000h
0FFFh
用户自定义
STC8G1K17A-8PIN
用户自定义[1]
4K
8
0000h
0FFFh
用户自定义
STC8G1K17T-20PIN
用户自定义[1]
STC8G2K32S4
32K
64
0000h
7FFFh
STC8G2K60S4
4K
8
0000h
0FFFh
2000h
2FFFh
8000h
FFFFh
F000h
FFFFh
8000h
FFFFh
F000h
FFFFh
[1]
STC8G2K64S4
用户自定义
STC8G2K32S2
32K
64
0000h
7FFFh
STC8G2K60S2
4K
8
0000h
0FFFh
[1]
2FFFh
[1]
STC8G1K12T-20PIN
STC8G2K64S2
2000h
[1]
STC8G1K12A-8PIN
STC8G1K08T-20PIN
研发顾问: 13922805190
[1]
用户自定义
:这个为特殊型号,这个型号的 EEPROM 大小是可用在 ISP 下载时用户自己设置的。如下图所
示:
用户可用根据自己的需要在整个 FLASH 空间中规划出任意不超过 FLASH 大小的 EEPROM 空间,
但需要注意:EEPROM 总是从后向前进行规划的。
例如:STC8G1K12 这个型号的 FLASH 为 12K,此时若用户想分出其中的 4K 作为 EEPROM 使用,
则 EEPROM 的物理地址则为 12K 的最后 4K,物理地址为 2000h~2FFFh,当然,用户若使用 IAP 的方式
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 443 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
进行访问,目标地址仍然从 0000h 开始,到 0FFFh 结束,当使用 MOVC 读取则需要从 2000h 开始,到
2FFFh 结束。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 444 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
15.3 范例程序
15.3.1
EEPROM基本操作
汇编代码
;测试工作频率为 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
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
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
IAP_IDLE:
IAP_READ:
IAP_PROGRAM:
MOV
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 445 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
技术支持: 13922829991
IAP_TPS,#12
IAP_CMD,#2
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_DATA,A
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;设置擦除等待参数 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 功能
研发顾问: 13922805190
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
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
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 446 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
#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;
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
//设置擦除等待参数 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
//设置擦除等待参数 12MHz
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 447 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//写触发命令(0xa5)
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
//关闭 IAP 功能
}
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 高地址
//写触发命令(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);
}
15.3.2
使用MOVC读取EEPROM
汇编代码
;测试工作频率为 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
2000H
P0M1
P0M0
093H
094H
DATA
DATA
深圳国芯人工智能有限公司
;STC8G1K08
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 448 -
STC8G 系列技术手册
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
091H
092H
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
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_IDLE:
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
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 449 -
STC8G 系列技术手册
官方网站: 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
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
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;
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 450 -
STC8G 系列技术手册
#define
官方网站: www.STCMCUDATA.com / www.STCMCU.com
IAP_OFFSET
0x2000H
void IapIdle()
{
IAP_CONTR = 0;
IAP_CMD = 0;
IAP_TRIG = 0;
IAP_ADDRH = 0x80;
IAP_ADDRL = 0;
}
技术支持: 13922829991
研发顾问: 13922805190
//STC8G1K08
//关闭 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();
}
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
//使能 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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 451 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
IapErase(0x0400);
P0 = IapRead(0x0400);
IapProgram(0x0400, 0x12);
P1 = IapRead(0x0400);
技术支持: 13922829991
研发顾问: 13922805190
//P0=0xff
//P1=0x12
while (1);
}
15.3.3
使用串口送出EEPROM数据
汇编代码
;测试工作频率为 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
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
RET
SCON,#5AH
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
JNB
CLR
MOV
RET
TI,$
TI
SBUF,A
UART_INIT:
;65536-11059200/115200/4=0FFE8H
UART_SEND:
IAP_IDLE:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 452 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
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 功能
研发顾问: 13922805190
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
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
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 453 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
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
$
技术支持: 13922829991
研发顾问: 13922805190
END
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
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
- 454 -
STC8G 系列技术手册
官方网站: 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;
深圳国芯人工智能有限公司
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
//使能 IAP
//设置擦除等待参数 12MHz
//设置 IAP 擦除命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 455 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
_nop_();
IapIdle();
技术支持: 13922829991
研发顾问: 13922805190
//
//关闭 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;
UartInit();
IapErase(0x0400);
UartSEND(IapRead(0x0400));
IapProgram(0x0400, 0x12);
UartSEND(IapRead(0x0400));
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 456 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16 ADC模数转换,内部参考电压
STC8G 系列单片机内部集成了一个 10 位高速 A/D 转换器。ADC 的时钟频率为系统频率 2 分频再经
过用户设置的分频系数进行再次分频(ADC 的时钟频率范围为 SYSclk/2/1~SYSclk/2/16)。
ADC 转换结果的数据格式有两种:左对齐和右对齐。可方便用户程序进行读取和引用。
注意:ADC 的第 15 通道只能用于检测内部参考电压,参考电压值出厂时校准为 1.19V,由于制造
误差以及测量误差,导致实际的内部参考电压相比 1.19V,大约有±1%的误差。如果用户需要知道每一
颗芯片的准确内部参考电压值,可外接精准参考电压,然后利用 ADC 的第 15 通道进行测量标定。
16.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
ADC 时序控制寄存器
FEA8H CSSETUP
B6
B5
B4
B3
CSHOLD[1:0]
B2
B1
B0
0010,1010
SMPDUTY[4:0]
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 转换,转换完成后硬件自动将此位清零。
ADC_FLAG:ADC 转换结束标志位。当 ADC 完成一次转换后,硬件会自动将此位置 1,并向 CPU 提出
中断请求。此标志位必须软件清零。
ADC_EPWMT:使能 PWM 同步触发 ADC 功能。
ADC_CHS[3:0]:ADC 模拟通道选择位
(STC8G1K08-20PIN/STC8G1K08T-20PIN 系列)
ADC_CHS[3:0]
ADC 通道
ADC_CHS[3:0]
ADC 通道
0000
P1.0
1000
P3.0
0001
P1.1
1001
P3.1
0010
P1.2
1010
P3.2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 457 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
0011
P1.3
1011
P3.3
0100
P1.4
1100
P3.4
0101
P1.5
1101
P3.5
0110
P1.6
1110
P3.6
0111
P1.7
1111
测试内部 1.19V
研发顾问: 13922805190
(STC8G2K64S4-48PIN/STC8G2K64S2-48PIN 系列)
ADC_CHS[3:0]
ADC 通道
ADC_CHS[3:0]
ADC 通道
0000
P1.0
1000
P0.0
0001
P1.1
1001
P0.1
0010
P1.2
1010
P0.2
0011
P1.3
1011
P0.3
0100
P1.4
1100
P0.4
0101
P1.5
1101
P0.5
0110
P1.6
1110
P0.6
0111
P1.7
1111
测试内部 1.19V
ADC 通道
(STC8G1K08A-8PIN 系列)
ADC_CHS[3:0]
ADC 通道
ADC_CHS[3:0]
0000
P3.0
1000
0001
P3.1
1001
0010
P3.2
1010
0011
P3.3
1011
0100
P5.4
1100
0101
P5.5
1101
0110
1110
0111
1111
测试内部 1.19V
ADC 配置寄存器
符号
地址
B7
B6
B5
B4
ADCCFG
DEH
-
-
RESFMT
-
B3
B2
B1
B0
SPEED[3:0]
RESFMT:ADC 转换结果格式控制位
0:转换结果左对齐。ADC_RES 保存结果的高 8 位,ADC_RESL 保存结果的低 2 位。格式如下:
ADC_RES
ADC_RESL
D9 D8 D7 D6 D5 D4 D3 D2
D1 D0
0
10位转换结果
0
0
0
0
0
自动填0
RESFMT=0
1:转换结果右对齐。ADC_RES 保存结果的高 2 位,ADC_RESL 保存结果的低 8 位。格式如下:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 458 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
ADC_RES
0
0
0
0
0
0
技术支持: 13922829991
研发顾问: 13922805190
ADC_RESL
D9 D8
D7 D6 D5 D4 D3 D2 D1 D0
自动填0
10位转换结果
RESFMT=1
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
ADC 转换结果寄存器
符号
地址
ADC_RES
BDH
ADC_RESL
BEH
B7
B6
B5
B4
B3
B2
B1
B0
当 A/D 转换完成后,10 位的转换结果会自动保存到 ADC_RES 和 ADC_RESL 中。保存结果的数据
格式请参考 ADC_CFG 寄存器中的 RESFMT 设置。
ADC 时序控制寄存器
符号
地址
B7
ADCTIM
FEA8H
CSSETUP
B6
B5
CSHOLD[1:0]
B4
B3
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[4:0]
ADC 时钟数
00000
1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 459 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
00001
2
...
...
01010
11(默认值)
...
...
11110
31
11111
32
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
研发顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 460 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16.2 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
通道等效电阻
-
760
-
Ohm
CADC
内部采样保持电容
-
16.5
-
pF
RES
描述
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 461 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
16.3 范例程序
16.3.1
ADC基本操作(查询方式)
汇编代码
;测试工作频率为 11.0592MHz
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
DATA
DATA
DATA
DATA
0BCH
0BDH
0BEH
0DEH
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
MOV
MOV
P1M0,#00H
P1M1,#01H
ADCCFG,#0FH
ADC_CONTR,#80H
;设置 P1.0 为 ADC 口
ORL
NOP
NOP
MOV
JNB
ANL
MOV
ADC_CONTR,#40H
;启动 AD 转换
A,ADC_CONTR
ACC.5,$-2
ADC_CONTR,#NOT 20H
P2,ADC_RES
;查询 ADC 完成标志
MAIN:
;设置 ADC 时钟为系统时钟/2/16/16
;使能 ADC 模块
LOOP:
深圳国芯人工智能有限公司
;清完成标志
;读取 ADC 结果
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 462 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
SJMP
技术支持: 13922829991
研发顾问: 13922805190
LOOP
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
=
=
=
=
0xbc;
0xbd;
0xbe;
0xde;
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;
//设置 P1.0 为 ADC 口
P1M0 = 0x00;
P1M1 = 0x01;
ADCCFG = 0x0f;
ADC_CONTR = 0x80;
//设置 ADC 时钟为系统时钟/2/16/16
//使能 ADC 模块
while (1)
{
ADC_CONTR |= 0x40;
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20));
ADC_CONTR &= ~0x20;
P2 = ADC_RES;
}
深圳国芯人工智能有限公司
//启动 AD 转换
//查询 ADC 完成标志
//清完成标志
//读取 ADC 结果
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 463 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
}
16.3.2
ADC基本操作(中断方式)
汇编代码
;测试工作频率为 11.0592MHz
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
DATA
DATA
DATA
DATA
0BCH
0BDH
0BEH
0DEH
EADC
BIT
IE.5
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
002BH
ADCISR
ORG
0100H
ANL
MOV
ORL
RETI
ADC_CONTR,#NOT 20H
P2,ADC_RES
ADC_CONTR,#40H
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
P1M0,#00H
P1M1,#01H
ADCCFG,#0FH
ADC_CONTR,#80H
ADCISR:
;清完成标志
;读取 ADC 结果
;继续 AD 转换
MAIN:
深圳国芯人工智能有限公司
;设置 P1.0 为 ADC 口
;设置 ADC 时钟为系统时钟/2/16/16
;使能 ADC 模块
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 464 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
SETB
SETB
ORL
EADC
EA
ADC_CONTR,#40H
SJMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 ADC 中断
;启动 AD 转换
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
=
=
=
=
0xbc;
0xbd;
0xbe;
0xde;
sbit
EADC
=
IE^5;
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 ADC_Isr() interrupt 5
{
ADC_CONTR &= ~0x20;
P2 = ADC_RES;
ADC_CONTR |= 0x40;
}
//清中断标志
//读取 ADC 结果
//继续 AD 转换
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;
P1M0 = 0x00;
P1M1 = 0x01;
深圳国芯人工智能有限公司
//设置 P1.0 为 ADC 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 465 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//设置 ADC 时钟为系统时钟/2/16/16
//使能 ADC 模块
//使能 ADC 中断
ADCCFG = 0x0f;
ADC_CONTR = 0x80;
EADC = 1;
EA = 1;
ADC_CONTR |= 0x40;
//启动 AD 转换
while (1);
}
16.3.3
格式化ADC转换结果
汇编代码
;测试工作频率为 11.0592MHz
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
DATA
DATA
DATA
DATA
0BCH
0BDH
0BEH
0DEH
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
MOV
MOV
P1M0,#00H
P1M1,#01H
ADCCFG,#0FH
ADC_CONTR,#80H
;设置 ADC 时钟为系统时钟/2/16/16
;使能 ADC 模块
ORL
NOP
ADC_CONTR,#40H
;启动 AD 转换
MAIN:
深圳国芯人工智能有限公司
;设置 P1.0 为 ADC 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 466 -
STC8G 系列技术手册
;
;
;
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
NOP
MOV
JNB
ANL
A,ADC_CONTR
ACC.5,$-2
ADC_CONTR,#NOT 20H
;清完成标志
MOV
MOV
MOV
ADCCFG,#00H
A,ADC_RES
B,ADC_RESL
;设置结果左对齐
;A 存储 ADC 的 10 位结果的高 8 位
;B[7:6]存储 ADC 的 10 位结果的低 2 位,B[5:0]为 0
MOV
MOV
MOV
ADCCFG,#20H
A,ADC_RES
B,ADC_RESL
;设置结果右对齐
;A[3:0]存储 ADC 的 10 位结果的高 2 位,A[7:2]为 0
;B 存储 ADC 的 10 位结果的低 8 位
SJMP
$
;查询 ADC 完成标志
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
ADC_CONTR
ADC_RES
ADC_RESL
ADCCFG
=
=
=
=
0xbc;
0xbd;
0xbe;
0xde;
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;
P1M0 = 0x00;
P1M1 = 0x01;
深圳国芯人工智能有限公司
//设置 P1.0 为 ADC 口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 467 -
STC8G 系列技术手册
//
//
//
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
ADCCFG = 0x0f;
ADC_CONTR = 0x80;
ADC_CONTR |= 0x40;
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20));
ADC_CONTR &= ~0x20;
//设置 ADC 时钟为系统时钟/2/16/16
//使能 ADC 模块
//启动 AD 转换
ADCCFG = 0x00;
ACC = ADC_RES;
B = ADC_RESL;
//设置结果左对齐
//A 存储 ADC 的 10 位结果的高 8 位
//B[7:6]存储 ADC 的 10 位结果的低 2 位,B[5:0]为 0
ADCCFG = 0x20;
ACC = ADC_RES;
B = ADC_RESL;
//设置结果右对齐
//A[1:0]存储 ADC 的 10 位结果的高 2 位,A[7:2]为 0
//B 存储 ADC 的 10 位结果的低 8 位
//查询 ADC 完成标志
//清完成标志
while (1);
}
利用ADC第 15 通道测量外部电压或电池电压
16.3.4
STC8G 系列 ADC 的第 15 通道是用来测试内部参考参考电压的,由于内部参考参考电压很稳定,约
为 1.19V,且不会随芯片的工作电压的改变而变化,所以可以通过测量内部参考参考电压,然后通过 ADC
的值便可反推出外部电压或外部电池电压。
下图为参考线路图:
外部供电
或电池供电
Vin
Power On
Vcc
47u
103
1
2
3
4
5
6
7
8
9
10
P1.1
P1.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
Vcc
P5.5
Gnd
20
19
18
17
16
15
14
13
12
11
STC8G1K08
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
AUXR
=
0x8e;
sfr
sfr
ADC_CONTR
ADC_RES
=
=
0xbc;
0xbd;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 468 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
sfr
ADC_RESL
ADCCFG
int
*BGV;
bit
busy;
=
=
技术支持: 13922829991
研发顾问: 13922805190
0xbe;
0xde;
//内部参考电压值存放在 idata 中
//idata 的 EFH 地址存放高字节
//idata 的 F0H 地址存放低字节
//电压单位为毫伏(mV)
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 ADCInit()
{
ADCCFG = 0x2f;
ADC_CONTR = 0x8f;
}
int
{
//设置 ADC 时钟为系统时钟/2/16/16
//使能 ADC 模块,并选择第 15 通道
ADCRead()
int res;
ADC_CONTR |= 0x40;
_nop_();
_nop_();
while (!(ADC_CONTR & 0x20));
ADC_CONTR &= ~0x20;
res = (ADC_RES = 3;
//
//前两个数据丢弃
//读取 8 次数据
//取平均值
vcc = (int)(1023L * *BGV / res);
vcc = (int)(4095L * *BGV / res);
UartSend(vcc >> 8);
UartSend(vcc);
//(10 位 ADC 算法)计算 VREF 管脚电压,即电池电压
//(12 位 ADC 算法)计算 VREF 管脚电压,即电池电压
//注意,此电压的单位为毫伏(mV)
//输出电压值到串口
while (1);
}
16.3.5
ADC做电容感应触摸按键
按键是电路最常用的零件之一,是人机界面重要的输入方式,我们最熟悉的是机械式按键,但是机
械按键有一个缺点(特别是便宜的按键),触点有寿命,很容易出现接触不良而失效。而非接触的按键则
没有机械触点,寿命长,使用方便。
非接触的按键有多种方案,而电容感应按键则是低成本的方案,多年前一般是使用专门的 IC 来实现,
随着 MCU 功能的加强,以及广大用户的实践经验,直接使用 MCU 来做电容感应按键的技术已经成熟,
其中最典型最可靠的是使用 ADC 做的方案。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 470 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
本文档详述使用 STC 带 ADC 的系列 MCU 做的方案,可以使用任何带 ADC 功能的 MCU 来实
现。下面前 3 个图是用得最多的方式,原理都一样,本文使用第 2 个图。
一般实际应用时,都使用图 4 所示的感应弹簧来加大手指按下的面积。感应弹簧等效一块对地的金
属板,对地有一个电容 CP,而手指按下后,则再并联一个对地的电容 CF,如下图所示。
下面为电路图的说明,CP 为金属板和分布电容,CF 为手指电容,并联在一起与 C1 对输入的 300KHZ 方波
进行分压,经过 D1 整流,R2、C2 滤波后送 ADC,当手指压上去后,送去 ADC 的电压降低,程序就可以检测出
按键动作。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 471 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
汇编代码
;测试工作频率为 24MHz
Fosc_KHZ
Reload
EQU
EQU
24000
(65536 - Fosc_KHZ/600)
;定义主时钟 KHZ
;Timer 0 重装值,对应 300KHZ
ADC_CONTR
ADC_RES
ADC_RESL
AUXR
AUXR2
DATA
DATA
DATA
DATA
DATA
0xBC
0xBD
0xBE
0x8E
0x8F
;带 AD 系列
;带 AD 系列
;带 AD 系列
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
CHANNEL
ADC_90T
ADC_180T
ADC_360T
ADC_540T
ADC_FLAG
ADC_START
EQU
EQU
EQU
EQU
EQU
EQU
EQU
8
(3 SHL 5)
(2 SHL 5)
(1 SHL 5)
0
(1 SHL 4)
(1 SHL 3)
;ADC 通道数
;ADC 时间 90T
;ADC 时间 180T
;ADC 时间 360T
;ADC 时间 540T
;软件清 0
;自动清 0
P_LED7
P_LED6
P_LED5
P_LED4
P_LED3
P_LED2
P_LED1
P_LED0
adc
BIT
BIT
BIT
BIT
BIT
BIT
BIT
BIT
EQU
P2.7;
P2.6;
P2.5;
P2.4;
P2.3;
P2.2;
P2.1;
P2.0;
30H
;当前 ADC 值 30H~3FH,两字节一个值
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 472 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
adc_prev
EQU
TouchZero
EQU
TouchZeroCnt EQU
cnt_250ms
DATA
40H
50H
60H
68H
技术支持: 13922829991
研发顾问: 13922805190
;上一个 ADC 值 40H~4FH,两字节一个值
;0 点 ADC 值 50H~5FH,两字节一个值
;0 点自动跟踪计数 60H~67H
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP,#0D0H
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
CLR
CLR
ORL
ORL
MOV
MOV
MOV
SETB
LCALL
MOV
LCALL
MOV
R7,#50
F_delay_ms
ET0
TR0
AUXR,#080H
AUXR2,#01H
TMOD,#0
TH0,#HIGH Reload
TL0,#LOW Reload
TR0
F_ADC_init
R7,#50
F_delay_ms
R0,#adc_prev
MOV
INC
MOV
INC
MOV
CJNE
MOV
@R0,#03H
R0
@R0,#0FFH
R0
A,R0
A,#(adc_prev + CHANNEL * 2),L_Init_Loop1
R0,#TouchZero
;初始化 0 点 ADC 值
MOV
INC
MOV
INC
MOV
CJNE
MOV
@R0,#03H
R0
@R0,#0FFH
R0
A,R0
A,#(TouchZero+CHANNEL * 2),L_Init_Loop2
R0,#TouchZeroCnt
;初始化自动跟踪计数值
MOV
INC
MOV
CJNE
@R0,#0
R0
A,R0
A,#(TouchZeroCnt + CHANNEL),L_Init_Loop3
MAIN:
;初始化 Timer0 输出一个 300KHZ 时钟
;Timer0 set as 1T mode
;允许输出时钟
;Timer0 set as Timer,16 bits Auto Reload.
;初始化上一个 ADC 值
L_Init_Loop1:
L_Init_Loop2:
L_Init_Loop3:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 473 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
cnt_250ms,#5
MOV
LCALL
LCALL
DJNZ
MOV
LCALL
SJMP
R7,#50
F_delay_ms
F_ShowLED
cnt_250ms,L_MainLoop
cnt_250ms,#5
F_AutoZero
L_MainLoop
MOV
MOV
MOV
RET
P1M0,#00H
P1M1,#0FFH
ADC_CONTR,#080H
技术支持: 13922829991
研发顾问: 13922805190
L_MainLoop:
;延时 50ms
;处理一次触摸键值
;250ms 处理一次 0 点自动跟踪
;自动跟踪零点
F_ADC_init:
F_Get_ADC10bitResult:
MOV
MOV
MOV
ORL
MOV
NOP
NOP
NOP
NOP
L_10bitADC_Loop1:
MOV
JNB
MOV
MOV
MOV
MUL
MOV
MOV
MOV
ANL
ORL
MOV
RET
ADC_RES,#0
ADC_RESL,#0
A,R7
A,#0E8H
ADC_CONTR,A
A,ADC_CONTR
ACC.4,L_10bitADC_Loop1
ADC_CONTR,#080H
A,ADC_RES
B,#04H
AB
R7,A
R6,B
A,ADC_RESL
A,#03H
A,R7
R7,A
深圳国芯人工智能有限公司
;允许 ADC
;触发 ADC
;等待 ADC 转换结束
;清除标志
;250ms 调用一次
;这是使用相邻 2 个采样的差的绝对值之和来检测。
F_AutoZero:
CLR
MOV
L_AutoZero_Loop:
MOV
ADD
ADD
MOV
MOV
MOV
INC
MOV
MOV
MOV
ADD
ADD
MOV
;8 路 ADC
A
R5,A
A,R5
A,ACC
A,#LOW (adc)
R0,A
A,@R0
R6,A
R0
A,@R0
R7,A
A,R5
A,ACC
A,#LOW (adc_prev+01H)
R0,A
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 474 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
CLR
MOV
SUBB
MOV
MOV
DEC
SUBB
MOV
CLR
JNB
SETB
CLR
CLR
SUBB
MOV
MOV
CLR
SUBB
MOV
C
A,R7
A,@R0
R3,A
A,R6
R0
A,@R0
R2,A
F0 ;按下
ACC.7,L_AutoZero_1
F0
C
A
A,R3
R3,A
A,R3
A
A,R2
R2,A
CLR
MOV
SUBB
MOV
SUBB
JC
MOV
ADD
MOV
MOV
JNB
MOV
ADD
ADD
MOV
MOV
INC
MOV
SJMP
C
A,R3
A,#20
A,R2
A,#00H
L_AutoZero_2
A,#LOW (TouchZeroCnt)
A,R5
R0,A
@R0,#0
F0,L_AutoZero_3
A,R5
A,ACC
A,#LOW (TouchZero)
R0,A
@R0,6
R0
@R0,7
L_AutoZero_3
技术支持: 13922829991
研发顾问: 13922805190
L_AutoZero_1:
;计算 [R2 R3] - #20,if(k >= 20)
;[R2 R3] ,20,转
;如果变化比较大,则清 0 计数器 TouchZeroCnt[i] = 0;
;变化比较小,则蠕动,自动 0 点跟踪
;连续检测到小变化 20 次/4 = 5 秒.
L_AutoZero_2:
MOV
ADD
MOV
INC
MOV
CLR
SUBB
JC
MOV
MOV
ADD
ADD
MOV
MOV
MOV
INC
MOV
MOV
深圳国芯人工智能有限公司
A,#LOW (TouchZeroCnt)
A,R5
R0,A
@R0
A,@R0
C
A,#20
L_AutoZero_3
@R0,#0
A,R5
A,ACC
A,#LOW (adc_prev)
R0,A
A,@R0
R2,A
R0
A,@R0
R3,A
;if(TouchZeroCnt[i] < 20),转
;TouchZeroCnt[i]
= 0;
;变化缓慢的值作为 0 点
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 475 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
ADD
ADD
MOV
MOV
INC
MOV
A,R5
A,ACC
A,#LOW (TouchZero)
R0,A
@R0,2
R0
@R0,3
MOV
ADD
ADD
MOV
MOV
INC
MOV
INC
MOV
XRL
JZ
LJMP
RET
A,R5
A,ACC
A,#LOW (adc_prev)
R0,A
@R0,6
R0
@R0,7
R5
A,R5
A,#08H
$ + 5H
L_AutoZero_Loop
技术支持: 13922829991
研发顾问: 13922805190
;保存采样值 adc_prev[i] = j;
L_AutoZero_3:
;判断键按下或释放,有回差控制
F_check_adc:
MOV R4,7
LCALL
CLR
MOV
SUBB
MOV
MOV
SUBB
MOV
MOV
ADD
ADD
MOV
MOV
INC
MOV
MOV
ADD
ADD
MOV
MOV
ADD
ADD
MOV
MOV
MOV
INC
MOV
CLR
SUBB
MOV
DEC
SUBB
JNC
MOV
RET
深圳国芯人工智能有限公司
F_Get_ADC10bitResult
C
A,#0FFH
A,R7
R7,A
A,#03H
A,R6
R6,A
A,R4
A,ACC
A,#LOW (adc)
R0,A
@R0,6
R0
@R0,7
A,R4
A,ACC
A,#LOW (TouchZero+01H)
R1,A
A,R4
A,ACC
A,#LOW (adc)
R0,A
A,@R0
R6,A
R0
A,@R0
C
A,@R1
A,R6
R1
A,@R1
L_check_adc_1
R7,#00H
;返回的 ADC 值在 [R6 R7]
;保存 adc[index]
;计算 adc[index] - TouchZero[index]
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 476 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
L_check_adc_1:
MOV
ADD
ADD
MOV
MOV
ADD
ADD
MOV
CLR
MOV
SUBB
MOV
DEC
MOV
DEC
SUBB
MOV
CLR
MOV
SUBB
MOV
SUBB
JC
MOV
RET
A,R4
A,ACC
A,#LOW (TouchZero+01H)
R1,A
A,R4
A,ACC
A,#LOW (adc+01H)
R0,A
C
A,@R0
A,@R1
R7,A
R0
A,@R0
R1
A,@R1
R6,A
C
A,R7
A,#40
A,R6
A,#00H
L_check_adc_2
R7,#1
SETB
MOV
SUBB
MOV
SUBB
JNC
MOV
RET
C
A,R7
A,#20
A,R6
A,#00H
L_check_adc_3
R7,#0
MOV
RET
R7,#2
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#0
F_check_adc
A,R7
A,#0FEH
L_QuitCheck0
A,R7
C,ACC.0
C
P_LED0,C
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#1
F_check_adc
A,R7
A,#0FEH
L_QuitCheck1
A,R7
C,ACC.0
C
P_LED1,C
;if(delta < 40),转
;if(delta >= 40) return 1; //键按下 返回 1
L_check_adc_2:
L_check_adc_3:
F_ShowLED:
L_QuitCheck0:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 477 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
L_QuitCheck1:
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#2
F_check_adc
A,R7
A,#0FEH
L_QuitCheck2
A,R7
C,ACC.0
C
P_LED2,C
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#3
F_check_adc
A,R7
A,#0FEH
L_QuitCheck3
A,R7
C,ACC.0
C
P_LED3,C
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#4
F_check_adc
A,R7
A,#0FEH
L_QuitCheck4
A,R7
C,ACC.0
C
P_LED4,C
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#5
F_check_adc
A,R7
A,#0FEH
L_QuitCheck5
A,R7
C,ACC.0
C
P_LED5,C
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
MOV
R7,#6
F_check_adc
A,R7
A,#0FEH
L_QuitCheck6
A,R7
C,ACC.0
C
P_LED6,C
MOV
LCALL
MOV
ANL
JNZ
MOV
MOV
CPL
R7,#7
F_check_adc
A,R7
A,#0FEH
L_QuitCheck7
A,R7
C,ACC.0
C
L_QuitCheck2:
L_QuitCheck3:
L_QuitCheck4:
L_QuitCheck5:
L_QuitCheck6:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 478 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
技术支持: 13922829991
研发顾问: 13922805190
P_LED7,C
L_QuitCheck7:
RET
F_delay_ms:
PUSH
PUSH
3
4
MOV
MOV
R3,#HIGH (Fosc_KHZ / 13)
R4,#LOW (Fosc_KHZ / 13)
MOV
DEC
JNZ
DEC
A,R4
R4
L_delay_ms_3
R3
DEC
ORL
JNZ
DJNZ
POP
POP
RET
A
A,R3
L_delay_ms_2
R7,L_delay_ms_1
4
3
L_delay_ms_1:
L_delay_ms_2:
L_delay_ms_3:
END
C 语言代码
//测试工作频率为 24MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
MAIN_Fosc
24000000UL
Timer0_Reload (65536UL -(MAIN_Fosc / 600000))
typedef
typedef
typedef
unsigned char
unsigned int
unsigned long
u8;
u16;
u32;
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;
sfr
sfr
sfr
sfr
sfr
ADC_CONTR
ADC_RES
ADC_RESL
AUXR
AUXR2
=
=
=
=
=
0xBC;
0xBD;
0xBE;
0x8E;
0x8F;
深圳国芯人工智能有限公司
//定义主时钟
//Timer 0 重装值,对应 300KHZ
//带 AD 系列
//带 AD 系列
//带 AD 系列
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 479 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
#define
#define
#define
#define
#define
#define
#define
CHANNEL
ADC_90T
ADC_180T
ADC_360T
ADC_540T
ADC_FLAG
ADC_START
8
(3 8;
value += T38K4HZ;
CR = 1;
EA = 1;
//PCA 时钟为系统时钟
//PCA 模块 0 为 16 位定时器模式并使能脉冲输出
//启动 PCA 计时器
while (1);
}
17.3.5
PCA扩展外部中断
汇编代码
;测试工作频率为 11.0592MHz
CCON
CF
CR
CCF2
CCF1
CCF0
CMOD
CL
CH
CCAPM0
CCAP0L
CCAP0H
PCA_PWM0
CCAPM1
CCAP1L
DATA
BIT
BIT
BIT
BIT
BIT
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
0D8H
CCON.7
CCON.6
CCON.2
CCON.1
CCON.0
0D9H
0E9H
0F9H
0DAH
0EAH
0FAH
0F2H
0DBH
0EBH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 504 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
CCAP1H
PCA_PWM1
CCAPM2
CCAP2L
CCAP2H
PCA_PWM2
DATA
DATA
DATA
DATA
DATA
DATA
0FBH
0F3H
0DCH
0ECH
0FCH
0F4H
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
003BH
PCAISR
ORG
0100H
CLR
CPL
RETI
CCF0
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
MOV
MOV
MOV
MOV
MOV
SETB
SETB
CCON,#00H
CMOD,#08H
CL,#00H
CH,#0H
CCAPM0,#11H
CCAPM0,#21H
CCAPM0,#31H
CCAP0L,#0
CCAP0H,#0
CR
EA
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
PCAISR:
MAIN:
;
;
深圳国芯人工智能有限公司
;PCA 时钟为系统时钟
;扩展外部端口 CCP0 为下降沿中断口
;扩展外部端口 CCP0 为上升沿中断口
;扩展外部端口 CCP0 为边沿中断口
;启动 PCA 计时器
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 505 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sbit
sbit
sbit
sbit
sbit
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
CCON
CF
CR
CCF2
CCF1
CCF0
CMOD
CL
CH
CCAPM0
CCAP0L
CCAP0H
PCA_PWM0
CCAPM1
CCAP1L
CCAP1H
PCA_PWM1
CCAPM2
CCAP2L
CCAP2H
PCA_PWM2
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0xd8;
CCON^7;
CCON^6;
CCON^2;
CCON^1;
CCON^0;
0xd9;
0xe9;
0xf9;
0xda;
0xea;
0xfa;
0xf2;
0xdb;
0xeb;
0xfb;
0xf3;
0xdc;
0xec;
0xfc;
0xf4;
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
P10
=
P1^0;
void PCA_Isr() interrupt 7
{
CCF0 = 0;
P10 = !P10;
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 506 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
//
CCON = 0x00;
CMOD = 0x08;
CL = 0x00;
CH = 0x00;
CCAPM0 = 0x11;
CCAPM0 = 0x21;
CCAPM0 = 0x31;
CCAP0L = 0;
CCAP0H = 0;
CR = 1;
EA = 1;
//PCA 时钟为系统时钟
//扩展外部端口 CCP0 为下降沿中断口
//扩展外部端口 CCP0 为上升沿中断口
//扩展外部端口 CCP0 为边沿中断口
//启动 PCA 计时器
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 507 -
STC8G 系列技术手册
17.3.6
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
利用CCP/PCA模块实现 8~16 位DAC的参考线路图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 508 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
18 精度可达 15 位的增强型PWM
(C 语言程序中使用中断号大于 31 的中断时,在 Keil 中编译会报错,解决办法请参考附录 I)
STC8G2K64S4-48PIN/STC8G2K64S2-48PIN 系列单片机集成了 6 组(每组有各自独立 8 路)增强型
的 PWM 波形发生器。每组 PWM 的时钟源可以单独选择。PWM 波形发生器内部有一个 15 位的 PWM
计数器供 8 路 PWM 使用,用户可以设置每路 PWM 的初始电平。另外,PWM 波形发生器为每路 PWM
又设计了两个用于控制波形翻转的计数器 T1/T2,可以非常灵活的控制每路 PWM 的高低电平宽度,从
而达到对 PWM 的占空比以及 PWM 的输出延迟进行控制的目的。由于每组的 8 路 PWM 是各自独立的,
且每路 PWM 的初始状态可以进行设定,所以用户可以将其中的任意两路配合起来使用,即可实现互补
对称输出以及死区控制等特殊应用。
45 路 15 位增强型 PWM 可设置成 6 组周期不同的 PWM:第 0 组 PWM00~PWM07,第 1 组 PWM10~
PWM17,
第 2 组 PWM20~PWM27,
第 3 组 PWM30~PWM37,
第 4 组 PWM40~PWM47,第 5 组 PWM50~
PWM54)。
(注:增强型 PWM 只有输出功能,如果需要测量脉冲宽度,请使用本系列的 PCA/CCP/PWM
功能)
增强型的 PWM 波形发生器还设计了对外部异常事件(包括外部端口 P3.5/P0.6/P0.7 电平异常、比较
器比较结果异常)进行监控的功能,可用于紧急关闭 PWM 输出。PWM 波形发生器还可与 ADC 相关联,
设置 PWM 周期的任一时间点触发 ADC 转换事件。
18.1 PWM相关的寄存器
位地址与符号
符号
PWMSET
描述
地址
增强型 PWM 全局配置寄存器 F1H
复位值
B7
B6
B5
B4
B3
B2
B1
ENGLBSET
PWMRST
ENPWM5
ENPWM4
ENPWM3
ENPWM2
ENPWM1
B0
ENPWM0 0000,0000
PWMCFG01 增强型 PWM 配置寄存器
F6H
PWM1CBIF
EPWM1CBI
FLTPS0
PWM1CEN PWM0CBIF EPWM0CBI ENPWM0TA PWM0CEN 0000,0000
PWMCFG23 增强型 PWM 配置寄存器
F7H
PWM3CBIF
EPWM3CBI
FLTPS1
PWM3CEN PWM2CBIF EPWM2CBI ENPWM2TA PWM2CEN 0000,0000
PWMCFG45 增强型 PWM 配置寄存器
FEH
PWM5CBIF
EPWM5CBI
FLTPS2
PWM5CEN PWM4CBIF EPWM4CBI ENPWM4TA PWM4CEN 0000,0000
位地址与符号
符号
描述
地址
复位值
B7
PWM0CH
PWM0 计数器高字节
FF00H
PWM0CL
PWM0 计数器低字节
FF01H
PWM0 时钟选择
FF02H
-
PWM0TADCH PWM0 触发 ADC 计数高字节
FF03H
-
PWM0TADCL PWM0 触发 ADC 计数低字节
FF04H
PWM0CKS
PWM0IF
B6
B5
B4
B3
B2
B1
B0
-
x000,0000
0000,0000
-
-
SELT2
PWM_PS[3:0]
xxx0,0000
x000,0000
0000,0000
FF05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
PWM0FDCR PWM0 异常检测控制寄存器
FF06H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
0000,0000
PWM00T1H PWM00T1 计数值高字节
FF10H
-
PWM00T1L
PWM00T1 计数值低字节
FF11H
PWM00T2H PWM00T2 计数值高字节
FF12H
PWM00T2L
FF13H
PWM0 中断标志寄存器
PWM00T2 计数值低字节
深圳国芯人工智能有限公司
x000,0000
0000,0000
-
国内分销商电话: 0513-5501 2928/2929/2966
x000,0000
0000,0000
传真: 0513-5501 2926/2956/2947
- 509 -
STC8G 系列技术手册
PWM00CR
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
FF14H
ENO
INI
-
-
PWM00HLD PWM00 电平保持控制寄存器
FF15H
-
-
-
-
PWM01T1H PWM01T1 计数值高字节
FF18H
-
PWM01T1L
PWM01T1 计数值低字节
FF19H
PWM01T2H PWM01T2 计数值高字节
FF1AH
PWM01T2L
PWM01T2 计数值低字节
FF1BH
PWM01CR
PWM01 控制寄存器
FF1CH
ENO
INI
-
-
PWM01HLD PWM01 电平保持控制寄存器
FF1DH
-
-
-
-
PWM02T1H PWM02T1 计数值高字节
FF20H
-
PWM02T1L
PWM02T1 计数值低字节
FF21H
PWM02T2H PWM02T2 计数值高字节
FF22H
PWM02T2L
PWM02T2 计数值低字节
FF23H
PWM02CR
PWM02 控制寄存器
FF24H
ENO
INI
-
-
PWM02HLD PWM02 电平保持控制寄存器
FF25H
-
-
-
-
PWM03T1H PWM03T1 计数值高字节
FF28H
-
PWM03T1L
PWM03T1 计数值低字节
FF29H
PWM03T2H PWM03T2 计数值高字节
FF2AH
PWM03T2L
PWM03T2 计数值低字节
FF2BH
PWM03CR
PWM03 控制寄存器
FF2CH
ENO
INI
-
-
PWM03HLD PWM03 电平保持控制寄存器
FF2DH
-
-
-
-
PWM04T1H PWM04T1 计数值高字节
FF30H
-
PWM04T1L
PWM04T1 计数值低字节
FF31H
PWM04T2H PWM04T2 计数值高字节
FF32H
PWM04T2L
PWM04T2 计数值低字节
FF33H
PWM04CR
PWM04 控制寄存器
FF34H
ENO
INI
-
-
PWM04HLD PWM04 电平保持控制寄存器
FF35H
-
-
-
-
PWM05T1H PWM05T1 计数值高字节
FF38H
-
PWM05T1L
PWM05T1 计数值低字节
FF39H
PWM05T2H PWM05T2 计数值高字节
FF3AH
PWM05T2L
PWM05T2 计数值低字节
FF3BH
PWM05CR
PWM05 控制寄存器
FF3CH
ENO
INI
-
-
PWM05HLD PWM05 电平保持控制寄存器
FF3DH
-
-
-
-
PWM06T1H PWM06T1 计数值高字节
FF40H
-
PWM06T1L
PWM06T1 计数值低字节
FF41H
PWM06T2H PWM06T2 计数值高字节
FF42H
PWM06T2L
PWM06T2 计数值低字节
FF43H
PWM06CR
PWM06 控制寄存器
FF44H
ENO
INI
-
-
PWM06HLD PWM06 电平保持控制寄存器
FF45H
-
-
-
-
PWM07T1H PWM07T1 计数值高字节
FF48H
-
PWM07T1L
PWM07T1 计数值低字节
FF49H
PWM07T2H PWM07T2 计数值高字节
FF4AH
PWM07T2L
PWM07T2 计数值低字节
FF4BH
PWM07CR
PWM07 控制寄存器
FF4CH
ENO
INI
-
-
FF4DH
-
-
-
-
PWM00 控制寄存器
PWM07HLD PWM07 电平保持控制寄存器
深圳国芯人工智能有限公司
-
研发顾问: 13922805190
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
传真: 0513-5501 2926/2956/2947
- 510 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM1CH
PWM1 计数器高字节
FF50H
PWM1CL
PWM1 计数器低字节
FF51H
PWM1 时钟选择
FF52H
-
-
-
SELT2
PWM1 中断标志寄存器
FF55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
PWM1FDCR PWM1 异常检测控制寄存器
FF56H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
0000,0000
PWM10T1H PWM10T1 计数值高字节
FF60H
-
PWM10T1L
PWM10T1 计数值低字节
FF61H
PWM10T2H PWM10T2 计数值高字节
FF62H
PWM10T2L
PWM10T2 计数值低字节
FF63H
PWM10CR
PWM10 控制寄存器
FF64H
ENO
INI
-
-
PWM10HLD PWM10 电平保持控制寄存器
FF65H
-
-
-
-
PWM11T1H PWM11T1 计数值高字节
FF68H
-
PWM11T1L
PWM11T1 计数值低字节
FF69H
PWM11T2H PWM11T2 计数值高字节
FF6AH
PWM11T2L
PWM11T2 计数值低字节
FF6BH
PWM11CR
PWM11 控制寄存器
FF6CH
ENO
INI
-
-
PWM11HLD PWM11 电平保持控制寄存器
FF6DH
-
-
-
-
PWM12T1H PWM12T1 计数值高字节
FF70H
-
PWM12T1L
PWM12T1 计数值低字节
FF71H
PWM12T2H PWM12T2 计数值高字节
FF72H
PWM12T2L
PWM12T2 计数值低字节
FF73H
PWM12CR
PWM12 控制寄存器
FF74H
ENO
INI
-
-
PWM12HLD PWM12 电平保持控制寄存器
FF75H
-
-
-
-
PWM13T1H PWM13T1 计数值高字节
FF78H
-
PWM13T1L
PWM13T1 计数值低字节
FF79H
PWM13T2H PWM13T2 计数值高字节
FF7AH
PWM13T2L
PWM13T2 计数值低字节
FF7BH
PWM13CR
PWM13 控制寄存器
FF7CH
ENO
INI
-
-
PWM13HLD PWM13 电平保持控制寄存器
FF7DH
-
-
-
-
PWM14T1H PWM14T1 计数值高字节
FF80H
-
PWM14T1L
PWM14T1 计数值低字节
FF81H
PWM14T2H PWM14T2 计数值高字节
FF82H
PWM14T2L
PWM14T2 计数值低字节
FF83H
PWM14CR
PWM14 控制寄存器
FF84H
ENO
INI
-
-
PWM14HLD PWM14 电平保持控制寄存器
FF85H
-
-
-
-
PWM15T1H PWM15T1 计数值高字节
FF88H
-
PWM15T1L
PWM15T1 计数值低字节
FF89H
PWM15T2H PWM15T2 计数值高字节
FF8AH
PWM15T2L
PWM15T2 计数值低字节
FF8BH
PWM15CR
PWM15 控制寄存器
FF8CH
ENO
INI
-
-
PWM15HLD PWM15 电平保持控制寄存器
FF8DH
-
-
-
-
PWM16T1H PWM16T1 计数值高字节
FF90H
-
PWM16T1L
PWM16T1 计数值低字节
FF91H
PWM16T2H PWM16T2 计数值高字节
FF92H
PWM1CKS
PWM1IF
深圳国芯人工智能有限公司
-
x000,0000
0000,0000
PWM_PS[3:0]
xxx0,0000
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
国内分销商电话: 0513-5501 2928/2929/2966
x000,0000
传真: 0513-5501 2926/2956/2947
- 511 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
PWM16T2L
PWM16T2 计数值低字节
FF93H
PWM16CR
PWM16 控制寄存器
FF94H
ENO
INI
-
-
PWM16HLD PWM16 电平保持控制寄存器
FF95H
-
-
-
-
PWM17T1H PWM17T1 计数值高字节
FF98H
-
PWM17T1L
PWM17T1 计数值低字节
FF99H
PWM17T2H PWM17T2 计数值高字节
FF9AH
PWM17T2L
PWM17T2 计数值低字节
FF9BH
PWM17CR
PWM17 控制寄存器
FF9CH
ENO
INI
-
-
FF9DH
-
-
-
-
-
PWM17HLD PWM17 电平保持控制寄存器
0000,0000
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
-
x000,0000
0000,0000
PWM2 计数器高字节
FFA0H
PWM2CL
PWM2 计数器低字节
FFA1H
PWM2 时钟选择
FFA2H
-
PWM2TADCH PWM2 触发 ADC 计数高字节
FFA3H
-
PWM2TADCL PWM2 触发 ADC 计数低字节
FFA4H
PWM2IF
-
ENI
0000,0000
PWM2CH
PWM2CKS
研发顾问: 13922805190
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
-
SELT2
PWM_PS[3:0]
xxx0,0000
x000,0000
0000,0000
FFA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
PWM2FDCR PWM2 异常检测控制寄存器
FFA6H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
0000,0000
PWM20T1H PWM20T1 计数值高字节
FFB0H
-
PWM20T1L
PWM20T1 计数值低字节
FFB1H
PWM20T2H PWM20T2 计数值高字节
FFB2H
PWM20T2L
PWM20T2 计数值低字节
FFB3H
PWM20CR
PWM20 控制寄存器
FFB4H
ENO
INI
-
-
PWM20HLD PWM20 电平保持控制寄存器
FFB5H
-
-
-
-
PWM21T1H PWM21T1 计数值高字节
FFB8H
-
PWM21T1L
PWM21T1 计数值低字节
FFB9H
PWM21T2H PWM21T2 计数值高字节
FFBAH
PWM21T2L
PWM21T2 计数值低字节
FFBBH
PWM21CR
PWM21 控制寄存器
FFBCH
ENO
INI
-
-
PWM21HLD PWM21 电平保持控制寄存器
FFBDH
-
-
-
-
PWM22T1H PWM22T1 计数值高字节
FFC0H
-
PWM22T1L
PWM22T1 计数值低字节
FFC1H
PWM22T2H PWM22T2 计数值高字节
FFC2H
PWM22T2L
PWM22T2 计数值低字节
FFC3H
PWM22CR
PWM22 控制寄存器
FFC4H
ENO
INI
-
-
PWM22HLD PWM22 电平保持控制寄存器
FFC5H
-
-
-
-
PWM23T1H PWM23T1 计数值高字节
FFC8H
-
PWM23T1L
PWM23T1 计数值低字节
FFC9H
PWM23T2H PWM23T2 计数值高字节
FFCAH
PWM23T2L
PWM23T2 计数值低字节
FFCBH
PWM23CR
PWM23 控制寄存器
FFCCH
ENO
INI
-
-
PWM23HLD PWM23 电平保持控制寄存器
FFCDH
-
-
-
-
PWM24T1H PWM24T1 计数值高字节
FFD0H
-
PWM24T1L
PWM24T1 计数值低字节
FFD1H
PWM24T2H PWM24T2 计数值高字节
FFD2H
PWM24T2L
FFD3H
PWM2 中断标志寄存器
PWM24T2 计数值低字节
深圳国芯人工智能有限公司
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
国内分销商电话: 0513-5501 2928/2929/2966
x000,0000
0000,0000
传真: 0513-5501 2926/2956/2947
- 512 -
STC8G 系列技术手册
PWM24CR
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
FFD4H
ENO
INI
-
-
PWM24HLD PWM24 电平保持控制寄存器
FFD5H
-
-
-
-
PWM25T1H PWM25T1 计数值高字节
FFD8H
-
PWM25T1L
PWM25T1 计数值低字节
FFD9H
PWM25T2H PWM25T2 计数值高字节
FFDAH
PWM25T2L
PWM25T2 计数值低字节
FFDBH
PWM25CR
PWM25 控制寄存器
FFDCH
ENO
INI
-
-
PWM25HLD PWM25 电平保持控制寄存器
FFDDH
-
-
-
-
PWM26T1H PWM26T1 计数值高字节
FFE0H
-
PWM26T1L
PWM26T1 计数值低字节
FFE1H
PWM26T2H PWM26T2 计数值高字节
FFE2H
PWM26T2L
PWM26T2 计数值低字节
FFE3H
PWM26CR
PWM26 控制寄存器
FFE4H
ENO
INI
-
-
PWM26HLD PWM26 电平保持控制寄存器
FFE5H
-
-
-
-
PWM27T1H PWM27T1 计数值高字节
FFE8H
-
PWM27T1L
PWM27T1 计数值低字节
FFE9H
PWM27T2H PWM27T2 计数值高字节
FFEAH
PWM27T2L
PWM27T2 计数值低字节
FFEBH
PWM27CR
PWM27 控制寄存器
FFECH
ENO
INI
-
-
FFEDH
-
-
-
-
-
PWM24 控制寄存器
PWM27HLD PWM27 电平保持控制寄存器
-
研发顾问: 13922805190
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
PWM3CH
PWM3 计数器高字节
FC00H
PWM3CL
PWM3 计数器低字节
FC01H
PWM3 时钟选择
FC02H
-
-
-
SELT2
PWM3 中断标志寄存器
FC05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
PWM3FDCR PWM3 异常检测控制寄存器
FC06H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
0000,0000
PWM30T1H PWM30T1 计数值高字节
FC10H
-
PWM30T1L
PWM30T1 计数值低字节
FC11H
PWM30T2H PWM30T2 计数值高字节
FC12H
PWM30T2L
PWM30T2 计数值低字节
FC13H
PWM30CR
PWM30 控制寄存器
FC14H
ENO
INI
-
-
PWM30HLD PWM30 电平保持控制寄存器
FC15H
-
-
-
-
PWM31T1H PWM31T1 计数值高字节
FC18H
-
PWM31T1L
PWM31T1 计数值低字节
FC19H
PWM31T2H PWM31T2 计数值高字节
FC1AH
PWM31T2L
PWM31T2 计数值低字节
FC1BH
PWM31CR
PWM31 控制寄存器
FC1CH
ENO
INI
-
-
PWM31HLD PWM31 电平保持控制寄存器
FC1DH
-
-
-
-
PWM32T1H PWM32T1 计数值高字节
FC20H
-
PWM32T1L
PWM32T1 计数值低字节
FC21H
PWM32T2H PWM32T2 计数值高字节
FC22H
PWM32T2L
PWM32T2 计数值低字节
FC23H
PWM32CR
PWM32 控制寄存器
FC24H
ENO
INI
-
-
PWM32HLD PWM32 电平保持控制寄存器
FC25H
-
-
-
-
PWM33T1H PWM33T1 计数值高字节
FC28H
-
PWM3CKS
PWM3IF
深圳国芯人工智能有限公司
x000,0000
0000,0000
PWM_PS[3:0]
xxx0,0000
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
传真: 0513-5501 2926/2956/2947
- 513 -
STC8G 系列技术手册
PWM33T1L
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
PWM33T1 计数值低字节
FC29H
PWM33T2H PWM33T2 计数值高字节
FC2AH
PWM33T2L
PWM33T2 计数值低字节
FC2BH
PWM33CR
PWM33 控制寄存器
FC2CH
ENO
INI
-
-
PWM33HLD PWM33 电平保持控制寄存器
FC2DH
-
-
-
-
PWM34T1H PWM34T1 计数值高字节
FC30H
-
PWM34T1L
PWM34T1 计数值低字节
FC31H
PWM34T2H PWM34T2 计数值高字节
FC32H
PWM34T2L
PWM34T2 计数值低字节
FC33H
PWM34CR
PWM34 控制寄存器
FC34H
ENO
INI
-
-
PWM34HLD PWM34 电平保持控制寄存器
FC35H
-
-
-
-
PWM35T1H PWM35T1 计数值高字节
FC38H
-
PWM35T1L
PWM35T1 计数值低字节
FC39H
PWM35T2H PWM35T2 计数值高字节
FC3AH
PWM35T2L
PWM35T2 计数值低字节
FC3BH
PWM35CR
PWM35 控制寄存器
FC3CH
ENO
INI
-
-
PWM35HLD PWM35 电平保持控制寄存器
FC3DH
-
-
-
-
PWM36T1H PWM36T1 计数值高字节
FC40H
-
PWM36T1L
PWM36T1 计数值低字节
FC41H
PWM36T2H PWM36T2 计数值高字节
FC42H
PWM36T2L
PWM36T2 计数值低字节
FC43H
PWM36CR
PWM36 控制寄存器
FC44H
ENO
INI
-
-
PWM36HLD PWM36 电平保持控制寄存器
FC45H
-
-
-
-
PWM37T1H PWM37T1 计数值高字节
FC48H
-
PWM37T1L
PWM37T1 计数值低字节
FC49H
PWM37T2H PWM37T2 计数值高字节
FC4AH
PWM37T2L
PWM37T2 计数值低字节
FC4BH
PWM37CR
PWM37 控制寄存器
FC4CH
ENO
INI
-
-
FC4DH
-
-
-
-
-
PWM37HLD PWM37 电平保持控制寄存器
0000,0000
-
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
PWM4 计数器高字节
FC50H
PWM4CL
PWM4 计数器低字节
FC51H
PWM4 时钟选择
FC52H
-
PWM4TADCH PWM4 触发 ADC 计数高字节
FC53H
-
PWM4TADCL PWM4 触发 ADC 计数低字节
FC54H
PWM4IF
x000,0000
0000,0000
PWM4CH
PWM4CKS
研发顾问: 13922805190
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
-
SELT2
PWM_PS[3:0]
xxx0,0000
x000,0000
0000,0000
FC55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
0000,0000
PWM4FDCR PWM4 异常检测控制寄存器
FC56H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
0000,0000
PWM40T1H PWM40T1 计数值高字节
FC60H
-
PWM40T1L
PWM40T1 计数值低字节
FC61H
PWM40T2H PWM40T2 计数值高字节
FC62H
PWM40T2L
PWM40T2 计数值低字节
FC63H
PWM40CR
PWM40 控制寄存器
FC64H
ENO
INI
-
-
PWM40HLD PWM40 电平保持控制寄存器
FC65H
-
-
-
-
PWM41T1H PWM41T1 计数值高字节
FC68H
-
PWM41T1L
FC69H
PWM4 中断标志寄存器
PWM41T1 计数值低字节
深圳国芯人工智能有限公司
x000,0000
0000,0000
-
x000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
传真: 0513-5501 2926/2956/2947
- 514 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
PWM41T2H PWM41T2 计数值高字节
FC6AH
PWM41T2L
PWM41T2 计数值低字节
FC6BH
PWM41CR
PWM41 控制寄存器
FC6CH
ENO
INI
-
-
PWM41HLD PWM41 电平保持控制寄存器
FC6DH
-
-
-
-
PWM42T1H PWM42T1 计数值高字节
FC70H
-
PWM42T1L
PWM42T1 计数值低字节
FC71H
PWM42T2H PWM42T2 计数值高字节
FC72H
PWM42T2L
PWM42T2 计数值低字节
FC73H
PWM42CR
PWM42 控制寄存器
FC74H
ENO
INI
-
-
PWM42HLD PWM42 电平保持控制寄存器
FC75H
-
-
-
-
PWM43T1H PWM43T1 计数值高字节
FC78H
-
PWM43T1L
PWM43T1 计数值低字节
FC79H
PWM43T2H PWM43T2 计数值高字节
FC7AH
PWM43T2L
PWM43T2 计数值低字节
FC7BH
PWM43CR
PWM43 控制寄存器
FC7CH
ENO
INI
-
-
PWM43HLD PWM43 电平保持控制寄存器
FC7DH
-
-
-
-
PWM44T1H PWM44T1 计数值高字节
FC80H
-
PWM44T1L
PWM44T1 计数值低字节
FC81H
PWM44T2H PWM44T2 计数值高字节
FC82H
PWM44T2L
PWM44T2 计数值低字节
FC83H
PWM44CR
PWM44 控制寄存器
FC84H
ENO
INI
-
-
PWM44HLD PWM44 电平保持控制寄存器
FC85H
-
-
-
-
PWM45T1H PWM45T1 计数值高字节
FC88H
-
PWM45T1L
PWM45T1 计数值低字节
FC89H
PWM45T2H PWM45T2 计数值高字节
FC8AH
PWM45T2L
PWM45T2 计数值低字节
FC8BH
PWM45CR
PWM45 控制寄存器
FC8CH
ENO
INI
-
-
PWM45HLD PWM45 电平保持控制寄存器
FC8DH
-
-
-
-
PWM46T1H PWM46T1 计数值高字节
FC90H
-
PWM46T1L
PWM46T1 计数值低字节
FC91H
PWM46T2H PWM46T2 计数值高字节
FC92H
PWM46T2L
PWM46T2 计数值低字节
FC93H
PWM46CR
PWM46 控制寄存器
FC94H
ENO
INI
-
-
PWM46HLD PWM46 电平保持控制寄存器
FC95H
-
-
-
-
PWM47T1H PWM47T1 计数值高字节
FC98H
-
PWM47T1L
PWM47T1 计数值低字节
FC99H
PWM47T2H PWM47T2 计数值高字节
FC9AH
PWM47T2L
PWM47T2 计数值低字节
FC9BH
PWM47CR
PWM47 控制寄存器
FC9CH
ENO
INI
-
-
FC9DH
-
-
-
-
-
PWM47HLD PWM47 电平保持控制寄存器
-
x000,0000
0000,0000
-
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
FCA0H
PWM5CL
PWM5 计数器低字节
FCA1H
PWM5 时钟选择
FCA2H
-
-
-
SELT2
PWM5 中断标志寄存器
FCA5H
C7IF
C6IF
C5IF
C4IF
深圳国芯人工智能有限公司
ENT2I
0000,0000
PWM5 计数器高字节
PWM5IF
ENI
x000,0000
PWM5CH
PWM5CKS
研发顾问: 13922805190
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
PWM_PS[3:0]
C3IF
C2IF
C1IF
传真: 0513-5501 2926/2956/2947
xxx0,0000
C0IF
0000,0000
- 515 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PWM5FDCR PWM5 异常检测控制寄存器
FCA6H
INVCMP
PWM50T1H PWM50T1 计数值高字节
FCB0H
-
PWM50T1L
PWM50T1 计数值低字节
FCB1H
PWM50T2H PWM50T2 计数值高字节
FCB2H
PWM50T2L
PWM50T2 计数值低字节
FCB3H
PWM50CR
PWM50 控制寄存器
FCB4H
ENO
INI
-
-
PWM50HLD PWM50 电平保持控制寄存器
FCB5H
-
-
-
-
PWM51T1H PWM51T1 计数值高字节
FCB8H
-
PWM51T1L
PWM51T1 计数值低字节
FCB9H
PWM51T2H PWM51T2 计数值高字节
FCBAH
PWM51T2L
PWM51T2 计数值低字节
FCBBH
PWM51CR
PWM51 控制寄存器
FCBCH
ENO
INI
-
-
PWM51HLD PWM51 电平保持控制寄存器
FCBDH
-
-
-
-
PWM52T1H PWM52T1 计数值高字节
FCC0H
-
PWM52T1L
PWM52T1 计数值低字节
FCC1H
PWM52T2H PWM52T2 计数值高字节
FCC2H
PWM52T2L
PWM52T2 计数值低字节
FCC3H
PWM52CR
PWM52 控制寄存器
FCC4H
ENO
INI
-
-
PWM52HLD PWM52 电平保持控制寄存器
FCC5H
-
-
-
-
PWM53T1H PWM53T1 计数值高字节
FCC8H
-
PWM53T1L
PWM53T1 计数值低字节
FCC9H
PWM53T2H PWM53T2 计数值高字节
FCCAH
PWM53T2L
PWM53T2 计数值低字节
FCCBH
PWM53CR
PWM53 控制寄存器
FCCCH
ENO
INI
-
-
PWM53HLD PWM53 电平保持控制寄存器
FCCDH
-
-
-
-
PWM54T1H PWM54T1 计数值高字节
FCD0H
-
PWM54T1L
PWM54T1 计数值低字节
FCD1H
PWM54T2H PWM54T2 计数值高字节
FCD2H
PWM54T2L
PWM54T2 计数值低字节
FCD3H
PWM54CR
PWM54 控制寄存器
FCD4H
ENO
INI
-
-
PWM54HLD PWM54 电平保持控制寄存器
FCD5H
-
-
-
-
PWM55T1H PWM55T1 计数值高字节
FCD8H
-
PWM55T1L
PWM55T1 计数值低字节
FCD9H
PWM55T2H PWM55T2 计数值高字节
FCDAH
PWM55T2L
PWM55T2 计数值低字节
FCDBH
PWM55CR
PWM55 控制寄存器
FCDCH
ENO
INI
-
-
PWM55HLD PWM55 电平保持控制寄存器
FCDDH
-
-
-
-
PWM56T1H PWM56T1 计数值高字节
FCE0H
-
PWM56T1L
PWM56T1 计数值低字节
FCE1H
PWM56T2H PWM56T2 计数值高字节
FCE2H
PWM56T2L
PWM56T2 计数值低字节
FCE3H
PWM56CR
PWM56 控制寄存器
FCE4H
ENO
INI
-
-
PWM56HLD PWM56 电平保持控制寄存器
FCE5H
-
-
-
-
PWM57T1H PWM57T1 计数值高字节
FCE8H
-
深圳国芯人工智能有限公司
INVIO
ENFD
技术支持: 13922829991
FLTFLIO
-
FDCMP
研发顾问: 13922805190
FDIO
FDIF
0000,0000
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
0000,0000
-
x000,0000
0000,0000
国内分销商电话: 0513-5501 2928/2929/2966
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
x000,0000
传真: 0513-5501 2926/2956/2947
- 516 -
STC8G 系列技术手册
PWM57T1L
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
PWM57T1 计数值低字节
FCE9H
PWM57T2H PWM57T2 计数值高字节
FCEAH
PWM57T2L
PWM57T2 计数值低字节
FCEBH
PWM57CR
PWM57 控制寄存器
FCECH
ENO
INI
-
-
FCEDH
-
-
-
-
PWM57HLD PWM57 电平保持控制寄存器
研发顾问: 13922805190
0000,0000
-
x000,0000
0000,0000
-
ENI
ENT2I
ENT1I
00xx,x000
-
HLDH
HLDL
xxxx,xx00
增强型 PWM 全局配置寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMSET
F1H
ENGLBSET
PWMRST
ENPWM5
ENPWM4
ENPWM3
ENPWM2
ENPWM1
ENPWM0
ENGLBSET:全局设置功能控制。
0:6 组 PWM 采用各自独立设置方式。
每组 PWM 分别使用 PWMCFG01/PWMCFG23/PWMCFG45 相应的控制位就绪独立配置。
1:6 组 PWM 采用统一设置方式。
每组 PWM 均采用 PWMCFG01 中的 PWM0 的设置进行配置。
PWMRST:软件复位 6 组 PWM。
0:无效
1:复位所有 PWM 的 XFR 寄存器,但不复位 SFR。(需要软件清零)
。
ENPWM5:PWM5 使能位(包括 PWM50~PWM54)
0:关闭 PWM5
1:使能 PWM5
。
ENPWM4:PWM4 使能位(包括 PWM40~PWM47)
0:关闭 PWM4
1:使能 PWM4
。
ENPWM3:PWM3 使能位(包括 PWM30~PWM37)
:关闭
PWM3
0
1:使能 PWM3
。
ENPWM2:PWM2 使能位(包括 PWM20~PWM27)
0:关闭 PWM2
1:使能 PWM2
。
ENPWM1:PWM1 使能位(包括 PWM10~PWM17)
0:关闭 PWM1
1:使能 PWM1
。
ENPWM0:PWM0 使能位(包括 PWM00~PWM07)
0:关闭 PWM0
1:使能 PWM0
增强型 PWM 配置寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWMCFG01
F6H
PWM1CBIF
EPWM1CBI
FLTPS0
PWM1CEN
PWM0CBIF
EPWM0CBI
ENPWM0TA
PWM0CEN
PWMCFG23
F7H
PWM3CBIF
EPWM3CBI
FLTPS1
PWM3CEN
PWM2CBIF
EPWM2CBI
ENPWM2TA
PWM2CEN
PWMCFG45
FEH
PWM5CBIF
EPWM5CBI
FLTPS2
PWM5CEN
PWM4CBIF
EPWM4CBI
ENPWM4TA
PWM4CEN
PWMnCBIF:PWMn 计数器归零中断标志位。(n=0~5)
当 15 位的 PWMn 计数器记满溢出归零时,硬件自动将此位置 1,并向 CPU 提出中断请求,此标志
位需要软件清零。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 517 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
EPWMnCBI:PWMn 计数器归零中断使能位。(n=0~5)
0:关闭 PWMn 计数器归零中断(PWMnCBIF 依然会被硬件置位)
1:使能 PWMn 计数器归零中断
PWMnCEN: PWMn 波形发生器开始计数。(n=0~5)
0:PWMn 停止计数
1:PWMn 计数器开始计数
关于 PWMnCEN 控制位的重要说明:
PWMnCEN 一旦被使能后,内部的 PWMn 计数器会立即开始计数,并与 T1/T2 的值进行比较。
所以 PWMnCEN 必须在其他所有的 PWM 设置(包括 T1/T2 的设置、初始电平的设置、PWM
异常检测的设置以及 PWM 中断设置)都完成后,最后才能使能 PWMnCEN 位。
在 PWMn 计数器计数的过程中,PWMnCEN 控制位被关闭时,PWMn 计数会立即停止,当再次
使能 PWMnCEN 控制位时,PWMn 的计数会从 0 开始重新计数,而不会记忆 PWMn 停止计数
前的计数值
EPWMnTA:PWMn 是否与 ADC 关联。(n=0、2、4)
0:PWMn 与 ADC 不关联
1:PWMn 与 ADC 相关联。
允许在 PWMn 周期中某个时间点触发 A/D 转换,使用 PWMnTADCH 和 PWMnTADCL 进行设置。
(注意:需要同时使能 ADC_CONTR 寄存器中的 ADC_POWER 位和 ADC_EPWMT 位,PWM
只是会自动将 ADC_START 置 1,只有 PWM0、PWM2、PWM4 可以触发 ADC)
FLTPS0、FLTPS1、FLTPS2:外部异常检测脚选择控制位
PWM0/PWM1/PWM3/PWM5
PWM2
PWM4
外部异常检测脚
外部异常检测脚
外部异常检测脚
0
PWMFLT(P3.5)
PWMFLT(P3.5)
PWMFLT(P3.5)
0
1
PWMFLT(P3.5)
PWMFLT2(P0.6)
PWMFLT3(P0.7)
0
1
0
PWMFLT(P3.5)
PWMFLT3(P0.7)
PWMFLT2(P0.6)
0
1
1
PWMFLT2(P0.6)
PWMFLT2(P0.6)
PWMFLT2(P0.6)
1
0
0
PWMFLT2(P0.6)
PWMFLT(P3.5)
PWMFLT3(P0.7)
1
0
1
PWMFLT2(P0.6)
PWMFLT3(P0.7)
PWMFLT(P3.5)
1
1
0
PWMFLT3(P0.7)
PWMFLT(P3.5)
PWMFLT2(P0.6)
1
1
1
PWMFLT3(P0.7)
PWMFLT2(P0.6)
PWMFLT(P3.5)
FLTPS2
FLTPS1
FLTPS0
0
0
0
PWM 中断标志寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWM0IF
FF05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM1IF
FF55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM2IF
FFA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM3IF
FC05H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM4IF
FC55H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
PWM5IF
FCA5H
C7IF
C6IF
C5IF
C4IF
C3IF
C2IF
C1IF
C0IF
CiIF:PWMn 的第 i 通道中断标志位。
(n=0~5;i=0~7)
可设置在各路 PWM 的 T1 和 T2。当所设置的点发生匹配事件时,硬件自动将此位置 1,并向 CPU
提出中断请求,此标志位需要软件清零。
PWM 异常检测控制寄存器
符号
地址
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
B2
B1
传真: 0513-5501 2926/2956/2947
B0
- 518 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM0FDCR
FF06H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM1FDCR
FF56H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
PWM2FDCR
FFA6H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM3FDCR
FC06H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
PWM4FDCR
FC56H
INVCMP
INVIO
ENFD
FLTFLIO
EFDI
FDCMP
FDIO
FDIF
PWM5FDCR
FCA6H
INVCMP
INVIO
ENFD
FLTFLIO
-
FDCMP
FDIO
FDIF
INVCMP:比较器器结果异常信号处理
0:比较器器结果由低变高为异常信号
1:比较器器结果由高变低为异常信号
INVIO:外部 PWMFLT 端口异常信号处理
0:外部 PWMFLT 端口信号由低变高为异常信号
1:外部 PWMFLT 端口信号由高变低为异常信号
(注:每组 PWM 的外部异常检测 PWMFLT 端口由 FLTPS0、FLTPS1、FLTPS 进行选择)
(n=0~5)
ENFD:PWMn 外部异常检测控制位。
0:关闭 PWMn 外部异常检测功能
1:使能 PWMn 外部异常检测功能
FLTFLIO:发生 PWMn 外部异常时对 PWMn 输出口控制位。
(n=0~5)
0:发生 PWMn 外部异常时,PWMn 的输出口不作任何改变
1:发生 PWMn 外部异常时,PWMn 的输出口立即被设置为高阻输入模式。
(注:只有 ENO=1 所对应的端口才会被强制悬空)
EFDI:PWMn 异常检测中断使能位。(n=0、2、4)
0:关闭 PWMn 异常检测中断(FDIF 依然会被硬件置位)
1:使能 PWMn 异常检测中断
FDCMP:比较器输出异常检测使能位。(n=0~5)
0:比较器与 PWMn 无关
1:设定 PWMn 异常检测源为比较器输出(异常类型由 INVCMP 设定)
FDIO:PWMFLT 端口电平异常检测使能位。(n=0~5)
0:PWMFLT 端口电平与 PWMn 无关
1:设定 PWMn 异常检测源为 PWMFLT 端口(异常类型由 INVIO 设定)
FDIF:PWMn 异常检测中断标志位。(n=0~5)
当发生 PWMn 异常时,硬件自动将此位置 1。当 EFDI==1 时,程序会跳转到相应中断入口执行中断
服务程序。需要软件清零。
(注:只有 PWM0、PWM2 和 PWM4 才会进中断,PWM1、PWM3、PWM5 有异常检测功能,但
不进中断服务程序)
PWM 计数器寄存器
符号
地址
B7
PWM0CH
FF00H
-
PWM0CL
FF01H
PWM1CH
FF50H
PWM1CL
FF51H
PWM2CH
FFA0H
PWM2CL
FFA1H
PWM3CH
FC00H
深圳国芯人工智能有限公司
B6
B5
B4
B3
B2
B1
B0
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 519 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PWM3CL
FC01H
PWM4CH
FC50H
PWM4CL
FC51H
PWM5CH
FCA0H
PWM5CL
FCA1H
技术支持: 13922829991
研发顾问: 13922805190
-
PWMnCH:PWMn 计数器周期值的高 7 位。(n=0~5)
PWMnCL:PWMn 计数器周期值的低 8 位。(n=0~5)
PWMn 计数器为一个 15 位的寄存器,可设定 1~32767 之间的任意值作为 PWMn 的周期。PWMn 波形发
生器内部的计数器从 0 开始计数,每个 PWMn 时钟周期递增 1 ,当内部计数器的计数值达到
[PWMnCH,PWMnCL]所设定的 PWMn 周期时,PWMn 波形发生器内部的计数器将会从 0 重新开
始开始计数,硬件会自动将 PWMn 归零中断中断标志位 PWMnCBIF 置 1,若 EPWMnCBI=1,程序
将跳转到相应中断入口执行中断服务程序。
PWM 时钟选择寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
PWM0CKS
FF02H
-
-
-
SELT2
PWM_PS[3:0]
PWM1CKS
FF52H
-
-
-
SELT2
PWM_PS[3:0]
PWM2CKS
FFA2H
-
-
-
SELT2
PWM_PS[3:0]
PWM3CKS
FC02H
-
-
-
SELT2
PWM_PS[3:0]
PWM4CKS
FC52H
-
-
-
SELT2
PWM_PS[3:0]
PWM5CKS
FCA2H
-
-
-
SELT2
PWM_PS[3:0]
B0
SELT2:PWMn 时钟源选择。(n=0~5)
0:PWMn 时钟源为系统时钟经分频器分频之后的时钟
1:PWMn 时钟源为定时器 2 的溢出脉冲
PWM_PS[3:0]:系统时钟预分频参数
SELT2
PWM_PS[3:0]
PWMn 输入时钟源频率
1
xxxx
定时器 2 的溢出脉冲
0
0000
SYSclk/1
0
0001
SYSclk/2
0
0010
SYSclk/3
…
…
…
0
x
SYSclk/(x+1)
…
…
…
0
1111
SYSclk/16
PWM 触发 ADC 计数器寄存器
符号
地址
B7
PWM0TADCH
FF03H
-
PWM0TADCL
FF04H
PWM2TADCH
FFA3H
PWM2TADCL
FFA4H
PWM4TADCH
FC53H
PWM4TADCL
FC54H
B6
B5
B4
B3
B2
B1
B0
-
PWMnTADCH:PWMn 触发 ADC 时间点的高 7 位。(n=0、2、4)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 520 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWMnTADCL:PWMn 触发 ADC 时间点的低 8 位。
(n=0、2、4)
若 EPWMnTA =1 且 ADC_POWER=1 时,在 PWMn 的计数周期中,当 PWMn 的内部计数值与
{PWMnTADCH, PWMnTADCL}所组成一个 15 位的寄存器的值相等时,硬件自动触发 A/D 转换。
PWM 电平输出设置计数值寄存器
符号
地址
B7
PWM00T1H
FF10H
-
PWM00T1L
FF11H
PWM00T2H
FF12H
PWM00T2L
FF13H
PWM01T1H
FF18H
PWM01T1L
FF19H
PWM01T2H
FF1AH
PWM01T2L
FF1BH
PWM02T1H
FF20H
PWM02T1L
FF21H
PWM02T2H
FF22H
PWM02T2L
FF23H
PWM03T1H
FF28H
PWM03T1L
FF29H
PWM03T2H
FF2AH
PWM03T2L
FF2BH
PWM04T1H
FF30H
PWM04T1L
FF31H
PWM04T2H
FF32H
PWM04T2L
FF33H
PWM05T1H
FF38H
PWM05T1L
FF39H
PWM05T2H
FF3AH
PWM05T2L
FF3BH
PWM06T1H
FF40H
PWM06T1L
FF41H
PWM06T2H
FF42H
PWM06T2L
FF43H
PWM07T1H
FF48H
PWM07T1L
FF49H
PWM07T2H
FF4AH
PWM07T2L
FF4BH
PWM10T1H
FF60H
PWM10T1L
FF61H
PWM10T2H
FF62H
PWM10T2L
FF63H
PWM11T1H
FF68H
PWM11T1L
FF69H
深圳国芯人工智能有限公司
B6
B5
B4
B3
B2
B1
B0
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 521 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PWM11T2H
FF6AH
PWM11T2L
FF6BH
PWM12T1H
FF70H
PWM12T1L
FF71H
PWM12T2H
FF72H
PWM12T2L
FF73H
PWM13T1H
FF78H
PWM13T1L
FF79H
PWM13T2H
FF7AH
PWM13T2L
FF7BH
PWM14T1H
FF80H
PWM14T1L
FF81H
PWM14T2H
FF82H
PWM14T2L
FF83H
PWM15T1H
FF88H
PWM15T1L
FF89H
PWM15T2H
FF8AH
PWM15T2L
FF8BH
PWM16T1H
FF90H
PWM16T1L
FF91H
PWM16T2H
FF92H
PWM16T2L
FF93H
PWM17T1H
FF98H
PWM17T1L
FF99H
PWM17T2H
FF9AH
PWM17T2L
FF9BH
PWM20T1H
FFB0H
PWM20T1L
FFB1H
PWM20T2H
FFB2H
PWM20T2L
FFB3H
PWM21T1H
FFB8H
PWM21T1L
FFB9H
PWM21T2H
FFBAH
PWM21T2L
FFBBH
PWM22T1H
FFC0H
PWM22T1L
FFC1H
PWM22T2H
FFC2H
PWM22T2L
FFC3H
PWM23T1H
FFC8H
PWM23T1L
FFC9H
PWM23T2H
FFCAH
PWM23T2L
FFCBH
PWM24T1H
FFD0H
PWM24T1L
FFD1H
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 522 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PWM24T2H
FFD2H
PWM24T2L
FFD3H
PWM25T1H
FFD8H
PWM25T1L
FFD9H
PWM25T2H
FFDAH
PWM25T2L
FFDBH
PWM26T1H
FFE0H
PWM26T1L
FFE1H
PWM26T2H
FFE2H
PWM26T2L
FFE3H
PWM27T1H
FFE8H
PWM27T1L
FFE9H
PWM27T2H
FFEAH
PWM27T2L
FFEBH
PWM30T1H
FC10H
PWM30T1L
FC11H
PWM30T2H
FC12H
PWM30T2L
FC13H
PWM31T1H
FC18H
PWM31T1L
FC19H
PWM31T2H
FC1AH
PWM31T2L
FC1BH
PWM32T1H
FC20H
PWM32T1L
FC21H
PWM32T2H
FC22H
PWM32T2L
FC23H
PWM33T1H
FC28H
PWM33T1L
FC29H
PWM33T2H
FC2AH
PWM33T2L
FC2BH
PWM34T1H
FC30H
PWM34T1L
FC31H
PWM34T2H
FC32H
PWM34T2L
FC33H
PWM35T1H
FC38H
PWM35T1L
FC39H
PWM35T2H
FC3AH
PWM35T2L
FC3BH
PWM36T1H
FC40H
PWM36T1L
FC41H
PWM36T2H
FC42H
PWM36T2L
FC43H
PWM37T1H
FC48H
PWM37T1L
FC49H
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 523 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PWM37T2H
FC4AH
PWM37T2L
FC4BH
PWM40T1H
FC60H
PWM40T1L
FC61H
PWM40T2H
FC62H
PWM40T2L
FC63H
PWM41T1H
FC68H
PWM41T1L
FC69H
PWM41T2H
FC6AH
PWM41T2L
FC6BH
PWM42T1H
FC70H
PWM42T1L
FC71H
PWM42T2H
FC72H
PWM42T2L
FC73H
PWM43T1H
FC78H
PWM43T1L
FC79H
PWM43T2H
FC7AH
PWM43T2L
FC7BH
PWM44T1H
FC80H
PWM44T1L
FC81H
PWM44T2H
FC82H
PWM44T2L
FC83H
PWM45T1H
FC88H
PWM45T1L
FC89H
PWM45T2H
FC8AH
PWM45T2L
FC8BH
PWM46T1H
FC90H
PWM46T1L
FC91H
PWM46T2H
FC92H
PWM46T2L
FC93H
PWM47T1H
FC98H
PWM47T1L
FC99H
PWM47T2H
FC9AH
PWM47T2L
FC9BH
PWM50T1H
FCB0H
PWM50T1L
FCB1H
PWM50T2H
FCB2H
PWM50T2L
FCB3H
PWM51T1H
FCB8H
PWM51T1L
FCB9H
PWM51T2H
FCBAH
PWM51T2L
FCBBH
PWM52T1H
FCC0H
PWM52T1L
FCC1H
深圳国芯人工智能有限公司
技术支持: 13922829991
研发顾问: 13922805190
-
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 524 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
PWM52T2H
FCC2H
PWM52T2L
FCC3H
PWM53T1H
FCC8H
PWM53T1L
FCC9H
PWM53T2H
FCCAH
PWM53T2L
FCCBH
PWM54T1H
FCD0H
PWM54T1L
FCD1H
PWM54T2H
FCD2H
PWM54T2L
FCD3H
PWM55T1H
FCD8H
PWM55T1L
FCD9H
PWM55T2H
FCDAH
PWM55T2L
FCDBH
PWM56T1H
FCE0H
PWM56T1L
FCE1H
PWM56T2H
FCE2H
PWM56T2L
FCE3H
PWM57T1H
FCE8H
PWM57T1L
FCE9H
PWM57T2H
FCEAH
PWM57T2L
FCEBH
技术支持: 13922829991
研发顾问: 13922805190
-
PWMniT1H:PWMn 的通道 i 的 T1 计数器值的高 7 位。(n=0~5,i=0~7)
PWMniT1L:PWMn 的通道 i 的 T1 计数器值的高 8 位。(n=0~5,i=0~7)
PWMniT2H:PWMn 的通道 i 的 T2 计数器值的高 7 位。(n=0~5,i=0~7)
PWMniT2L:PWMn 的通道 i 的 T2 计数器值的高 8 位。(n=0~5,i=0~7)
每组 PWM 的每个通道的{PWMniT1H, PWMniT1L}和{PWMniT2H, PWMniT2L}分别组合成两个 15 位的
寄存器,用于控制各路 PWM 每个周期中输出 PWM 波形的两个触发点。在 PWMn 的计数周期中,
当 PWMn 的内部计数值与所设置的 T1 的值{PWMniT1H, PWMniT1L}相等时,PWM 的输出低电平;
当 PWMn 的内部计数值与 T2 的值{PWMniT2H, PWMniT2L}相等时,PWM 的输出高电平。
注意:当{PWMniT1H, PWMniT1L}与{PWMniT2H, PWMniT2L}的值设置相等时,若 PWM 的内部计数
值与所设置的 T1/T2 的值相等,则会固定输出低电平。
PWM 通道控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWM00CR
FF14H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM01CR
FF1CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM02CR
FF24H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM03CR
FF2CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM04CR
FF34H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM05CR
FF3CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM06CR
FF44H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM07CR
FF4CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM10CR
FF64H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 525 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM11CR
FF6CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM12CR
FF74H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM13CR
FF7CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM14CR
FF84H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM15CR
FF8CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM16CR
FF94H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM17CR
FF9CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM20CR
FFB4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM21CR
FFBCH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM22CR
FFC4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM23CR
FFCCH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM24CR
FFD4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM25CR
FFDCH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM26CR
FFE4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM27CR
FFECH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM30CR
FC14H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM31CR
FC1CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM32CR
FC24H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM33CR
FC2CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM34CR
FC34H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM35CR
FC3CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM36CR
FC44H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM37CR
FC4CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM40CR
FC64H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM41CR
FC6CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM42CR
FC74H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM43CR
FC7CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM44CR
FC84H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM45CR
FC8CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM46CR
FC94H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM47CR
FC9CH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM50CR
FCB4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM51CR
FCBCH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM52CR
FCC4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM53CR
FCCCH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM54CR
FCD4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM55CR
FCDCH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM56CR
FCE4H
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
PWM57CR
FCECH
ENO
INI
-
-
-
ENI
ENT2I
ENT1I
ENO:PWMni 输出使能位。(n=0~5,i=0~7)
0:第 n 路 PWM 的 i 通道相应 PWMni 端口为 GPIO
1:第 n 路 PWM 的 i 通道相应 PWMni 端口为 PWM 输出口,受 PWMn 波形发生器控制
INI:设置 PWMni 输出端口的初始电平。(n=0~5,i=0~7)
0:第 n 路 PWM 的 i 通道初始电平为低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 526 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
1:第 n 路 PWM 的 i 通道初始电平为高电平
ENI:第 n 路 PWM 的 i 通道中断使能控制位。(n=0~5,i=0~7)
0:关闭第 n 路 PWM 的 i 通道的 PWM 中断
1:使能第 n 路 PWM 的 i 通道的 PWM 中断
ENT2I:第 n 路 PWM 的 i 通道在第 2 个触发点中断使能控制位。(n=0~5,i=0~7)
0:关闭第 n 路 PWM 的 i 通道在第 2 个触发点中断
1:使能第 n 路 PWM 的 i 通道在第 2 个触发点中断
ENT1I:第 n 路 PWM 的 i 通道在第 1 个触发点中断使能控制位。(n=0~5,i=0~7)
0:关闭第 n 路 PWM 的 i 通道在第 1 个触发点中断
1:使能第 n 路 PWM 的 i 通道在第 1 个触发点中断
PWM 通道电平保持控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PWM00HLD
FF15H
-
-
-
-
-
-
HLDH
HLDL
PWM01HLD
FF1DH
-
-
-
-
-
-
HLDH
HLDL
PWM02HLD
FF25H
-
-
-
-
-
-
HLDH
HLDL
PWM03HLD
FF2DH
-
-
-
-
-
-
HLDH
HLDL
PWM04HLD
FF35H
-
-
-
-
-
-
HLDH
HLDL
PWM05HLD
FF3DH
-
-
-
-
-
-
HLDH
HLDL
PWM06HLD
FF45H
-
-
-
-
-
-
HLDH
HLDL
PWM07HLD
FF4DH
-
-
-
-
-
-
HLDH
HLDL
PWM10HLD
FF65H
-
-
-
-
-
-
HLDH
HLDL
PWM11HLD
FF6DH
-
-
-
-
-
-
HLDH
HLDL
PWM12HLD
FF75H
-
-
-
-
-
-
HLDH
HLDL
PWM13HLD
FF7DH
-
-
-
-
-
-
HLDH
HLDL
PWM14HLD
FF85H
-
-
-
-
-
-
HLDH
HLDL
PWM15HLD
FF8DH
-
-
-
-
-
-
HLDH
HLDL
PWM16HLD
FF95H
-
-
-
-
-
-
HLDH
HLDL
PWM17HLD
FF9DH
-
-
-
-
-
-
HLDH
HLDL
PWM20HLD
FFB5H
-
-
-
-
-
-
HLDH
HLDL
PWM21HLD
FFBDH
-
-
-
-
-
-
HLDH
HLDL
PWM22HLD
FFC5H
-
-
-
-
-
-
HLDH
HLDL
PWM23HLD
FFCDH
-
-
-
-
-
-
HLDH
HLDL
PWM24HLD
FFD5H
-
-
-
-
-
-
HLDH
HLDL
PWM25HLD
FFDDH
-
-
-
-
-
-
HLDH
HLDL
PWM26HLD
FFE5H
-
-
-
-
-
-
HLDH
HLDL
PWM27HLD
FFEDH
-
-
-
-
-
-
HLDH
HLDL
PWM30HLD
FC15H
-
-
-
-
-
-
HLDH
HLDL
PWM31HLD
FC1DH
-
-
-
-
-
-
HLDH
HLDL
PWM32HLD
FC25H
-
-
-
-
-
-
HLDH
HLDL
PWM33HLD
FC2DH
-
-
-
-
-
-
HLDH
HLDL
PWM34HLD
FC35H
-
-
-
-
-
-
HLDH
HLDL
PWM35HLD
FC3DH
-
-
-
-
-
-
HLDH
HLDL
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 527 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM36HLD
FC45H
-
-
-
-
-
-
HLDH
HLDL
PWM37HLD
FC4DH
-
-
-
-
-
-
HLDH
HLDL
PWM40HLD
FC65H
-
-
-
-
-
-
HLDH
HLDL
PWM41HLD
FC6DH
-
-
-
-
-
-
HLDH
HLDL
PWM42HLD
FC75H
-
-
-
-
-
-
HLDH
HLDL
PWM43HLD
FC7DH
-
-
-
-
-
-
HLDH
HLDL
PWM44HLD
FC85H
-
-
-
-
-
-
HLDH
HLDL
PWM45HLD
FC8DH
-
-
-
-
-
-
HLDH
HLDL
PWM46HLD
FC95H
-
-
-
-
-
-
HLDH
HLDL
PWM47HLD
FC9DH
-
-
-
-
-
-
HLDH
HLDL
PWM50HLD
FCB5H
-
-
-
-
-
-
HLDH
HLDL
PWM51HLD
FCBDH
-
-
-
-
-
-
HLDH
HLDL
PWM52HLD
FCC5H
-
-
-
-
-
-
HLDH
HLDL
PWM53HLD
FCCDH
-
-
-
-
-
-
HLDH
HLDL
PWM54HLD
FCD5H
-
-
-
-
-
-
HLDH
HLDL
PWM55HLD
FCDDH
-
-
-
-
-
-
HLDH
HLDL
PWM56HLD
FCE5H
-
-
-
-
-
-
HLDH
HLDL
PWM57HLD
FCEDH
-
-
-
-
-
-
HLDH
HLDL
HLDH:第 n 路 PWM 的 i 通道强制输出高电平控制位。(n=0~5,i=0~7)
0:第 n 路 PWM 的 i 通道正常输出
1:第 n 路 PWM 的 i 通道强制输出高电平
HLDL:第 n 路 PWM 的 i 通道强制输出低电平控制位。(n=0~5,i=0~7)
0:第 n 路 PWM 的 i 通道正常输出
1:第 n 路 PWM 的 i 通道强制输出低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 528 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
18.2 范例程序
18.2.1
输出任意周期和任意占空比的波形
汇编代码
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
PWMSET
PWMCFG01
PWMCFG23
PWMCFG45
DATA
DATA
DATA
DATA
0F1H
0F6H
0F7H
0FEH
PWM0CH
PWM0CL
PWM0CKS
PWM0TADCH
PWM0TADCL
PWM0IF
PWM0FDCR
PWM00T1H
PWM00T1L
PWM00T2H
PWM00T2L
PWM00CR
PWM00HLD
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
0FF00H
0FF01H
0FF02H
0FF03H
0FF04H
0FF05H
0FF06H
0FF10H
0FF11H
0FF12H
0FF13H
0FF14H
0FF15H
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
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
- 529 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
MOV
MOV
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
PWMSET,#01H
MOV
CLR
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A
DPTR,#PWM0CKS
@DPTR,A
A,#10H
DPTR,#PWM0CH
@DPTR,A
A,#00H
DPTR,#PWM0CL
@DPTR,A
A,#01H
DPTR,#PWM00T1H
@DPTR,A
A,#00H
DPTR,#PWM00T1L
@DPTR,A
A,#05H
DPTR,#PWM00T2H
@DPTR,A
A,#00H
DPTR,#PWM00T2L
@DPTR,A
A,#80H
DPTR,#PWM00CR
@DPTR,A
P_SW2,#00H
MOV
PWMCFG01,#01H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 PWM0 模块(必须先使能模块后面的设置才有效)
;PWM0 时钟为系统时钟
;设置 PWM0 周期为 1000H 个 PWM 时钟
;在计数值为 100H 地方 PWM00 通道输出低电平
;在计数值为 500H 地方 PWM00 通道输出高电平
;使能 PWM00 输出
;启动 PWM0 模块
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
PWMSET
PWMCFG01
PWMCFG23
PWMCFG45
=
=
=
=
0xF1;
0xF6;
0xF7;
0xFE;
#define
#define
#define
#define
#define
#define
PWM0C
PWM0CH
PWM0CL
PWM0CKS
PWM0TADC
PWM0TADCH
(*(unsigned int volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF01)
(*(unsigned char volatile xdata *)0xFF02)
(*(unsigned int volatile xdata *)0xFF03)
(*(unsigned char volatile xdata *)0xFF03)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 530 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
PWM0TADCL
PWM0IF
PWM0FDCR
PWM00T1
PWM00T1H
PWM00T1L
PWM00T2H
PWM00T2
PWM00T2L
PWM00CR
PWM00HLD
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 *)0xFF04)
(*(unsigned char volatile xdata *)0xFF05)
(*(unsigned char volatile xdata *)0xFF06)
(*(unsigned int volatile xdata *)0xFF10)
(*(unsigned char volatile xdata *)0xFF10)
(*(unsigned char volatile xdata *)0xFF11)
(*(unsigned char volatile xdata *)0xFF12)
(*(unsigned int volatile xdata *)0xFF12)
(*(unsigned char volatile xdata *)0xFF13)
(*(unsigned char volatile xdata *)0xFF14)
(*(unsigned char volatile xdata *)0xFF15)
=
=
=
=
=
=
=
=
=
=
=
=
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;
PWMSET = 0x01;
//使能 PWM0 模块(必须先使能模块后面的设置才有效)
P_SW2 = 0x80;
PWM0CKS = 0x00;
PWM0C = 0x1000;
PWM00T1= 0x0100;
PWM00T2= 0x0500;
PWM00CR= 0x80;
P_SW2 = 0x00;
//PWM0 时钟为系统时钟
//设置 PWM0 周期为 1000H 个 PWM 时钟
//在计数值为 100H 地方 PWM00 通道输出低电平
//在计数值为 500H 地方 PWM00 通道输出高电平
//使能 PWM00 输出
PWMCFG01 = 0x01;
//启动 PWM0 模块
while (1);
}
18.2.2
两路PWM实现互补对称带死区控制的波形
汇编代码
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 531 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
;测试工作频率为 11.0592MHz
P_SW2
DATA
0BAH
PWMSET
PWMCFG01
PWMCFG23
PWMCFG45
DATA
DATA
DATA
DATA
0F1H
0F6H
0F7H
0FEH
PWM0CH
PWM0CL
PWM0CKS
PWM0TADCH
PWM0TADCL
PWM0IF
PWM0FDCR
PWM00T1H
PWM00T1L
PWM00T2H
PWM00T2L
PWM00CR
PWM00HLD
PWM01T1H
PWM01T1L
PWM01T2H
PWM01T2L
PWM01CR
PWM01HLD
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
0FF00H
0FF01H
0FF02H
0FF03H
0FF04H
0FF05H
0FF06H
0FF10H
0FF11H
0FF12H
0FF13H
0FF14H
0FF15H
0FF18H
0FF19H
0FF1AH
0FF1BH
0FF1CH
0FF1DH
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
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
- 532 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
MOV
P5M1, #00H
MOV
PWMSET,#01H
MOV
CLR
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A
DPTR,#PWM0CKS
@DPTR,A
A,#08H
DPTR,#PWM0CH
@DPTR,A
A,#00H
DPTR,#PWM0CL
@DPTR,A
A,#01H
DPTR,#PWM00T1H
@DPTR,A
A,#00H
DPTR,#PWM00T1L
@DPTR,A
A,#07H
DPTR,#PWM00T2H
@DPTR,A
A,#00H
DPTR,#PWM00T2L
@DPTR,A
A,#00H
DPTR,#PWM01T2H
@DPTR,A
A,#80H
DPTR,#PWM01T2L
@DPTR,A
A,#07H
DPTR,#PWM01T1H
@DPTR,A
A,#80H
DPTR,#PWM01T1L
@DPTR,A
A,#080H
DPTR,#PWM00CR
@DPTR,A
A,#80H
DPTR,#PWM01CR
@DPTR,A
P_SW2,#00H
MOV
PWMCFG01,#01H
JMP
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 PWM0 模块(必须先使能模块后面的设置才有效)
;PWM0 时钟为系统时钟
;设置 PWM0 周期为 0800H 个 PWM 时钟
;PWM00 在计数值为 0100H 地方输出低电平
;PWM00 在计数值为 0700H 地方输出高电平
;PWM01 在计数值为 0080H 地方输出高电平
;PWM01 在计数值为 0780H 地方输出低电平
;使能 PWM00 输出
;使能 PWM01 输出
;启动 PWM0 模块
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 533 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
PWMSET
PWMCFG01
PWMCFG23
PWMCFG45
=
=
=
=
0xF1;
0xF6;
0xF7;
0xFE;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
PWM0C
PWM0CH
PWM0CL
PWM0CKS
PWM0TADC
PWM0TADCH
PWM0TADCL
PWM0IF
PWM0FDCR
PWM00T1
PWM00T1H
PWM00T1L
PWM00T2H
PWM00T2
PWM00T2L
PWM00CR
PWM00HLD
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 int volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF01)
(*(unsigned char volatile xdata *)0xFF02)
(*(unsigned int volatile xdata *)0xFF03)
(*(unsigned char volatile xdata *)0xFF03)
(*(unsigned char volatile xdata *)0xFF04)
(*(unsigned char volatile xdata *)0xFF05)
(*(unsigned char volatile xdata *)0xFF06)
(*(unsigned int volatile xdata *)0xFF10)
(*(unsigned char volatile xdata *)0xFF10)
(*(unsigned char volatile xdata *)0xFF11)
(*(unsigned char volatile xdata *)0xFF12)
(*(unsigned int volatile xdata *)0xFF12)
(*(unsigned char volatile xdata *)0xFF13)
(*(unsigned char volatile xdata *)0xFF14)
(*(unsigned char volatile xdata *)0xFF15)
=
=
=
=
=
=
=
=
=
=
=
=
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;
PWMSET = 0x01;
//使能 PWM0 模块(必须先使能模块后面的设置才有效)
P_SW2 = 0x80;
PWM0CKS = 0x00;
PWM0C = 0x0800;
PWM00T1= 0x0100;
//PWM0 时钟为系统时钟
//设置 PWM0 周期为 0800H 个 PWM 时钟
//PWM00 在计数值为 100H 地方输出低电平
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 534 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
PWM00T2= 0x0700;
PWM01T2= 0x0080;
PWM01T1= 0x0780;
PWM00CR= 0x80;
PWM01CR= 0x80;
P_SW2 = 0x00;
//PWM00 在计数值为 700H 地方输出高电平
//PWM01 在计数值为 0080H 地方输出高电平
//PWM01 在计数值为 0780H 地方输出低电平
//使能 PWM00 输出
//使能 PWM01 输出
PWMCFG01 = 0x01;
//启动 PWM0 模块
while (1);
}
18.2.3
PWM实现渐变灯(呼吸灯)
汇编代码
;测试工作频率为 11.0592MHz
CYCLE
EQU
1000H
P_SW2
DATA
0BAH
PWMSET
PWMCFG01
PWMCFG23
PWMCFG45
DATA
DATA
DATA
DATA
0F1H
0F6H
0F7H
0FEH
PWM0CH
PWM0CL
PWM0CKS
PWM0TADCH
PWM0TADCL
PWM0IF
PWM0FDCR
PWM00T1H
PWM00T1L
PWM00T2H
PWM00T2L
PWM00CR
PWM00HLD
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
0FF00H
0FF01H
0FF02H
0FF03H
0FF04H
0FF05H
0FF06H
0FF10H
0FF11H
0FF12H
0FF13H
0FF14H
0FF15H
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
DIR
VALL
VALH
BIT
DATA
DATA
20H.0
21H
22H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 535 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
ORG
LJMP
ORG
LJMP
0000H
MAIN
00B3H
PWM0ISR
ORG
0100H
PUSH
PUSH
PUSH
PUSH
PUSH
ACC
PSW
DPL
DPH
P_SW2
MOV
MOV
JNB
ANL
JNB
P_SW2,#80H
A,PWMCFG01
ACC.3,ISREXIT
PWMCFG01,#NOT 08H
DIR,PWMDN
MOV
ADD
MOV
MOV
ADDC
MOV
CJNE
MOV
CJNE
CLR
JMP
A,VALL
A,#1
VALL,A
A,VALH
A,#0
VALH,A
A,#HIGH CYCLE,SETPWM
A,VALL
A,#LOW CYCLE,SETPWM
DIR
SETPWM
MOV
ADD
MOV
MOV
ADDC
MOV
JNZ
MOV
CJNE
SETB
A,VALL
A,#0FFH
VALL,A
A,VALH
A,#0FFH
VALH,A
SETPWM
A,VALL
A,#1,SETPWM
DIR
MOV
MOV
MOVX
MOV
MOV
MOVX
A,VALH
DPTR,#PWM00T2H
@DPTR,A
A,VALL
DPTR,#PWM00T2L
@DPTR,A
POP
POP
POP
POP
POP
RETI
P_SW2
DPH
DPL
PSW
ACC
MOV
MOV
SP, #5FH
P0M0, #00H
技术支持: 13922829991
研发顾问: 13922805190
PWM0ISR:
;清中断标志
PWMUP:
PWMDN:
SETPWM:
ISREXIT:
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 536 -
STC8G 系列技术手册
官方网站: 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
SETB
MOV
MOV
DIR
VALH,#00H
VALL,#01H
MOV
PWMSET,#01H
MOV
CLR
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A
DPTR,#PWM0CKS
@DPTR,A
A,#HIGH CYCLE
DPTR,#PWM0CH
@DPTR,A
A,#LOW CYCLE
DPTR,#PWM0CL
@DPTR,A
A,#00H
DPTR,#PWM00T1H
@DPTR,A
A,#00H
DPTR,#PWM00T1L
@DPTR,A
A,VALH
DPTR,#PWM00T2H
@DPTR,A
A,VALL
DPTR,#PWM00T2L
@DPTR,A
A,#80H
DPTR,#PWM00CR
@DPTR,A
P_SW2,#00H
MOV
SETB
JMP
PWMCFG01,#05H
EA
$
技术支持: 13922829991
研发顾问: 13922805190
;使能 PWM0 模块(必须先使能模块后面的设置才有效)
;PWM0 时钟为系统时钟
;设置 PWM0 周期
;使能 PWM00 输出
;启动 PWM0 模块并使能 PWM0 中断
END
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
CYCLE
深圳国芯人工智能有限公司
0x1000
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 537 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
sfr
P_SW2
=
0xba;
sfr
sfr
sfr
sfr
PWMSET
PWMCFG01
PWMCFG23
PWMCFG45
=
=
=
=
0xF1;
0xF6;
0xF7;
0xFE;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
PWM0C
PWM0CH
PWM0CL
PWM0CKS
PWM0TADC
PWM0TADCH
PWM0TADCL
PWM0IF
PWM0FDCR
PWM00T1
PWM00T1H
PWM00T1L
PWM00T2H
PWM00T2
PWM00T2L
PWM00CR
PWM00HLD
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 int volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF00)
(*(unsigned char volatile xdata *)0xFF01)
(*(unsigned char volatile xdata *)0xFF02)
(*(unsigned int volatile xdata *)0xFF03)
(*(unsigned char volatile xdata *)0xFF03)
(*(unsigned char volatile xdata *)0xFF04)
(*(unsigned char volatile xdata *)0xFF05)
(*(unsigned char volatile xdata *)0xFF06)
(*(unsigned int volatile xdata *)0xFF10)
(*(unsigned char volatile xdata *)0xFF10)
(*(unsigned char volatile xdata *)0xFF11)
(*(unsigned char volatile xdata *)0xFF12)
(*(unsigned int volatile xdata *)0xFF12)
(*(unsigned char volatile xdata *)0xFF13)
(*(unsigned char volatile xdata *)0xFF14)
(*(unsigned char volatile xdata *)0xFF15)
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void PWM0_Isr() interrupt 22
{
static bit dir = 1;
static int val = 0;
if (PWMCFG01 & 0x08)
{
PWMCFG01 &= ~0x08;
if (dir)
{
val++;
if (val >= CYCLE) dir = 0;
}
else
{
val--;
if (val > 8))
#define
#define
MINBAUD
MAXBAUD
2400L
115200L
#define
#define
#define
FOSC
BR(n)
T1MS
11059200L
(65536 - FOSC/4/(n))
(65536 - FOSC/1000)
//主控芯片工作频率
//主控芯片串口波特率计算公式
//主控芯片 1ms 定时初值
#define
#define
FUSER
RL(n)
24000000L
(65536 - FUSER/4/(n))
//STC8G 系列目标芯片工作频率
//STC8G 系列目标芯片串口波特率计算公式
sfr
sfr
sfr
AUXR = 0x8e;
P3M1 = 0xB1;
P3M0 = 0xB2;
//变量定义
BOOL f1ms;
BOOL UartBusy;
BOOL UartReceived;
BYTE UartRecvStep;
BYTE TimeOut;
BYTE xdata TxBuffer[256];
BYTE xdata RxBuffer[256];
char code DEMO[256];
//1ms 标志位
//串口发送忙标志位
//串口数据接收完成标志位
//串口数据接收控制
//串口通讯超时计数器
//串口数据发送缓冲区
//串口数据接收缓冲区
//演示代码数据
//函数声明
void Initial(void);
void DelayXms(WORD x);
BYTE UartSend(BYTE dat);
void CommInit(void);
void CommSend(BYTE size);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 712 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
BOOL Download(BYTE *pdat, long size);
//主函数入口
void main(void)
{
P3M0 = 0x00;
P3M1 = 0x00;
Initial();
if (Download(DEMO, 256))
{
//下载成功
P3 = 0xff;
DelayXms(500);
P3 = 0x00;
DelayXms(500);
P3 = 0xff;
DelayXms(500);
P3 = 0x00;
DelayXms(500);
P3 = 0xff;
DelayXms(500);
P3 = 0x00;
DelayXms(500);
P3 = 0xff;
}
else
{
//下载失败
P3 = 0xff;
DelayXms(500);
P3 = 0xf3;
DelayXms(500);
P3 = 0xff;
DelayXms(500);
P3 = 0xf3;
DelayXms(500);
P3 = 0xff;
DelayXms(500);
P3 = 0xf3;
DelayXms(500);
P3 = 0xff;
}
while (1);
}
//1ms 定时器中断服务程序
void tm0(void) interrupt 1
{
static BYTE Counter100;
f1ms = TRUE;
if (Counter100-- == 0)
{
Counter100 = 100;
if (TimeOut) TimeOut--;
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 713 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
//串口中断服务程序
void uart(void) interrupt 4
{
static WORD RecvSum;
static BYTE RecvIndex;
static BYTE RecvCount;
BYTE dat;
if (TI)
{
TI = 0;
UartBusy = FALSE;
}
if (RI)
{
RI = 0;
dat = SBUF;
switch (UartRecvStep)
{
case 1:
if (dat != 0xb9) goto L_CheckFirst;
UartRecvStep++;
break;
case 2:
if (dat != 0x68) goto L_CheckFirst;
UartRecvStep++;
break;
case 3:
if (dat != 0x00) goto L_CheckFirst;
UartRecvStep++;
break;
case 4:
RecvSum = 0x68 + dat;
RecvCount = dat - 6;
RecvIndex = 0;
UartRecvStep++;
break;
case 5:
RecvSum += dat;
RxBuffer[RecvIndex++] = dat;
if (RecvIndex == RecvCount)
UartRecvStep++;
break;
case 6:
if (dat != HIBYTE(RecvSum)) goto L_CheckFirst;
UartRecvStep++;
break;
case 7:
if (dat != LOBYTE(RecvSum)) goto L_CheckFirst;
UartRecvStep++;
break;
case 8:
if (dat != 0x16) goto L_CheckFirst;
UartReceived = TRUE;
UartRecvStep++;
break;
L_CheckFirst:
case 0:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 714 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
default:
CommInit();
UartRecvStep = (dat == 0x46
break;
}
技术支持: 13922829991
研发顾问: 13922805190
? 1 : 0);
}
}
//系统初始化
void Initial(void)
{
UartBusy = FALSE;
SCON = 0xd0;
AUXR = 0xc0;
TMOD = 0x00;
TH0 = HIBYTE(T1MS);
TL0 = LOBYTE(T1MS);
TR0 = 1;
TH1 = HIBYTE(BR(MINBAUD));
TL1 = LOBYTE(BR(MINBAUD));
TR1 = 1;
ET0 = 1;
ES = 1;
EA = 1;
//串口数据模式必须为 8 位数据+1 位偶检验
}
//Xms 延时程序
void DelayXms(WORD x)
{
do
{
f1ms = FALSE;
while (!f1ms);
} while (x--);
}
//串口数据发送程序
BYTE UartSend(BYTE dat)
{
while (UartBusy);
UartBusy = TRUE;
ACC = dat;
TB8 = P;
SBUF = ACC;
return dat;
}
//串口通讯初始化
void CommInit(void)
{
UartRecvStep = 0;
TimeOut = 20;
UartReceived = FALSE;
}
//发送串口通讯数据包
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 715 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
void CommSend(BYTE size)
{
WORD sum;
BYTE i;
UartSend(0x46);
UartSend(0xb9);
UartSend(0x6a);
UartSend(0x00);
sum = size + 6 + 0x6a;
UartSend(size + 6);
for (i=0; i= 128) break;
}
CommSend(cnt + offset);
while (1)
{
if (TimeOut == 0) return FALSE;
if (UartReceived)
{
if ((RxBuffer[0] == 0x02) && (RxBuffer[1] == 'T')) break;
return FALSE;
}
}
TxBuffer[0] = 0x02;
}
////写硬件选项
////如果不需要修改硬件选项,此步骤可直接跳过,此时所有的硬件选项
////都维持不变,MCU 的频率为上一次所调节频率
////若写硬件选项,MCU 的内部 IRC 频率将被固定写为 24M, ,其他选项恢复为出厂设置
////建议:第一次使用 STC-ISP 下载软件将从芯片的硬件选项设置好
////以后再使用主芯片对从芯片下载程序时不写硬件选项
//DelayXms(10);
//for (cnt=0; cnt> 8;
value += T38K4HZ;
}
技术支持: 13922829991
研发顾问: 13922805190
//软件翻转 I/O
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;
CCON = 0x00;
CMOD = 0x08;
CL = 0x00;
CH = 0x00;
CCAPM0 = 0x49;
value = T38K4HZ;
CCAP0L = value;
CCAP0H = value >> 8;
value += T38K4HZ;
CR = 1;
EA = 1;
//PCA 时钟为系统时钟
//PCA 模块 0 为 16 位定时器模式,不使能脉冲输出
//启动 PCA 计时器
while (1);
}
STC8G2K64S4 系列
1.
2.
STC8G2K64S4 系列 A 版芯片的 PCA 高速脉冲输出功能会受到同一组 I/O 口翻转的影响,
详情请参考本节 STC8G1K08-20PIN 系列的参考代码
STC8G2K64S4 系列 A 版芯片的增强型 PWM 功能在 P2.0 和 P2.1 口存在 BUG,其他的 43
个 I/O 口均可正确输出 PWM 波形,建议不要使用 P2.0 和 P2.1 输出 PWM 波形。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 752 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
STC8G1K08T 系列
1.
STC8G1K08T 系列 A 版芯片,当使能某个触摸按键时,会影响另外一个 IO 口的波形输出,
对应关系如下:
TSCHEN1 寄存器设置
2.
3.
4.
TSCHEN2 寄存器设置
使能位
按键引脚
受影响 I/O
使能位
按键引脚
受影响 I/O
TKEN7
P1.0
P1.7
TKEN15
P3.0
P3.7
TKEN6
P1.1
P1.6
TKEN14
P3.1
P3.6
TKEN5
无
P1.5
TKEN13
P3.2
P3.5
TKEN4
P1.3
P1.4
TKEN12
P3.3
P3.4
TKEN3
P1.4
P1.3
TKEN11
P3.4
P3.3
TKEN2
P1.5
P1.2
TKEN10
P3.5
P3.2
TKEN1
P1.6
P1.1
TKEN9
P3.6
P3.1
TKEN0
P5.4
P1.0
TKEN8
P3.7
P3.0
例如:如果 P3.0 做普通 IO,则 P3.7 也不能用做触摸按键;如果 P1.0 做普通 IO,则 P5.4
也不能用做触摸按键。
当作普通 IO 时,除了 P1.7 外,均与正常的 IO 使用相同。
TK5 没有连接到外部的 IO,故 TK5 没有功能。
P1.7 没有触摸键功能,只能做 IO 使用,但同时 P1.0(TK7)不能使用做触摸键。
a. 设置 P1.7 为准双向口,则 P1.7 输出异常,要外接上拉电阻或启动内部上拉电阻才能正
常。
b. 设置 P1.7 为准双向口,将 P1.6 也设置为准双向口,则 P1.7 准双向口输出正常。
c. 设置 P1.7 为推挽输出,则 P1.7 推挽输出正常。
d. 设置 P1.7 为开漏输出,则 P1.7 输出正常,外接上拉电阻或启动内部上拉电阻才能输出
高电平。
e. 设置 P1.7 为开漏输出,将 P1.6 设置为准双向口,则 P1.7 成为准双向口输出。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 753 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
附录N 触摸按键的PCB设计指导
触摸按键对 PCB 设计的要求比较严格,否则其效果会大打折扣甚至失败。建议用
户在设计 PCB 时遵循以下几点原则:
1.
2.
3.
4.
5.
遵循通常的数模混合电路设计的基本原则。
电容式触摸按键模块集成了精密电容测量的模拟电路,因此进行 PCB 设计时应该把它看
成一个独立的模拟电路对待。遵循通常的数模混合电路设计的基本原则。
采用星形接地
触摸芯片的地线不要和其他电路公用,应该单独连到板子电源输入的接地点,也就是通常
说的采用“星形接地”。
电源上产生的噪声对触摸芯片的影响
电源纹波、噪声应该尽量小,最好用一根独立的走线从板子的供电点取电并增加滤波措施,
不要和其他的电路共用电源回路。
IC 与感应盘的连线尽量等长,让其有近似的分布电容,入下图所示。
按键感应盘(电容传感器)大小和间隙
在满足面板的美学设计要求的情况下,必须通过合理安排的感应盘大小和间隔尺寸,来获
得最佳的触摸感应效果。感应盘放在底层,IC 也放在底层,感应盘与 IC 连线不要有过孔。
相邻感应盘边沿的间隔最好在 1.5mm 以上(下图中的尺寸 D),如果 PCB 面积允许,尽量
取大一些间隔。铺铜与感应盘的间隔为 0.5mm(下图中的尺寸 E)。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 754 -
STC8G 系列技术手册
6.
7.
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
铺铜处理
底层可以铺网格铜或实铜均可,注意铺铜与感应盘的间隔为 0.5mm。顶层印刷按键的丝印
信息,丝印的外框形状与底层感应盘一致,顶层对应底层感应盘的地方不能铺铜,否则会
屏蔽掉触摸动作。顶层铺铜与底层铺铜一样即可。
走线处理
感应盘与 IC 的连线使用比较小的线宽为好,比如 10~15mil 之间。感应盘到触摸芯片的连
线不要跨越强干扰、高频、大电流的线。感应盘到触摸芯片的连线周围 1.5mm 内不要走
其他信号线,越远离越好。顶层对应底层感应盘和连接线的地方,最好不要放任何线。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 755 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
附录O 更新记录
2020/4/16
1.
修正 DFN8(3mm*3mm)的封装尺寸图
2020/4/8
1.
2.
3.
4.
5.
6.
增加 STC8G1K08T 系列芯片的应用注意事项
修正“存储器中的特殊参数”章节中关于 STC8G2K64S4 型号的参数
更正“利用 ADC 第 15 通道测量外部电压或电池电压”章节中计算电压的公式
修正 STC8G1K08T 系列有关 LED 驱动的特殊功能寄存器
增加掉电唤醒定时器寄存器的使用说明
更新 I/O 口章节中有关整体驱动电流的内容
2020/3/26
1.
2.
3.
4.
5.
6.
7.
IRC24MCR 寄存器更名为 HIRCCR
增加 STC8G2K64S4-LQFP48 型号使用 PL2303GL 下载参考线路图
增加 STC8G2K64S4-LQFP48 型号直接软模拟 USB 下载参考线路图
更新直流特性中的芯片在不同工作频率下的功耗
更新应用注意事项
在增强型 PWM 章节开头增加说明部分
增加“触摸按键 PCB 设计指导”附录章节
2020/3/6
1. 重新整理管脚图章节结构
2. 更正 STC8G1K17、STC8G1K17A 型号的芯片特性
2020/3/5
1.
2.
修正触摸按键中断向量入口地址
修正触摸按键中断使能位及中断优先级的特殊功能寄存器位
2020/3/4
1.
2.
3.
4.
5.
更正文档中有关内部参考电压描述错误的部分
更正 PWM 章节中部分示例代码的错误
增加一般精度 ADC 和高精度 ADC 的应用线路图
增加 ADC 模块的静态参数
增加 STC8G1K08T-20PIN 触摸按键系列
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 756 -
STC8G 系列技术手册
6.
7.
8.
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
增加触摸按键控制器说明章节
增加触摸按键参考电路图
增加 LED 驱动器说明章节
2020/2/26
1.
增加 DFN8 封装图
2020/2/24
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
增加“关于中断号大于 31 在 Keil 中编译出错的处理”章节
增加“在 Keil 中建立多文件项目的方法”章节
增加“仿真时查看全部的寄存器的方法”章节
增加 STC8G2K64S4 系列 A 版芯片的应用注意事项
增加“使用 I2C 的数据线 SDA 唤醒 MCU 省电模式”范例
增加“如何让传统的 8051 单片机学习板可仿真”章节
更新“用 STC 系列 MCU 的 I/O 口直接驱动段码 LCD”章节内容
更新“STC8G1K08-20PIN 系列特性及价格”中的型号与价格
增加“新增 4.1K 上拉电阻”章节
在“存储器”章节中增加“8051 中可位寻址的数据存储器”小节
2020/1/20
1.
2.
3.
4.
5.
6.
7.
8.
增加“利用 PCA 模块实现 DAC”参考线路图
增加“一种典型三极管控制”电路
增加“典型发光二极管控制”电路
增加“混合电压供电系统 3V/5V 器件 I/O 口互连”参考电路
增加“如何让 I/O 口上电复位时为低电平”参考电路
增加“利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)”参考电路
增加“I/O 口直接驱动 LED 数码管”参考电路
增加“运行用户程序时收到用户命令后自动启动 ISP 下载”说明
2020/1/17
1.
2.
增加 MDU16 运算时钟数说明
修正重要说明里面的描述
2020/1/15
1.
2.
3.
4.
增加“ADC 做电容感应触摸按键”章节
增加“ADC 作按键扫描应用线路图”章节
增加附录“RS485 自动控制或 I/O 口控制线路图”
增加附录“U8W 下载工具中 RS485 部分线路图”
2019/12/30
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 757 -
STC8G 系列技术手册
1.
2.
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
更新芯片选型以及价格表
增加产生用户指定频率的示例代码
2019/12/24
1.
2.
3.
4.
5.
6.
7.
8.
9.
将比较器章节参考电路图中的主控芯片修改为 STC8G 系列单片机
将 ADC 章节参考电路图中的主控芯片修改为 STC8G 系列单片机
将 ADC 模块中用于测量内部电压的通道统一命名为第 15 通道
将原 STC8G1K08 系列改名为 STC8G1K08-20PIN 系列
将原 STC8G2K64S4 系列改名为 STC8G2K64S4-48PIN 系列
增加 STC8G1K08-8PIN 系列
增加 STC8G1K08A-8PIN 系列
增加 STC8G2K64S2-48PIN 系列
修正 LVR 电压以及电器特性相关参数
2019/11/27
1.
2.
增加 STC8G2K64S4 系列
增加 STC8G1K08 系列重要说明
2019/11/11
1.
2.
3.
增加产品授权书
统一文档中有关 Flash 程序存储器和 ROM 的称谓
增加 USB 下载步骤演示(附录 C)
2019/10/22
1.
2.
3.
增加 QFN20 管脚图
增加 QFN20 封装尺寸图
更新范例程序
2019/10/15
1.
2.
3.
4.
修正 LVR 的四级电压
修正内部高精度 IRC 的温漂范围
修正内部参考电压
更新直流特性表格数据
2019/10/09
1.
2.
3.
移除电源控制寄存器(VOCTRL)部分,STC8G 系列无此功能
修改 LVR 的四级电压
修正 IRC 的两个频率范围
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 758 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
技术支持: 13922829991
研发顾问: 13922805190
2019/8/13
1.
创建 STC8G 系列单片机技术参考手册文档
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 759 -
STC8G 系列技术手册
官方网站: www.STCMCUDATA.com / www.STCMCU.com
附录P
产品授权书
授
权
技术支持: 13922829991
研发顾问: 13922805190
书
致:江苏国芯科技有限公司
STC8G1K08 系列产品的知识产权归深圳国芯人工智能有限公
司所有。现授权江苏国芯科技有限公司可从事 STC8G1K08 系列产
品在中国的推广和销售工作。
授权单位:深圳国芯人工智能有限公司
授权时限:2019 年 10 月 24 日--2024 年 12 月 31 日
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 760 -