深圳国芯人工智能有限公司
STC8F1K 系列单片机
技术参考手册
技术支持网站:www.STCMCUDATA.com
资料更新日期:2022/3/9
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
目录
1
2
2.1
2.1.1
2.1.2
2.1.3
2.2
2.2.1
2.2.2
2.2.3
3
3.1
3.1.1
3.1.2
3.1.3
3.2
3.2.1
3.2.2
3.2.3
3.2.4
4
4.1
4.2
4.3
4.4
4.5
4.6
5
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.1.5
5.1.6
6
6.1
6.1.1
6.1.2
6.1.3
概述 .......................................................................................................................................... 1
特性、价格及管脚 .................................................................................................................. 2
STC8F1K08S2-28I-TSSOP20/SOP16 系列 ............................................................................ 2
特性及价格 .............................................................................................................................. 2
管脚图 ...................................................................................................................................... 4
管脚说明 .................................................................................................................................. 6
STC8F1K08-28I-SOP8 系列 ................................................................................................... 8
特性及价格 .............................................................................................................................. 8
管脚图 .................................................................................................................................... 10
管脚说明 ................................................................................................................................. 11
功能脚切换 ............................................................................................................................ 12
功能脚切换相关寄存器 ........................................................................................................ 12
外设端口切换控制寄存器 1(P_SW1),串口 1、SPI 切换 ............................................. 12
外设端口切换控制寄存器 2(P_SW2)、I2C、比较器输出切换 ..................................... 12
时钟选择寄存器(CKSEL) ............................................................................................... 13
范例程序 ................................................................................................................................ 14
串口 1 切换 ............................................................................................................................ 14
SPI 切换 ................................................................................................................................. 14
I2C 切换 ................................................................................................................................. 15
主时钟输出切换 .................................................................................................................... 15
封装尺寸图 ............................................................................................................................ 17
SOP8 封装尺寸图 .................................................................................................................. 17
DFN8 封装尺寸图(3mm*3mm) ....................................................................................... 18
SOP16 封装尺寸图 ................................................................................................................ 19
TSSOP20 封装尺寸图 ........................................................................................................... 20
QFN20 封装尺寸图(3mm*3mm) ..................................................................................... 21
STC8F1K 系列单片机命名规则 ........................................................................................... 22
ISP 下载及典型应用线路图 ................................................................................................. 23
STC8F 系列 ISP 下载应用线路图 ........................................................................................ 23
使用 RS-232 转换器下载,也可支持仿真 .......................................................................... 23
使用 PL2303-GL 下载,也可支持仿真 ............................................................................... 24
使用通用 USB 转串口工具下载,支持 ISP 在线下载,也可支持仿真 ........................... 25
使用 U8-Mini 工具下载,支持 ISP 在线和脱机下载,也可支持仿真 ............................. 26
使用 U8W 工具下载,支持 ISP 在线和脱机下载,也可支持仿真 .................................. 27
模拟 USB 直接 ISP 下载,仅支持 ISP 下载,不支持仿真 ............................................... 29
时钟、复位、省电模式与系统电源管理 ............................................................................ 30
系统时钟控制 ........................................................................................................................ 30
系统时钟选择寄存器(CKSEL) ....................................................................................... 30
时钟分频寄存器(CLKDIV) ............................................................................................. 31
内部 24M 高精度 IRC 控制寄存器(IRC24MCR)........................................................... 31
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-i-
STC8F1K 系列技术手册
6.1.4
6.1.5
6.2
6.2.1
6.2.2
6.2.3
6.3
6.3.1
6.3.2
6.3.3
6.3.4
6.4
6.4.1
6.4.2
6.5
6.5.1
6.5.2
6.6
6.6.1
6.7
6.7.1
6.7.2
6.7.3
6.7.4
6.7.5
6.7.6
6.7.7
6.7.8
6.7.9
6.7.10
6.7.11
6.7.12
7
7.1
7.2
7.2.1
7.2.2
7.2.3
7.2.4
7.2.5
7.3
7.3.1
7.3.2
7.3.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
外部振荡器控制寄存器(XOSCCR) ................................................................................ 32
内部 32KHz 低速 IRC 控制寄存器(IRC32KCR) ........................................................... 32
STC8F1K 系列内部 IRC 频率调整 ...................................................................................... 33
内部 IRC 频率调整寄存器(IRTRIM) .............................................................................. 33
内部 IRC 频率微调寄存器(LIRTRIM) ........................................................................... 34
时钟分频寄存器(CLKDIV) ............................................................................................. 34
系统复位 ................................................................................................................................ 35
看门狗复位(WDT_CONTR) ........................................................................................... 36
软件复位(IAP_CONTR) .................................................................................................. 38
低压复位(RSTCFG) ......................................................................................................... 39
传统 8051 高电平上电复位参考电路 .................................................................................. 39
外部晶振及外部时钟电路 .................................................................................................... 40
外部晶振输入电路 ................................................................................................................ 40
外部时钟输入电路(P1.6 不可用作普通 I/O) .................................................................. 40
时钟停振/省电模式与系统电源管理 ................................................................................... 40
电源控制寄存器(PCON) ................................................................................................. 40
电压控制寄存器(VOCTRL) ............................................................................................ 41
掉电唤醒定时器 .................................................................................................................... 42
掉电唤醒定时器计数寄存器(WKTCL,WKTCH) ....................................................... 42
范例程序 ................................................................................................................................ 43
选择系统时钟源 .................................................................................................................... 43
主时钟分频输出 .................................................................................................................... 44
看门狗定时器应用 ................................................................................................................ 45
软复位实现自定义下载 ........................................................................................................ 46
低压检测 ................................................................................................................................ 47
省电模式 ................................................................................................................................ 48
使用 INT0/INT1/INT2/INT3/INT4 中断唤醒 MCU ............................................................ 49
使用 T0/T1/T2 中断唤醒 MCU ............................................................................................ 51
使用 RxD/RxD2 中断唤醒 MCU .......................................................................................... 54
使用 LVD 中断唤醒 MCU .................................................................................................... 55
CMP 中断唤醒 MCU ............................................................................................................ 57
使用 LVD 功能检测工作电压(电池电压) ...................................................................... 58
存储器 .................................................................................................................................... 62
程序存储器 ............................................................................................................................ 62
数据存储器 ............................................................................................................................ 63
内部 RAM .............................................................................................................................. 63
程序状态寄存器(PSW) .................................................................................................... 63
内部扩展 RAM,XRAM,XDATA ..................................................................................... 64
辅助寄存器(AUXR) ......................................................................................................... 65
8051 中可位寻址的数据存储器 ........................................................................................... 66
存储器中的特殊参数,在 ISP 下载时可烧录进程序 FLASH ........................................... 68
读取内部 1.344V 参考信号源值 (从 Flash 程序存储器(ROM)中读取) ..................... 69
读取内部 1.344V 参考信号源值 (从 RAM 中读取) ........................................................... 71
读取全球唯一 ID 号 (从 Flash 程序存储器(ROM)中读取) ......................................... 74
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- ii -
STC8F1K 系列技术手册
7.3.4
7.3.5
7.3.6
7.3.7
7.3.8
8
8.1
8.2
8.3
9
9.1
9.1.1
9.1.2
9.1.3
9.1.4
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
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
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
读取全球唯一 ID 号 (从 RAM 中读取) .............................................................................. 76
读取 32K 掉电唤醒定时器的频率 (从 Flash 程序存储器(ROM)中读取) .................. 78
读取 32K 掉电唤醒定时器的频率 (从 RAM 中读取) ........................................................ 80
用户自定义内部 IRC 频率 (从 Flash 程序存储器(ROM)中读取) .............................. 82
用户自定义内部 IRC 频率 (从 RAM 中读取) .................................................................... 83
特殊功能寄存器 .................................................................................................................... 85
STC8F1K08S2 系列 .............................................................................................................. 85
STC8F1K08 系列................................................................................................................... 86
特殊功能寄存器列表 ............................................................................................................ 87
I/O 口 ..................................................................................................................................... 90
I/O 口相关寄存器 .................................................................................................................. 90
端口数据寄存器(Px) ........................................................................................................ 90
端口模式配置寄存器(PxM0,PxM1) ............................................................................. 90
端口上拉电阻控制寄存器(PxPU) ................................................................................... 91
端口施密特触发控制寄存器(PxNCS) ............................................................................ 91
配置 I/O 口............................................................................................................................. 93
I/O 的结构图.......................................................................................................................... 94
准双向口(弱上拉) ............................................................................................................ 94
推挽输出 ................................................................................................................................ 94
高阻输入 ................................................................................................................................ 95
开漏输出 ................................................................................................................................ 95
新增 4.1K 上拉电阻 .............................................................................................................. 96
范例程序 ................................................................................................................................ 97
端口模式设置 ........................................................................................................................ 97
双向口读写操作 .................................................................................................................... 98
一种典型三极管控制电路 ...................................................................................................101
典型发光二极管控制电路 ...................................................................................................101
混合电压供电系统 3V/5V 器件 I/O 口互连 .......................................................................102
如何让 I/O 口上电复位时为低电平 ....................................................................................103
利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图 ...........................................104
I/O 口直接驱动 LED 数码管应用线路图 ...........................................................................105
指令系统 ...............................................................................................................................106
中断系统 ............................................................................................................................... 110
STC8F1K 系列中断源.......................................................................................................... 110
STC8F1K 系列中断结构图 .................................................................................................. 111
STC8F1K 系列中断列表...................................................................................................... 112
中断相关寄存器 ................................................................................................................... 113
中断使能寄存器(中断允许位) ....................................................................................... 113
中断请求寄存器(中断标志位) ....................................................................................... 115
中断优先级寄存器 ............................................................................................................... 117
范例程序 ............................................................................................................................... 119
INT0 中断(上升沿和下降沿) ......................................................................................... 119
INT0 中断(下降沿) .........................................................................................................120
INT1 中断(上升沿和下降沿) .........................................................................................120
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- iii -
STC8F1K 系列技术手册
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
12
12.1
12.2
12.2.1
12.2.2
12.2.3
12.2.4
12.2.5
12.2.6
12.2.7
12.2.8
12.2.9
12.2.10
12.2.11
12.2.12
12.2.13
12.2.14
12.2.15
12.3
12.3.1
12.3.2
12.3.3
12.3.4
12.3.5
12.4
12.4.1
12.4.2
12.4.3
12.4.4
12.4.5
12.4.6
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
INT1 中断(下降沿) .........................................................................................................121
INT2 中断(下降沿) .........................................................................................................122
INT3 中断(下降沿) .........................................................................................................123
INT4 中断(下降沿) .........................................................................................................124
定时器 0 中断 .......................................................................................................................125
定时器 1 中断 .......................................................................................................................126
定时器 2 中断 .......................................................................................................................127
UART1 中断 .........................................................................................................................128
UART2 中断 .........................................................................................................................129
LVD 中断 ..............................................................................................................................131
SPI 中断 ................................................................................................................................132
CMP 中断 .............................................................................................................................133
I2C 中断 ................................................................................................................................134
定时器/计数器 ......................................................................................................................137
定时器的相关寄存器 ...........................................................................................................137
定时器 0/1 .............................................................................................................................138
定时器 0/1 控制寄存器(TCON) .....................................................................................138
定时器 0/1 模式寄存器(TMOD) ....................................................................................138
定时器 0 模式 0(16 位自动重装载模式) .......................................................................139
定时器 0 模式 1(16 位不可重装载模式) .......................................................................140
定时器 0 模式 2(8 位自动重装载模式) .........................................................................141
定时器 0 模式 3(不可屏蔽中断 16 位自动重装载,实时操作系统节拍器)...............141
定时器 1 模式 0(16 位自动重装载模式) .......................................................................142
定时器 1 模式 1(16 位不可重装载模式) .......................................................................143
定时器 1 模式 2(8 位自动重装载模式) .........................................................................144
定时器 0 计数寄存器(TL0,TH0) .................................................................................144
定时器 1 计数寄存器(TL1,TH1) .................................................................................144
辅助寄存器 1(AUXR) .....................................................................................................144
中断与时钟输出控制寄存器(INTCLKO) ......................................................................145
定时器 0 定时计算公式 .......................................................................................................145
定时器 1 定时计算公式 .......................................................................................................146
定时器 2 ................................................................................................................................147
辅助寄存器 1(AUXR) .....................................................................................................147
中断与时钟输出控制寄存器(INTCLKO) ......................................................................147
定时器 2 计数寄存器(T2L,T2H) .................................................................................147
定时器 2 工作模式 ...............................................................................................................148
定时器 2 计算公式 ...............................................................................................................148
范例程序 ...............................................................................................................................149
定时器 0(模式 0-16 位自动重载),用作定时 ..............................................................149
定时器 0(模式 1-16 位不自动重载)
,用作定时 ..........................................................150
定时器 0(模式 2-8 位自动重载),用作定时 ................................................................152
定时器 0(模式 3-16 位自动重载不可屏蔽中断)
,用作定时 ......................................154
定时器 0(外部计数-扩展 T0 为外部下降沿中断) ......................................................156
定时器 0(测量脉宽-INT0 高电平宽度).......................................................................158
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- iv -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
定时器 0(模式 0),时钟分频输出 ...................................................................................160
定时器 1(模式 0-16 位自动重载),用作定时 ..............................................................162
定时器 1(模式 1-16 位不自动重载)
,用作定时 ..........................................................164
定时器 1(模式 2-8 位自动重载),用作定时 ................................................................165
定时器 1(外部计数-扩展 T1 为外部下降沿中断) ......................................................167
定时器 1(测量脉宽-INT1 高电平宽度).......................................................................169
定时器 1(模式 0),时钟分频输出 ...................................................................................171
定时器 1(模式 0)做串口 1 波特率发生器 .....................................................................173
定时器 1(模式 2)做串口 1 波特率发生器 .....................................................................177
定时器 2(16 位自动重载),用作定时 .............................................................................181
定时器 2(外部计数-扩展 T2 为外部下降沿中断) ......................................................183
定时器 2,时钟分频输出 ....................................................................................................185
定时器 2 做串口 1 波特率发生器 .......................................................................................187
定时器 2 做串口 2 波特率发生器 .......................................................................................190
13
串口通信 ...............................................................................................................................195
13.1
串口相关寄存器 ...................................................................................................................195
13.2
串口 1 ....................................................................................................................................196
13.2.1 串口 1 控制寄存器(SCON) ............................................................................................196
13.2.2 串口 1 数据寄存器(SBUF) .............................................................................................196
13.2.3 电源管理寄存器(PCON) ................................................................................................197
13.2.4 辅助寄存器 1(AUXR) .....................................................................................................197
13.2.5 串口 1 模式 0,模式 0 波特率计算公式 ............................................................................197
13.2.6 串口 1 模式 1,模式 1 波特率计算公式 ............................................................................198
13.2.7 串口 1 模式 2,模式 2 波特率计算公式 ............................................................................201
13.2.8 串口 1 模式 3,模式 3 波特率计算公式 ............................................................................201
13.2.9 自动地址识别 .......................................................................................................................202
13.2.10 串口 1 从机地址控制寄存器(SADDR,SADEN) ........................................................202
13.3
串口 2 ....................................................................................................................................204
13.3.1 串口 2 控制寄存器(S2CON) ..........................................................................................204
13.3.2 串口 2 数据寄存器(S2BUF) ...........................................................................................204
13.3.3 串口 2 模式 0,模式 0 波特率计算公式 ............................................................................204
13.3.4 串口 2 模式 1,模式 1 波特率计算公式 ............................................................................205
13.4
串口注意事项 .......................................................................................................................206
13.5
范例程序 ...............................................................................................................................207
13.5.1 串口 1 使用定时器 2 做波特率发生器 ...............................................................................207
13.5.2 串口 1 使用定时器 1(模式 0)做波特率发生器 .............................................................210
13.5.3 串口 1 使用定时器 1(模式 2)做波特率发生器 .............................................................214
13.5.4 串口 2 使用定时器 2 做波特率发生器 ...............................................................................218
13.5.5 串口多机通讯 .......................................................................................................................222
13.5.6 串口转 LIN 总线 ..................................................................................................................223
14
比较器,掉电检测,内部 1.344V 参考信号源 .................................................................232
14.1
比较器内部结构图 ...............................................................................................................232
14.2
比较器相关的寄存器 ...........................................................................................................233
14.2.1 比较器控制寄存器 1(CMPCR1) ....................................................................................233
12.4.7
12.4.8
12.4.9
12.4.10
12.4.11
12.4.12
12.4.13
12.4.14
12.4.15
12.4.16
12.4.17
12.4.18
12.4.19
12.4.20
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-v-
STC8F1K 系列技术手册
14.2.2
14.3
14.3.1
14.3.2
14.3.3
14.3.4
15
15.1
15.2
15.2.1
15.2.2
15.2.3
15.2.4
15.2.5
15.3
15.4
15.5
15.5.1
15.5.2
15.5.3
16
16.1
16.1.1
16.1.2
16.1.3
16.2
16.2.1
16.2.2
16.2.3
16.3
16.4
16.5
16.5.1
16.5.2
16.5.3
16.5.4
16.5.5
16.5.6
17
17.1
17.2
17.2.1
17.2.2
17.2.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
比较器控制寄存器 2(CMPCR2) ....................................................................................234
范例程序 ...............................................................................................................................235
比较器的使用(中断方式) ...............................................................................................235
比较器的使用(查询方式) ...............................................................................................237
比较器作外部掉电检测(掉电过程中应及时保存用户数据到 EEPROM 中) .............240
比较器检测工作电压(电池电压) ...................................................................................241
IAP/EEPROM/DATA-FLASH ...........................................................................................246
EEPROM 操作时间 ..............................................................................................................246
EEPROM 相关的寄存器 ......................................................................................................246
EEPROM 数据寄存器(IAP_DATA) ...............................................................................246
EEPROM 地址寄存器(IAP_ADDR) ..............................................................................247
EEPROM 命令寄存器(IAP_CMD) ................................................................................247
EEPROM 触发寄存器(IAP_TRIG) ................................................................................247
EEPROM 控制寄存器(IAP_CONTR) ............................................................................247
关于 EEPROM 编程和擦除等待时间的重要说明 .............................................................249
EEPROM 大小及地址 ..........................................................................................................250
范例程序 ...............................................................................................................................252
EEPROM 基本操作 ..............................................................................................................252
使用 MOVC 读取 EEPROM ................................................................................................255
使用串口送出 EEPROM 数据 .............................................................................................257
同步串行外设接口 SPI ........................................................................................................262
SPI 相关的寄存器 ................................................................................................................262
SPI 状态寄存器(SPSTAT)...............................................................................................262
SPI 控制寄存器(SPCTL),SPI 速度控制........................................................................262
SPI 数据寄存器(SPDAT) ................................................................................................263
SPI 通信方式 ........................................................................................................................264
单主单从 ...............................................................................................................................264
互为主从 ...............................................................................................................................264
单主多从 ...............................................................................................................................265
配置 SPI ................................................................................................................................266
数据模式 ...............................................................................................................................268
范例程序 ...............................................................................................................................269
SPI 单主单从系统主机程序(中断方式) ........................................................................269
SPI 单主单从系统从机程序(中断方式) ........................................................................271
SPI 单主单从系统主机程序(查询方式) ........................................................................273
SPI 单主单从系统从机程序(查询方式) ........................................................................275
SPI 互为主从系统程序(中断方式) ................................................................................278
SPI 互为主从系统程序(查询方式) ................................................................................280
I2C 总线 ................................................................................................................................284
I2C 相关的寄存器 .................................................................................................................284
I2C 主机模式.........................................................................................................................285
I2C 配置寄存器(I2CCFG),总线速度控制 ....................................................................285
I2C 主机控制寄存器(I2CMSCR) ...................................................................................286
I2C 主机辅助控制寄存器(I2CMSAUX) ........................................................................287
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- vi -
STC8F1K 系列技术手册
17.2.4
17.3
17.3.1
17.3.2
17.3.3
17.3.4
17.4
17.4.1
17.4.2
17.4.3
17.4.4
17.4.5
17.4.6
18
18.1
18.1.1
18.1.2
18.1.3
18.1.4
18.2
18.2.1
18.2.2
附录 A
附录 B
附录 C
附录 D
附录 E
附录 F
F.1
F.2
F.3
F.3.1
F.3.2
F.3.3
F.3.4
F.3.5
F.3.6
F.3.7
F.3.8
F.3.9
F.3.10
F.4
F.4.1
F.4.2
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
I2C 主机状态寄存器(I2CMSST) ....................................................................................287
I2C 从机模式.........................................................................................................................289
I2C 从机控制寄存器(I2CSLCR) ....................................................................................289
I2C 从机状态寄存器(I2CSLST) .....................................................................................289
I2C 从机地址寄存器(I2CSLADR) .................................................................................291
I2C 数据寄存器(I2CTXD,I2CRXD)............................................................................291
范例程序 ...............................................................................................................................292
I2C 主机模式访问 AT24C256(中断方式) ......................................................................292
I2C 主机模式访问 AT24C256(查询方式) ......................................................................298
I2C 主机模式访问 PCF8563.................................................................................................304
I2C 从机模式(中断方式) .................................................................................................309
I2C 从机模式(查询方式) .................................................................................................314
测试 I2C 从机模式代码的主机代码 ....................................................................................318
增强型双数据指针 ...............................................................................................................325
相关的特殊功能寄存器 .......................................................................................................325
第 1 组 16 位数据指针寄存器(DPTR0) .........................................................................325
第 2 组 16 位数据指针寄存器(DPTR1) .........................................................................325
数据指针控制寄存器(DPS) ............................................................................................325
数据指针控制寄存器(TA) ..............................................................................................326
范例程序 ...............................................................................................................................328
示例代码 1 ............................................................................................................................328
示例代码 2 ............................................................................................................................329
编译器(汇编器)/仿真器使用指南 ..................................................................................331
如何让传统的 8051 单片机学习板可仿真 .........................................................................338
STC-USB 驱动程序安装说明 .............................................................................................340
USB 下载步骤演示 ..............................................................................................................403
RS485 自动控制或 I/O 口控制线路图 ...............................................................................407
STC 工具使用说明书 ..........................................................................................................408
概述 .......................................................................................................................................408
系统可编程(ISP)流程说明 .............................................................................................408
USB 型联机/脱机下载工具 U8W/U8W-Mini .....................................................................409
安装 U8W/U8W-Mini 驱动程序 .......................................................................................... 411
U8W 的功能介绍 .................................................................................................................414
U8W 的在线联机下载使用说明 .........................................................................................415
U8W 的脱机下载使用说明 .................................................................................................418
U8W-Mini 的功能介绍 ........................................................................................................426
U8W-Mini 的在线联机下载使用说明.................................................................................427
U8W-Mini 的脱机下载使用说明.........................................................................................428
制作/更新 U8W/U8W-Mini..................................................................................................434
U8W/U8W-Mini 设置直通模式(可用于仿真) ...............................................................436
U8W/U8W-Mini 的参考电路 ...............................................................................................436
STC 通用 USB 转串口工具 .................................................................................................438
STC 通用 USB 转串口工具外观图 .....................................................................................438
STC 通用 USB 转串口工具布局图 .....................................................................................439
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- vii -
STC8F1K 系列技术手册
F.4.3
F.4.4
F.4.5
F.5
F.5.1
F.5.2
附录 G
附录 H
附录 I
附录 J
附录 K
附录 L
附录 M
附录 N
N.1
N.2
N.3
附录 O
O.1
O.2
附录 P
附录 Q
附录 R
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
STC 通用 USB 转串口工具驱动安装 .................................................................................440
使用 STC 通用 USB 转串口工具下载程序到 MCU ..........................................................441
使用 STC 通用 USB 转串口工具仿真用户代码 ................................................................443
应用线路图 ...........................................................................................................................450
U8W 工具应用参考线路图 .................................................................................................450
STC 通用 USB 转串口工具应用参考线路图 .....................................................................450
U8W 下载工具中 RS485 部分线路图 ................................................................................452
运行用户程序时收到用户命令后自动启动 ISP 下载(不停电) ........................................453
使用 STC 的 IAP 系列单片机开发自己的 ISP 程序 ........................................................455
用户程序复位到系统区进行 ISP 下载的方法(不停电) ...............................................467
使用第三方 MCU 对 STC8F1K 系列单片机进行 ISP 下载范例程序 ............................473
使用第三方应用程序调用 STC 发布项目程序对单片机进行 ISP 下载 .........................481
在 Keil 中建立多文件项目的方法 ......................................................................................485
电气特性 ...............................................................................................................................489
绝对最大额定值 ...................................................................................................................489
直流特性 ...............................................................................................................................490
内部 IRC 温漂特性(参考温度 25℃)..............................................................................491
应用注意事项 .......................................................................................................................492
关于 STC8F1K 系列芯片问题总结 .....................................................................................492
关于使用 CLR 指令关闭 EA 的重要说明 ..........................................................................493
QFN/DFN 封装元器件焊接方法 ........................................................................................494
更新记录 ...............................................................................................................................497
STC8 系列命名花絮 ............................................................................................................498
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- viii -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
1 概述
STC8F1K 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗
为目标的 8051 单片机,在相同的工作频率下,STC8F1K 系列单片机比传统的 8051 约快 12 倍(速度快
11.2~13.2 倍),依次按顺序执行完全部的 111 条指令,STC8F1K 系列单片机仅需 147 个时钟,而传统
8051 则需要 1944 个时钟。STC8F1K 系列单片机是 STC 生产的单时钟/机器周期(1T)的单片机,是宽电压
/高速/高可靠/低功耗/强抗静电/较强抗干扰的新一代 8051 单片机,超级加密。指令代码完全兼容传统
8051。
MCU 内部集成高精度 R/C 时钟(±0.3%,常温下+25℃),-1.8%~+0.8%温飘(-40℃~+85℃) ,-1.0%~
+0.5%温飘(-20℃~+65℃)。ISP 编程时 5MHz~30MHz 宽范围可设置,可彻底省掉外部昂贵的晶振和外部
复位电路(内部已集成高可靠复位电路,ISP 编程时 4 级复位门槛电压可选)。
MCU 内部有 2 个可选时钟源:内部 24MHz 高精度 IRC 时钟(可适当调高或调低)、内部 32KHz
的低速 IRC。用户代码中可自由选择时钟源,时钟源选定后可再经过 8-bit 的分频器分频后再将时钟信号
提供给 CPU 和各个外设(如定时器、串口、SPI 等)。
MCU 提供两种低功耗模式:IDLE 模式和 STOP 模式。IDLE 模式下,MCU 停止给 CPU 提供时钟,
CPU 无时钟,CPU 停止执行指令,但所有的外设仍处于工作状态,此时功耗约为 1.3mA(6MHz 工作频
率)。STOP 模式即为主时钟停振模式,即传统的掉电模式/停电模式/停机模式,此时 CPU 和全部外设
都停止工作,功耗可降低到 0.1uA 以下。
IDLE 模式可以由外部中断(INT0/INT1/INT2/INT3/INT4)、定时器中断(定时器 0/定时器 1/定时
器 2)、串口中断(串口 1/串口 2)、LVD 低压检测、SPI 中断、I2C 中断、比较器中断唤醒。
STOP 模式可以由 INT0/INT1 端口上升沿/下降沿、INT2/INT3/INT4 端口下降沿、T0/T1/T2 端口下
降沿、RxD/RxD_2/RxD_3 端口下降沿、RxD2 端口下降沿、LVD 低压检测以及掉电唤醒定时器(进入掉
电模式前需要先使能掉电唤醒定时器)唤醒。
MCU 提供了丰富的数字外设(2 个串口、3 个定时器以及 I2C、SPI)接口与模拟外设(比较器),
可满足广大用户的设计需求。
数字功能可使用程序在多个管脚之间进行切换。串口 1 可以组为单位([TxD/RxD]为一组)在
[P3.0/P3.1]、[P3.6/P3.7]、[P1.6/P1.7]3 组之间进行任意切换;SPI 可以组为单位([SS/MOSI/MISO/SCLK]
为一组)在[P1.2/P1.3/P1.4/P1.5]、[P3.5/P3.4/P3.3/P3.2]这 2 组之间进行任意切换;I2C 可以组为单位
([SCL/SDA]为一组)在[P1.5/P1.4]、[P3.2/P3.3]这 2 组之间进行任意切换(详细切换介绍请参考功能脚
切换章节)。
STC8F1K 系列单片机内部集成了增强型的双数据指针。通过程序控制,可实现数据指针自动递增或
递减功能以及两组数据指针的自动切换功能。
产品线
I/O
UART
定时器
比较器
SPI
I2C
STC8F1K08S2 系列
18
2
3
●
●
●
STC8F1K08 系列
6
1
3
●
●
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-1-
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
2 特性、价格及管脚
2.1 STC8F1K08S2-28I-TSSOP20/SOP16 系列
2.1.1
特性及价格
选型价格(不需要外部复位)
封装
15
15
/
-
-
-
有
有
有
有 4级 有
是
有
是
是
是
是
STC8F1K17S2 2.0-5.5 17K 1.2K 2
IAP 18
2
有
有
3
-
-
-
有
有
有
有 4级 有
是
有
是
是
-
-
√
√ √
-
年
新
品
供
货
信
息
大
量
供
货
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
14 个中断源,4 级中断优先级
支持在线仿真
工作电压
2.0V~5.5V
内建 LDO
工作温度
D/A
SOP8
3
24MHz
有
8
有
10
2
SRAM
4K 18
V
STC8F1K08S2 2.0-5.5 8K 1.2K 2
)
2018
支
支 持 本
身
持
就
可
直 在
线
下 接 仿
载 下 真
载
SOP16
可
设
置
下
次
更
新
程
序
需
口
令
QFN20
程
序
加
密
后
传
输
(
防
拦
截
)
TSSOP20
可
对
外
输
出
时
钟
及
复
可 位
调
)
USB
PWM
A/D
内
部
高
精
准
时
钟
(
RS485
1
ADC 8
PWM
看
门
狗
复
位
定
时
器
内
部
高
可
靠
复
位
(
可
选
复
位
门
槛
电
压
)
I2 C
掉
电
唤
醒
专
用
定
时
器
比
路 较
高 器
速 ( 内
可 部
当 低
(
压
路 检
路
测
中
, 断
可 并
可 作 可
当 外 掉
部 电
路 掉 唤
电 醒
检
使 测
用 )
)
SPI
T0-T2
PWM
口
最
万 多
可 次 数
量
万
增
次 字 可 字
节 减 节
字
节
串
口
并
可
掉
电
唤
醒
PCA/CCP/PWM
16
I/O
强
大
的
双
DPTR
工
作
电
压
(
大
容
量
扩
展
EEPROM 10
Flash
单
片
机
型
号
程
序
存
储
器
定
时
器
计 位
数 高 位
器 级 增
强
(
型 (
可
当
定
外 时
外
部 器 ( 部
带 中
管
脚 互 死 断
也 补 区 并
可 对 控 可
掉 称 制 掉
电 死 ) 电
唤
唤 区
醒
醒
)
)
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 17K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
1024 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部 24MHz 高精度 IRC(4MHz~28MHz,ISP 编程时可进行上下调整,还可以用户软件分频到较低的频
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-2-
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
率工作,如 100KHz)
误差±0.3%(常温下 25℃)
-1.8%~+0.8%温漂(全温度范围,-40℃~85℃)
-1.0%~+0.5%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
外部晶振(4MHz~28MHz)和外部时钟
用户可自由选择上面的 3 种时钟源
复位
硬件复位
上电复位
复位脚复位(高电平复位),出厂时 P5.4 默认为 IO 口,ISP 下载时可将 P5.4 管脚设置为复位脚
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.2V、2.4V、2.7V、3.0V
软件复位
软件方式写复位触发寄存器
中断
提供 14 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、定时器 2、串口 1、串口 2、
LVD 低压检测、SPI、I2C、比较器
提供 4 级中断优先级
数字外设
3 个 16 位定时器:定时器 0、定时器 1、定时器 2,其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功
2 个高速串口:串口 1、串口 2,波特率时钟源最快可为 FOSC/4
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
模拟外设
比较器,一组比较器
GPIO
最多可达 18 个 GPIO: P1.0~P1.7、P3.0~P3.7、P5.4~P5.5
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
封装
TSSOP20、SOP16
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-3-
STC8F1K 系列技术手册
2.1.2
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
管脚图
注意:
1、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平,
否则芯片将会一直处于USB下载模式
而不会运行用户代码
1
2
3
4
5
6
7
8
9
10
TSSOP20/SOP20
T2/SS/P1.2
T2CLKO/MOSI/P1.3
I2CSDA/MISO/P1.4
I2CSCL/SCLK/P1.5
XTALO/MCLKO_2/RxD_3/P1.6
XTALI/TxD_3/P1.7
MCLKO/RST/P5.4
Vcc
P5.5
Gnd
20
19
18
17
16
15
14
13
12
11
P1.1/TxD2
P1.0 /RxD2
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4
P3.4/T0/T1CLKO/MOSI_4/CMPO
P3.3/INT1/MISO_4/I2CSDA_4
P3.2/INT0/SCLK_4/I2CSCL_4
P3.1/TxD
P3.0/RxD/INT4
Vcc
P3.0
P3.1
Gnd
连接
电脑/PC
通用USB转串口工具 (人民币30元)
ISP下载步骤:
1、按照如图所示的连接方式将通用USB转串口工具和目标芯片连接
2、按下电源按钮,确定目标芯片处于停电状态(上电指示灯为灭的状态)。
注意:工具第一次上电时是不对外供电的,因此若是第一次上电使用此工具,可跳过此步。
3、点击STC-ISP下载软件中的“下载/编程”按钮
4、再次按下电源按钮,给目标芯片上电(上电指示灯为亮的状态)
5、开始ISP下载
注意:目前有发现使用USB线供电进行ISP下载时,由于USB线太细,在USB线上的压降过大,导致ISP
下载时供电不足,所以请在使用USB线供电进行ISP下载时,务必使用USB加强线。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-4-
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
注意:P1.0和P1.1
两个管脚的排列与
STC8F2K系列不一样
注意:
1、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平,
否则芯片将会一直处于USB下载模式
而不会运行用户代码
1
2
3
4
5
6
7
8
SOP16
TxD2/P1.1
RxD2/P1.0
XTALO/MCLKO_2/RxD_3/P1.6
XTALI/TxD_3/P1.7
MCLKO/RST/P5.4
Vcc
P5.5
Gnd
技术支持: 13922829991
16
15
14
13
12
11
10
9
选型顾问: 13922805190
P3.7/INT3/TxD_2/CMP+
P3.6/INT2/RxD_2/CMPP3.5/T1/T0CLKO/SS_4
P3.4/T0/T1CLKO/MOSI_4/CMPO
P3.3/INT1/MISO_4/I2CSDA_4
P3.2/INT0/SCLK_4/I2CSCL_4
P3.1/TxD
P3.0/RxD/INT4
Vcc
P3.0
P3.1
Gnd
连接
电脑/PC
通用USB转串口工具 (人民币30元)
ISP下载步骤:
1、按照如图所示的连接方式将通用USB转串口工具和目标芯片连接
2、按下电源按钮,确定目标芯片处于停电状态(上电指示灯为灭的状态)。
注意:工具第一次上电时是不对外供电的,因此若是第一次上电使用此工具,可跳过此步。
3、点击STC-ISP下载软件中的“下载/编程”按钮
4、再次按下电源按钮,给目标芯片上电(上电指示灯为亮的状态)
5、开始ISP下载
注意:目前有发现使用USB线供电进行ISP下载时,由于USB线太细,在USB线上的压降过大,导致ISP
下载时供电不足,所以请在使用USB线供电进行ISP下载时,务必使用USB加强线。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-5-
STC8F1K 系列技术手册
2.1.3
官方网站: www.STCMCUDATA.com
TSSOP20
SOP16
1
2
3
4
6
7
3
4
5
名称
类型
说明
P1.2
I/O
SS
I
SPI 的从机选择脚(主机为输出)
T2
I
定时器 2 外部时钟输入
P1.3
I/O
标准 IO 口
MOSI
I/O
SPI 主机输出从机输入
T2CLKO
O
定时器 2 时钟分频输出
P1.4
I/O
标准 IO 口
MISO
I/O
SPI 主机输入从机输出
SDA
I/O
I2C 接口的数据线
P1.5
I/O
标准 IO 口
SCLK
I/O
SPI 的时钟脚
SCL
I/O
I2C 的时钟线
P1.6
I/O
标准 IO 口
RxD_3
I
串口 1 的接收脚
MCLKO_2
O
主时钟分频输出
XTALO
O
外部晶振的输出脚
P1.7
I/O
TxD_3
O
串口 1 的发送脚
XTALI
I
外部晶振/外部时钟的输入脚
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
标准 IO 口
标准 IO 口
电源脚
8
6
Vcc
VCC
9
7
P5.5
I/O
10
8
Gnd
GND
P3.0
I/O
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
TxD
O
11
12
选型顾问: 13922805190
管脚说明
编号
5
技术支持: 13922829991
9
10
深圳国芯人工智能有限公司
标准 IO 口
地线
标准 IO 口
串口 1 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-6-
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
编号
TSSOP20
13
14
15
16
17
18
SOP16
11
12
13
14
15
16
19
2
20
1
深圳国芯人工智能有限公司
技术支持: 13922829991
选型顾问: 13922805190
名称
类型
说明
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCL_4
I/O
I2C 的时钟线
SCLK_4
I/O
SPI 的时钟脚
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
SDA_4
I/O
I2C 接口的数据线
MISO_4
I/O
SPI 主机输入从机输出
P3.4
I/O
标准 IO 口
T0
I
定时器 0 外部时钟输入
T1CLKO
O
定时器 1 时钟分频输出
MOSI_4
I/O
SPI 主机输出从机输入
CMPO
O
比较器输出
P3.5
I/O
标准 IO 口
T1
I
定时器 1 外部时钟输入
T0CLKO
O
定时器 0 时钟分频输出
SS_4
I
SPI 的从机选择脚(主机为输出)
P3.6
I/O
标准 IO 口
INT2
I
外部中断 2
RxD_2
I
串口 1 的接收脚
CMP-
I
比较器负极输入
P3.7
I/O
标准 IO 口
INT3
I
外部中断 3
TxD_2
O
串口 1 的发送脚
CMP+
I
比较器正极输入
P1.0
I/O
RxD2
I
P1.1
I/O
TxD2
O
标准 IO 口
串口 2 的接收脚
标准 IO 口
串口 2 的发送脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-7-
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
2.2 STC8F1K08-28I-SOP8 系列
2.2.1
特性及价格
选型价格(不需要外部复位)
15
封装
-
-
有
-
有
有 4级 有
是
有
是
是
是
是
STC8F1K17 2.0-5.5 17K 1.2K 2
IAP
6
1
有
有
3
-
-
-
有
-
有
有 4级 有
是
有
是
是
-
-
USB
D/A
SOP8
8
24MHz
PWM
A/D
DPTR
-
-
-
√
年
新
品
供
货
信
息
大
量
供
货
内核
超高速 8051 内核(1T),比传统 8051 约快 12 倍以上
指令代码完全兼容传统 8051
13 个中断源,4 级中断优先级
支持在线仿真
工作电压
2.0V~5.5V
内建 LDO
工作温度
10
SRAM
V
支
支 持 本
身
持
就
可
直 在
线
下 接 仿
载 下 真
载
2018
-
看
门
狗
复
位
定
时
器
可
对
外
输
出
时
钟
及
复
可 位
调
)
SOP16
RS485
3
1
有
掉
电
唤
醒
专
用
定
时
器
ADC 8
有
PWM
1
T0-T2
6
)
口
最
万 多
可 次 数
量
万
增
次 字 可 字
节 减 节
字
节
串
口
并
可
掉
电
唤
醒
PWM
3K
工
作
电
压
(
强
大
的
双
QFN20
可
设
置
下
次
更
新
程
序
需
口
令
STC8F1K08 2.0-5.5 8K 1.2K 2
单
片
机
型
号
程
序
存
储
器
大
容
量
扩
展
TSSOP20
程
序
加
密
后
传
输
(
防
拦
截
)
I2 C
内
部
高
精
准
时
钟
(
SPI
内
部
高
可
靠
复
位
(
可
选
复
位
门
槛
电
压
)
I/O
比
路 较
高 器
速 ( 内
可 部
当 低
(
压
路 检
路
测
中
, 断
可 并
可 作 可
当 外 掉
部 电
路 掉 唤
电 醒
检
使 测
用 )
)
EEPROM 10
PCA/CCP/PWM
15
/
Flash
16
定
时
器
计 位
数 高 位
器 级 增
强
(
型 (
可
当
定
外 时
外
部 器 ( 部
带
管
中
脚 互 死 断
补
区
也
并
可 对 控 可
掉 称 制 掉
电 死 ) 电
唤 区
唤
醒
醒
)
)
-40℃~85℃(超温度范围应用请参考电器特性章节说明)
Flash 存储器
最大 17K 字节 FLASH 程序存储器(ROM),用于存储用户代码
支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上
支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器
支持单芯片仿真,无需专用仿真器,理论断点个数无限制
SRAM
128 字节内部直接访问 RAM(DATA)
128 字节内部间接访问 RAM(IDATA)
1024 字节内部扩展 RAM(内部 XDATA)
时钟控制
内部 24MHz 高精度 IRC(4MHz~28MHz,ISP 编程时可进行上下调整,还可以用户软件分频到较低的频
率工作,如 100KHz)
误差±0.3%(常温下 25℃)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-8-
STC8F1K 系列技术手册
-1.8%~+0.8%温漂(全温度范围,-40℃~85℃)
-1.0%~+0.5%温漂(温度范围,-20℃~65℃)
内部 32KHz 低速 IRC(误差较大)
注意:此型号不可使用外部晶振作为系统时钟源
技术支持: 13922829991
选型顾问: 13922805190
复位
硬件复位
上电复位
复位脚复位(高电平复位),出厂时 P5.4 默认为 IO 口,ISP 下载时可将 P5.4 管脚设置为复位脚
看门狗溢出复位
低压检测复位,提供 4 级低压检测电压:2.2V、2.4V、2.7V、3.0V
软件复位
官方网站: www.STCMCUDATA.com
软件方式写复位触发寄存器
中断
提供 13 个中断源:INT0、INT1、INT2、INT3、INT4、定时器 0、定时器 1、定时器 2、串口 1、LVD 低
压检测、SPI、I2C、比较器
提供 4 级中断优先级
数字外设
3 个 16 位定时器:定时器 0、定时器 1、定时器 2,其中定时器 0 的模式 3 具有 NMI(不可屏蔽中断)功
能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式
1 个高速串口:串口 1,波特率时钟源最快可为 FOSC/4
SPI:支持主机模式和从机模式以及主机/从机自动切换
I2C:支持主机模式和从机模式
GPIO
最多可达 6 个 GPIO: P3.0~P3.3、P5.4~P5.5
所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式
封装
SOP8
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
-9-
STC8F1K 系列技术手册
2.2.2
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
管脚图
注意:
1、若不需要进行USB下载,芯片复位时
P3.0/P3.1/P3.2不可同时为低电平,
否则芯片将会一直处于USB下载模式
而不会运行用户代码
1
2
3
4
SOP8
DFN8
MCLKO/RST/P5.4
Vcc
P5.5
Gnd
8
7
6
5
P3.3/INT1/MISO_4/I2CSDA_4
P3.2/INT0/SCLK_4/I2CSCL_4
P3.1/TxD
P3.0/RxD/INT4
Vcc
P3.0
P3.1
Gnd
连接
电脑/PC
通用USB转串口工具 (人民币30元)
ISP下载步骤:
1、按照如图所示的连接方式将通用USB转串口工具和目标芯片连接
2、按下电源按钮,确定目标芯片处于停电状态(上电指示灯为灭的状态)。
注意:工具第一次上电时是不对外供电的,因此若是第一次上电使用此工具,可跳过此步。
3、点击STC-ISP下载软件中的“下载/编程”按钮
4、再次按下电源按钮,给目标芯片上电(上电指示灯为亮的状态)
5、开始ISP下载
注意:目前有发现使用USB线供电进行ISP下载时,由于USB线太细,在USB线上的压降过大,导致ISP
下载时供电不足,所以请在使用USB线供电进行ISP下载时,务必使用USB加强线。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 10 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
管脚说明
2.2.3
编号
名称
类型
P5.4
I/O
标准 IO 口
RST
I
复位引脚
MCLKO
O
主时钟分频输出
2
Vcc
VCC
3
P5.5
I/O
4
Gnd
GND
P3.0
I/O
RxD
I
串口 1 的接收脚
INT4
I
外部中断 4
P3.1
I/O
标准 IO 口
TxD
O
P3.2
I/O
标准 IO 口
INT0
I
外部中断 0
SCL_4
I/O
I2C 的时钟线
SCLK_4
I/O
SPI 的时钟脚
P3.3
I/O
标准 IO 口
INT1
I
外部中断 1
SDA_4
I/O
I2C 接口的数据线
MISO_4
I/O
SPI 主机输入从机输出
SOP8
1
5
6
7
8
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
说明
电源脚
标准 IO 口
地线
标准 IO 口
串口 1 的发送脚
传真: 0513-5501 2926/2956/2947
- 11 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
3 功能脚切换
STC8F1K 系列单片机的特殊外设串口 1、串口 2、SPI、I2C 以及总线控制脚可以在多个 I/O 直接进
行切换,以实现一个外设当作多个设备进行分时复用。
3.1 功能脚切换相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
P_SW1
外设端口切换寄存器 1
A2H
P_SW2
外设端口切换寄存器 2
BAH
3.1.1
B6
B5
S1_S[1:0]
EAXFR
B4
B3
CCP_S[1:0]
CAN_S
I2C_S[1:0]
B2
SPI_S[1:0]
CMPO_S
S4_S
B1
B0
0
-
nn00,000x
S3_S
S2_S
0x00,0000
外设端口切换控制寄存器 1(P_SW1)
,串口 1、SPI 切换
符号
地址
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
-
-
SPI_S[1:0]:SPI 功能脚选择位
SPI_S[1:0]
SS
MOSI
MISO
SCLK
00
P1.2
P1.3
P1.4
P1.5
01
-
-
-
-
10
-
-
-
-
11
P3.5
P3.4
P3.3
P3.2
3.1.2
外设端口切换控制寄存器 2(P_SW2)
、I2C、比较器输出切
换
符号
地址
B7
B6
P_SW2
BAH
EAXFR
-
B5
B4
I2C_S[1:0]
B3
B2
CMPO_S
S4_S
B1
S3_S
B0
S2_S
EAXFR:扩展 RAM 区特殊功能寄存器(XFR)访问控制寄存器
0:禁止访问 XFR
1:使能访问 XFR。
当需要访问 XFR 时,必须先将 EAXFR 置 1,才能对 XFR 进行正常的读写
I2C_S[1:0]:I2C 功能脚选择位
I2C_S[1:0]
SCL
SDA
00
P1.5
P1.4
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 12 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
01
-
-
10
-
-
11
P3.2
P3.3
3.1.3
技术支持: 13922829991
选型顾问: 13922805190
时钟选择寄存器(CKSEL)
符号
地址
CKSEL
FE00H
B7
B6
B5
B4
MCLKODIV[3:0]
B3
B2
MCLKO_S
-
B1
B0
MCKSEL[1:0]
MCLKO_S:主时钟输出脚选择位
MCLKO_S
MCLKO
0
P5.4
1
P1.6
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 13 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
3.2 范例程序
串口 1 切换
3.2.1
汇编代码
P_SW1
DATA
0A2H
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP, #3FH
MOV
MOV
MOV
P_SW1,#00H
P_SW1,#40H
P_SW1,#80H
SJMP
$
MAIN:
;
;
;RXD/P3.0, TXD/P3.1
;RXD_2/P3.6, TXD_2/P3.7
;RXD_3/P1.6, TXD_3/P1.7
END
C 语言代码
#include "reg51.h"
sfr P_SW1 = 0xa2;
void main()
{
P_SW1 = 0x00;
//
P_SW1 = 0x40;
//
P_SW1 = 0x80;
//RXD/P3.0, TXD/P3.1
//RXD_2/P3.6, TXD_2/P3.7
//RXD_3/P1.6, TXD_3/P1.7
while (1);
}
SPI 切换
3.2.2
汇编代码
P_SW1
DATA
0A2H
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP, #3FH
MOV
MOV
P_SW1,#00H
P_SW1,#0CH
SJMP
$
MAIN:
;
深圳国芯人工智能有限公司
;SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5
;SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 14 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
END
C 语言代码
#include "reg51.h"
sfr P_SW1 = 0xa2;
void main()
{
P_SW1 = 0x00;
//
P_SW1 = 0x0c;
//SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5
//SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2
while (1);
}
I2C 切换
3.2.3
汇编代码
P_SW2
DATA
0BAH
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP, #3FH
MOV
MOV
P_SW2,#00H
P_SW2,#30H
SJMP
$
MAIN:
;
;SCL/P1.5, SDA/P1.4
;SCL_4/P3.2, SDA_4/P3.3
END
C 语言代码
#include "reg51.h"
sfr P_SW2 = 0xba;
void main()
{
P_SW2 = 0x00;
//
P_SW2 = 0x30;
//SCL/P1.5, SDA/P1.4
//SCL_4/P3.2, SDA_4/P3.3
while (1);
}
主时钟输出切换
3.2.4
汇编代码
P_SW2
CKSEL
DATA
EQU
0BAH
0FE00H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 15 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP, #3FH
MOV
MOV
MOV
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#40H
A,#48H
A,#0E8H
DPTR,#CKSEL
@DPTR,A
P_SW2,#00H
SJMP
$
技术支持: 13922829991
选型顾问: 13922805190
MAIN:
;
;
;IRC24M/4 output via MCLKO/P5.4
;IRC24M/4 output via MCLKO_2/P1.6
;IRC24M/128 output via MCLKO_2/P1.6
END
C 语言代码
#include "reg51.h"
#define CKSEL
(*(unsigned char volatile xdata *)0xfe00)
sfr P_SW2 = 0xba;
void main()
{
P_SW2 = 0x80;
CKSEL = 0x40;
//
CKSEL = 0x48;
//
CKSEL = 0xe8;
P_SW2 = 0x00;
//IRC24M/4 output via MCLKO/P5.4
//IRC24M/4 output via MCLKO_2/P1.6
//IRC24M/128 output via MCLKO_2/P1.6
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 16 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
4 封装尺寸图
4.1 SOP8 封装尺寸图
8
5
1
4
MAX
1.75
0.25
1.65
0.75
0.45
5.00
6.20
4.00
0.80
-
A3
R1
R
A1
A
e (1.27mm)
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
b(0.40mm)
?
L
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 17 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
4.2 DFN8 封装尺寸图(3mm*3mm)
E (3mm)
D (3mm)
1
8
PIN 1
4
5
L(0.4mm)
K
D2
4
MAX
0.80
0.05
0.60
0.225
3.11
3.11
1.75
2.45
0.55
0.419
-
A3
A1
A
R
b(0.2mm)
E2
e(0.5mm)
1
SYMBOL
A
A1
A2
A3
b
D
E
D2
E2
e
L
K
R
一般尺寸
测量单位:毫米/mm
MIN
TYP
0.70
0.75
0
0.02
0.50
0.55
0.203REF
0.175
0.20
2.89
3.00
2.89
3.00
1.65
1.70
2.35
2.40
0.45
0.50
0.381
0.40
0.275REF
0.125
-
STC 现有 DFN8 封装芯片的背面金属片(衬底)
,在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 18 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
4.3 SOP16 封装尺寸图
16
9
1
8
MAX
1.75
0.25
1.65
0.75
0.45
10.00
6.20
4.00
0.80
-
A3
R1
R
A1
A
e (1.27mm)
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
b(0.40mm)
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 19 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
MAX
1.20
0.15
1.05
0.54
0.28
6.60
6.60
4.50
0.75
-
A3
R1
R
A1
A
e (0.65mm)
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
b(0.24mm)
L1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 20 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
4.5 QFN20 封装尺寸图(3mm*3mm)
D (3mm)
20
16
1
SYMBOL
A
A1
A2
A3
b
D
E
D2
E2
e
L
K
R
C1
C2
E (3mm)
15
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
C1
C2
A3
b(0.20mm)
A1
A
e(0.4mm)
1
STC 现有 QFN20 封装芯片的背面金属片(衬底)
,在芯片内部并未接地,在用户的 PCB 板上可以接地,
也可以不接地,不会对芯片性能造成影响
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 21 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
4.6 STC8F1K 系列单片机命名规则
STC
8x
xK
64
Sx
独立串口个数
S2:2个独立串口
S :1个独立串口
程序空间大小
08:8K字节
17:17K字节
SRAM空间大小
1K:1K字节
子系列
8F:STC8F系列
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 22 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
5 ISP 下载及典型应用线路图
5.1 STC8F 系列 ISP 下载应用线路图
使用 RS-232 转换器下载,也可支持仿真
5.1.1
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.2
P1.3
P1.4
P1.5
P1.6
P1.7
P5.4
Vcc
P5.5
Gnd
P1.1
P1.0
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
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
100R
STC8F1K08S2
1N5819
47u钽电容(封装3528)参考价> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
{
BGV = (int code *)0x1ff7;
UartInit();
ES = 1;
EA = 1;
UartSend(*BGV >> 8);
UartSend(*BGV);
// STC8F1K08S2
//读取 Bandgap 电压的高字节
//读取 Bandgap 电压的低字节
while (1);
}
7.3.2
读取内部 1.344V 参考信号源值 (从 RAM 中读取)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 71 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
汇编代码
AUXR
BGV
DATA
DATA
8EH
0EFH
BUSY
BIT
20H.0
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
JNB
CLR
RI,UARTISR_EXIT
RI
UART_ISR:
CHKRI:
UARTISR_EXIT:
RETI
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
MOV
SP,#3FH
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
MOV
LCALL
INC
MOV
LCALL
R0,#BGV
A,@R0
UART_SEND
R0
A,@R0
UART_SEND
JMP
LOOP
;65536-11059200/115200/4=0FFE8H
UART_SEND:
MAIN:
;读取 Bandgap 电压的高字节
;读取 Bandgap 电压的低字节
LOOP:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 72 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
C 语言代码
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
sfr
AUXR
bit
int
busy;
*BGV;
11059200UL
(65536 - FOSC / 115200 / 4)
=
0x8e;
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
{
BGV = (int idata *)0xef;
UartInit();
ES = 1;
EA = 1;
UartSend(*BGV >> 8);
UartSend(*BGV);
//读取 Bandgap 电压的高字节
//读取 Bandgap 电压的低字节
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 73 -
STC8F1K 系列技术手册
7.3.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
读取全球唯一 ID 号 (从 Flash 程序存储器(ROM)中读取)
汇编代码
AUXR
ID
DATA
EQU
8EH
01FF9H
BUSY
BIT
20H.0
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
JNB
CLR
RI,UARTISR_EXIT
RI
; STC8F1K08S2
UART_ISR:
CHKRI:
UARTISR_EXIT:
RETI
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
MOV
SP,#3FH
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
MOV
CLR
MOVC
LCALL
INC
DJNZ
DPTR,#ID
R1,#7
A
A,@A+DPTR
UART_SEND
DPTR
R1,NEXT
;65536-11059200/115200/4=0FFE8H
UART_SEND:
MAIN:
NEXT:
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 74 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
JMP
技术支持: 13922829991
选型顾问: 13922805190
LOOP
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
sfr
AUXR
bit
char
busy;
*ID;
11059200UL
(65536 - FOSC / 115200 / 4)
=
0x8e;
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
{
char i;
ID = (char code *)0x1ff9;
UartInit();
ES = 1;
EA = 1;
// STC8F1K08S2
for (i=0; i> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
{
char i;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 77 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
ID = (char idata *)0xf1;
UartInit();
ES = 1;
EA = 1;
for (i=0; i> 8;
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 79 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
{
F32K = (int code *)0x1ff5;
// STC8F1K08S2
UartInit();
ES = 1;
EA = 1;
//读取 32K 频率的高字节
//读取 32K 频率的低字节
UartSend(*F32K >> 8);
UartSend(*F32K);
while (1);
}
7.3.6
读取 32K 掉电唤醒定时器的频率 (从 RAM 中读取)
汇编代码
AUXR
F32K
DATA
DATA
8EH
0F8H
BUSY
BIT
20H.0
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
JNB
CLR
RI,UARTISR_EXIT
RI
UART_ISR:
CHKRI:
UARTISR_EXIT:
RETI
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
深圳国芯人工智能有限公司
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 80 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
RET
UART_SEND:
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
MOV
SP,#3FH
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
MOV
LCALL
INC
MOV
LCALL
R0,#F32K
A,@R0
UART_SEND
R0
A,@R0
UART_SEND
JMP
LOOP
MAIN:
;读取 32K 频率的高字节
;读取 32K 频率的低字节
LOOP:
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
sfr
AUXR
bit
int
busy;
*F32K;
11059200UL
(65536 - FOSC / 115200 / 4)
=
0x8e;
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 81 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
TR1 = 1;
AUXR = 0x40;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void main()
{
F32K = (int idata *)0xf8;
UartInit();
ES = 1;
EA = 1;
//读取 32K 频率的高字节
//读取 32K 频率的低字节
UartSend(*F32K >> 8);
UartSend(*F32K);
while (1);
}
7.3.7
用户自定义内部 IRC 频率 (从 Flash 程序存储器(ROM)中
读取)
汇编代码
P_SW2
CKSEL
CLKDIV
DATA
EQU
EQU
0BAH
0FE00H
0FE01H
IRCCR
DATA
09FH
IRC22M
IRC24M
EQU
EQU
01FF4H
01FF3H
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP,#3FH
MOV
CLR
MOVC
MOV
MOV
CLR
MOVC
MOV
DPTR,#IRC22M
A
A,@A+DPTR
IRCCR,A
DPTR,#IRC24M
A
A,@A+DPTR
IRCCR,A
; STC8F1K08S2
MAIN:
;
;
;
;
深圳国芯人工智能有限公司
;装载 22.1184MHz 的 IRC 参数
;装载 24MHz 的 IRC 参数
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 82 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#0
DPTR,#CLKDIV
@DPTR,A
A,#40H
DPTR,#CKSEL
@DPTR,A
P_SW2,#00H
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;主时钟不预分频
;主时钟 4 分频输出到 P5.4 口
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
#define
#define
CKSEL
CLKDIV
sfr
sfr
P_SW2
IRCCR
char
char
*IRC22M;
*IRC24M;
(*(unsigned char volatile xdata *)0xfe00)
(*(unsigned char volatile xdata *)0xfe01)
=
=
0xba;
0x9f;
void main()
{
IRC22M = (char code *)0x1ff4;
IRC24M = (char code *) 0x1ff3;
//
// STC8F1K08S2
IRCCR = *IRC22M;
IRCCR = *IRC24M;
//装载 22.1184MHz 的 IRC 参数
//装载 24MHz 的 IRC 参数
P_SW2 = 0x80;
CLKDIV = 0;
CKSEL = 0x40;
P_SW2 = 0x00;
//主时钟不预分频
//主时钟 4 分频输出到 P5.4 口
while (1);
}
7.3.8
用户自定义内部 IRC 频率 (从 RAM 中读取)
汇编代码
P_SW2
CKSEL
CLKDIV
DATA
EQU
EQU
0BAH
0FE00H
0FE01H
IRCCR
DATA
09FH
IRC22M
IRC24M
DATA
DATA
0FAH
0FBH
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 83 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP,#3FH
MOV
MOV
MOV
MOV
R0,#IRC22M
IRCCR,@R0
R0,#IRC24M
IRCCR,@R0
MOV
MOV
MOV
MOVX
MOV
MOV
MOVX
MOV
P_SW2,#80H
A,#0
DPTR,#CLKDIV
@DPTR,A
A,#40H
DPTR,#CKSEL
@DPTR,A
P_SW2,#00H
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
MAIN:
;
;
;装载 22.1184MHz 的 IRC 参数
;装载 24MHz 的 IRC 参数
;主时钟不预分频
;主时钟 4 分频输出到 P5.4 口
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
#define
#define
CKSEL
CLKDIV
sfr
sfr
P_SW2
IRCCR
char
char
*IRC22M;
*IRC24M;
(*(unsigned char volatile xdata *)0xfe00)
(*(unsigned char volatile xdata *)0xfe01)
=
=
0xba;
0x9f;
void main()
{
IRC22M = (char idata *)0xfa;
IRC24M = (char idata *) 0xfb;
//
IRCCR = *IRC22M;
IRCCR = *IRC24M;
P_SW2 = 0x80;
CLKDIV = 0;
CKSEL = 0x40;
P_SW2 = 0x00;
//装载 22.1184MHz 的 IRC 参数
//装载 24MHz 的 IRC 参数
//主时钟不预分频
//主时钟 4 分频输出到 P5.4 口
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 84 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
8 特殊功能寄存器
8.1 STC8F1K08S2 系列
0/8
1/9
2/A
3/B
4/C
5/D
6/E
F8H
F0H
RSTCFG
B
E8H
E0H
7/F
AUXINTIF
ACC
DPS
DPL1
DPH1
CMPCR1
CMPCR2
T2H
T2L
SPSTAT
SPCTL
SPDAT
IAP_CMD
IAP_TRIG
IAP_CONTR
IP2
IP2H
IPH
TA
IE2
D8H
D0H
PSW
C8H
P5
C0H
P5M1
P5M0
WDT_CONTR
IAP_DATA
IAP_ADDRH
VOCTRL
B8H
IP
SADEN
P_SW2
B0H
P3
P3M1
P3M0
A8H
IE
SADDR
WKTCL
WKTCH
P_SW1
Reserved
A0H
IAP_ADDRL
Reserved
98H
SCON
SBUF
S2CON
S2BUF
Reserved
90H
P1
P1M1
P1M0
P0M1
P0M0
88H
TCON
TMOD
TL0
TL1
TH0
SP
DPL
DPH
80H
LIRTRIM
IRTRIM
AUXR
INTCLKO
TH1
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
FE80H
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FE18H
P1NCS
P3NCS
P5NCS
FE10H
P1PU
P3PU
P5PU
FE00H
CKSEL
深圳国芯人工智能有限公司
CLKDIV
IRC24MCR
XOSCCR
IRC32KCR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 85 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
8.2 STC8F1K08 系列
0/8
1/9
2/A
3/B
4/C
5/D
6/E
F8H
F0H
RSTCFG
B
E8H
E0H
7/F
AUXINTIF
ACC
DPS
DPL1
DPH1
D8H
D0H
PSW
C8H
P5
C0H
P5M1
P5M0
WDT_CONTR
IAP_DATA
IAP_ADDRH
VOCTRL
B8H
IP
SADEN
P_SW2
B0H
P3
P3M1
P3M0
A8H
IE
SADDR
WKTCL
WKTCH
P_SW1
Reserved
A0H
98H
SCON
SBUF
TCON
TMOD
TL0
TL1
SP
DPL
DPH
IAP_ADDRL
T2H
T2L
SPSTAT
SPCTL
SPDAT
IAP_CMD
IAP_TRIG
IAP_CONTR
IP2
IP2H
IPH
TA
IE2
Reserved
Reserved
LIRTRIM
IRTRIM
AUXR
INTCLKO
90H
88H
80H
TH0
TH1
PCON
可位寻址
不可位寻址
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址
FE80H
0/8
1/9
2/A
3/B
4/C
5/D
6/E
7/F
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTxD
I2CRxD
FE18H
P3NCS
P5NCS
FE10H
P3PU
P5PU
FE00H
CKSEL
深圳国芯人工智能有限公司
CLKDIV
IRC24MCR
XOSCCR
IRC32KCR
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 86 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
8.3 特殊功能寄存器列表
注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址。
STC8F1K 系列能进行位寻址的寄存器: TCON(88H)、P1(90H)、SCON(98H)、IE(A8H)、P3(B0H)、
IP(B8H)、P5(C8H)、PSW(D0H)、CCON(D8H)、ACC(E0H)、B(F0H)
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
堆栈指针
81H
0000,0111
DPL
数据指针(低字节)
82H
0000,0000
DPH
数据指针(高字节)
83H
0000,0000
PCON
电源控制寄存器
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
0011,0000
TCON
定时器控制寄存器
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0000,0000
TMOD
定时器模式寄存器
89H
GATE
C/T
M1
M0
GATE
C/T
M1
M0
0000,0000
TL0
定时器 0 低 8 为寄存器
8AH
0000,0000
TL1
定时器 1 低 8 为寄存器
8BH
0000,0000
TH0
定时器 0 高 8 为寄存器
8CH
0000,0000
TH1
定时器 1 高 8 为寄存器
8DH
0000,0000
辅助寄存器 1
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12 EXTRAM
中断与时钟输出控制寄存器
8FH
-
EX4
EX3
EX2
-
T2CLKO T1CLKO
P1 端口
90H
1111,1111
P1M1
P1 口配置寄存器 1
91H
0000,0000
P1M0
P1 口配置寄存器 0
92H
0000,0000
SCON
串口 1 控制寄存器
98H
SBUF
串口 1 数据寄存器
99H
S2CON
串口 2 控制寄存器
9AH
S2BUF
串口 2 数据寄存器
9BH
LIRTRIM
IRC 频率微调寄存器
9EH
IRTRIM
IRC 频率调整寄存器
9FH
P_SW1
外设端口切换寄存器 1
A2H
中断允许寄存器
A8H
SADDR
串口 1 从机地址寄存器
A9H
0000,0000
WKTCL
掉电唤醒定时器低字节
AAH
1111,1111
WKTCH
掉电唤醒定时器高字节
ABH
TA
DPTR 时序控制寄存器
AEH
IE2
中断允许寄存器 2
AFH
P3
P3 端口
B0H
1111,1111
P3M1
P3 口配置寄存器 1
B1H
n000,0000
P3M0
P3 口配置寄存器 0
B2H
n000,0000
中断优先级控制寄存器 2
B5H
-
PI2C
PCMP
PX4
-
-
PSPI
PS2
x000,xx00
IP2H
高中断优先级控制寄存器 2
B6H
-
PI2CH
PCMPH
PX4H
-
-
PSPIH
PS2H
x000,xx00
IPH
高中断优先级控制寄存器
B7H
-
PLVDH
-
PSH
PT1H
PX1H
PT0H
PX0H
x0x0,0000
中断优先级控制寄存器
B8H
-
PLVD
-
PS
PT1
PX1
PT0
PX0
x0x0,0000
串口 1 从机地址屏蔽寄存器
B9H
SP
AUXR
INTCLKO
P1
IE
IP2
IP
SADEN
深圳国芯人工智能有限公司
SM0/FE
SM1
SM2
REN
TB8
RB8
S1ST2
0000,0001
T0CLKO x000,x000
TI
RI
0000,0000
0000,0000
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
0100,0000
0000,0000
-
-
-
-
-
-
LIRTRIM[1:0]
IRTRIM[7:0]
S1_S[1:0]
EA
-
ELVD
-
nnnn,nnnn
SPI_S[1:0]
ES
0000,00nn
ET1
EX1
0
-
nnxx,000x
ET0
EX0
00x0,0000
WKTEN
0111,1111
0000,0000
-
-
-
国内分销商电话: 0513-5501 2928/2929/2966
-
-
ET2
ESPI
ES2
xxxx,x000
0000,0000
传真: 0513-5501 2926/2956/2947
- 87 -
STC8F1K 系列技术手册
P_SW2
VOCTRL
官方网站: www.STCMCUDATA.com
外设端口切换寄存器 2
BAH
EAXFR
-
I2C_S[1:0]
电压控制寄存器
BBH
SCC
-
-
C1H
WDT_FLAG
-
EN_WDT
WDT_CONTR 看门狗控制寄存器
IAP_DATA
技术支持: 13922829991
IAP 数据寄存器
选型顾问: 13922805190
-
-
-
-
0x00,xxxx
-
-
-
0
0
0xxx,xx00
CLR_WDT
IDL_WDT
WDT_PS[2:0]
0x00,0000
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
P5 端口
C8H
-
-
xx11,1111
P5M1
P5 口配置寄存器 1
C9H
-
-
xx11,1111
P5M0
P5 口配置寄存器 0
CAH
-
-
xx11,1111
SPSTAT
SPI 状态寄存器
CDH
SPIF
WCOL
-
-
-
-
SPCTL
SPI 控制寄存器
CEH
SSIG
SPEN
DORD
MSTR
CPOL
CPHA
SPDAT
SPI 数据寄存器
CFH
PSW
程序状态字寄存器
D0H
T2H
定时器 2 高字节
D6H
0000,0000
T2L
定时器 2 低字节
D7H
0000,0000
ACC
累加器
E0H
0000,0000
DPS
DPTR 指针选择器
E3H
DPL1
第二组数据指针(低字节)
E4H
0000,0000
DPH1
第二组数据指针(高字节)
E5H
0000,0000
CMPCR1
比较器控制寄存器 1
E6H
CMPEN
CMPIF
CMPCR2
比较器控制寄存器 2
E7H
INVCMPO
DISFLT
扩展外部中断标志寄存器
EFH
-
INT4IF
B 寄存器
F0H
复位配置寄存器
FFH
P5
AUXINTIF
B
RSTCFG
-
-
-
-
-
-
CMD[1:0]
xxxx,xx00
0000,0000
SWRST
-
CMD_FAIL
IAP_WT[2:0]
0000,x000
-
SPR[1:0]
00xx,xxxx
0000,0100
0000,0000
CY
ID1
AC
ID0
F0
RS1
TSL
PIE
RS0
AU1
OV
AU0
NIE
PIS
-
-
NIS
P
-
SEL
INT2IF
-
0000,0xx0
CMPOE CMPRES 0000,0000
LCDTY[5:0]
INT3IF
0000,00x0
0000,0000
-
-
T2IF
x000,xxx0
0000,0000
-
ENLVR
-
P54RST
-
-
LVDS[1:0]
0000,0000
下列特殊功能寄存器为扩展 SFR,逻辑地址位于 XDATA 区域,访问前需要将 P_SW2(BAH)寄存
器的最高位(EAXFR)置 1,然后使用 MOVX A,@DPTR 和 MOVX @DPTR,A 指令进行访问
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
I2C 配置寄存器
FE80H
ENI2C
MSSL
I2CMSCR
I2C 主机控制寄存器
FE81H
EMSI
-
-
-
I2CMSST
I2C 主机状态寄存器
FE82H
MSBUSY
MSIF
-
-
-
-
I2CSLCR
I2C 从机控制寄存器
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
I2CSLST
I2C 从机状态寄存器
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
I2CSLADR
I2C 从机地址寄存器
FE85H
I2CTXD
I2C 数据发送寄存器
FE86H
0000,0000
I2CRXD
I2C 数据接收寄存器
FE87H
0000,0000
I2C 主机辅助控制寄存器
FE88H
P1PU
P1 口上拉电阻控制寄存器
FE11H
0000,0000
P3PU
P3 口上拉电阻控制寄存器
FE13H
0000,0000
P5PU
P5 口上拉电阻控制寄存器
FE15H
0000,0000
P1 口施密特触发控制寄存器
FE19H
0000,0000
I2CCFG
I2CMSAUX
P1NCS
深圳国芯人工智能有限公司
MSSPEED[6:1]
0000,0000
MSCMD[3:0]
0xxx,0000
MSACKI MSACKO 00xx,xx00
-
TXING SLACKI
SLRST
SLACKO 0000,0000
SLADR[6:0]
-
-
-
国内分销商电话: 0513-5501 2928/2929/2966
-
MA
-
-
-
x000,0xx0
WDTA
传真: 0513-5501 2926/2956/2947
0000,0000
xxxx,xxx0
- 88 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P3NCS
P3 口施密特触发控制寄存器
FE1BH
0000,0000
P5NCS
P5 口施密特触发控制寄存器
FE1DH
0000,0000
CKSEL
时钟选择寄存器
FE00H
CLKDIV
时钟分频寄存器
FE01H
内部 24M 振荡器控制寄存器
FE02H ENIRC24M
外部晶振控制寄存器
FE03H
内部 32K 振荡器控制寄存器
FE04H
IRC24MCR
XOSCCR
IRC32KCR
MCLKODIV[3:0]
MCLKO_S
-
MCKSEL[1:0]
0000,0000
nnnn,nnnn
-
-
-
-
-
-
IRC24MST 1xxx,xxx0
ENXOSC
XITYPE
-
-
-
-
-
XOSCST 00xx,xxx0
ENIRC32K
-
-
-
-
-
-
IRC32KST 0xxx,xxx0
注:特殊功能寄存器初始值意义
0: 初始值为 0;
1: 初始值为 1;
n: 初始值与 ISP 下载时的硬件选项有关;
x: 不存在这个位,初始值不确定
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 89 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
9 I/O 口
所有的 I/O 口均有 4 种工作模式:准双向口/弱上拉(标准 8051 输出口模式)、推挽输出/强上拉、高
阻输入(电流既不能流入也不能流出)、开漏输出。可使用软件对 I/O 口的工作模式进行容易配置。
I/O 口相关寄存器
9.1
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
P1
P1 端口
90H
P17
P16
P15
P14
P13
P12
P11
P10
1111,1111
P3
P3 端口
B0H
P37
P36
P35
P34
P33
P32
P31
P30
1111,1111
P5
P5 端口
C8H
-
-
P55
P54
P53
P52
P51
P50
xx11,1111
P1M1
P1 口配置寄存器 1
91H
P17M1
P16M1
P15M1
P14M1
P13M1
P12M1
P11M1
P10M1 0000,0000
P1M0
P1 口配置寄存器 0
92H
P17M0
P16M0
P15M0
P14M0
P13M0
P12M0
P11M0
P10M0 0000,0000
P3M1
P3 口配置寄存器 1
B1H
P37M1
P36M1
P35M1
P34M1
P33M1
P32M1
P31M1
P30M1 0000,0000
P3M0
P3 口配置寄存器 0
B2H
P37M0
P36M0
P35M0
P34M0
P33M0
P32M0
P31M0
P30M0 0000,0000
P5M1
P5 口配置寄存器 1
C9H
-
-
P55M1
P54M1
P53M1
P52M1
P51M1
P50M1 xx00,0000
P5M0
P5 口配置寄存器 0
CAH
-
-
P55M0
P54M0
P53M0
P52M0
P51M0
P50M0 xx00,0000
符号
描述
地址
位地址与符号
复位值
B7
B6
B5
B4
B3
B2
B1
B0
P1PU
P1 口上拉电阻控制寄存器
FE11H
P17PU
P16PU
P15PU
P14PU
P13PU
P12PU
P11PU
P10PU
0000,0000
P3PU
P3 口上拉电阻控制寄存器
FE13H
P37PU
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
0000,0000
P5PU
P5 口上拉电阻控制寄存器
FE15H
-
-
P55PU
P54PU
P53PU
P52PU
P51PU
P50PU
xx00,0000
P1NCS
P1 口施密特触发控制寄存器
FE19H
P17NCS
P16NCS
P15NCS P14NCS P13NCS P12NCS
P11NCS
P10NCS 0000,0000
P3NCS
P3 口施密特触发控制寄存器
FE1BH
P37NCS
P36NCS
P35NCS P34NCS P33NCS P32NCS
P31NCS
P30NCS 0000,0000
P5NCS
P5 口施密特触发控制寄存器
FE1DH
-
-
P55NCS P54NCS P53NCS P52NCS
P51NCS
P50NCS xx00,0000
9.1.1
端口数据寄存器(Px)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P1
90H
P1.7
P1.6
P1.5
P1.4
P1.3
P1.2
P1.1
P1.0
P3
B0H
P3.7
P3.6
P3.5
P3.4
P3.3
P3.2
P3.1
P3.0
P5
C8H
-
-
P5.5
P5.4
P5.3
P5.2
P5.1
P5.0
B2
B1
B0
读写端口状态
写 0:输出低电平到端口缓冲区
写 1:输出高电平到端口缓冲区
读:直接读端口管脚上的电平
9.1.2
符号
端口模式配置寄存器(PxM0,PxM1)
地址
深圳国芯人工智能有限公司
B7
B6
B5
B4
国内分销商电话: 0513-5501 2928/2929/2966
B3
传真: 0513-5501 2926/2956/2947
- 90 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P1M0
92H
P17M0
P16M0
P15M0
P14M0
P13M0
P12M0
P11M0
P10M0
P1M1
91H
P17M1
P16M1
P15M1
P14M1
P13M1
P12M1
P11M1
P10M1
P3M0
B2H
P37M0
P36M0
P35M0
P34M0
P33M0
P32M0
P31M0
P30M0
P3M1
B1H
P37M1
P36M1
P35M1
P34M1
P33M1
P32M1
P31M1
P30M1
P5M0
CAH
-
-
P55M0
P54M0
P53M0
P52M0
P51M0
P50M0
P5M1
C9H
-
-
P55M1
P54M1
P53M1
P52M1
P51M1
P50M1
配置端口的模式
PnM1.x
PnM0.x
Pn.x 口工作模式
0
0
准双向口
0
1
推挽输出
1
0
高阻输入
1
1
开漏输出
端口上拉电阻控制寄存器(PxPU)
9.1.3
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P1PU
FE11H
P17PU
P16PU
P15PU
P14PU
P13PU
P12PU
P11PU
P10PU
P3PU
FE13H
P37PU
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
P5PU
FE15H
-
-
P55PU
P54PU
P53PU
P52PU
P51PU
P50PU
端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些)
0:禁止端口内部的 4.1K 上拉电阻
1:使能端口内部的 4.1K 上拉电阻
端口施密特触发控制寄存器(PxNCS)
9.1.4
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P1NCS
FE19H
P17NCS
P16NCS
P15NCS
P14NCS
P13NCS
P12NCS
P11NCS
P10NCS
P3NCS
FE1BH
P37NCS
P36NCS
P35NCS
P34NCS
P33NCS
P32NCS
P31NCS
P30NCS
P5NCS
FE1DH
-
-
P55NCS
P54NCS
P53NCS
P52NCS
P51NCS
P50NCS
端口施密特触发控制位
0:使能端口的施密特触发功能。(上电复位后默认使能施密特触发)
1:禁止端口的施密特触发功能。
VCC=5.0V
最小值
最大值
普通 IO 输入高电平
2.2V
-
普通 IO 输入低电平
-
1.4V
普通 IO 输入高电平
1.6V
-
普通 IO 输入低电平
-
1.5V
复位脚输入高电平
2.2V
-
复位脚输入低电平
-
1.8V
VCC=3.3V
最小值
最大值
普通 IO 输入高电平
1.6V
-
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
打开施密特触发
关闭施密特触发
打开施密特触发
传真: 0513-5501 2926/2956/2947
- 91 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
普通 IO 输入低电平
-
普通 IO 输入高电平
1.2V
普通 IO 输入低电平
技术支持: 13922829991
1.0V
1.1V
复位脚输入高电平
1.7V
-
复位脚输入低电平
-
1.3V
深圳国芯人工智能有限公司
选型顾问: 13922805190
国内分销商电话: 0513-5501 2928/2929/2966
关闭施密特触发
传真: 0513-5501 2926/2956/2947
- 92 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
配置 I/O 口
9.2
每个 I/O 的配置都需要使用两个寄存器进行设置。
以 P0 口为例,配置 P0 口需要使用 P0M0 和 P0M1 两个寄存器进行配置,如下图所示:
配置 P0.7
配置 P0.5
配置 P0.3
配置 P0.1
P0M0
7
6
5
4
3
2
1
0
P0M1
7
6
5
4
3
2
1
0
配置 P0.6
配置 P0.4
配置 P0.2
配置 P0.0
即 P0M0 的第 0 位和 P0M1 的第 0 位组合起来配置 P0.0 口的模式
即 P0M0 的第 1 位和 P0M1 的第 1 位组合起来配置 P0.1 口的模式
其他所有 I/O 的配置都与此类似。
PnM0 与 PnM1 的组合方式如下表所示
PnM1
PnM0
0
0
I/O 口工作模式
准双向口(传统8051端口模式,弱上拉)
灌电流可达20mA,拉电流为270~150μA(存在制造误差)
0
1
推挽输出(强上拉输出,可达20mA,要加限流电阻)
1
0
高阻输入(电流既不能流入也不能流出)
开漏输出(Open-Drain),内部上拉电阻断开
1
1
开漏模式既可读外部状态也可对外输出(高电平或低电
平)。如要正确读外部状态或需要对外输出高电平,需外加
上拉电阻,否则读不到外部状态,也对外输不出高电平。
注:n = 0,1,2,3,4,5,6,7
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 93 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
I/O 的结构图
9.3
9.3.1
准双向口(弱上拉)
准双向口(弱上拉)输出类型可用作输出和输入功能而不需重新配置端口输出状态。这是因为当端
口输出为 1 时驱动能力很弱,允许外部装置将其拉低。当引脚输出为低时,它的驱动能力很强,可吸收
相当大的电流。准双向口有 3 个上拉晶体管适应不同的需要。
在 3 个上拉晶体管中,有 1 个上拉晶体管称为“弱上拉”,当端口寄存器为 1 且引脚本身也为 1 时打
开。此上拉提供基本驱动电流使准双向口输出为 1。如果一个引脚输出为 1 而由外部装置下拉到低时,
弱上拉关闭而“极弱上拉”维持开状态,为了把这个引脚强拉为低,外部装置必须有足够的灌电流能力
使引脚上的电压降到门槛电压以下。对于 5V 单片机,“弱上拉”晶体管的电流约 250uA;对于 3.3V 单
片机,“弱上拉”晶体管的电流约 150uA。
第 2 个上拉晶体管,称为“极弱上拉”,当端口锁存为 1 时打开。当引脚悬空时,这个极弱的上拉源
产生很弱的上拉电流将引脚上拉为高电平。对于 5V 单片机,“极弱上拉”晶体管的电流约 18uA;对于
3.3V 单片机,
“极弱上拉”晶体管的电流约 5uA。
第 3 个上拉晶体管称为“强上拉”。当端口锁存器由 0 到 1 跳变时,这个上拉用来加快准双向口由逻
辑 0 到逻辑 1 转换。当发生这种情况时,强上拉打开约 2 个时钟以使引脚能够迅速地上拉到高电平。
准双向口(弱上拉)带有一个施密特触发输入以及一个干扰抑制电路。准双向口(弱上拉)读外部
状态前,要先锁存为 ‘1’,才可读到外部正确的状态.
准双向口(弱上拉)输出如下图所示:
VCC
2个CPU
时钟延时
强
VCC
极弱
VCC
弱
端口
引脚
端口锁存数据
输入数据
干扰抑制
9.3.2
推挽输出
强推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为 1 时提供持续
的强上拉。推挽模式一般用于需要更大驱动电流的情况。
强推挽引脚配置如下图所示:
VCC
强
端口
引脚
端口锁存数据
输入数据
干扰抑制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 94 -
STC8F1K 系列技术手册
9.3.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
高阻输入
电流既不能流入也不能流出
输入口带有一个施密特触发输入以及一个干扰抑制电路
高阻输入引脚配置如下图所示:
端口
引脚
输入数据
干扰抑制
9.3.4
开漏输出
开漏模式既可读外部状态也可对外输出(高电平或低电平)。如要正确读外部状态或需要对外输出高
电平,需外加上拉电阻。
当端口锁存器为 0 时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出高电平时,这种配置方
式必须有外部上拉,一般通过电阻外接到 Vcc。如果外部有上拉电阻,开漏的 I/O 口还可读外部状态,
即此时被配置为开漏模式的 I/O 口还可作为输入 I/O 口。这种方式的下拉与准双向口相同。
开漏端口带有一个施密特触发输入以及一个干扰抑制电路。
输出端口配置如下图所示:
端口
引脚
端口锁存数据
输入数据
干扰抑制
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 95 -
STC8F1K 系列技术手册
9.3.5
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
新增 4.1K 上拉电阻
STC8F1K 系列所有的 I/O 口内部均可使能一个大约 4.1K 的上拉电阻(由于制造误差,上拉电阻的
范围可能为 3K~5K)
VCC
VCC
VCC
VCC
新增
4.1K
上拉电阻
2个CPU
时钟延时
强
极弱
弱
端口
引脚
端口锁存数据
PxPU控制位
输入数据
干扰抑制
端口上拉电阻控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
P1PU
FE11H
P17PU
P16PU
P15PU
P14PU
P13PU
P12PU
P11PU
P10PU
P3PU
FE13H
P37PU
P36PU
P35PU
P34PU
P33PU
P32PU
P31PU
P30PU
P5PU
FE15H
-
-
P55PU
P54PU
P53PU
P52PU
P51PU
P50PU
端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些)
0:禁止端口内部的 4.1K 上拉电阻
1:使能端口内部的 4.1K 上拉电阻
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 96 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
范例程序
9.4
端口模式设置
9.4.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x92;
0x91;
0x96;
0x95;
0xb2;
0xb1;
0xb4;
0xb3;
0xca;
0xc9;
0xcc;
0xcb;
0xe2;
0xe1;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0xff;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0xff;
P3M0 = 0xff;
P3M1 = 0xff;
//设置 P0.0~P0.7 为双向口模式
//设置 P1.0~P1.7 为推挽输出模式
//设置 P2.0~P2.7 为高阻输入模式
//设置 P3.0~P3.7 为开漏模式
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
P1M0
P1M1
P2M0
P2M1
P3M0
P3M1
P4M0
P4M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
094H
093H
092H
091H
096H
095H
0B2H
0B1H
0B4H
0B3H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 97 -
STC8F1K 系列技术手册
P5M0
P5M1
P6M0
P6M1
P7M0
P7M1
官方网站: www.STCMCUDATA.com
DATA
DATA
DATA
DATA
DATA
DATA
0CAH
0C9H
0CCH
0CBH
0E2H
0E1H
ORG
LJMP
0000H
MAIN
ORG
0100H
MOV
SP, #5FH
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M0,#00H
P0M1,#00H
P1M0,#0FFH
P1M1,#00H
P2M0,#00H
P2M1,#0FFH
P3M0,#0FFH
P3M1,#0FFH
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
MAIN:
;设置 P0.0~P0.7 为双向口模式
;设置 P1.0~P1.7 为推挽输出模式
;设置 P2.0~P2.7 为高阻输入模式
;设置 P3.0~P3.7 为开漏模式
END
双向口读写操作
9.4.2
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sbit
P0M0
P0M1
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
P00
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0x94;
0x93;
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
P0^0;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 98 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
P0M0 = 0x00;
P0M1 = 0x00;
//设置 P0.0~P0.7 为双向口模式
P00 = 1;
P00 = 0;
//P0.0 口输出高电平
//P0.0 口输出低电平
P00 = 1;
_nop_();
_nop_();
CY = P00;
//读取端口前先使能内部弱上拉电阻
//等待两个时钟
//
//读取端口状态
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P0M0
P0M1
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
DATA
094H
093H
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
- 99 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
MOV
MOV
MOV
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
P0M0,#00H
P0M1,#00H
;设置 P0.0~P0.7 为双向口模式
SETB
CLR
P0.0
P0.0
;P0.0 口输出高电平
;P0.0 口输出低电平
SETB
NOP
NOP
MOV
P0.0
;读取端口前先使能内部弱上拉电阻
;等待两个时钟
C,P0.0
;读取端口状态
JMP
$
选型顾问: 13922805190
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 100 -
STC8F1K 系列技术手册
9.5
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
一种典型三极管控制电路
如果上拉控制,建议加上拉电阻 R1(3.3K~10K),如果不加上拉电阻 R1(3.3K~10K),建议 R2 的值在 15K
以上,或用强推挽输出。
9.6
典型发光二极管控制电路
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 101 -
STC8F1K 系列技术手册
9.7
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
混合电压供电系统 3V/5V 器件 I/O 口互连
STC 的 5V 单片机连接 3.3V 器件时,为防止 3.3V 器件承受不了 5V,可将相应的 5V 单片机 I/O 口先串一
个 330Ω 的限流电阻到 3.3V 器件 I/O 口,程序初始化时将 5V 单片机的 I/O 口设置成开漏配置,断开内部上
拉电阻,相应的 3.3V 器件 I/O 口外部加 10K 上拉电阻到 3.3V 器件的 Vcc,这样高电平是 3.3V,低电平是 0V,
输入输出一切正常。
STC 的 3V 单片机连接 5V 器件时,为防止 3V 单片机承受不了 5V,如果相应的 I/O 口是输入,可在该 I/O
口上串接一个隔离二极管,隔离高压部分。外部信号电压高于单片机工作电压时截止,I/O 口因内内部上拉到
高电平,所以读 I/O 口状态是高电平;外部信号电压为低时导通,I/O 口被钳位在 0.7V,小于 0.8V 时单片机
读 I/O 口状态是低电平。
STC 的 3V 单片机连接 5V 器件时,为防止 3V 单片机承受不了 5V,如果相应的 I/O 口是输出,可用一个 NPN
三极管隔离,电路如下:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 102 -
STC8F1K 系列技术手册
9.8
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
如何让 I/O 口上电复位时为低电平
传统 8051 单片机上电复位时普通 I/O 口为弱上拉(准双向口)高电平输出,而很多实际应用要求上电时某
些 I/O 口为低电平输出,否则所控制的系统(如马达)就会误动作,新一代 STC8G 系列和 STC8H 系列单片机由
于所有的 I/O 复位后是高阻输入(除 P3.0/P3.1 是传统的弱上拉),加一个下拉电阻就可保证上电时为低电平,
后续要改为高电平,只需要将 I/O 的模式改为强推挽输出,对外输出高电平即可。
如下:在 STC 的单片机 I/O 口上加一个下拉电阻(10K 左右),这样上电复位时,除了下载口 P3.0 和 P3.1
为弱上拉(准双向口)外,其他 I/O 口均为高阻输入模式,而外部有下拉电阻,所以该 I/O 口上电复位时外部
为低电平。如果要将此 I/O 口驱动为高电平,可将此 I/O 口设置为强推挽输出,而强推挽输出时,I/O 口驱动
电流可达 20mA,故肯定可以将该口驱动为高电平输出。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 103 -
STC8F1K 系列技术手册
9.9
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 104 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
9.10 I/O 口直接驱动 LED 数码管应用线路图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 105 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 106 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 107 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 108 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
:访问外部扩展 RAM 时,指令的执行周期与寄存器 BUS_SPEED 中的 SPEED[2:0]位有关
:对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执
行下一条指令,此时条件跳转语句的执行时间为 1 个时钟;当条件满足时,则会发生跳转,此时条件跳
转语句的执行时间为 3 个时钟。
[3]
:对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执
行下一条指令,此时条件跳转语句的执行时间为 2 个时钟;当条件满足时,则会发生跳转,此时条件跳
转语句的执行时间为 3 个时钟。
[1]
[2]
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 109 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
11 中断系统
中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。
当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求 CPU 暂停当前的工作,
转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为
中断。实现这种功能的部件称为中断系统,请示 CPU 中断的请求源称为中断源。微型机的中断系统一般
允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在 CPU 优先响应
哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规
定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。
当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它
还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源,
处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系
统,没有中断嵌套功能的中断系统称为单级中断系统。
用户可以用关总中断允许位(EA/IE.7)或相应中断的允许位屏蔽相应的中断请求,也可以用打开相
应的中断允许位来使 CPU 响应相应的中断申请,每一个中断源可以用软件独立地控制为开中断或关中断
状态,部分中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,低
优先级的中断请求不可以打断高优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来
决定系统先响应哪个中断。
11.1 STC8F1K 系列中断源
下表中√表示对应的系列有相应的中断源
STC8F1K08S2
STC8F1K08
系列
系列
外部中断 0 中断(INT0)
√
√
定时器 0 中断(Timer0)
√
√
外部中断 1 中断(INT1)
√
√
定时器 1 中断(Timer1)
√
√
串口 1 中断(UART1)
√
√
低压检测中断(LVD)
√
√
串口 2 中断(UART2)
√
串行外设接口中断(SPI)
√
外部中断 2 中断(INT2)
√
外部中断 3 中断(INT3)
√
定时器 2 中断(Timer2)
√
√
外部中断 4 中断(INT4)
√
√
比较器中断(CMP)
√
I2C 总线中断
√
中断源
深圳国芯人工智能有限公司
√
√
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 110 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
11.2 STC8F1K 系列中断结构图
中断请求
中断允许控制
中断优先级控制
最低优先级
较低优先级
较高优先级
最高优先级
TCON.0/IT0=0
INT0
EX0
EA
ET0
EA
IE0
PX0/PX0H
0
PT0/PT0H
0
1
2
3
TCON.0/IT0=1
Timer0
TF0
1
2
3
TCON.2/IT1=0
EX1
INT1
EA
IE1
0
PX1/PX1H
1
2
3
TCON.2/IT1=1
Timer1
EA
PT1/PT1H
0
ES
EA
PS/PSH
0
TF1
RI
UART1
ET1
TI
EADC
ADC
ADC_Flag
LVD
LVDF
ELVD
EA
EA
0
PADC/PADCH
0
PLVD/PLVDH
1
1
1
1
2
2
2
2
ECF
3
3
3
3
CF
ECF0
CCF0
ECF1
PCA
EA
CCF1
0
PPCA/PPCAH
1
2
ECF2
3
CCF2
ECF3
CCF3
S2RI
UART2
S2TI
SPI
ES2
EA
ESPI
EA
SPIF
EX2
INT2
INT2IF
INT3
INT3IF
Timer2
UART4
Timer3
Timer4
CMP
S3TI
S4RI
S4TI
PSPI/PSPIH
0
优先级固定为最低优先级
EA
优先级固定为最低优先级
ET2
EA
优先级固定为最低优先级
EX4
EA
ES3
EA
INT4IF
S3RI
0
EX3
T2IF
INT4
UART3
EA
PS2/PS2H
优先级固定为最低优先级
ES4
EA
优先级固定为最低优先级
ET3
EA
优先级固定为最低优先级
ET4
EA
优先级固定为最低优先级
T3IF
T4IF
PIE
EA
CMPIF
PCMP/PCMPH
1
2
2
3
3
0
0
0
0
PX4/PX4H
1
1
2
3
0
0
0
0
0
1
2
NIE
3
ECBI
CBIF
C0IF
C1IF
C2IF
PWM
C3IF
C4IF
C5IF
C6IF
C7IF
EC0I
EC0T1SI
EC0T2SI
EC1I
EC1T1SI
EC1T2SI
EC2I
EC2T1SI
EC2T2SI
EC3I
EFDI
PWMFD
EA
PPWM/PPWMH
0
1
EC3T1SI
EC3T2SI
EC4I
EC4T1SI
EC4T2SI
EC5I
EC5T1SI
EC5T2SI
EC6I
EC6T1SI
EC6T2SI
EC7I
EC7T1SI
EC7T2SI
FDIF
EA
PPWMFD/PPWMFDH
0
1
2
2
EMSI
3
3
MSIF
ESTAI
STAIF
ESTOI
I2C
STOIF
PI2C/PI2CH
ERXI
0
1
2
3
RXIF
ETXI
TXIF
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 111 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
11.3 STC8F1K 系列中断列表
中断源
中断向量
次序
优先级设置
优先级
中断请求位
中断允许位
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
LVD
0033H
6
PLVD,PLVDH
0/1/2/3
LVDF
ELVD
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
CMP
00ABH
21
PCMP,PCMPH
0/1/2/3
CMPIF
PIE|NIE
MSIF
EMSI
STAIF
ESTAI
RXIF
ERXI
TXIF
ETXI
STOIF
ESTOI
I2C
00C3H
24
PI2C,PI2CH
0/1/2/3
在 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
LVD_Routine(void)
interrupt 6;
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
CMP_Routine(void)
interrupt 21;
void
I2C_Routine(void)
interrupt 24;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 112 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
11.4 中断相关寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
IE
中断允许寄存器
A8H
EA
ELVD
-
ES
ET1
EX1
ET0
EX0
0000,0000
IE2
中断允许寄存器 2
AFH
-
-
-
-
-
ET2
ESPI
ES2
x000,0000
INTCLKO
中断与时钟输出控制寄存器
8FH
-
EX4
EX3
EX2
-
IP
中断优先级控制寄存器
B8H
-
PLVD
-
PS
PT1
PX1
PT0
PX0
0000,0000
IPH
高中断优先级控制寄存器
B7H
-
PLVDH
-
PSH
PT1H
PX1H
PT0H
PX0H
0000,0000
IP2
中断优先级控制寄存器 2
B5H
-
PI2C
PCMP
PX4
-
-
PSPI
PS2
x000,0000
IP2H
高中断优先级控制寄存器 2
B6H
-
PI2CH
PCMPH
PX4H
-
-
PSPIH
PS2H
x000,0000
TCON
定时器控制寄存器
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
0000,0000
AUXINTIF
扩展外部中断标志寄存器
EFH
-
INT4IF
INT3IF
INT2IF
-
-
-
T2IF
x000,x000
SCON
串口 1 控制寄存器
98H
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
0000,0000
S2CON
串口 2 控制寄存器
9AH
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
0100,0000
PCON
电源控制寄存器
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
0011,0000
SPSTAT
SPI 状态寄存器
CDH
SPIF
WCOL
-
-
-
-
-
-
00xx,xxxx
符号
描述
地址
B2
B1
T2CLKO T1CLKO
T0CLKO x000,x000
位地址与符号
复位值
B7
B6
B5
B4
B3
I2CMSCR
I2C 主机控制寄存器
FE81H
EMSI
-
-
-
-
I2CMSST
I C 主机状态寄存器
FE82H
MSBUSY
MSIF
-
-
-
-
I2CSLCR
I C 从机控制寄存器
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
I2CSLST
I C 从机状态寄存器
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
11.4.1
2
2
2
B0
MSCMD[2:0]
0xxx,x000
MSACKI MSACKO 00xx,xx00
-
TXING SLACKI
SLRST
x000,0xx0
SLACKO 0000,0000
中断使能寄存器(中断允许位)
IE(中断使能寄存器)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IE
A8H
EA
ELVD
-
ES
ET1
EX1
ET0
EX0
EA:总中断允许控制位。EA 的作用是使中断允许形成多级控制。即各中断源首先受 EA 控制;其次还受
各中断源自己的中断允许控制位控制。
0:CPU 屏蔽所有的中断申请
1:CPU 开放中断
ELVD:低压检测中断允许位。
0:禁止低压检测中断
1:允许低压检测中断
ES:串行口 1 中断允许位。
0:禁止串行口 1 中断
1:允许串行口 1 中断
ET1:定时/计数器 T1 的溢出中断允许位。
0:禁止 T1 中断
1:允许 T1 中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 113 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
EX1:外部中断 1 中断允许位。
0:禁止 INT1 中断
1:允许 INT1 中断
ET0:定时/计数器 T0 的溢出中断允许位。
0:禁止 T0 中断
1:允许 T0 中断
EX0:外部中断 0 中断允许位。
0:禁止 INT0 中断
1:允许 INT0 中断
IE2(中断使能寄存器 2)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IE2
AFH
-
-
-
-
-
ET2
ESPI
ES2
ET2:定时/计数器 T2 的溢出中断允许位。
0:禁止 T2 中断
1:允许 T3 中断
ESPI:SPI 中断允许位。
0:禁止 SPI 中断
1:允许 SPI 中断
ES2:串行口 2 中断允许位。
0:禁止串行口 2 中断
1:允许串行口 2 中断
INTCLKO(外部中断与时钟输出控制寄存器)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTCLKO
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
T0CLKO
EX4:外部中断 4 中断允许位。
0:禁止 INT4 中断
1:允许 INT4 中断
EX3:外部中断 3 中断允许位。
0:禁止 INT3 中断
1:允许 INT3 中断
EX2:外部中断 2 中断允许位。
0:禁止 INT2 中断
1:允许 INT2 中断
CMPCR1(比较器控制寄存器 1)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CMPCR1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES
PIE:比较器上升沿中断允许位。
0:禁止比较器上升沿中断
1:允许比较器上升沿中断
NIE:比较器下降沿中断允许位。
0:禁止比较器下降沿中断
1:允许比较器下降沿中断
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 114 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
I2C 控制寄存器
符号
地址
B7
B6
B5
B4
B3
I2CMSCR
FE81H
EMSI
-
-
-
-
I2CSLCR
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
-
SLRST
B2
B1
B0
MSCMD[2:0]
EMSI:I2C主机模式中断允许位。
0:禁止 I2C 主机模式中断
1:允许 I2C 主机模式中断
ESTAI:I2C从机接收START事件中断允许位。
0:禁止 I2C 从机接收 START 事件中断
1:允许 I2C 从机接收 START 事件中断
ERXI:I2C从机接收数据完成事件中断允许位。
0:禁止 I2C 从机接收数据完成事件中断
1:允许 I2C 从机接收数据完成事件中断
ETXI:I2C从机发送数据完成事件中断允许位。
0:禁止 I2C 从机发送数据完成事件中断
1:允许 I2C 从机发送数据完成事件中断
ESTOI:I2C从机接收STOP事件中断允许位。
0:禁止 I2C 从机接收 STOP 事件中断
1:允许 I2C 从机接收 STOP 事件中断
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
-
-
-
T2IF
INT4IF:外部中断4中断请求标志。中断服务程序中硬件自动清零。
INT3IF:外部中断3中断请求标志。中断服务程序中硬件自动清零。
INT2IF:外部中断2中断请求标志。中断服务程序中硬件自动清零。
T2IF:定时器2溢出中断标志。中断服务程序中硬件自动清零(注意:此位为只写寄存器,不可读)。
注意:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 115 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
早期采用 0.35um 工艺的 1T 8051,STC15 系列增加了 16 位重装载定时器,全球 8051 首次大手笔,
犹豫制造成本高,STC 可 16 位重装载的定时器 2/3/4 没有设计用户可以访问的中断请求标志位寄存器,
只有内部隐藏的标志位,提供给用户软件清内部隐藏标志位的方法是:用户软件禁止定时器 2/3/4 中断
时,硬件自动清定时器 2/3/4 内部隐藏中断请求标志位。
为了产品的一致性:
采用 0.18um 工艺的 STC8A/ STC8F 及后续 STC8G/STC8H/ STC8C/ STC12H 系列虽然增加了定时器
2/3/4 的用户可以访问的中断请求标志位寄存器,但禁止定时器 2/3/4 中断时,硬件自动清定时器 2/3/4
内部隐藏中断请求标志位的功能依然保留了。所以在定时器 2/3/4 没有停止计数时不要随意禁止定时器
2/3/4 中断,否则实际起作用的隐藏的中断请求标志位会被清除掉,会有可能,计数器又溢出后,又产生
了隐藏的中断请求标志位被置 1 后,去请求中断并在等待时,却被用户误清除的事。
这与传统的 INTEL8048,8051 不一样,但 INTEL 已停产,STC 已是实际的 8051 工业标准,就不要
再考虑这兼容美国人的事了!
这是中国 STC 对 8051 的再发展。
串口控制寄存器
符号
地址
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
TI:串口1发送完成中断请求标志。需要软件清零。
RI:串口1接收完成中断请求标志。需要软件清零。
S2TI:串口2发送完成中断请求标志。需要软件清零。
S2RI:串口2接收完成中断请求标志。需要软件清零。
电源管理寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PCON
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
LVDF:低压检测中断请求标志。需要软件清零。
SPI 状态寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SPSTAT
CDH
SPIF
WCOL
-
-
-
-
-
-
SPIF:SPI数据传输完成中断请求标志。需要软件清零。
比较器控制寄存器 1
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
CMPCR1
E6H
CMPEN
CMPIF
PIE
NIE
PIS
NIS
CMPOE
CMPRES
CMPIF:比较器中断请求标志。需要软件清零。
I2C 状态寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
I2CMSST
FE82H
MSBUSY
MSIF
-
-
-
-
MSACKI
MSACKO
I2CSLST
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
TXING
SLACKI
SLACKO
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 116 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
MSIF:I2C主机模式中断请求标志。需要软件清零。
ESTAI:I2C从机接收START事件中断请求标志。需要软件清零。
ERXI:I2C从机接收数据完成事件中断请求标志。需要软件清零。
ETXI:I2C从机发送数据完成事件中断请求标志。需要软件清零。
ESTOI:I2C从机接收STOP事件中断请求标志。需要软件清零。
11.4.3
中断优先级寄存器
中断优先级控制寄存器
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
IP
B8H
-
PLVD
-
PS
PT1
PX1
PT0
PX0
IPH
B7H
-
PLVDH
-
PSH
PT1H
PX1H
PT0H
PX0H
IP2
B5H
-
PI2C
PCMP
PX4
-
-
PSPI
PS2
IP2H
B6H
-
PI2CH
PCMPH
PX4H
-
-
PSPIH
PS2H
PX0H,PX0:外部中断0中断优先级控制位
00:INT0 中断优先级为 0 级(最低级)
01:INT0 中断优先级为 1 级(较低级)
10:INT0 中断优先级为 2 级(较高级)
11:INT0 中断优先级为 3 级(最高级)
PT0H,PT0:定时器0中断优先级控制位
00:定时器 0 中断优先级为 0 级(最低级)
01:定时器 0 中断优先级为 1 级(较低级)
10:定时器 0 中断优先级为 2 级(较高级)
11:定时器 0 中断优先级为 3 级(最高级)
PX1H,PX1:外部中断1中断优先级控制位
00:INT1 中断优先级为 0 级(最低级)
01:INT1 中断优先级为 1 级(较低级)
10:INT1 中断优先级为 2 级(较高级)
11:INT1 中断优先级为 3 级(最高级)
PT1H,PT1:定时器1中断优先级控制位
00:定时器 1 中断优先级为 0 级(最低级)
01:定时器 1 中断优先级为 1 级(较低级)
10:定时器 1 中断优先级为 2 级(较高级)
11:定时器 1 中断优先级为 3 级(最高级)
PSH,PS:串口1中断优先级控制位
00:串口 1 中断优先级为 0 级(最低级)
01:串口 1 中断优先级为 1 级(较低级)
10:串口 1 中断优先级为 2 级(较高级)
11:串口 1 中断优先级为 3 级(最高级)
PLVDH,PLVD:低压检测中断优先级控制位
00:LVD 中断优先级为 0 级(最低级)
01:LVD 中断优先级为 1 级(较低级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 117 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
10:LVD 中断优先级为 2 级(较高级)
11:LVD 中断优先级为 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中断优先级控制位
00:I2C 中断优先级为 0 级(最低级)
01:I2C 中断优先级为 1 级(较低级)
10:I2C 中断优先级为 2 级(较高级)
11:I2C 中断优先级为 3 级(最高级)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 118 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
11.5 范例程序
INT0 中断(上升沿和下降沿)
11.5.1
汇编代码
ORG
LJMP
ORG
LJMP
0000H
MAIN
0003H
INT0ISR
ORG
0100H
JB
CPL
RETI
INT0,RISING
P1.0
;判断上升沿和下降沿
;测试端口
CPL
RETI
P1.1
;测试端口
MOV
SP,#3FH
CLR
SETB
SETB
JMP
IT0
EX0
EA
$
INT0ISR:
RISING:
MAIN:
;使能 INT0 上升沿和下降沿中断
;使能 INT0 中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sbit
sbit
P10
P11
void INT0_Isr() interrupt 0
{
if (INT0)
{
P10 = !P10;
}
else
{
P11 = !P11;
}
}
void main()
{
IT0 = 0;
EX0 = 1;
EA = 1;
=
=
P1^0;
P1^1;
//判断上升沿和下降沿
//测试端口
//测试端口
//使能 INT0 上升沿和下降沿中断
//使能 INT0 中断
while (1);
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 119 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
}
INT0 中断(下降沿)
11.5.2
汇编代码
ORG
LJMP
ORG
LJMP
0000H
MAIN
0003H
INT0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
SP,#3FH
SETB
SETB
SETB
JMP
IT0
EX0
EA
$
INT0ISR:
;测试端口
MAIN:
;使能 INT0 下降沿中断
;使能 INT0 中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sbit
P10
=
P1^0;
void INT0_Isr() interrupt 0
{
P10 = !P10;
}
//测试端口
void main()
{
IT0 = 1;
EX0 = 1;
EA = 1;
//使能 INT0 下降沿中断
//使能 INT0 中断
while (1);
}
11.5.3
INT1 中断(上升沿和下降沿)
汇编代码
ORG
LJMP
ORG
LJMP
0000H
MAIN
0013H
INT1ISR
ORG
0100H
INT1ISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 120 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
JB
CPL
RETI
INT1,RISING
P1.0
;判断上升沿和下降沿
;测试端口
CPL
RETI
P1.1
;测试端口
MOV
SP,#3FH
CLR
SETB
SETB
JMP
IT1
EX1
EA
$
选型顾问: 13922805190
RISING:
MAIN:
;使能 INT1 上升沿和下降沿中断
;使能 INT1 中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sbit
sbit
P10
P11
=
=
P1^0;
P1^1;
void INT1_Isr() interrupt 2
{
if (INT1)
{
P10 = !P10;
}
else
{
P11 = !P11;
}
}
//判断上升沿和下降沿
//测试端口
//测试端口
void main()
{
IT1 = 0;
EX1 = 1;
EA = 1;
//使能 INT1 上升沿和下降沿中断
//使能 INT1 中断
while (1);
}
11.5.4
INT1 中断(下降沿)
汇编代码
ORG
LJMP
ORG
LJMP
0000H
MAIN
0013H
INT1ISR
ORG
0100H
CPL
P1.0
INT1ISR:
深圳国芯人工智能有限公司
;测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 121 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
RETI
MAIN:
MOV
SP,#3FH
SETB
SETB
SETB
JMP
IT1
EX1
EA
$
;使能 INT1 下降沿中断
;使能 INT1 中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sbit
P10
=
P1^0;
void INT1_Isr() interrupt 2
{
P10 = !P10;
}
//测试端口
void main()
{
IT1 = 1;
EX1 = 1;
EA = 1;
//使能 INT1 下降沿中断
//使能 INT1 中断
while (1);
}
11.5.5
INT2 中断(下降沿)
汇编代码
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
ORG
LJMP
ORG
LJMP
0000H
MAIN
0053H
INT2ISR
ORG
0100H
CPL
RETI
P1.0
MOV
SP,#3FH
MOV
SETB
JMP
INTCLKO,#EX2
EA
$
INT2ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
;使能 INT2 中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 122 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
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()
{
INTCLKO = EX2;
EA = 1;
//使能 INT2 中断
while (1);
}
11.5.6
INT3 中断(下降沿)
汇编代码
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
ORG
LJMP
ORG
LJMP
0000H
MAIN
005BH
INT3ISR
ORG
0100H
CPL
RETI
P1.0
MOV
SP,#3FH
MOV
SETB
JMP
INTCLKO,#EX3
EA
$
INT3ISR:
;测试端口
MAIN:
;使能 INT3 中断
END
C 语言代码
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 123 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
#include "intrins.h"
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()
{
INTCLKO = EX3;
EA = 1;
//使能 INT3 中断
while (1);
}
INT4 中断(下降沿)
11.5.7
汇编代码
INTCLKO
EX2
EX3
EX4
DATA
EQU
EQU
EQU
8FH
10H
20H
40H
ORG
LJMP
ORG
LJMP
0000H
MAIN
0083H
INT4ISR
ORG
0100H
CPL
RETI
P1.0
MOV
SP,#3FH
MOV
SETB
JMP
INTCLKO,#EX4
EA
$
INT4ISR:
;测试端口
MAIN:
;使能 INT4 中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sfr
#define
#define
#define
INTCLKO
EX2
EX3
EX4
深圳国芯人工智能有限公司
=
0x8f;
0x10
0x20
0x40
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 124 -
STC8F1K 系列技术手册
sbit
P10
官方网站: www.STCMCUDATA.com
=
技术支持: 13922829991
选型顾问: 13922805190
P1^0;
void INT4_Isr() interrupt 16
{
P10 = !P10;
}
//测试端口
void main()
{
INTCLKO = EX4;
EA = 1;
//使能 INT4 中断
while (1);
}
定时器 0 中断
11.5.8
汇编代码
;测试工作频率为 11.0592MHz
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
SP,#3FH
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL0,#66H
TH0,#0FCH
TR0
ET0
EA
JMP
$
TM0ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
//测试工作频率为 11.0592MHz
sbit
P10
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
深圳国芯人工智能有限公司
=
P1^0;
//测试端口
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 125 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
void main()
{
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
技术支持: 13922829991
选型顾问: 13922805190
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
定时器 1 中断
11.5.9
汇编代码
;测试工作频率为 11.0592MHz
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
SP,#3FH
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
ET1
EA
JMP
$
TM1ISR:
;测试端口
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
//测试工作频率为 11.0592MHz
sbit
P10
void TM1_Isr() interrupt 3
{
P10 = !P10;
}
=
P1^0;
//测试端口
void main()
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 126 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
{
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
ORG
LJMP
ORG
LJMP
0000H
MAIN
0063H
TM2ISR
ORG
0100H
CPL
ANL
RETI
P1.0
AUXINTIF,#NOT T2IF
MOV
SP,#3FH
MOV
MOV
MOV
MOV
SETB
T2L,#66H
T2H,#0FCH
AUXR,#10H
IE2,#ET2
EA
JMP
$
TM2ISR:
;测试端口
;清中断标志
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
//测试工作频率为 11.0592MHz
sfr
sfr
T2L
T2H
深圳国芯人工智能有限公司
=
=
0xd7;
0xd6;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 127 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sfr
sfr
#define
sfr
#define
AUXR
IE2
ET2
AUXINTIF
T2IF
=
=
sbit
P10
=
=
技术支持: 13922829991
选型顾问: 13922805190
0x8e;
0xaf;
0x04
0xef;
0x01
P1^0;
void TM2_Isr() interrupt 12
{
P10 = !P10;
AUXINTIF &= ~T2IF;
}
//测试端口
//清中断标志
void main()
{
T2L = 0x66;
T2H = 0xfc;
AUXR = 0x10;
IE2 = ET2;
EA = 1;
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
11.5.11 UART1 中断
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
DATA
DATA
DATA
0D7H
0D6H
8EH
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
;清中断标志
;测试端口
UART1ISR:
CHECKRI:
ISREXIT:
RETI
MAIN:
MOV
SP,#3FH
MOV
MOV
SCON,#50H
T2L,#0E8H
深圳国芯人工智能有限公司
;65536-11059200/115200/4=0FFE8H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 128 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
SETB
SETB
MOV
T2H,#0FFH
AUXR,#15H
ES
EA
SBUF,#5AH
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;启动定时器
;使能串口中断
;发送测试数据
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
//测试工作频率为 11.0592MHz
sfr
sfr
sfr
T2L
T2H
AUXR
=
=
=
0xd7;
0xd6;
0x8e;
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;
}
}
//清中断标志
//测试端口
//清中断标志
//测试端口
void main()
{
SCON = 0x50;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x15;
ES = 1;
EA = 1;
SBUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
}
11.5.12 UART2 中断
汇编代码
;测试工作频率为 11.0592MHz
T2L
DATA
深圳国芯人工智能有限公司
0D7H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 129 -
STC8F1K 系列技术手册
T2H
AUXR
S2CON
S2BUF
IE2
ES2
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
DATA
DATA
DATA
DATA
DATA
EQU
0D6H
8EH
9AH
9BH
0AFH
01H
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
SP,#3FH
MOV
MOV
MOV
MOV
MOV
SETB
MOV
S2CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
IE2,#ES2
EA
S2BUF,#5AH
JMP
$
选型顾问: 13922805190
UART2ISR:
CHECKRI:
ISREXIT:
MAIN:
;65536-11059200/115200/4=0FFE8H
;启动定时器
;使能串口中断
;发送测试数据
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
//测试工作频率为 11.0592MHz
sfr
sfr
sfr
sfr
sfr
sfr
#define
T2L
T2H
AUXR
S2CON
S2BUF
IE2
ES2
深圳国芯人工智能有限公司
=
=
=
=
=
=
0xd7;
0xd6;
0x8e;
0x9a;
0x9b;
0xaf;
0x01
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 130 -
STC8F1K 系列技术手册
sbit
sbit
P12
P13
官方网站: www.STCMCUDATA.com
=
=
技术支持: 13922829991
选型顾问: 13922805190
P1^2;
P1^3;
void UART2_Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
P12 = !P12;
}
if (S2CON & 0x01)
{
S2CON &= ~0x01;
P13 = !P13;
}
}
//清中断标志
//测试端口
//清中断标志
//测试端口
void main()
{
S2CON = 0x10;
T2L = 0xe8;
T2H = 0xff;
AUXR = 0x14;
IE2 = ES2;
EA = 1;
S2BUF = 0x5a;
//65536-11059200/115200/4=0FFE8H
//启动定时器
//使能串口中断
//发送测试数据
while (1);
}
11.5.13 LVD 中断
汇编代码
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
ORG
LJMP
ORG
LJMP
0000H
MAIN
0033H
LVDISR
ORG
0100H
ANL
CPL
RETI
PCON,#NOT LVDF
P1.0
MOV
SP,#3FH
;RSTCFG.6
;LVD@2.2V
;LVD@2.4V
;LVD@2.7V
;LVD@3.0V
;PCON.5
LVDISR:
;清中断标志
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 131 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ANL
MOV
SETB
SETB
JMP
PCON,#NOT LVDF
RSTCFG,# LVD3V0
ELVD
EA
$
技术支持: 13922829991
选型顾问: 13922805190
;上电需要清中断标志
;设置 LVD 电压为 3.0V
;使能 LVD 中断
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sfr
#define
#define
#define
#define
#define
sbit
#define
sbit
RSTCFG
ENLVR
LVD2V2
LVD2V4
LVD2V7
LVD3V0
ELVD
LVDF
P10
=
=
=
0xff;
0x40
0x00
0x01
0x02
0x03
IE^6;
0x20
P1^0;
void LVD_Isr() interrupt 6
{
PCON &= ~LVDF;
P10 = !P10;
}
//RSTCFG.6
//LVD@2.2V
//LVD@2.4V
//LVD@2.7V
//LVD@3.0V
//PCON.5
//清中断标志
//测试端口
void main()
{
PCON &= ~LVDF;
RSTCFG = LVD3V0;
ELVD = 1;
EA = 1;
//上电需要清中断标志
//设置 LVD 电压为 3.0V
//使能 LVD 中断
while (1);
}
11.5.14 SPI 中断
汇编代码
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
ORG
LJMP
ORG
LJMP
0000H
MAIN
004BH
SPIISR
ORG
0100H
SPIISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 132 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
CPL
RETI
SPSTAT,#0C0H
P1.0
MOV
SP,#3FH
MOV
MOV
MOV
SETB
MOV
SPCTL,#50H
SPSTAT,#0C0H
IE2,#ESPI
EA
SPDAT,#5AH
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;清中断标志
;测试端口
MAIN:
;使能 SPI 主机模式
;清中断标志
;使能 SPI 中断
;发送测试数据
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
SPSTAT
SPCTL
SPDAT
IE2
ESPI
=
=
=
=
0xcd;
0xce;
0xcf;
0xaf;
0x02
sbit
P10
=
P1^0;
void SPI_Isr() interrupt 9
{
SPSTAT = 0xc0;
P10 = !P10;
}
//清中断标志
//测试端口
void main()
{
SPCTL = 0x50;
SPSTAT = 0xc0;
IE2 = ESPI;
EA = 1;
SPDAT = 0x5a;
//使能 SPI 主机模式
//清中断标志
//使能 SPI 中断
//发送测试数据
while (1);
}
11.5.15 CMP 中断
汇编代码
CMPCR1
CMPCR2
DATA
DATA
0E6H
0E7H
ORG
LJMP
ORG
LJMP
0000H
MAIN
00ABH
CMPISR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 133 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ORG
0100H
ANL
CPL
RETI
CMPCR1,#NOT 40H
P1.0
MOV
SP,#3FH
MOV
MOV
ORL
ANL
ORL
ORL
SETB
CMPCR2,#00H
CMPCR1,#80H
CMPCR1,#30H
CMPCR1,#NOT 08H
CMPCR1,#04H
CMPCR1,#02H
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
CMPISR:
;清中断标志
;测试端口
MAIN:
;使能比较器模块
;使能比较器边沿中断
;P3.6 为 CMP+输入脚
;P3.7 为 CMP-输入脚
;使能比较器输出
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
sfr
sfr
CMPCR1
CMPCR2
=
=
0xe6;
0xe7;
sbit
P10
=
P1^0;
void CMP_Isr() interrupt 21
{
CMPCR1 &= ~0x40;
P10 = !P10;
}
//清中断标志
//测试端口
void main()
{
CMPCR2 = 0x00;
CMPCR1 = 0x80;
CMPCR1 |= 0x30;
CMPCR1 &= ~0x08;
CMPCR1 |= 0x04;
CMPCR1 |= 0x02;
EA = 1;
//使能比较器模块
//使能比较器边沿中断
//P3.6 为 CMP+输入脚
//P3.7 为 CMP-输入脚
//使能比较器输出
while (1);
}
11.5.16 I2C 中断
汇编代码
P_SW2
DATA
深圳国芯人工智能有限公司
0BAH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 134 -
STC8F1K 系列技术手册
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTXD
I2CRXD
官方网站: www.STCMCUDATA.com
XDATA
XDATA
XDATA
XDATA
XDATA
XDATA
XDATA
XDATA
0FE80H
0FE81H
0FE82H
0FE83H
0FE84H
0FE85H
0FE86H
0FE87H
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
SP,#3FH
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
I2CISR:
;清中断标志
;测试端口
MAIN:
;使能 I2C 主机模式
;使能 I2C 中断
;发送起始命令
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 135 -
STC8F1K 系列技术手册
sfr
P_SW2
#define
#define
#define
#define
#define
#define
#define
#define
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTXD
I2CRXD
sbit
P10
官方网站: www.STCMCUDATA.com
=
P_SW2 = 0x80;
I2CMSCR = 0x81;
P_SW2 = 0x00;
选型顾问: 13922805190
0xba;
(*(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)
(*(unsigned char volatile xdata *)0xfe87)
=
void I2C_Isr() interrupt 24
{
_push_(P_SW2);
P_SW2 |= 0x80;
if (I2CMSST & 0x40)
{
I2CMSST &= ~0x40;
P10 = !P10;
}
_pop_(P_SW2);
}
void main()
{
P_SW2 = 0x80;
I2CCFG = 0xc0;
I2CMSCR = 0x80;
P_SW2 = 0x00;
EA = 1;
技术支持: 13922829991
P1^0;
//清中断标志
//测试端口
//使能 I2C 主机模式
//使能 I2C 中断;
//发送起始命令
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 136 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
12 定时器/计数器
特别注意:当需要使能定时器的时钟输出功能时,相关的时钟输出口可设置为准双向口模式或者推
挽输出模式,但一定不能设置开漏模式,否则没有输出
STC8F1K 系列单片机内部设置了 3 个 16 位定时器/计数器。3 个 16 位定时器 T0、T1、T2 都具有计
数方式和定时方式两种工作方式。对定时器/计数器 T0 和 T1,用它们在特殊功能寄存器 TMOD 中相对
应的控制位 C/T 来选择 T0 或 T1 为定时器还是计数器。对定时器/计数器 T2,用特殊功能寄存器 AUXR
中的控制位 T2_C/T 来选择 T2 为定时器还是计数器。定时器/计数器的核心部件是一个加法计数器,其
本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式,此时定
时器/计数器每 12 个时钟或者每 1 个时钟得到一个计数脉冲,计数值加 1;如果计数脉冲来自单片机外部
引脚,则为计数方式,每来一个脉冲加 1。
当定时器/计数器 T0、T1 及 T2 工作在定时模式时,特殊功能寄存器 AUXR 中的 T0x12、T1x12 和
T2x12 分别决定是系统时钟/12 还是系统时钟/1(不分频)后让 T0、T1 和 T2 进行计数。当定时器/计数
器工作在计数模式时,对外部脉冲计数不分频。
定时器/计数器 0 有 4 种工作模式:模式 0(16 位自动重装载模式),模式 1(16 位不可重装载模式),
模式 2(8 位自动重装模式),模式 3(不可屏蔽中断的 16 位自动重装载模式)。定时器/计数器 1 除模
式 3 外,其他工作模式与定时器/计数器 0 相同。T1 在模式 3 时无效,停止计数。定时器 T2 的工作模式
固定为 16 位自动重装载模式。T2 可以当定时器使用,也可以当串口的波特率发生器和可编程时钟输出。
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
T2H
定时器 2 高字节
D6H
0000,0000
T2L
定时器 2 低字节
D7H
0000,0000
深圳国芯人工智能有限公司
S1ST2
0000,0001
T0CLKO x000,x000
1111,1111
WKTEN
国内分销商电话: 0513-5501 2928/2929/2966
0111,1111
传真: 0513-5501 2926/2956/2947
- 137 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
12.2 定时器 0/1
定时器 0/1 控制寄存器(TCON)
12.2.1
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TCON
88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF1:T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件将TF1位置“1”,
并向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”(也可由查询软件清“0”)。
TR1:定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时就允许T1开
始计数,TR1=0时禁止T1计数。当GATE(TMOD.7)=1,TR1=1且INT1输入高电平时,才允许T1
计数。
TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”TF0,
向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。
TR0:定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时就允许T0开
始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=1且INT0输入高电平时,才允许T0
计数,TR0=0时禁止T0计数。
IE1:外部中断1请求源(INT1/P3.3)标志。IE1=1,外部中断向CPU请求中断,当CPU响应该中断时由
硬件清“0”IE1。
IT1:外部中断源1触发控制位。IT1=0,上升沿或下降沿均可触发外部中断1。IT1=1,外部中断1程控为
下降沿触发方式。
IE0:外部中断0请求源(INT0/P3.2)标志。IE0=1外部中断0向CPU请求中断,当CPU响应外部中断时,
由硬件清“0”IE0(边沿触发方式)。
IT0:外部中断源0触发控制位。IT0=0,上升沿或下降沿均可触发外部中断0。IT0=1,外部中断0程控为
下降沿触发方式。
定时器 0/1 模式寄存器(TMOD)
12.2.2
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
TMOD
89H
T1_GATE
T1_C/T
T1_M1
T1_M0
T0_GATE
T0_C/T
T0_M1
T0_M0
T1_GATE:控制定时器1,置1时只有在INT1脚为高及TR1控制位置1时才可打开定时器/计数器1。
T0_GATE:控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才可打开定时器/计数器0。
T1_C/T:控制定时器1用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T1/P3.5外部脉冲进行计数)。
T0_C/T:控制定时器0用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T0/P3.4外部脉冲进行计数)。
T1_M1/T1_M0:定时器定时器/计数器1模式选择
T1_M1
T1_M0
0
0
定时器/计数器1工作模式
16位自动重载模式
当[TH1,TL1]中的16位计数值溢出时,系统会自动将内部16位
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 138 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
重载寄存器中的重载值装入[TH1,TL1]中。
16位不自动重载模式
0
1
当[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]中。
16位不自动重载模式
0
1
当[TH0,TL0]中的16位计数值溢出时,定时器0将从0开始计数
8位自动重载模式
1
0
当TL0中的8位计数值溢出时,系统会自动将TH0中的重载值
装入TL0中。
不可屏蔽中断的16位自动重载模式
与模式0相同,不可屏蔽中断,中断优先级最高,高于其他所
1
1
有中断的优先级,并且不可关闭,可用作操作系统的系统节拍
定时器,或者系统监控定时器。
12.2.3
定时器 0 模式 0(16 位自动重装载模式)
此模式下定时器/计数器 0 作为可自动重装载的 16 位计数器,如下图所示:
AUXR.7/T0x12=0
÷12
SYSclk
TF0
C/T=0
Interrupt
Toggle
÷1
TH0
(8bits)
AUXR.7/T0x12=1
C/T=1
T0 Pin
TL0
(8bits)
control
T0CLKO
TR0
GATE
INT0
T0CLKO
P3.5
RL_TH0
(8bits)
RL_TL0
(8bits)
定时器/计数器 0 的模式 0:16 位自动重装载模式
当 GATE=0(TMOD.3)时,如 TR0=1,则定时器计数。GATE=1 时,允许由外部输入 INT0 控制定时器 0,
这样可实现脉宽测量。TR0 为 TCON 寄存器内的控制位,TCON 寄存器各位的具体功能描述见上节 TCON 寄
存器的介绍。
当 C/T=0 时,多路开关连接到系统时钟的分频输出,T0 对内部系统时钟计数,T0 工作在定时方式。当
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 139 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
C/T=1 时,多路开关连接到外部脉冲输入 P3.4/T0,即 T0 工作在计数方式。
STC 单片机的定时器 0 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同;
另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T0 的速率由特殊功能寄存器 AUXR
中的 T0x12 决定,如果 T0x12=0,T0 则工作在 12T 模式;如果 T0x12=1,T0 则工作在 1T 模式
定时器 0 有两个隐藏的寄存器 RL_TH0 和 RL_TL0。RL_TH0 与 TH0 共有同一个地址,RL_TL0 与 TL0
共有同一个地址。当 TR0=0 即定时器/计数器 0 被禁止工作时,对 TL0 写入的内容会同时写入 RL_TL0,对
TH0 写入的内容也会同时写入 RL_TH0。当 TR0=1 即定时器/计数器 0 被允许工作时,对 TL0 写入内容,实
际上不是写入当前寄存器 TL0 中,而是写入隐藏的寄存器 RL_TL0 中,对 TH0 写入内容,实际上也不是写入
当前寄存器 TH0 中,而是写入隐藏的寄存器 RL_TH0,这样可以巧妙地实现 16 位重装载定时器。当读 TH0
和 TL0 的内容时,所读的内容就是 TH0 和 TL0 的内容,而不是 RL_TH0 和 RL_TL0 的内容。
当定时器 0 工作在模式 0(TMOD[1:0]/[M1,M0]=00B)时,[TH0,TL0]的溢出不仅置位 TF0,而且会自动
将[RL_TH0,RL_TL0]的内容重新装入[TH0,TL0]。
当 T0CLKO/INT_CLKO.0=1 时,P3.5/T1 管脚配置为定时器 0 的时钟输出 T0CLKO。输出时钟频率为 T0
溢出率/2。
如果 C/T=0,定时器/计数器 T0 对内部系统时钟计数,则:
T0 工作在 1T 模式(AUXR.7/T0x12=1)时的输出时钟频率 = (SYSclk)/(65536-[RL_TH0, RL_TL0])/2
T0 工作在 12T 模式(AUXR.7/T0x12=0)时的输出时钟频率 = (SYSclk)/12/(65536-[RL_TH0, RL_TL0])/2
如果 C/T=1,定时器/计数器 T0 是对外部脉冲输入(P3.4/T0)计数,则:
输出时钟频率 = (T0_Pin_CLK) / (65536-[RL_TH0, RL_TL0])/2
12.2.4
定时器 0 模式 1(16 位不可重装载模式)
此模式下定时器/计数器 0 工作在 16 位不可重装载模式,如下图所示
AUXR.7/T0x12=0
÷12
SYSclk
TF0
C/T=0
Interrupt
Toggle
÷1
TH0
(8bits)
AUXR.7/T0x12=1
C/T=1
T0 Pin
TL0
(8bits)
T0CLKO
P3.5
control
T0CLKO
TR0
GATE
INT0
定时器/计数器 0 的模式 1:16 位不可重装载模式
此模式下,定时器/计数器 0 配置为 16 位不可重装载模式,由 TL0 的 8 位和 TH0 的 8 位所构成。TL0 的
8 位溢出向 TH0 进位,TH0 计数溢出置位 TCON 中的溢出标志位 TF0。
当 GATE=0(TMOD.3)时,如 TR0=1,则定时器计数。GATE=1 时,允许由外部输入 INT0 控制定时器 0,
这样可实现脉宽测量。TR0 为 TCON 寄存器内的控制位,TCON 寄存器各位的具体功能描述见上节 TCON 寄
存器的介绍。
当 C/T=0 时,多路开关连接到系统时钟的分频输出,T0 对内部系统时钟计数,T0 工作在定时方式。当
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 140 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
C/T=1 时,多路开关连接到外部脉冲输入 P3.4/T0,即 T0 工作在计数方式。
STC 单片机的定时器 0 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同;
另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T0 的速率由特殊功能寄存器 AUXR
中的 T0x12 决定,如果 T0x12=0,T0 则工作在 12T 模式;如果 T0x12=1,T0 则工作在 1T 模式
12.2.5
定时器 0 模式 2(8 位自动重装载模式)
此模式下定时器/计数器 0 作为可自动重装载的 8 位计数器,如下图所示:
AUXR.7/T0x12=0
÷12
SYSclk
TF0
C/T=0
Interrupt
Toggle
÷1
TL0
(8bits)
AUXR.7/T0x12=1
C/T=1
T0 Pin
T0CLKO
P3.5
control
T0CLKO
TR0
TH0
(8bits)
GATE
INT0
定时器/计数器 0 的模式 2:8 位自动重装载模式
TL0 的溢出不仅置位 TF0,而且将 TH0 的内容重新装入 TL0,TH0 内容由软件预置,重装时 TH0 内容不
变。
当 T0CLKO/INT_CLKO.0=1 时,P3.5/T1 管脚配置为定时器 0 的时钟输出 T0CLKO。输出时钟频率为 T0
溢出率/2。
如果 C/T=0,定时器/计数器 T0 对内部系统时钟计数,则:
T0 工作在 1T 模式(AUXR.7/T0x12=1)时的输出时钟频率 = (SYSclk)/(256-TH0)/2
T0 工作在 12T 模式(AUXR.7/T0x12=0)时的输出时钟频率 = (SYSclk)/12/(256-TH0)/2
如果 C/T=1,定时器/计数器 T0 是对外部脉冲输入(P3.4/T0)计数,则:
输出时钟频率 = (T0_Pin_CLK) / (256-TH0)/2
12.2.6
定时器 0 模式 3(不可屏蔽中断 16 位自动重装载,实时操作
系统节拍器)
对定时器/计数器 0,其工作模式模式 3 与工作模式 0 是一样的(下图定时器模式 3 的原理图,与工作模
式 0 是一样的)。唯一不同的是:当定时器/计数器 0 工作在模式 3 时,只需允许 ET0/IE.1(定时器/计数器 0 中
断允许位),不需要允许 EA/IE.7(总中断使能位)就能打开定时器/计数器 0 的中断,此模式下的定时器/计数器
0 中断与总中断使能位 EA 无关,一旦工作在模式 3 下的定时器/计数器 0 中断被打开(ET0=1),那么该中断是
不可屏蔽的,该中断的优先级是最高的,即该中断不能被任何中断所打断,而且该中断打开后既不受 EA/IE.7
控制也不再受 ET0 控制,当 EA=0 或 ET0=0 时都不能屏蔽此中断。故将此模式称为不可屏蔽中断的 16 位自
动重装载模式。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 141 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
AUXR.7/T0x12=0
÷12
SYSclk
TF0
C/T=0
Interrupt
Toggle
÷1
TH0
(8bits)
AUXR.7/T0x12=1
C/T=1
T0 Pin
TL0
(8bits)
T0CLKO
P3.5
control
T0CLKO
TR0
RL_TH0
(8bits)
GATE
INT0
RL_TL0
(8bits)
定时器/计数器 0 的模式 3:不可屏蔽中断的 16 位自动重装载模式
注意:当定时器/计数器 0 工作在模式 3(不可屏蔽中断的 16 位自动重装载模式)时,不需要允许 EA/IE.7(总中断使能位),
只需允许 ET0/IE.1(定时器/计数器 0 中断允许位)就能打开定时器/计数器 0 的中断,此模式下的定时器/计数器 0 中
断与总中断使能位 EA 无关。一旦此模式下的定时器/计数器 0 中断被打开后,该定时器/计数器 0 中断优先级就是
最高的,它不能被其它任何中断所打断(不管是比定时器/计数器 0 中断优先级低的中断还是比其优先级高的中断,
都不能打断此时的定时器/计数器 0 中断),而且该中断打开后既不受 EA/IE.7 控制也不再受 ET0 控制了,清零 EA
或 ET0 都不能关闭此中断。
12.2.7
定时器 1 模式 0(16 位自动重装载模式)
此模式下定时器/计数器 1 作为可自动重装载的 16 位计数器,如下图所示:
AUXR.6/T1x12=0
÷12
SYSclk
TF1
C/T=0
Interrupt
Toggle
÷1
TH1
(8bits)
AUXR.6/T1x12=1
C/T=1
T1 Pin
TL1
(8bits)
T1CLKO
P3.4
control
T1CLKO
TR1
GATE
INT1
RL_TH1
(8bits)
RL_TL1
(8bits)
定时器/计数器 1 的模式 0:16 位自动重装载模式
当 GATE=0(TMOD.7)时,如 TR1=1,则定时器计数。GATE=1 时,允许由外部输入 INT1 控制定时器 1,
这样可实现脉宽测量。TR1 为 TCON 寄存器内的控制位,TCON 寄存器各位的具体功能描述见上节 TCON 寄
存器的介绍。
当 C/T=0 时,多路开关连接到系统时钟的分频输出,T1 对内部系统时钟计数,T1 工作在定时方式。当
C/T=1 时,多路开关连接到外部脉冲输入 P3.5/T1,即 T1 工作在计数方式。
STC 单片机的定时器 1 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同;
另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T1 的速率由特殊功能寄存器 AUXR
中的 T1x12 决定,如果 T1x12=0,T1 则工作在 12T 模式;如果 T1x12=1,T1 则工作在 1T 模式
定时器 1 有两个隐藏的寄存器 RL_TH1 和 RL_TL1。RL_TH1 与 TH1 共有同一个地址,RL_TL1 与 TL1
共有同一个地址。当 TR1=0 即定时器/计数器 1 被禁止工作时,对 TL1 写入的内容会同时写入 RL_TL1,对
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 142 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
TH1 写入的内容也会同时写入 RL_TH1。当 TR1=1 即定时器/计数器 1 被允许工作时,对 TL1 写入内容,实
际上不是写入当前寄存器 TL1 中,而是写入隐藏的寄存器 RL_TL1 中,对 TH1 写入内容,实际上也不是写入
当前寄存器 TH1 中,而是写入隐藏的寄存器 RL_TH1,这样可以巧妙地实现 16 位重装载定时器。当读 TH1
和 TL1 的内容时,所读的内容就是 TH1 和 TL1 的内容,而不是 RL_TH1 和 RL_TL1 的内容。
当定时器 1 工作在模式 1(TMOD[5:4]/[M1,M0]=00B)时,[TH1,TL1]的溢出不仅置位 TF1,而且会自动
将[RL_TH1,RL_TL1]的内容重新装入[TH1,TL1]。
当 T1CLKO/INT_CLKO.1=1 时,P3.4/T0 管脚配置为定时器 1 的时钟输出 T1CLKO。输出时钟频率为 T1
溢出率/2。
如果 C/T=0,定时器/计数器 T1 对内部系统时钟计数,则:
T1 工作在 1T 模式(AUXR.6/T1x12=1)时的输出时钟频率 = (SYSclk)/(65536-[RL_TH1, RL_TL1])/2
T1 工作在 12T 模式(AUXR.6/T1x12=0)时的输出时钟频率 = (SYSclk)/12/(65536-[RL_TH1, RL_TL1])/2
如果 C/T=1,定时器/计数器 T1 是对外部脉冲输入(P3.5/T1)计数,则:
输出时钟频率 = (T1_Pin_CLK) / (65536-[RL_TH1, RL_TL1])/2
12.2.8
定时器 1 模式 1(16 位不可重装载模式)
此模式下定时器/计数器 1 工作在 16 位不可重装载模式,如下图所示
AUXR.6/T1x12=0
÷12
SYSclk
TF1
C/T=0
Interrupt
Toggle
÷1
TH1
(8bits)
AUXR.6/T1x12=1
C/T=1
T1 Pin
TL1
(8bits)
T1CLKO
P3.4
control
T1CLKO
TR1
GATE
INT1
定时器/计数器 1 的模式 1:16 位不可重装载模式
此模式下,定时器/计数器 1 配置为 16 位不可重装载模式,由 TL1 的 8 位和 TH1 的 8 位所构成。TL1 的
8 位溢出向 TH1 进位,TH1 计数溢出置位 TCON 中的溢出标志位 TF1。
当 GATE=0(TMOD.7)时,如 TR1=1,则定时器计数。GATE=1 时,允许由外部输入 INT1 控制定时器 1,
这样可实现脉宽测量。TR1 为 TCON 寄存器内的控制位,TCON 寄存器各位的具体功能描述见上节 TCON 寄
存器的介绍。
当 C/T=0 时,多路开关连接到系统时钟的分频输出,T1 对内部系统时钟计数,T1 工作在定时方式。当
C/T=1 时,多路开关连接到外部脉冲输入 P3.5/T1,即 T1 工作在计数方式。
STC 单片机的定时器 1 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同;
另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T1 的速率由特殊功能寄存器 AUXR
中的 T1x12 决定,如果 T1x12=0,T1 则工作在 12T 模式;如果 T1x12=1,T1 则工作在 1T 模式
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 143 -
STC8F1K 系列技术手册
12.2.9
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
定时器 1 模式 2(8 位自动重装载模式)
此模式下定时器/计数器 1 作为可自动重装载的 8 位计数器,如下图所示:
AUXR.6/T1x12=0
÷12
SYSclk
TF1
C/T=0
Interrupt
Toggle
÷1
TL1
(8bits)
AUXR.6/T1x12=1
C/T=1
T1 Pin
T1CLKO
P3.4
control
T1CLKO
TR1
TH1
(8bits)
GATE
INT1
定时器/计数器 1 的模式 2:8 位自动重装载模式
TL1 的溢出不仅置位 TF1,而且将 TH1 的内容重新装入 TL1,TH1 内容由软件预置,重装时 TH1 内容不
变。
当 T1CLKO/INT_CLKO.1=1 时,P3.4/T0 管脚配置为定时器 1 的时钟输出 T1CLKO。输出时钟频率为 T1
溢出率/2。
如果 C/T=0,定时器/计数器 T1 对内部系统时钟计数,则:
T1 工作在 1T 模式(AUXR.6/T1x12=1)时的输出时钟频率 = (SYSclk)/(256-TH1)/2
T1 工作在 12T 模式(AUXR.6/T1x12=0)时的输出时钟频率 = (SYSclk)/12/(256-TH1)/2
如果 C/T=1,定时器/计数器 T1 是对外部脉冲输入(P3.5/T1)计数,则:
输出时钟频率 = (T1_Pin_CLK) / (256-TH1)/2
12.2.10 定时器 0 计数寄存器(TL0,TH0)
符号
地址
TL0
8AH
TH0
8CH
B7
B6
B5
B4
B3
B2
B1
B0
当定时器/计数器0工作在16位模式(模式0、模式1、模式3)时,TL0和TH0组合成为一个16位寄存器,
TL0为低字节,TH0为高字节。若为8位模式(模式2)时,TL0和TH0为两个独立的8位寄存器。
12.2.11 定时器 1 计数寄存器(TL1,TH1)
符号
地址
TL1
8BH
TH1
8DH
B7
B6
B5
B4
B3
B2
B1
B0
当定时器/计数器1工作在16位模式(模式0、模式1)时,TL1和TH1组合成为一个16位寄存器,TL1为低
字节,TH1为高字节。若为8位模式(模式2)时,TL1和TH1为两个独立的8位寄存器。
12.2.12 辅助寄存器 1(AUXR)
符号
地址
深圳国芯人工智能有限公司
B7
B6
B5
国内分销商电话: 0513-5501 2928/2929/2966
B4
B3
B2
B1
传真: 0513-5501 2926/2956/2947
B0
- 144 -
STC8F1K 系列技术手册
AUXR
8EH
官方网站: www.STCMCUDATA.com
T0x12
T1x12
UART_M0x6
技术支持: 13922829991
选型顾问: 13922805190
T2R
EXTRAM
S1ST2
T2_C/T
T2x12
T0x12:定时器0速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
T1x12:定时器1速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
12.2.13 中断与时钟输出控制寄存器(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 口的电平自动发生翻转。
12.2.14 定时器 0 定时计算公式
定时器模式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
SYSclk
模式0/3
(16位自动重载)
65536 – [TH0, TL0]
SYSclk
65536 – [TH0, TL0]
SYSclk
模式1
(16位不自动重载)
65536 – [TH0, TL0]
SYSclk
256 – TH0
SYSclk
模式2
(8位自动重载)
深圳国芯人工智能有限公司
65536 – [TH0, TL0]
256 – TH0
SYSclk
国内分销商电话: 0513-5501 2928/2929/2966
(自动重载)
×12 (自动重载)
(需软件装载)
×12 (需软件装载)
(自动重载)
×12 (自动重载)
传真: 0513-5501 2926/2956/2947
- 145 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
12.2.15 定时器 1 定时计算公式
定时器模式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
1T
定时器周期 =
12T
定时器周期 =
SYSclk
模式0
(16位自动重载)
65536 – [TH1, TL1]
SYSclk
65536 – [TH1, TL1]
SYSclk
模式1
(16位不自动重载)
65536 – [TH1, TL1]
SYSclk
256 – TH1
SYSclk
模式2
(8位自动重载)
深圳国芯人工智能有限公司
65536 – [TH1, TL1]
256 – TH1
SYSclk
国内分销商电话: 0513-5501 2928/2929/2966
(自动重载)
×12 (自动重载)
(需软件装载)
×12 (需软件装载)
(自动重载)
×12 (自动重载)
传真: 0513-5501 2926/2956/2947
- 146 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
12.3 定时器 2
12.3.1
辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
T2R:定时器2的运行控制位
0:定时器 2 停止计数
1:定时器 2 开始计数
T2_C/T:控制定时器2用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作
计数器(对引脚T2/P1.2外部脉冲进行计数)。
T2x12:定时器2速度控制位
0:12T 模式,即 CPU 时钟 12 分频(FOSC/12)
1:1T 模式,即 CPU 时钟不分频分频(FOSC/1)
12.3.2
中断与时钟输出控制寄存器(INTCLKO)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
INTCLKO
8FH
-
EX4
EX3
EX2
-
T2CLKO
T1CLKO
T0CLKO
T2CLKO:定时器2时钟输出控制
0:关闭时钟输出
1:使能 P1.3 口的是定时器 2 时钟输出功能
当定时器 2 计数发生溢出时,P1.3 口的电平自动发生翻转。
12.3.3
定时器 2 计数寄存器(T2L,T2H)
符号
地址
T2L
D7H
T2H
D6H
B7
B6
B5
B4
B3
B2
B1
B0
定时器/计数器2的工作模式固定为16位重载模式,T2L和T2H组合成为一个16位寄存器,T2L为低字节,
T2H为高字节。当[T2H,T2L]中的16位计数值溢出时,系统会自动将内部16位重载寄存器中的重载
值装入[T2H,T2L]中。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 147 -
STC8F1K 系列技术手册
12.3.4
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
定时器 2 工作模式
定时器/计数器 2 的原理框图如下:
÷12
AUXR.2/T2x12=0
SYSclk
T2IF
T2_C/T=0
÷1
T2H
(8bits)
AUXR.2/T2x12=1
T2_C/T=1
T2 Pin
Interrupt
T2L
(8bits)
T2CLKO
Toggle
control
T2CLKO
T2R
RL_T2H
(8bits)
RL_T2L
(8bits)
定时器/计数器 2 的工作模式:16 位自动重装载模式
T2R/AUXR.4 为 AUXR 寄存器内的控制位,AUXR 寄存器各位的具体功能描述见上节 AUXR 寄存器的介
绍。
当 T2_C/T=0 时,多路开关连接到系统时钟输出,T2 对内部系统时钟计数,
T2 工作在定时方式。
当 T2_C/T=1
时,多路开关连接到外部脉冲输 T2,即 T2 工作在计数方式。
STC 单片机的定时器 2 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同;
另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T2 的速率由特殊功能寄存器 AUXR
中的 T2x12 决定,如果 T2x12=0,T2 则工作在 12T 模式;如果 T2x12=1,T2 则工作在 1T 模式
定时器 2 有两个隐藏的寄存器 RL_T2H 和 RL_T2L。RL_T2H 与 T2H 共有同一个地址,RL_T2L 与 T2L
共有同一个地址。当 T2R=0 即定时器/计数器 2 被禁止工作时,对 T2L 写入的内容会同时写入 RL_T2L,对
T2H 写入的内容也会同时写入 RL_T2H。当 T2R=1 即定时器/计数器 2 被允许工作时,对 T2L 写入内容,实
际上不是写入当前寄存器 T2L 中,而是写入隐藏的寄存器 RL_T2L 中,对 T2H 写入内容,实际上也不是写入
当前寄存器 T2H 中,而是写入隐藏的寄存器 RL_T2H,这样可以巧妙地实现 16 位重装载定时器。当读 T2H
和 T2L 的内容时,所读的内容就是 T2H 和 T2L 的内容,而不是 RL_T2H 和 RL_T2L 的内容。
[T2H,T2L]的溢出不仅置位中断请求标志位(T2IF),使 CPU 转去执行定时器 2 的中断程序,而且会自动
将[RL_T2H,RL_T2L]的内容重新装入[T2H,T2L]。
12.3.5
定时器 2 计算公式
定时器速度
周期计算公式
1T
定时器周期 =
12T
定时器周期 =
65536 – [T2H, T2L]
SYSclk
深圳国芯人工智能有限公司
65536 – [T2H, T2L]
SYSclk
(自动重载)
×12 (自动重载)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 148 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
12.4 范例程序
定时器 0(模式 0-16 位自动重载),用作定时
12.4.1
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;
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//模式 0
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 149 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
汇编代码
;测试工作频率为 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
12.4.2
定时器 0(模式 1-16 位不自动重载),用作定时
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 150 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
{
TL0 = 0x66;
TH0 = 0xfc;
P10 = !P10;
}
//重设定时参数
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 1
//65536-11.0592M/12/1000
TMOD = 0x01;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P0M1
P0M0
DATA
DATA
深圳国芯人工智能有限公司
093H
094H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 151 -
STC8F1K 系列技术手册
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
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
12.4.3
定时器 0(模式 2-8 位自动重载),用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 152 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 2
//256-11.0592M/12/76K
TMOD = 0x02;
TL0 = 0xf4;
TH0 = 0xf4;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
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
- 153 -
STC8F1K 系列技术手册
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
DATA
DATA
DATA
DATA
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
000BH
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#02H
TL0,#0F4H
TH0,#0F4H
TR0
ET0
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
TM0ISR:
;测试端口
MAIN:
;模式 2
;256-11.0592M/12/76K
;启动定时器
;使能定时器中断
END
定时器 0(模式 3-16 位自动重载不可屏蔽中断),用作定时
12.4.4
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
深圳国芯人工智能有限公司
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 154 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sfr
sfr
sfr
sfr
sfr
sfr
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
P10
=
P1^0;
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
技术支持: 13922829991
选型顾问: 13922805190
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//
//模式 3
//65536-11.0592M/12/1000
TMOD = 0x03;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
//不受 EA 控制
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
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
0000H
MAIN
000BH
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 155 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
LJMP
TM0ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#03H
TL0,#66H
TH0,#0FCH
TR0
ET0
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
TM0ISR:
;测试端口
MAIN:
;
;模式 3
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
;不受 EA 控制
END
定时器 0(外部计数-扩展 T0 为外部下降沿中断)
12.4.5
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 156 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
void TM0_Isr() interrupt 1
{
P10 = !P10;
}
技术支持: 13922829991
选型顾问: 13922805190
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//外部计数模式
TMOD = 0x04;
TL0 = 0xff;
TH0 = 0xff;
TR0 = 1;
ET0 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
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
TM0ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 157 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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,#04H
TL0,#0FFH
TH0,#0FFH
TR0
ET0
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;外部计数模式
;启动定时器
;使能定时器中断
END
定时器 0(测量脉宽-INT0 高电平宽度)
12.4.6
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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;
P1 = TH0;
}
//TL0 为测量值低字节
//TH0 为测量值高字节
void main()
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 158 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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;
//1T 模式
//使能 GATE,INT0 为 1 时使能计时
AUXR = 0x80;
TMOD = 0x08;
TL0 = 0x00;
TH0 = 0x00;
while (INT0);
TR0 = 1;
IT0 = 1;
EX0 = 1;
EA = 1;
//等待 INT0 为低
//启动定时器
//使能 INT0 下降沿中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
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
SP, #5FH
P0M0, #00H
INT0ISR:
;TL0 为测量值低字节
;TH0 为测量值高字节
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 159 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
JB
SETB
SETB
SETB
SETB
AUXR,#80H
TMOD,#08H
TL0,#00H
TH0,#00H
INT0,$
TR0
IT0
EX0
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;1T 模式
;使能 GATE,INT0 为 1 时使能计时
;等待 INT0 为低
;启动定时器
;使能 INT0 下降沿中断
END
定时器 0(模式 0),时钟分频输出
12.4.7
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
INTCLKO
=
0x8f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 160 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL0 = 0x66;
TH0 = 0xfc;
TR0 = 1;
INTCLKO = 0x01;
//启动定时器
//使能时钟输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
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
TMOD,#00H
TL0,#66H
TH0,#0FCH
TR0
MAIN:
深圳国芯人工智能有限公司
;模式 0
;65536-11.0592M/12/1000
;启动定时器
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 161 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
INTCLKO,#01H
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;使能时钟输出
END
定时器 1(模式 0-16 位自动重载),用作定时
12.4.8
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 = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
深圳国芯人工智能有限公司
//模式 0
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 162 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
while (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
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
ET1
EA
JMP
$
TM1ISR:
;测试端口
MAIN:
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 163 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
定时器 1(模式 1-16 位不自动重载),用作定时
12.4.9
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;
TH1 = 0xfc;
P10 = !P10;
}
//重设定时参数
//测试端口
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
TMOD = 0x10;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
ET1 = 1;
EA = 1;
//模式 1
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 164 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
;测试工作频率为 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
MOV
MOV
CPL
RETI
TL1,#66H
TH1,#0FCH
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#10H
TL1,#66H
TH1,#0FCH
TR1
ET1
EA
JMP
$
TM1ISR:
;重设定时参数
;测试端口
MAIN:
;模式 1
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
12.4.10 定时器 1(模式 2-8 位自动重载),用作定时
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 165 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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 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;
//模式 2
//256-11.0592M/12/76K
TMOD = 0x20;
TL1 = 0xf4;
TH1 = 0xf4;
TR1 = 1;
ET1 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
P0M1
P0M0
P1M1
P1M0
DATA
DATA
DATA
DATA
深圳国芯人工智能有限公司
093H
094H
091H
092H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 166 -
STC8F1K 系列技术手册
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#20H
TL1,#0F4H
TH1,#0F4H
TR1
ET1
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
TM1ISR:
;测试端口
MAIN:
;模式 2
;256-11.0592M/12/76K
;启动定时器
;使能定时器中断
END
12.4.11 定时器 1(外部计数-扩展 T1 为外部下降沿中断)
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
- 167 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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 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;
//外部计数模式
TMOD = 0x40;
TL1 = 0xff;
TH1 = 0xff;
TR1 = 1;
ET1 = 1;
EA = 1;
//启动定时器
//使能定时器中断
while (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
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 168 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ORG
LJMP
ORG
LJMP
0000H
MAIN
001BH
TM1ISR
ORG
0100H
CPL
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
SETB
SETB
SETB
TMOD,#40H
TL1,#0FFH
TH1,#0FFH
TR1
ET1
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
TM1ISR:
;测试端口
MAIN:
;外部计数模式
;启动定时器
;使能定时器中断
END
12.4.12 定时器 1(测量脉宽-INT1 高电平宽度)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
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
- 169 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sfr
sfr
P5M1
P5M0
=
=
0xc9;
0xca;
sfr
AUXR
=
0x8e;
void INT1_Isr() interrupt 2
{
P0 = TL1;
P1 = TH1;
}
技术支持: 13922829991
选型顾问: 13922805190
//TL1 为测量值低字节
//TH1 为测量值高字节
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//1T 模式
//使能 GATE,INT1 为 1 时使能计时
AUXR = 0x40;
TMOD = 0x80;
TL1 = 0x00;
TH1 = 0x00;
while (INT1);
TR1 = 1;
IT1 = 1;
EX1 = 1;
EA = 1;
//等待 INT1 为低
//启动定时器
//使能 INT1 下降沿中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
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
0000H
MAIN
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 170 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ORG
LJMP
0013H
INT1ISR
ORG
0100H
MOV
MOV
RETI
P0,TL1
P1,TH1
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
JB
SETB
SETB
SETB
SETB
AUXR,#40H
TMOD,#80H
TL1,#00H
TH1,#00H
INT1,$
TR1
IT1
EX1
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
INT1ISR:
;TL1 为测量值低字节
;TH1 为测量值高字节
MAIN:
;1T 模式
;使能 GATE,INT1 为 1 时使能计时
;等待 INT1 为低
;启动定时器
;使能 INT1 下降沿中断
END
12.4.13 定时器 1(模式 0),时钟分频输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
INTCLKO
=
0x8f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 171 -
STC8F1K 系列技术手册
sfr
sfr
sfr
sfr
sfr
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
=
=
=
=
=
技术支持: 13922829991
选型顾问: 13922805190
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
//模式 0
//65536-11.0592M/12/1000
TMOD = 0x00;
TL1 = 0x66;
TH1 = 0xfc;
TR1 = 1;
INTCLKO = 0x02;
//启动定时器
//使能时钟输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
INTCLKO
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
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 172 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
MOV
TMOD,#00H
TL1,#66H
TH1,#0FCH
TR1
INTCLKO,#02H
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;模式 0
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
12.4.14 定时器 1(模式 0)做串口 1 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 173 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x00;
TL1 = BRT;
TH1 = BRT >> 8;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 174 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
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
- 175 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
RETI
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
;65536-11059200/115200/4=0FFE8H
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 176 -
STC8F1K 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com
ADD
MOV
MOV
LCALL
INC
JMP
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
选型顾问: 13922805190
END
12.4.15 定时器 1(模式 2)做串口 1 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(256 - FOSC / 115200 / 32)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 177 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x20;
TL1 = BRT;
TH1 = BRT;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 178 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
汇编代码
;测试工作频率为 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
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
深圳国芯人工智能有限公司
SCON,#50H
TMOD,#20H
TL1,#0FDH
TH1,#0FDH
;256-11059200/115200/32=0FDH
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 179 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
SETB
MOV
CLR
MOV
MOV
RET
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
技术支持: 13922829991
选型顾问: 13922805190
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
LOOP:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 180 -
STC8F1K 系列技术手册
STRING:
官方网站: www.STCMCUDATA.com
DB
技术支持: 13922829991
选型顾问: 13922805190
'Uart Test !',0DH,0AH,00H
END
12.4.16 定时器 2(16 位自动重载),用作定时
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
sfr
#define
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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
//测试端口
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
- 181 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
T2L = 0x66;
T2H = 0xfc;
AUXR = 0x10;
IE2 = ET2;
EA = 1;
技术支持: 13922829991
选型顾问: 13922805190
//65536-11.0592M/12/1000
//启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
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
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
TM2ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 182 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOV
SETB
T2L,#66H
T2H,#0FCH
AUXR,#10H
IE2,#ET2
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;65536-11.0592M/12/1000
;启动定时器
;使能定时器中断
END
12.4.17 定时器 2(外部计数-扩展 T2 为外部下降沿中断)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
#define
sfr
#define
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
=
=
=
=
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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
//测试端口
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
- 183 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
T2L = 0xff;
T2H = 0xff;
AUXR = 0x18;
IE2 = ET2;
EA = 1;
//设置外部计数模式并启动定时器
//使能定时器中断
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
IE2
ET2
AUXINTIF
T2IF
DATA
DATA
DATA
DATA
EQU
DATA
EQU
0D7H
0D6H
8EH
0AFH
04H
0EFH
01H
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
RETI
P1.0
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
TM2ISR:
;测试端口
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 184 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOV
MOV
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
SETB
T2L,#0FFH
T2H,#0FFH
AUXR,#18H
IE2,#ET2
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
;设置外部计数模式并启动定时器
;使能定时器中断
END
12.4.18 定时器 2,时钟分频输出
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
T2L
T2H
AUXR
INTCLKO
=
=
=
=
0xd7;
0xd6;
0x8e;
0x8f;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
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;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 185 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P5M1 = 0x00;
T2L = 0x66;
T2H = 0xfc;
AUXR = 0x10;
INTCLKO = 0x04;
//65536-11.0592M/12/1000
//启动定时器
//使能时钟输出
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
T2L
T2H
AUXR
INTCLKO
DATA
DATA
DATA
DATA
0D7H
0D6H
8EH
8FH
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
T2L,#66H
T2H,#0FCH
AUXR,#10H
INTCLKO,#04H
JMP
$
MAIN:
;65536-11.0592M/12/1000
;启动定时器
;使能时钟输出
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 186 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
12.4.19 定时器 2 做串口 1 波特率发生器
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
AUXR
T2H
T2L
=
=
=
0x8e;
0xd6;
0xd7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x15;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 187 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
DATA
DATA
DATA
8EH
0D6H
0D7H
BUSY
BIT
20H.0
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 188 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
WPTR
RPTR
BUFFER
DATA
DATA
DATA
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
选型顾问: 13922805190
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
SCON,#50H
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
BUSY,$
BUSY
;65536-11059200/115200/4=0FFE8H
UART_SEND:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 189 -
STC8F1K 系列技术手册
MOV
RET
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
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
12.4.20 定时器 2 做串口 2 波特率发生器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 190 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
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;
wptr &= 0x0f;
}
}
void Uart2Init()
{
S2CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 191 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
void Uart2Send(char dat)
{
while (busy);
busy = 1;
S2BUF = dat;
}
void Uart2SendStr(char *p)
{
while (*p)
{
Uart2SEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart2Init();
IE2 = 0x01;
EA = 1;
Uart2SENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart2SEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S2CON
S2BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
8EH
0D6H
0D7H
9AH
9BH
0AFH
BUSY
WPTR
BIT
DATA
20H.0
21H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 192 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
RPTR
BUFFER
DATA
DATA
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
技术支持: 13922829991
选型顾问: 13922805190
;16 bytes
UART2_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART2ISR_EXIT:
POP
POP
RETI
ACC.0,UART2ISR_EXIT
S2CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S2BUF
WPTR
PSW
ACC
UART2_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S2CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
BUSY,$
BUSY
;65536-11059200/115200/4=0FFE8H
UART2_SEND:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 193 -
STC8F1K 系列技术手册
MOV
RET
UART2_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND2END:
RET
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
S2BUF,A
A
A,@A+DPTR
SEND2END
UART2_SEND
DPTR
UART2_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART2_INIT
IE2,#01H
EA
MOV
LCALL
DPTR,#STRING
UART2_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART2_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 194 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
13 串口通信
特别注意:每组串口的接收脚可设置为准双向口模式或者输入模式,串口的发送脚可设置为准双向
口模式或者推挽输出模式,但发送脚一定不能设置开漏模式,否则没有串口信号输出
STC8F1K 系列单片机具有 2 个全双工异步串行通信接口。每个串行口由 2 个数据缓冲器、一个移位
寄存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由 2 个互相独立的
接收、发送缓冲器构成,可以同时发送和接收数据。
STC8F1K 系列单片机的串口 1 有 4 种工作方式,其中两种方式的波特率是可变的,另两种是固定的,
以供不同应用场合选用。串口 2 只有两种工作方式,这两种方式的波特率都是可变的。用户可用软件设
置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/发送进行程序处理,使用十
分灵活。
串口 1、串口 2 的通讯口均可以通过功能管脚的切换功能切换到多组端口,从而可以将一个通讯口
分时复用为多个通讯口。
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
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
国内分销商电话: 0513-5501 2928/2929/2966
GF0
PD
T2x12 EXTRAM
传真: 0513-5501 2926/2956/2947
IDL
0011,0000
S1ST2
0000,0001
- 195 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
13.2 串口 1
13.2.1 串口 1 控制寄存器(SCON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SCON
98H
SM0/FE
SM1
SM2
REN
TB8
RB8
TI
RI
SM0/FE:当PCON寄存器中的SMOD0位为1时,该位为帧错误检测标志位。当UART在接收过程中检测
到一个无效停止位时,通过UART接收器将该位置1,必须由软件清零。当PCON寄存器中的SMOD0
位为0时,该位和SM1一起指定串口1的通信工作模式,如下表所示:
SM0
SM1
串口1工作模式
功能说明
0
0
模式0
同步移位串行方式
0
1
模式1
可变波特率8位数据方式
1
0
模式2
固定波特率9位数据方式
1
1
模式3
可变波特率9位数据方式
SM2:允许模式 2 或模式 3 多机通信控制位。当串口 1 使用模式 2 或模式 3 时,如果 SM2 位为 1 且 REN
位为 1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 RB8)来筛选地址帧,
若 RB8=1,说明该帧是地址帧,地址信息可以进入 SBUF,并使 RI 为 1,进而在中断服务程序中
再进行地址号比较;若 RB8=0,说明该帧不是地址帧,应丢掉且保持 RI=0。在模式 2 或模式 3
中,如果 SM2 位为 0 且 REN 位为 1,接收收机处于地址帧筛选被禁止状态,不论收到的 RB8 为
0 或 1,均可使接收到的信息进入 SBUF,并使 RI=1,此时 RB8 通常为校验位。模式 1 和模式 0
为非多机通信方式,在这两种方式时,SM2 应设置为 0。
REN:允许/禁止串口接收控制位
0:禁止串口接收数据
1:允许串口接收数据
TB8:当串口 1 使用模式 2 或模式 3 时,TB8 为要发送的第 9 位数据,按需要由软件置位或清 0。在模
式 0 和模式 1 中,该位不用。
RB8:当串口 1 使用模式 2 或模式 3 时,RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据
帧标志位。在模式 0 和模式 1 中,该位不用。
TI:串口 1 发送中断请求标志位。在模式 0 中,当串口发送数据第 8 位结束时,由硬件自动将 TI 置 1,
向主机请求中断,响应中断后 TI 必须用软件清零。在其他模式中,则在停止位开始发送时由硬件
自动将 TI 置 1,向 CPU 发请求中断,响应中断后 TI 必须用软件清零。
RI:串口 1 接收中断请求标志位。在模式 0 中,当串口接收第 8 位数据结束时,由硬件自动将 RI 置 1,
向主机请求中断,响应中断后 RI 必须用软件清零。在其他模式中,串行接收到停止位的中间时刻
由硬件自动将 RI 置 1,向 CPU 发中断申请,响应中断后 RI 必须由软件清零。
13.2.2 串口 1 数据寄存器(SBUF)
符号
地址
SBUF
99H
B7
B6
B5
B4
B3
B2
B1
B0
SBUF:串口 1 数据接收/发送缓冲区。SBUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分别
对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对 SBUF
进行读操作,实际是读取串口接收缓冲区,对 SBUF 进行写操作则是触发串口开始发送数据。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 196 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
13.2.3 电源管理寄存器(PCON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
PCON
87H
SMOD
SMOD0
LVDF
POF
GF1
GF0
PD
IDL
SMOD:串口 1 波特率控制位
0:串口 1 的各个模式的波特率都不加倍
1:串口 1 模式 1、模式 2、模式 3 的波特率加倍
SMOD0:帧错误检测控制位
0:无帧错检测功能
1:使能帧错误检测功能。此时 SCON 的 SM0/FE 为 FE 功能,即为帧错误检测标志位。
13.2.4 辅助寄存器 1(AUXR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
AUXR
8EH
T0x12
T1x12
UART_M0x6
T2R
T2_C/T
T2x12
EXTRAM
S1ST2
UART_M0x6:串口 1 模式 0 的通讯速度控制
0:串口 1 模式 0 的波特率不加倍,固定为 Fosc/12
1:串口 1 模式 0 的波特率 6 倍速,即固定为 Fosc/12*6 = Fosc/2
S1ST2:串口 1 波特率发射器选择位
0:选择定时器 1 作为波特率发射器
1:选择定时器 2 作为波特率发射器
13.2.5
串口 1 模式 0,模式 0 波特率计算公式
当串口 1 选择工作模式为模式 0 时,串行通信接口工作在同步移位寄存器模式,当串行口模式 0 的
通信速度设置位 UART_M0x6 为 0 时,其波特率固定为系统时钟时钟的 12 分频(SYSclk/12);当设置
UART_M0x6 为 1 时,其波特率固定为系统时钟频率的 2 分频(SYSclk/2)。RxD 为串行通讯的数据口,
TxD 为同步移位脉冲输出脚,发送、接收的是 8 位数据,低位在先。
模式 0 的发送过程:当主机执行将数据写入发送缓冲器 SBUF 指令时启动发送,串行口即将 8 位数
据以 SYSclk/12 或 SYSclk/2(由 UART_M0x6 确定是 12 分频还是 2 分频)的波特率从 RxD 管脚输出(从
低位到高位),发送完中断标志 TI 置 1,TxD 管脚输出同步移位脉冲信号。当写信号有效后,相隔一个
时钟,发送控制端 SEND 有效(高电平),允许 RxD 发送数据,同时允许 TxD 输出同步移位脉冲。一帧(8
位)数据发送完毕时,各控制端均恢复原状态,只有 TI 保持高电平,呈中断申请状态。在再次发送数据
前,必须用软件将 TI 清 0。
模式 0 的接收过程:首先将接收中断请求标志 RI 清零并置位允许接收控制位 REN 时启动模式 0 接
收过程。启动接收过程后,RxD 为串行数据输入端,TxD 为同步脉冲输出端。串行接收的波特率为
SYSclk/12 或 SYSclk/2(由 UART_M0x6 确定是 12 分频还是 2 分频)。当接收完成一帧数据(8 位)后,
控制信号复位,中断标志 RI 被置 1,呈中断申请状态。当再次接收时,必须通过软件将 RI 清 0
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 197 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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.6
SYSclk
12
SYSclk
2
串口 1 模式 1,模式 1 波特率计算公式
当软件设置 SCON 的 SM0、SM1 为“01”时,串行口 1 则以模式 1 进行工作。此模式为 8 位 UART
格式,一帧信息为 10 位:1 位起始位,8 位数据位(低位在先)和 1 位停止位。波特率可变,即可根据
需要进行设置波特率。TxD 为数据发送口,RxD 为数据接收口,串行口全双工接受/发送。
模式 1 的发送过程:串行通信模式发送时,数据由串行发送端 TxD 输出。当主机执行一条写 SBUF
的指令就启动串行通信的发送,写“SBUF”信号还把“1”装入发送移位寄存器的第 9 位,并通知 TX
控制单元开始发送。移位寄存器将数据不断右移送 TxD 端口发送,在数据的左边不断移入“0”作补充。
当数据的最高位移到移位寄存器的输出位置,紧跟其后的是第 9 位“1”,在它的左边各位全为“0”,这
个状态条件,使 TX 控制单元作最后一次移位输出,然后使允许发送信号“SEND”失效,完成一帧信息
的发送,并置位中断请求位 TI,即 TI=1,向主机请求中断处理。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 198 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 199 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 200 -
STC8F1K 系列技术手册
13.2.7
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
串口 1 模式 2,模式 2 波特率计算公式
当 SM0、SM1 两位为 10 时,串行口 1 工作在模式 2。串行口 1 工作模式 2 为 9 位数据异步通信 UART
模式,其一帧的信息由 11 位组成:1 位起始位,8 位数据位(低位在先),1 位可编程位(第 9 位数据)
和 1 位停止位。发送时可编程位(第 9 位数据)由 SCON 中的 TB8 提供,可软件设置为 1 或 0,或者可
将 PSW 中的奇/偶校验位 P 值装入 TB8(TB8 既可作为多机通信中的地址数据标志位,又可作为数据的
奇偶校验位)
。接收时第 9 位数据装入 SCON 的 RB8。TxD 为发送端口,RxD 为接收端口,以全双工模
式进行接收/发送。
模式 2 的波特率固定为系统时钟的 64 分频或 32 分频(取决于 PCON 中 SMOD 的值)
串口 1 模式 2 的波特率计算公式如下表所示(SYSclk 为系统工作频率):
SMOD
波特率计算公式
0
波特率 =
1
波特率 =
SYSclk
64
SYSclk
32
模式 2 和模式 1 相比,除波特率发生源略有不同,发送时由 TB8 提供给移位寄存器第 9 数据位不同
外,其余功能结构均基本相同,其接收/发送操作过程及时序也基本相同。
当接收器接收完一帧信息后必须同时满足下列条件:
·RI=0
·SM2=0 或者 SM2=1 且接收到的第 9 数据位 RB8=1。
当上述两条件同时满足时,才将接收到的移位寄存器的数据装入 SBUF 和 RB8 中,RI 标志位被置 1,
并向主机请求中断处理。如果上述条件有一个不满足,则刚接收到移位寄存器中的数据无效而丢失,也
不置位 RI。无论上述条件满足与否,接收器又重新开始检测 RxD 输入端口的跳变信息,接收下一帧的
输入信息。在模式 2 中,接收到的停止位与 SBUF、RB8 和 RI 无关。
通过软件对 SCON 中的 SM2、TB8 的设置以及通信 Ð 议的约定,为多机通信提供了方便。
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D6
D7
RB8
Stop
TI
发送数据(串口1模式2)
写SCON
RxD
REN=1,RI=0
Start
D0
D1
D2
D3
D4
D5
RI
接收数据(串口1模式2)
13.2.8
串口 1 模式 3,模式 3 波特率计算公式
当 SM0、SM1 两位为 11 时,串行口 1 工作在模式 3。串行通信模式 3 为 9 位数据异步通信 UART
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 201 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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.9
自动地址识别
13.2.10串口 1 从机地址控制寄存器(SADDR,SADEN)
符号
地址
SADDR
A9H
SADEN
B9H
B7
B6
B5
B4
B3
B2
B1
B0
SADDR:从机地址寄存器
SADEN:从机地址屏蔽位寄存器
自动地址识别功能典型应用在多机通讯领域,其主要原理是从机系统通过硬件比较功能来识别来自
于主机串口数据流中的地址信息,通过寄存器 SADDR 和 SADEN 设置的本机的从机地址,硬件自动对
从机地址进行过滤,当来自于主机的从机地址信息与本机所设置的从机地址相匹配时,硬件产生串口中
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 202 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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 为从机地址屏蔽位寄存器,用于设置地址信息中的忽略位,设置方法
如下:
例如
SADDR =
11001010
SADEN =
10000001
则匹配地址为 1xxxxxx0
即,只要主机送出的地址数据中的 bit0 为 0 且 bit7 为 1 就可以和本机地址相匹配
再例如
SADDR =
11001010
SADEN =
00001111
则匹配地址为 xxxx1010
即,只要主机送出的地址数据中的低 4 位为 1010 就可以和本机地址相匹配,而高 4 为被忽略,可以
为任意值。
主机可以使用广播地址(FFH)同时选中所有的从机来进行通讯。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 203 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
13.3 串口 2
13.3.1 串口 2 控制寄存器(S2CON)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
S2CON
9AH
S2SM0
-
S2SM2
S2REN
S2TB8
S2RB8
S2TI
S2RI
S2SM0:指定串口2的通信工作模式,如下表所示:
S2SM0
串口2工作模式
功能说明
0
模式0
可变波特率8位数据方式
1
模式1
可变波特率9位数据方式
S2SM2:允许串口 2 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S2SM2 位为 1 且 S2REN 位为
1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S2RB8)来筛选地址帧:
若 S2RB8=1,说明该帧是地址帧,地址信息可以进入 S2BUF,并使 S2RI 为 1,进而在中断服务
程序中再进行地址号比较;若 S2RB8=0,说明该帧不是地址帧,应丢掉且保持 S2RI=0。在模式 1
中,如果 S2SM2 位为 0 且 S2REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的 S2RB8
为 0 或 1,均可使接收到的信息进入 S2BUF,并使 S2RI=1,此时 S2RB8 通常为校验位。模式 0
为非多机通信方式,在这种方式时,要设置 S2SM2 应为 0。
S2REN:允许/禁止串口接收控制位
0:禁止串口接收数据
1:允许串口接收数据
S2TB8:当串口 2 使用模式 1 时,S2TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧标
志位,按需要由软件置位或清 0。在模式 0 中,该位不用。
S2RB8:当串口 2 使用模式 1 时,S2RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧标
志位。在模式 0 中,该位不用。
S2TI:串口 2 发送中断请求标志位。在停止位开始发送时由硬件自动将 S2TI 置 1,向 CPU 发请求中断,
响应中断后 S2TI 必须用软件清零。
S2RI:串口 2 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S2RI 置 1,向 CPU 发
中断申请,响应中断后 S2RI 必须由软件清零。
13.3.2 串口 2 数据寄存器(S2BUF)
符号
地址
S2BUF
9BH
B7
B6
B5
B4
B3
B2
B1
B0
S2BUF:串口 1 数据接收/发送缓冲区。S2BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分
别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对
S2BUF 进行读操作,实际是读取串口接收缓冲区,对 S2BUF 进行写操作则是触发串口开始发送
数据。
13.3.3
串口 2 模式 0,模式 0 波特率计算公式
串行口 2 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位,
8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD2 为数据发送口,
RxD2 为数据接收口,串行口全双工接受/发送。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 204 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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.4
SYSclk
12×4×波特率
串口 2 模式 1,模式 1 波特率计算公式
串行口 2 的模式 1 为 9 位数据位可变波特率 UART 工作模式。此模式一帧信息为 11 位:1 位起始位,
9 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD2 为数据发送口,
RxD2 为数据接收口,串行口全双工接受/发送。
写S2BUF
TxD2
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D6
D7
RB8
Stop
S2TI
发送数据(串口2模式1)
写S2CON
RxD2
S2REN=1,S2RI=0
Start
D0
D1
D2
D3
D4
D5
S2RI
接收数据(串口2模式1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 205 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
串口 2 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。
13.4 串口注意事项
关于串口中断请求有如下问题需要注意:(串口 1、串口 2 均类似,下面以串口 1 为例进行说明)
8 位数据模式时,发送完成约 1/3 个停止位后产生 TI 中断请求,如下图所示:
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
TI
发送数据(8位数据)
8 位数据模式时,接收完成一半个停止位后产生 RI 中断请求,如下图所示:
写SCON
RxD
REN=1, RI=0
Start
D0
D1
D2
D3
D4
D5
D6
D7
Stop
RI
接收数据(8位数据)
9 位数据模式时,发送完成约 1/3 个停止位后产生 TI 中断请求:
写SBUF
TxD
Start
D0
D1
D2
D3
D4
D5
D6
D7
TB8
Stop
D7
RB8
Stop
TI
发送数据(9位数据)
9 位数据模式时,一半个停止位后产生 RI 中断请求,如下图所示:
写SCON
RxD
REN=1,RI=0
Start
D0
D1
D2
D3
D4
D5
D6
RI
接收数据(9位数据)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 206 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
13.5 范例程序
串口 1 使用定时器 2 做波特率发生器
13.5.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
AUXR
T2H
T2L
=
=
=
0x8e;
0xd6;
0xd7;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
T2L = BRT;
T2H = BRT >> 8;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 207 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
AUXR = 0x15;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
DATA
DATA
DATA
深圳国芯人工智能有限公司
8EH
0D6H
0D7H
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 208 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
选型顾问: 13922805190
;16 bytes
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
SCON,#50H
T2L,#0E8H
T2H,#0FFH
AUXR,#15H
BUSY
WPTR,#00H
RPTR,#00H
JB
BUSY,$
;65536-11059200/115200/4=0FFE8H
UART_SEND:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 209 -
STC8F1K 系列技术手册
SETB
MOV
RET
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
BUSY
SBUF,A
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
13.5.2
串口 1 使用定时器 1(模式 0)做波特率发生器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 210 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 211 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 212 -
STC8F1K 系列技术手册
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
DATA
DATA
DATA
DATA
DATA
DATA
DATA
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
选型顾问: 13922805190
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#00H
TL1,#0E8H
TH1,#0FFH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
;65536-11059200/115200/4=0FFE8H
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
深圳国芯人工智能有限公司
A
A,@A+DPTR
SENDEND
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 213 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
LCALL
INC
JMP
技术支持: 13922829991
选型顾问: 13922805190
UART_SEND
DPTR
UART_SENDSTR
SENDEND:
RET
MAIN:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
LOOP:
STRING:
END
串口 1 使用定时器 1(模式 2)做波特率发生器
13.5.3
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
FOSC
深圳国芯人工智能有限公司
11059200UL
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 214 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
#define
BRT
(256 - FOSC / 115200 / 32)
sfr
AUXR
=
0x8e;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
选型顾问: 13922805190
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
busy = 0;
}
if (RI)
{
RI = 0;
buffer[wptr++] = SBUF;
wptr &= 0x0f;
}
}
void UartInit()
{
SCON = 0x50;
TMOD = 0x20;
TL1 = BRT;
TH1 = BRT;
TR1 = 1;
AUXR = 0x40;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void UartSend(char dat)
{
while (busy);
busy = 1;
SBUF = dat;
}
void UartSendStr(char *p)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 215 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
while (*p)
{
UartSEND(*p++);
}
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
UartInit();
ES = 1;
EA = 1;
UartSENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
UartSEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
DATA
8EH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
0CAH
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 216 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
ORG
LJMP
ORG
LJMP
0000H
MAIN
0023H
UART_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
JNB
CLR
CLR
TI,CHKRI
TI
BUSY
技术支持: 13922829991
选型顾问: 13922805190
UART_ISR:
CHKRI:
JNB
CLR
MOV
ANL
ADD
MOV
MOV
INC
UARTISR_EXIT:
POP
POP
RETI
RI,UARTISR_EXIT
RI
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,SBUF
WPTR
PSW
ACC
UART_INIT:
MOV
MOV
MOV
MOV
SETB
MOV
CLR
MOV
MOV
RET
SCON,#50H
TMOD,#20H
TL1,#0FDH
TH1,#0FDH
TR1
AUXR,#40H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
SBUF,A
;256-11059200/115200/32=0FDH
UART_SEND:
UART_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SENDEND:
RET
A
A,@A+DPTR
SENDEND
UART_SEND
DPTR
UART_SENDSTR
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 217 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
SETB
SETB
UART_INIT
ES
EA
MOV
LCALL
DPTR,#STRING
UART_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
选型顾问: 13922805190
LOOP:
STRING:
END
串口 2 使用定时器 2 做波特率发生器
13.5.4
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
11059200UL
(65536 - FOSC / 115200 / 4)
sfr
sfr
sfr
sfr
sfr
AUXR
T2H
T2L
S2CON
S2BUF
=
=
=
=
=
深圳国芯人工智能有限公司
0x8e;
0xd6;
0xd7;
0x9a;
0x9b;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 218 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sfr
IE2
=
0xaf;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
bit
char
char
char
busy;
wptr;
rptr;
buffer[16];
技术支持: 13922829991
选型顾问: 13922805190
void Uart2Isr() interrupt 8
{
if (S2CON & 0x02)
{
S2CON &= ~0x02;
busy = 0;
}
if (S2CON & 0x01)
{
S2CON &= ~0x01;
buffer[wptr++] = S2BUF;
wptr &= 0x0f;
}
}
void Uart2Init()
{
S2CON = 0x10;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x14;
wptr = 0x00;
rptr = 0x00;
busy = 0;
}
void Uart2Send(char dat)
{
while (busy);
busy = 1;
S2BUF = dat;
}
void Uart2SendStr(char *p)
{
while (*p)
{
Uart2SEND(*p++);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 219 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
}
void main()
{
P0M0 = 0x00;
P0M1 = 0x00;
P1M0 = 0x00;
P1M1 = 0x00;
P2M0 = 0x00;
P2M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
P4M0 = 0x00;
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
Uart2Init();
IE2 = 0x01;
EA = 1;
Uart2SENDStr(“Uart Test !\r\n”);
while (1)
{
if (rptr != wptr)
{
Uart2SEND(buffer[rptr++]);
rptr &= 0x0f;
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
AUXR
T2H
T2L
S2CON
S2BUF
IE2
DATA
DATA
DATA
DATA
DATA
DATA
8EH
0D6H
0D7H
9AH
9BH
0AFH
BUSY
WPTR
RPTR
BUFFER
BIT
DATA
DATA
DATA
20H.0
21H
22H
23H
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
093H
094H
091H
092H
095H
096H
0B1H
0B2H
0B3H
0B4H
0C9H
深圳国芯人工智能有限公司
;16 bytes
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 220 -
STC8F1K 系列技术手册
P5M0
官方网站: www.STCMCUDATA.com
DATA
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
0043H
UART2_ISR
ORG
0100H
PUSH
PUSH
MOV
ACC
PSW
PSW,#08H
MOV
JNB
ANL
CLR
A,S2CON
ACC.1,CHKRI
S2CON,#NOT 02H
BUSY
技术支持: 13922829991
选型顾问: 13922805190
UART2_ISR:
CHKRI:
JNB
ANL
MOV
ANL
ADD
MOV
MOV
INC
UART2ISR_EXIT:
POP
POP
RETI
ACC.0,UART2ISR_EXIT
S2CON,#NOT 01H
A,WPTR
A,#0FH
A,#BUFFER
R0,A
@R0,S2BUF
WPTR
PSW
ACC
UART2_INIT:
MOV
MOV
MOV
MOV
CLR
MOV
MOV
RET
S2CON,#10H
T2L,#0E8H
T2H,#0FFH
AUXR,#14H
BUSY
WPTR,#00H
RPTR,#00H
JB
SETB
MOV
RET
BUSY,$
BUSY
S2BUF,A
;65536-11059200/115200/4=0FFE8H
UART2_SEND:
UART2_SENDSTR:
CLR
MOVC
JZ
LCALL
INC
JMP
SEND2END:
RET
A
A,@A+DPTR
SEND2END
UART2_SEND
DPTR
UART2_SENDSTR
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 221 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
LCALL
MOV
SETB
UART2_INIT
IE2,#01H
EA
MOV
LCALL
DPTR,#STRING
UART2_SENDSTR
MOV
XRL
ANL
JZ
MOV
ANL
ADD
MOV
MOV
LCALL
INC
JMP
A,RPTR
A,WPTR
A,#0FH
LOOP
A,RPTR
A,#0FH
A,#BUFFER
R0,A
A,@R0
UART2_SEND
RPTR
LOOP
DB
'Uart Test !',0DH,0AH,00H
技术支持: 13922829991
选型顾问: 13922805190
LOOP:
STRING:
END
13.5.5
串口多机通讯
现参考 STC15 系列数据手册
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 222 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
串口转 LIN 总线
13.5.6
C 语言代码
//测试工作频率为 22.1184MHz
/************* 功能说明
**************
本例程基于 STC8H8K64U 为主控芯片的实验箱 8 进行编写测试,STC8G、STC8H 系列芯片可通用参考.
通过 UART 接口连接 LIN 收发器实现 LIN 总线信号收发测试例程.
UART1 通过串口工具连接电脑.
UART2 外接 LIN 收发器(TJA1020/1), 连接 LIN 总线.
将电脑串口发送的数据转发到 LIN 总线; 从 LIN 总线接收到的数据转发到电脑串口.
默认传输速率:9600 波特率,发送 LIN 数据前切换波特率,发送 13 个显性间隔信号.
下载时, 选择时钟 22.1184MHz (用户可自行修改频率).
******************************************/
#include "reg51.h"
#include "intrins.h"
#define
MAIN_Fosc
22118400L
typedef
typedef
typedef
unsigned char
unsigned int
unsigned long
u8;
u16;
u32;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
AUXR
S2CON
S2BUF
TH2
TL2
IE2
INT_CLKO
P_SW1
P_SW2
=
=
=
=
=
=
=
=
=
0x8E;
0x9A;
0x9B;
0xD6;
0xD7;
0xAF;
0x8F;
0xA2;
0xBA;
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P4
P5
P6
P7
P1M1
P1M0
P0M1
P0M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
P6M1
P6M0
P7M1
P7M0
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
0xC0;
0xC8;
0xE8;
0xF8;
0x91;
0x92;
0x93;
0x94;
0x95;
0x96;
0xB1;
0xB2;
0xB3;
0xB4;
0xC9;
0xCA;
0xCB;
0xCC;
0xE1;
0xE2;
sbit
P00
=
P0^0;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 223 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
sbit
P01
P02
P03
P04
P05
P06
P07
P10
P11
P12
P13
P14
P15
P16
P17
P20
P21
P22
P23
P24
P25
P26
P27
P30
P31
P32
P33
P34
P35
P36
P37
P40
P41
P42
P43
P44
P45
P46
P47
P50
P51
P52
P53
P54
P55
P56
P57
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
=
P0^1;
P0^2;
P0^3;
P0^4;
P0^5;
P0^6;
P0^7;
P1^0;
P1^1;
P1^2;
P1^3;
P1^4;
P1^5;
P1^6;
P1^7;
P2^0;
P2^1;
P2^2;
P2^3;
P2^4;
P2^5;
P2^6;
P2^7;
P3^0;
P3^1;
P3^2;
P3^3;
P3^4;
P3^5;
P3^6;
P3^7;
P4^0;
P4^1;
P4^2;
P4^3;
P4^4;
P4^5;
P4^6;
P4^7;
P5^0;
P5^1;
P5^2;
P5^3;
P5^4;
P5^5;
P5^6;
P5^7;
sbit
SLP_N
=
P2^4;
技术支持: 13922829991
选型顾问: 13922805190
//0: Sleep
/****************************** 用户定义宏 ***********************************/
#define
#define
Baudrate1
Baudrate2
(65536UL - (MAIN_Fosc / 4) / 9600UL)
(65536UL - (MAIN_Fosc / 4) / 9600UL)
#define
Baudrate_Break
(65536UL - (MAIN_Fosc / 4) / 6647UL)
#define
#define
UART1_BUF_LENGTH
UART2_BUF_LENGTH
深圳国芯人工智能有限公司
//发送显性间隔信号波特率
32
32
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 224 -
STC8F1K 系列技术手册
#define
LIN_ID
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
0x31
u8 TX1_Cnt;
u8 RX1_Cnt;
u8 TX2_Cnt;
u8 RX2_Cnt;
bit B_TX1_Busy;
bit B_TX2_Busy;
u8 RX1_TimeOut;
u8 RX2_TimeOut;
//发送计数
//接收计数
//发送计数
//接收计数
//发送忙标志
//发送忙标志
u8 xdata RX1_Buffer[UART1_BUF_LENGTH];
u8 xdata RX2_Buffer[UART2_BUF_LENGTH];
//接收缓冲
//接收缓冲
void UART1_config(u8 brt);
void UART2_config(u8 brt);
void PrintString1(u8 *puts);
void delay_ms(u8 ms);
void UART1_TxByte(u8 dat);
void UART2_TxByte(u8 dat);
void Lin_Send(u8 *puts);
void SetTimer2Baudraye(u16 dat);
//========================================================================
// 函数: void main(void)
// 描述: 主函数。
// 参数: none.
// 返回: none.
// 版本: VER1.0
// 日期: 2014-11-28
// 备注:
//========================================================================
void main(void)
{
u8 i;
//设置为准双向口
//设置为准双向口
//设置为准双向口
//设置为准双向口
//设置为准双向口
//设置为准双向口
//设置为准双向口
//设置为准双向口
P0M1 = 0; P0M0 = 0;
P1M1 = 0; P1M0 = 0;
P2M1 = 0; P2M0 = 0;
P3M1 = 0; P3M0 = 0;
P4M1 = 0; P4M0 = 0;
P5M1 = 0; P5M0 = 0;
P6M1 = 0; P6M0 = 0;
P7M1 = 0; P7M0 = 0;
UART1_config(1);
UART2_config(2);
EA = 1;
SLP_N = 1;
//允许全局中断
PrintString1("STC8H8K64U UART1 Test Programme!\r\n"); //UART1 发送一个字符串
while (1)
{
delay_ms(1);
if(RX1_TimeOut > 0)
{
if(--RX1_TimeOut == 0)
深圳国芯人工智能有限公司
//超时,则串口接收结束
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 225 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
{
if(RX1_Cnt > 0)
{
Lin_Send(RX1_Buffer);
}
RX1_Cnt = 0;
//将 UART1 收到的数据发送到 LIN 总线上
}
}
if(RX2_TimeOut > 0)
{
if(--RX2_TimeOut == 0)
//超时,则串口接收结束
{
if(RX2_Cnt > 0)
{
for (i=0; I < RX2_Cnt; i++)
//遇到停止符 0 结束
{
UART1_TxByte(RX2_Buffer[i]); //从 LIN 总线收到的数据发送到 UART1
}
}
RX2_Cnt = 0;
}
}
}
}
//========================================================================
// 函数: void delay_ms(unsigned char ms)
// 描述: 延时函数。
// 参数: ms,要延时的 ms 数, 这里只支持 1~255ms. 自动适应主时钟.
// 返回: none.
// 版本: VER1.0
// 日期: 2013-4-1
// 备注:
//========================================================================
void delay_ms(u8 ms)
{
u16 i;
do{
i = MAIN_Fosc / 13000;
while(--i);
//14T per loop
}while(--ms);
}
//========================================================================
// 函数: u8
Lin_CheckPID(u8
id)
// 描述: ID 码加上校验符,转成 PID 码。
// 参数: ID 码.
// 返回: PID 码.
// 版本: VER1.0
// 日期: 2020-12-2
// 备注:
//========================================================================
u8 Lin_CheckPID(u8 id)
{
u8 returnpid ;
u8 P0 ;
u8 P1 ;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 226 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P0 = (((id)^(id>>1)^(id>>2)^(id>>4))&0x01)1)^(id>>3)^(id>>4)^(id>>5)))&0x01) 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
void main()
{
IapErase(0x0400);
P0 = IapRead(0x0400);
IapProgram(0x0400, 0x12);
P1 = IapRead(0x0400);
//使用 MOVC 读取 EEPROM 需要加上相应的偏移
//使用 MOVC 读取数据
//使能 IAP
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
//使能 IAP
//设置 IAP 擦除命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//
//关闭 IAP 功能
//P0=0xff
//P1=0x12
while (1);
}
15.5.3
使用串口送出 EEPROM 数据
汇编代码
AUXR
T2H
T2L
DATA
DATA
DATA
8EH
0D6H
0D7H
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
DATA
DATA
DATA
DATA
0C2H
0C3H
0C4H
0C5H
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 257 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
IAP_TRIG
IAP_CONTR
DATA
DATA
0C6H
0C7H
WT_30M
WT_24M
WT_20M
WT_12M
WT_6M
WT_3M
WT_2M
WT_1M
EQU
EQU
EQU
EQU
EQU
EQU
EQU
EQU
80H
81H
82H
83H
84H
85H
86H
87H
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
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
NOP
MOV
LCALL
RET
IAP_CONTR,#WT_12M
IAP_CMD,#1
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置 IAP 读命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
A,IAP_DATA
IAP_IDLE
;读取 IAP 数据
;关闭 IAP 功能
MOV
MOV
MOV
MOV
MOV
MOV
MOV
NOP
IAP_CONTR,#WT_12M
IAP_CMD,#2
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_DATA,A
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置 IAP 写命令
;设置 IAP 低地址
;设置 IAP 高地址
;写 IAP 数据
;写触发命令(0x5a)
;写触发命令(0xa5)
选型顾问: 13922805190
UART_INIT:
;65536-11059200/115200/4=0FFE8H
UART_SEND:
IAP_IDLE:
IAP_READ:
IAP_PROGRAM:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 258 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
LCALL
RET
IAP_IDLE
;关闭 IAP 功能
MOV
MOV
MOV
MOV
MOV
MOV
NOP
LCALL
RET
IAP_CONTR,#WT_12M
IAP_CMD,#3
IAP_ADDRL,DPL
IAP_ADDRH,DPH
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;使能 IAP
;设置 IAP 擦除命令
;设置 IAP 低地址
;设置 IAP 高地址
;写触发命令(0x5a)
;写触发命令(0xa5)
IAP_IDLE
;关闭 IAP 功能
MOV
SP,#3FH
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
$
选型顾问: 13922805190
IAP_ERASE:
MAIN:
END
C 语言代码
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BRT
sfr
sfr
sfr
AUXR
T2H
T2L
=
=
=
0x8e;
0xd6;
0xd7;
sfr
sfr
sfr
sfr
sfr
sfr
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
=
=
=
=
=
=
0xC2;
0xC3;
0xC4;
0xC5;
0xC6;
0xC7;
#define
#define
#define
#define
#define
#define
WT_30M
WT_24M
WT_20M
WT_12M
WT_6M
WT_3M
深圳国芯人工智能有限公司
11059200UL
(65536 - FOSC / 115200 / 4)
0x80
0x81
0x82
0x83
0x84
0x85
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 259 -
STC8F1K 系列技术手册
#define
#define
官方网站: www.STCMCUDATA.com
WT_2M
WT_1M
技术支持: 13922829991
选型顾问: 13922805190
0x86
0x87
void UartInit()
{
SCON = 0x5a;
T2L = BRT;
T2H = BRT >> 8;
AUXR = 0x15;
}
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_CONTR = WT_12M;
IAP_CMD = 1;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
dat = IAP_DATA;
IapIdle();
//使能 IAP
//设置 IAP 读命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//读 IAP 数据
//关闭 IAP 功能
return dat;
}
void IapProgram(int addr, char dat)
{
IAP_CONTR = WT_12M;
IAP_CMD = 2;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_DATA = dat;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
}
//使能 IAP
//设置 IAP 写命令
//设置 IAP 低地址
//设置 IAP 高地址
//写 IAP 数据
//写触发命令(0x5a)
//写触发命令(0xa5)
//关闭 IAP 功能
void IapErase(int addr)
{
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 260 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
IAP_CONTR = WT_12M;
IAP_CMD = 3;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
_nop_();
IapIdle();
技术支持: 13922829991
选型顾问: 13922805190
//使能 IAP
//设置 IAP 擦除命令
//设置 IAP 低地址
//设置 IAP 高地址
//写触发命令(0x5a)
//写触发命令(0xa5)
//
//关闭 IAP 功能
}
void main()
{
UartInit();
IapErase(0x0400);
UartSend(IapRead(0x0400));
IapProgram(0x0400, 0x12);
UartSend(IapRead(0x0400));
while (1);
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 261 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
16 同步串行外设接口 SPI
特别注意:当 SPI 工作在主机模式时,MISO 脚可设置为准双向口模式或者输入口模式,SCLK 和
MOSI 脚可设置为准双向口模式或者推挽输出模式,但主机模式的 SCLK 和 MOSI 脚一定不能设置开漏
模式,否则没波形输出;当 SPI 工作在从机模式时,SCLK 和 MOSI 脚可设置为准双向口模式或者输入
口模式,MISO 脚可设置为准双向口模式或者推挽输出模式,但从机模式的 MISO 脚一定不能设置开漏
模式,否则没波形输出
STC8F1K 系列单片机内部集成了一种高速串行通信接口——SPI 接口。SPI 是一种全双工的高速同
步通信总线。STC8F1K 系列集成的 SPI 接口提供了两种操作模式:主模式和从模式。
16.1 SPI 相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
-
-
SPSTAT
SPI 状态寄存器
CDH
SPIF
WCOL
-
-
-
-
SPCTL
SPI 控制寄存器
CEH
SSIG
SPEN
DORD
MSTR
CPOL
CPHA
SPDAT
SPI 数据寄存器
CFH
16.1.1
SPR[1:0]
00xx,xxxx
0000,0100
0000,0000
SPI 状态寄存器(SPSTAT)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
SPSTAT
CDH
SPIF
WCOL
-
-
-
-
-
-
SPIF:SPI 中断标志位。
当发送/接收完成 1 字节的数据后,硬件自动将此位置 1,并向 CPU 提出中断请求。当 SSIG 位被设
置为 0 时,由于 SS 管脚电平的变化而使得设备的主/从模式发生改变时,此标志位也会被硬件自动
置 1,以标志设备模式发生变化。
注意:此标志位必须用户通过软件方式向此位写 1 进行清零。
WCOL:SPI 写冲突标志位。
当 SPI 在进行数据传输的过程中写 SPDAT 寄存器时,硬件将此位置 1。
注意:此标志位必须用户通过软件方式向此位写 1 进行清零。
16.1.2
SPI 控制寄存器(SPCTL),SPI 速度控制
符号
地址
B7
B6
B5
B4
B3
B2
SPCTL
CEH
SSIG
SPEN
DORD
MSTR
CPOL
CPHA
B1
B0
SPR[1:0]
SSIG:SS 引脚功能控制位
0:SS 引脚确定器件是主机还是从机
1:忽略 SS 引脚功能,使用 MSTR 确定器件是主机还是从机
SPEN:SPI 使能控制位
0:关闭 SPI 功能
1:使能 SPI 功能
DORD:SPI 数据位发送/接收的顺序
0:先发送/接收数据的高位(MSB)
1:先发送/接收数据的低位(LSB)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 262 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
MSTR:器件主/从模式选择位
设置主机模式:
若 SSIG=0,则 SS 管脚必须为高电平且设置 MSTR 为 1
若 SSIG=1,则只需要设置 MSTR 为 1(忽略 SS 管脚的电平)
设置从机模式:
若 SSIG=0,则 SS 管脚必须为低电平(与 MSTR 位无关)
若 SSIG=1,则只需要设置 MSTR 为 0(忽略 SS 管脚的电平)
CPOL:SPI 时钟极性控制
0:SCLK 空闲时为低电平,SCLK 的前时钟沿为上升沿,后时钟沿为下降沿
1:SCLK 空闲时为高电平,SCLK 的前时钟沿为下降沿,后时钟沿为上升沿
CPHA:SPI 时钟相位控制
0:数据 SS 管脚为低电平驱动第一位数据并在 SCLK 的后时钟沿改变数据,前时钟沿采样数据(必
须 SSIG=0)
1:数据在 SCLK 的前时钟沿驱动,后时钟沿采样
SPR[1:0]:SPI 时钟频率选择
SPR[1:0]
SCLK 频率
00
SYSclk/4
01
SYSclk/8
10
SYSclk/16
11
SYSclk/32
16.1.3
SPI 数据寄存器(SPDAT)
符号
地址
SPDAT
CFH
B7
B6
B5
B4
B3
B2
B1
B0
SPI 发送/接收数据缓冲器。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 263 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
16.2 SPI 通信方式
SPI 的通信方式通常有 3 种:单主单从(一个主机设备连接一个从机设备)、互为主从(两个设备连
接,设备和互为主机和从机)、单主多从(一个主机设备连接多个从机设备)
16.2.1
单主单从
两个设备相连,其中一个设备固定作为主机,另外一个固定作为从机。
主机设置:SSIG 设置为 1,MSTR 设置为 1,固定为主机模式。主机可以使用任意端口连接从机的
SS 管脚,拉低从机的 SS 脚即可使能从机
从机设置:SSIG 设置为 0,SS 管脚作为从机的片选信号。
单主单从连接配置图如下所示:
主机
从机
MISO
MISO
MOSI
MOSI
SCLK
SCLK
GPIO
SS
单主单从配置
16.2.2
互为主从
两个设备相连,主机和从机不固定。
设置方法 1:两个设备初始化时都设置为 SSIG 设置为 0,MSTR 设置为 1,且将 SS 脚设置为双向口
模式输出高电平。此时两个设备都是不忽略 SS 的主机模式。当其中一个设备需要启动传
输时,可将自己的 SS 脚设置为输出模式并输出低电平,拉低对方的 SS 脚,这样另一个
设备就被强行设置为从机模式了。
设置方法 2:两个设备初始化时都将自己设置成忽略 SS 的从机模式,即将 SSIG 设置为 1,MSTR
设置为 0。当其中一个设备需要启动传输时,先检测 SS 管脚的电平,如果时候高电平,
就将自己设置成忽略 SS 的主模式,即可进行数据传输了。
互为主从连接配置图如下所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 264 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
设备1
技术支持: 13922829991
选型顾问: 13922805190
设备2
MISO
MISO
MOSI
MOSI
SCLK
SCLK
SS
SS
互为主从配置
16.2.3
单主多从
多个设备相连,其中一个设备固定作为主机,其他设备固定作为从机。
主机设置:SSIG 设置为 1,MSTR 设置为 1,固定为主机模式。主机可以使用任意端口分别连接各
个从机的 SS 管脚,拉低其中一个从机的 SS 脚即可使能相应的从机设备
从机设置:SSIG 设置为 0,SS 管脚作为从机的片选信号。
单主多从连接配置图如下所示:
主机
从机
MISO
MISO
MOSI
MOSI
SCLK
SCLK
GPIO
SS
GPIO
MISO
MOSI
SCLK
SS
单主多从配置
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 265 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
16.3 配置 SPI
控制位
通信端口
说明
SPEN
SSIG
MSTR
SS
MISO
MOSI
SCLK
0
x
x
x
输入
输入
输入
关闭 SPI 功能,SS/MOSI/MISO/SCLK 均为普通 I/O
1
0
0
0
输出
输入
输入
从机模式,且被选中
1
0
0
1
高阻
输入
输入
从机模式,但未被选中
输入
输入
从机模式,不忽略 SS 且 MSTR 为 1 的主机模式,
当 SS 管脚被拉低时,MSTR 将被硬件自动清零,
工作模式将被被动设置为从机模式
高阻
高阻
主机模式,空闲状态
输出
输出
主机模式,激活状态
1
0
1→0
0
输出
1
0
1
1
输入
1
1
0
x
输出
输入
输入
从机模式
1
1
1
x
输入
输出
输出
主机模式
从机模式的注意事项:
当 CPHA=0 时,SSIG 必须为 0(即不能忽略 SS 脚)。在每次串行字节开始还发送前 SS 脚必须拉
低,并且在串行字节发送完后须重新设置为高电平。SS 管脚为低电平时不能对 SPDAT 寄存器执行写操
作,否则将导致一个写冲突错误。CPHA=0 且 SSIG=1 时的操作未定义。
当 CPHA=1 时,SSIG 可以置 1(即可以忽略脚)。如果 SSIG=0,SS 脚可在连续传输之间保持低
有效(即一直固定为低电平)。这种方式适用于固定单主单从的系统。
主机模式的注意事项:
在 SPI 中,传输总是由主机启动的。如果 SPI 使能(SPEN=1)并选择作为主机时,主机对 SPI 数据
寄存器 SPDAT 的写操作将启动 SPI 时钟发生器和数据的传输。
在数据写入 SPDAT 之后的半个到一个 SPI
位时间后,数据将出现在 MOSI 脚。写入主机 SPDAT 寄存器的数据从 MOSI 脚移出发送到从机的 MOSI
脚。同时从机 SPDAT 寄存器的数据从 MISO 脚移出发送到主机的 MISO 脚。
传输完一个字节后,SPI 时钟发生器停止,传输完成标志(SPIF)置位,如果 SPI 中断使能则会产
生一个 SPI 中断。主机和从机 CPU 的两个移位寄存器可以看作是一个 16 位循环移位寄存器。当数据从
主机移位传送到从机的同时,数据也以相反的方向移入。这意味着在一个移位周期中,主机和从机的数
据相互交换。
通过 SS 改变模式
如果 SPEN=1,SSIG=0 且 MSTR=1,SPI 使能为主机模式,并将 SS 脚可配置为输入模式化或准双
向口模式。这种情况下,另外一个主机可将该脚驱动为低电平,从而将该器件选择为 SPI 从机并向其发
送数据。为了避免争夺总线,SPI 系统将该从机的 MSTR 清零,MOSI 和 SCLK 强制变为输入模式,而
MISO 则变为输出模式,同时 SPSTAT 的 SPIF 标志位置 1。
用户软件必须一直对 MSTR 位进行检测,如果该位被一个从机选择动作而被动清零,而用户想继续
将 SPI 作为主机,则必须重新设置 MSTR 位,否则将一直处于从机模式。
写冲突
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 266 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
SPI 在发送时为单缓冲,在接收时为双缓冲。这样在前一次发送尚未完成之前,不能将新的数据写
入移位寄存器。当发送过程中对数据寄存器 SPDAT 进行写操作时,WCOL 位将被置 1 以指示发生数据
写冲突错误。在这种情况下,当前发送的数据继续发送,而新写入的数据将丢失。
当对主机或从机进行写冲突检测时,主机发生写冲突的情况是很罕见的,因为主机拥有数据传输的
完全控制权。但从机有可能发生写冲突,因为当主机启动传输时,从机无法进行控制。
接收数据时,接收到的数据传送到一个并行读数据缓冲区,这样将释放移位寄存器以进行下一个数
据的接收。但必须在下个字符完全移入之前从数据寄存器中读出接收到的数据,否则,前一个接收数据
将丢失。
WCOL 可通过软件向其写入“1”清零。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 267 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
16.4 数据模式
SPI 的时钟相位控制位 CPHA 可以让用户设定数据采样和改变时的时钟沿。时钟极性位 CPOL 可以
让用户设定时钟极性。下面图例显示了不同时钟相位、极性设置下 SPI 通讯时序。
1
2
3
4
5
6
7
8
SCLK (CPOL=0)
SCLK (CPOL=1)
前沿采样
MOSI (输入)
DORD=0
DORD=1
MSB
LSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
5
2
4
3
3
4
2
5
1
6
LSB
MSB
后沿改变数据
MISO (输出)
DORD=0
DORD=1
MSB
LSB
6
1
下降沿触发从机送出第1位数据
无效数据
SS (如果SSIG=0)
从机传输(CPHA=0)
1
2
3
4
5
6
7
8
SCLK (CPOL=0)
SCLK (CPOL=1)
后沿采样
MOSI (输入)
DORD=0
DORD=1
MSB
LSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
前沿驱动
MISO (输出)
DORD=0
DORD=1
MSB
LSB
无效数据
SS (如果SSIG=0)
从机传输(CPHA=1)
1
2
3
4
5
6
7
8
SCLK (CPOL=0)
SCLK (CPOL=1)
后沿改变数据
MOSI (输出)
DORD=0
DORD=1
MSB
LSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
前沿采样
MISO (输入)
DORD=0
DORD=1
MSB
LSB
SS (如果SSIG=0)
主机传输(CPHA=0)
1
2
3
4
5
6
7
8
SCLK (CPOL=0)
SCLK (CPOL=1)
前沿驱动
MOSI (输出)
DORD=0
DORD=1
MSB
LSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
6
1
5
2
4
3
3
4
2
5
1
6
LSB
MSB
后沿采样
MISO (输入)
DORD=0
DORD=1
MSB
LSB
SS (如果SSIG=0)
主机传输(CPHA=1)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 268 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
16.5 范例程序
SPI 单主单从系统主机程序(中断方式)
16.5.1
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
sbit
SS
LED
=
=
P1^0;
P1^1;
bit
busy;
void SPI_Isr() interrupt 9
{
SPSTAT = 0xc0;
SS = 1;
busy = 0;
LED = !LED;
}
//清中断标志
//拉高从机的 SS 管脚
//测试端口
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
- 269 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P5M1 = 0x00;
LED = 1;
SS = 1;
busy = 0;
//使能 SPI 主机模式
//清中断标志
//使能 SPI 中断
SPCTL = 0x50;
SPSTAT = 0xc0;
IE2 = ESPI;
EA = 1;
while (1)
{
while (busy);
busy = 1;
SS = 0;
SPDAT = 0x5a;
}
//拉低从机 SS 管脚
//发送测试数据
}
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
BUSY
SS
LED
BIT
BIT
BIT
20H.0
P1.0
P1.1
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
SETB
CLR
CPL
RETI
SPSTAT,#0C0H
SS
BUSY
LED
SPIISR:
深圳国芯人工智能有限公司
;清中断标志
;拉高从机的 SS 管脚
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 270 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
SETB
SETB
CLR
LED
SS
BUSY
MOV
MOV
MOV
SETB
SPCTL,#50H
SPSTAT,#0C0H
IE2,#ESPI
EA
JB
SETB
CLR
MOV
JMP
BUSY,$
BUSY
SS
SPDAT,#5AH
LOOP
;使能 SPI 主机模式
;清中断标志
;使能 SPI 中断
LOOP:
;拉低从机 SS 管脚
;发送测试数据
END
SPI 单主单从系统从机程序(中断方式)
16.5.2
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
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 271 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sfr
sfr
sfr
sfr
sfr
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sbit
LED
=
P1^1;
void SPI_Isr() interrupt 9
{
SPSTAT = 0xc0;
SPDAT = SPDAT;
LED = !LED;
}
技术支持: 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 = 0x40;
SPSTAT = 0xc0;
IE2 = ESPI;
EA = 1;
while (1);
}
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
LED
BIT
P1.1
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
- 272 -
STC8F1K 系列技术手册
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
DATA
DATA
DATA
0B4H
0C9H
0CAH
ORG
LJMP
ORG
LJMP
0000H
MAIN
004BH
SPIISR
ORG
0100H
MOV
MOV
CPL
RETI
SPSTAT,#0C0H
SPDAT,SPDAT
LED
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
SPCTL,#40H
SPSTAT,#0C0H
IE2,#ESPI
EA
JMP
$
技术支持: 13922829991
选型顾问: 13922805190
SPIISR:
;清中断标志
;将接收到的数据回传给主机
MAIN:
;使能 SPI 从机模式
;清中断标志
;使能 SPI 中断
END
SPI 单主单从系统主机程序(查询方式)
16.5.3
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
sfr
sfr
sfr
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
深圳国芯人工智能有限公司
=
=
=
=
=
=
=
0x93;
0x94;
0x91;
0x92;
0x95;
0x96;
0xb1;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 273 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
sfr
sfr
sfr
sfr
sfr
P3M0
P4M1
P4M0
P5M1
P5M0
=
=
=
=
=
0xb2;
0xb3;
0xb4;
0xc9;
0xca;
sfr
sfr
sfr
sfr
#define
SPSTAT
SPCTL
SPDAT
IE2
ESPI
=
=
=
=
0xcd;
0xce;
0xcf;
0xaf;
0x02
sbit
sbit
SS
LED
=
=
P1^0;
P1^1;
技术支持: 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;
LED = 1;
SS = 1;
//使能 SPI 主机模式
//清中断标志
SPCTL = 0x50;
SPSTAT = 0xc0;
while (1)
{
SS = 0;
SPDAT = 0x5a;
while (!(SPSTAT & 0x80));
SPSTAT = 0xc0;
SS = 1;
LED = !LED;
}
//拉低从机 SS 管脚
//发送测试数据
//查询完成标志
//清中断标志
//拉高从机的 SS 管脚
//测试端口
}
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
SS
LED
BIT
BIT
P1.0
P1.1
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 274 -
STC8F1K 系列技术手册
P0M1
P0M0
P1M1
P1M0
P2M1
P2M0
P3M1
P3M0
P4M1
P4M0
P5M1
P5M0
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
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
SETB
SETB
LED
SS
MOV
MOV
SPCTL,#50H
SPSTAT,#0C0H
;使能 SPI 主机模式
;清中断标志
CLR
MOV
MOV
JNB
MOV
SETB
CPL
JMP
SS
SPDAT,#5AH
A,SPSTAT
ACC.7,$-2
SPSTAT,#0C0H
SS
LED
LOOP
;拉低从机 SS 管脚
;发送测试数据
;查询完成标志
选型顾问: 13922805190
MAIN:
LOOP:
;清中断标志
END
16.5.4
SPI 单主单从系统从机程序(查询方式)
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 275 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
#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
LED
=
P1^1;
void SPI_Isr() interrupt 9
{
SPSTAT = 0xc0;
}
//清中断标志
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 从机模式
//清中断标志
SPCTL = 0x40;
SPSTAT = 0xc0;
while (1)
{
while (!(SPSTAT & 0x80));
SPSTAT = 0xc0;
SPDAT = SPDAT;
LED = !LED;
}
//查询完成标志
//清中断标志
//将接收到的数据回传给主机
//测试端口
}
汇编代码
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 276 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
LED
BIT
P1.1
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
SPCTL,#40H
SPSTAT,#0C0H
;使能 SPI 从机模式
;清中断标志
MOV
JNB
MOV
MOV
CPL
JMP
A,SPSTAT
ACC.7,$-2
SPSTAT,#0C0H
SPDAT,SPDAT
LED
LOOP
;查询完成标志
MAIN:
LOOP:
;清中断标志
;将接收到的数据回传给主机
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 277 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
SPI 互为主从系统程序(中断方式)
16.5.5
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
sbit
sbit
SS
LED
KEY
=
=
=
P1^0;
P1^1;
P0^0;
void SPI_Isr() interrupt 9
{
SPSTAT = 0xc0;
if (SPCTL & 0x10)
{
SS = 1;
SPCTL = 0x40;
}
else
{
SPDAT = SPDAT;
}
LED = !LED;
}
//清中断标志
//主机模式
//拉高从机的 SS 管脚
//重新设置为从机待机
//从机模式
//将接收到的数据回传给主机
//测试端口
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
- 278 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
P4M1 = 0x00;
P5M0 = 0x00;
P5M1 = 0x00;
LED = 1;
KEY = 1;
SS = 1;
//使能 SPI 从机模式进行待机
//清中断标志
//使能 SPI 中断
SPCTL = 0x40;
SPSTAT = 0xc0;
IE2 = ESPI;
EA = 1;
while (1)
{
if (!KEY)
{
SPCTL = 0x50;
SS = 0;
SPDAT = 0x5a;
while (!KEY);
}
}
//等待按键触发
//使能 SPI 主机模式
//拉低从机 SS 管脚
//发送测试数据
//等待按键释放
}
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
SS
LED
KEY
BIT
BIT
BIT
P1.0
P1.1
P0.0
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
SPIISR:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 279 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
PUSH
MOV
MOV
JB
ACC
SPSTAT,#0C0H
A,SPCTL
ACC.4,MASTER
MOV
JMP
SPDAT,SPDAT
ISREXIT
;将接收到的数据回传给主机
SETB
MOV
SS
SPCTL,#40H
;拉高从机的 SS 管脚
;重新设置为从机待机
CPL
POP
RETI
LED
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
SETB
SETB
SETB
SS
LED
KEY
MOV
MOV
MOV
SETB
SPCTL,#40H
SPSTAT,#0C0H
IE2,#ESPI
EA
;使能 SPI 从机模式进行待机
;清中断标志
;使能 SPI 中断
JB
MOV
CLR
MOV
JNB
JMP
KEY,LOOP
SPCTL,#50H
SS
SPDAT,#5AH
KEY,$
LOOP
;等待按键触发
;使能 SPI 主机模式
;拉低从机 SS 管脚
;发送测试数据
;等待按键释放
选型顾问: 13922805190
;清中断标志
SLAVE:
MASTER:
ISREXIT:
MAIN:
LOOP:
END
16.5.6
SPI 互为主从系统程序(查询方式)
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 280 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
#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
sbit
sbit
SS
LED
KEY
=
=
=
P1^0;
P1^1;
P0^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;
LED = 1;
KEY = 1;
SS = 1;
SPCTL = 0x40;
SPSTAT = 0xc0;
while (1)
{
if (!KEY)
{
SPCTL = 0x50;
SS = 0;
SPDAT = 0x5a;
while (!KEY);
}
if (SPSTAT & 0x80)
{
SPSTAT = 0xc0;
深圳国芯人工智能有限公司
//使能 SPI 从机模式进行待机
//清中断标志
//等待按键触发
//使能 SPI 主机模式
//拉低从机 SS 管脚
//发送测试数据
//等待按键释放
//清中断标志
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 281 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
if (SPCTL & 0x10)
{
SS = 1;
SPCTL = 0x40;
}
else
{
SPDAT = SPDAT;
}
LED = !LED;
技术支持: 13922829991
选型顾问: 13922805190
//主机模式
//拉高从机的 SS 管脚
//重新设置为从机待机
//从机模式
//将接收到的数据回传给主机
//测试端口
}
}
}
汇编代码
;测试工作频率为 11.0592MHz
SPSTAT
SPCTL
SPDAT
IE2
ESPI
DATA
DATA
DATA
DATA
EQU
0CDH
0CEH
0CFH
0AFH
02H
SS
LED
KEY
BIT
BIT
BIT
P1.0
P1.1
P0.0
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
MAIN:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 282 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
SETB
SETB
SETB
SS
LED
KEY
MOV
MOV
SPCTL,#40H
SPSTAT,#0C0H
;使能 SPI 从机模式进行待机
;清中断标志
JB
MOV
CLR
MOV
JNB
KEY,SKIP
SPCTL,#50H
SS
SPDAT,#5AH
KEY,$
;等待按键触发
;使能 SPI 主机模式
;拉低从机 SS 管脚
;发送测试数据
;等待按键释放
MOV
JNB
MOV
MOV
JB
A,SPSTAT
ACC.7,LOOP
SPSTAT,#0C0H
A,SPCTL
ACC.4,MASTER
;清中断标志
MOV
CPL
JMP
SPDAT,SPDAT
LED
LOOP
;将接收到的数据回传给主机
SETB
MOV
CPL
JMP
SS
SPCTL,#40H
LED
LOOP
;拉高从机的 SS 管脚
;重新设置为从机待机
选型顾问: 13922805190
LOOP:
SKIP:
SLAVE:
MASTER:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 283 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
17 I2C 总线
STC8F1K 系列的单片机内部集成了一个 I2C 串行总线控制器。I2C 是一种高速同步通讯总线,通讯
使用 SCL(时钟线)和 SDA(数据线)两线进行同步通讯。对于 SCL 和 SDA 的端口分配,STC8F1K
系列的单片机提供了切换模式,可将 SCL 和 SDA 切换到不同的 I/O 口上,以方便用户将一组 I2C 总线当
作多组进行分时复用。
与标准 I2C 协议相比较,忽略了如下两种机制:
发送起始信号(START)后不进行仲裁
时钟信号(SCL)停留在低电平时不进行超时检测
STC8F1K 系列的 I2C 总线提供了两种操作模式:主机模式(SCL 为输出口,发送同步时钟信号)和
从机模式(SCL 为输入口,接收同步时钟信号)
17.1 I2C 相关的寄存器
位地址与符号
符号
描述
地址
复位值
B7
B6
B5
B4
B3
B2
B1
B0
I2CCFG
I2C 配置寄存器
FE80H
ENI2C
MSSL
I2CMSCR
I C 主机控制寄存器
FE81H
EMSI
-
-
-
I2CMSST
I C 主机状态寄存器
FE82H
MSBUSY
MSIF
-
-
-
-
I2CSLCR
I C 从机控制寄存器
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
I2CSLST
I C 从机状态寄存器
FE84H
SLBUSY
STAIF
RXIF
TXIF
STOIF
I2CSLADR
I C 从机地址寄存器
FE85H
I2CTXD
I C 数据发送寄存器
FE86H
0000,0000
I2CRXD
I C 数据接收寄存器
FE87H
0000,0000
I2CMSAUX
I C 主机辅助控制寄存器
FE88H
2
2
2
2
2
2
2
2
深圳国芯人工智能有限公司
MSSPEED[5:0]
0000,0000
MSCMD[3:0]
0xxx,0000
MSACKI MSACKO 00xx,xx00
-
TXING SLACKI
SLRST
SLACKO 0000,0000
I2CSLADR[7:1]
-
-
-
国内分销商电话: 0513-5501 2928/2929/2966
-
MA
-
-
-
x000,0xx0
WDTA
传真: 0513-5501 2926/2956/2947
0000,0000
xxxx,xxx0
- 284 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
17.2 I2C 主机模式
17.2.1
I2C 配置寄存器(I2CCFG)
,总线速度控制
符号
地址
B7
B6
I2CCFG
FE80H
ENI2C
MSSL
B5
B4
B3
B2
B1
B0
MSSPEED[5:0]
ENI2C:I2C 功能使能控制位
0:禁止 I2C 功能
1:允许 I2C 功能
MSSL:I2C 工作模式选择位
0:从机模式
1:主机模式
MSSPEED[5:0]:I2C 总线速度(等待时钟数)控制,I2C 总线速度=FOSC / 2 / (MSSPEED * 2 + 4)
MSSPEED[5:0]
对应的时钟数
0
4
1
6
2
8
…
…
x
2x+4
…
…
62
128
63
130
只有当 I2C 模块工作在主机模式时,MSSPEED 参数设置的等待参数才有效。此等待参数主要用于
主机模式的以下几个信号:
TSSTA:起始信号的建立时间(Setup Time of START)
THSTA:起始信号的保持时间(Hold Time of START)
TSSTO:停止信号的建立时间(Setup Time of STOP)
THSTO:停止信号的保持时间(Hold Time of STOP)
THCKL:时钟信号的低电平保持时间(Hold Time of SCL Low)
THCKH:时钟信号的高电平保持时间(Hold Time of SCL High)
SCL
SDA
TSSTA
TSSTO
THSTA
START
THCKL
THSTO
STOP
固定为1个时钟
THCKH
DATA
例 1:当 MSSPEED=10 时,TSSTA=THSTA=TSSTO=THSTO=THCKL=24/FOSC
例 2:当 24MHz 的工作频率下需要 400K 的 I2C 总线速度时,
MSSPEED=(24M / 400K / 2 - 4) / 2=13
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 285 -
STC8F1K 系列技术手册
17.2.2
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
I2C 主机控制寄存器(I2CMSCR)
符号
地址
B7
B6
B5
B4
I2CMSCR
FE81H
EMSI
-
-
-
B3
B2
B1
B0
MSCMD[3:0]
EMSI:主机模式中断使能控制位
0:关闭主机模式的中断
1:允许主机模式的中断
MSCMD[3:0]:主机命令
0000:待机,无动作。
0001:起始命令。
发送 START 信号。如果当前 I2C 控制器处于空闲状态,即 MSBUSY(I2CMSST.7)为 0 时,
写此命令会使控制器进入忙状态,硬件自动将 MSBUSY 状态位置 1,并开始发送 START 信
号;若当前 I2C 控制器处于忙状态,写此命令可触发发送 START 信号。发送 START 信号的
波形如下图所示:
SCL
SDA
(输出)
0010:发送数据命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 8 个时钟,并将 I2CTXD 寄存器里面数据
按位送到 SDA 管脚上(先发送高位数据)。发送数据的波形如下图所示:
SCL
SDA
(输出)
D7
D6
D5
D4
D3
D2
D1
D0
0011:接收 ACK 命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 1 个时钟,并将从 SDA 端口上读取的数据
保存到 MSACKI(I2CMSST.1)。接收 ACK 的波形如下图所示:
SCL
SDA
(输入)
ACK
0100:接收数据命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 8 个时钟,并将从 SDA 端口上读取的数据
依次左移到 I2CRXD 寄存器(先接收高位数据)。接收数据的波形如下图所示:
SCL
SDA
(输入)
D7
D6
D5
D4
D3
D2
D1
D0
0101:发送 ACK 命令。
写此命令后,I2C 总线控制器会在 SCL 管脚上产生 1 个时钟,并将 MSACKO(I2CMSST.0)
中的数据发送到 SDA 端口。发送 ACK 的波形如下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 286 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
SCL
SDA
(输出)
ACK
0110:停止命令。
发送 STOP 信号。写此命令后,I2C 总线控制器开始发送 STOP 信号。信号发送完成后,硬件
自动将 MSBUSY 状态位清零。STOP 信号的波形如下图所示:
SCL
SDA
(输出)
0111:保留。
1000:保留。
1001:起始命令+发送数据命令+接收 ACK 命令。
此命令为命令 0001、命令 0010、命令 0011 三个命令的组合,下此命令后控制器会依次执行
这三个命令。
1010:发送数据命令+接收 ACK 命令。
此命令为命令 0010、命令 0011 两个命令的组合,下此命令后控制器会依次执行这两个命令。
1011:接收数据命令+发送 ACK(0)命令。
此命令为命令 0100、命令 0101 两个命令的组合,下此命令后控制器会依次执行这两个命令。
注意:此命令所返回的应答信号固定为 ACK(0),不受 MSACKO 位的影响。
1100:接收数据命令+发送 NAK(1)命令。
此命令为命令 0100、命令 0101 两个命令的组合,下此命令后控制器会依次执行这两个命令。
注意:此命令所返回的应答信号固定为 NAK(1),不受 MSACKO 位的影响。
17.2.3
I2C 主机辅助控制寄存器(I2CMSAUX)
符号
地址
I2CMSAUX
FE88H
B7
B6
B5
B4
B3
B2
B1
B0
-
-
-
-
-
-
-
WDTA
WDTA:主机模式时 I C 数据自动发送允许位
0:禁止自动发送
1:使能自动发送
若自动发送功能被使能,当 MCU 执行完成对 I2CTXD 数据寄存器的写操作后,I2C 控制器会自动触
发“1010”命令,即自动发送数据并接收 ACK 信号。
2
17.2.4
I2C 主机状态寄存器(I2CMSST)
符号
地址
I2CMSST
FE82H
B7
B6
B5
B4
B3
B2
B1
B0
MSBUSY
MSIF
-
-
-
-
MSACKI
MSACKO
MSBUSY:主机模式时 I C 控制器状态位(只读位)
0:控制器处于空闲状态
1:控制器处于忙碌状态
当 I2C 控制器处于主机模式时,在空闲状态下,发送完成 START 信号后,控制器便进入到忙碌状态,
忙碌状态会一直维持到成功发送完成 STOP 信号,之后状态会再次恢复到空闲状态。
MSIF:主机模式的中断请求位(中断标志位)。当处于主机模式的 I2C 控制器执行完成寄存器 I2CMSCR
2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 287 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
中 MSCMD 命令后产生中断信号,硬件自动将此位 1,向 CPU 发请求中断,响应中断后 MSIF 位必
须用软件清零。
MSACKI:主机模式时,发送“0011”命令到 I2CMSCR 的 MSCMD 位后所接收到的 ACK 数据。
MSACKO:主机模式时,准备将要发送出去的 ACK 信号。当发送“0101”命令到 I2CMSCR 的 MSCMD
位后,控制器会自动读取此位的数据当作 ACK 发送到 SDA。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 288 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
17.3 I2C 从机模式
17.3.1
I2C 从机控制寄存器(I2CSLCR)
符号
地址
B7
B6
B5
B4
B3
B2
B1
B0
I2CSLCR
FE83H
-
ESTAI
ERXI
ETXI
ESTOI
-
-
SLRST
ESTAI:从机模式时接收到 START 信号中断允许位
0:禁止从机模式时接收到 START 信号时发生中断
1:使能从机模式时接收到 START 信号时发生中断
ERXI:从机模式时接收到 1 字节数据后中断允许位
0:禁止从机模式时接收到数据后发生中断
1:使能从机模式时接收到 1 字节数据后发生中断
ETXI:从机模式时发送完成 1 字节数据后中断允许位
0:禁止从机模式时发送完成数据后发生中断
1:使能从机模式时发送完成 1 字节数据后发生中断
ESTOI:从机模式时接收到 STOP 信号中断允许位
0:禁止从机模式时接收到 STOP 信号时发生中断
1:使能从机模式时接收到 STOP 信号时发生中断
SLRST:复位从机模式
17.3.2
I2C 从机状态寄存器(I2CSLST)
符号
地址
I2CSLST
FE84H
B7
B6
B5
B4
B3
B2
B1
B0
SLBUSY
STAIF
RXIF
TXIF
STOIF
-
SLACKI
SLACKO
SLBUSY:从机模式时 I C 控制器状态位(只读位)
0:控制器处于空闲状态
1:控制器处于忙碌状态
当 I2C 控制器处于从机模式时,在空闲状态下,接收到主机发送 START 信号后,控制器会继续检测
之后的设备地址数据,若设备地址与当前 I2CSLADR 寄存器中所设置的从机地址相同时,控制
器便进入到忙碌状态,忙碌状态会一直维持到成功接收到主机发送 STOP 信号,之后状态会再次
恢复到空闲状态。
STAIF:从机模式时接收到 START 信号后的中断请求位。从机模式的 I2C 控制器接收到 START 信号后,
硬件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 STAIF 位必须用软件清零。STAIF 被置
1 的时间点如下图所示:
2
SCL
SDA
(输入)
STAIF在
此处被置1
RXIF:从机模式时接收到 1 字节的数据后的中断请求位。从机模式的 I2C 控制器接收到 1 字节的数据后,
在第 8 个时钟的下降沿时硬件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 RXIF 位必须
用软件清零。RXIF 被置 1 的时间点如下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 289 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
SCL
SDA
(输入)
D7
D6
D5
D4
D3
D2
D1
D0
ACK
RXIF在此处被置1
TXIF:从机模式时发送完成 1 字节的数据后的中断请求位。从机模式的 I2C 控制器发送完成 1 字节的数
据并成功接收到 1 位 ACK 信号后,在第 9 个时钟的下降沿时硬件会自动将此位置 1,并向 CPU 发
请求中断,响应中断后 TXIF 位必须用软件清零。TXIF 被置 1 的时间点如下图所示:
SCL
SDA
(输出)
D7
D6
D5
D4
D3
D2
D1
D0
ACK
TXIF在此处被置1
STOIF:从机模式时接收到 STOP 信号后的中断请求位。从机模式的 I2C 控制器接收到 STOP 信号后,硬
件会自动将此位置 1,并向 CPU 发请求中断,响应中断后 STOIF 位必须用软件清零。STOIF 被置 1
的时间点如下图所示:
SCL
SDA
(输入)
STOIF在
此处被置1
SLACKI:从机模式时,接收到的 ACK 数据。
SLACKO:从机模式时,准备将要发送出去的 ACK 信号。
SCL
SDA
(输入)
A7
起始信号
深圳国芯人工智能有限公司
A6
A5
A4
A3
设备地址
国内分销商电话: 0513-5501 2928/2929/2966
A2
A1
R/W
ACK
0:主机写,从机读
读/写 1:主机读,从机写
传真: 0513-5501 2926/2956/2947
- 290 -
STC8F1K 系列技术手册
17.3.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
I2C 从机地址寄存器(I2CSLADR)
符号
地址
I2CSLADR
FE85H
B7
B6
B5
B4
B3
B2
B1
I2CSLADR[7:1]
B0
MA
I2CSLADR[7:1]:从机设备地址
当 I2C 控制器处于从机模式时,控制器在接收到 START 信号后,会继续检测接下来主机发送出的设
备地址数据以及读/写信号。当主机发送出的设备地址与 I2CSLADR[7:1]中所设置的从机设备地
址相同时,控制器才会向 CPU 发出中断求,请求 CPU 处理 I2C 事件;否则若设备地址不同,I2C
控制器继续监控,等待下一个起始信号,对下一个设备地址继续比较。
MA:从机设备地址比较控制
0:设备地址必须与 I2CSLADR[7:1]相同
1:忽略 I2CSLADR[7:1]中的设置,接受所有的设备地址
17.3.4
I2C 数据寄存器(I2CTXD,I2CRXD)
符号
地址
I2CTXD
FE86H
I2CRXD
B7
B6
B5
B4
B3
B2
B1
B0
FE87H
I2CTXD 是 I C 发送数据寄存器,存放将要发送的 I2C 数据
I2CRXD 是 I2C 接收数据寄存器,存放接收完成的 I2C 数据
2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 291 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
17.4 范例程序
I2C 主机模式访问 AT24C256(中断方式)
17.4.1
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
P_SW2
=
#define
#define
#define
#define
#define
#define
#define
#define
I2CCFG
I2CMSCR
I2CMSST
I2CSLCR
I2CSLST
I2CSLADR
I2CTXD
I2CRXD
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
SDA
SCL
=
=
P1^4;
P1^5;
bit
busy;
(*(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)
(*(unsigned char volatile xdata *)0xfe87)
void I2C_Isr() interrupt 24
{
_push_(P_SW2);
P_SW2 |= 0x80;
if (I2CMSST & 0x40)
{
I2CMSST &= ~0x40;
busy = 0;
}
_pop_(P_SW2);
}
void Start()
{
busy = 1;
I2CMSCR = 0x81;
深圳国芯人工智能有限公司
0xba;
//清中断标志
//发送 START 命令
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 292 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
while (busy);
}
void SendData(char dat)
{
I2CTXD = dat;
busy = 1;
I2CMSCR = 0x82;
while (busy);
}
void RecvACK()
{
busy = 1;
I2CMSCR = 0x83;
while (busy);
}
char RecvData()
{
busy = 1;
I2CMSCR = 0x84;
while (busy);
return I2CRXD;
}
void SendACK()
{
I2CMSST = 0x00;
busy = 1;
I2CMSCR = 0x85;
while (busy);
}
void SendNAK()
{
I2CMSST = 0x01;
busy = 1;
I2CMSCR = 0x85;
while (busy);
}
void Stop()
{
busy = 1;
I2CMSCR = 0x86;
while (busy);
}
//写数据到数据缓冲区
//发送 SEND 命令
//发送读 ACK 命令
//发送 RECV 命令
//设置 ACK 信号
//发送 ACK 命令
//设置 NAK 信号
//发送 ACK 命令
//发送 STOP 命令
void Delay()
{
int i;
for (i=0; i X:0100H
汇编代码
;测试工作频率为 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
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
MOV
MOV
MOV
MOV
DPS,#00100000B
DPTR,#1000H
DPTR,#0103H
DPS,#10111000B
MOV
R7,#4
CLR
MOVC
A
A,@A+DPTR
MOVX
@DPTR,A
MAIN:
;使能 TSL,并选择 DPTR0
;将 1000H 写入 DPTR0 后选择 DPTR1 为 DPTR
;将 0103H 写入 DPTR1 中
;设置 DPTR1 为递减模式,DPTR0 为递加模式,使能 TSL
;AU0 和 AU1,并选择 DPTR0 为当前的 DPTR
;设置数据复制个数
COPY_NEXT:
深圳国芯人工智能有限公司
;
;从 DPTR0 所指的程序空间读取数据,
;完成后 DPTR0 自动加 1 并将 DPTR1 设置为 DPTR
;将 ACC 的数据写入到 DPTR1 所指的 XDATA 中,
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 328 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
DJNZ
R7,COPY_NEXT
SJMP
$
技术支持: 13922829991
选型顾问: 13922805190
;完成后 DPTR1 自动减 1 并将 DPTR0 设置为 DPTR
;
END
18.2.2
示例代码 2
将扩展 RAM 的 0100H~0103H 中的数据依次发送到 P0 口
汇编代码
;测试工作频率为 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
0000H
MAIN
ORG
0100H
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
SP, #5FH
P0M0, #00H
P0M1, #00H
P1M0, #00H
P1M1, #00H
P2M0, #00H
P2M1, #00H
P3M0, #00H
P3M1, #00H
P4M0, #00H
P4M1, #00H
P5M0, #00H
P5M1, #00H
CLR
MOV
MOV
MOV
SETB
MOV
MOVX
MOV
MOVX
MOV
MOVX
MOV
MOVX
EA
TA,#0AAH
TA,#55H
DPS,#00001000B
EA
DPTR,#0100H
A,@DPTR
P0,A
A,@DPTR
P0,A
A,@DPTR
P0,A
A,@DPTR
MAIN:
深圳国芯人工智能有限公司
;关闭中断
;写入 DPS 写保护触发命令 1
;写入 DPS 写保护触发命令 2
;DPTR0 递增,单独使能 AU0,并选择 DPTR0
;打开中断
;将 0100H 写入 DPTR0 中
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
;数据输出到 P0 口
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
;数据输出到 P0 口
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
;数据输出到 P0 口
;从 DPTR0 所指的 XRAM 读取数据后 DPTR0 自动加 1
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 329 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
P0,A
SJMP
$
技术支持: 13922829991
选型顾问: 13922805190
;数据输出到 P0 口
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 330 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录A 编译器(汇编器)/仿真器使用指南
A:STC 单片机应使用何种编译器/汇编器?
Q:任何老式的 8051 编译器/汇编器都可以支持,现流行使用 Keil C51
A:Keil 环境中,应如何包含头文件
Q:按照下面图示的步骤安装完驱动和头文件后,新建项目时选择 STC 相应的单片机型号,在源文件中
直 接 使 用 “ #include ” 即 可 完 成 头 文 件 的 包 含 。 如 果 新 建 项 目 时 选 择 的 Intel 的
8052/87C52/87C54/87C58 或 Philips 的 P87C52/P87C54/P87C58 编译,头文件包含即可,不过
STC 新增的特殊功能寄存器则需要用户自己声明。
1、安装 Keil 版本的仿真驱动
如上图,首先选择“Keil 仿真设置”页面,点击“添加 MCU 型号到 Keil 中”,在出现的如下的目录选择
窗口中,定位到 Keil 的安装目录(一般可能为“C:\Keil\”),
“确定”后出现下图中右边所示的提示信
息,表示安装成功。添加头文件的同时也会安装 STC 的 Monitor51 仿真驱动 STCMON51.DLL,驱动与
头文件的的安装目录如上图所示。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 331 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
2、在 Keil 中创建项目
若第一步的驱动安装成功,则在 Keil 中新建项目时选择芯片型号时,便会有“STC MCU Database”的选
择项,如下图
然后从列表中选择响应的 MCU 型号,我们在此选择“STC8A8K64S4A12”的型号,点击“确定”完成
选择
添加源代码文件到项目中,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 332 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
保存项目,若编译无误,则可以进行下面的项目设置了
附加说明一点:
当创建的是 C 语言项目,且有将启动文件“STARTUP.A51”添加到项目中时,里面有一个命名为
“IDATALEN”的宏定义,它是用来定义 IDATA 大小的一个宏,默认值是 128,即十六进制的 80H,同
时它也是启动文件中需要初始化为 0 的 IDATA 的大小。所以当 IDATA 定义为 80H,那么 STARTUP.A51
里面的代码则会将 IDATA 的 00-7F 的 RAM 初始化为 0;同样若将 IDATA 定义为 0FFH,则会将 IDATA
的 00-FF 的 RAM 初始化为 0。
虽然 STC8F1K 系列的单片机的 IDATA 大小为 256 字节(00-7F 的 DATA 和 80H-FFH 的 IDATA),但由
于在 RAM 的最后 17 个字节有写入 ID 号以及相关的测试参数,若用户在程序中需要使用这一部分数据,
则一定不要将 IDATALEN 定义为 256。
3、项目设置,选择 STC 仿真驱动
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 333 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
如上图,首先进入到项目的设置页面,选择“Debug”设置页,第 2 步选择右侧的硬件仿真“Use …”,
第 3 步,在仿真驱动下拉列表中选择“STC Monitor-51 Driver”项,然后点击“Settings”按钮,进入下
面的设置画面,对串口的端口号和波特率进行设置,波特率一般选择 115200。到此设置便完成了。
4、创建仿真芯片
准备一颗 STC8A 系列或者 STC8F 系列的芯片,并通过下载板连接到电脑的串口,然后如上图,选择正
确的芯片型号,然后进入到“Keil 仿真设置”页面,点击相应型号的按钮,当程序下载完成后仿真器便
制作完成了。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 334 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
5、开始仿真
将制作完成的仿真芯片通过串口与电脑相连接。
将前面我们所创建的项目编译至没有错误后,按“Ctrl+F5”开始调试。
若硬件连接无误的话,将会进入到类似于下面的调试界面,并在命令输出窗口显示当前的仿真驱动版本
号和当前仿真监控代码固件的版本号
断点设置的个数目前最大允许 20 个(理论上可设置任意个,但是断点设置得过多会影响调试的速度)。
6、仿真过程中,寄存器的查看
在仿真的过程中,可查看 MCU 相关的寄存器。所有的寄存器列表在“Debug”菜单的底端。如下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 335 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在上图“Debug”菜单的最底端,还有一个黑色的小三角,这表示还有隐藏的项目(主要是由于显示版
面大小的原因)
将鼠标仿真小三角上即可自动拖出所有的项目,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 336 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
仿真注意事项:
1、 仿真监控程序占用 P3.0/P3.1 两个端口,但不占用串口 1,用户可以将串口 1 切换到 P3.6/P3.7 或
者 P1.6/P1.7 再使用
2、 仿真监控程序占用内部扩展 RAM(XDATA)的最后 768 字节,用户不可对这个区域的 XDATA 进
行写操作
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 337 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录B 如何让传统的 8051 单片机学习板可仿真
传统的 8051 单片机学习板不具有仿真功能,让传统的 8051 单片机学习板可仿真需要借助转换板,
转换板的实物图如下图所示,转换后的引脚排布与传统 8051 的脚位基本一致, 从而可以实现标准 8051
学习板的仿真功能。
下图是转换板的原理图和 PCB 板图
1
2
3
4
R3
20 1R
D
U1
P1.6
P1.5
P1.4
P1.3
P1.2
P4.7
P1.1
P1.0
P0.7
P0.6
P0.5
P5.3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
G ND
P1 .7
P5 .4
V CC
V RE F
G ND
P4 .0
P3 .0
P3 .1
P3 .2
P3 .3
P3 .4
P5 .0
48
47
46
45
44
43
42
41
40
39
38
37
P5 .2
P0 .4
P0 .3
P0 .2
P0 .1
P0 .0
P4 .6
A LE/P4 .5
P2 .7
P2 .6
P2 .5
P2 .4
U2
ST C8 G-4 8
P2.0
P2.1
P2.2
P2.3
13
14
V CC 1 5
16
17
18
19
20
21
22
23
24
P5.1
P3.5
P3.6
P4.2/WR
P3.7
P4.1
P4.4/RD
P4.3
R ST
40
39
38
37
36
35
34
33
32
P4 .7 3 1
30
P4 .6 2 9
28
27
26
25
24
23
22
21
25
26
27
28
29
30
31
32
33
34
35
36
C
P1 .0
P1 .1
P1 .2
P1 .3
P1 .4
P1 .5
P1 .6
P1 .7
R ST
R XD /P3 . 0
TX D /P 3 . 1
INT 0 /P3 . 2
INT 1 /P3 . 3
T0 /P 3 . 4
T1 /P 3 . 5
W R /P3 . 6
R D/P3 .7
X TA L2
X TA L1
G ND
9
8
7
6
5
4
3
2
1
12
11
10
D
V CC
P0 .0 /A D 0
P0 .1 /A D 1
P0 .2 /A D 2
P0 .3 /A D 3
P0 .4 /A D 4
P0 .5 /A D 5
P0 .6 /A D 6
P0 .7 /A D 7
P4 .6 /E A
P4 .5 /A LE
P4 .4 /P SEN
P2 .7 /A 1 5
P2 .6 /A 1 4
P2 .5 /A 1 3
P2 .4 /A 1 2
P2 .3 /A 1 1
P2 .2 /A 1 0
P2 .1 /A 9
P2 .0 /A 8
C
D IP 4 0
R4
10 1R
R7
10 1R
P3 .6 /W R-P4 .2
P3 .7 /R D -P 4 . 4
B
V CC
R 1,C 1
可不焊
B
R5
10 1R
V CC
R6
10 1R
R1
10 K
R ST
R2
20 1R
SW 1
SM 3 X6
A
C2
0.1u
C3
10 u
C1
10 u
Title
A
Size
N u mb er
R ev is io n
A
D ate:
File:
1
2 1 -F eb -2 0 2 0
Sh eet o f
C :\U s ers \Liu \D o w n lo ad s \ST C8 G-8 9 C5 2D-2
raw
0 2n0 B
-2y-1: 9 . d d b
2
3
4
该转换板可进行 STC8G 系列 LQFP48 转 STC89C52RC/STC89C58RD+系列仿真用。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 338 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下图为转换板功能示意图
转
STC8G2K64S4 - LQFP48
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
STC89C52RC – PDIP40
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
T3CLKO/AD5/ADC13/PWM05/P0.5
PWMFLT2/T4/AD6/ADC14/PWM06/P0.6
PWMFLT3/T4CLKO/AD7/PWM07/P0.7
RST(NC)
INT4/RxD/PWM30/P3.0
TxD/PWM31/P3.1
I2CSCL_4/SCLK_4/INT0/PWM32/P3.2
I2CSDA_4/MISO_4/INT1/PWM33/P3.3
CMPO/MOSI_4/ECI_2/T1CLKO/T0/PWM34/P3.4
PWMFLT/CCP0_2/SS_4/T0CLKO/T1/PWM35/P3.5
CCP1_2/CMP-/RxD_2/INT2/PWM36/P3.6
/CCP2/CCP2_2/CMP+TxD_2/INT3/PWM37/P3.7
XTAL2(NC)
XTAL1(NC)
GND
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
VCC
P0.0/PWM00/ADC8/AD0/RxD3
P0.1/PWM01/ADC9/AD1/TxD3
P0.2/PWM02/ADC10/AD2/RxD4
P0.3/PWM03/ADC11/AD3/TxD4
P0.4/PWM04/ADC12/AD4/T3
P0.5/PWM05/ADC13/AD5/T3CLKO
P0.6/PWM06/ADC14/AD6/T4/PWMFLT2
P0.7/PWM07/AD7/T4CLKO/PWMFLT3
EA(P4.7/PWM47/TxD2_2)
ALE(P4.5/PWM45)
PSEN(P4.6/PWM46/RD/RxD2_2)
P2.7/PWM27/A15/CCP2_3
P2.6/PWM26/A14/CCP1_3
P2.5//PWM25/A13/CCP0_3/I2CSCL_2/SCLK_2
P2.4/PWM24/A12/ECI_3/I2CSDA_2/MISO_2
P2.3/PWM23/A11/MOSI_2
P2.2/PWM22/A10/SS_2
P2.1/PWM21/A9
P2.0/PWM20/A8
注意:
由于内置高精准 R/C 时钟,因此不需要外部晶振,XTAL1 和 XTAL2 是空的
WR 和 RD 是( WR/P4.2 和 RD/P4.4),而不是传统的(WR/P3.6 和 RD/P3.7)。
(转换板中,P4.2 与 P3.6 连接在一起,P4.4 与 P3.7 连接在一起。当用户需要用此转换板访
问外部总线时,需要将 P3.6 和 P3.7 设置为高阻输入模式,从而使 P4.2 和 P4.4 正常输出总
线读写信号;若不需要访问外部总线,则需将 P4.2 和 P4.4 设置高阻输入模式,3.6 和 P3.7
即为普通 I/O。)
由于 STC8G 系列 MCU 是低电平复位,与传统 8051 的高电平复位不兼容,因此 RST 管脚是悬空,
而用转换板上的复位按键加复位电路取代
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 339 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录C STC-USB 驱动程序安装说明
Windows XP 安装方法
打开 V6.79 版(或者更新的版本)的 STC-ISP 下载软件,下载软件会自动将驱动文件复制到相关的系统
目录
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 340 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
插入 USB 设备,系统找到设备后自动弹出如下对话框,选择其中的“否,暂时不”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 341 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的对话框中选择“自动安装软件(推荐)”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 342 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在弹出的下列对话框中,选择“仍然继续”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 343 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
接下系统会自动安装驱动,如下图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 344 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
出现下面的的对话框表示驱动安装完成
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 345 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
此时,之前打开的 STC-ISP 下载软件中的串口号列表会自动选择所插入的 USB 设备,并显示设备名称
为“STC USB Writer (USB1)” ,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 346 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
Windows 7(32 位)安装方法
打开 V6.79 版(或者更新的版本)的 STC-ISP 下载软件,下载软件会自动将驱动文件复制到相关的系统
目录
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 347 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
插入 USB 设备,系统找到设备后会自动安装驱动。安装完成后会有如下的提示框。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 348 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
此时,之前打开的 STC-ISP 下载软件中的串口号列表会自动选择所插入的 USB 设备,并显示设备名称
为“STC USB Writer (USB1)”,如下图:
注:若 Windows 7 下,系统并没有自动安装驱动,则驱动的安装方法请参考 Windows 8(32 位)的安装
方法
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 349 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
Windows 7(64 位)安装方法
由于 Windows7 64 位操作系统在默认状态下,对于没有数字签名的驱动程序是不能安装成功的。所以在
安装 STC-USB 驱动前,需要按照如下步骤,暂时跳过数字签名,即可顺利安装成功。
首先重启电脑,并一直按住 F8,直到出现下面启动画面
选择“禁用驱动程序签名强制”。启动后即可暂时关闭数字签名验证功能
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 350 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
插入 USB 设备,并打开“设备管理器”
。找到设备列表中带黄色感叹号的 USB 设备,在设备的右键菜单
中,选择“更新驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 351 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的的对话框中选择“浏览计算机以查找驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 352 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
单击下面对话框中的“浏览”按钮,找到之前 STC-USB 驱动程序的存放目录(例如:之前的示例目录
为 “ D:\STC-USB ” , 用 户 将 路 径 定 位 到 实 际 的 解 压 目 录 )
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 353 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
驱动程序开始安装时,会弹出如下对话框,选择“始终安装此驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 354 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
接下来,系统会自动安装驱动,如下图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 355 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
出现下面的的对话框表示驱动安装完成
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 356 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
此时在设备管理器中,之前带有黄色感叹号的设备,此时会显示为“STC USB Low Speed Writer”的设
备名
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 357 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在之前打开的 STC-ISP 下载软件中的串口号列表会自动选择所插入的 USB 设备,并显示设备名称为“STC
USB Writer (USB1)”,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 358 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
Windows 8(32 位)安装方法
打开 V6.79 版(或者更新的版本)的 STC-ISP 下载软件(由于权限的原因,在 Windows 8 中下载软件不
会将驱动文件复制到相关的系统目录,需要用户手动安装。首先从 STC 官方网站下载
“stc-isp-15xx-v6.79.zip”
(或更新版本),下载后解压到本地磁盘,则 STC-USB 的驱动文件也会被解压
到当前解压目录中的“STC-USB Driver”中(例如将下载的压缩文件“stc-isp-15xx-v6.79.zip”解压到“F:\”,
则 STC-USB 驱动程序在“F:\STC-USB Driver”目录中))
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 359 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
插入 USB 设备,并打开“设备管理器”
。找到设备列表中带黄色感叹号的 USB 设备,在设备的右键菜单
中,选择“更新驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 360 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的的对话框中选择“浏览计算机以查找驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 361 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
单击下面对话框中的“浏览”按钮,找到之前 STC-USB 驱动程序的存放目录(例如:之前的示例目录
为“F:\STC-USB Driver”
,用户将路径定位到实际的解压目录)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 362 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
驱动程序开始安装时,会弹出如下对话框,选择“始终安装此驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 363 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
接下来,系统会自动安装驱动,如下图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 364 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
出现下面的的对话框表示驱动安装完成
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 365 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
此时在设备管理器中,之前带有黄色感叹号的设备,此时会显示为“STC USB Low Speed Writer”的设
备名
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 366 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在之前打开的 STC-ISP 下载软件中的串口号列表会自动选择所插入的 USB 设备,并显示设备名称为“STC
USB Writer (USB1)”,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 367 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
Windows 8(64 位)安装方法
由于 Windows8 64 位操作系统在默认状态下,对于没有数字签名的驱动程序是不能安装成功的。所以在
安装 STC-USB 驱动前,需要按照如下步骤,暂时跳过数字签名,即可顺利安装成功。
首先将鼠标移动到屏幕的右下角,选择其中的“设置”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 368 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后在设置界面中选择“更改电脑设置”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 369 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在电脑设置中,选择“常规”属性页中“高级启动”项下面的“立即启动”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 370 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的界面中,选择“疑难解答”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 371 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后选择“疑难解答”中的“高级选项”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 372 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的“高级选项”界面中,选择“启动设置”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 373 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的“启动设置”界面中,单击“重启”按钮对电脑进行重新启动
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 374 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在电脑重新启动后会自动进入如下图所示的“启动设置”界面,按数字键“7”或者按功能键“F7”选
择“禁用驱动程序强制签名”进行启动
启动到 Windows 8 后,按照 Windows 8(32 位)的安装方法即可完成驱动的安装
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 375 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
Windows 8.1(64 位)安装方法
Windows 8.1 与 Windows 8 进入高级启动菜单的方法不一样,在此专门进行说明。
首先将鼠标移动到屏幕的右下角,选择其中的“设置”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 376 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后在设置界面中选择“更改电脑设置”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 377 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在电脑设置中,选择“更新和恢复”
(这里与 Windows 8 不一样,Windows 8 选择的是“常规”)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 378 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在更新和恢复页面中选择“恢复”属性页,单击“高级启动”项下面的“立即启动”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 379 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
接下来的操作与 Window 8 的步骤相同
在下面的界面中,选择“疑难解答”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 380 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后选择“疑难解答”中的“高级选项”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 381 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的“高级选项”界面中,选择“启动设置”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 382 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在下面的“启动设置”界面中,单击“重启”按钮对电脑进行重新启动
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 383 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在电脑重新启动后会自动进入如下图所示的“启动设置”界面,按数字键“7”或者按功能键“F7”选
择“禁用驱动程序强制签名”进行启动
启动到 Windows 8 后,按照 Windows 8(32 位)的安装方法即可完成驱动的安装
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 384 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
Windows10(64 位)安装方法
由于 Windows10 64 位操作系统在默认状态下,对于没有数字签名的驱动程序是不能安装成功的。所以
在安装 STC-USB 驱动前,需要按照如下步骤,暂时跳过数字签名,即可顺利安装成功。
安装驱动前需要从 STC 官网下载的 STC-ISP 下载软件压缩包中将“STC-USB Driver”文件夹解压缩到硬
盘中。将具有 USB 下载功能的芯片准备好,但先不要连接电脑
鼠标右键点击“开始”菜单,选择“设置”选项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 385 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后在设置界面中选择“更新和安全”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 386 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后在设置界面中选择“恢复”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 387 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在恢复界面中,点击“高级启动”项中的“立即重新启动”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 388 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在电脑重启前,系统会先进入如下的启动菜单,选择“疑难解答”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 389 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在疑难解答界面中选择“高级选项”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 390 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后选择“查看更多恢复选项”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 391 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
选择“启动设置”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 392 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
出现如下画面后,点击“重启”按钮重启电脑
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 393 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
电脑重启后,会弹出“启动设置”界面,按“F7”按钮来选择“禁止驱动程序强制签名”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 394 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
电脑启动完成后,将准备好的芯片用 USB 线与电脑相连,并打开“设备管理器”,此时由于驱动还没有
开始安装,所以在设备管理器中会显示为一个带感叹号的未知设备
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 395 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
鼠标右键单击未知设备,选择右键菜单中的“更新驱动程序”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 396 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在弹出的驱动安装程序选择画面中,选择“浏览我的计算机以查找驱动程序软件”项
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 397 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在如下界面中,点击“浏览”按钮
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 398 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
找到之前解压缩到硬盘中的“STC-USB Driver”目录,选择目录中的“64”目录,并确定
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 399 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
点击“下一步”开始安装驱动
驱动安装的过程中,会弹出如下的警告画面,选择“始终安装此驱动程序软件”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 400 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
出现下面的画面时,驱动程序就安装成功了
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 401 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在回到 STC-ISP 的下载软件,此时“串口号”的下拉列表中已自动选择了
“STC USB Writer (USB1)”,即可使用 USB 进行 ISP 下载了
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 402 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录D USB 下载步骤演示
1、首先参考 P5.1.5 章的应用线路图连接好单片机,并将目标芯片的 P3.2 口连接到 Gnd,然后将系统连
接到 PC 端的 USB 端口上。打开 ISP 下载软件,即可在下载软件的串口号中自动搜索到“STC USB Writer
(USB1)”的 USB 设备
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 403 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
2、打开用户代码程序
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 404 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
3、点击“下载/编程”按钮开始下载用户代码
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 405 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
4、直到提示“操作成功”
,表示程序代码下载完成。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 406 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录E RS485 自动控制或 I/O 口控制线路图
1、利用 USB 转串口连接电脑的 RS485 控制下载线路图(自动控制或 I/O 口控制)
2、利用 RS232 转串口连接电脑的 RS485 控制下载线路图(自动控制或 I/O 口控制)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 407 -
STC8F1K 系列技术手册
附录F
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
STC 工具使用说明书
概述
F.1
U8W/U8W-Mini 是一款集在线联机下载和脱机下载于一体的编程工具系列。STC 通用 USB 转串口工具则
是支持在线下载与在线仿真的编程工具。
工具类型
在线下载
脱机下载
烧录座下载
在线仿真
价格(人民币)
U8W
支持
支持
支持
需设置直通模式
100 元
U8W-Mini
支持
支持
不支持
需设置直通模式
50 元
通用 USB 转串口
支持
不支持
不支持
支持
30 元
F.2
系统可编程(ISP)流程说明
单片机彻底没电
给单片机上电复位
外部手动复位,单片机也从系
【冷启动】
统 ISP 监控程序区启动。
单片机运行系统 ISP 监
控程序
单片机运行 ISP 监控程序,检测有无合法命令流,占
时几十毫秒到几百毫秒,如无合法下载命令流,则立
即跑用户程序。
如果已设置[P3.2, P3.3] = [0, 0],才会判断是否下载用户程
检测 P3.0 有没有合
序,则冷启动后,如[P3.2, P3.3] ≠ [0, 0],则直接跑用户程
法下载命令流
序,只会占时 50μs,可忽略不计。建议用户选择[P3.2, P3.3]
否
不同时为[0, 0],则立即跑用户程序,跨过系统 ISP 监控程
是
序。【注 1】
下载用户程序进入用户
程序区
【冷启动编程】:单片机首先处于停电状态,用户必须
软复位到用户程序区,
先点击 PC 端 STC-ISP 控制软件的【下载/编程】按钮
发送下载命令流,再给单片机上电。
运行用户程序
注意:因 [P3.0, P3.1] 作下载/仿真用(下载/仿真接口仅可用 [P3.0, P3.1] ),故建议用户将串口 1 放在
P3.6/P3.7 或 P1.6/P1.7 ,若用户不想切换,坚持使用 P3.0/P3.1 工作或作为串口 1 进行通信,则务必在
下载程序时,在软件上勾选“下次冷启动时,P3.2/P3.3 为 0/0 时才可以下载程序”。【注 1】
【注 1】:STC15,STC8F1K 系列及以后新出的芯片的烧录保护引脚为 P3.2/P3.3,之前早期芯片的烧录
保护引脚为 P1.0/P1.1。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 408 -
STC8F1K 系列技术手册
F.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
USB 型联机/脱机下载工具 U8W/U8W-Mini
U8W/U8W-Min 的应用范围可支持 STC 目前的全部系列的 MCU, Flash 程序空间和 EEPROM 数据空间不
受限制。支持包括如下和即将推出的 STC 全系列芯片:
脱机下载工具可以在脱离电脑的情况下进行下载工作,可用于批量生产和远程升级。脱机下载板可支持
自动增量、下载次数限制以及用户程序加密后传输等多种功能。
下图为 U8W 工具的正反面图以及 U8W-Mini 的正反面图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 409 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
另外还有如下的一些线材与工具相搭配使用,如:
(1)两头公的 USB 连接线(如下图左所示)及 USB-Micro 连接线(如下图右所示):
注意:此 USB 线为我公司特别定制的 USB 加强线,可确保直接用 USB 供电时能够下载成功。而市面上
一些比较劣质的两头公的 USB 线,内阻太大而导致压降很大(如 USB 空载时的电压为 5.0V 左右,当使
用劣质的 USB 线连接 U8W/U8W-Mini/U8/U8-Mini,到我们的下载板上的电压可能降到 4.2V 或者更低,
从而导致芯片处于复位状态而无法成功下载)。
(2)U8W/U8W-Mini 与用户系统连接的下载连接线(即 U8W/U8W-Mini 与用户板上的目标单片机的连接线),如
下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 410 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
U8W/U8W-Mini 与
U8W/U8W-Mini 给
用户系统给
用户系统各自独立
用户系统供电的连
U8W/U8W-Mini
供电的连接线
接线
供电的连接线
F.3.1 安装 U8W/U8W-Mini 驱动程序
U8W/U8W-Mini 下载板上使用了一颗 CH340 的 USB 转串口通用芯片。这样可以省去部分没有串口的电
脑必须额外买一个 USB 转串口工具才可下载的麻烦。但 CH340 和其它 USB 转串口工具一样,在使用之
前必须先安装驱动程序。
通过下载 STC-ISP 软件包获取驱动程序
以下是 STC 官网(www.STCMCUDATA.com)提供的 STC-ISP 软件包下载位置:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 411 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载后进行解压,CH340 的驱动安装包路径 stc-isp-15xx-v6.87K\USB to UART Driver\CH340_CH341:
通过 STC 的官方网站或在最新的 STC-ISP 下载软件中手动下载驱动程序
在 STC 的官方网站上或在最新的 STC-ISP 下载软件中手动下载驱动程序,驱动的下载链接为: U8 编程
器 USB 转串口驱动 ( http://www.stcmcu.com/STCISP/CH341SER.exe)。网站上及 STC-ISP 下载软件上
的驱动地址如下图所示:
安装 U8W/U8W-Mini 的驱动程序
驱动程序下载到本机后,直接双击可执行程序并运行,出现下图所示的界面,点击“安装”按钮开始自动安
装驱动:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 412 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后弹出驱动安装成功对话框,点击“确定”按钮完成安装:
然后使用 STC 提供的 USB 连接线将 U8W/U8W-Mini 下载板连接到电脑,打开电脑的设备管理器,在
端口设备类下面,如果有类似“USB-SERIAL CH340 (COMx)”的设备,就表示 U8W/U8W-Mini 可以正常
使用了。如下图所示(不同的电脑,串口号可能会不同):
注意:在后面使用 STC-ISP 下载软件时,选择的串口号必须选择与此相对应的串口号,如下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 413 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
F.3.2 U8W 的功能介绍
下面详细介绍 U8W 工具的各主要接口及功能:
如果单片机在用户系统上,在线烧录/ISP 时必
须连接 P3.0/P3.1/Gnd,在线烧录/ISP 时,目标
单片机的 P3.0/P3.1 不要连到任何其他线路上去
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 414 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
编程接口:根据不同的供电方式,使用不同的下载连接线连接 U8W 下载板和用户系统。
U8W 更新系统程序按键:用于更新 U8W 工具,当有新版本的 U8W 固件时,需要按下此按键对 U8W 的
主控芯片进行更新(注意:必须先将更新/下载选择接口上的拨动开关拨动到升级工具固件)。
脱机下载用户程序按钮:开始脱机下载按钮。首先 PC 将脱机代码下载到 U8W 板上,然后使用下载连接
线将用户系统连接到 U8W,再按下此按钮即可开始脱机下载(每次上电时也会立即开始下载用户代码)。
更新/下载选择接口:当需要对 U8W 的底层固件进行升级时,需将此拨动开关拨到升级工具固件处,当
需通过 U8W 对目标芯片进行烧录程序,则需将拨动开关拨到烧录用户程序处。
(拨动开关连接方式请参考上图)
自动烧录机/分选机接口:是用于控制自动烧录机/分选机进行自动生产的控制接口。
F.3.3 U8W 的在线联机下载使用说明
目标芯片安装于 U8W 锁紧座上并由 U8W 连接电脑进行在线联机下载
首先使用 STC 提供的 USB 连接线将 U8W 连接电脑, 再将目标单片机按如下图所示的方向安装在 U8W 上:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 415 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后使用 STC-ISP 下载软件下载程序,步骤如下:
1
选择单片机型号;
2
选择引脚数,芯片直接安装于 U8W 上下载时,一定要注意选择正确的引脚数,否则将会下载失败;
3
选择 U8W 所对应的串口号;
4
打开目标文件(HEX 格式或者 BIN 格式);
5
设置硬件选项;
6
点击“下载/编程”按钮开始烧录;
7
显示烧录过程的步骤信息,烧录完成提示“操作成功!”。
当信息框中有输出下载板的版本号信息以及外挂 Flash 的相应信息时,表示已正确检测到 U8W 下载工具。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 416 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载的过程中,U8W 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,则 4
个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
目标芯片通过用户系统引线连接 U8W 并由 U8W 连接电脑进行在线联机下载
首先使用 STC 提供的 USB 连接线将 U8W 连接电脑, 再将 U8W 通过下载线与用户系统的目标单片
机相连接, 连接方式如下图所示:
然后使用 STC-ISP 下载软件下载程序,步骤如下:
1. 选择单片机型号;
2. 选择 U8W 所对应的串口号;
3. 打开目标文件(HEX 格式或者 BIN 格式);
4. 设置硬件选项;
5. 点击“下载/编程”按钮开始烧录;
6. 显示烧录过程的步骤信息,烧录完成提示“操作成功!”。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 417 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
当信息框中有输出下载板的版本号信息以及外挂 Flash 的相应信息时,表示已正确检测到 U8W 下载工具。
下载的过程中, U8W 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,则 4
个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
F.3.4 U8W 的脱机下载使用说明
目标芯片安装于 U8W 座锁紧上并通过 USB 连接电脑给 U8W 供电进行脱机下载
使用 USB 给 U8W 供电从而进行脱机下载的步骤如下:
(1)使用 STC 提供的 USB 连接线将 U8W 下载板连接到电脑,如下图:
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 418 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
1.
2.
3.
4.
5.
6.
选择单片机型号;
选择引脚数,芯片直接安装于 U8W 上下载时,一定要注意选择正确的引脚数,否则将会下载失败;
选择 U8W 所对应的串口号;
打开目标文件(HEX 格式或者 BIN 格式);
设置硬件选项;
选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W 下载工
具中。
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
(3)再将目标单片机如下图所示的方向放在 U8W 下载工具, 如下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 419 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
(4)然后按下如下图所示的按钮后松开,即可开始脱机下载:
下载的过程中,U8W 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,则 4 个 LED
会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
脱机下载即插即用烧录功能介绍:
1. 以上步骤完成(1)、(2)步之后 U8W 连接电脑上电时默认处于即插即用烧录状态;
2. 按照第(3)步指示将芯片放入烧录座,在锁紧座扳手的同时,U8W 会自动开始烧录;
3. 通过指示灯显示烧录过程跟烧录结果;
4. 烧录完成后松开座扳手,取出芯片;
5. 重复 2,3,4 步骤可进行连续烧录,省掉按按钮触发烧录的动作。
目标芯片由用户系统引线连接 U8W 并通过 USB 连接电脑给 U8W 供电进行脱机下载
使用 USB 给 U8W 供电从而进行脱机下载的步骤如下:
(1)使用 STC 提供的 USB 连接线将 U8W 下载板连接到电脑,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 420 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
1.
2.
3.
4.
5.
6.
选择单片机型号;
选择引脚数,芯片直接安装于 U8W 上下载时,一定要注意选择正确的引脚数,否则将会下载失败;
选择 U8W 所对应的串口号;
打开目标文件(HEX 格式或者 BIN 格式);
设置硬件选项;
选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W 下载工
具中。
(3)然后使用连接线连接电脑、将 U8W 下载工具以及用户系统(目标单片机)如下图所示的方式连接起
来,并按下图所示的按钮后松开,即可开始脱机下载:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 421 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载的过程中,U8W 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,则 4
个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
目标芯片由用户系统引线连接 U8W 并通过用户系统给 U8W 供电进行脱机下载
(1)首先使用 STC 提供的 USB 连接线将 U8W 下载板连接到电脑,如下图:
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 422 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
软件使用)。
1.
2.
3.
4.
5.
6.
选择单片机型号;
选择引脚数,芯片直接安装于 U8W 上下载时,一定要注意选择正确的引脚数,否则将会下载失败;
选择 U8W 所对应的串口号;
打开目标文件(HEX 格式或者 BIN 格式);
设置硬件选项;
选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W 下载工具
中。
(3)然后按下图所示的方式连接 U8W 与用户系统,给用户系统供电,即可开始脱机下载:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 423 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载的过程中,U8W 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,则 4
个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
目标芯片由用户系统引线连接 U8W 且 U8W 与用户系统各自独立供电进行脱机下载
(1)首先使用 STC 提供的 USB 连接线将 U8W 下载板连接到电脑,如下图:
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 424 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
软件使用)。
1.
2.
3.
4.
5.
6.
选择单片机型号;
选择引脚数,芯片直接安装于 U8W 上下载时,一定要注意选择正确的引脚数,否则将会下载失败;
选择 U8W 所对应的串口号;
打开目标文件(HEX 格式或者 BIN 格式);
设置硬件选项;
选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W 下载工具
中。
(3)然后按下图所示的方式连接 U8W 与用户系统,并将图中所示按钮先按下后松开,准备开始脱机下载,
最后给用户系统上电/开电源, 下载用户程序正式开始:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 425 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载的过程中,U8W 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,则 4
个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
F.3.5 U8W-Mini 的功能介绍
下面详细介绍 U8W-Mini 工具的各主要接口及功能:
拨动开关
USB 接口
Micro-USB 接口
拨到此处升级工具固件
拨到此处烧录用户程序
U8W-Mini 更新
脱机烧录用
编程接口
系统程序按键
户程序按键
User-Vcc: 仅从用户系统给本工具供电
P1.0/P3.2: 接地(设置引脚烧录保护时用)
P1.1/P3.3: 接地(设置引脚烧录保护时用)
深圳国芯人工智能有限公司
S-Vcc: 仅从本工具给用户系统供电
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
S-P3.0: 连接从机的 P.30
S-P3.1: 连接从机的 P.31
Gnd: 地线
- 426 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
编程接口:根据不同的供电方式,使用不同的下载连接线连接 U8W-Mini 下载板和用户系统。
U8W-Mini 更新系统程序按键:用于更新 U8W-Mini 工具,当有新版本的 U8W 固件时,需要按下此按键
对 U8W-Mini 的主控芯片进行更新(注意:必须先将更新/下载选择接口上的拨动开关拨动到升级工具固
件)。
脱机下载用户程序按钮:开始脱机下载按钮。首先 PC 将脱机代码下载到 U8W-Mini 上,然后使用下载
连接线将用户系统连接到 U8W-Mini,再按下此按钮即可开始脱机下载(每次上电时也会立即开始下载
用户代码)。
更新/下载选择接口:当需要对 U8W-Mini 的底层固件进行升级时,需将此拨动开关拨动到升级工具固件
处,当需通过 U8W-Mini 对目标芯片进行烧录程序,则需将拨动开关拨动到烧录用户程序处。
(拨动开关
连接方式请参考上图)
USB 接口:USB 接口与 Micro-USB 接口是相同的功能,用户根据需要连接其中一个接口到电脑即可。
F.3.6 U8W-Mini 的在线联机下载使用说明
目标芯片通过用户系统引线连接 U8W-Mini 并由 U8W-Mini 连接电脑进行在线联机下载
首先使用 STC 提供的 USB 连接线将 U8W-Mini 连接电脑, 再将 U8W-Mini 通过下载线与用户系统的目标单
片机相连接, 连接方式如下图所示:
然后使用 STC-ISP 下载软件下载程序,步骤如下:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 427 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
1. 选择单片机型号;
2. 选择引脚数,芯片直接安装于 U8W-Mini 上下载时,一定要注意选择正确的引脚数,否则将会下载失
败;
3. 选择 U8W-Mini 所对应的串口号;
4. 打开目标文件(HEX 格式或者 BIN 格式);
5. 设置硬件选项;
6. 点击“下载/编程”按钮开始烧录;
7. 显示烧录过程的步骤信息,烧录完成提示“操作成功!”。
当信息框中有输出下载板的版本号信息以及外挂 Flash 的相应信息时,表示已正确检测到 U8W-Mini 下
载工具。
下载的过程中,U8W-Mini 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,
则 4 个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
F.3.7 U8W-Mini 的脱机下载使用说明
目标芯片由用户系统引线连接 U8W-Mini 并通过 USB 连接电脑给 U8W-Mini 供电进行脱机
下载
使用 USB 给 U8W-Mini 供电从而进行脱机下载的步骤如下:
(1)使用 STC 提供的 USB 连接线将 U8W-Mini 下载板连接到电脑,如下图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 428 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
1. 选择单片机型号;
2. 选择引脚数,芯片直接安装于 U8W-Mini 上下载时,一定要注意选择正确的引脚数,否则将会下载失
败;
3. 选择 U8W-Mini 所对应的串口号;
4. 打开目标文件(HEX 格式或者 BIN 格式);
5. 设置硬件选项;
6. 选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W-Mini 下
载工具中。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 429 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
(3)然后使用连接线连接电脑、将 U8W-Mini 下载工具以及用户系统(目标单片机)如下图所示的方式
连接起来,并按下图所示的按钮后松开,即可开始脱机下载:
下载的过程中,U8W-Mini 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,
则 4 个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
目标芯片由用户系统引线连接 U8W-Mini 并通过用户系统给 U8W-Mini 供电进行脱机下载
(1)首先使用 STC 提供的 USB 连接线将 U8W-Mini 下载板连接到电脑,如下图:
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 430 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
1. 选择单片机型号;
2. 选择引脚数,芯片直接安装于 U8W-Mini 上下载时,一定要注意选择正确的引脚数,否则将会下载失
败;
3. 选择 U8W-Mini 所对应的串口号;
4. 打开目标文件(HEX 格式或者 BIN 格式);
5. 设置硬件选项;
6. 选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W-Mini 下
载工具中。
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
(3)然后按下图所示的方式连接 U8W-Mini 与用户系统,用户系统一上电就开始脱机下载:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 431 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载的过程中,U8W-Mini 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,
则 4 个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
目标芯片由用户系统引线连接 U8W-Mini 且 U8W-Mini 与用户系统各自独立供电进行脱机
下载
(1)首先使用 STC 提供的 USB 连接线将 U8W-Mini 下载板连接到电脑,如下图:
(2)在 STC-ISP 下载软件中按如下图所示的步骤进行设置:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 432 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
1. 选择单片机型号;
2. 选择引脚数,芯片直接安装于 U8W-Mini 上下载时,一定要注意选择正确的引脚数,否则将会下载失
败;
3. 选择 U8W-Mini 所对应的串口号;
4. 打开目标文件(HEX 格式或者 BIN 格式);
5. 设置硬件选项;
6. 选择“U8W 脱机/联机”标签,设置脱机编程选项,注意 S-VCC 输出电压与目标芯片工作电压匹配;
点击“将用户程序下载到 U8/U7 编程器以供脱机下载”按钮;
7. 显示设置过程的步骤信息,设置完成提示“操作成功!”。
按照上图的步骤,操作完成后,若下载成功则表示用户代码和相关的设置选项都已下载到 U8W-Mini 下
载工具中。
建议用户用最新版本的 STC-ISP 下载软件(请随时留意 STC 官方网站 http://www.STCMCUDATA.com 中
STC-ISP 下载软件的更新,强烈建议用户在官方网站 http://www.STCMCUDATA.com 中下载最新版本的
软件使用)。
(3)然后按下图所示的方式连接 U8W-Mini 与用户系统,并将图中所示按钮先按下后松开,准备开始脱
机下载, 最后给用户系统上电/开电源, 下载用户程序正式开始:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 433 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
下载的过程中,U8W-Mini 下载工具上的 4 个 LED 会以跑马灯的模式显示。下载完成后,若下载成功,
则 4 个 LED 会同时亮、同时灭;若下载失败,则 4 个 LED 全部不亮。
F.3.8 制作/更新 U8W/U8W-Mini
制作 U8W/U8W-Mini 下载母片的过程类似,为节约篇幅,下文以 U8W 为例,详述如何制作 U8W 下载母片。
在制作 U8W 下载母片之前需要将 U8W 下载板的“更新/下载选择接口”拨到“升级工具固件”,如下图所
示:
然后在 STC-ISP 下载程序中的“U8W 脱机/联机”页面中点击“将 U8W/U8-5V/U8-3V 设置为脱机下载主控
芯片”按钮,如下图:(注意:一定要选择 U8W 所对应的串口)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 434 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在出现如下画面表示 U8W 控制芯片制作完成:
制作完成后,一定不要忘记将 U8W 的“更新/下载选择接口”拨回到“烧录用户程序”模式,并
将 U8W 下载工具重新上电,如下图所示:(否则将不能正常进行烧录)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 435 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
F.3.9 U8W/U8W-Mini 设置直通模式(可用于仿真)
若要使用 U8W/U8-Mini 进行仿真,首先必须将 U8W/U8-Mini 设置为直通模式。U8W/U8W-Mini 实
现 USB 转串口直通模式的方法如下:
1. 首先 U8W/U8W-Mini 固件必须升级到 v1.37 及以上版本;
2. U8W/U8W-Mini 上电后为正常下载模式,此时按住工具上的 Key1(下载)按键不要松开,再按一下
Key2(电源)按键,然后放开 Key2(电源)按键 后, 再松开 Key1(下载)按键,U8W/U8W-Mini 会
进入 USB 转串口直通模式。(按下 Key1 按下 Key2 松开 Key2 松开 Key1);
3. 进入直通模式的 U8W/U8W-Mini 工具只是简单的 USB 转串口不具备脱机下载功能,若需要恢复
U8W/U8W-Mini 的原有功能,只需要再次单独按一下 Key2(电源)按键即可。
F.3.10
U8W/U8W-Mini 的参考电路
USB 型联机/脱机下载板 U8W/U8W-Mini 为用户提供了如下的常用控制接口:
脚位功能
端口
功能描述
电源控制脚
P2.6
低位有效
P1.0
串口 RXD,连接目标芯片的 TXD(P3.1)
P1.1
串口 TXD,连接目标芯片的 RXD(P3.0)
P3.6
低有效
P3.2
LED1
P3.3
LED2
P3.4
LED3
P5.5
LED4
P2.4
Flash 的 CE 脚
P2.2
Flash 的 SO 脚
P2.3
Flash 的 SI 脚
P2.1
Flash 的 SCLK 脚
下载通讯脚
编程按键
显示
外挂串行 Flash 控制脚
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 436 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
全自动烧录工具
分选机信号
蜂鸣器(BEEP)控制
技术支持: 13922829991
P3.6
起始信号
P1.5
完成信号
P5.4
OK 信号(良品信号)
P3.7
ERROR 信号(不良品信号)
P2.5
高有效(高电平发出声音)
选型顾问: 13922805190
电源控制部分参考电路图:
Flash 控制部分参考电路图:
用户程序大于 41K 时需要此 Flash 存储器
按键部分参考电路图:
蜂鸣器部分参考电路图:
LED 显示部分参考电路图:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 437 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
串口通讯脚连接部分参考电路图:
F.4
STC 通用 USB 转串口工具
F.4.1 STC 通用 USB 转串口工具外观图
正面:
背面:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 438 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
F.4.2 STC 通用 USB 转串口工具布局图
在此,需要对“电源开关”进行说明:
此按钮的作用与自锁开关相同,在开关按钮第一次按时,开关接通电源并保持,即自锁,在开关按钮第
二次按时,开关断开电源。鉴于自锁开关使用过程中容易损坏的特点,我们设计了一套利用轻触开关替
代自锁开关功能的电路,提高工具的使用寿命。
而对于 STC 的单片机,要想进行 ISP 下载,则必须是在上电复位时接收到串口命令才会开始执行 ISP
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 439 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
程序,所以使用 STC 通用 USB 转串口工具下载程序到 MCU 的正确步骤为:
1. 使用 STC 通用 USB 转串口工具将待烧录 MCU 与电脑进行连接;
2. 打开 STC 的 ISP 下载软件;
3. 选择单片机型号;
4. 选择 STC 通用 USB 转串口工具所对应的串口;
5. 打开目标文件(HEX 格式或者 BIN 格式);
6. 点击 ISP 下载软件中的“下载/编程”按钮;
7. 按一下 STC 通用 USB 转串口工具上的“电源开关”给 MCU 供电,即可开始下载。
【冷启动烧录】
此外,USB 接口与 Micro-USB 接口是相同的功能,用户根据需要连接其中一个接口到电脑即可。
编程接口的 0V 信号脚内部有 470 欧姆电阻接地,如果设置了 P1.0/P1.1=0/0 或者 P3.2/P3.3=0/0 时才能
下载,可将 P1.0,P1.1 或者 P3.2,P3.3 接到 0V 信号脚。
F.4.3 STC 通用 USB 转串口工具驱动安装
STC 通用 USB 转串口工具采用 CH340 USB 转串口芯片(可以外挂晶振,更精准),只要下载通用的 CH340
串口驱动程序进行安装即可,以下是 STC 官网(www.STCMCUDATA.com)提供的 CH341SER 串口驱
动下载位置:
下载后进行解压,CH340 的驱动安装包路径 stc-isp-15xx-v6.87K\USB to UART Driver\CH340_CH341:
以 STC 官网提供的 CH341SER 串口驱动为例,双击“CH341SER.exe”安装包,在弹出的主界面点击“安
装”按钮开始安装驱动程序:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 440 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后弹出驱动安装成功对话框,点击“确定”按钮完成安装:
F.4.4 使用 STC 通用 USB 转串口工具下载程序到 MCU
1. 使用 STC 通用 USB 转串口工具将待烧录 MCU 与电脑进行连接:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 441 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
2. 打开 STC-ISP 软件;
3. 选择烧录芯片对应的型号;
4. 选择 STC 通用 USB 转串口工具所识别的串口号(当 STC 通用 USB 转串口工具与电脑正确连接后,
软件会自动扫描并识别名称为“USB-SERIAL CH340 (COMx)”串口,具体的 COM 编号会因电脑不同而
不同)。当有多个 USB 转串口线与电脑相连时,则必须手动选择;
5. 加载烧录程序;
6. 设置烧录选项;
7. 点击“下载/编程”按钮;
8. 右下角提示框显示“正在检测目标单片机 ...”时按一下 STC 通用 USB 转串口工具上的“电源开
关”给 MCU 供电,即可开始下载【冷启动烧录】
;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 442 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
9. 等待下载结束,若下载成功,右下角提示框会显示“操作成功!”。
F.4.5 使用 STC 通用 USB 转串口工具仿真用户代码
目前 STC 的仿真都是基于 Keil 环境的,所以若需要使用 STC 通用 USB 转串口工具仿真用户代码,则必
须要安装 Keil 软件。
Keil 软件安装完成后,还需要安装 STC 的仿真驱动。STC 的仿真驱动的安装步骤如下:
首先开 STC-ISP 下载软件;
然后在软件右边功能区的“Keil 仿真设置”页面中点击“添加型号和头文件到 Keil 中 添加 STC 仿真器
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 443 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
驱动到 Keil 中”按钮:
按下后会出现如下画面:
将目录定位到 Keil 软件的安装目录,然后确定。
安装成功后会弹出如下的提示框:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 444 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
在 Keil 的相关目录中可以看到如下的文件,即表示驱动正确安装了。
由于在默认状态下,STC 的主控芯片并不是一颗仿真芯片,不具有仿真功能,所以若需要进行仿真,则
还需要将 STC 的主控芯片设置为仿真芯片。
制作仿真芯片步骤如下:
首先使用 STC 通用 USB 转串口工具将 MCU 与电脑进行连接;
然后打开 STC 的 ISP 下载软件,并在串口号的下拉列表中选择串口工具所对应的串口号;
选择 MCU 单片机型号;
选择用户程序运行的 IRC 频率,制作仿真芯片时选择的频率与所仿真的用户程序所设置的频率一致,才
能达到真实的运行效果。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 445 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
然后在软件右边功能区的“Keil 仿真设置”页面中点击“将所选目标单片机设置为仿真芯片”按钮,
按下后会出现如下画面:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 446 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
接下来需要按一下 STC 通用 USB 转串口工具上的“电源开关”给 MCU 供电【冷启动】,即可开始制作
仿真芯片。
若设置成功,会出现如下的画面:
到此,仿真芯片便制作成功了。
接下来我们打开一个项目进行仿真:
然后进行下面的项目设置:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 447 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附加说明一点:
当创建的是 C 语言项目,且有将启动文件“STARTUP.A51”添加到项目中时,里面有一个命名为
“IDATALEN”的宏定义,它是用来定义 IDATA 大小的一个宏,默认值是 128,即十六进制的 80H,同
时它也是启动文件中需要初始化为 0 的 IDATA 的大小。所以当 IDATA 定义为 80H,那么 STARTUP.A51
里面的代码则会将 IDATA 的 00-7F 的 RAM 初始化为 0;同样若将 IDATA 定义为 0FFH,则会将 IDATA
的 00-FF 的 RAM 初始化为 0。
我们所选的 STC8H 系列的单片机的 IDATA 大小为 256 字节(00-7F 的 DATA 和 80H-FFH 的 IDATA),
但由于在 RAM 的最后 17 个字节有写入 ID 号以及相关的测试参数,若用户在程序中需要使用这一部分
数据,则一定不要将 IDATALEN 定义为 256。
按下快捷键“Alt+F7”或者选择菜单“Project”中的“Option for Target ‘Target1’”
在“Option for Target ‘Target1’”对话框中对项目进行配置:
第 1 步、进入到项目的设置页面,选择“Debug”设置页;
第 2 步、选择右侧的硬件仿真“Use …”;
第 3 步、在仿真驱动下拉列表中选择“STC Monitor-51 Driver”项;
第 4 步、点击“Settings”按钮,进入串口的设置画面;
第 5 步、对串口的端口号和波特率进行设置,串口号要选择 STC 通用 USB 转串口工具所对应的串口,
波特率一般选择 115200 或者 57600。
确定完成仿真设置。
详细步骤如下图所示:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 448 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
完成了上面所有的工作后,即可在 Keil 软件中按“Ctrl+F5”开始仿真调试。
若硬件连接无误的话,将会进入到类似于下面的调试界面,并在命令输出窗口显示当前的仿真驱动版本
号和当前仿真监控代码固件的版本号,如下图所示:
仿真调试过程中,可执行复位、全速运行、单步运行、设置断点等多中操作。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 449 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
如上图所示,可在程序中设置多个断点,断点设置的个数目前最大允许 20 个
(理论上可设置任意个,但是断点设置得过多会影响调试的速度)。
F.5
应用线路图
F.5.1 U8W 工具应用参考线路图
F.5.2 STC 通用 USB 转串口工具应用参考线路图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 450 -
STC8F1K 系列技术手册
深圳国芯人工智能有限公司
官方网站: www.STCMCUDATA.com
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
选型顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 451 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录G U8W 下载工具中 RS485 部分线路图
BOM 清单:
标号
型号
封装
备注
U10
SP3485EN
SOP8
RS485 芯片
R66
10K
0603
电阻
R107
3.3K
0603
电阻
R108
3.3K
0603
电阻
R109
3.3K
0603
电阻
R112
33R
0603
电阻
R113
33R
0603
电阻
R114
100K
0603
电阻
T10
SS8550
SOT-23
PNP 三极管
D3
1N5819
0603
肖特基二极管
D8
P6SMB6.8CA
DO-214AA
TVS 二极管
D9
P6SMB6.8CA
DO-214AA
TVS 二极管
SIP4
通信接口
CN2
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 452 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录H 运行用户程序时收到用户命令后自动启
动 ISP 下载(不停电)
“用户自定义下载”与“用户自定义加密下载”是两种完全不同功能。相对用户自定义加密下载的
功能而言,用户自定义下载的功能要简单一些。
具体的功能为:电脑或脱机下载板在开始发送真正的 ISP 下载编程握手命令前,先发送用户自定义
的一串命令(关于这一串串口命令,用户可以根据自己在应用程序中的串口设置来设置波特率、校验位
以及停止位)
,然后再立即发送 ISP 下载编程握手命令。
“用户自定义下载”这一功能主要是在项目的早期开发阶段,实现不断电(不用给目标芯片重新上
电)即可下载用户代码。具体的实现方法是:用户需要在自己的程序中加入一段检测自定义命令的代码,
当检测到后,执行一句“MOV IAP_CONTR,#60H”的汇编代码或者“IAP_CONTR = 0x60;”的 C 语言
代码,MCU 就会自动复位到 ISP 区域执行 ISP 代码。
如下图所示,将自定义命令设置为波特率为 115200、无校验位、一位停止位的命令序列:0x12、0x34、
0x56、0xAB、0xCD、0xEF、0x12。当勾选上“每次下载前都先发送自定义命令”的选项后,即可实现
自定义下载功能
点击“发送自定义下载命令”或者点击界面左下角的“下载/编程”按钮,应用程序便会发送如下所示的
串口数据
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 453 -
STC8F1K 系列技术手册
深圳国芯人工智能有限公司
官方网站: www.STCMCUDATA.com
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
选型顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 454 -
STC8F1K 系列技术手册
附录I
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
使用 STC 的 IAP 系列单片机开发自己的
ISP 程序
随着 IAP(In-Application-Programming)技术在单片机领域的不断发展,给应用系统程序代码升级
带来了极大的方便。STC 的串口 ISP(In-System-Programming)程序就是使用 IAP 功能来对用户的程序
进行在线升级的,但是出于对用户代码的安全着想,底层代码和上层应用程序都没有开源,为此 STC 推
出了 IAP 系列单片机,即整颗 MCU 的 Flash 空间,用户均可在自己的程序中进行改写,从而使得有用
户需要开发自己的 ISP 程序的想法得以实现。
STC8G 系列单片机中的所有可以在 ISP 下载时用户自定义 EEPROM 大小的型号均为 IAP 系列单片
机。目前 STC8H 系列有如下型号的单片机为 IAP 系列:STC8G1K12-20/16PIN、STC8G1K17-20/16PIN、
STC8G1K12A-8Pin 、 STC8G1K17A-8Pin 、 STC8G1K12-8Pin 、 STC8G1K17-8Pin 、 STC8G1K12T 、
STC8G1K17T、STC8G2K64S2、STC8G2K64S4。本文以 STC8G2K64S4 为例,详细说明使用 STC 的 IAP
单片机开发用户自己的 ISP 程序的方法,并给出了基于 Keil 环境的汇编和 C 源码。
第一步:内部 FLASH 规划
由于 STC8G 系列的 IAP 型号单片机的 EEPROM 是在 ISP 下载时用户自己设置的,所以若用户需要
实现自己的 ISP,则在下载用户自己的 ISP 程序时,需要按照下图是方式,将全部的 64K 都设置为
EEPROM,让用户程序空间和 EEPROM 空间完全重合,这样才能实现用户对自己程序空间进行修改和
更新。
下面假设用户已将整个的 64K 的程序空间已全部设置为 EEPROM,现将整个 64K 程序空间作如下
划分:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 455 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
0000
用户程序区
62.5K
F9FF
FA00
用户 ISP 区
0.5K
FBFF
FC00
复位入口映射区
0.5K
0.5K
FDFF
FE00
用户参数区
(不可运行代码)
FFFF
FLASH 空间中,从地址 0000H 开始的连续 62.5K 字节的空间为用户程序区。当满足特定的下载条
件时,需要用户将 PC 跳转到用户 ISP 程序区,此时可对用户程序区进行擦除和改写,以达到更新用户
程序的目的。
第二步、程序的基本框架
MCU 复位
上电自检模块
系统是否正
常?
否
异常处理
是
执行用户功能模块
是否满足系
统升级条件?
否
是
更新用户代码
软复位
第三步、下位机固件程序说明
下位机固件程序包括两部分:ISP(ISP 代码)和 AP(用户代码)
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 456 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
ISP 代码(汇编代码)
;测试工作频率为 11.0592MHz
UARTBAUD
EQU
0FFE8H
;定义串口波特率
AUXR
WDT_CONTR
IAP_DATA
IAP_ADDRH
IAP_ADDRL
IAP_CMD
IAP_TRIG
IAP_CONTR
IAP_TPS
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
08EH
0C1H
0C2H
0C3H
0C4H
0C5H
0C6H
0C7H
0F5H
;附加功能控制寄存器
;看门狗控制寄存器
;IAP 数据寄存器
;IAP 高地址寄存器
;IAP 低地址寄存器
;IAP 命令寄存器
;IAP 命令触发寄存器
;IAP 控制寄存器
;IAP 等待时间控制寄存器
ISPCODE
APENTRY
EQU
EQU
0FA00H
0FC00H
;ISP 模块入口地址(1 页),同时也是外部接口地址
;应用程序入口地址数据(1 页)
ORG
0000H
LJMP
ISP_ENTRY
;系统复位入口
MOV
MOV
MOV
MOV
MOV
SETB
SCON,#50H
AUXR,#40H
TMOD,#00H
TH1,#HIGH UARTBAUD
TL1,#LOW UARTBAUD
TR1
;设置串口模式(8 位数据位,无校验位)
;定时器 1 为 1T 模式
;定时器 1 工作于模式 0(16 位重装载)
;设置重载值
MOV
R0,#16
JNB
CLR
MOV
CJNE
DJNZ
LJMP
RI,$
RI
A,SBUF
A,#7FH,NEXT1
R0,NEXT2
ISP_DOWNLOAD
ORG
ISPCODE
(65536-11059200/4/115200)
RESET:
;启动定时器 1
NEXT1:
NEXT2:
ISP_DOWNLOAD:
CLR
MOV
MOV
CLR
SETB
CLR
MOV
A
PSW,A
IE,A
RI
TI
TR0
SP,#5FH
;等待串口数据
;判断是否为 7F
;跳转到下载界面
;ISP 模块使用第 0 组寄存器
;关闭所有中断
;清除串口接收标志
;置串口发送标志
;设置堆栈指针
MOV
LCALL
MOV
LCALL
LCALL
A,#5AH
ISP_SENDUART
A,#055H
ISP_SENDUART
ISP_RECVACK
;返回 5A 55 到 PC,表示 ISP 擦除模块已准备就绪
MOV
MOV
LCALL
IAP_ADDRL,#0
IAP_ADDRH,#02H
ISP_ERASEIAP
;首先在第 2 页起始地址写 "LJMP ISP_ENTRY"指令
深圳国芯人工智能有限公司
;接收应答数据
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 457 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
MOV
LCALL
MOV
LCALL
MOV
LCALL
A,#02H
ISP_PROGRAMIAP
A,#HIGH
ISP_PROGRAMIAP
A,#LOW ISP_ENTRY
ISP_PROGRAMIAP
MOV
MOV
LCALL
MOV
LCALL
MOV
LCALL
MOV
LCALL
IAP_ADDRL,#0
IAP_ADDRH,#0
ISP_ERASEIAP
A,#02H
ISP_PROGRAMIAP
A,#HIGH
ISP_PROGRAMIAP
A,#LOW ISP_ENTRY
ISP_PROGRAMIAP
;用户代码地址从 0 开始
MOV
MOV
MOV
IAP_ADDRL,#0
IAP_ADDRH,#02H
R7,#124
;新代码缓冲区地址
LCALL
INC
INC
DJNZ
ISP_ERASEIAP
IAP_ADDRH
IAP_ADDRH
R7,ISP_ERASEAP
MOV
MOV
LCALL
IAP_ADDRL,#LOW APENTRY
IAP_ADDRH,#HIGH APENTRY
ISP_ERASEIAP
MOV
LCALL
MOV
LCALL
LCALL
A,#5AH
ISP_SENDUART
A,#0A5H
ISP_SENDUART
ISP_RECVACK
;返回 5A A5 到 PC,表示 ISP 编程模块已准备就绪
LCALL
MOV
LCALL
MOV
CLR
MOV
SUBB
MOV
CLR
SUBB
MOV
ISP_RECVUART
R0,A
ISP_RECVUART
R1,A
C
A,#03H
A,R1
DPL,A
A
A,R0
DPH,A
;接收长度高字节
LCALL
LCALL
LCALL
LCALL
LCALL
LCALL
ISP_RECVUART
ISP_PROGRAMIAP
ISP_RECVUART
ISP_PROGRAMIAP
ISP_RECVUART
ISP_PROGRAMIAP
;映射用户代码复位入口代码到映射区
;0000
IAP_ADDRL,#03H
IAP_ADDRH,#00H
;用户代码起始地址
ISP_RECVUART
;接收代码数据
;编程用户代码复位向量代码
ISP_ENTRY
;编程用户代码复位向量代码
;编程用户代码复位向量代码
;编程用户代码复位向量代码
ISP_ENTRY
;编程用户代码复位向量代码
;编程用户代码复位向量代码
;擦除 62.5K 字节
ISP_ERASEAP:
MOV
MOV
ISP_PROGRAMNEXT:
LCALL
深圳国芯人工智能有限公司
;目标地址+512
;判断是否擦除完成
;接收应答数据
;接收长度低字节
;将总长度-3
;总长度补码存入 DPTR
;0001
;0002
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 458 -
STC8F1K 系列技术手册
LCALL
INC
MOV
ORL
JNZ
ISP_SOFTRESET:
MOV
SJMP
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
ISP_PROGRAMIAP
DPTR
A,DPL
A,DPH
ISP_PROGRAMNEXT
;编程到用户代码区
IAP_CONTR,#20H
$
;软件复位系统
选型顾问: 13922805190
;长度检测
ISP_ENTRY:
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
MOV
CJNE
INC
MOV
MOV
MOV
MOV
MOV
CJNE
WDT_CONTR,#17H
;清看门狗
IAP_CONTR,#80H
;使能 IAP 功能
IAP_TPS,#11
;设置 IAP 等待时间参数
IAP_ADDRL,#LOW ISP_DOWNLOAD
IAP_ADDRH,#HIGH ISP_DOWNLOAD
IAP_DATA,#00H
;测试数据 1
IAP_CMD,#1
;读命令
IAP_TRIG,#5AH
;触发 ISP 命令
IAP_TRIG,#0A5H
A,IAP_DATA
A,#0E4H,ISP_ENTRY
;若无法读出数据则需要等待电压稳定
IAP_ADDRL
;测试地址 FC01H
IAP_DATA,#45H
;测试数据 2
IAP_CMD,#1
;读命令
IAP_TRIG,#5AH
;触发 ISP 命令
IAP_TRIG,#0A5H
A,IAP_DATA
A,#0F5H,ISP_ENTRY
;若无法读出数据则需要等待电压稳定
MOV
MOV
MOV
MOV
MOV
SETB
SETB
SCON,#50H
AUXR,#40H
TMOD,#00H
TH1,#HIGH UARTBAUD
TL1,#LOW UARTBAUD
TR1
TR0
;设置串口模式(8 位数据位,无校验位)
;定时器 1 为 1T 模式
;定时器 1 工作于模式 0(16 位重装载)
;设置重载值
ISP_RECVUART
GOTOAP
R0,#16
;检测是否有串口数据
ISP_RECVUART
GOTOAP
A,#7FH,GOTOAP
R0,ISP_CHECKNEXT
A,#5AH
ISP_SENDUART
A,#69H
ISP_SENDUART
ISP_RECVACK
ISP_DOWNLOAD
;接收同步数据
A
TCON,A
TMOD,A
TL0,A
TH0,A
;将 SFR 恢复为复位值
LCALL
JC
MOV
ISP_CHECKNEXT:
LCALL
JC
CJNE
DJNZ
MOV
LCALL
MOV
LCALL
LCALL
LJMP
GOTOAP:
CLR
MOV
MOV
MOV
MOV
深圳国芯人工智能有限公司
;启动定时器 1
;判断是否为 7F
;返回 5A 69 到 PC,表示 ISP 模块已准备就绪
;接收应答数据
;跳转到下载界面
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 459 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
MOV
MOV
MOV
MOV
LJMP
TL1,A
TH1,A
SCON,A
AUXR,A
APENTRY
LCALL
JC
XRL
JZ
CJNE
LCALL
JC
CJNE
RET
ISP_RECVUART
GOTOAP
A,#7FH
ISP_RECVACK
A,#25H,GOTOAP
ISP_RECVUART
GOTOAP
A,#69H,GOTOAP
技术支持: 13922829991
选型顾问: 13922805190
;正常运行用户程序
ISP_RECVACK:
ISP_RECVUART:
CLR
MOV
MOV
CLR
MOV
ISP_RECVWAIT:
JBC
JNB
MOV
CLR
CLR
RET
ISP_RECVTIMEOUT:
SETB
RET
ISP_SENDUART:
MOV
JNB
CLR
MOV
RET
ISP_ERASEIAP:
MOV
MOV
MOV
MOV
NOP
NOP
NOP
NOP
RET
ISP_PROGRAMIAP:
MOV
MOV
MOV
MOV
MOV
NOP
深圳国芯人工智能有限公司
A
TL0,A
TH0,A
TF0
WDT_CONTR,#17H
;跳过同步数据
;应答数据 1 检测
;应答数据 2 检测
;初始化超时定时器
;清看门狗
TF0,ISP_RECVTIMEOUT
RI,ISP_RECVWAIT
A,SBUF
RI
C
;超时检测
;等待接收完成
;读取串口数据
;清除标志
;正确接收串口数据
C
;超时退出
WDT_CONTR,#17H
TI,ISP_SENDUART
TI
SBUF,A
;清看门狗
;等待前一个数据发送完成
;清除标志
;发送当前数据
WDT_CONTR,#17H
IAP_CMD,#3
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;清看门狗
;擦除命令
;触发 ISP 命令
WDT_CONTR,#17H
IAP_CMD,#2
IAP_DATA,A
IAP_TRIG,#5AH
IAP_TRIG,#0A5H
;清看门狗
;编程命令
;将当前数据送 IAP 数据寄存器
;触发 ISP 命令
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 460 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
NOP
NOP
NOP
MOV
ADD
MOV
MOV
ADDC
MOV
RET
A,IAP_ADDRL
A,#01H
IAP_ADDRL,A
A,IAP_ADDRH
A,#00H
IAP_ADDRH,A
ORG
LJMP
技术支持: 13922829991
选型顾问: 13922805190
;IAP 地址+1
APENTRY
RESET
END
ISP 代码包括如下外部接口模块:
ISP_DOWNLOAD:程序下载入口地址,绝对地址 FA00H
ISP_ENTRY:上电系统自检程序(系统自动调用)
对于用户程序而言,用户只需要在满足下载条件时,将 PC 值跳转到 ISPPROGRAM (即 FA00H 的
绝对地址),即可实现代码更新。
用户代码(C 语言代码)
//测试工作频率为 11.0592MHz
#include "reg51.h"
#define
#define
#define
FOSC
BAUD
ISPPROGRAM
sfr
sfr
sfr
AUXR
P1M0
P1M1
=
=
=
11059200L
(65536 - FOSC/4/115200)
0xfa00
//系统时钟频率
//定义串口波特率
//ISP 下载程序入口地址
0x8e;
0x92;
0x91;
//波特率发生器控制寄存器
void (*IspProgram)() = ISPPROGRAM;
char cnt7f;
//定义指针函数
//Isp_Check 内部使用的变量
void uart() interrupt 4
{
if (TI) TI = 0;
if (RI)
{
if (SBUF == 0x7f)
{
cnt7f++;
if (cnt7f >= 16)
{
IspProgram();
}
}
else
//串口中断服务程序
深圳国芯人工智能有限公司
//发送完成中断
//接收完成中断
//调用下载模块(****重要语句****)
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 461 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
{
cnt7f = 0;
}
RI = 0;
//清接收完成标志
}
}
void main()
{
SCON = 0x50;
AUXR = 0x40;
TH1 = BAUD >> 8;
TL1 = BAUD;
TR1 = 1;
ES = 1;
EA = 1;
//定义串口模式为 8bit 可变,无校验位
//使能串口中断
//打开全局中断开关
P1M0 = 0;
P1M1 = 0;
while (1)
{
P1++;
}
}
用户代码(汇编代码)
;测试工作频率为 11.0592MHz
UARTBAUD
EQU
ISPPROGRAM EQU
0FFE8H
0FA00H
;定义串口波特率
(65536-11059200/4/115200)
;ISP 下载程序入口地址
AUXR
DATA
08EH
;附件功能控制寄存器
CNT7F
DATA
60H
;接收 7F 的计数器
ORG
LJMP
0000H
START
;系统复位入口
ORG
LJMP
0023H
UART_ISR
;串口中断入口
PUSH
PUSH
JNB
CLR
ACC
PSW
TI,CHECKRI
TI
;检测发送中断
;清除标志
JNB
CLR
MOV
CJNE
INC
MOV
CJNE
LJMP
RI,UARTISR_EXIT
RI
A,SBUF
A,#7FH,ISNOT7F
CNT7F
A,CNT7F
A,#16,UARTISR_EXIT
ISPPROGRAM
MOV
CNT7F,#0
UART_ISR:
CHECKRI:
;检测接收中断
;清除标志
;调用下载模块(****重要语句****)
ISNOT7F:
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 462 -
STC8F1K 系列技术手册
UARTISR_EXIT:
POP
POP
RETI
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
PSW
ACC
START:
MOV
CLR
MOV
DJNZ
MOV
R0,#7FH
A
@R0,A
R0,$-1
SP,#7FH
;清 RAM
MOV
MOV
MOV
MOV
MOV
SETB
SETB
SETB
SCON,#50H
AUXR,#15H
TMOD,#00H
TH1,#HIGH UARTBAUD
TL1,#LOW UARTBAUD
TR1
ES
EA
;设置串口模式(8 位可变,无校验位)
;BRT 工作于 1T 模式,启动 BRT
;定时器 1 工作于模式 0(16 位重装载)
;设置重载值
INC
SJMP
P0
MAIN
;初始化 SP
;启动定时器 1
;使能串口中断
;开中断总开关
MAIN:
END
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 463 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
用户代码可以使用 C 或者汇编语言编写,但对于汇编代码需要注意一点:位于 0000H 的复位入口
地址处的指令必须是一个长跳转语句(类似 LJMP START)
。在用户代码中,需要设置好串口,并在满足
下载条件时,将 PC 值跳转到 ISPPROGRAM (即 FA00H 的绝对地址),以实现代码更新。对于汇编代
码,我们可以使用“LJMP 0FA00H”指令进行调用,如下图
在 C 代码中,必须定义一个函数指针变量,并将此变量赋值为 0xFA00,然后再调用,如下图
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 464 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
第四步、上位机应用程序说明
上位机的程序是基于 MFC 的对话框项目,对于串口的访问是直接调用 Windows 的 API 函数,而没
有使用串口控件,从而省去的控件的注册以及系统版本不兼容的诸多问题。界面较简单,只是为这一功
能的实现提供了一个框架,其他的功能及要求均还可以往上面添加。
上位机程序的核心模块是基于类 CISPDlg 的一个友元函数“UINT Download(LPVOID pParam);”,
此函数负责与下位机通讯,发送各种通讯命令来完成对用户程序的更新。用户可以根据各自不同的需求
增加命令。
第五步、上位机应用程序的使用方法
打开上位机界面,如下图
选择串口号,设置与下位机相同的串口波特率
打开要下载的源数据文件,Bin 或者 Intel hex 格式均可以
点击“下载数据”按钮即可开始下载数据
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 465 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
第六步、下位机固件程序的使用方法
下位机的目标文件有两个“IAPISP.hex”和“AP.hex”,对于一块新的单片机,第一次必须使用 ISP
下载工具将“IAPISP.hex”写入到芯片内,如下图所示。之后再更新便不再需要写“IAPISP.hex”这个文
件了,附件中的“AP.hex”只是一个用户程序的模板,当满足下载条件时,用户只需要将 PC 值跳转到
FA00H 的地址,即可实现代码更新。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 466 -
STC8F1K 系列技术手册
附录J
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
用户程序复位到系统区进行 ISP 下载的
方法(不停电)
当项目处于开发阶段时,需要反复的下载用户代码到目标芯片中进行代码验证,而 STC 的单片机
进行正常的 ISP 下载都需要对目标芯片进行重新上电,从而会使得项目在开发阶段比较繁琐。为此 STC
单片机增加了一个特殊功能寄存器 IAP_CONTR,当用户向此寄存器写入 0x60,即可实现软件复位到系
统区,进而实现不停电就可进行 ISP 下载。
但是用户如何判断是否正在进行 ISP 下载?何时向寄存器 IAP_CONTR 写 0x60 触发软复位?就这
两个问题,下面分别介绍四种判断方法:
使用 P3.0 口检测串口起始信号
STC 单片机的串口 ISP 固定使用 P3.0 和 P3.1 两个端口,当 ISP 下载软件开始下载时,会发送握手
命令到单片机的 P3.0 口。若用户的 P3.0 和 P3.1 只是专门用于 ISP 下载,则可使用 P3.0 口检测串口的起
始信号来判断 ISP 下载。
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
IAP_CONTR
P3M0
P3M1
=
=
=
0xc7;
0xb2;
0xb1;
sbit
P30
=
P3^0;
void main()
{
P3M0 = 0x00;
P3M1 = 0x00;
P30 = 1;
while (1)
{
if (!P30) IAP_CONTR = 0x60;
...
//P3.0 的低电平即为串口起始信号
//软件复位到系统区
//用户代码
}
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 467 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
使用 P3.0/INT4 口的下降沿中断,检测串口起始信号
方法 B 与方法 A 类似,不同在于方法 A 使用的是查询方式,方法 B 使用中断方式。因为 STC 单
片机的 P3.0 口为 INT4 的中断口。
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
sfr
sfr
sfr
sfr
IAP_CONTR
INTCLKO
P3M0
P3M1
=
=
=
=
void Int4Isr() interrupt 16
{
IAP_CONTR = 0x60;
0xc7;
0x8f;
0xb2;
0xb1;
//INT4 中断服务程序
//串口起始信号触发 INT4 中断
//软件复位到系统区
}
void main()
{
P3M0 = 0x00;
P3M1 = 0x00;
INTCLKO |= 0x40;
EA = 1;
while (1)
{
...
}
//使能 INT4 中断
//用户代码
}
使用 P3.0/RxD 口的串口接收,检测 ISP 下载软件发送的 7F
方法 A 与方法 B 都非常简单,但容易受干扰,如果 P3.0 口有任何一个干扰信号,都会触发软件复
位,所以方法 C 是对串口数据进行校验。
STC 的 ISP 下载软件进行 ISP 下载时,首先都会使用最低波特率(一般是 2400)+偶校验 9+1 位停
止位连续发送握手命令 7F,因此用户可以在程序中,将串口设置为 9 位数据位+2400 波特率,然后持续
检测 7F,比如连续检测到 8 个 7F 表示可确定需要进行 ISP 下载,此时再触发软件复位。
C 语言代码
//测试工作频率为 11.0592MHz
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 468 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BR2400
11059200UL
(65536 - FOSC / 4 / 2400)
sfr
sfr
sfr
sfr
IAP_CONTR
AUXR
P3M0
P3M1
=
=
=
=
0xc7;
0x8e;
0xb2;
0xb1;
char cnt7f;
//串口中断服务程序
void UartIsr() interrupt 4
{
if (TI)
{
TI = 0;
}
if (RI)
{
RI = 0;
if ((SBUF == 0x7f) && (RB8 == 1))
//ISP 下载软件发送的握手命令 7F
//7F 的偶校验位为 1
{
if (++cnt7f == 8)
IAP_CONTR = 0x60;
//当连续检测到 8 个 7F 后
//复位到系统区
}
else
{
cnt7f = 0;
}
}
}
void main()
{
P3M0 = 0x00;
P3M1 = 0x00;
SCON = 0xd0;
TMOD = 0x00;
AUXR = 0x40;
TH1 = BR2400 >> 8;
TL1 = BR2400;
TR1 = 1;
ES = 1;
EA = 1;
//设置串口为 9 位数据位
//设置串口波特率为 2400
cnt7f = 0;
while (1)
{
...
}
//用户代码
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 469 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
使用 P3.0/RxD 串口接收,检测 ISP 下载软件发送的用户下载命令
如果用户代码中需要使用串口进行通信,则上面的 3 中方法可能都不太适用,此时可以使用 STC 的
ISP 下载软件提供的接口,定制一组专用的用户下载命令(可指定波特率、校验位和停止位),若使能此
功能,ISP 下载软件在进行 ISP 下载前,会使用用户指定的波特率、校验位和停止位发送用户下载命令,
然后再发送握手命令。用户只需要在自己的代码中监控串口命令序列,当检测到有正确的用户下载命令
时,软件复位到系统区即可实现不停电进行 ISP 功能。
下面假设用户下载命令为字符串“STCISP$”,串口设置为波特率 115200,无校验位和 1 位停止位。
ISP 下载软件中的设置如下图:
用户示例代码如下:
C 语言代码
//测试工作频率为 11.0592MHz
#include "reg51.h"
#include "intrins.h"
#define
#define
FOSC
BR115200
11059200UL
(65536 - FOSC / 4 / 115200)
sfr
sfr
sfr
IAP_CONTR
AUXR
P3M0
=
=
=
深圳国芯人工智能有限公司
0xc7;
0x8e;
0xb2;
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 470 -
STC8F1K 系列技术手册
sfr
P3M1
官方网站: www.STCMCUDATA.com
=
技术支持: 13922829991
选型顾问: 13922805190
0xb1;
char stage;
//串口中断服务程序
void UartIsr() interrupt 4
{
char dat;
if (TI)
{
TI = 0;
}
if (RI)
{
RI = 0;
dat = SBUF;
switch (stage)
{
case 0:
default:
L_Check1st:
if (dat == 'S') stage = 1;
else stage = 0;
break;
case 1:
if (dat == 'T') stage = 2;
else goto L_Check1st;
break;
case 2:
if (dat == 'C') stage = 3;
else goto L_Check1st;
break;
case 3:
if (dat == 'I') stage = 4;
else goto L_Check1st;
break;
case 4:
if (dat == 'S') stage = 5;
else goto L_Check1st;
break;
case 5:
if (dat == 'P') stage = 6;
else goto L_Check1st;
break;
case 6:
if (dat == '$')
IAP_CONTR = 0x60;
else goto L_Check1st;
break;
}
}
}
//当检测到正确的用户下载命令时
//复位到系统区
void main()
{
P3M0 = 0x00;
P3M1 = 0x00;
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 471 -
STC8F1K 系列技术手册
SCON = 0x50;
TMOD = 0x00;
AUXR = 0x40;
TH1 = BR2400 >> 8;
TL1 = BR2400;
TR1 = 1;
ES = 1;
EA = 1;
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
//设置用户串口模式为 8 位数据位
//设置串口波特率为 115200
stage = 0;
while (1)
{
...
}
//用户代码
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 472 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录K 使用第三方 MCU 对 STC8F1K 系列单片
机进行 ISP 下载范例程序
C 语言代码
//注意:使用本代码对 STC8A/F 系列的单片机进行下载时,必须要执行了 Download 代码之后,
//才能给目标芯片上电,否则目标芯片将无法正确下载
#include "reg51.h"
typedef
typedef
typedef
bit
unsigned char
unsigned short
BOOL;
BYTE;
WORD;
//宏、常量定义
#define
FALSE
#define
TRUE
#define
LOBYTE(w)
#define
HIBYTE(w)
0
1
((BYTE)(WORD)(w))
((BYTE)((WORD)(w) >> 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))
//STC8A/F 系列目标芯片工作频率
//STC8A/F 系列目标芯片串口波特率计算公式
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
- 473 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 474 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 475 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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
- 476 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.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; cntdwProcessId == id) && (GetParent(hWnd) == NULL))
{
pcp->hMainWnd = hWnd;
return FALSE;
}
return TRUE;
}
BOOL IspProcess()
{
//定义相关变量
STARTUPINFO si;
PROCESS_INFORMATION pi;
CALLBACK_PARAM cp;
CString path;
//发布项目程序中部分控件的 ID
const UINT ID_PROGRAM
= 1046;
const UINT ID_STOP
= 1044;
const UINT ID_COMPORT
= 1009;
const UINT ID_PROGRESS
= 1044;
//发布项目程序的完整路径
path = _T("D:\\Work\\Upgrade.exe");
//变量初始化
memset(&si, 0, sizeof(STARTUPINFO));
memset(&pi, 0, sizeof(PROCESS_INFORMATION));
memset(&cp, 0, sizeof(CALLBACK_PARAM));
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 482 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
//设置启动变量
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.wShowWindow = SW_SHOWNORMAL;
技术支持: 13922829991
选型顾问: 13922805190
//此处若设置为 SW_HIDE,就不会显示发布项目程序
//的操作界面,所有的 ISP 操作都可在后台进行
si.dwFlags = STARTF_USESHOWWINDOW;
//创建发布项目程序进程
if (CreateProcess(NULL, (LPTSTR)(LPCTSTR)path, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
{
//等待发布项目程序进程初始化完成
WaitForInputIdle(pi.hProcess, 5000);
//获取发布项目程序的主窗口句柄
cp.dwProcessId = pi.dwProcessId;
cp.hMainWnd = NULL;
EnumWindows(EnumWindowCallBack, (LPARAM)&cp);
if (cp.hMainWnd != NULL)
{
HWND hProgram;
HWND hStop;
HWND hPort;
//获取发布项目程序主窗口中部分控件句柄
hProgram = ::GetDlgItem(cp.hMainWnd, ID_PROGRAM);
hStop = ::GetDlgItem(cp.hMainWnd, ID_STOP);
hPort = ::GetDlgItem(cp.hMainWnd, ID_COMPORT);
//设置发布项目程序中的串口号, 第 3 个参数为 0:COM1, 1:COM2, 2:COM3, ...
::SendMessage(hPort, CB_SETCURSEL, 0, 0);
//触发编程按钮开始 ISP 编程
::SendMessage(hProgram, BM_CLICK, 0, 0);
//等待编程完成,
//由于此处会阻塞主进程,所以建议新建工作进程,在工作进程中进行等待
while (!::IsWindowEnabled(hProgram));
//编程完成后关闭发布项目程序
::SendMessage(cp.hMainWnd, WM_CLOSE, 0, 0);
}
//等待进程结束
WaitForSingleObject(pi.hProcess,INFINITE);
//清理工作
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return TRUE;
}
else
{
AfxMessageBox(_T("创建进程失败 !"));
return FALSE;
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 483 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
}
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 484 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录M 在 Keil 中建立多文件项目的方法
在 Keil 中,一般比较小的项目都只有一个源文件,但对于一些稍微复杂的项目往往需要多个源文件
建立多文件项目的方法如下:
1、首先打开 Keil,在菜单“Project”中选择“New uVision Project ...”
即可完成一个空项目的建立
2、在空项目的项目树中,鼠标右键单击“Source Group 1”,并选择右键菜单中的“Add Existing Files to
Group "Source Group 1" ...”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 485 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
3、在弹出的文件对话框中,多次添加源文件
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 486 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
如下图所示即可完成多文件项目的建立
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 487 -
STC8F1K 系列技术手册
深圳国芯人工智能有限公司
官方网站: www.STCMCUDATA.com
国内分销商电话: 0513-5501 2928/2929/2966
技术支持: 13922829991
选型顾问: 13922805190
传真: 0513-5501 2926/2956/2947
- 488 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录N 电气特性
N.1
绝对最大额定值
参数
最小值
最大值
单位
存储温度
-55
+150
℃
说明
若工作温度高于 85℃(如 125℃附近),由于
内部 IRC 时钟的频率在高温时的温漂大,建议使用
外部高温时钟或或晶振。另外温度高时频率跑不快,
如果必须使用内部 IRC 时钟,建议使用 24M 以下的
工作温度
-40
+85
℃
工作频率;如果系统必须运行在较高频率,则请使
用外部高可靠有源时钟。
若工作温度为-55℃附近,则工作电压不能太
低,强烈建议 MCU-VCC 电压不要低于 3.0V,另外
电源的上升速度也必须尽量快,最好能控制在毫秒
级
工作电压
2.0
5.5
V
VDD 对地电压
-0.3
+5.5
V
I/O 口对地电压
-0.3
VDD+0.3
V
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 489 -
STC8F1K 系列技术手册
N.2
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
直流特性
(VSS=0V,VDD=5.0V,测试温度=25℃)
标号
范围
参数
测试环境
最小值
典型值
最大值
单位
掉电模式电流(SCC = 1)
-
0.08
-
uA
5.0V
掉电模式电流(SCC = 0)
-
1.5
-
uA
5.0V
IWKT
掉电唤醒定时器
-
5
-
uA
5.0V
ILVD
低压检测模块
-
260
-
uA
5.0V
空闲模式电流(6MHz)
-
1.3
-
mA
5.0V
IPD
IIDL
空闲模式电流(11.0592MHz)
1.7
mA
5.0V
空闲模式电流(20MHz)
2.3
mA
5.0V
空闲模式电流(22.1184MHz)
-
2.5
-
mA
5.0V
空闲模式电流(24MHz)
-
2.6
-
mA
5.0V
空闲模式电流(内部 32KHz)
-
850
-
uA
5.0V
正常模式电流(6MHz)
-
2.7
-
mA
5.0V
正常模式电流(11.0592MHz)
-
3.8
-
mA
5.0V
正常模式电流(20MHz)
-
5.9
-
mA
5.0V
正常模式电流(22.1184MHz)
-
6.3
-
mA
5.0V
正常模式电流(24MHz)
-
6.5
-
mA
5.0V
正常模式电流(内部 32KHz)
-
950
-
uA
5.0V
ICC
普通工作模式电流
-
4
20
mA
5.0V
VIL1
输入低电平
-
-
1.4
V
5.0V(打开施密特触发)
-
-
1.5
V
5.0V(关闭施密特触发)
VIH1
输入高电平(普通 I/O)
1.7
-
-
V
5.0V(打开施密特触发)
1.6
-
-
V
5.0V(关闭施密特触发)
VIH2
输入高电平(复位脚)
1.6
-
1.7
V
5.0V
IOL1
输出低电平的灌电流
-
20
-
mA
5.0V,端口电压 0.45V
IOH1
输出高电平电流(双向模式)
200
270
-
uA
5.0V
IOH2
输出高电平电流(推挽模式)
-
20
-
mA
5.0V,端口电压 2.4V
IIL
逻辑 0 输入电流
-
-
50
uA
5.0V,端口电压 0V
ITL
逻辑 1 到 0 的转移电流
100
270
600
uA
5.0V,端口电压 2.0V
RPU
IO 口上拉电阻
4.1
4.2
4.4
KΩ
5.0V
RPU
IO 口上拉电阻
5.8
5.9
6.0
KΩ
3.3V
INOR
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 490 -
STC8F1K 系列技术手册
N.3
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
内部 IRC 温漂特性(参考温度 25℃)
温度
范围
最小值
典型值
-40℃~85℃
-1.8%~+0.8%
-20℃~65℃
-1.0%~+0.5%
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
最大值
- 491 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录O 应用注意事项
O.1 关于 STC8F1K 系列芯片问题总结
1.
2.
3.
4.
复位脚用于复位时,下拉电阻不大于 3K。在 1.5V 时有超过 200uA 的上拉电流,10K 电路
拉不低。
STC8F1K 系列的所有串口发送脚均不能设置为开漏模式,否则无法输出串口数据
SPI 的 SCLK 和 MOSI 如果设置为开漏输出并且 IO 输出高,则 SCLK 和 MOSI 没有输出信
号,但将这两个口输出低电平,则能正常输出。并且,这两个信号是推挽输出,与 IO 设
置无关。
定时器 0 从 P3.5 高速输出、定时器 1 从 P3.4 高速输出、定时器 2 从 P1.3 高速输出这些 IO
设置为准双向口或推挽输出,脉冲输出正常,均为推挽输出,并且再直接操作 IO 将不影
响输出波形。但是如果将 IO 设置为开漏输出(允许内部上拉电阻或外接上拉电阻)
,则如
果对应的 IO 输出高电平,波形无输出(IO 为高阻),而对应的 IO 输出低电平,波形有推
挽输出。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 492 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
O.2 关于使用 CLR 指令关闭 EA 的重要说明
对于 STC8F1K 系列的 MCU,为了加快指令的执行速度,芯片内部对指令采用的是 4 级流水线的取
指-解码-执行的并行体系,使得原本需要 12~48 个时钟周期才能完成的指令,在 STC8F1K 系列的 MCU
中除了 MUL、DIV、DA、MOVC、MOVX 以及跳转指令外,其余指令均只需要一个时钟周期就能完成,
注意此处所说的完成并不是真正的执行完成,而是在本时钟周期内完成对当前指令的解码后,在下一个
时钟周期对下一条指令执行解码操作的同时执行上一条指令的动作。这样操作的好处是在宏观上确实加
快了指令的执行速度,但因此而带来的负面影响是对部分指令的执行效果有一个时钟的迟滞现象。
前面所描述的迟滞现象对基于冯·洛伊曼体系结构的 8051 程序代码来说不会有任何问题,因为指
令不会出现并发现象,但由于 8051 代码中存在中断机制,中断可能随时会打断当前顺序执行的代码,此
时前面所描述的迟滞现象就可能会产生问题,所以一般的做法是当主循环中需要修改的变量可能会与中
断中有访问冲突或者主循环中需要修改的变量在中断中需要进行逻辑判断时,就需要在主循环中在对这
种变量进行修改前,先使用 CLR EA 指令将中断暂时关闭,等待对变量修改完成后在使用 SETB EA 指
令打开中断,从而达到主循环和中断对变量互斥访问的目的。
注意:CLR EA 指令本身也有迟滞现象,即 CLR EA 之后,EA 并不是立即被关闭的,而是需要等
待下一个时钟周期完成后 EA 才会被关闭,也就是说,运行完 CLR EA 后,需要再执行一条语句,EA 才
会被真正关闭。所以正确的程序代码编写方式是在 CLR EA 指令后加 1~2 个 NOP 指令,因为 NOP 的执
行对任何算式逻辑运算和逻辑判断都不会造成影响。
正确的关闭 EA 的汇编代码如下:
...
NOP
CLR
EA
NOP
...
NOP
SETB EA
NOP
...
正确的关闭 EA 的 C 代码如下:
...
_nop_();
EA = 0;
_nop_();
...
_nop_();
EA = 1;
_nop_();
...
另外,对于 STC15 系列 MCU 也需要注意此问题,由于 STC15 系列的内部硬件也同样使用的是 4
级流水线的体系,所以也会有类似上面的问题。所以一般正确的做法也需要参考上面的示例代码来编写
程序。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 493 -
STC8F1K 系列技术手册
附录P
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
QFN/DFN 封装元器件焊接方法
STC 产品的封装形式中,增加了现在比较流行的 QFN 和 DFN 的封装。由于这种
封装形式的芯片芯片的管脚在芯片底部,手工焊接有一定的难度。市面上有专门做工
程样品焊接的小公司,可承接工程样品打样。如用户需要自行焊接,可参考下面的焊
接方法。
1、
2、
首先需要准备如下工具:电烙铁、热风枪、镊子、固定架等工具
需要焊接的 PCB 板和芯片如下图:
3、
先给板上芯片的焊盘上锡:
4、
然后给芯片底部上锡,这个上完锡后要弄平,尽量减少锡,但不能没有。
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 494 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
5、
调整热风枪温度,实际出风大概在 240 度左右,因为风枪质量不一样,根据
实际情况调节。
6、
把芯片放到焊盘上,一定要放正,然后用热风枪对着它吹,速度要均匀,直
到锡溶化,一般 20 秒内。
7、
用烙铁给芯片侧引脚上锡
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 495 -
STC8F1K 系列技术手册
8、
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
焊接完成后的效果
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 496 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录Q 更新记录
2022/3/9
1.
更正文档中的笔误
2021/12/17
1.
修改 STC8F1K08S2-28I-TSSOP20/SOP16 系列芯片外部晶振说明
2021/8/26
1.
创建 STC8F1K 系列数据手册
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 497 -
STC8F1K 系列技术手册
官方网站: www.STCMCUDATA.com
技术支持: 13922829991
选型顾问: 13922805190
附录R STC8 系列命名花絮
STC8A: 字母“A”代表 ADC,是 STC 12 位 ADC 的起航产品
STC8F: 无 ADC、PWM 和 PCA 功能,现 STC8F 的改版芯片与原始的 STC8F 管脚完全兼容,但内
部设计进行了优化和更新,用户需要修改程序,所以命名为 STC8C
STC8C: 字母“C”代表改版,是 STC8F 的改版芯片
STC8G: 字母“G”最初是芯片生产时打错字了,后来将错就错,定义 G 系列为“GOOD”系列,
STC8G 系列简单易学
STC8H: 字母“H”取自“高”的英文单词“High”的首字母,“高”表示“16 位高级 PWM”
深圳国芯人工智能有限公司
国内分销商电话: 0513-5501 2928/2929/2966
传真: 0513-5501 2926/2956/2947
- 498 -
产
品
授
权
书
致:江苏国芯科技有限公司
STC8A 系列和 STC8F 系列产品的知识产权归深圳国芯人工智
能有限公司所有。现授权江苏国芯科技有限公司可从事 STC8A 系
列和 STC8F 系列产品在中国的推广和销售工作。
授权单位:
授权时限:2019 年 10 月 24 日--2024 年 12 月 31 日
自主产权,生产可控
深圳国芯人工智能有限公司是中华人民共和国大陆独资企业,按中国法律
法规独立运营的企业,注册地址在深圳市前海深港合作区前湾一路 1 号 A 栋
201 室。
本手册所描述的器件是在中国境内自主研发,具备独立自主知识产权。
产品核心研发在中国境内,具备芯片设计、封装设计、结构设计、可靠性
设计、器件仿真、工艺模拟等全部设计能力;产品核心研发团队人员及带头人
全部为我国境内人员组成,其中研发团队带头人研发从业年限十年以上,具备
长期、稳定的后续支持能力,具有在我国境内申请的专利证书及软件著作权等。
晶圆制造:本器件设计完成后的晶圆制造加工,在中华人民共和国大陆境
内的晶圆厂加工制造完成,受中华人民共和国法律法规管理监管和控制,完全
可控。
封装制造:本器件设计完成后的封装制造,在中华人民共和国大陆境内的
封装厂加工完成,受中华人民共和国法律法规管理监管和控制,完全可控。
测试:本器件设计完成后的测试,在中华人民共和国大陆境内测试完成,
受中华人民共和国法律法规管理监管和控制,完全可控。
本器件全部关键工艺均在我国自有生产线上完成,可以长期供货,无被断
供的困扰。
特此说明。