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

  • 发资料

  • 发帖

  • 提问

  • 发视频

创作活动
STC8A8K64D4-45I-LQFP44

STC8A8K64D4-45I-LQFP44

  • 厂商:

    STC(宏晶科技)

  • 封装:

    LQFP44_10X10MM

  • 描述:

    16位MCU单片机 LQFP44_10X10MM Vi=1.9V~5.5V -40℃~+85℃

  • 数据手册
  • 价格&库存
STC8A8K64D4-45I-LQFP44 数据手册
深圳国芯人工智能有限公司 STC8A8K64D4 系列单片机 技术参考手册 技术支持网站:www.STCAI.com 官方技术论坛:www.STCAIMCU.com 资料更新日期:2023/9/12 (本文档可直接添加备注和标记) STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 目录 1 1.1 1.1.1 1.1.2 1.1.3 1.2 1.3 2 2.1 2.1.1 2.1.2 2.1.3 3 3.1 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.2 3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 3.2.10 4 4.1 4.2 4.3 4.4 4.5 4.6 5 5.1.1 单片机基础概述 ...................................................................................................................... 1 数制与编码 .............................................................................................................................. 1 数制转换 .................................................................................................................................. 1 原码、反码及补码 .................................................................................................................. 4 常用编码 .................................................................................................................................. 5 几种常用的逻辑运算及其图形符号 ...................................................................................... 5 STC8A8K64D4 单片机性能概述 ........................................................................................... 9 特性、价格及管脚 ................................................................................................................ 10 STC8A8K64D4-LQFP64/48/44,PDIP40 系列 ................................................................... 10 特性及价格(有 16 位硬件乘除法器 MDU16,准 16 位单片机) .................................. 10 管脚图,最小系统 ................................................................................................................ 13 管脚说明 ................................................................................................................................ 17 功能脚切换 ............................................................................................................................ 24 功能脚切换相关寄存器 ........................................................................................................ 24 总线速度控制寄存器(BUS_SPEED) .............................................................................. 25 外设端口切换控制寄存器 1(P_SW1),串口 1、CCP、SPI 切换 .................................. 25 外设端口切换控制寄存器 2(P_SW2),串口 2/3/4、I2C、比较器输出切换 ................ 25 时钟选择寄存器(MCLKOCR) ........................................................................................ 26 增强型 PWM 控制寄存器(PWMnCR) ............................................................................ 26 LCM 接口配置寄存器(LCMIFCFG)............................................................................... 29 范例程序 ................................................................................................................................ 30 串口 1 切换 ............................................................................................................................ 30 串口 2 切换 ............................................................................................................................ 31 串口 3 切换 ............................................................................................................................ 33 串口 4 切换 ............................................................................................................................ 34 SPI 切换 ................................................................................................................................. 36 PWM 切换 ............................................................................................................................. 37 PCA/CCP/PWM 切换 ............................................................................................................ 40 I2C 切换 ................................................................................................................................. 42 比较器输出切换 .................................................................................................................... 43 主时钟输出切换 .................................................................................................................... 45 封装尺寸图 ............................................................................................................................ 48 LQFP44 封装尺寸图(12mm*12mm) ............................................................................... 48 LQFP48 封装尺寸图(9mm*9mm) ................................................................................... 49 QFN48 封装尺寸图(6mm*6mm) ..................................................................................... 50 LQFP64 封装尺寸图(12mm*12mm) ............................................................................... 51 QFN64 封装尺寸图(8mm*8mm) ..................................................................................... 52 STC8A8K64D4 系列单片机命名规则 ................................................................................. 53 ISP 下载流程及典型应用线路图 ......................................................................................... 54 ISP 下载流程图(串口下载模式) ..................................................................................... 54 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -i- STC8A8K64D4 系列技术手册 5.1.2 5.2 5.2.1 5.2.2 5.2.3 5.2.4 5.2.5 5.2.6 5.2.7 5.2.8 5.2.9 5.2.10 5.3 5.4 5.4.1 5.4.2 5.4.3 5.4.4 5.4.5 6 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.1.6 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.4 6.4.1 6.4.2 6.5 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ISP 下载流程图(硬件/软件模拟 USB+串口模式) ......................................................... 55 STC8A8K64D4 系列 ISP 下载应用线路图 ......................................................................... 56 使用 STC-USB Link1D 工具下载,支持在线和脱机下载 ................................................ 56 软件模拟 USB 直接 ISP 下载,建议尝试,不支持仿真(5V 系统) ............................. 58 软件模拟 USB 直接 ISP 下载,建议尝试,不支持仿真(3.3V 系统) .......................... 60 使用一箭双雕之 USB 转串口工具下载 .............................................................................. 62 使用 U8-Mini 工具下载,支持 ISP 在线和脱机下载,也可支持仿真 ............................. 64 使用 U8W 工具下载,支持 ISP 在线和脱机下载,也可支持仿真 .................................. 65 使用 RS-232 转换器下载,也可支持仿真(使用高精度 ADC) ..................................... 67 使用 RS-232 转换器下载,也可支持仿真(使用一般精度 ADC) ................................. 68 使用 PL2303-GL 下载,也可支持仿真 ............................................................................... 69 单片机电源控制参考电路 .................................................................................................... 70 用 STC 一箭双雕之 USB 转双串口仿真 STC8 系列 MCU ................................................ 71 STC-ISP 下载软件高级应用 ................................................................................................. 80 发布项目程序 ........................................................................................................................ 80 程序加密后传输(防烧录时串口分析出程序) ................................................................ 84 发布项目程序+程序加密后传输结合使用 .......................................................................... 88 用户自定义下载(实现不停电下载) ................................................................................ 89 如何简单的控制下载次数,通过 ID 号来限制实际可以下载的 MCU 数量 ................... 93 时钟、复位、省电模式与系统电源管理 ............................................................................ 97 系统时钟控制 ........................................................................................................................ 97 系统时钟选择寄存器(CLKSEL) ..................................................................................... 97 时钟分频寄存器(CLKDIV) ............................................................................................. 98 内部高速高精度 IRC 控制寄存器(HIRCCR) ................................................................. 98 外部振荡器控制寄存器(XOSCCR) ................................................................................ 98 内部 32KHz 低速 IRC 控制寄存器(IRC32KCR) ........................................................... 99 主时钟输出控制寄存器(MCLKOCR) ............................................................................ 99 STC8A8K64D4 系列内部 IRC 频率调整............................................................................100 IRC 频段选择寄存器(IRCBAND)..................................................................................100 内部 IRC 频率调整寄存器(IRTRIM) .............................................................................100 内部 IRC 频率微调寄存器(LIRTRIM) ..........................................................................101 时钟分频寄存器(CLKDIV) ............................................................................................101 分频出 3MHz 用户工作频率,并用户动态改变频率追频示例 .......................................102 系统复位 ...............................................................................................................................105 看门狗复位(WDT_CONTR) ..........................................................................................106 软件复位(IAP_CONTR) .................................................................................................108 低压复位(RSTCFG) ........................................................................................................109 低电平上电复位参考电路(一般不需要) ....................................................................... 110 低电平按键手动复位参考电路 ........................................................................................... 110 传统 8051 高电平上电复位参考电路 ................................................................................. 111 外部晶振及外部时钟电路 ................................................................................................... 112 外部晶振输入电路 ............................................................................................................... 112 外部时钟输入电路(P1.6 不可用作普通 I/O) ................................................................. 112 时钟停振/省电模式与系统电源管理 .................................................................................. 112 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - ii - STC8A8K64D4 系列技术手册 6.5.1 6.6 6.6.1 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.7.5 6.7.6 6.7.7 6.7.8 6.7.9 6.7.10 6.7.11 6.7.12 6.7.13 6.7.14 7 7.1 7.2 7.2.1 7.2.2 7.2.3 7.2.4 7.2.5 7.2.6 7.2.7 7.3 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.4.6 7.5 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 电源控制寄存器(PCON) ................................................................................................ 112 掉电唤醒定时器 ................................................................................................................... 114 掉电唤醒定时器计数寄存器(WKTCL,WKTCH) ...................................................... 114 范例程序 ............................................................................................................................... 115 选择系统时钟源 ................................................................................................................... 115 主时钟分频输出 ................................................................................................................... 117 看门狗定时器应用 ............................................................................................................... 119 软复位实现自定义下载 .......................................................................................................121 低压检测 ...............................................................................................................................123 省电模式 ...............................................................................................................................125 使用 INT0/INT1/INT2/INT3/INT4 管脚中断唤醒省电模式..............................................127 使用 T0/T1/T2/T3/T4 管脚中断唤醒 MCU 省电模式........................................................130 使用 RxD/RxD2/RxD3/RxD4 管脚中断唤醒 MCU 省电模式 ...........................................135 使用 I2C 的 SDA 脚唤醒 MCU 省电模式 ..........................................................................138 使用掉电唤醒定时器唤醒省电模式 ...................................................................................141 LVD 中断唤醒省电模式,建议配合使用掉电唤醒定时器...............................................143 比较器中断唤醒省电模式,建议配合使用掉电唤醒定时器 ...........................................145 使用 LVD 功能检测工作电压(电池电压) .....................................................................148 存储器 ...................................................................................................................................153 程序存储器 ...........................................................................................................................153 数据存储器 ...........................................................................................................................154 内部 RAM .............................................................................................................................154 程序状态寄存器(PSW) ...................................................................................................154 内部扩展 RAM,XRAM,XDATA ....................................................................................155 辅助寄存器(AUXR) ........................................................................................................155 外部扩展 RAM,XRAM,XDATA ....................................................................................157 总线速度控制寄存器(BUS_SPEED) .............................................................................157 8051 中可位寻址的数据存储器 ..........................................................................................159 存储器中的特殊参数,在 ISP 下载时可烧录进程序 FLASH ..........................................161 只读特殊功能寄存器中存储的唯一 ID 号和重要参数(CHIPID) ................................163 CHIP 之全球唯一 ID 号解读 ...............................................................................................164 CHIP 之内部参考信号源解读 .............................................................................................164 CHIP 之内部 32K 的 IRC 振荡频率解读............................................................................165 CHIP 之高精度 IRC 参数解读 ............................................................................................166 CHIP 之测试时间参数解读 .................................................................................................167 CHIP 之芯片封装形式编号解读 .........................................................................................167 范例程序 ...............................................................................................................................168 读取内部 1.19V 参考信号源-BGV 值 (从 CHIPID 中读取) .............................................168 读取内部 1.19V 参考信号源-BGV 值 (从 Flash 程序存储器(ROM)中读取) ...........171 读取内部 1.19V 参考信号源-BGV 值 (从 RAM 中读取) .................................................174 读取全球唯一 ID 号 (从 CHIPID 中读取) .........................................................................177 读取全球唯一 ID 号 (从 Flash 程序存储器(ROM)中读取) ........................................181 读取全球唯一 ID 号 (从 RAM 中读取) .............................................................................184 读取 32K 掉电唤醒定时器的频率 (从 CHIPID 中读取) ..................................................187 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - iii - STC8A8K64D4 系列技术手册 7.5.8 7.5.9 7.5.10 7.5.11 7.5.12 8 8.1 8.2 9 9.1 9.1.1 9.1.2 9.1.3 9.1.4 9.1.5 9.1.6 9.1.7 9.2 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.3.6 9.3.7 9.3.8 9.4 9.4.1 9.4.2 9.5 9.6 9.7 9.8 9.9 9.10 9.11 10 10.1 10.1.1 10.1.2 10.1.3 10.1.4 10.1.5 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 读取 32K 掉电唤醒定时器的频率 (从 Flash 程序存储器(ROM)中读取) .................191 读取 32K 掉电唤醒定时器的频率 (从 RAM 中读取) .......................................................194 用户自定义内部 IRC 频率 (从 CHIPID 中读取)...............................................................197 用户自定义内部 IRC 频率 (从 Flash 程序存储器(ROM)中读取) .............................204 用户自定义内部 IRC 频率 (从 RAM 中读取) ...................................................................209 特殊功能寄存器 ...................................................................................................................212 STC8A8K64D4-64Pin/48Pin 系列 .......................................................................................212 特殊功能寄存器列表 ...........................................................................................................214 I/O 口 ....................................................................................................................................224 I/O 口相关寄存器 .................................................................................................................224 端口数据寄存器(Px) .......................................................................................................226 端口模式配置寄存器(PxM0,PxM1) ............................................................................226 端口上拉电阻控制寄存器(PxPU) ..................................................................................227 端口施密特触发控制寄存器(PxNCS) ...........................................................................227 端口电平转换速度控制寄存器(PxSR) ..........................................................................227 端口驱动电流控制寄存器(PxDR) .................................................................................228 端口数字信号输入使能控制寄存器(PxIE) ...................................................................228 配置 I/O 口............................................................................................................................229 I/O 的结构图.........................................................................................................................231 准双向口(弱上拉) ...........................................................................................................231 推挽输出 ...............................................................................................................................231 高阻输入 ...............................................................................................................................232 开漏输出 ...............................................................................................................................232 新增 4.1K 上拉电阻 .............................................................................................................233 如何设置 I/O 口对外输出速度 ............................................................................................233 如何设置 I/O 口电流驱动能力 ............................................................................................234 如何降低 I/O 口对外辐射 ....................................................................................................234 范例程序 ...............................................................................................................................235 端口模式设置 .......................................................................................................................235 双向口读写操作 ...................................................................................................................236 一种典型三极管控制电路 ...................................................................................................239 典型发光二极管控制电路 ...................................................................................................239 混合电压供电系统 3V/5V 器件 I/O 口互连 .......................................................................240 如何让 I/O 口上电复位时为低电平 ....................................................................................241 利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图 ...........................................242 I/O 口直接驱动 LED 数码管应用线路图 ...........................................................................243 用 STC 系列 MCU 的 I/O 口直接驱动段码 LCD ..............................................................244 指令系统 ...............................................................................................................................263 寻址方式 ...............................................................................................................................263 立即寻址 ...............................................................................................................................263 直接寻址 ...............................................................................................................................263 间接寻址 ...............................................................................................................................263 寄存器寻址 ...........................................................................................................................263 相对寻址 ...............................................................................................................................263 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - iv - STC8A8K64D4 系列技术手册 10.1.6 10.1.7 10.2 10.3 10.4 10.5 11 11.1 11.2 11.3 11.4 11.4.1 11.4.2 11.4.3 11.5 11.5.1 11.5.2 11.5.3 11.5.4 11.5.5 11.5.6 11.5.7 11.5.8 11.5.9 11.5.10 11.5.11 11.5.12 11.5.13 11.5.14 11.5.15 11.5.16 11.5.17 11.5.18 11.5.19 11.5.20 12 12.1 12.1.1 12.1.2 12.1.3 12.1.4 12.1.5 12.2 12.2.1 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 变址寻址 ...............................................................................................................................264 位寻址 ...................................................................................................................................264 指令表 ...................................................................................................................................264 指令详解(中文) ...............................................................................................................267 指令详解(英文) ...............................................................................................................300 多级流水线内核的中断响应 ...............................................................................................335 中断系统 ...............................................................................................................................337 STC8A8K64D4 系列中断源 ................................................................................................337 STC8A8K64D4 中断结构图 ................................................................................................340 STC8A8K64D4 系列中断列表 ............................................................................................341 中断相关寄存器 ...................................................................................................................344 中断使能寄存器(中断允许位) .......................................................................................346 中断请求寄存器(中断标志位) .......................................................................................351 中断优先级寄存器 ...............................................................................................................355 范例程序 ...............................................................................................................................361 INT0 中断(上升沿和下降沿),可同时支持上升沿和下降沿 ........................................361 INT0 中断(下降沿) .........................................................................................................363 INT1 中断(上升沿和下降沿),可同时支持上升沿和下降沿 ........................................364 INT1 中断(下降沿) .........................................................................................................366 INT2 中断(下降沿),只支持下降沿中断........................................................................368 INT3 中断(下降沿),只支持下降沿中断........................................................................370 INT4 中断(下降沿),只支持下降沿中断........................................................................372 定时器 0 中断 .......................................................................................................................374 定时器 1 中断 .......................................................................................................................375 定时器 2 中断 .......................................................................................................................377 定时器 3 中断 .......................................................................................................................379 定时器 4 中断 .......................................................................................................................382 UART1 中断 .........................................................................................................................384 UART2 中断 .........................................................................................................................386 UART3 中断 .........................................................................................................................389 UART4 中断 .........................................................................................................................391 LVD 中断 ..............................................................................................................................394 SPI 中断 ................................................................................................................................396 比较器中断 ...........................................................................................................................398 I2C 中断 ................................................................................................................................400 普通 I/O 口均可中断,不是传统外部中断 .......................................................................404 I/O 口中断相关寄存器 .........................................................................................................404 端口中断使能寄存器(PxINTE) ......................................................................................405 端口中断标志寄存器(PxINTF) ......................................................................................405 端口中断模式配置寄存器(PxIM0,PxIM1) .................................................................406 端口中断优先级控制寄存器(PINIPL,PINIPH) ..........................................................406 端口中断掉电唤醒使能寄存器(PxWKUE) ...................................................................406 范例程序 ...............................................................................................................................408 P0 口下降沿中断 ..................................................................................................................408 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -v- STC8A8K64D4 系列技术手册 12.2.2 12.2.3 12.2.4 13 13.1 13.2 13.2.1 13.2.2 13.2.3 13.2.4 13.2.5 13.2.6 13.2.7 13.2.8 13.2.9 13.2.10 13.2.11 13.2.12 13.2.13 13.2.14 13.2.15 13.3 13.3.1 13.3.2 13.3.3 13.3.4 13.3.5 13.3.6 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.4.5 13.4.6 13.4.7 13.4.8 13.4.9 13.5 13.5.1 13.5.2 13.5.3 13.5.4 13.5.5 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1 口上升沿中断 .................................................................................................................. 411 P2 口低电平中断 ..................................................................................................................415 P3 口高电平中断 ..................................................................................................................419 定时器/计数器 ......................................................................................................................424 定时器的相关寄存器 ...........................................................................................................424 定时器 0/1 .............................................................................................................................426 定时器 0/1 控制寄存器(TCON) .....................................................................................426 定时器 0/1 模式寄存器(TMOD) ....................................................................................426 定时器 0 模式 0(16 位自动重装载模式) .......................................................................427 定时器 0 模式 1(16 位不可重装载模式) .......................................................................428 定时器 0 模式 2(8 位自动重装载模式) .........................................................................429 定时器 0 模式 3(不可屏蔽中断 16 位自动重装载,实时操作系统节拍器)...............429 定时器 1 模式 0(16 位自动重装载模式) .......................................................................430 定时器 1 模式 1(16 位不可重装载模式) .......................................................................431 定时器 1 模式 2(8 位自动重装载模式) .........................................................................432 定时器 0 计数寄存器(TL0,TH0) .................................................................................432 定时器 1 计数寄存器(TL1,TH1) .................................................................................432 辅助寄存器 1(AUXR) .....................................................................................................432 中断与时钟输出控制寄存器(INTCLKO) ......................................................................433 定时器 0 定时计算公式 .......................................................................................................433 定时器 1 定时计算公式 .......................................................................................................434 定时器 2(24 位定时器,8 位预分频+16 位定时) .........................................................435 辅助寄存器 1(AUXR) .....................................................................................................435 中断与时钟输出控制寄存器(INTCLKO) ......................................................................435 定时器 2 计数寄存器(T2L,T2H) .................................................................................435 定时器 2 的 8 位预分频寄存器(TM2PS) .......................................................................435 定时器 2 工作模式 ...............................................................................................................436 定时器 2 计算公式 ...............................................................................................................436 定时器 3/4(24 位定时器,8 位预分频+16 位定时) ......................................................437 定时器 4/3 控制寄存器(T4T3M)....................................................................................437 定时器 3 计数寄存器(T3L,T3H) .................................................................................437 定时器 4 计数寄存器(T4L,T4H) .................................................................................437 定时器 3 的 8 位预分频寄存器(TM3PS) .......................................................................438 定时器 4 的 8 位预分频寄存器(TM4PS) .......................................................................438 定时器 3 工作模式 ...............................................................................................................438 定时器 4 工作模式 ...............................................................................................................440 定时器 3 计算公式 ...............................................................................................................440 定时器 4 计算公式 ...............................................................................................................441 范例程序 ...............................................................................................................................442 定时器 0(模式 0-16 位自动重载),用作定时 ..............................................................442 定时器 0(模式 1-16 位不自动重载) ,用作定时 ..........................................................443 定时器 0(模式 2-8 位自动重载),用作定时 ................................................................445 定时器 0(模式 3-16 位自动重载不可屏蔽中断) ,用作定时 ......................................447 定时器 0(外部计数-扩展 T0 为外部下降沿中断) ......................................................449 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - vi - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 定时器 0(测量脉宽-INT0 高电平宽度).......................................................................451 定时器 0(模式 0),时钟分频输出 ...................................................................................453 定时器 1(模式 0-16 位自动重载),用作定时 ..............................................................455 定时器 1(模式 1-16 位不自动重载) ,用作定时 ..........................................................457 定时器 1(模式 2-8 位自动重载),用作定时 ................................................................459 定时器 1(外部计数-扩展 T1 为外部下降沿中断) ......................................................460 定时器 1(测量脉宽-INT1 高电平宽度).......................................................................462 定时器 1(模式 0),时钟分频输出 ...................................................................................464 定时器 1(模式 0)做串口 1 波特率发生器 .....................................................................466 定时器 1(模式 2)做串口 1 波特率发生器 .....................................................................470 定时器 2(16 位自动重载),用作定时 .............................................................................474 定时器 2(外部计数-扩展 T2 为外部下降沿中断) ......................................................476 定时器 2,时钟分频输出 ....................................................................................................478 定时器 2 做串口 1 波特率发生器 .......................................................................................480 定时器 2 做串口 2 波特率发生器 .......................................................................................484 定时器 2 做串口 3 波特率发生器 .......................................................................................488 定时器 2 做串口 4 波特率发生器 .......................................................................................492 定时器 3(16 位自动重载),用作定时 .............................................................................496 定时器 3(外部计数-扩展 T3 为外部下降沿中断) ......................................................498 定时器 3,时钟分频输出 ....................................................................................................500 定时器 3 做串口 3 波特率发生器 .......................................................................................502 定时器 4(16 位自动重载),用作定时 .............................................................................506 定时器 4(外部计数-扩展 T4 为外部下降沿中断) ......................................................509 定时器 4,时钟分频输出 .................................................................................................... 511 定时器 4 做串口 4 波特率发生器 .......................................................................................513 14 串口通信 ...............................................................................................................................518 14.1 串口功能脚切换 ...................................................................................................................518 14.2 串口相关寄存器 ...................................................................................................................518 14.3 串口 1 ....................................................................................................................................520 14.3.1 串口 1 控制寄存器(SCON) ............................................................................................520 14.3.2 串口 1 数据寄存器(SBUF) .............................................................................................520 14.3.3 电源管理寄存器(PCON) ................................................................................................521 14.3.4 辅助寄存器 1(AUXR) .....................................................................................................521 14.3.5 串口 1 模式 0,模式 0 波特率计算公式 ............................................................................521 14.3.6 串口 1 模式 1,模式 1 波特率计算公式 ............................................................................522 14.3.7 串口 1 模式 2,模式 2 波特率计算公式 ............................................................................525 14.3.8 串口 1 模式 3,模式 3 波特率计算公式 ............................................................................525 14.3.9 自动地址识别 .......................................................................................................................526 14.3.10 串口 1 从机地址控制寄存器(SADDR,SADEN) ........................................................526 14.4 串口 2 ....................................................................................................................................528 14.4.1 串口 2 控制寄存器(S2CON) ..........................................................................................528 14.4.2 串口 2 数据寄存器(S2BUF) ...........................................................................................528 14.4.3 串口 2 模式 0,模式 0 波特率计算公式 ............................................................................528 14.4.4 串口 2 模式 1,模式 1 波特率计算公式 ............................................................................529 13.5.6 13.5.7 13.5.8 13.5.9 13.5.10 13.5.11 13.5.12 13.5.13 13.5.14 13.5.15 13.5.16 13.5.17 13.5.18 13.5.19 13.5.20 13.5.21 13.5.22 13.5.23 13.5.24 13.5.25 13.5.26 13.5.27 13.5.28 13.5.29 13.5.30 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - vii - STC8A8K64D4 系列技术手册 14.5 14.5.1 14.5.2 14.5.3 14.5.4 14.6 14.6.1 14.6.2 14.6.3 14.6.4 14.7 14.8 14.8.1 14.8.2 14.8.3 14.8.4 14.8.5 14.8.6 14.8.7 14.8.8 14.8.9 14.8.10 15 15.1 15.2 15.3 15.3.1 15.3.2 15.3.3 15.4 15.4.1 15.4.2 15.4.3 15.4.4 16 16.1 16.2 16.2.1 16.2.2 16.2.3 16.2.4 16.2.5 16.2.6 16.3 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 串口 3 ....................................................................................................................................531 串口 3 控制寄存器(S3CON) ..........................................................................................531 串口 3 数据寄存器(S3BUF) ...........................................................................................531 串口 3 模式 0,模式 0 波特率计算公式 ............................................................................531 串口 3 模式 1,模式 1 波特率计算公式 ............................................................................532 串口 4 ....................................................................................................................................534 串口 4 控制寄存器(S4CON) ..........................................................................................534 串口 4 数据寄存器(S4BUF) ...........................................................................................534 串口 4 模式 0,模式 0 波特率计算公式 ............................................................................534 串口 4 模式 1,模式 1 波特率计算公式 ............................................................................535 串口注意事项 .......................................................................................................................537 范例程序 ...............................................................................................................................538 串口 1 使用定时器 2 做波特率发生器 ...............................................................................538 串口 1 使用定时器 1(模式 0)做波特率发生器 .............................................................541 串口 1 使用定时器 1(模式 2)做波特率发生器 .............................................................545 串口 2 使用定时器 2 做波特率发生器 ...............................................................................549 串口 3 使用定时器 2 做波特率发生器 ...............................................................................553 串口 3 使用定时器 3 做波特率发生器 ...............................................................................557 串口 4 使用定时器 2 做波特率发生器 ...............................................................................561 串口 4 使用定时器 4 做波特率发生器 ...............................................................................565 串口多机通讯 .......................................................................................................................570 串口转 LIN 总线 ..................................................................................................................571 比较器,掉电检测,内部 1.19V 参考信号源(BGV)...................................................580 比较器输出功能脚切换 .......................................................................................................580 比较器内部结构图 ...............................................................................................................580 比较器相关的寄存器 ...........................................................................................................581 比较器控制寄存器 1(CMPCR1) ....................................................................................581 比较器控制寄存器 2(CMPCR2) ....................................................................................582 比较器扩展配置寄存器(CMPEXCFG) ..........................................................................582 范例程序 ...............................................................................................................................584 比较器的使用(中断方式) ...............................................................................................584 比较器的使用(查询方式) ...............................................................................................587 比较器作外部掉电检测(掉电过程中应及时保存用户数据到 EEPROM 中) .............590 比较器检测工作电压(电池电压) ...................................................................................591 IAP/EEPROM/DATA-FLASH ...........................................................................................596 EEPROM 操作时间 ..............................................................................................................596 EEPROM 相关的寄存器 ......................................................................................................596 EEPROM 数据寄存器(IAP_DATA) ...............................................................................596 EEPROM 地址寄存器(IAP_ADDR) ..............................................................................597 EEPROM 命令寄存器(IAP_CMD) ................................................................................597 EEPROM 触发寄存器(IAP_TRIG) ................................................................................597 EEPROM 控制寄存器(IAP_CONTR) ............................................................................597 EEPROM 等待时间控制寄存器(IAP_TPS) ...................................................................598 EEPROM 大小及地址 ..........................................................................................................599 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - viii - STC8A8K64D4 系列技术手册 16.4 16.4.1 16.4.2 16.4.3 16.4.4 16.4.5 17 17.1 17.1.1 17.1.2 17.1.3 17.1.4 17.1.5 17.2 17.2.1 17.2.2 17.2.3 17.2.4 17.3 17.4 17.4.1 17.4.2 17.5 17.5.1 17.5.2 17.5.3 17.5.4 17.5.5 17.5.6 17.5.7 17.5.8 17.5.9 18 18.1 18.2 18.2.1 18.2.2 18.2.3 18.2.4 18.2.5 18.2.6 18.3 18.3.1 18.3.2 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 范例程序 ...............................................................................................................................601 EEPROM 基本操作 ..............................................................................................................601 使用 MOVC 读取 EEPROM ................................................................................................604 使用串口送出 EEPROM 数据 .............................................................................................608 串口 1 读写 EEPROM-带 MOVC 读...................................................................................612 口令擦除写入-多扇区备份-串口 1 操作.............................................................................619 ADC 模数转换,内部 1.19V 参考信号源(BGV) .........................................................628 ADC 相关的寄存器..............................................................................................................628 ADC 控制寄存器(ADC_CONTR),PWM 触发 ADC 控制 ...........................................628 ADC 配置寄存器(ADCCFG) .........................................................................................629 ADC 转换结果寄存器(ADC_RES,ADC_RESL) ........................................................630 ADC 时序控制寄存器(ADCTIM) ..................................................................................631 ADC 扩展配置寄存器(ADCEXCFG) ............................................................................632 ADC 相关计算公式..............................................................................................................633 ADC 速度计算公式..............................................................................................................633 ADC 转换结果计算公式......................................................................................................633 反推 ADC 输入电压计算公式 .............................................................................................633 反推工作电压计算公式 .......................................................................................................634 12 位 ADC 静态特性............................................................................................................634 ADC 应用参考线路图..........................................................................................................635 高精度 ADC 应用.................................................................................................................635 ADC 一般应用(对 ADC 精度要求不高的应用) ...........................................................636 范例程序 ...............................................................................................................................637 ADC 基本操作(查询方式) ..............................................................................................637 ADC 基本操作(中断方式) ..............................................................................................639 格式化 ADC 转换结果.........................................................................................................641 ADC 自动转换多次取平均值 ..............................................................................................644 利用 ADC 第 15 通道测量外部电压或电池电压 ...............................................................646 ADC 做电容感应触摸按键 ..................................................................................................649 ADC 作按键扫描应用线路图 ..............................................................................................662 检测负电压参考线路图 .......................................................................................................663 常用加法电路在 ADC 中的应用 .........................................................................................664 PCA/CCP/PWM 应用 .........................................................................................................665 PCA 功能脚切换 ..................................................................................................................665 PCA 相关的寄存器 ..............................................................................................................665 PCA 控制寄存器(CCON) ...............................................................................................666 PCA 模式寄存器(CMOD) ..............................................................................................666 PCA 计数器寄存器(CL,CH) ........................................................................................667 PCA 模块模式控制寄存器(CCAPMn) ..........................................................................667 PCA 模块模式捕获值/比较值寄存器(CCAPnL,CCAPnH) .......................................667 PCA 模块 PWM 模式控制寄存器(PCA_PWMn)..........................................................668 PCA 工作模式 ......................................................................................................................669 捕获模式 ...............................................................................................................................669 软件定时器模式 ...................................................................................................................669 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - ix - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 高速脉冲输出模式 ...............................................................................................................670 PWM 脉宽调制模式及频率计算公式.................................................................................670 利用 CCP/PCA/PWM 模块实现 8~16 位 DAC 的参考线路图 ..........................................674 范例程序 ...............................................................................................................................675 PCA 输出 PWM(6/7/8/10 位) .........................................................................................675 PCA 捕获测量脉冲宽度 ......................................................................................................678 PCA 实现 16 位软件定时 ....................................................................................................681 PCA 输出高速脉冲 ..............................................................................................................685 PCA 扩展外部中断 ..............................................................................................................688 19 精度可达 15 位的增强型 PWM ..........................................................................................691 19.1 增强型 PWM 输出功能脚切换............................................................................................691 19.2 PWM 相关的寄存器 ............................................................................................................693 19.2.1 增强型 PWM 全局配置寄存器(PWMSET) ...................................................................694 19.2.2 增强型 PWM 配置寄存器(PWMCFG) ..........................................................................694 19.2.3 PWM 中断标志寄存器(PWMIF) ...................................................................................695 19.2.4 PWM 异常检测控制寄存器(PWMnFDCR) ...................................................................695 19.2.5 PWM 计数器寄存器(PWMCH,PWMCL) ...................................................................696 19.2.6 PWM 时钟选择寄存器(PWMCKS),输出频率计算公式 .............................................696 19.2.7 PWM 触发 ADC 计数器寄存器(PWMTADC) ..............................................................697 19.2.8 PWM 电平输出设置计数值寄存器(PWMnT1,PWMnT2) .........................................697 19.2.9 PWM 通道控制寄存器(PWMnCR) ................................................................................698 19.2.10 PWM 通道电平保持控制寄存器(PWMnHLD) .............................................................699 19.3 范例程序 ...............................................................................................................................700 19.3.1 输出任意周期和任意占空比的波形 ...................................................................................700 19.3.2 两路 PWM 实现互补对称带死区控制的波形 ....................................................................702 19.3.3 PWM 实现渐变灯(呼吸灯).............................................................................................706 19.3.4 使用 PWM 触发 ADC 转换 .................................................................................................710 19.3.5 增强型 PWM 时钟输出应用(系统时钟 2 分频输出) ....................................................714 20 同步串行外设接口 SPI ........................................................................................................716 20.1 SPI 功能脚切换 ....................................................................................................................716 20.2 SPI 相关的寄存器 ................................................................................................................716 20.2.1 SPI 状态寄存器(SPSTAT)...............................................................................................716 20.2.2 SPI 控制寄存器(SPCTL),SPI 速度控制........................................................................716 20.2.3 SPI 数据寄存器(SPDAT) ................................................................................................717 20.3 SPI 通信方式 ........................................................................................................................718 20.3.1 单主单从 ...............................................................................................................................718 20.3.2 互为主从 ...............................................................................................................................718 20.3.3 单主多从 ...............................................................................................................................719 20.4 配置 SPI ................................................................................................................................720 20.5 数据模式 ...............................................................................................................................722 20.6 范例程序 ...............................................................................................................................723 20.6.1 SPI 单主单从系统主机程序(中断方式) ........................................................................723 20.6.2 SPI 单主单从系统从机程序(中断方式) ........................................................................725 20.6.3 SPI 单主单从系统主机程序(查询方式) ........................................................................727 18.3.3 18.3.4 18.4 18.5 18.5.1 18.5.2 18.5.3 18.5.4 18.5.5 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -x- STC8A8K64D4 系列技术手册 20.6.4 20.6.5 20.6.6 21 21.1 21.2 21.3 21.3.1 21.3.2 21.3.3 21.3.4 21.4 21.4.1 21.4.2 21.4.3 21.4.4 21.5 21.5.1 21.5.2 21.5.3 21.5.4 21.5.5 21.5.6 22 22.1 22.2 22.2.1 22.2.2 22.2.3 22.2.4 22.2.5 22.3 22.3.1 22.3.2 23 23.1 23.2 23.2.1 23.2.2 23.2.3 23.2.4 23.2.5 23.2.6 23.2.7 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 SPI 单主单从系统从机程序(查询方式) ........................................................................729 SPI 互为主从系统程序(中断方式) ................................................................................731 SPI 互为主从系统程序(查询方式) ................................................................................734 I2C 总线 ................................................................................................................................738 I2C 功能脚切换 ....................................................................................................................738 I2C 相关的寄存器 .................................................................................................................738 I2C 主机模式.........................................................................................................................739 I2C 配置寄存器(I2CCFG),总线速度控制 ....................................................................739 I2C 主机控制寄存器(I2CMSCR) ...................................................................................740 I2C 主机辅助控制寄存器(I2CMSAUX) ........................................................................741 I2C 主机状态寄存器(I2CMSST) ....................................................................................741 I2C 从机模式.........................................................................................................................743 I2C 从机控制寄存器(I2CSLCR) ....................................................................................743 I2C 从机状态寄存器(I2CSLST) .....................................................................................743 I2C 从机地址寄存器(I2CSLADR) .................................................................................745 I2C 数据寄存器(I2CTXD,I2CRXD)............................................................................746 范例程序 ...............................................................................................................................747 I2C 主机模式访问 AT24C256(中断方式) ......................................................................747 I2C 主机模式访问 AT24C256(查询方式) ......................................................................753 I2C 主机模式访问 PCF8563.................................................................................................758 I2C 从机模式(中断方式) .................................................................................................764 I2C 从机模式(查询方式) .................................................................................................769 测试 I2C 从机模式代码的主机代码 ....................................................................................773 LCM 接口.............................................................................................................................780 LCM 接口功能脚切换 .........................................................................................................780 LCM 相关的寄存器 .............................................................................................................780 LCM 接口配置寄存器(LCMIFCFG)..............................................................................781 LCM 接口配置寄存器 2(LCMIFCFG2).........................................................................781 LCM 接口控制寄存器(LCMIFCR) ................................................................................782 LCM 接口状态寄存器(LCMIFSTA) ..............................................................................782 LCM 接口数据寄存器(LCMIFDATL,LCMIFDATH) ................................................782 LCD 接口时序图 ..................................................................................................................783 I8080 模式.............................................................................................................................783 M6800 模式 ..........................................................................................................................784 DMA .....................................................................................................................................785 DMA 相关的寄存器 .............................................................................................................785 存储器与存储器之间的数据读写(M2M_DMA) ...........................................................788 M2M_DMA 配置寄存器(DMA_M2M_CFG)................................................................788 M2M_DMA 控制寄存器(DMA_M2M_CR) ..................................................................788 M2M_DMA 状态寄存器(DMA_M2M_STA) ................................................................788 M2M_DMA 传输总字节寄存器(DMA_M2M_AMT)...................................................789 M2M_DMA 传输完成字节寄存器(DMA_M2M_DONE) ............................................789 M2M_DMA 发送地址寄存器(DMA_M2M_TXAx) .....................................................789 M2M_DMA 接收地址寄存器(DMA_M2M_RXAx) .....................................................789 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - xi - STC8A8K64D4 系列技术手册 23.3 23.3.1 23.3.2 23.3.3 23.3.4 23.3.5 23.3.6 23.3.7 23.4 23.4.1 23.4.2 23.4.3 23.4.4 23.4.5 23.4.6 23.4.7 23.4.8 23.5 23.5.1 23.5.2 23.5.3 23.5.4 23.5.5 23.5.6 23.5.7 23.5.8 23.5.9 23.5.10 23.5.11 23.5.12 23.6 23.6.1 23.6.2 23.6.3 23.6.4 23.6.5 23.6.6 23.6.7 23.6.8 23.6.9 23.6.10 23.6.11 23.6.12 23.7 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ADC 数据自动存储(ADC_DMA) ..................................................................................790 ADC_DMA 配置寄存器(DMA_ADC_CFG) .................................................................790 ADC_DMA 控制寄存器(DMA_ADC_CR) ...................................................................790 ADC_DMA 状态寄存器(DMA_ADC_STA) .................................................................790 ADC_DMA 接收地址寄存器(DMA_ADC_RXAx) ......................................................790 ADC_DMA 配置寄存器 2(DMA_ADC_CFG2) ............................................................791 ADC_DMA 通道使能寄存器(DMA_ADC_CHSWx) ...................................................791 ADC_DMA 的数据存储格式 ..............................................................................................792 SPI 与存储器之间的数据交换(SPI_DMA) ...................................................................794 SPI_DMA 配置寄存器(DMA_SPI_CFG) ......................................................................794 SPI_DMA 控制寄存器(DMA_SPI_CR) .........................................................................794 SPI_DMA 状态寄存器(DMA_SPI_STA) .......................................................................795 SPI_DMA 传输总字节寄存器(DMA_SPI_AMT) .........................................................795 SPI_DMA 传输完成字节寄存器(DMA_SPI_DONE) ...................................................795 SPI_DMA 发送地址寄存器(DMA_SPI_TXAx) ............................................................795 SPI_DMA 接收地址寄存器(DMA_SPI_RXAx)............................................................795 SPI_DMA 配置寄存 2 器(DMA_SPI_CFG2) ................................................................796 串口 1 与存储器之间的数据交换(UR1T_DMA,UR1R_DMA).................................797 UR1T_DMA 配置寄存器(DMA_UR1T_CFG) ..............................................................797 UR1T_DMA 控制寄存器(DMA_UR1T_CR) ................................................................797 UR1T_DMA 状态寄存器(DMA_UR1T_STA) ..............................................................797 UR1T_DMA 传输总字节寄存器(DMA_UR1T_AMT) .................................................798 UR1T_DMA 传输完成字节寄存器(DMA_UR1T_DONE) ...........................................798 UR1T_DMA 发送地址寄存器(DMA_UR1T_TXAx) ...................................................798 UR1R_DMA 配置寄存器(DMA_UR1R_CFG) .............................................................798 UR1R_DMA 控制寄存器(DMA_UR1R_CR) ................................................................798 UR1R_DMA 状态寄存器(DMA_UR1R_STA) ..............................................................799 UR1R_DMA 传输总字节寄存器(DMA_UR1R_AMT) ................................................799 UR1R_DMA 传输完成字节寄存器(DMA_UR1R_DONE) ..........................................799 UR1R_DMA 接收地址寄存器(DMA_UR1T_RXAx) ...................................................799 串口 2 与存储器之间的数据交换(UR2T_DMA,UR2R_DMA).................................800 UR2T_DMA 配置寄存器(DMA_UR2T_CFG) ..............................................................800 UR2T_DMA 控制寄存器(DMA_UR2T_CR) ................................................................800 UR2T_DMA 状态寄存器(DMA_UR2T_STA) ..............................................................800 UR2T_DMA 传输总字节寄存器(DMA_UR2T_AMT) .................................................801 UR2T_DMA 传输完成字节寄存器(DMA_UR2T_DONE) ...........................................801 UR2T_DMA 发送地址寄存器(DMA_UR2T_TXAx) ...................................................801 UR2R_DMA 配置寄存器(DMA_UR2R_CFG) .............................................................801 UR2R_DMA 控制寄存器(DMA_UR2R_CR) ................................................................801 UR2R_DMA 状态寄存器(DMA_UR2R_STA) ..............................................................802 UR2R_DMA 传输总字节寄存器(DMA_UR2R_AMT) ................................................802 UR2R_DMA 传输完成字节寄存器(DMA_UR2R_DONE) ..........................................802 UR2R_DMA 接收地址寄存器(DMA_UR2T_RXAx) ...................................................802 串口 3 与存储器之间的数据交换(UR3T_DMA,UR3R_DMA).................................803 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - xii - STC8A8K64D4 系列技术手册 23.7.1 23.7.2 23.7.3 23.7.4 23.7.5 23.7.6 23.7.7 23.7.8 23.7.9 23.7.10 23.7.11 23.7.12 23.8 23.8.1 23.8.2 23.8.3 23.8.4 23.8.5 23.8.6 23.8.7 23.8.8 23.8.9 23.8.10 23.8.11 23.8.12 23.9 23.9.1 23.9.2 23.9.3 23.9.4 23.9.5 23.9.6 23.9.7 23.10 23.10.1 23.10.2 24 24.1 24.1.1 24.1.2 24.1.3 24.1.4 24.2 24.2.1 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 UR3T_DMA 配置寄存器(DMA_UR3T_CFG) ..............................................................803 UR3T_DMA 控制寄存器(DMA_UR3T_CR) ................................................................803 UR3T_DMA 状态寄存器(DMA_UR3T_STA) ..............................................................803 UR3T_DMA 传输总字节寄存器(DMA_UR3T_AMT) .................................................804 UR3T_DMA 传输完成字节寄存器(DMA_UR3T_DONE) ...........................................804 UR3T_DMA 发送地址寄存器(DMA_UR3T_TXAx) ...................................................804 UR3R_DMA 配置寄存器(DMA_UR3R_CFG) .............................................................804 UR3R_DMA 控制寄存器(DMA_UR3R_CR) ................................................................804 UR3R_DMA 状态寄存器(DMA_UR3R_STA) ..............................................................805 UR3R_DMA 传输总字节寄存器(DMA_UR3R_AMT) ................................................805 UR3R_DMA 传输完成字节寄存器(DMA_UR3R_DONE) ..........................................805 UR3R_DMA 接收地址寄存器(DMA_UR3T_RXAx) ...................................................805 串口 4 与存储器之间的数据交换(UR4T_DMA,UR4R_DMA).................................806 UR4T_DMA 配置寄存器(DMA_UR4T_CFG) ..............................................................806 UR4T_DMA 控制寄存器(DMA_UR4T_CR) ................................................................806 UR4T_DMA 状态寄存器(DMA_UR4T_STA) ..............................................................806 UR4T_DMA 传输总字节寄存器(DMA_UR4T_AMT) .................................................807 UR4T_DMA 传输完成字节寄存器(DMA_UR4T_DONE) ...........................................807 UR4T_DMA 发送地址寄存器(DMA_UR4T_TXAx) ...................................................807 UR4R_DMA 配置寄存器(DMA_UR4R_CFG) .............................................................807 UR4R_DMA 控制寄存器(DMA_UR4R_CR) ................................................................807 UR4R_DMA 状态寄存器(DMA_UR4R_STA) ..............................................................808 UR4R_DMA 传输总字节寄存器(DMA_UR4R_AMT) ................................................808 UR4R_DMA 传输完成字节寄存器(DMA_UR4R_DONE) ..........................................808 UR4R_DMA 接收地址寄存器(DMA_UR4T_RXAx) ...................................................808 LCM 与存储器之间的数据读写(LCM_DMA)..............................................................809 LCM_DMA 配置寄存器(DMA_LCM_CFG) ................................................................809 LCM_DMA 控制寄存器(DMA_LCM_CR) ...................................................................809 LCM_DMA 状态寄存器(DMA_LCM_STA) .................................................................809 LCM_DMA 传输总字节寄存器(DMA_LCM_AMT) ...................................................810 LCM_DMA 传输完成字节寄存器(DMA_LCM_DONE) .............................................810 LCM_DMA 发送地址寄存器(DMA_LCM_TXAx) ......................................................810 LCM_DMA 接收地址寄存器(DMA_LCM_RXAx) ......................................................810 范例程序 ............................................................................................................................... 811 串口 1 中断模式与电脑收发测试 - DMA 接收超时中断 ................................................. 811 串口 1 中断模式与电脑收发测试 - DMA 数据校验.........................................................816 增强型双数据指针 ...............................................................................................................823 相关的特殊功能寄存器 .......................................................................................................823 第 1 组 16 位数据指针寄存器(DPTR0) .........................................................................823 第 2 组 16 位数据指针寄存器(DPTR1) .........................................................................823 数据指针控制寄存器(DPS) ............................................................................................823 数据指针控制寄存器(TA) ..............................................................................................824 范例程序 ...............................................................................................................................826 示例代码 1 ............................................................................................................................826 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - xiii - STC8A8K64D4 系列技术手册 24.2.2 25 25.1 25.1.1 25.1.2 25.1.3 25.1.4 25.2 25.3 附录 A 附录 B B.1 B.2 B.3 B.4 附录 C 附录 D 附录 E 附录 F 附录 G 附录 H H.1 H.2 H.3 H.3.1 H.3.2 H.3.3 H.3.4 H.3.5 H.3.6 H.3.7 H.3.8 H.3.9 H.3.10 H.4 H.4.1 H.4.2 H.4.3 H.4.4 H.4.5 H.5 H.5.1 H.5.2 附录 I 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 示例代码 2 ............................................................................................................................827 MDU16 硬件 16 位乘除法器 ..............................................................................................829 相关的特殊功能寄存器 .......................................................................................................829 操作数 1 数据寄存器(MD0~MD3) ..............................................................................829 操作数 2 数据寄存器(MD4~MD5) ..............................................................................829 MDU 模式控制寄存器(ARCON),运算所需时钟数 .....................................................830 MDU 操作控制寄存器(OPCON) ...................................................................................830 关于 MDU16 的网友应用杂谈(提供思路,仅供参考) ................................................832 范例程序 ...............................................................................................................................834 编译器(汇编器)/仿真器/头文件使用指南 .....................................................................836 STC-ISP 下载软件高级应用 ...............................................................................................845 发布项目程序 .......................................................................................................................845 程序加密后传输(防烧录时串口分析出程序) ...............................................................849 发布项目程序+程序加密后传输结合使用 .........................................................................853 用户自定义下载(实现不停电下载) ...............................................................................854 如何测试 I/O 口 ...................................................................................................................858 如何让传统的 8051 单片机学习板可仿真 .........................................................................859 STC-USB 驱动程序安装说明 .............................................................................................861 USB 下载步骤演示 ..............................................................................................................924 RS485 自动控制或 I/O 口控制线路图 ...............................................................................928 STC 工具使用说明书 ..........................................................................................................929 概述 .......................................................................................................................................929 系统可编程(ISP)流程说明 .............................................................................................929 USB 型联机/脱机下载工具 U8W/U8W-Mini .....................................................................930 安装 U8W/U8W-Mini 驱动程序 ..........................................................................................932 U8W 的功能介绍 .................................................................................................................935 U8W 的在线联机下载使用说明 .........................................................................................936 U8W 的脱机下载使用说明 .................................................................................................939 U8W-Mini 的功能介绍 ........................................................................................................947 U8W-Mini 的在线联机下载使用说明.................................................................................948 U8W-Mini 的脱机下载使用说明.........................................................................................949 制作/更新 U8W/U8W-Mini..................................................................................................955 U8W/U8W-Mini 设置直通模式(可用于仿真) ...............................................................957 U8W/U8W-Mini 的参考电路 ...............................................................................................957 STC 通用 USB 转串口工具 .................................................................................................959 STC 通用 USB 转串口工具外观图 .....................................................................................959 STC 通用 USB 转串口工具布局图 .....................................................................................960 STC 通用 USB 转串口工具驱动安装 .................................................................................961 使用 STC 通用 USB 转串口工具下载程序到 MCU ..........................................................962 使用 STC 通用 USB 转串口工具仿真用户代码 ................................................................964 应用线路图 ...........................................................................................................................971 U8W 工具应用参考线路图 .................................................................................................971 STC 通用 USB 转串口工具应用参考线路图 .....................................................................971 STC 仿真使用说明书 ..........................................................................................................973 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - xiv - STC8A8K64D4 系列技术手册 I.1 I.2 I.3 I.4 I.4.1 I.4.2 I.4.3 I.5 I.5.1 I.5.2 I.5.3 附录 J 附录 K 附录 L 附录 M 附录 N 附录 O 附录 P 附录 Q 附录 R R.1 R.2 R.3 R.4 R.5 附录 S S.1 附录 T 附录 U 附录 V 附录 W 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 概述 .......................................................................................................................................973 安装 Keil 软件 ......................................................................................................................974 安装仿真驱动 .......................................................................................................................975 串口直接仿真 .......................................................................................................................978 制作串口仿真芯片 ...............................................................................................................978 在 Keil 软件中进行串口仿真设置 ......................................................................................981 在 Keil 软件中使用串口进行仿真 ......................................................................................983 USB 直接仿真(目前只有 STC8H8K64U-B 版本芯片支持) .........................................985 制作 USB 仿真芯片 .............................................................................................................985 在 Keil 软件中进行 USB 仿真设置 ....................................................................................989 在 Keil 软件中使用 USB 进行仿真 ....................................................................................991 U8W 下载工具中 RS485 部分线路图 ................................................................................993 运行用户程序时收到用户命令后自动启动 ISP 下载(不停电) ........................................994 使用 STC 的 IAP 系列单片机开发自己的 ISP 程序 ........................................................996 用户程序复位到系统区进行 ISP 下载的方法(不停电) .............................................1008 使用第三方 MCU 对 STC8A8K64D4 系列单片机进行 ISP 下载范例程序 .................1014 使用第三方应用程序调用 STC 发布项目程序对单片机进行 ISP 下载 .......................1022 在 Keil 中建立多文件项目的方法 ....................................................................................1025 关于中断号大于 31 在 Keil 中编译出错的处理 ..............................................................1029 电气特性 .............................................................................................................................1038 绝对最大额定值 .................................................................................................................1038 直流特性(3.3V) .............................................................................................................1039 直流特性(5.0V) .............................................................................................................1041 内部 IRC 温漂特性(参考温度 25℃)............................................................................1042 低压复位门槛电压(测试温度 25℃) ............................................................................1042 应用注意事项 .....................................................................................................................1043 STC8A8K64D4-64Pin/48Pin 系列 .....................................................................................1043 触摸按键的 PCB 设计指导 ...............................................................................................1044 QFN/DFN 封装元器件焊接方法 ......................................................................................1046 STC8A8K64D4 系列单片机取代 STC8A8K64S4A12 系列的注意事项 .......................1049 更新记录 .............................................................................................................................1051 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - xv - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 1 单片机基础概述 ——无微机原理的用户请从本章开始学习 这一章主要讲述的内容有:①在数字设备中进行算术运算的基本知识——数制和编码;②数字电路 中一些常用逻辑运算及其图形符号。它们是学习单片机这门课程的基础。对于没有微机原理基础的用户 和同学,请从这章开始学习。 1.1 数制与编码 数制是人们利用符号进行计数的科学方法。 数制有很多种,常用的数制有:二进制,十进制和十六进制。 进位计数制是把数划分为不同的位数,逐位累加,加到一定数量之后,再从零开始,同时向高位进 位。进位计数制有三个要素:数码符号、进位规律和计数基数。下表是各常用数制的总体介绍。 常用的数制 表示符号 数码符号 进制规律 计数基数 二进制 B 0、1 逢二进一 2 十进制 D 0、1、2、3、4、5、6、7、8、9 逢十进一 10 十六进制 H 0、1、2、3、4、5、6、7、8、9、 A、B、C、D、E、F 逢十六进一 16 我们日常生活中计数一般采用十进制。计算机中采用的是二进制,因为二进制具有运算简单,易实 现且可靠,为逻辑设计提供了有利的途径、节省设备等优点。为区别于其它进制数,二进制数的书写通 常在数的右下方注上基数 2,或加后面加 B 表示。二进制数中每一位仅有 0 和 1 两个可能的数码,所以 计数基数为 2。二进制数的加法和乘法运算如下: 0 + 0 = 0 0 × 0 = 0 0 + 1 = 1 + 0 = 1 0 × 1 = 1 × 0 =0 1 + 1 = 10 1 × 1 = 1 由于二进制数在使用中位数太长,不容易记忆,为了便于描述,又常用十六进制作为二进制的缩写。 十六进制通常在表示时用尾部标志 H 或下标 16 以示区别。 1.1.1 数制转换 现在我们来介绍这些常用数制之间的转换。 一:二进制 — 十进制转换 方法:将二进制数按权(如下式)展开,然后将各项的数值按十进制数相加,就得到相应的等值十进 制数。 例如:N=(1101.101)B,那么 N 所对应的十进制数时多少呢? 按权展开 N=1×23+1×22+0×21+1×20+1×2-1+0×2-2+1×2-3=8+4+0+1+0.5+0+0.125 =(13.625)D 二:十进制 — 二进制转换 方法:分两部分进行即整数部分和小数部分。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -1- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ①整数部分转换(基数除法): ★ 把我们要转换的数除以二进制的基数(二进制的基数为 2),把余数作为二进制的最低位; ★ 把上一次得的商在除以二进制基数(即 2),把余数作为二进制的次低位; ★ 继续上一步,直到最后的商为零,这时的余数就是二进制的最高位. ②小数部分转换(基数乘法): ★ 把要转换数的小数部分乘以二进制的基数(二进制的基数为 2),把得到的整数部分作为二进制小数 部分的最高位; ★ 把上一步得的小数部分再乘以二进制的基数(即 2),把整数部分作为二进制小数部分的次高位; ★ 继续上一步,直到小数部分变成零为止。或者达到预定的要求也可以。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -2- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 例如:将(213.8125)10 化为二进制数可按如下进行: 先化整数部分: 2 213 2 106 53 2 26 2 13 2 6 2 3 2 1 2 0 于是整数部分(213)10=(11010101)2 余数=1=k0 余数=0=k1 余数=1=k2 余数=0=k3 余数=1=k4 余数=0=k5 余数=1=k6 余数=1=k7 再化小数部分: 0.8125 2 × 1.6250 整数部分=1=k-1 0.6250 2 × 1.2500 整数部分=1=k-2 0.2500 2 × 0.5000 整数部分=0=k-3 0.5000 2 × 1.0000 整数部分=1=k-4 于是小数部分(0.8125)10=(0.1101)2 综上所述,十进制数 213.8125=(11010101.1101)2=(11010101.1101)B 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -3- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 三:二进制 — 十六进制转换 方法:二进制和十六进制之间满足 24 的关系,因此把要转换的二进制从低位到高位每 4 位一组,高 位不足时在有效位前面添“0”,然后把每组二进制数转换成十六进制即可。 例如,将(010111011110.11010010)B 转换为十六进制数: (0101 1101 1110 . 1101 0010)B ↓ ↓ ↓ ↓ ↓ =( 5 D E B 2 ) H 于是,(010111011110.11010010)B=(5DE.B2)H 四:十六进制 — 二进制转换 方法:十六进制转换为二进制时,把上面二进制转换十六进制的过程逆过来,即转换时只需将十六 进制的每一位用等值的 4 位二进制代替就行了。 例如:将(C1B.C6)H 转换为二进制数: ( C 1 ↓ ↓ B. ↓ C ↓ 6 )H ↓ = (1100 0001 1011 1100 0110)B 于是,(C1B.C6)H=(110000011011.11000110)B 五:十六进制 — 十进制转换 方法:将十六进制数按权(如下式)展开,然后将各项的数值按十进制数相加,就得到相应的等值十 进制数。 例如:N=(2A.7F)H,那么 N 所对应的十进制数时多少呢? 按权展开 N=2×161+10×160+7×16-1+15×16-2=32+10+0.4375+0.05859375 =(42.49609375)D 于是,(2A.7F)H =(42.49609375)D 六:十进制 — 十六进制转换 方法:将十进制数转换为十六进制数时,可以先将十进制数转换为二进制数,然后再将得到的二进 制数转换为等值的十六进制数。 1.1.2 原码、反码及补码 在生活中,数有正负之分,在计算机中是怎样表示数的正负符号呢? 在生活中表示数的时候一般都是把正数前面加一个“+” ,负数前面加一个“-”,但是计算机是不认 识这些的,通常在二进制数前面增加一位符号位。符号位为“0”表示“+”,符号位为“1”表示“-”。 这种形式的二进制数称为原码。如果原码为正数,则原码的反码和补码都与原码相同。如果原码为负数, 则将原码(除符号位外)按位取反,所得的新二进制数称为原码的反码,反码加 1 为其补码。 原码、反码、补码这三种形式的总结如下表所示: 真值 深圳国芯人工智能有限公司 原码 反码 补码 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -4- STC8A8K64D4 系列技术手册 正数 负数 +N -N 官方网站: www.STCAI.com 0N 1N 0N (2n-1)+N 选型顾问: 13922805190 0N 2n+N 例 1:求+18 和-18 八位原码、反码、补码形式。 真值 原码 反码 +18 00010010 00010010 -18 10010010 11101101 1.1.3 技术支持: 19864585985 补码 00010010 11101110 常用编码 指定某一组二进制数去代表某一指定的信息,就称为编码。 一:十进制编码 用二进制码表示的十进制数,称为十进制编码。它具有二进制的形式,还具有十进制的特点它可作 为人们与数字系统的联系的一种间表示。十进制编码有很多种,最常用的一种是 BCD 码,又称 8421 码。 下面我们用表列出几种常见的十进制编码: 编码种类 8421 码 (BCD 码) 余3码 2421 码 5211 码 7321 码 十进制数 0 0000 0011 0000 0000 0000 1 0001 0100 0001 0001 0001 2 0010 0101 0010 0100 0010 3 0011 0110 0011 0101 0011 4 0100 0111 0100 0111 0101 5 0101 1000 1011 1000 0110 6 0110 1001 1100 1001 0111 7 0111 1010 1101 1100 1000 8 1000 1011 1110 1101 1001 9 1001 1100 1111 1111 1010 权 8421 2421 5211 7321 十进制编码分为有权和无权编码。有权编码码是指每一位十进制数符均用一组四位二进制码来表示, 而且二进制码的每一位都有固定权值。无权编码码是指二进制码中每一位都没有固 定的权值。上表中 8421 码(即 BCD 码)、2421 码、5211 码、7321 码都是有权编码,而余 3 码是无权编码。 二:奇偶校验码 在数据的存取、运算和传送过程中,难免会发生错误,把“1”错成“0”或把“0”错成“1” 。奇偶 校验码是一种能检验这种错误的代码。它分为两部分;信息位和奇偶校验位。有奇数个“1”称为奇校验, 有偶数个“1”则称为偶校验。 1.2 几种常用的逻辑运算及其图形符号 逻辑代数中常用的运算有:与(AND)、或(OR)、非(NOT)、与非(NAND)、或非(NOR)、与或非 (AND-NOR)、异或(EXCLUSIVE OR)、同或(EXCLUSIVE NOR)等。其中与(AND)、或(OR)、非(NOT) 运算时三种最基本的运算。 一:与运算及与门 与运算:决定事件结果的全部条件同时具备时,事件才发生。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -5- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 逻辑变量 A 和 B 进行与运算时可写成:Y=A·B 真值表 A B Y 0 0 0 0 1 0 1 0 0 1 1 1 与门:实行与逻辑运算的单元电路。 与门图形符号: 二:或运算及或门 或运算:决定事件结果的各条件中只要有任何一个满足,事件就会发生。 逻辑变量 A 和 B 进行或运算时可写成:Y=A+B 真值表 A B Y 0 0 0 0 1 1 1 0 1 1 1 1 或门:实行或逻辑运算的单元电路。 或门图形符号: 三:非运算及非门 非运算:条件具备时,事件不会发生;条件不具备时,事件才会发生。 逻辑变量 A 进行非运算时可写成:Y=A′ 真值表 A Y 0 1 1 0 非门:实行非逻辑运算的单元电路。 非门图形符号: 四:与非运算及与非图形符号 与非运算:先进行与运算,然后将结果求反,最后得到的即为与非运算结果。 逻辑变量 A 和 B 进行与非运算时可写成:Y=(A·B)′ 真值表 A B 0 0 0 1 1 0 1 1 与非图形符号: Y 1 1 1 0 五:或非运算及或非图形符号 或非运算:先进行或运算,然后将结果求反,最后得到的即为或非运算结果。 逻辑变量 A 和 B 进行或非运算时可写成:Y=(A+B)′ 真值表 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -6- STC8A8K64D4 系列技术手册 A B 0 0 0 1 1 0 1 1 或非图形符号: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 Y 1 0 0 0 六:与或非运算及与或非图形符号 与或非运算:在与或非逻辑运算中有 4 个逻辑变量 A、B、C、D。假设 A 和 B 为一组,C 和 D 为一 组, A、B 之间以及 C、D 之间都是与的关系,只要 A、B 或 C、D 任何一组同时为 1, 输出 Y 就是 0。只 有当每一组输入都不全是 1 时,输出 Y 才是 1。 逻辑变量 A 和 B 进行或非运算时可写成:Y=(A·B+C·D)′ A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 真值表 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Y 1 1 1 0 1 1 1 0 1 1 1 0 0 0 0 0 与或非图形符号: 七:异或运算及异或图形符号 异或运算:当 A、B 不同时,输出 Y 为 1;而当 A、B 相同时,输出 Y 为 0。 逻辑变量 A 和 B 进行异 或运算时可写成:Y = A⊕B = (A·B′) + (A′·B) 真值表 A B 0 0 0 1 1 0 1 1 异或图形符号: Y 0 1 1 0 八:同或运算及同或图形符号 同或运算:当 A、B 不同时,输出 Y 为 0;而当 A、B 相同时,输出 Y 为 1。 逻辑变量 A 和 B 进行同 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -7- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 或运算时可写成:Y = A⊙B = (A·B)+(A′·B′) 真值表 A B 0 0 0 1 1 0 1 1 同或图形符号: Y 1 0 0 1 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com -8- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 1.3 STC8A8K64D4 单片机性能概述 STC8A8K64D4 系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/ 低功耗为目标的 8051 单片机,在相同的工作频率下,STC8A8K64D4 系列单片机比传统的 8051 约快 12 倍(速度快 11.2~13.2 倍),依次按顺序执行完全部的 111 条指令,STC8A8K64D4 系列单片机仅需 147 个时钟,而传统 8051 则需要 1944 个时钟。STC8A8K64D4 系列单片机是 STC 生产的单时钟/机器周期(1T) 的单片机,是宽电压/高速/高可靠/低功耗/强抗静电/较强抗干扰的新一代 8051 单片机,超级加密。指令 代码完全兼容传统 8051。 MCU 内部集成高精度 R/C 时钟(±0.3%,常温下+25℃),-1.38%~+1.42%温飘(-40℃~+85℃) , -0.88%~+1.05%温飘(-20℃~+65℃)。ISP 编程时 4MHz~45MHz 宽范围可设置(注意:温度范围为-40℃ ~+85℃时,最高频率须控制在 45MHz 以下),可彻底省掉外部昂贵的晶振和外部复位电路(内部已集成高 可靠复位电路,ISP 编程时 4 级复位门槛电压可选)。 MCU 内部有 3 个可选时钟源:内部高精度 IRC 时钟(ISP 下载时可进行调节)、内部 32KHz 的低 速 IRC、外部 4M~33M 晶振或外部时钟信号。用户代码中可自由选择时钟源,时钟源选定后可再经过 8-bit 的分频器分频后再将时钟信号提供给 CPU 和各个外设(如定时器、串口、SPI 等)。 MCU 提供两种低功耗模式:IDLE 模式和 STOP 模式。IDLE 模式下,MCU 停止给 CPU 提供时钟, CPU 无时钟,CPU 停止执行指令,但所有的外设仍处于工作状态,此时功耗约为 1.0mA(6MHz 工作频 率)。STOP 模式即为主时钟停振模式,即传统的掉电模式/停电模式/停机模式,此时 CPU 和全部外设 都停止工作,功耗可降低到 0.6uA@Vcc=5.0V,0.4uA@Vcc=3.3V。 掉电模式可以使用 INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、T1(P3.5)、 T2(P1.2) 、 T3(P0.4) 、 T4(P0.6) 、 RXD(P3.0/P3.6/P1.6/P4.3) 、 RXD2(P1.0/P4.0) 、 RXD3(P0.0/P5.0) 、 RXD4(P0.2/P5.0)、CCP0(P1.7/P2.3/P7.0/P3.3)、CCP1(P1.6/P2.4/P7.1/P3.2)、CCP2(P1.5/P2.5/P7.2/P3.1)、 CCP3(P1.4/P2.6/P7.3/P3.0)、I2C_SDA(P1.4/P2.4/P3.3)、SPI_SS(P1.2/P2.2/P3.5)以及所有端口的 I/O 中断、 比较器中断、低压检测中断、掉电唤醒定时器唤醒。 MCU 提供了丰富的数字外设(串口、定时器、PCA、增强型 PWM 以及 I2C、SPI)接口与模拟外设 (速度高达 800K 即每秒 80 万次采样的 12 位*15 路超高速 ADC、比较器),可满足广大用户的设计需 求。 STC8A8K64D4 系列单片机内部集成了增强型的双数据指针。通过程序控制,可实现数据指针自动递 增或递减功能以及两组数据指针的自动切换功能。 产品线 I/O UART 定时器 ADC STC8A8K64D4 系列-64Pin/48Pin 59 4 5 15CH*12B 深圳国芯人工智能有限公司 增强型 PWM ● 国内分销商电话: 0513-5501 2928/2929/2966 PCA CMP SPI I2C MDU16 ● ● ● ● ● I/O 中断 LCM DMA ● ● ● 去纯技术交流论坛:www.STCAIMCU.com -9- STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 2 特性、价格及管脚 2.1 STC8A8K64D4-LQFP64/48/44,PDIP40 系列 特性及价格(有 16 位硬件乘除法器 MDU16,准 16 位单片机) 2.1.1  选型价格(不需要外部晶振、不需要外部复位) PWM 有 有 5 8 4 有 12 位 有 有 有 4级 有 是 有 是 是 是 是 STC8A8K32D4 1.9-5.5 32K 8K 2 32K 59 4 有 有 有 有 有 有 5 8 4 有 12 位 有 有 有 4级 有 是 有 是 是 是 是 ¥4.5 √ ¥3.9 √ ¥3.9 STC8A8K48D4 1.9-5.5 48K 8K 2 16K 59 4 有 有 有 有 有 有 5 8 4 有 12 位 有 有 有 4级 有 是 有 是 是 是 是 ¥4.5 √ ¥3.9 √ ¥3.9 STC8A8K60D4 1.9-5.5 60K 8K 2 4K 59 4 有 有 有 有 有 有 5 8 4 有 12 位 有 有 有 4级 有 是 有 是 是 是 是 STC8A8K64D4 1.9-5.5 64K 8K 2 IAP 59 4 有 有 有 有 有 有 5 8 4 有 12 位 有 有 有 4级 有 是 有 是 是 是 是 ¥4.5 √ ¥3.9 √ ¥3.9 / 程 序 加 密 后 传 输 ( 防 拦 截 ) 可 设 置 下 次 更 新 程 序 需 口 令 RS485 部分封装及含税价格 2021 支 支 持 本 身 持 就 可 直 在 线 下 接 仿 载 下 真 载 √ √ √ √ √ √  超高速 8051 内核(1T),比传统 8051 约快 12 倍以上  指令代码完全兼容传统 8051  43 个中断源,4 级中断优先级  支持在线仿真 工作电压  1.9V~5.5V  内建 LDO 工作温度 -40℃~85℃(超温度范围应用请参考电器特性章节说明) Flash 存储器  最大 64K 字节 FLASH 程序存储器(ROM),用于存储用户代码  支持用户配置 EEPROM 大小,512 字节单页擦除,擦写次数可达 10 万次以上  支持在系统编程方式(ISP)更新用户应用程序,无需专用编程器  支持单芯片仿真,无需专用仿真器,理论断点个数无限制 SRAM  128 字节内部直接访问 RAM(DATA)  128 字节内部间接访问 RAM(IDATA)  8192 字节内部扩展 RAM(内部 XDATA) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 10 - √ PDIP40 √ LQFP44 √ LQFP48 QFN64 √ QFN48 LQFP64 D/A 可 对 外 输 出 时 钟 及 复 可 位 调 ) USB 内 部 高 精 准 时 钟 ( 24MHz 8  看 门 狗 复 位 定 时 器 内 部 高 可 靠 复 位 ( 可 选 复 位 门 槛 电 压 ) 内核   PWM ) )  A/D 16 SPI LCM (8  1 16 SRAM DPTR  掉 电 唤 醒 专 用 定 时 器 比 路 较 高 器 速 ( 内 可 部 当 低 ( 压 路 检 路 测 中 , 断 可 并 可 作 可 当 外 掉 部 电 路 掉 唤 电 醒 检 使 测 用 ) ) ADC 8 ADC I/O xdata 10 V 等 位 ( 可 当 外 部 中 断 并 可 掉 电 唤 醒 ) 15 T0-T4 有 硬 彩 件 屏 , 接 串 口 位 口 , 乘 驱 除 动 , 法 器 位 和 15 I2 C 有 支 持 PCA/CCP/PWM SPI 有 字 节 DMA( 有 万 次 MDU16 4 ) 口 最 万 多 可 次 数 量 增 可 字 减 节 字 节 串 口 并 可 掉 电 唤 醒 8080/6800 LCM 48K 59 工 作 电 压 ( I/O 2 单 片 机 型 号 强 程 , 大 序 大 的 存 容 双 储 量 器 扩 展 EEPROM 10 STC8A8K16D4 1.9-5.5 16K 8K Flash 定 时 所 器 有 计 的 数 位 增 器 强 ( 型 口 均 支 持 外 中 部 满 断 管 足 并 脚 舞 可 也 台 掉 可 灯 电 掉 光 唤 电 要 醒 唤 求 醒 ) 年 新 品 供 货 信 息 现 货 STC8A8K64D4 系列技术手册  官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 时钟控制  内部高精度 IRC(4MHz~45MHz,ISP 编程时可进行上下调整,还可以用户软件分频到较低的频率工作, 如 100KHz)   误差±0.3%(常温下 25℃)  -1.38%~+1.42%温漂(全温度范围,-40℃~85℃)  -0.88%~+1.05%温漂(温度范围,-20℃~65℃)  内部 32KHz 低速 IRC(误差较大)  外部晶振(4MHz~45MHz)和外部时钟 复位  硬件复位  上电复位,实测电压值为 1.69V~1.82V。(在芯片未使能低压复位功能时有效) 上电复位电压由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向下掉到上 电复位的下限门槛电压时,芯片处于复位状态;当电压从 0V 上升到上电复位的上限门槛电压时, 芯片解除复位状态。  复位脚复位,出厂时 P5.4 默认为 I/O 口,ISP 下载时可将 P5.4 管脚设置为复位脚(注意:当设置 P5.4 管脚为复位脚时,复位电平为低电平)  看门狗溢出复位  低压检测复位,提供 4 级低压检测电压:2.0V(实测为 1.90V~2.04V)、2.4V(实测为 2.30V~2.50V)、 2.7V(实测为 2.61V~2.82V)、3.0V(实测为 2.90V~3.13V)。 每级低压检测电压都是由一个上限电压和一个下限电压组成的电压范围,当工作电压从 5V/3.3V 向 下掉到低压检测的下限门槛电压时,低压检测生效;当电压从 0V 上升到低压检测的上限门槛电压 时,低压检测生效。  软件复位   软件方式写复位触发寄存器 中断  提供 43 个中断源:INT0(支持上升沿和下降沿中断)、INT1(支持上升沿和下降沿中断)、INT2(只支 持下降沿中断)、INT3(只支持下降沿中断)、INT4(只支持下降沿中断)、定时器 0、定时器 1、定时 器 2、定时器 3、定时器 4、串口 1、串口 2、串口 3、串口 4、ADC 模数转换、LVD 低压检测、SPI、I2C、 比较器、PCA/CCP/PWM、增强型 PWM、增强型 PWM 异常检测、所有的 I/O 中断(8 组)、LCD 驱动 中断、串口 1 的 DMA 接收和发送中断、串口 2 的 DMA 接收和发送中断、串口 3 的 DMA 接收和发送中 断、串口 4 的 DMA 接收和发送中断、SPI 的 DMA 中断、ADC 的 DMA 中断、LCD 驱动的 DMA 中断以 及存储器到存储器的 DMA 中断。  提供 4 级中断优先级  时钟停振模式下可以唤醒的中断:INT0(P3.2)、INT1(P3.3)、INT2(P3.6)、INT3(P3.7)、INT4(P3.0)、T0(P3.4)、 T1(P3.5)、T2(P1.2)、T3(P0.4)、T4(P0.6)、RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.0/P4.0)、RXD3(P0.0/P5.0)、 RXD4(P0.2/P5.0) 、 CCP0(P1.7/P2.3/P7.0/P3.3) 、 CCP1(P1.6/P2.4/P7.1/P3.2) 、 CCP2(P1.5/P2.5/P7.2/P3.1) 、 CCP3(P1.4/P2.6/P7.3/P3.0)、I2C_SDA(P1.4/P2.4/P3.3)、SPI_SS(P1.2/P2.2/P3.5)以及所有端口的 I/O 中断、 比较器中断、低压检测中断、掉电唤醒定时器唤醒  数字外设  5 个 16 位定时器:定时器 0、定时器 1、定时器 2、定时器 3、定时器 4,其中定时器 0 的模式 3 具有 NMI (不可屏蔽中断)功能,定时器 0 和定时器 1 的模式 0 为 16 位自动重载模式  4 个高速串口:串口 1、串口 2、串口 3、串口 4,波特率时钟源最快可为 FOSC/4  4 组 16 位 PCA 模块:CCP0、CCP1、CCP2、CCP3,可用于捕获、高速脉冲输出,及 6/7/8/10 位的 PWM 输出 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 11 - STC8A8K64D4 系列技术手册  官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 8 组 15 位增强型 PWM,可实现带死区的控制信号,并支持外部异常检测功能,另外还有 4 组传统的 PCA/CCP/PWM 可作 PWM  SPI:支持主机模式和从机模式以及主机/从机自动切换  I2C:支持主机模式和从机模式  MDU16:硬件 16 位乘除法器(支持 32 位除以 16 位、16 位除以 16 位、16 位乘 16 位、数据移位以及数 据规格化等运算)  I/O 口中断:所有的 I/O 均支持中断,每组 I/O 中断有独立的中断入口地址,所有的 I/O 中断可支持 4 种 中断模式:高电平中断、低电平中断、上升沿中断、下降沿中断 (本系列的 I/O 口中断可以进行掉电唤醒,且有 4 级中断优先级)  LCD 驱动模块:支持 8080 和 6800 两种接口以及 8 位和 16 位数据宽度  DMA:支持 SPI 移位接收数据到存储器、SPI 移位发送存储器的数据、串口 1/2/3/4 接收数据到的存储器、 串口 1/2/3/4 发送存储器的数据、ADC 自动采样数据到存储器(同时计算平均值)、LCD 驱动发送存储器 的数据、以及存储器到存储器的数据复制   硬件数字 ID:支持 32 字节 模拟外设  超高速 ADC,支持 12 位高精度 15 通道(通道 0~通道 14)的模数转换,速度最快能达到 800K(每秒进 行 80 万次 ADC 转换)  ADC 的通道 15 用于测试内部 1.19V 参考信号源(芯片在出厂时,内部参考信号源已调整为 1.19V)  比较器,一组比较器(比较器的正端可选择 CMP+端口、CMP+_2、CMP+_3 和所有的 ADC 输入端口, 比较器的负端可选择 CMP-端口和内部 1.19V 的参考源,所以比较器可当作多路比较器进行分时复用)   DAC:8 组增强型 PWM 定时器可当 8 路 DAC 使用、4 路 PCA 可当 4 路 DAC 使用 GPIO  最多可达 59 个 GPIO:P0.0~P0.7、P1.0~P1.7、P2.0~P2.7、P3.0~P3.7、P4.0~P4.4、P5.0~P5.5、P6.0~P6.7、 P7.0~P7.7  所有的 GPIO 均支持如下 4 种模式:准双向口模式、强推挽输出模式、开漏输出模式、高阻输入模式  除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时必须先设置 I/O 口模式,另外每个 I/O 均可独立使能内部 4K 上拉电阻  封装  LQFP64、LQFP48、LQFP44 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 12 - STC8A8K64D4 系列技术手册 技术支持: 19864585985 选型顾问: 13922805190 管脚图,最小系统 注意: 1、ADC的外部参考电源管脚ADC_VRef+, 一定不能浮空,必须接外部参考电 源或者直接连到Vcc 2、若不需要进行USB下载,芯片复位时 P3.0/P3.1/P3.2不可同时为低电平 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 P2.5/A13/PWM5/SCLK_2/CCP2_2/I2CSCL_2 P2.4/A12/PWM4/MISO_2/CCP1_2/I2CSDA_2 P2.3/A11/PWM3/MOSI_2/CCP0_2 P2.2/A10/PWM2/SS_2/ECI_2 P2.1/A9/PWM1 P4.2/RD_3/TxD2_2 P2.0/A8/PWM0 P7.3/CCP3_3 P7.2/CCP2_3 P7.1/CCP1_3 P7.0/CCP0_3 P4.1/ALE/CMPO_2 P3.7/INT3/RD_2/TxD_2/CMP+ P3.6/INT2/WR_2/RxD_2/CMPP5.1/TxD3_2/CMP+_3 P5.0/RxD3_2/CMP+_2 2.1.2 官方网站: www.STCAI.com 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 LQFP64 QFN64 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 P3.5/T1/T0CLKO/ECI_4/SS_4/PWMFLT P3.4/T0/T1CLKO/MOSI_4/CMPO P3.3/INT1/CCP0_4/MISO_4/I2CSDA_4 P3.2/INT0/CCP1_4/SCLK_4/I2CSCL_4 P3.1/TxD/CCP2_4 P3.0/RxD/CCP3_4/INT4 P6.7/PWM7_3 P6.6/PWM6_3 P6.5/PWM5_3 P6.4/PWM4_3 P4.0/WR_3/RxD2_2 Gnd MCU-VCC P5.5 Vcc P5.4/NRST/MCLKO 22u 0.1u ADC_AVcc 正看芯片丝印左下方小圆点处为第一脚 RxD4_2/P5.2 TxD4_2/P5.3 TxD2/PWM1_2/ADC1/P1.1 ADC_ETR/ECI/T2/SS/PWM2_2/ADC2/P1.2 T2CLKO/MOSI/PWM3_2/ADC3/P1.3 PWM0_3/P6.0 PWM1_3/P6.1 PWM2_3/P6.2 PWM3_3/P6.3 CCP3/I2CSDA/MISO/PWM4_2/ADC4/P1.4 TxD_4/RD/P4.4 CCP2/I2CSCL/SCLK/PWM5_2/ADC5/P1.5 XTALO/CCP1/MCLKO_2/PWM6_2/RxD_3/ADC6/P1.6 XTALI/CCP0/PWM7_2/TxD_3/ADC7/P1.7 ADC_AGnd AVref 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 CCP3_2/PWM6/A14/P2.6 PWM7/A15/P2.7 RxD3/ADC8/AD0/P0.0 TxD3/ADC9/AD1/P0.1 RxD4/ADC10/AD2/P0.2 ECI_3/SS_3/P7.4 MOSI_3/P7.5 I2CSDA_3/MISO_3/P7.6 I2CSCL_3/SCLK_3/P7.7 RxD_4/WR/P4.3 TxD4/ADC11/AD3/P0.3 T3/ADC12/AD4/P0.4 T3CLKO/ADC13/AD5/P0.5 T4/ADC14/AD6/P0.6 T4CLKO/AD7/P0.7 RxD2/PWM0_2/ADC0/P1.0 正看芯片丝印最下面一行最后一个字母为芯片版本号 P3.1 P3.0 MCU-VCC 连接目标单片机P3.1 连接目标单片机P3.0 建议在 Vcc 和 Gnd 之间就近加上电源去耦电容 22uF 和 0.1uF,可去除电源线噪声,提高抗干扰能力 ISP 下载步骤: 1、 按照如图所示的连接方式将 STC-USB Link1D 和目标芯片连接 2、 点击 STC-ISP 下载软件中的“下载/编程”按钮 3、 开始 ISP 下载(注意:若是使用 STC-USB Link1D 给目标系统供电,目标系统的总电流不能大于 200mA,否则会导致下载失败。) 注意: 1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时 必须先设置 I/O 口模式 2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入模 式,另外每个 I/O 均可独立使能内部 4K 上拉电阻 3、当使能 P5.4 口为复位脚时,复位电平为低电平 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 13 - 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 注意: 1、ADC的外部参考电源管脚ADC_VRef+, 一定不能浮空,必须接外部参考电 源或者直接连到Vcc 2、若不需要进行USB下载,芯片复位时 P3.0/P3.1/P3.2不可同时为低电平 36 35 34 33 32 31 30 29 28 27 26 25 P2.5/A13/PWM5/SCLK_2/CCP2_2/I2CSCL_2 P2.4/A12/PWM4/MISO_2/CCP1_2/I2CSDA_2 P2.3/A11/PWM3/MOSI_2/CCP0_2 P2.2/A10/PWM2/SS_2/ECI_2 P2.1/A9/PWM1 P4.2/RD_3/TxD2_2 P2.0/A8/PWM0 P4.1/ALE/CMPO_2 P3.7/INT3/RD_2/TxD_2/CMP+ P3.6/INT2/WR_2/RxD_2/CMPP5.1/TxD3_2/CMP+_3 P5.0/RxD3_2/CMP+_2 STC8A8K64D4 系列技术手册 37 38 39 40 41 42 43 44 45 46 47 48 LQFP48 QFN48 24 23 22 21 20 19 18 17 16 15 14 13 P3.5/T1/T0CLKO/ECI_4/SS_4/PWMFLT P3.4/T0/T1CLKO/MOSI_4/CMPO P3.3/INT1/CCP0_4/MISO_4/I2CSDA_4 P3.2/INT0/CCP1_4/SCLK_4/I2CSCL_4 P3.1/TxD/CCP2_4 P3.0/RxD/CCP3_4/INT4 P4.0/WR_3/RxD2_2 Gnd MCU-VCC P5.5 Vcc P5.4/NRST/MCLKO 22u 0.1u ADC_AVcc 正看芯片丝印左下方小圆点处为第一脚 RxD4_2/P5.2 TxD4_2/P5.3 TxD2/PWM1_2/ADC1/P1.1 ADC_ETR/ECI/T2/SS/PWM2_2/ADC2/P1.2 T2CLKO/MOSI/PWM3_2/ADC3/P1.3 CCP3/I2CSDA/MISO/PWM4_2/ADC4/P1.4 TxD_4/RD/P4.4 CCP2/I2CSCL/SCLK/PWM5_2/ADC5/P1.5 XTALO/CCP1/MCLKO_2/PWM6_2/RxD_3/ADC6/P1.6 XTALI/CCP0/PWM7_2/TxD_3/ADC7/P1.7 ADC_AGnd AVref 1 2 3 4 5 6 7 8 9 10 11 12 CCP3_2/PWM6/A14/P2.6 PWM7/A15/P2.7 RxD3/ADC8/AD0/P0.0 TxD3/ADC9/AD1/P0.1 RxD4/ADC10/AD2/P0.2 RxD_4/WR/P4.3 TxD4/ADC11/AD3/P0.3 T3/ADC12/AD4/P0.4 T3CLKO/ADC13/AD5/P0.5 T4/ADC14/AD6/P0.6 T4CLKO/AD7/P0.7 RxD2/PWM0_2/ADC0/P1.0 正看芯片丝印最下面一行最后一个字母为芯片版本号 P3.1 P3.0 MCU-VCC 连接目标单片机P3.1 连接目标单片机P3.0 建议在 Vcc 和 Gnd 之间就近加上电源去耦电容 22uF 和 0.1uF,可去除电源线噪声,提高抗干扰能力 ISP 下载步骤: 1、 按照如图所示的连接方式将 STC-USB Link1D 和目标芯片连接 2、 点击 STC-ISP 下载软件中的“下载/编程”按钮 3、 开始 ISP 下载(注意:若是使用 STC-USB Link1D 给目标系统供电,目标系统的总电流不能大于 200mA,否则会导致下载失败。) 注意: 1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时 必须先设置 I/O 口模式 2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入模 式,另外每个 I/O 均可独立使能内部 4K 上拉电阻 3、当使能 P5.4 口为复位脚时,复位电平为低电平 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 14 - 官方网站: www.STCAI.com 技术支持: 19864585985 P2.5/A13/PWM5/SCLK_2/CCP2_2/I2CSCL_2 P2.4/A12/PWM4/MISO_2/CCP1_2/I2CSDA_2 P2.3/A11/PWM3/MOSI_2/CCP0_2 P2.2/A10/PWM2/SS_2/ECI_2 P2.1/A9/PWM1 P4.2/RD_3/TxD2_2 P2.0/A8/PWM0 P4.1/ALE/CMPO_2 P3.7/INT3/RD_2/TxD_2/CMP+ P3.6/INT2/WR_2/RxD_2/CMPP3.5/T1/T0CLKO/ECI_4/SS_4/PWMFLT STC8A8K64D4 系列技术手册 选型顾问: 13922805190 33 32 31 30 29 28 27 26 25 24 23 注意: 1、ADC的外部参考电源管脚ADC_VRef+, 一定不能浮空,必须接外部参考电 源或者直接连到Vcc 2、若不需要进行USB下载,芯片复位时 P3.0/P3.1/P3.2不可同时为低电平 34 35 36 37 38 39 40 41 42 43 44 LQFP44 22 21 20 19 18 17 16 15 14 13 12 P3.4/T0/T1CLKO/MOSI_4/CMPO P3.3/INT1/CCP0_4/MISO_4/I2CSDA_4 P3.2/INT0/CCP1_4/SCLK_4/I2CSCL_4 P3.1/TxD/CCP2_4 P3.0/RxD/CCP3_4/INT4 P4.0/WR_3/RxD2_2 Gnd MCU-VCC P5.5 Vcc P5.4/NRST/MCLKO 22u 0.1u ADC_AVcc 正看芯片丝印左下方小圆点处为第一脚 正看芯片丝印最下面一行最后一个字母为芯片版本号 RxD2/PWM0_2/ADC0/P1.0 TxD2/PWM1_2/ADC1/P1.1 ADC_ETR/ECI/T2/SS/PWM2_2/ADC2/P1.2 T2CLKO/MOSI/PWM3_2/ADC3/P1.3 CCP3/I2CSDA/MISO/PWM4_2/ADC4/P1.4 TxD_4/RD/P4.4 CCP2/I2CSCL/SCLK/PWM5_2/ADC5/P1.5 XTALO/CCP1/MCLKO_2/PWM6_2/RxD_3/ADC6/P1.6 XTALI/CCP0/PWM7_2/TxD_3/ADC7/P1.7 ADC_AGnd AVref 1 2 3 4 5 6 7 8 9 10 11 CCP3_2/PWM6/A14/P2.6 PWM7/A15/P2.7 RxD3/ADC8/AD0/P0.0 TxD3/ADC9/AD1/P0.1 RxD4/ADC10/AD2/P0.2 RxD_4/WR/P4.3 TxD4/ADC11/AD3/P0.3 T3/ADC12/AD4/P0.4 T3CLKO/ADC13/AD5/P0.5 T4/ADC14/AD6/P0.6 T4CLKO/AD7/P0.7 P3.1 P3.0 MCU-VCC 连接目标单片机P3.1 连接目标单片机P3.0 建议在 Vcc 和 Gnd 之间就近加上电源去耦电容 22uF 和 0.1uF,可去除电源线噪声,提高抗干扰能力 ISP 下载步骤: 4、 按照如图所示的连接方式将 STC-USB Link1D 和目标芯片连接 5、 点击 STC-ISP 下载软件中的“下载/编程”按钮 6、 开始 ISP 下载(注意:若是使用 STC-USB Link1D 给目标系统供电,目标系统的总电流不能大于 200mA,否则会导致下载失败。) 注意: 1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时 必须先设置 I/O 口模式 2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入模 式,另外每个 I/O 均可独立使能内部 4K 上拉电阻 3、当使能 P5.4 口为复位脚时,复位电平为低电平 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 15 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 PDIP40 TxD4/ADC11/AD3/P0.3 T3/ADC12/AD4/P0.4 T3CLKO/ADC13/AD5/P0.5 T4/ADC14/AD6/P0.6 T4CLKO/AD7/P0.7 RxD2/PWM0_2/ADC0/P1.0 TxD2/PWM1_2/ADC1/P1.1 ADC_ETR/ECI/T2/SS/PWM2_2/ADC2/P1.2 T2CLKO/MOSI/PWM3_2/ADC3/P1.3 CCP3/I2CSDA/MISO/PWM4_2/ADC4/P1.4 CCP2/I2CSCL/SCLK/PWM5_2/ADC5/P1.5 XTALO/CCP1/MCLKO_2/PWM6_2/RxD_3/ADC6/P1.6 XTALI/CCP0/PWM7_2/TxD_3/ADC7/P1.7 ADC_AGnd AVref 注意: ADC_AVcc 1、ADC的外部参考电源管脚ADC_VRef+, MCLKO/NRST/P5.4 一定不能浮空,必须接外部参考电MCU-VCC Vcc 源或者直接连到Vcc P5.5 22u 0.1u 2、若不需要进行USB下载,芯片复位时 Gnd 技术支持: 19864585985 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 选型顾问: 13922805190 P0.2/AD2/ADC10/RxD4 P0.1/AD1/ADC9/TxD3 P0.0/AD0/ADC8/RxD3 P2.7/A15/PWM7 P2.6/A14/PWM6/CCP3_2 P2.5/A13/PWM5/SCLK_2/CCP2_2/I2CSCL_2 P2.4/A12/PWM4/MISO_2/CCP1_2/I2CSDA_2 P2.3/A11/PWM3/MOSI_2/CCP0_2 P2.2/A10/PWM2/SS_2/ECI_2 P2.1/A9/PWM1 P2.0/A8/PWM0 P4.1/ALE/CMPO_2 P3.7/INT3/RD_2/TxD_2/CMP+ P3.6/INT2/WR_2/RxD_2/CMPP3.5/T1/T0CLKO/ECI_4/SS_4/PWMFLT P3.4/T0/T1CLKO/MOSI_4/CMPO P3.3/INT1/CCP0_4/MISO_4/I2CSDA_4 P3.2/INT0/CCP1_4/SCLK_4/I2CSCL_4 P3.1/TxD/CCP2_4 P3.0/RxD/CCP3_4/INT4 P3.0/P3.1/P3.2不可同时为低电平 P3.1 P3.0 MCU-VCC 连接目标单片机P3.1 连接目标单片机P3.0 建议在 Vcc 和 Gnd 之间就近加上电源去耦电容 22uF 和 0.1uF,可去除电源线噪声,提高抗干扰能力 ISP 下载步骤: 7、 按照如图所示的连接方式将 STC-USB Link1D 和目标芯片连接 8、 点击 STC-ISP 下载软件中的“下载/编程”按钮 9、 开始 ISP 下载(注意:若是使用 STC-USB Link1D 给目标系统供电,目标系统的总电流不能大于 200mA,否则会导致下载失败。) 注意: 1、除 P3.0 和 P3.1 外,其余所有 I/O 口上电后的状态均为高阻输入状态,用户在使用 I/O 口时 必须先设置 I/O 口模式 2、所有的 I/O 口均可以设置为准双向口模式、强推挽输出模式、开漏输出模式或者高阻输入模 式,另外每个 I/O 均可独立使能内部 4K 上拉电阻 3、当使能 P5.4 口为复位脚时,复位电平为低电平 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 16 - STC8A8K64D4 系列技术手册 2.1.3 官方网站: www.STCAI.com LQFP64 LQFP48 1 1 2 2 4 5 选型顾问: 13922805190 管脚说明 编号 3 技术支持: 19864585985 3 4 5 6 7 8 9 深圳国芯人工智能有限公司 LQFP44 2 3 4 名称 类型 说明 P5.2 I/O RxD4_2 I P5.3 I/O TxD4_2 O P1.1 I/O ADC1 I ADC 模拟输入通道 1 PWM1_2 O 增强 PWM 通道 1 输出脚 TxD2 O 串口 2 的发送脚 P1.2 I/O ADC2 I ADC 模拟输入通道 2 PWM2_2 O 增强 PWM 通道 2 输出脚 SS I/O T2 I 定时器 2 外部时钟输入 ECI I PCA 的外部脉冲输入 ADC_ETR I ADC 外部触发输入 P1.3 I/O ADC3 I ADC 模拟输入通道 3 PWM3_2 O 增强 PWM 通道 3 输出脚 MOSI I/O SPI 主机输出从机输入 T2CLKO O 定时器 2 时钟分频输出 P6.0 I/O PWM0_3 O P6.1 I/O PWM1_3 O P6.2 I/O PWM2_3 O P6.3 I/O PWM3_3 O PDIP40 7 8 9 国内分销商电话: 0513-5501 2928/2929/2966 标准 IO 口 串口 4 的接收脚 标准 IO 口 串口 4 的发送脚 标准 IO 口 标准 IO 口 SPI 从机选择 标准 IO 口 标准 IO 口 增强 PWM 通道 0 输出脚 标准 IO 口 增强 PWM 通道 1 输出脚 标准 IO 口 增强 PWM 通道 2 输出脚 标准 IO 口 增强 PWM 通道 3 输出脚 去纯技术交流论坛:www.STCAIMCU.com - 17 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 编号 LQFP64 10 11 12 13 14 LQFP48 6 7 8 9 10 LQFP44 5 8 9 选型顾问: 13922805190 名称 类型 说明 P1.4 I/O ADC4 I ADC 模拟输入通道 4 PWM4_2 O 增强 PWM 通道 4 输出脚 MISO I/O SPI 主机输入从机输出 SDA I/O I2C 接口的数据线 CCP3 I/O PCA 的捕获输入和脉冲输出 P4.4 I/O 标准 IO 口 RD O 外部总线的读信号线 TxD_4 O 串口 1 的发送脚 P1.5 I/O ADC5 I ADC 模拟输入通道 5 PWM5_2 O 增强 PWM 通道 5 输出脚 SCLK I/O SPI 的时钟脚 SCL I/O I2C 的时钟线 CCP2 I/O PCA 的捕获输入和脉冲输出 P1.6 I/O 标准 IO 口 ADC6 I ADC 模拟输入通道 6 RxD_3 I 串口 1 的接收脚 PWM6_2 O 增强 PWM 通道 6 输出脚 MCLKO_2 O 主时钟分频输出 CCP1 I/O XTALO O P1.7 I/O ADC7 I ADC 模拟输入通道 7 TxD_3 O 串口 1 的发送脚 PWM7_2 O 增强 PWM 通道 7 输出脚 CCP0 I/O PCA 的捕获输入和脉冲输出 XTALI I 外部晶振/外部时钟的输入脚 PDIP40 10 6 7 技术支持: 19864585985 11 12 13 标准 IO 口 标准 IO 口 PCA 的捕获输入和脉冲输出 外部晶振的输出脚 标准 IO 口 ADC 地线 15 11 10 14 ADC_AGnd GND 16 12 11 15 AVref I 17 13 12 16 ADC_AVcc VCC P5.4 I/O NRST I 复位引脚(低电平复位) MCLKO O 主时钟分频输出 18 14 13 17 ADC 的参考电压脚 标准 IO 口 19 15 14 18 Vcc VCC 20 16 15 19 P5.5 I/O 21 17 16 20 Gnd GND 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 ADC 电源脚 电源脚 标准 IO 口 地线 去纯技术交流论坛:www.STCAIMCU.com - 18 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 编号 LQFP64 22 LQFP48 18 LQFP44 17 24 25 26 28 29 30 31 19 20 21 22 23 深圳国芯人工智能有限公司 18 19 20 21 22 选型顾问: 13922805190 名称 类型 说明 P4.0 I/O WR_3 O 外部总线的写信号线 RxD2_2 I 串口 2 的接收脚 P6.4 I/O PWM4_3 O P6.5 I/O PWM5_3 O P6.6 I/O PWM6_3 O P6.7 I/O PWM7_3 O P3.0 I/O RxD I CCP3_4 I/O INT4 I 外部中断 4 P3.1 I/O 标准 IO 口 TxD O CCP2_4 I/O PCA 的捕获输入和脉冲输出 P3.2 I/O 标准 IO 口 INT0 I 外部中断 0 CCP1_4 I/O PCA 的捕获输入和脉冲输出 SCLK_4 I/O SPI 的时钟脚 SCL_4 I/O I2C 的时钟线 P3.3 I/O 标准 IO 口 INT1 I 外部中断 1 CCP0_4 I/O PCA 的捕获输入和脉冲输出 MISO_4 I/O SPI 主机输入从机输出 SDA_4 I/O I2C 接口的数据线 P3.4 I/O 标准 IO 口 T0 I 定时器 0 外部时钟输入 T1CLKO O 定时器 1 时钟分频输出 MOSI_4 I/O SPI 主机输出从机输入 CMPO O PDIP40 23 27 技术支持: 19864585985 21 22 23 24 25 国内分销商电话: 0513-5501 2928/2929/2966 标准 IO 口 标准 IO 口 增强 PWM 通道 4 输出脚 标准 IO 口 增强 PWM 通道 5 输出脚 标准 IO 口 增强 PWM 通道 6 输出脚 标准 IO 口 增强 PWM 通道 7 输出脚 标准 IO 口 串口 1 的接收脚 PCA 的捕获输入和脉冲输出 串口 1 的发送脚 比较器输出 去纯技术交流论坛:www.STCAIMCU.com - 19 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 编号 LQFP64 32 33 34 35 36 37 LQFP48 24 LQFP44 23 26 26 28 29 24 25 26 27 28 29 38 39 40 41 42 43 30 31 深圳国芯人工智能有限公司 27 28 选型顾问: 13922805190 名称 类型 说明 P3.5 I/O T1 I 定时器 1 外部时钟输入 T0CLKO O 定时器 0 时钟分频输出 ECI_4 I PCA 的外部脉冲输入 SS_4 I SPI 的从机选择脚(主机为输出) PWMFLT I 增强 PWM 的外部异常检测脚 P5.0 I/O RxD3_2 I 串口 3 的接收脚 CMP+_2 I 比较器正极输入 P5.1 I/O TxD3_2 O 串口 3 的发送脚 CMP+_3 I 比较器正极输入 P3.6 I/O 标准 IO 口 INT2 I 外部中断 2 WR_2 O 外部总线的写信号线 RxD_2 I 串口 1 的接收脚 CMP- I 比较器负极输入 P3.7 I/O 标准 IO 口 INT3 I 外部中断 3 RD_2 O 外部总线的读信号线 TxD_2 O 串口 1 的发送脚 CMP+ I 比较器正极输入 P4.1 I/O ALE O 地址锁存信号 CMPO_2 O 比较器输出 P7.0 I/O 标准 IO 口 CCP0_3 I/O PCA 的捕获输入和脉冲输出 P7.1 I/O 标准 IO 口 CCP1_3 I/O PCA 的捕获输入和脉冲输出 P7.2 I/O 标准 IO 口 CCP2_3 I/O PCA 的捕获输入和脉冲输出 P7.3 I/O 标准 IO 口 CCP3_3 I/O PCA 的捕获输入和脉冲输出 P2.0 I/O 标准 IO 口 A8 O 地址总线 PWM0 O 增强 PWM 通道 0 输出脚 P4.2 I/O RD_3 O 外部总线的读信号线 TxD2_2 O 串口 2 的发送脚 PDIP40 25 27 技术支持: 19864585985 30 国内分销商电话: 0513-5501 2928/2929/2966 标准 IO 口 标准 IO 口 标准 IO 口 标准 IO 口 标准 IO 口 去纯技术交流论坛:www.STCAIMCU.com - 20 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 编号 LQFP64 44 45 46 47 48 49 50 51 LQFP48 32 33 34 35 36 37 38 39 深圳国芯人工智能有限公司 LQFP44 29 30 31 32 33 34 35 36 技术支持: 19864585985 选型顾问: 13922805190 名称 类型 说明 P2.1 I/O 标准 IO 口 A9 O 地址总线 PWM1 O 增强 PWM 通道 1 输出脚 P2.2 I/O 标准 IO 口 A10 O 地址总线 PWM2 O 增强 PWM 通道 2 输出脚 SS_2 I SPI 的从机选择脚(主机为输出) ECI_2 I PCA 的外部脉冲输入 P2.3 I/O 标准 IO 口 A11 O 地址总线 PWM3 O 增强 PWM 通道 3 输出脚 MOSI_2 I/O SPI 主机输出从机输入 CCP0_2 I/O PCA 的捕获输入和脉冲输出 P2.4 I/O 标准 IO 口 A12 O 地址总线 PWM4 O 增强 PWM 通道 4 输出脚 MISO_2 I/O SPI 主机输入从机输出 SDA_2 I/O I2C 接口的数据线 CCP1_2 I/O PCA 的捕获输入和脉冲输出 P2.5 I/O 标准 IO 口 A13 O 地址总线 PWM5 O 增强 PWM 通道 5 输出脚 SCLK_2 I/O SPI 的时钟脚 SCL_2 I/O I2C 的时钟线 CCP2_2 I/O PCA 的捕获输入和脉冲输出 P2.6 I/O 标准 IO 口 A14 O 地址总线 PWM6 O 增强 PWM 通道 6 输出脚 CCP3_2 I/O PCA 的捕获输入和脉冲输出 P2.7 I/O 标准 IO 口 A15 O 地址总线 PWM7 O 增强 PWM 通道 7 输出脚 P0.0 I/O 标准 IO 口 AD0 I/O 地址/数据总线 ADC8 I ADC 模拟输入通道 8 RxD3 I 串口 3 的接收脚 PDIP40 31 32 33 34 35 36 37 38 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 21 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 编号 名称 类型 P0.1 I/O 标准 IO 口 AD1 I/O 地址/数据总线 ADC9 I ADC 模拟输入通道 9 TxD3 O 串口 3 的发送脚 P0.2 I/O 标准 IO 口 AD2 I/O 地址/数据总线 ADC10 I ADC 模拟输入通道 10 RxD4 I 串口 4 的接收脚 P7.4 I/O SS_3 I SPI 的从机选择脚(主机为输出) ECI_3 I PCA 的外部脉冲输入 P7.5 I/O 标准 IO 口 MOSI_3 I/O SPI 主机输出从机输入 P7.6 I/O 标准 IO 口 MISO_3 I/O SPI 主机输入从机输出 SDA_3 I/O I2C 接口的数据线 P7.7 I/O 标准 IO 口 SCLK_3 I/O SPI 的时钟脚 SCL_3 I/O I2C 的时钟线 P4.3 I/O 标准 IO 口 WR O 外部总线的写信号线 RxD_4 I 串口 1 的接收脚 P0.3 I/O 标准 IO 口 AD3 I/O 地址/数据总线 ADC11 I ADC 模拟输入通道 11 TxD4 O 串口 4 的发送脚 P0.4 I/O 标准 IO 口 AD4 I/O 地址/数据总线 ADC12 I ADC 模拟输入通道 12 T3 I 定时器 3 外部时钟输入 LQFP64 52 53 LQFP48 40 41 LQFP44 37 38 39 40 55 56 57 59 60 42 43 44 深圳国芯人工智能有限公司 39 40 41 选型顾问: 13922805190 说明 PDIP40 54 58 技术支持: 19864585985 1 2 国内分销商电话: 0513-5501 2928/2929/2966 标准 IO 口 去纯技术交流论坛:www.STCAIMCU.com - 22 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 编号 LQFP64 61 62 63 64 LQFP48 45 46 47 48 深圳国芯人工智能有限公司 LQFP44 42 43 44 1 技术支持: 19864585985 选型顾问: 13922805190 名称 类型 说明 P0.5 I/O 标准 IO 口 AD5 I/O 地址/数据总线 ADC13 I ADC 模拟输入通道 13 T3CLKO O 定时器 3 时钟分频输出 P0.6 I/O 标准 IO 口 AD6 I/O 地址/数据总线 ADC14 I ADC 模拟输入通道 14 T4 I 定时器 4 外部时钟输入 P0.7 I/O 标准 IO 口 AD7 I/O 地址/数据总线 T4CLKO O P1.0 I/O ADC0 I ADC 模拟输入通道 0 PWM0_2 O 增强 PWM 通道 0 输出脚 RxD2 I 串口 2 的接收脚 PDIP40 3 4 5 6 国内分销商电话: 0513-5501 2928/2929/2966 定时器 4 时钟分频输出 标准 IO 口 去纯技术交流论坛:www.STCAIMCU.com - 23 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 3 功能脚切换 STC8A8K64D4 系列单片机的特殊外设串口、SPI、PCA、I2C 以及总线控制脚可以在多个 I/O 直接 进行切换,以实现一个外设当作多个设备进行分时复用。 3.1 功能脚切换相关寄存器 位地址与符号 符号 描述 地址 复位值 B7 B6 BUS_SPEED 总线速度控制寄存器 A1H RW_S[1:0] P_SW1 外设端口切换寄存器 1 A2H S1_S[1:0] P_SW2 外设端口切换寄存器 2 BAH 符号 描述 地址 B5 B4 B3 CCP_S[1:0] EAXFR B2 CMPO_S B0 SPEED[1:0] 00xx,xx00 0 - nn00,000x S4_S S3_S S2_S 0x00,0000 B2 B1 SPI_S[1:0] I2C_S[1:0] B1 位地址与符号 复位值 B7 B6 B5 B4 B3 B0 PWM0CR PWM0 控制寄存器 FF14H ENC0O C0INI - C0_S[1:0] EC0I EC0T2SI EC0T1SI 00x0,0000 PWM1CR PWM1 控制寄存器 FF1CH ENC1O C1INI - C1_S[1:0] EC1I EC1T2SI EC1T1SI 00x0,0000 PWM2CR PWM2 控制寄存器 FF24H ENC2O C2INI - C2_S[1:0] EC2I EC2T2SI EC2T1SI 00x0,0000 PWM3CR PWM3 控制寄存器 FF2CH ENC3O C3INI - C3_S[1:0] EC3I EC3T2SI EC3T1SI 00x0,0000 PWM4CR PWM4 控制寄存器 FF34H ENC4O C4INI - C4_S[1:0] EC4I EC4T2SI EC4T1SI 00x0,0000 PWM5CR PWM5 控制寄存器 FF3CH ENC5O C5INI - C5_S[1:0] EC5I EC5T2SI EC5T1SI 00x0,0000 PWM6CR PWM6 控制寄存器 FF44H ENC6O C6INI - C6_S[1:0] EC6I EC6T2SI EC6T1SI 00x0,0000 PWM7CR PWM7 控制寄存器 FF4CH ENC7O C7INI - C7_S[1:0] EC7I EC7T2SI EC7T1SI 00x0,0000 MCLKOCR 主时钟输出控制寄存器 FE05H MCLKO_S LCMIFCFG LCM 接口配置寄存器 FE50H LCMIFIE LCMIFCFG2 LCM 接口配置寄存器 2 FE51H 深圳国芯人工智能有限公司 MCLKODIV[6:0] - LCMIFIP[1:0] LCMIFEXPS[1:0] 国内分销商电话: 0513-5501 2928/2929/2966 LCMIFPS[1:0] SETUPT[2:0] 0000,0000 D16_D8 M68_80 0x00,0000 HOLDT[1:0] 去纯技术交流论坛:www.STCAIMCU.com x000,0000 - 24 - STC8A8K64D4 系列技术手册 3.1.1 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 总线速度控制寄存器(BUS_SPEED) 符号 地址 BUS_SPEED A1H B7 B6 B5 B4 B3 B2 RW_S[1:0] B1 B0 SPEED[1:0] RW_S[1:0]:外部总线 RD/WR 控制线选择位 RW_S[1:0] RD WR 00 P4.4 P4.3 01 P3.7 P3.6 10 P4.2 P4.0 保留 11 3.1.2 外设端口切换控制寄存器 1(P_SW1) ,串口 1、CCP、SPI 切换 符号 地址 P_SW1 A2H B7 B6 S1_S[1:0] B5 B4 CCP_S[1:0] B3 B2 SPI_S[1:0] B1 B0 0 - S1_S[1:0]:串口 1 功能脚选择位 S1_S[1:0] RxD TxD 00 P3.0 P3.1 01 P3.6 P3.7 10 P1.6 P1.7 11 P4.3 P4.4 CCP_S[1:0]:PCA 功能脚选择位 CCP_S[1:0] ECI CCP0 CCP1 CCP2 CCP3 00 P1.2 P1.7 P1.6 P1.5 P1.4 01 P2.2 P2.3 P2.4 P2.5 P2.6 10 P7.4 P7.0 P7.1 P7.2 P7.3 11 P3.5 P3.3 P3.2 P3.1 P3.0 SPI_S[1:0]:SPI 功能脚选择位 SPI_S[1:0] SS MOSI MISO SCLK 00 P1.2 P1.3 P1.4 P1.5 01 P2.2 P2.3 P2.4 P2.5 10 P7.4 P7.5 P7.6 P7.7 11 P3.5 P3.4 P3.3 P3.2 3.1.3 外设端口切换控制寄存器 2(P_SW2),串口 2/3/4、I2C、 比较器输出切换 符号 地址 B7 B6 P_SW2 BAH EAXFR - B5 B4 I2C_S[1:0] B3 CMPO_S B2 S4_S B1 S3_S B0 S2_S EAXFR:扩展 RAM 区特殊功能寄存器(XFR)访问控制寄存器 0:禁止访问 XFR 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 25 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 1:使能访问 XFR。 当需要访问 XFR 时,必须先将 EAXFR 置 1,才能对 XFR 进行正常的读写 I2C_S[1:0]:I2C 功能脚选择位 I2C_S[1:0] SCL SDA 00 P1.5 P1.4 01 P2.5 P2.4 10 P7.7 P7.6 11 P3.2 P3.3 CMPO_S:比较器输出脚选择位 CMPO_S CMPO 0 P3.4 1 P4.1 S4_S:串口 4 功能脚选择位 S4_S RxD4 TxD4 0 P0.2 P0.3 1 P5.2 P5.3 S3_S:串口 3 功能脚选择位 S3_S RxD3 TxD3 0 P0.0 P0.1 1 P5.0 P5.1 S2_S:串口 2 功能脚选择位 S2_S RxD2 TxD2 0 P1.0 P1.1 1 P4.0 P4.2 3.1.4 时钟选择寄存器(MCLKOCR) 符号 地址 B7 MCLKOCR FE05H MCLKO_S B6 B5 B4 B3 B2 B1 B0 B2 B1 B0 MCLKODIV[6:0] MCLKO_S:主时钟输出脚选择位 MCLKO_S MCLKO 0 P5.4 1 P1.6 3.1.5 增强型 PWM 控制寄存器(PWMnCR) 符号 地址 B7 B6 B5 PWM0CR FF14H ENC0O C0INI - C0_S[1:0] EC0I EC0T2SI EC0T1SI PWM1CR FF1CH ENC1O C1INI - C1_S[1:0] EC1I EC1T2SI EC1T1SI PWM2CR FF24H ENC2O C2INI - C2_S[1:0] EC2I EC2T2SI EC2T1SI PWM3CR FF2CH ENC3O C3INI - C3_S[1:0] EC3I EC3T2SI EC3T1SI PWM4CR FF34H ENC4O C4INI - C4_S[1:0] EC4I EC4T2SI EC4T1SI PWM5CR FF3CH ENC5O C5INI - C5_S[1:0] EC5I EC5T2SI EC5T1SI 深圳国芯人工智能有限公司 B4 国内分销商电话: 0513-5501 2928/2929/2966 B3 去纯技术交流论坛:www.STCAIMCU.com - 26 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 PWM6CR FF44H ENC6O C6INI - C6_S[1:0] EC6I EC6T2SI EC6T1SI PWM7CR FF4CH ENC7O C7INI - C7_S[1:0] EC7I EC7T2SI EC7T1SI C0_S[1:0]:增强型 PWM 通道 0 输出脚选择位 C0_S[1:0] PWM0 00 P2.0 01 P1.0 10 P6.0 11 保留 C1_S[1:0]:增强型 PWM 通道 1 输出脚选择位 C1_S[1:0] PWM1 00 P2.1 01 P1.1 10 P6.1 11 保留 C2_S[1:0]:增强型 PWM 通道 2 输出脚选择位 C2_S[1:0] PWM2 00 P2.2 01 P1.2 10 P6.2 11 保留 C3_S[1:0]:增强型 PWM 通道 3 输出脚选择位 C3_S[1:0] PWM3 00 P2.3 01 P1.3 10 P6.3 11 保留 C4_S[1:0]:增强型 PWM 通道 4 输出脚选择位 C4_S[1:0] PWM4 00 P2.4 01 P1.4 10 P6.4 11 保留 C5_S[1:0]:增强型 PWM 通道 5 输出脚选择位 C5_S[1:0] PWM5 00 P2.5 01 P1.5 10 P6.5 11 保留 C6_S[1:0]:增强型 PWM 通道 6 输出脚选择位 C6_S[1:0] PWM6 00 P2.6 01 P1.6 10 P6.6 11 保留 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 27 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 C7_S[1:0]:增强型 PWM 通道 7 输出脚选择位 C7_S[1:0] PWM7 00 P2.7 01 P1.7 10 P6.7 11 保留 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 28 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 LCM 接口配置寄存器(LCMIFCFG) 3.1.6 符号 地址 B7 B6 LCMIFCFG FE50H LCMIFIE - LCMIFCFG2 FE51H B5 B4 LCMIFIP[1:0] LCMIFCPS[1:0] B3 B2 LCMIFDPS[1:0] SETUPT[2:0] B1 B0 D16_D8 M68_I80 HOLDT[1:0] LCMIFCPS[1:0]:LCM 接口控制脚选择位 LCMIFCPS [1:0] RS I8080 的读信号 RD M6800 的使能信号 E I8080 的写信号 WR M6800 的读写信号 RW 00 P4.1 P4.4 P4.3 01 P4.1 P3.7 P3.6 10 P4.1 P4.2 P4.0 11 P4.0 P3.7 P3.6 LCMIFDPS[1:0]:LCM 接口数据脚选择位 LCMIFDPS [1:0] D16_D8 数据高字节 DB[15:8] 数据低字节 DB[7:0] 00 0 N/A P2[7:0] 01 0 N/A P6[7:0] 10 0 N/A P2[7:0] 11 0 N/A P6[7:0] 00 1 P2[7:0] P0[7:0] 01 1 P6[7:0] P2[7:0] 10 1 P2[7:0] P7[7:0] 11 1 P6[7:0] P7[7:0] 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 29 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 3.2 范例程序 串口 1 切换 3.2.1 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" sfr P_SW1 = 0xa2; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // // // P_SW1 = 0x00; P_SW1 = 0x40; P_SW1 = 0x80; P_SW1 = 0xc0; //RXD/P3.0, TXD/P3.1 //RXD_2/P3.6, TXD_2/P3.7 //RXD_3/P1.6, TXD_3/P1.7 //RXD_4/P4.3, TXD_4/P4.4 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW1 DATA 0A2H P0M1 P0M0 P1M1 DATA DATA DATA 093H 094H 091H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 30 - STC8A8K64D4 系列技术手册 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV P_SW1,#00H P_SW1,#40H P_SW1,#80H P_SW1,#0C0H SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ; ; ; ;RXD/P3.0, TXD/P3.1 ;RXD_2/P3.6, TXD_2/P3.7 ;RXD_3/P1.6, TXD_3/P1.7 ;RXD_4/P4.3, TXD_4/P4.4 END 3.2.2 串口 2 切换 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 31 - STC8A8K64D4 系列技术手册 sfr sfr sfr P4M0 P5M1 P5M0 官方网站: www.STCAI.com = = = 技术支持: 19864585985 选型顾问: 13922805190 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // P_SW2 = 0x00; P_SW2 = 0x01; //RXD2/P1.0, TXD2/P1.1 //RXD2_2/P4.0, TXD2_2/P4.2 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 DATA 0BAH P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV 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 去纯技术交流论坛:www.STCAIMCU.com - 32 - STC8A8K64D4 系列技术手册 ; 官方网站: www.STCAI.com MOV MOV MOV P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV P_SW2,#00H P_SW2,#01H SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;RXD2/P1.0, TXD2/P1.1 ;RXD2_2/P4.0, TXD2_2/P4.2 END 串口 3 切换 3.2.3 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // P_SW2 = 0x00; P_SW2 = 0x02; //RXD3/P0.0, TXD3/P0.1 //RXD3_2/P5.0, TXD3_2/P5.1 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 33 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com P_SW2 DATA 0BAH P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV P_SW2,#00H P_SW2,#02H SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ; ;RXD3/P0.0, TXD3/P0.1 ;RXD3_2/P5.0, TXD3_2/P5.1 END 3.2.4 串口 4 切换 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 34 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // P_SW2 = 0x00; P_SW2 = 0x04; //RXD4/P0.2, TXD4/P0.3 //RXD4_2/P5.2, TXD4_2/P5.3 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 DATA 0BAH P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 35 - STC8A8K64D4 系列技术手册 ; 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV MOV P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV P_SW2,#00H P_SW2,#04H SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;RXD4/P0.2, TXD4/P0.3 ;RXD4_2/P5.2, TXD4_2/P5.3 END 3.2.5 SPI 切换 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" sfr P_SW1 = 0xa2; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // // // P_SW1 = 0x00; P_SW1 = 0x04; P_SW1 = 0x08; P_SW1 = 0x0c; 深圳国芯人工智能有限公司 //SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5 //SS_2/P2.2, MOSI_2/P2.3, MISO_2/P2.4, SCLK_2/P2.5 //SS_3/P7.4 MOSI_3/P7.5, MISO_3/P7.6, SCLK_3/P7.7 //SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 36 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW1 DATA 0A2H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV P_SW1,#00H P_SW1,#04H P_SW1,#08H P_SW1,#0CH SJMP $ MAIN: ; ; ; ;SS/P1.2, MOSI/P1.3, MISO/P1.4, SCLK/P1.5 ;SS_2/P2.2, MOSI_2/P2.3, MISO_2/P2.4, SCLK_2/P2.5 ;SS_3/P7.4 MOSI_3/P7.5, MISO_3/P7.6, SCLK_3/P7.7 ;SS_4/P3.5, MOSI_4/P3.4, MISO_4/P3.3, SCLK_4/P3.2 END 3.2.6 PWM 切换 汇编代码 P_SW2 PWM0CR PWM1CR DATA EQU EQU 深圳国芯人工智能有限公司 0BAH 0FF14H 0FF1CH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 37 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com PWM2CR PWM3CR PWM4CR PWM5CR PWM6CR PWM7CR EQU EQU EQU EQU EQU EQU 0FF24H 0FF2CH 0FF34H 0FF3CH 0FF44H 0FF4CH 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, #3FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV MOV MOVX MOV MOV MOV MOV MOVX MOV MOV MOV MOV MOVX MOV MOV MOV MOV P_SW2,#80H A,#00H A,#08H A,#10H DPTR,#PWM0CR @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM1CR @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM2CR @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM3CR 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ; ; ; ; ; ; ; ; 深圳国芯人工智能有限公司 ;PWM0/P2.0 ;PWM0_2/P1.0 ;PWM0_3/P6.0 ;PWM1/P2.1 ;PWM1_2/P1.1 ;PWM1_3/P6.1 ;PWM2/P2.2 ;PWM2_2/P1.2 ;PWM2_3/P6.2 ;PWM3/P2.3 ;PWM3_2/P1.3 ;PWM3_3/P6.3 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 38 - STC8A8K64D4 系列技术手册 ; ; ; ; ; ; ; ; 官方网站: www.STCAI.com MOVX MOV MOV MOV MOV MOVX MOV MOV MOV MOV MOVX MOV MOV MOV MOV MOVX MOV MOV MOV MOV MOVX MOV @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM4CR @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM5CR @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM6CR @DPTR,A A,#00H A,#08H A,#10H DPTR,#PWM7CR @DPTR,A P_SW2,#00H SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;PWM4/P2.4 ;PWM4_2/P1.4 ;PWM4_3/P6.4 ;PWM5/P2.5 ;PWM5_2/P1.5 ;PWM5_3/P6.5 ;PWM6/P2.6 ;PWM6_2/P1.6 ;PWM6_3/P6.6 ;PWM7/P2.7 ;PWM7_2/P1.7 ;PWM7_3/P6.7 END C 语言代码 #include "reg51.h" #define PWM0CR #define PWM1CR #define PWM2CR #define PWM3CR #define PWM4CR #define PWM5CR #define PWM6CR #define PWM7CR (*(unsigned char volatile xdata *)0xff14) (*(unsigned char volatile xdata *)0xff1c) (*(unsigned char volatile xdata *)0xff24) (*(unsigned char volatile xdata *)0xff2c) (*(unsigned char volatile xdata *)0xff34) (*(unsigned char volatile xdata *)0xff3c) (*(unsigned char volatile xdata *)0xff44) (*(unsigned char volatile xdata *)0xff4c) sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 39 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // // // // // // // // // // // // // // // // P_SW2 = 0x80; PWM0CR = 0x00; PWM0CR = 0x08; PWM0CR = 0x10; PWM1CR = 0x00; PWM1CR = 0x08; PWM1CR = 0x10; PWM2CR = 0x00; PWM2CR = 0x08; PWM2CR = 0x10; PWM3CR = 0x00; PWM3CR = 0x08; PWM3CR = 0x10; PWM4CR = 0x00; PWM4CR = 0x08; PWM4CR = 0x10; PWM5CR = 0x00; PWM5CR = 0x08; PWM5CR = 0x10; PWM6CR = 0x00; PWM6CR = 0x08; PWM6CR = 0x10; PWM7CR = 0x00; PWM7CR = 0x08; PWM7CR = 0x10; P_SW2 = 0x00; //PWM0/P2.0 //PWM0_2/P1.0 //PWM0_3/P6.0 //PWM1/P2.1 //PWM1_2/P1.1 //PWM1_3/P6.1 //PWM2/P2.2 //PWM2_2/P1.2 //PWM2_3/P6.2 //PWM3/P2.3 //PWM3_2/P1.3 //PWM3_3/P6.3 //PWM4/P2.4 //PWM4_2/P1.4 //PWM4_3/P6.4 //PWM5/P2.5 //PWM5_2/P1.5 //PWM5_3/P6.5 //PWM6/P2.6 //PWM6_2/P1.6 //PWM6_3/P6.6 //PWM7/P2.7 //PWM7_2/P1.7 //PWM7_3/P6.7 while (1); } PCA/CCP/PWM 切换 3.2.7 汇编代码 P_SW1 DATA 0A2H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 40 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #3FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV P_SW1,#00H P_SW1,#10H P_SW1,#20H P_SW1,#30H SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ; ; ; ;ECI/P1.2, CCP0/P1.7, CCP1/P1.6, CCP2/P1.5,CCP3/P1.4 ;ECI_2/P2.2, CCP0_2/P2.3, CCP1_2/P2.4, CCP2_2/P2.5,CCP3_2/P2.6 ;ECI_3/P7.4, CCP0_3/P7.0, CCP1_3/P7.1, CCP2_3/P7.2,CCP3_3/P7.3 ;ECI_4/P3.5, CCP0_4/P3.3, CCP1_4/P3.2, CCP2_4/P3.1,CCP3_4/P3.0 END C 语言代码 #include "reg51.h" sfr P_SW1 = 0xa2; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 41 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // // // P_SW1 = 0x00; P_SW1 = 0x10; P_SW1 = 0x20; P_SW1 = 0x30; //ECI/P1.2, CCP0/P1.7, CCP1/P1.6, CCP2/P1.5,CCP3/P1.4 //ECI_2/P2.2, CCP0_2/P2.3, CCP1_2/P2.4, CCP2_2/P2.5,CCP3_2/P2.6 //ECI_3/P7.4, CCP0_3/P7.0, CCP1_3/P7.1, CCP2_3/P7.2,CCP3_3/P7.3 //ECI_4/P3.5, CCP0_4/P3.3, CCP1_4/P3.2, CCP2_4/P3.1,CCP3_4/P3.0 while (1); } 3.2.8 I2C 切换 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // // // P_SW2 = 0x00; P_SW2 = 0x10; P_SW2 = 0x20; P_SW2 = 0x30; //SCL/P1.5, SDA/P1.4 //SCL_2/P2.5, SDA_2/P2.4 //SCL_3/P7.7, SDA_3/P7.6 //SCL_4/P3.2, SDA_4/P3.3 while (1); 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 42 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 DATA 0BAH P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV P_SW2,#00H P_SW2,#10H P_SW2,#20H P_SW2,#30H SJMP $ MAIN: ; ; ; ;SCL/P1.5, SDA/P1.4 ;SCL_2/P2.5, SDA_2/P2.4 ;SCL_3/P7.7, SDA_3/P7.6 ;SCL_4/P3.2, SDA_4/P3.3 END 3.2.9 比较器输出切换 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 43 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; 技术支持: 19864585985 选型顾问: 13922805190 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // P_SW2 = 0x00; P_SW2 = 0x08; //CMPO/P3.4 //CMPO_2/P4.1 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 DATA 0BAH P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 44 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ; MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV P_SW2,#00H P_SW2,#08H SJMP $ ;CMPO/P3.4 ;CMPO_2/P4.1 END 3.2.10 主时钟输出切换 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #define MCLKOCR (*(unsigned char volatile xdata *)0xfe00) sfr P_SW2 = 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 45 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // P_SW2 = 0x80; MCLKOCR = 0x04; MCLKOCR = 0x84; P_SW2 = 0x00; //HIRC/4 output via MCLKO/P5.4 //HIRC/4 output via MCLKO_2/P1.6 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 DATA 0BAH MCLKOCR EQU 0FE05H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV MOVX MOV P_SW2,#80H A,#04H A,#84H DPTR,#MCLKOCR @DPTR,A P_SW2,#00H MAIN: ; 深圳国芯人工智能有限公司 ;HIRC/4 output via MCLKO/P5.4 ;HIRC/4 output via MCLKO_2/P1.6 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 46 - STC8A8K64D4 系列技术手册 SJMP 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 $ END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 47 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 4 封装尺寸图 4.1 LQFP44 封装尺寸图(12mm*12mm) D (12mm) D1 (10mm) 23 34 22 44 12 E1 (10mm) E (12mm) 33 1 11 e (0.8mm) SYMBOL A A1 A2 A3 b b1 c c1 D D1 E E1 e L L1 L2 R1 R2 S 一般尺寸 测量单位:毫米/mm MIN TYP 0.05 1.35 1.40 0.59 0.64 0.33 0.32 0.35 0.13 0.12 0.13 11.95 12.00 9.90 10.00 11.95 12.00 9.90 10.00 0.70 0.80 0.45 0.60 1.00REF 0.25BSC 0.08 0.08 0.20 - MAX 1.60 0.15 1.45 0.69 0.42 0.38 0.18 0.14 12.05 10.10 12.05 10.10 0.90 0.75 0.20 - b A A2 A3 R1 b A1 R2 L2 L b1 L1 c c1 (A-A的截面图) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 48 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 4.2 LQFP48 封装尺寸图(9mm*9mm) D (9mm) D1 (7mm) 25 37 24 48 13 E1 (7mm) E (9mm) 36 1 12 e (0.5mm) SYMBOL A A1 A2 A3 b b1 c c1 D D1 E E1 e L L1 L2 R1 R2 S 一般尺寸 测量单位:毫米/mm MIN TYP 0.05 1.35 1.40 0.59 0.64 0.18 0.17 0.20 0.13 0.12 0.127 8.80 9.00 6.90 7.00 8.80 9.00 6.90 7.00 0.45 0.50 0.45 0.60 1.00REF 0.25BSC 0.08 0.08 0.20 - MAX 1.60 0.15 1.45 0.69 0.27 0.23 0.18 0.134 9.20 7.10 9.20 7.10 0.55 0.75 0.20 - b A A2 A3 R1 A1 R2 L2 L b b1 c L1 c1 (A-A的截面图) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 49 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 4.3 QFN48 封装尺寸图(6mm*6mm) D (6mm) 48 37 1 36 E (6mm) PIN 1 12 25 13 SYMBOL A A1 A3 b D E D2 E2 e L K R 一般尺寸 测量单位:毫米/mm MIN TYP 0.70 0.75 0.00 0.02 0.20REF 0.15 0.20 5.90 6.00 5.90 6.00 3.95 4.05 3.95 4.05 0.35 0.40 0.35 0.40 0.20 0.09 - MAX 0.80 0.05 0.25 6.10 6.10 4.15 4.15 0.45 0.45 - 24 K 39 48 A3 1 35 A1 A L E2 e(0.4mm) R D2 25 12 24 b(0.20mm) 13 STC 现有 QFN48 封装芯片的背面金属片(衬底) ,在芯片内部并未接地,在用户的 PCB 板上可以接地, 也可以不接地,不会对芯片性能造成影响 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 50 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 4.4 LQFP64 封装尺寸图(12mm*12mm) A D (12mm) A2 D1 (10mm) 48 A3 33 49 32 E1 (10mm) E (12mm) TOP E-MARK 2-Φ1.8±0.1 DEPTH 0.1±0.05 BTM E-MARK 2-Φ1.8±0.1 DEPTH 0.1±0.05 INDEX Φ1.2±0.1 DEPTH 0.2±0.1 64 17 1 16 e (0.5mm) SYMBOL A A1 A2 A3 b b1 c c1 D D1 E E1 e L L1 L2 R1 R2 S ? ?1 ?2 ?3 深圳国芯人工智能有限公司 一般尺寸 测量单位:毫米/mm MIN TYP 0.05 1.35 1.40 0.59 0.64 0.18 0.17 0.20 0.13 0.12 0.127 11.80 12.00 9.90 10.00 11.80 12.00 9.90 10.00 0.50BSC 0.45 0.60 1.00REF 0.25BSC 0.08 0.08 0.20 0° 3.5° 0° 11° 12° 11° 12° A1 b ?2 R1 MAX 1.60 0.15 1.45 0.69 0.27 0.23 0.18 0.134 12.20 10.10 12.20 10.10 ?1 R2 ?3 ? L2 L1 L S b 0.75 b1 0.20 7° 13° 13° c 国内分销商电话: 0513-5501 2928/2929/2966 c1 (A-A的截面图) 去纯技术交流论坛:www.STCAIMCU.com - 51 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 4.5 QFN64 封装尺寸图(8mm*8mm) D (8mm) 64 49 1 48 E (8mm) PIN 1 16 SYMBOL A A1 A2 A3 b D E D2 E2 e L K R 一般尺寸 测量单位:毫米/mm MIN TYP 0.70 0.75 0.00 0.02 0.50 0.55 0.20REF 0.15 0.20 7.90 8.00 7.90 8.00 5.90 6.00 5.90 6.00 0.30 0.40 0.30 0.40 0.40 0.09 - MAX 0.80 0.05 0.60 0.25 8.10 8.10 6.10 6.10 0.50 0.50 - 33 17 K 51 A3 A1 A 32 64 L 1 47 R e(0.4mm) E2 D2 33 16 32 b(0.20mm) 17 STC 现有 QFN64 封装芯片的背面金属片(衬底) ,在芯片内部并未接地,在用户的 PCB 板上可以接地, 也可以不接地,不会对芯片性能造成影响 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 52 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 4.6 STC8A8K64D4 系列单片机命名规则 STC 8x xK 64 D 4 4:4个串口 DMA 程序空间大小 60:60K字节 64:64K字节 SRAM空间大小 8K:8K字节 子系列 8A:STC8A系列 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 53 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 5 ISP 下载流程及典型应用线路图 5.1.1 ISP 下载流程图(串口下载模式) 上电复位/外部按键复位/ 看门狗复位/低压复位 单片机运行 系统ISP监控程序 检测有无合法命令流,占时几十毫秒到几百毫秒。 如无合法下载命令流,则立即跑用户程序 否 P3.0是否有合法 串口下载命令流? 是 如果已设置[P3.2,P3.3]=[0, 0]才判断是否下载用户程序,则冷启 动后如果[P3.2, P3.3] ? [[0, 0],则直接跑用户程序,只会占时 50µs,可忽略不计。建议用户选择[P3.2,P3.3]不同时为[0,0]时 立即跑用户程序,跨过系统ISP监控程序。【注1】 进入 【串口模式下载】 【串口模式下载】:单片机连接到PC的串口,单片机处于停电 状态,点击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】:STC15,STC8 系列及以后新出的芯片的烧录保护引脚为 P3.2/P3.3,之前早期芯片的烧录保护 引脚为 P1.0/P1.1。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 54 - STC8A8K64D4 系列技术手册 5.1.2 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ISP 下载流程图(硬件/软件模拟 USB+串口模式) 上电复位/外部按键复位/ 看门狗复位/低压复位 单片机运行 系统ISP监控程序 检测有无合法命令流,占时几十毫秒到几百毫秒。 如无合法下载命令流,则立即跑用户程序 是 否 否 P3.0/P3.1是否有 连接到USB口? P3.2是否有 连接到Gnd? 如果已设置[P3.2,P3.3]=[0, 0]才判断是否下载用户程序,则冷启 动后如果[P3.2, P3.3] ? [[0, 0],则直接跑用户程序,只会占时 50µs,可忽略不计。建议用户选择[P3.2,P3.3]不同时为[0,0]时 立即跑用户程序,跨过系统ISP监控程序。【注1】 P3.0是否有合法 串口下载命令流? 是 是 进入 【USB模式下载】 否 【串口模式下载】:单片机连接到PC的串口,单片机处于停电 状态,点击PC端STC-ISP控制软件的【下载/编程】按钮发送 下载命令流,再给单片机上电。 进入 【串口模式下载】 下载用户程序到 用户程序区 【USB模式下载】:单片机的P3.2连接到Gnd,单片机连接到PC 的USB口,给单片机上电,等STC-ISP控制软件中自动识别出 “STC-USB Writer”设备后,再点击PC端STC-ISP控制软件的 【下载/编程】按钮发送下载命令流进行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】:STC15,STC8 系列及以后新出的芯片的烧录保护引脚为 P3.2/P3.3,之前早期芯片的烧录保护 引脚为 P1.0/P1.1。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 55 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 5.2 STC8A8K64D4 系列 ISP 下载应用线路图 5.2.1 使用 STC-USB Link1D 工具下载,支持在线和脱机下载 连接 电脑/PC STC-USB Link1D工具 (人民币35元) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P0.3 P0.4 P0.5 P0.6 P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AGnd AVref AVcc P5.4 Vcc P5.5 Gnd P0.2 P0.1 P0.0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P4.1 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 STC8A8K64D4 Vcc 22u 0.1u ISP 下载步骤: 1、 按照如图所示的连接方式将 STC-USB Link1D 和目标芯片连接 2、 点击 STC-ISP 下载软件中的“下载/编程”按钮 3、 开始 ISP 下载 注意:若是使用 STC-USB Link1D 给目标系统供电,目标系统的总电流不能大于 200mA,否则会导致下 载失败。 注意:目前有发现使用 USB 线供电进行 ISP 下载时,由于 USB 线太细,在 USB 线上的压降过大,导 致 ISP 下载时供电不足,所以请在使用 USB 线供电进行 ISP 下载时,务必使用 USB 加强线。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 56 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 上面 RMB35 是配上面全部的线,是亏本补助大家的 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 57 - STC8A8K64D4 系列技术手册 技术支持: 19864585985 选型顾问: 13922805190 软件模拟 USB 直接 ISP 下载,建议尝试,不支持仿真(5V 系统) 5.2.2 系统电源 (可从USB取电) Vin Power On Vcc 22u 官方网站: www.STCAI.com 104 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 P0.3 P0.4 P0.5 P0.6 P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AGnd AVref AVcc P5.4 Vcc P5.5 Gnd P0.2 P0.1 P0.0 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P4.1 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 Vin 如需要直接连接USB进行下载,请务必在PCB上预 留此线路。按住此按钮然后连接USB,可进行ISP下 载,若连接USB时没有按住此按钮,则不会进入 ISP,而是直接运行用户代码 注意:使用USB直接下载不能调节内部IRC的频 率,但可在下载时选择内部预置的频率。只有硬件 USB下载才有此功能,模拟USB下载无此功能 P3.0 P3.1 1 2 3 4 Vcc P3.0 P3.1 Gnd SIP4 USB+5V DD+ Vcc 1 2 3 4 VBUS D-/DM D+/DP GND 10K USB-TypeA USB+5V 5.1K D+ D- 300R 5.1K 33R USB+5V 33R STC8A8K64D4 1N4729-3.6V 稳压保护二极管 RMB0.03元 22u独石电容(封装0603)参考价 8); UartSend(VREF_ADDR); //读取内部 1.19V 参考信号源的高字节 //读取内部 1.19V 参考信号源的低字节 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz CPUIDBASE EQU 0FDE0H ID_ADDR VREF_ADDR EQU EQU CPUIDBASE + 00H CPUIDBASE + 07H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 169 - STC8A8K64D4 系列技术手册 F32K_ADDR T22M_ADDR T24M_ADDR T20M_ADDR T27M_ADDR T30M_ADDR T33M_ADDR T35M_ADDR T36M_ADDR T40M_ADDR T45M_ADDR VRT6M_ADDR VRT10M_ADDR VRT27M_ADDR VRT44M_ADDR EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU 官方网站: www.STCAI.com CPUIDBASE + 09H CPUIDBASE + 0BH CPUIDBASE + 0CH CPUIDBASE + 0DH CPUIDBASE + 0EH CPUIDBASE + 0FH CPUIDBASE + 10H CPUIDBASE + 11H CPUIDBASE + 12H CPUIDBASE + 13H CPUIDBASE + 14H CPUIDBASE + 15H CPUIDBASE + 16H CPUIDBASE + 17H CPUIDBASE + 18H AUXR P_SW2 DATA DATA 8EH 0BAH BUSY BIT 20H.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 0023H UART_ISR ORG 0100H JNB CLR CLR TI,CHKRI TI BUSY 技术支持: 19864585985 选型顾问: 13922805190 ;22.1184MHz ;24MHz ;20MHz ;27MHz ;30MHz ;33.1776MHz ;35MHz ;36.864MHz ;40MHz ;45MHz ;VRTRIM_6M ;VRTRIM_10M ;VRTRIM_27M ;VRTRIM_44M UART_ISR: CHKRI: JNB CLR UARTISR_EXIT: RETI RI,UARTISR_EXIT RI 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 去纯技术交流论坛:www.STCAIMCU.com - 170 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RET UART_SEND: JB SETB MOV RET BUSY,$ BUSY SBUF,A MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV MOV CLR MOVX LCALL INC MOVX LCALL P_SW2,#80H DPTR,# VREF_ADDR A A,@DPTR UART_SEND DPTR A,@DPTR UART_SEND JMP LOOP MAIN: ;读取内部 1.19V 参考信号源的高字节 ;读取内部 1.19V 参考信号源的低字节 LOOP: END 7.5.2 读取内部 1.19V 参考信号源-BGV 值 (从 Flash 程序存储器 (ROM)中读取) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr AUXR = 深圳国芯人工智能有限公司 0x8e; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 171 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 bit int busy; *BGV; 官方网站: www.STCAI.com = = = = = = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void UartIsr() interrupt 4 { if (TI) { TI = 0; busy = 0; } if (RI) { RI = 0; } } 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() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 172 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P5M0 = 0x00; P5M1 = 0x00; BGV = (int code *)0xeff7; UartInit(); ES = 1; EA = 1; UartSend(*BGV >> 8); UartSend(*BGV); // STC8A8K60S4 //读取内部 1.19V 参考信号源的高字节 //读取内部 1.19V 参考信号源的低字节 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz AUXR BGV DATA EQU 8EH 0EFF7H BUSY BIT 20H.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 0023H UART_ISR ORG 0100H JNB CLR CLR TI,CHKRI TI BUSY ;STC8A8K60S4 UART_ISR: CHKRI: JNB CLR UARTISR_EXIT: RETI RI,UARTISR_EXIT RI UART_INIT: MOV MOV MOV MOV SETB MOV 深圳国芯人工智能有限公司 SCON,#50H TMOD,#00H TL1,#0E8H TH1,#0FFH TR1 AUXR,#40H ;65536-11059200/115200/4=0FFE8H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 173 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com CLR RET BUSY JB SETB MOV RET BUSY,$ BUSY SBUF,A MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV CLR MOVC LCALL MOV MOVC LCALL DPTR,#BGV A A,@A+DPTR UART_SEND A,#1 A,@A+DPTR UART_SEND JMP LOOP 技术支持: 19864585985 选型顾问: 13922805190 UART_SEND: MAIN: ;读取内部 1.19V 参考信号源的高字节 ;读取内部 1.19V 参考信号源的低字节 LOOP: END 7.5.3 读取内部 1.19V 参考信号源-BGV 值 (从 RAM 中读取) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr AUXR = 0x8e; sfr P0M1 = 0x93; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 174 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 bit int busy; *BGV; 官方网站: www.STCAI.com = = = = = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void UartIsr() interrupt 4 { if (TI) { TI = 0; busy = 0; } if (RI) { RI = 0; } } 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() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 175 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com BGV = (int idata *)0xef; UartInit(); ES = 1; EA = 1; UartSend(*BGV >> 8); UartSend(*BGV); 技术支持: 19864585985 选型顾问: 13922805190 //读取内部 1.19V 参考信号源的高字节 //读取内部 1.19V 参考信号源的低字节 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz AUXR BGV DATA DATA 8EH 0EFH BUSY BIT 20H.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 0023H UART_ISR ORG 0100H JNB CLR CLR TI,CHKRI TI BUSY UART_ISR: CHKRI: JNB CLR UARTISR_EXIT: RETI RI,UARTISR_EXIT RI UART_INIT: MOV MOV MOV MOV SETB MOV CLR RET 深圳国芯人工智能有限公司 SCON,#50H TMOD,#00H TL1,#0E8H TH1,#0FFH TR1 AUXR,#40H BUSY ;65536-11059200/115200/4=0FFE8H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 176 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 UART_SEND: JB SETB MOV RET BUSY,$ BUSY SBUF,A MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV MOV LCALL INC MOV LCALL R0,#BGV A,@R0 UART_SEND R0 A,@R0 UART_SEND JMP LOOP MAIN: ;读取内部 1.19V 参考信号源的高字节 ;读取内部 1.19V 参考信号源的低字节 LOOP: END 7.5.4 读取全球唯一 ID 号 (从 CHIPID 中读取) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT #define CPUIDBASE 0xfde0 #define #define #define #define ID_ADDR VREF_ADDR F32K_ADDR T22M_ADDR ((unsigned char volatile xdata *)(CPUIDBASE + 0x00)) (*(unsigned int volatile xdata *)(CPUIDBASE + 0x07)) (*(unsigned int volatile xdata *)(CPUIDBASE + 0x09)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0b)) 深圳国芯人工智能有限公司 11059200UL (65536 - FOSC / 115200 / 4) 国内分销商电话: 0513-5501 2928/2929/2966 //22.1184MHz 去纯技术交流论坛:www.STCAIMCU.com - 177 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 #define #define #define #define #define #define #define #define #define #define #define #define #define T24M_ADDR T20M_ADDR T27M_ADDR T30M_ADDR T33M_ADDR T35M_ADDR T36M_ADDR T40M_ADDR T45M_ADDR VRT6M_ADDR VRT10M_ADDR VRT27M_ADDR VRT44M_ADDR (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0c)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0d)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0e)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0f)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x10)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x11)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x12)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x13)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x14)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x15)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x16)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x17)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x18)) sfr sfr AUXR P_SW2 = = 0x8e; 0xba; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit busy; 选型顾问: 13922805190 //24MHz //20MHz //27MHz //30MHz //33.1776MHz //35MHz //36.864MHz //40MHz //45MHz //VRTRIM_6M //VRTRIM_10M //VRTRIM_27M //VRTRIM_44M 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); 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 178 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 busy = 1; SBUF = dat; } void main() { char i; 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; P_SW2 = 0x80; 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; P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; ID = (char code *)0xeff9; UartInit(); ES = 1; EA = 1; // STC8A8K60S4 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; P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; ID = (char idata *)0xf1; UartInit(); ES = 1; EA = 1; for (i=0; i> 8; TR1 = 1; AUXR = 0x40; busy = 0; } void UartSend(char dat) { while (busy); busy = 1; SBUF = dat; } void main() { P0M0 = 0x00; P0M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 188 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; F32K = (int code *)0xeff5; UartInit(); ES = 1; EA = 1; // STC8A8K60S4 P_SW2 = 0x80; UartSend(F32K_ADDR >> 8); UartSend(F32K_ADDR); //读取 32K 频率的高字节 //读取 32K 频率的低字节 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz CPUIDBASE EQU 0FDE0H ID_ADDR VREF_ADDR F32K_ADDR T22M_ADDR T24M_ADDR T20M_ADDR T27M_ADDR T30M_ADDR T33M_ADDR T35M_ADDR T36M_ADDR T40M_ADDR T45M_ADDR VRT6M_ADDR VRT10M_ADDR VRT27M_ADDR VRT44M_ADDR EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU EQU CPUIDBASE + 00H CPUIDBASE + 07H CPUIDBASE + 09H CPUIDBASE + 0BH CPUIDBASE + 0CH CPUIDBASE + 0DH CPUIDBASE + 0EH CPUIDBASE + 0FH CPUIDBASE + 10H CPUIDBASE + 11H CPUIDBASE + 12H CPUIDBASE + 13H CPUIDBASE + 14H CPUIDBASE + 15H CPUIDBASE + 16H CPUIDBASE + 17H CPUIDBASE + 18H AUXR P_SW2 DATA DATA 8EH 0BAH BUSY BIT 20H.0 P0M1 P0M0 P1M1 P1M0 P2M1 DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 深圳国芯人工智能有限公司 ;22.1184MHz ;24MHz ;20MHz ;27MHz ;30MHz ;33.1776MHz ;35MHz ;36.864MHz ;40MHz ;45MHz ;VRTRIM_6M ;VRTRIM_10M ;VRTRIM_27M ;VRTRIM_44M 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 189 - STC8A8K64D4 系列技术手册 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.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 JNB CLR CLR TI,CHKRI TI BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART_ISR: CHKRI: JNB CLR UARTISR_EXIT: RETI RI,UARTISR_EXIT RI UART_INIT: MOV MOV MOV MOV SETB MOV CLR RET SCON,#50H TMOD,#00H TL1,#0E8H TH1,#0FFH TR1 AUXR,#40H BUSY JB SETB MOV RET BUSY,$ BUSY SBUF,A MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA ;65536-11059200/115200/4=0FFE8H UART_SEND: MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 190 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV CLR MOVX LCALL INC CLR MOVX LCALL P_SW2,#80H DPTR,# F32K_ADDR A A,@DPTR UART_SEND DPTR A A,@DPTR UART_SEND JMP LOOP 技术支持: 19864585985 选型顾问: 13922805190 ;读取 32K 频率的高字节 ;读取 32K 频率的低字节 LOOP: END 7.5.8 读取 32K 掉电唤醒定时器的频率 (从 Flash 程序存储器 (ROM)中读取) 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 int busy; *F32K; void UartIsr() interrupt 4 { if (TI) { TI = 0; busy = 0; } 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 191 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; F32K = (int code *)0xeff5; UartInit(); ES = 1; EA = 1; // STC8A8K60S4 UartSend(*F32K >> 8); UartSend(*F32K); //读取 32K 频率的高字节 //读取 32K 频率的低字节 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz AUXR F32K DATA EQU 8EH 0EFF5H BUSY BIT 20H.0 深圳国芯人工智能有限公司 ; STC8A8K60S4 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 192 - STC8A8K64D4 系列技术手册 P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com 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 JNB CLR CLR TI,CHKRI TI BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART_ISR: CHKRI: JNB CLR UARTISR_EXIT: RETI RI,UARTISR_EXIT RI UART_INIT: MOV MOV MOV MOV SETB MOV CLR RET SCON,#50H TMOD,#00H TL1,#0E8H TH1,#0FFH TR1 AUXR,#40H BUSY JB SETB MOV RET BUSY,$ BUSY SBUF,A MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H ;65536-11059200/115200/4=0FFE8H UART_SEND: MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 193 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV CLR MOVC LCALL INC CLR MOVC LCALL DPTR,#F32K A A,@A+DPTR UART_SEND DPTR A A,@A+DPTR UART_SEND JMP LOOP 技术支持: 19864585985 选型顾问: 13922805190 ;读取 32K 频率的高字节 ;读取 32K 频率的低字节 LOOP: END 7.5.9 读取 32K 掉电唤醒定时器的频率 (从 RAM 中读取) 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 int busy; *F32K; void UartIsr() interrupt 4 { if (TI) { TI = 0; busy = 0; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 194 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 } 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() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; F32K = (int idata *)0xf8; UartInit(); ES = 1; EA = 1; //读取 32K 频率的高字节 //读取 32K 频率的低字节 UartSend(*F32K >> 8); UartSend(*F32K); while (1); } 汇编代码 ;测试工作频率为 11.0592MHz AUXR F32K DATA DATA 8EH 0F8H BUSY BIT 20H.0 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 195 - STC8A8K64D4 系列技术手册 P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com 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 JNB CLR CLR TI,CHKRI TI BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART_ISR: CHKRI: JNB CLR UARTISR_EXIT: RETI RI,UARTISR_EXIT RI UART_INIT: MOV MOV MOV MOV SETB MOV CLR RET SCON,#50H TMOD,#00H TL1,#0E8H TH1,#0FFH TR1 AUXR,#40H BUSY JB SETB MOV RET BUSY,$ BUSY SBUF,A MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H ;65536-11059200/115200/4=0FFE8H UART_SEND: MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 196 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV MOV LCALL INC MOV LCALL R0,#F32K A,@R0 UART_SEND R0 A,@R0 UART_SEND JMP LOOP 技术支持: 19864585985 选型顾问: 13922805190 ;读取 32K 频率的高字节 ;读取 32K 频率的低字节 LOOP: END 7.5.10 用户自定义内部 IRC 频率 (从 CHIPID 中读取) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define CLKSEL CLKDIV #define CPUIDBASE 0xfde0 #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define #define ID_ADDR VREF_ADDR F32K_ADDR T22M_ADDR T24M_ADDR T20M_ADDR T27M_ADDR T30M_ADDR T33M_ADDR T35M_ADDR T36M_ADDR T40M_ADDR T45M_ADDR VRT6M_ADDR VRT10M_ADDR VRT27M_ADDR VRT44M_ADDR ((unsigned char volatile xdata *)(CPUIDBASE + 0x00)) (*(unsigned int volatile xdata *)(CPUIDBASE + 0x07)) (*(unsigned int volatile xdata *)(CPUIDBASE + 0x09)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0b)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0c)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0d)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0e)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x0f)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x10)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x11)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x12)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x13)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x14)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x15)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x16)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x17)) (*(unsigned char volatile xdata *)(CPUIDBASE + 0x18)) sfr sfr sfr sfr P_SW2 IRCBAND IRTRIM VRTRIM 0xba; 0x9d; 0x9f; 0xa6; 深圳国芯人工智能有限公司 (*(unsigned char volatile xdata *)0xfe00) (*(unsigned char volatile xdata *)0xfe01) = = = = 国内分销商电话: 0513-5501 2928/2929/2966 //22.1184MHz //24MHz //20MHz //27MHz //30MHz //33.1776MHz //35MHz //36.864MHz //40MHz //45MHz //VRTRIM_6M //VRTRIM_10M //VRTRIM_27M //VRTRIM_44M 去纯技术交流论坛:www.STCAIMCU.com - 197 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com = = = = = = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // // // // // // // //选择 20MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T20M_ADDR; VRTRIM = VRT27M_ADDR; IRCBAND = 0x02; CLKDIV = 0x00; // // // // // // // //选择 22.1184MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T22M_ADDR; VRTRIM = VRT27M_ADDR; IRCBAND = 0x02; CLKDIV = 0x00; //选择 24MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T24M_ADDR; VRTRIM = VRT27M_ADDR; IRCBAND = 0x02; CLKDIV = 0x00; // // // // // // // //选择 27MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T27M_ADDR; VRTRIM = VRT27M_ADDR; IRCBAND = 0x02; CLKDIV = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 198 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com // // // // // // // //选择 30MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T30M_ADDR; VRTRIM = VRT27M_ADDR; IRCBAND = 0x02; CLKDIV = 0x00; // // // // // // // //选择 33.1776MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T33M_ADDR; VRTRIM = VRT27M_ADDR; IRCBAND = 0x02; CLKDIV = 0x00; // // // // // // // //选择 35MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T35M_ADDR; VRTRIM = VRT44M_ADDR; IRCBAND = 0x03; CLKDIV = 0x00; // // // // // // // //选择 40MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T40M_ADDR; VRTRIM = VRT44M_ADDR; IRCBAND = 0x03; CLKDIV = 0x00; // // // // // // // //选择 45MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T45M_ADDR; VRTRIM = VRT44M_ADDR; IRCBAND = 0x03; CLKDIV = 0x00; 技术支持: 19864585985 选型顾问: 13922805190 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz CPUIDBASE EQU 0FDE0H ID_ADDR VREF_ADDR F32K_ADDR T22M_ADDR T24M_ADDR T20M_ADDR T27M_ADDR T30M_ADDR T33M_ADDR EQU EQU EQU EQU EQU EQU EQU EQU EQU CPUIDBASE + 00H CPUIDBASE + 07H CPUIDBASE + 09H CPUIDBASE + 0BH CPUIDBASE + 0CH CPUIDBASE + 0DH CPUIDBASE + 0EH CPUIDBASE + 0FH CPUIDBASE + 10H 深圳国芯人工智能有限公司 ;22.1184MHz ;24MHz ;20MHz ;27MHz ;30MHz ;33.1776MHz 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 199 - STC8A8K64D4 系列技术手册 T35M_ADDR T36M_ADDR T40M_ADDR T45M_ADDR VRT6M_ADDR VRT10M_ADDR VRT27M_ADDR VRT44M_ADDR EQU EQU EQU EQU EQU EQU EQU EQU 官方网站: www.STCAI.com CPUIDBASE + 11H CPUIDBASE + 12H CPUIDBASE + 13H CPUIDBASE + 14H CPUIDBASE + 15H CPUIDBASE + 16H CPUIDBASE + 17H CPUIDBASE + 18H P_SW2 CLKSEL CLKDIV DATA EQU EQU 0BAH 0FE00H 0FE01H IRCBAND IRCTRIM VRTRIM DATA DATA DATA 09DH 09FH 0A6H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H ;选择 20MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T20M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT27M_ADDR 技术支持: 19864585985 选型顾问: 13922805190 ;35MHz ;36.864MHz ;40MHz ;45MHz ;VRTRIM_6M ;VRTRIM_10M ;VRTRIM_27M ;VRTRIM_44M MAIN: ; ; ; ; ; ; ; ; ; ; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 200 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ; ; ; ; ; ; ; ; CLR MOVX MOV MOV MOV MOV MOVX MOV ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 22.1184MHz MOV P_SW2,#80H MOV A,#4 MOV DPTR,#CLKDIV MOVX @DPTR,A MOV DPTR,#T22M_ADDR CLR A MOVX A,@DPTR MOV IRTRIM,A MOV DPTR,#VRT27M_ADDR CLR A MOVX A,@DPTR MOV VRTRIM,A MOV IRCBAND,#02H MOV A,#0 MOV DPTR,#CLKDIV MOVX @DPTR,A MOV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; 选型顾问: 13922805190 A A,@DPTR VRTRIM,A IRCBAND,#02H A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H ;选择 24MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV CLR MOVX MOV MOV MOV MOV MOVX MOV P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T24M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT27M_ADDR A A,@DPTR VRTRIM,A IRCBAND,#02H A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H ;选择 27MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV CLR MOVX P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T27M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT27M_ADDR A A,@DPTR 深圳国芯人工智能有限公司 技术支持: 19864585985 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 201 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ; ; ; ; ; ; MOV MOV MOV MOV MOVX MOV VRTRIM,A IRCBAND,#02H A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 30MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV CLR MOVX MOV MOV MOV MOV MOVX MOV P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T30M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT27M_ADDR A A,@DPTR VRTRIM,A IRCBAND,#02H A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 33.1776MHz MOV P_SW2,#80H MOV A,#4 MOV DPTR,#CLKDIV MOVX @DPTR,A MOV DPTR,#T33M_ADDR CLR A MOVX A,@DPTR MOV IRTRIM,A MOV DPTR,#VRT27M_ADDR CLR A MOVX A,@DPTR MOV VRTRIM,A MOV IRCBAND,#02H MOV A,#0 MOV DPTR,#CLKDIV MOVX @DPTR,A MOV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 35MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV CLR MOVX MOV MOV 深圳国芯人工智能有限公司 技术支持: 19864585985 选型顾问: 13922805190 P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T35M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT44M_ADDR A A,@DPTR VRTRIM,A IRCBAND,#03H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 202 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ; ; ; ; MOV MOV MOVX MOV ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 36.864MHz MOV P_SW2,#80H MOV A,#4 MOV DPTR,#CLKDIV MOVX @DPTR,A MOV DPTR,#T36M_ADDR CLR A MOVX A,@DPTR MOV IRTRIM,A MOV DPTR,#VRT44M_ADDR CLR A MOVX A,@DPTR MOV VRTRIM,A MOV IRCBAND,#03H MOV A,#0 MOV DPTR,#CLKDIV MOVX @DPTR,A MOV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 40MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV CLR MOVX MOV MOV MOV MOV MOVX MOV P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T40M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT44M_ADDR A A,@DPTR VRTRIM,A IRCBAND,#03H A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 45MHz MOV MOV MOV MOVX MOV CLR MOVX MOV MOV CLR MOVX MOV MOV MOV MOV P_SW2,#80H A,#4 DPTR,#CLKDIV @DPTR,A DPTR,#T36M_ADDR A A,@DPTR IRTRIM,A DPTR,#VRT45M_ADDR A A,@DPTR VRTRIM,A IRCBAND,#03H A,#0 DPTR,#CLKDIV 深圳国芯人工智能有限公司 技术支持: 19864585985 选型顾问: 13922805190 A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 203 - STC8A8K64D4 系列技术手册 ; ; 官方网站: www.STCAI.com MOVX MOV @DPTR,A P_SW2,#00H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 END 7.5.11 用户自定义内部 IRC 频率 (从 Flash 程序存储器(ROM)中 读取) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define CLKSEL CLKDIV (*(unsigned char volatile xdata *)0xfe00) (*(unsigned char volatile xdata *)0xfe01) //下表为 STC8A8K60S4 的参数列表 #define ID_ROMADDR #define VREF_ROMADDR #define F32K_ROMADDR #define T22M_ROMADDR #define T24M_ROMADDR #define T20M_ROMADDR #define T27M_ROMADDR #define T30M_ROMADDR #define T33M_ROMADDR #define T35M_ROMADDR #define T36M_ROMADDR #define VRT20M_ROMADDR #define VRT35M_ROMADDR sfr sfr sfr sfr P_SW2 IRCBAND IRTRIM VRTRIM = = = = 0xba; 0x9d; 0x9f; 0xa6; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; ((unsigned char code *)0xeff9) (*(unsigned int code *)0xeff7) (*(unsigned int code *)0xeff5) (*(unsigned char code *)0xeff4) (*(unsigned char code *)0xeff3) (*(unsigned char code *)0xeff2) (*(unsigned char code *)0xeff1) (*(unsigned char code *)0xeff0) (*(unsigned char code *)0xefef) (*(unsigned char code *)0xefee) (*(unsigned char code *)0xefed) (*(unsigned char code *)0xefea) (*(unsigned char code *)0xefe9) //22.1184MHz //24MHz //20MHz //27MHz //30MHz //33.1776MHz //35MHz //36.864MHz //VRTRIM_20M //VRTRIM_35M void main() 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 204 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; // // // // // // // //选择 20MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T20M_ROMADDR; VRTRIM = VRT20M_ROMADDR; IRCBAND = 0x00; CLKDIV = 0x00; // // // // // // // //选择 22.1184MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T22M_ROMADDR; VRTRIM = VRT20M_ROMADDR; IRCBAND = 0x00; CLKDIV = 0x00; //选择 24MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T24M_ROMADDR; VRTRIM = VRT20M_ROMADDR; IRCBAND = 0x00; CLKDIV = 0x00; // // // // // // // //选择 27MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T27M_ROMADDR; VRTRIM = VRT35M_ROMADDR; IRCBAND = 0x01; CLKDIV = 0x00; // // // // // // // //选择 30MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T30M_ROMADDR; VRTRIM = VRT35M_ROMADDR; IRCBAND = 0x01; CLKDIV = 0x00; // // // // // //选择 33.1776MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T33M_ROMADDR; VRTRIM = VRT35M_ROMADDR; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 205 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com // // IRCBAND = 0x01; CLKDIV = 0x00; // // // // // // // //选择 35MHz P_SW2 = 0x80; CLKDIV = 0x04; IRTRIM = T35M_ROMADDR; VRTRIM = VRT35M_ROMADDR; IRCBAND = 0x01; CLKDIV = 0x00; 技术支持: 19864585985 选型顾问: 13922805190 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz ;下表为 STC8A8K60S4 的参数列表 ID_ROMADDR EQU VREF_ROMADDR EQU F32K_ROMADDR EQU T22M_ROMADDR EQU T24M_ROMADDR EQU T20M_ROMADDR EQU T27M_ROMADDR EQU T30M_ROMADDR EQU T33M_ROMADDR EQU T35M_ROMADDR EQU T36M_ROMADDR EQU VRT20M_ROMADDR EQU VRT35M_ROMADDR EQU 0EFF9H 0EFF7H 0EFF5H 0EFF4H 0EFF3H 0EFF2H 0EFF1H 0EFF0H 0EFEFH 0EFEEH 0EFEDH 0EFEAH 0EFE9H P_SW2 CLKSEL CLKDIV DATA EQU EQU 0BAH 0FE00H 0FE01H IRCBAND IRCTRIM VRTRIM DATA DATA DATA 09DH 09FH 0A6H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H //22.1184MHz //24MHz //20MHz //27MHz //30MHz //33.1776MHz //35MHz //36.864MHz //VRTRIM_20M //VRTRIM_35M MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 206 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 20MHz MOV MOV MOV MOV CLR MOVC MOV MOV CLR MOVC MOV MOV MOV MOV MOV P_SW2,#80H A,#4 DPTR,#CLKDIV DPTR,#T20M_ROMADDR A A,@A+DPTR IRTRIM,A DPTR,#VRT20M_ROMADDR A A,@A+DPTR VRTRIM,A IRCBAND,#00H A,#0 DPTR,#CLKDIV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 22.1184MHz MOV P_SW2,#80H MOV A,#4 MOV DPTR,#CLKDIV MOV DPTR,#T22M_ROMADDR CLR A MOVC A,@A+DPTR MOV IRTRIM,A MOV DPTR,#VRT20M_ROMADDR CLR A MOVC A,@A+DPTR MOV VRTRIM,A MOV IRCBAND,#00H MOV A,#0 MOV DPTR,#CLKDIV MOV P_SW2,#00H ;选择 24MHz MOV MOV MOV MOV CLR MOVC MOV MOV CLR MOVC 深圳国芯人工智能有限公司 技术支持: 19864585985 选型顾问: 13922805190 P_SW2,#80H A,#4 DPTR,#CLKDIV DPTR,#T24M_ROMADDR A A,@A+DPTR IRTRIM,A DPTR,#VRT20M_ROMADDR A A,@A+DPTR 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 207 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV VRTRIM,A IRCBAND,#00H A,#0 DPTR,#CLKDIV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 27MHz MOV MOV MOV MOV CLR MOVC MOV MOV CLR MOVC MOV MOV MOV MOV MOV P_SW2,#80H A,#4 DPTR,#CLKDIV DPTR,#T27M_ROMADDR A A,@A+DPTR IRTRIM,A DPTR,#VRT35M_ROMADDR A A,@A+DPTR VRTRIM,A IRCBAND,#01H A,#0 DPTR,#CLKDIV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 30MHz MOV MOV MOV MOV CLR MOVC MOV MOV CLR MOVC MOV MOV MOV MOV MOV P_SW2,#80H A,#4 DPTR,#CLKDIV DPTR,#T30M_ROMADDR A A,@A+DPTR IRTRIM,A DPTR,#VRT35M_ROMADDR A A,@A+DPTR VRTRIM,A IRCBAND,#01H A,#0 DPTR,#CLKDIV P_SW2,#00H ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 33.1776MHz MOV P_SW2,#80H MOV A,#4 MOV DPTR,#CLKDIV MOV DPTR,#T33M_ROMADDR CLR A MOVC A,@A+DPTR MOV IRTRIM,A MOV DPTR,#VRT35M_ROMADDR CLR A MOVC A,@A+DPTR MOV VRTRIM,A MOV IRCBAND,#01H MOV A,#0 MOV DPTR,#CLKDIV MOV P_SW2,#00H ; ; ;选择 35MHz MOV 深圳国芯人工智能有限公司 技术支持: 19864585985 选型顾问: 13922805190 P_SW2,#80H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 208 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ; ; ; ; ; ; ; ; ; ; ; ; ; ; MOV MOV MOV CLR MOVC MOV MOV CLR MOVC MOV MOV MOV MOV MOV ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;选择 36.864MHz MOV P_SW2,#80H MOV A,#4 MOV DPTR,#CLKDIV MOV DPTR,#T36M_ROMADDR CLR A MOVC A,@A+DPTR MOV IRTRIM,A MOV DPTR,#VRT35M_ROMADDR CLR A MOVC A,@A+DPTR MOV VRTRIM,A MOV IRCBAND,#01H MOV A,#0 MOV DPTR,#CLKDIV MOV P_SW2,#00H 技术支持: 19864585985 选型顾问: 13922805190 A,#4 DPTR,#CLKDIV DPTR,#T35M_ROMADDR A A,@A+DPTR IRTRIM,A DPTR,#VRT35M_ROMADDR A A,@A+DPTR VRTRIM,A IRCBAND,#01H A,#0 DPTR,#CLKDIV P_SW2,#00H JMP $ END 7.5.12 用户自定义内部 IRC 频率 (从 RAM 中读取) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define CLKDIV (*(unsigned char volatile xdata *)0xfe01) sfr sfr P_SW2 IRTRIM = = 0xba; 0x9f; sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 209 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 char char *IRC22M; *IRC24M; 官方网站: www.STCAI.com = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; // IRC22M = (char idata *)0xfa; IRC24M = (char idata *) 0xfb; IRTRIM = *IRC22M; IRTRIM = *IRC24M; P_SW2 = 0x80; CLKDIV = 0; P_SW2 = 0x00; //装载 22.1184MHz 的 IRC 参数 //装载 24MHz 的 IRC 参数 //主时钟不预分频 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 CLKDIV DATA EQU 0BAH 0FE01H IRTRIM DATA 09FH IRC22M IRC24M DATA DATA 0FAH 0FBH P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 210 - STC8A8K64D4 系列技术手册 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA 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 R0,#IRC22M IRTRIM,@R0 R0,#IRC24M IRTRIM,@R0 MOV MOV MOV MOVX MOV P_SW2,#80H A,#0 DPTR,#CLKDIV @DPTR,A P_SW2,#00H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ; ; ;装载 22.1184MHz 的 IRC 参数 ;装载 24MHz 的 IRC 参数 ;主时钟不预分频 END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 211 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 8 特殊功能寄存器 8.1 STC8A8K64D4-64Pin/48Pin 系列 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F F8H P7 CH CCAP0H CCAP1H CCAL2H - - RSTCFG F0H B PWMSET PCA_PWM0 PCA_PWM1 PCA_PWM2 IAP_TPS PWMCFG - E8H P6 CL CCAP0L CCAP1L CCAL2L - IP3H AUXINTIF E0H ACC P7M1 P7M0 DPS DPL1 DPH1 CMPCR1 CMPCR2 D8H CCON CMOD CCAPM0 CCAPM1 CCAPM2 - ADCCFG IP3 D0H PSW T4T3M TH4 TL4 TH3 TL3 T2H T2L C8H P5 P5M1 P5M0 P6M1 P6M0 SPSTAT SPCTL SPDAT C0H P4 WDT_CONTR IAP_DATA IAP_ADDRH IAP_ADDRL IAP_CMD IAP_TRIG IAP_CONTR B8H IP SADEN P_SW2 - ADC_CONTR ADC_RES ADC_RESL - B0H P3 P3M1 P3M0 P4M1 P4M0 IP2 IP2H IPH A8H IE SADDR WKTCL WKTCH S3CON S3BUF TA IE2 A0H P2 BUS_SPEED P_SW1 - - - - - 98H SCON SBUF S2CON S2BUF IRCBAND LIRTRIM IRTRIM 90H P1 P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 - 88H TCON TMOD TL0 TL1 TH0 TH1 AUXR INTCLKO 80H P0 SP DPL DPH S4CON S4BUF - PCON 可位寻址 不可位寻址 注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址 0/8 1/9 2/A 3/B 4/C 5/D FF48H PWM7T1H PWM7T1L PWM7T2H PWM7T2L PWM7CR PWM7HLD FF40H PWM6T1H PWM6T1L PWM6T2H PWM6T2L PWM6CR PWM6HLD FF38H PWM5T1H PWM5T1L PWM5T2H PWM5T2L PWM5CR PWM5HLD FF30H PWM4T1H PWM4T1L PWM4T2H PWM4T2L PWM4CR PWM4HLD FF28H PWM3T1H PWM3T1L PWM3T2H PWM3T2L PWM1CR PWM3HLD FF20H PWM2T1H PWM2T1L PWM2T2H PWM2T2L PWM2CR PWM2HLD FF18H PWM1T1H PWM1T1L PWM1T2H PWMT2L PWM1CR PWM1HLD FF10H PWM0T1H PWM0T1L PWM0T2H PWM0T2L PWM0CR PWM0HLD FF00H PWMCH PWMCL PWMCKS PWMTADCH PWMTADCL PWMIF PWMFDCR FEA8H ADCTIM ADCEXCFG CMPEXCFG I2CTxD I2CRxD FEA0H TM2PS TM3PS TM4PS 6/E 7/F FE88H I2CMSAUX FE80H I2CCFG I2CMSCR I2CMSST I2CSLCR I2CSLST I2CSLADR FE50H LCMIFCFG LCMIFCFG2 LCMIFCR LCMIFSTA LCMIFDATL LCMIFDATH FE30H P0IE P1IE P2IE P3IE P4IE P5IE P6IE P7IE FE28H P0DR P1DR P2DR P3DR P4DR P5DR P6DR P7DR FE20H P0SR P1SR P2SR P3SR P4SR P5SR P6SR P7SR FE18H P0NCS P1NCS P2NCS P3NCS P4NCS P5NCS P6NCS P7NCS 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 212 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 FE10H P0PU P1PU P2PU P3PU P4PU P5PU P6PU FE00H CLKSEL CLKDIV HIRCCR XOSCCR IRC32KCR MCLKOCR IRCDB FDF8H CHIPID24 CHIPID25 CHIPID26 CHIPID27 CHIPID28 CHIPID29 CHIPID30 CHIPID31 FDF0H CHIPID16 CHIPID17 CHIPID18 CHIPID19 CHIPID20 CHIPID21 CHIPID22 CHIPID23 FDE8H CHIPID8 CHIPID9 CHIPID10 CHIPID11 CHIPID12 CHIPID13 CHIPID14 CHIPID15 FDE0H CHIPID0 CHIPID1 CHIPID2 CHIPID3 CHIPID4 CHIPID5 CHIPID6 CHIPID7 FD60H PINIPL PINIPH CCAPM3 CCAP3L CCAP3H PCA_PWM3 FD50H P7PU FD40H P0WKUE P1WKUE P2WKUE P3WKUE P4WKUE P5WKUE P6WKUE P7WKUE FD30H P0IM1 P1IM1 P2IM1 P3IM1 P4IM1 P5IM1 P6IM1 P7IM1 FD20H P0IM0 P1IM0 P2IM0 P3IM0 P4IM0 P5IM0 P6IM0 P7IM0 FD10H P0INTF P1INTF P2INTF P3INTF P4INTF P5INTF P6INTF P7INTF FD00H P0INTE P1INTE P2INTE P3INTE P4INTE P5INTE P6INTE P7INTE FCF0H MD3 MD2 MD1 MD0 MD5 MD4 ARCON OPCON FA78H DMA_LCM_RXAL FA70H DMA_LCM_CFG DMA_LCM_CR DMA_LCM_STA DMA_LCM_AMT DMA_LCM_DONE FA68H DMA_UR4R_CFG DMA_UR4R_CR DMA_UR4R_STA DMA_UR4R_AMT DMA_UR4R_DONE DMA_UR4R_RXAH DMA_UR4R_RXAL FA60H DMA_UR4T_CFG DMA_UR4T_CR DMA_UR4T_STA DMA_UR4T_AMT DMA_UR4T_DONE DMA_UR4T_TXAH DMA_UR4T_TXAL FA58H DMA_UR3R_CFG DMA_UR3R_CR DMA_UR3R_STA DMA_UR3R_AMT DMA_UR3R_DONE DMA_UR3R_RXAH DMA_UR3R_RXAL FA50H DMA_UR3T_CFG DMA_UR3T_CR DMA_UR3T_STA DMA_UR3T_AMT DMA_UR3T_DONE DMA_UR3T_TXAH DMA_UR3T_TXAL FA48H DMA_UR2R_CFG DMA_UR2R_CR DMA_UR2R_STA DMA_UR2R_AMT DMA_UR2R_DONE DMA_UR2R_RXAH DMA_UR2R_RXAL FA40H DMA_UR2T_CFG DMA_UR2T_CR DMA_UR2T_STA DMA_UR2T_AMT DMA_UR2T_DONE DMA_UR2T_TXAH DMA_UR2T_TXAL FA38H DMA_UR1R_CFG DMA_UR1R_CR DMA_UR1R_STA DMA_UR1R_AMT DMA_UR1R_DONE DMA_UR1R_RXAH DMA_UR1R_RXAL FA30H DMA_UR1T_CFG DMA_UR1T_CR DMA_UR1T_STA DMA_UR1T_AMT DMA_UR1T_DONE DMA_UR1T_TXAH DMA_UR1T_TXAL FA28H DMA_SPI_RXAL DMA_SPI_CFG2 DMA_SPI_STA DMA_SPI_AMT FA20H DMA_SPI_CFG DMA_SPI_CR DMA_SPI_DONE DMA_LCM_TXAH DMA_LCM_TXAL DMA_LCM_RXAH DMA_SPI_TXAH DMA_SPI_TXAL DMA_SPI_RXAH FA18H DMA_ADC_RXAL DMA_ADC_CFG2 DMA_ADC_CHSW0 DMA_ADC_CHSW1 FA10H DMA_ADC_CFG DMA_ADC_CR DMA_ADC_STA DMA_M2M_CR DMA_M2M_STA DMA_ADC_RXAH FA08H DMA_M2M_RXAL FA00H DMA_M2M_CFG 深圳国芯人工智能有限公司 DMA_M2M_AMT DMA_M2M_DONE 国内分销商电话: 0513-5501 2928/2929/2966 DMA_M2M_TXAH DMA_M2M_TXAL DMA_M2M_RXAH 去纯技术交流论坛:www.STCAIMCU.com - 213 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 8.2 特殊功能寄存器列表 注意:寄存器地址能够被 8 整除的才可进行位寻址,不能被 8 整除的则不可位寻址。 STC8A8K64D4 系列能进行位寻址的寄存器:P0(80H) 、TCON(88H)、P1(90H)、SCON(98H) 、P2 (A0H)、IE(A8H)、P3(B0H)、IP(B8H)、P4(C0H)、P5(C8H)、PSW(D0H)、ACC(E0H) 、B (F0H) 位地址与符号 符号 描述 复位值 地址 B7 B6 B5 B4 B3 B2 B1 B0 P07 P06 P05 P04 P03 P02 P01 P00 P0 P0 端口 80H SP 堆栈指针 81H 0000,0111 DPL 数据指针(低字节) 82H 0000,0000 DPH 数据指针(高字节) 83H 0000,0000 S4CON 串口 4 控制寄存器 84H S4BUF 串口 4 数据寄存器 85H PCON 电源控制寄存器 87H SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0011,0000 TCON 定时器控制寄存器 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 TMOD 定时器模式寄存器 89H GATE C/T M1 M0 GATE C/T M1 M0 0000,0000 TL0 定时器 0 低 8 位寄存器 8AH 0000,0000 TL1 定时器 1 低 8 位寄存器 8BH 0000,0000 TH0 定时器 0 高 8 位寄存器 8CH 0000,0000 TH1 定时器 1 高 8 位寄存器 8DH 0000,0000 辅助寄存器 1 8EH T0x12 T1x12 UART_M0x6 T2R T2_C/T T2x12 EXTRAM S1ST2 0000,0001 中断与时钟输出控制 8FH - EX4 EX3 EX2 - T2CLKO T1CLKO T0CLKO x000,x000 P1 端口 90H P17 P16 P15 P14 P13 P12 P11 P10 1111,1111 P1M1 P1 口配置寄存器 1 91H P17M1 P16M1 P15M1 P14M1 P13M1 P12M1 P11M1 P10M1 1111,1111 P1M0 P1 口配置寄存器 0 92H P17M0 P16M0 P15M0 P14M0 P13M0 P12M0 P11M0 P10M0 0000,0000 P0M1 P0 口配置寄存器 1 93H P07M1 P06M1 P05M1 P04M1 P03M1 P02M1 P01M1 P00M1 1111,1111 P0M0 P0 口配置寄存器 0 94H P07M0 P06M0 P05M0 P04M0 P03M0 P02M0 P01M0 P00M0 0000,0000 P2M1 P2 口配置寄存器 1 95H P27M1 P26M1 P25M1 P24M1 P23M1 P22M1 P21M1 P20M1 1111,1111 P2M0 P2 口配置寄存器 0 96H P27M0 P26M0 P25M0 P24M0 P23M0 P22M0 P21M0 P20M0 0000,0000 SCON 串口 1 控制寄存器 98H SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000 SBUF 串口 1 数据寄存器 99H S2CON 串口 2 控制寄存器 9AH S2BUF 串口 2 数据寄存器 9BH IRCBAND IRC 频段选择检测 9DH - - - - - - LIRTRIM IRC 频率微调寄存器 9EH - - - - - - IRTRIM IRC 频率调整寄存器 9FH P2 端口 A0H AUXR INTCLKO P1 P2 BUS_SPEED 总线速度控制寄存器 S4SM0 S4ST4 S4SM2 S4REN S4TB8 S4RB8 S4TI S4RI 1111,1111 0000,0000 0000,0000 0000,0000 S2SM0 - S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI 0x00,0000 0000,0000 SEL[1:0] xxxx,xxnn LIRTRIM IRTRIM[7:0] P27 P26 xxxx,xxxn nnnn,nnnn P25 P24 P23 - - - P22 P21 P20 A1H RW_S[1:0] 外设端口切换寄存器 1 A2H S1_S[1:0] 中断允许寄存器 A8H SADDR 串口 1 从机地址寄存器 A9H 0000,0000 WKTCL 掉电唤醒定时器低字节 AAH 1111,1111 WKTCH 掉电唤醒定时器高字节 ABH P_SW1 IE 深圳国芯人工智能有限公司 EA ELVD CCP_S[1:0] EADC WKTEN 国内分销商电话: 0513-5501 2928/2929/2966 ES SPEED[2:0] 1111,1111 SPI_S[1:0] ET1 EX1 00xx,x000 0 - nn00,000x ET0 EX0 00x0,0000 0111,1111 去纯技术交流论坛:www.STCAIMCU.com - 214 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S3CON 串口 3 控制寄存器 ACH S3BUF 串口 3 数据寄存器 ADH 0000,0000 TA DPTR 时序控制寄存器 AEH 0000,0000 IE2 中断允许寄存器 2 AFH - ET4 ET3 ES4 ES3 ET2 ESPI ES2 x000,0000 P3 P3 端口 B0H P37 P36 P35 P34 P33 P32 P31 P30 1111,1111 P3M1 P3 口配置寄存器 1 B1H P37M1 P36M1 P35M1 P34M1 P33M1 P32M1 P31M1 P30M1 1111,1100 P3M0 P3 口配置寄存器 0 B2H P37M0 P36M0 P35M0 P34M0 P33M0 P32M0 P31M0 P30M0 0000,0000 P4M1 P4 口配置寄存器 1 B3H P47M1 P46M1 P45M1 P44M1 P43M1 P42M1 P41M1 P40M1 1111,1111 P4M0 P4 口配置寄存器 0 B4H P47M0 P46M0 P45M0 P44M0 P43M0 P42M0 P41M0 P40M0 0000,0000 中断优先级控制寄存器 2 B5H - PI2C PCMP PX4 PPWMFD PPWM PSPI PS2 x000,0000 IP2H 高中断优先级控制寄存器 2 B6H - PI2CH PCMPH PX4H PPWMFDH PPWMH PSPIH PS2H x000,0000 IPH 高中断优先级控制寄存器 B7H PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 中断优先级控制寄存器 B8H PPCA PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IP2 IP S3SM0 S3ST4 S3SM2 SADEN 串口 1 从机地址屏蔽寄存器 B9H P_SW2 外设端口切换寄存器 2 BAH EAXFR - P4 端口 C0H P47 P46 P45 C1H WDT_FLAG - EN_WDT P4 WDT_CONTR 看门狗控制寄存器 IAP_DATA IAP 数据寄存器 S3REN S3TB8 S3RB8 S3TI S3RI 0000,0000 0000,0000 I2C_S[1:0] CMPO_S S4_S S3_S S2_S 0x00,0000 P44 P43 P42 P41 P40 1111,1111 CLR_WDT IDL_WDT WDT_PS[2:0] 0xn0,nnnn 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 SWRST CMD_FAIL - - - - 0000,xxxx P5 端口 C8H - - P55 P54 P53 P52 P51 P50 xx11,0000 P5M1 P5 口配置寄存器 1 C9H - - P55M1 P54M1 P53M1 P52M1 P51M1 P50M1 xx11,1111 P5M0 P5 口配置寄存器 0 CAH - - P55M0 P54M0 P53M0 P52M0 P51M0 P50M0 xx00,0000 P6M1 P6 口配置寄存器 1 CBH P65M1 P64M1 P65M1 P64M1 P63M1 P62M1 P61M1 P60M1 1111,1111 P6M0 P6 口配置寄存器 0 CCH P65M0 P64M0 P65M0 P64M0 P63M0 P62M0 P61M0 P60M0 0000,0000 SPSTAT SPI 状态寄存器 CDH SPIF WCOL - - - - - - 00xx,xxxx SPCTL SPI 控制寄存器 CEH SSIG SPEN DORD MSTR CPOL CPHA SPDAT SPI 数据寄存器 CFH 程序状态字寄存器 D0H CY AC F0 RS1 RS0 OV F1 P 0000,0000 定时器 4/3 控制寄存器 D1H T4R T4_C/T T4x12 T4CLKO T3R T3_C/T T3x12 T3CLKO 0000,0000 T4H 定时器 4 高字节 D2H 0000,0000 T4L 定时器 4 低字节 D3H 0000,0000 T3H 定时器 3 高字节 D4H 0000,0000 T3L 定时器 3 低字节 D5H 0000,0000 T2H 定时器 2 高字节 D6H 0000,0000 T2L 定时器 2 低字节 D7H 0000,0000 CCON PCA 控制寄存器 D8H CF CR - - CMOD PCA 模式寄存器 D9H CIDL - - - CCAPM0 PCA 模块 0 控制寄存器 DAH - ECOM0 CCAPP0 CCAPN0 MAT0 TOG0 CCAPM1 PCA 模块 1 控制寄存器 DBH - ECOM1 CCAPP1 CCAPN1 MAT1 CCAPM2 PCA 模块 2 控制寄存器 DCH - ECOM2 CCAPP2 CCAPN2 MAT2 P5 PSW T4T3M 深圳国芯人工智能有限公司 - - - - - - CMD[1:0] xxxx,xx00 0000,0000 SPR[1:0] 0000,0100 0000,0000 国内分销商电话: 0513-5501 2928/2929/2966 CCF3 CCF2 CCF1 CCF0 00xx,0000 ECF 0xxx,0000 PWM0 ECCF0 x000,0000 TOG1 PWM1 ECCF1 x000,0000 TOG2 PWM2 ECCF2 x000,0000 CPS[2:0] 去纯技术交流论坛:www.STCAIMCU.com - 215 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ADC 配置寄存器 DEH - - RESFMT - 中断优先级控制寄存器 3 DFH - - - - ACC 累加器 E0H P7M1 P7 口配置寄存器 1 E1H P75M1 P74M1 P75M1 P74M1 P73M1 P72M1 P71M1 P70M1 1111,1111 P7M0 P7 口配置寄存器 0 E2H P75M0 P74M0 P75M0 P74M0 P73M0 P72M0 P71M0 P70M0 0000,0000 DPS DPTR 指针选择器 E3H ID1 ID0 TSL AU1 AU0 - - SEL 0000,0xx0 DPL1 第二组数据指针(低字节) E4H 0000,0000 DPH1 第二组数据指针(高字节) E5H 0000,0000 ADCCFG IP3 SPEED[3:0] - - xx0x,0000 PS4 PS3 xxxx,xx00 0000,0000 CMPCR1 比较器控制寄存器 1 E6H CMPEN CMPIF CMPCR2 比较器控制寄存器 2 E7H INVCMPO DISFLT P6 P6 端口 E8H P67 P66 CL PCA 计数器低字节 E9H 0000,0000 CCAP0L PCA 模块 0 低字节 EAH 0000,0000 CCAP1L PCA 模块 1 低字节 EBH 0000,0000 CCAP2L PCA 模块 2 低字节 ECH 0000,0000 IP3H AUXINTIF B PWMSET PIE NIE - - CMPOE CMPRES LCDTY[5:0] P65 P64 P63 0000,xx00 0000,0000 P62 P61 P60 1111,1111 高中断优先级控制寄存器 3 EEH - - - - - - PS4H PS3H xxxx,xx00 扩展外部中断标志寄存器 EFH - INT4IF INT3IF INT2IF - T4IF T3IF T2IF x000,x000 B 寄存器 F0H 增强型 PWM 全局配置 F1H 0000,0000 - PWMRST - - - - - ENPWM x0xx,xxx0 PCA_PWM0 PCA0 的 PWM 模式寄存器 F2H EBS0[1:0] XCCAP0H[1:0] XCCAP0L[1:0] EPC0H EPC0L 0000,0000 PCA_PWM1 PCA1 的 PWM 模式寄存器 F3H EBS1[1:0] XCCAP1H[1:0] XCCAP1L[1:0] EPC1H EPC1L 0000,0000 PCA_PWM2 PCA2 的 PWM 模式寄存器 F4H EBS2[1:0] XCCAP2H[1:0] XCCAP2L[1:0] EPC2H EPC2L 0000,0000 IAP_TPS IAP 等待时间控制寄存器 F5H - - PWMCFG 增强型 PWM 配置寄存器 F6H - - - - PWMCBIF EPWMCBI ENPWMTA PWMCEN xxxx,0000 P7 P7 端口 F8H P77 P76 P75 P74 P73 P72 P71 P70 1111,1111 CH PCA 计数器高字节 F9H 0000,0000 CCAP0H PCA 模块 0 高字节 FAH 0000,0000 CCAP1H PCA 模块 1 高字节 FBH 0000,0000 CCAP2H PCA 模块 2 高字节 FCH 0000,0000 RSTCFG 复位配置寄存器 FFH - IAPTPS[5:0] ENLVR - P54RST - xx00,0000 - LVDS[1:0] xnxn,xxnn 下列特殊功能寄存器为扩展 SFR,逻辑地址位于 XDATA 区域,访问前需要将 P_SW2(BAH)寄存 器的最高位(EAXFR)置 1,然后使用 MOVX A,@DPTR 和 MOVX @DPTR,A 指令进行访问 位地址与符号 符号 描述 地址 复位值 B7 B6 B5 B4 B3 B2 - - - - - - CLKSEL 时钟选择寄存器 FE00H CLKDIV 时钟分频寄存器 FE01H HIRCCR 内部高速振荡器控制寄存器 FE02H ENHIRC - XOSCCR 外部晶振控制寄存器 FE03H ENXOSC XITYPE IRC32KCR 内部 32K 振荡器控制寄存器 FE04H ENIRC32K - MCLKOCR 主时钟输出控制寄存器 FE05H MCLKO_S IRCDB 内部高速振荡器去抖控制 FE06H P0PU P0 口上拉电阻控制寄存器 FE10H 深圳国芯人工智能有限公司 B1 B0 MCKSEL[1:0] xxxx,xx00 nnnn,nnnn - - XCFILTER[1:0] - - - - HIRCST NMXCG - - XOSCST 0000,0xx0 - - - IRC32KST 0xxx,xxx0 - MCLKODIV[6:0] 0000,0000 1000,0000 IRCDB_PAR[7:0] P07PU P06PU P05PU 国内分销商电话: 0513-5501 2928/2929/2966 P04PU P03PU 1xxx,xxx0 P02PU P01PU P00PU 0000,0000 去纯技术交流论坛:www.STCAIMCU.com - 216 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1PU P1 口上拉电阻控制寄存器 FE11H P17PU P16PU P15PU P14PU P13PU P12PU P11PU P10PU 0000,0000 P2PU P2 口上拉电阻控制寄存器 FE12H P27PU P26PU P25PU P24PU P23PU P22PU P21PU P20PU 0000,0000 P3PU P3 口上拉电阻控制寄存器 FE13H P37PU P36PU P35PU P34PU P33PU P32PU P31PU P30PU 0000,0000 P4PU P4 口上拉电阻控制寄存器 FE14H P47PU P46PU P45PU P44PU P43PU P42PU P41PU P40PU 0000,0000 P5PU P5 口上拉电阻控制寄存器 FE15H - - P55PU P54PU P53PU P52PU P51PU P50PU xx00,0000 P6PU P6 口上拉电阻控制寄存器 FE16H P67PU P66PU P65PU P64PU P63PU P62PU P61PU P60PU 0000,0000 P7PU P7 口上拉电阻控制寄存器 FE17H P77PU P76PU P75PU P74PU P73PU P72PU P71PU P70PU 0000,0000 P0NCS P0 口施密特触发控制寄存器 FE18H P07NCS P06NCS P05NCS P04NCS P03NCS P02NCS P01NCS P00NCS 0000,0000 P1NCS P1 口施密特触发控制寄存器 FE19H P17NCS P16NCS P15NCS P14NCS P13NCS P12NCS P11NCS P10NCS 0000,0000 P2NCS P2 口施密特触发控制寄存器 FE1AH P27NCS P26NCS P25NCS P24NCS P23NCS P22NCS P21NCS P20NCS 0000,0000 P3NCS P3 口施密特触发控制寄存器 FE1BH P37NCS P36NCS P35NCS P34NCS P33NCS P32NCS P31NCS P30NCS 0000,0000 P4NCS P4 口施密特触发控制寄存器 FE1CH P47NCS P46NCS P45NCS P44NCS P43NCS P42NCS P41NCS P40NCS 0000,0000 P5NCS P5 口施密特触发控制寄存器 FE1DH - - P55NCS P54NCS P53NCS P52NCS P51NCS P50NCS xx00,0000 P6NCS P6 口施密特触发控制寄存器 FE1EH P67NCS P66NCS P65NCS P64NCS P63NCS P62NCS P61NCS P60NCS 0000,0000 P7NCS P7 口施密特触发控制寄存器 FE1FH P77NCS P76NCS P75NCS P74NCS P73NCS P72NCS P71NCS P70NCS 0000,0000 P0SR P0 口电平转换速率寄存器 FE20H P07SR P06SR P05SR P04SR P03SR P02SR P01SR P00SR 1111,1111 P1SR P1 口电平转换速率寄存器 FE21H P17SR P16SR P15SR P14SR P13SR P12SR P11SR P10SR 1111,1111 P2SR P2 口电平转换速率寄存器 FE22H P27SR P26SR P25SR P24SR P23SR P22SR P21SR P20SR 1111,1111 P3SR P3 口电平转换速率寄存器 FE23H P37SR P36SR P35SR P34SR P33SR P32SR P31SR P30SR 1111,1111 P4SR P4 口电平转换速率寄存器 FE24H P47SR P46SR P45SR P44SR P43SR P42SR P41SR P40SR 1111,1111 P5SR P5 口电平转换速率寄存器 FE25H - - P55SR P54SR P53SR P52SR P51SR P50SR xx11,1111 P6SR P6 口电平转换速率寄存器 FE26H P57SR P66SR P65SR P64SR P63SR P62SR P61SR P60SR 1111,1111 P7SR P7 口电平转换速率寄存器 FE27H P77SR P76SR P75SR P74SR P73SR P72SR P71SR P70SR 1111,1111 P0DR P0 口驱动电流控制寄存器 FE28H P07DR P06DR P05DR P04DR P03DR P02DR P01DR P00DR 1111,1111 P1DR P1 口驱动电流控制寄存器 FE29H P17DR P16DR P15DR P14DR P13DR P12DR P11DR P10DR 1111,1111 P2DR P2 口驱动电流控制寄存器 FE2AH P27DR P26DR P25DR P24DR P23DR P22DR P21DR P20DR 1111,1111 P3DR P3 口驱动电流控制寄存器 FE2BH P37DR P36DR P35DR P34DR P33DR P32DR P31DR P30DR 1111,1111 P4DR P4 口驱动电流控制寄存器 FE2CH P47DR P46DR P45DR P44DR P43DR P42DR P41DR P40DR 1111,1111 P5DR P5 口驱动电流控制寄存器 FE2DH - - P55DR P54DR P53DR P52DR P51DR P50DR xx11,1111 P6DR P6 口驱动电流控制寄存器 FE2EH P67DR P66DR P65DR P64DR P63DR P62DR P61DR P60DR 1111,1111 P7DR P7 口驱动电流控制寄存器 FE2FH P77DR P76DR P75DR P74DR P73DR P72DR P71DR P70DR 1111,1111 P0IE P0 口输入使能控制寄存器 FE30H P07IE P06IE P05IE P04IE P03IE P02IE P01IE P00IE 1111,1111 P1IE P1 口输入使能控制寄存器 FE31H P17IE P16IE P15IE P14IE P13IE P12IE P11IE P10IE 1111,1111 P2IE P2 口输入使能控制寄存器 FE32H P27IE P26IE P25IE P24IE P23IE P22IE P21IE P20IE 1111,1111 P3IE P3 口输入使能控制寄存器 FE33H P37IE P36IE P35IE P34IE P33IE P32IE P31IE P30IE 1111,1111 P4IE P4 口输入使能控制寄存器 FE34H P47IE P46IE P45IE P44IE P43IE P42IE P41IE P40IE 1111,1111 P5IE P5 口输入使能控制寄存器 FE35H - - P55IE P54IE P53IE P52IE P51IE P50IE xx11,1111 P6IE P6 口输入使能控制寄存器 FE36H P67IE P66IE P65IE P64IE P63IE P62IE P61IE P60IE 1111,1111 P7IE P7 口输入使能控制寄存器 FE37H P77IE P76IE P75IE P74IE P73IE P72IE P71IE P70IE 1111,1111 LCMIFCFG LCM 接口配置寄存器 FE50H LCMIFIE - LCMIFCFG2 LCM 接口配置寄存器 2 FE51H - LCMIFCR LCM 接口控制寄存器 FE52H ENLCMIF LCMIFSTA LCM 接口状态寄存器 FE53H LCMIDDATL LCM 接口低字节数据 FE54H 深圳国芯人工智能有限公司 - LCMIFIP[1:0] LCMIFCPS[1:0] LCMIFDPS[1:0] D16_D8 M68_I80 0x00,0000 SETUPT[2:0] - - - - - - - - 国内分销商电话: 0513-5501 2928/2929/2966 LCMIFDAT[7:0] HOLDT[1:0] CMD[2:0] - - x000,0000 0xxx,x000 LCMIFIF xxxx,xxx0 0000,0000 去纯技术交流论坛:www.STCAIMCU.com - 217 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com LCMIDDATH LCM 接口高字节数据 技术支持: 19864585985 选型顾问: 13922805190 LCMIFDAT[15:8] FE55H 0000,0000 I C 配置寄存器 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 TXING SLACKI I2CSLADR I C 从机地址寄存器 FE85H I2CTXD I C 数据发送寄存器 FE86H 0000,0000 I2CRXD I C 数据接收寄存器 FE87H 0000,0000 I2CCFG 2 2 2 2 2 2 2 2 I2CMSAUX I C 主机辅助控制寄存器 2 FE88H MSSPEED[6:1] 0000,0000 MSCMD[3:0] 0xxx,0000 MSACKI MSACKO 00xx,xx00 SLRST SLACKO 0000,0000 I2CSLADR[7:1] - - - MA - - - - x000,0xx0 WDTA 0000,0000 xxxx,xxx0 TM2PS 定时器 2 时钟预分频寄存器 FEA2H 0000,0000 TM3PS 定时器 3 时钟预分频寄存器 FEA3H 0000,0000 TM4PS 定时器 4 时钟预分频寄存器 FEA4H 0000,0000 ADC 时序控制寄存器 FEA8H CSSETUP ADCEXCFG ADC 扩展配置寄存器 FEADH - CMPEXCFG 比较器扩展配置寄存器 FEAEH ADCTIM CHYS[1:0] PWMCH PWM0 计数器高字节 FF00H PWMCL PWM0 计数器低字节 FF01H PWM0 时钟选择 FF02H - PWMTADCH PWM0 触发 ADC 计数高字节 FF03H - PWMCKS CSHOLD[1:0] ADCETRS [1:0] - 0010,1010 SMPDUTY[4:0] - - - CVTIMESEL[2:0] CMPNS CMPPS[1:0] - PWM0 中断标志寄存器 00xx,x000 x000,0000 0000,0000 - - SELT2 PWM_PS[3:0] xxx0,0000 x000,0000 PWMTADCL PWM0 触发 ADC 计数低字节 FF04H PWMIF xx00,x000 0000,0000 FF05H C7IF C6IF C5IF C4IF C3IF C2IF C1IF C0IF 0000,0000 PWMFDCR PWM0 异常检测控制寄存器 FF06H INVCMP INVIO ENFD FLTFLIO EFDI FDCMP FDIO FDIF 0000,0000 PWM0T1H PWM00T1 计数值高字节 FF10H - PWM00T1 计数值低字节 FF11H PWM0T2H PWM00T2 计数值高字节 FF12H PWM0T2L PWM00T2 计数值低字节 FF13H PWM0CR PWM00 控制寄存器 FF14H ENC0O C0INI - PWM0HLD PWM00 电平保持控制寄存器 FF15H - - - PWM1T1H PWM01T1 计数值高字节 FF18H - PWM01T1 计数值低字节 FF19H PWM1T2H PWM01T2 计数值高字节 FF1AH PWM1T2L PWM01T2 计数值低字节 FF1BH PWM1CR PWM01 控制寄存器 FF1CH PWM0T1L PWM1T1L x000,0000 0000,0000 - x000,0000 0000,0000 - HLDH HLDL - xxxx,xx00 x000,0000 0000,0000 - PWM1HLD PWM01 电平保持控制寄存器 FF1DH - - - PWM2T1H PWM02T1 计数值高字节 FF20H - PWM02T1 计数值低字节 FF21H PWM2T2H PWM02T2 计数值高字节 FF22H PWM2T2L PWM02T2 计数值低字节 FF23H PWM2CR PWM02 控制寄存器 FF24H ENC2O C2INI - PWM2HLD PWM02 电平保持控制寄存器 FF25H - - - PWM3T1H PWM03T1 计数值高字节 FF28H - PWM03T1 计数值低字节 FF29H PWM3T2H PWM03T2 计数值高字节 FF2AH 深圳国芯人工智能有限公司 - EC0T2SI EC0T1SI 00x0,0000 0000,0000 C1INI PWM3T1L - EC0I x000,0000 ENC1O PWM2T1L C0_S[1:0] C1_S[1:0] - EC1I - - EC1T2SI EC1T1SI 00x0,0000 HLDH HLDL xxxx,xx00 x000,0000 0000,0000 - x000,0000 0000,0000 C2_S[1:0] - EC2I - - EC2T2SI EC2T1SI 00x0,0000 HLDH HLDL xxxx,xx00 x000,0000 0000,0000 - 国内分销商电话: 0513-5501 2928/2929/2966 x000,0000 去纯技术交流论坛:www.STCAIMCU.com - 218 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com PWM3T2L PWM03T2 计数值低字节 FF2BH PWM3CR PWM03 控制寄存器 FF2CH 技术支持: 19864585985 0000,0000 ENC3O C3INI - PWM3HLD PWM03 电平保持控制寄存器 FF2DH - - - PWM4T1H PWM04T1 计数值高字节 FF30H - PWM04T1 计数值低字节 FF31H PWM4T2H PWM04T2 计数值高字节 FF32H PWM4T2L PWM04T2 计数值低字节 FF33H PWM4CR PWM04 控制寄存器 FF34H ENC4O C4INI - PWM4HLD PWM04 电平保持控制寄存器 FF35H - - - PWM5T1H PWM05T1 计数值高字节 FF38H - PWM05T1 计数值低字节 FF39H PWM5T2H PWM05T2 计数值高字节 FF3AH PWM5T2L PWM05T2 计数值低字节 FF3BH PWM5CR PWM05 控制寄存器 FF3CH PWM4T1L PWM5T1L - - EC3T2SI EC3T1SI 00x0,0000 HLDH HLDL - xxxx,xx00 x000,0000 0000,0000 C4_S[1:0] - EC4I - - EC4T2SI EC4T1SI 00x0,0000 HLDH HLDL xxxx,xx00 x000,0000 0000,0000 - x000,0000 0000,0000 - PWM5HLD PWM05 电平保持控制寄存器 FF3DH - - - PWM6T1H PWM06T1 计数值高字节 FF40H - PWM06T1 计数值低字节 FF41H PWM6T2H PWM06T2 计数值高字节 FF42H PWM6T2L PWM06T2 计数值低字节 FF43H PWM6CR PWM06 控制寄存器 FF44H ENC6O C6INI - PWM6HLD PWM06 电平保持控制寄存器 FF45H - - - PWM7T1H PWM07T1 计数值高字节 FF48H - PWM07T1 计数值低字节 FF49H PWM7T2H PWM07T2 计数值高字节 FF4AH PWM7T2L PWM07T2 计数值低字节 FF4BH PWM7CR PWM07 控制寄存器 FF4CH PWM7HLD PWM07 电平保持控制寄存器 FF4DH - EC3I 0000,0000 C5INI PWM7T1L C3_S[1:0] x000,0000 ENC5O PWM6T1L 选型顾问: 13922805190 C5_S[1:0] - EC5I - - EC5T2SI EC5T1SI 00x0,0000 HLDH HLDL xxxx,xx00 x000,0000 0000,0000 - x000,0000 0000,0000 C6_S[1:0] - EC6I - - EC6T2SI EC6T1SI 00x0,0000 HLDH HLDL xxxx,xx00 x000,0000 0000,0000 - x000,0000 0000,0000 ENC7O C7INI - - - - C7_S[1:0] - EC7I - - EC7T2SI EC7T1SI 00x0,0000 HLDH HLDL xxxx,xx00 MD3 MDU 数据寄存器 FCF0H MD3[7:0] 0000,0000 MD2 MDU 数据寄存器 FCF1H MD2[7:0] 0000,0000 MD1 MDU 数据寄存器 FCF2H MD1[7:0] 0000,0000 MD0 MDU 数据寄存器 FCF3H MD0[7:0] 0000,0000 MD5 MDU 数据寄存器 FCF4H MD5[7:0] 0000,0000 MD4 MDU 数据寄存器 FCF5H MD4[7:0] 0000,0000 ARCON MDU 模式控制寄存器 FCF6H OPCON MDU 操作控制寄存器 FCF7H - MDOV - - - - RST P0INTE P0 口中断使能寄存器 FD00H P07INTE P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE P00INTE 0000,0000 P1INTE P1 口中断使能寄存器 FD01H P17INTE P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE P10INTE 0000,0000 P2INTE P2 口中断使能寄存器 FD02H P27INTE P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE P20INTE 0000,0000 P3INTE P3 口中断使能寄存器 FD03H P37INTE P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE P30INTE 0000,0000 P4INTE P4 口中断使能寄存器 FD04H P47INTE P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE P40INTE 0000,0000 P5INTE P5 口中断使能寄存器 FD05H - - P55INTE P54INTE P53INTE P52INTE P51INTE P50INTE xx00,0000 P6INTE P6 口中断使能寄存器 FD06H P67INTE P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE P60INTE 0000,0000 P7INTE P7 口中断使能寄存器 FD07H P77INTE P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE P70INTE 0000,0000 P0INTF P0 口中断标志寄存器 FD10H P07INTF P06INTF P05INTF P04INTF P03INTF P02INTF P01INTF P00INTF 0000,0000 深圳国芯人工智能有限公司 MODE[2:0] SC[4:0] 国内分销商电话: 0513-5501 2928/2929/2966 0000,0000 ENOP 0000,0000 去纯技术交流论坛:www.STCAIMCU.com - 219 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1INTF P1 口中断标志寄存器 FD11H P17INTF P16INTF P15INTF P14INTF P13INTF P12INTF P11INTF P10INTF 0000,0000 P2INTF P2 口中断标志寄存器 FD12H P27INTF P26INTF P25INTF P24INTF P23INTF P22INTF P21INTF P20INTF 0000,0000 P3INTF P3 口中断标志寄存器 FD13H P37INTF P36INTF P35INTF P34INTF P33INTF P32INTF P31INTF P30INTF 0000,0000 P4INTF P4 口中断标志寄存器 FD14H P47INTF P46INTF P45INTF P44INTF P43INTF P42INTF P41INTF P40INTF 0000,0000 P5INTF P5 口中断标志寄存器 FD15H - - P55INTF P54INTF P53INTF P52INTF P51INTF P50INTF xx00,0000 P6INTF P6 口中断标志寄存器 FD16H P67INTF P66INTF P65INTF P64INTF P63INTF P62INTF P61INTF P60INTF 0000,0000 P7INTF P7 口中断标志寄存器 FD17H P77INTF P76INTF P75INTF P74INTF P73INTF P72INTF P71INTF P70INTF 0000,0000 P0IM0 P0 口中断模式寄存器 0 FD20H P07IM0 P06IM0 P05IM0 P04IM0 P03IM0 P02IM0 P01IM0 P00IM0 0000,0000 P1IM0 P1 口中断模式寄存器 0 FD21H P17IM0 P16IM0 P15IM0 P14IM0 P13IM0 P12IM0 P11IM0 P10IM0 0000,0000 P2IM0 P2 口中断模式寄存器 0 FD22H P27IM0 P26IM0 P25IM0 P24IM0 P23IM0 P22IM0 P21IM0 P20IM0 0000,0000 P3IM0 P3 口中断模式寄存器 0 FD23H P37IM0 P36IM0 P35IM0 P34IM0 P33IM0 P32IM0 P31IM0 P30IM0 0000,0000 P4IM0 P4 口中断模式寄存器 0 FD24H P47IM0 P46IM0 P45IM0 P44IM0 P43IM0 P42IM0 P41IM0 P40IM0 0000,0000 P5IM0 P5 口中断模式寄存器 0 FD25H - - P55IM0 P54IM0 P53IM0 P52IM0 P51IM0 P50IM0 xx00,0000 P6IM0 P6 口中断模式寄存器 0 FD26H P67IM0 P66IM0 P65IM0 P64IM0 P63IM0 P62IM0 P61IM0 P60IM0 0000,0000 P7IM0 P7 口中断模式寄存器 0 FD27H P77IM0 P76IM0 P75IM0 P74IM0 P73IM0 P72IM0 P71IM0 P70IM0 0000,0000 P0IM1 P0 口中断模式寄存器 1 FD30H P07IM1 P06IM1 P05IM1 P04IM1 P03IM1 P02IM1 P01IM1 P00IM1 0000,0000 P1IM1 P1 口中断模式寄存器 1 FD31H P17IM1 P16IM1 P15IM1 P14IM1 P13IM1 P12IM1 P11IM1 P10IM1 0000,0000 P2IM1 P2 口中断模式寄存器 1 FD32H P27IM1 P26IM1 P25IM1 P24IM1 P23IM1 P22IM1 P21IM1 P20IM1 0000,0000 P3IM1 P3 口中断模式寄存器 1 FD33H P37IM1 P36IM1 P35IM1 P34IM1 P33IM1 P32IM1 P31IM1 P30IM1 0000,0000 P4IM1 P4 口中断模式寄存器 1 FD34H P47IM1 P46IM1 P45IM1 P44IM1 P43IM1 P42IM1 P41IM1 P40IM1 0000,0000 P5IM1 P5 口中断模式寄存器 1 FD35H - - P55IM1 P54IM1 P53IM1 P52IM1 P51IM1 P50IM1 xx00,0000 P6IM1 P6 口中断模式寄存器 1 FD36H P67IM1 P66IM1 P65IM1 P64IM1 P63IM1 P62IM1 P61IM1 P60IM1 0000,0000 P7IM1 P7 口中断模式寄存器 1 FD37H P77IM1 P76IM1 P75IM1 P74IM1 P73IM1 P72IM1 P71IM1 P70IM1 0000,0000 P0WKUE P0 口中断唤醒使能寄存器 FD40H P07WKUE P06WKUE P05WKUE P04WKUE P03WKUE P02WKUE P01WKUE P00WKUE 0000,0000 P1WKUE P1 口中断唤醒使能寄存器 FD41H P17WKUE P16WKUE P15WKUE P14WKUE P13WKUE P12WKUE P11WKUE P10WKUE 0000,0000 P2WKUE P2 口中断唤醒使能寄存器 FD42H P27WKUE P26WKUE P25WKUE P24WKUE P23WKUE P22WKUE P21WKUE P20WKUE 0000,0000 P3WKUE P3 口中断唤醒使能寄存器 FD43H P37WKUE P36WKUE P35WKUE P34WKUE P33WKUE P32WKUE P31WKUE P30WKUE 0000,0000 P4WKUE P4 口中断唤醒使能寄存器 FD44H P47WKUE P46WKUE P45WKUE P44WKUE P43WKUE P42WKUE P41WKUE P40WKUE 0000,0000 P5WKUE P5 口中断唤醒使能寄存器 FD45H P6WKUE P6 口中断唤醒使能寄存器 FD46H P67WKUE P66WKUE P65WKUE P64WKUE P63WKUE P62WKUE P61WKUE P60WKUE 0000,0000 P7WKUE P7 口中断唤醒使能寄存器 FD47H P77WKUE P76WKUE P75WKUE P74WKUE P73WKUE P72WKUE P71WKUE P70WKUE 0000,0000 CCAPM3 PCA 模块 3 模式控制寄存器 FD54H CCAP3L PCA 模块 3 低字节 FD55H 0000,0000 CCAP3H PCA 模块 3 高字节 FD56H 0000,0000 - - - ECOM3 P55WKUE P54WKUE P53WKUE P52WKUE P51WKUE P50WKUE xx00,0000 CCAPP3 CCAPN3 MAT3 TOG3 PWM3 ECCF3 x000,0000 PCA_PWM3 PCA3 的 PWM 模式寄存器 FD57H PINIPL I/O 口中断优先级低寄存器 FD60H P7IP PINIPH I/O 口中断优先级高寄存器 FD61H P7IPH CHIPID0 硬件 ID0 FDE0H nnnn,nnnn CHIPID1 硬件 ID1 FDE1H nnnn,nnnn CHIPID2 硬件 ID2 FDE2H nnnn,nnnn CHIPID3 硬件 ID3 FDE3H nnnn,nnnn CHIPID4 硬件 ID4 FDE4H nnnn,nnnn CHIPID5 硬件 ID5 FDE5H nnnn,nnnn 深圳国芯人工智能有限公司 EBS3[1:0] XCCAP3H[1:0] XCCAP3L[1:0] P6IP P5IP P4IP P3IP P6IPH P5IPH P4IPH P3IPH 国内分销商电话: 0513-5501 2928/2929/2966 EPC3H EPC3L 0000,0000 P2IP P1IP P0IP 0000,0000 P2IPH P1IPH P0IPH 0000,0000 去纯技术交流论坛:www.STCAIMCU.com - 220 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 CHIPID6 硬件 ID6 FDE6H nnnn,nnnn CHIPID7 硬件 ID7 FDE7H nnnn,nnnn CHIPID8 硬件 ID8 FDE8H nnnn,nnnn CHIPID9 硬件 ID9 FDE9H nnnn,nnnn CHIPID10 硬件 ID10 FDEAH nnnn,nnnn CHIPID11 硬件 ID11 FDEBH nnnn,nnnn CHIPID12 硬件 ID12 FDECH nnnn,nnnn CHIPID13 硬件 ID13 FDEDH nnnn,nnnn CHIPID14 硬件 ID14 FDEEH nnnn,nnnn CHIPID15 硬件 ID15 FDEFH nnnn,nnnn CHIPID16 硬件 ID16 FDF0H nnnn,nnnn CHIPID17 硬件 ID17 FDF1H nnnn,nnnn CHIPID18 硬件 ID18 FDF2H nnnn,nnnn CHIPID19 硬件 ID19 FDF3H nnnn,nnnn CHIPID20 硬件 ID20 FDF4H nnnn,nnnn CHIPID21 硬件 ID21 FDF5H nnnn,nnnn CHIPID22 硬件 ID22 FDF6H nnnn,nnnn CHIPID23 硬件 ID23 FDF7H nnnn,nnnn CHIPID24 硬件 ID24 FDF8H nnnn,nnnn CHIPID25 硬件 ID25 FDF9H nnnn,nnnn CHIPID26 硬件 ID26 FDFAH nnnn,nnnn CHIPID27 硬件 ID27 FDFBH nnnn,nnnn CHIPID28 硬件 ID28 FDFCH nnnn,nnnn CHIPID29 硬件 ID29 FDFDH nnnn,nnnn CHIPID30 硬件 ID30 FDFEH nnnn,nnnn CHIPID31 硬件 ID31 FDFFH nnnn,nnnn DMA_M2M_CFG M2M_DMA 配置寄存器 FA00H M2MIE - TXACO RXACO DMA_M2M_CR M2M_DMA 控制寄存器 FA01H ENM2M TRIG - - - - - - 00xx,xxxx DMA_M2M_STA M2M_DMA 状态寄存器 FA02H - - - - - - - M2MIF xxxx,xxx0 DMA_M2M_AMT M2M_DMA 传输总字节数 FA03H 0000,0000 DMA_M2M_DONE M2M_DMA 传输完成字节数 FA04H 0000,0000 DMA_M2M_TXAH M2M_DMA 发送高地址 FA05H 0000,0000 DMA_M2M_TXAL M2M_DMA 发送低地址 FA06H 0000,0000 DMA_M2M_RXAH M2M_DMA 接收高地址 FA07H 0000,0000 DMA_M2M_RXAL M2M_DMA 接收低地址 FA08H 0000,0000 DMA_ADC_CFG ADC_DMA 配置寄存器 FA10H ADCIE - - - ADCMIP[1:0] DMA_ADC_CR ADC_DMA 控制寄存器 FA11H ENADC TRIG - - - - DMA_ADC_STA ADC_DMA 状态寄存器 FA12H - - - - - - DMA_ADC_RXAH ADC_DMA 接收高地址 FA17H 0000,0000 DMA_ADC_RXAL ADC_DMA 接收低地址 FA18H 0000,0000 DMA_ADC_CFG2 ADC_DMA 配置寄存器 2 FA19H - - - - DMA_ADC_CHSW0 ADC_DMA 通道使能 FA1AH CH15 CH14 CH13 CH12 CH11 CH10 CH9 CH8 1000,0000 DMA_ADC_CHSW1 ADC_DMA 通道使能 FA1BH CH7 CH6 CH5 CH4 CH3 CH2 CH1 CH0 0000,0001 DMA_SPI_CFG SPI_DMA 配置寄存器 FA20H SPIIE ACT_TX ACT_RX - 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 M2MIP[1:0] M2MPTY[1:0] ADCPTY[1:0] 0xxx,0000 - - 00xx,xxxx - ADCIF xxxx,xxx0 CVTIMESEL[3:0] SPIIP[1:0] 0x00,0000 xxxx,0000 SPIPTY[1:0] 000x,0000 去纯技术交流论坛:www.STCAIMCU.com - 221 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 DMA_SPI_CR SPI_DMA 控制寄存器 FA21H ENSPI TRIG_M TRIG_S - - - - DMA_SPI_STA SPI_DMA 状态寄存器 FA22H - - - - - TXOVW RXLOSS DMA_SPI_AMT SPI_DMA 传输总字节数 FA23H 0000,0000 DMA_SPI_DONE SPI_DMA 传输完成字节数 FA24H 0000,0000 DMA_SPI_TXAH SPI_DMA 发送高地址 FA25H 0000,0000 DMA_SPI_TXAL SPI_DMA 发送低地址 FA26H 0000,0000 DMA_SPI_RXAH SPI_DMA 接收高地址 FA27H 0000,0000 DMA_SPI_RXAL SPI_DMA 接收低地址 FA28H 0000,0000 DMA_SPI_CFG2 SPI_DMA 配置寄存器 2 FA29H - - - - - DMA_UR1T_CFG UR1T_DMA 配置寄存器 FA30H UR1TIE - - - UR1TIP[1:0] DMA_UR1T_CR UR1T_DMA 控制寄存器 FA31H ENUR1T TRIG - - - - - DMA_UR1T_STA UR1T_DMA 状态寄存器 FA32H - - - - - TXOVW - DMA_UR1T_AMT UR1T_DMA 传输总字节数 FA33H 0000,0000 DMA_UR1T_DONE UR1T_DMA 传输完成字节数 FA34H 0000,0000 DMA_UR1T_TXAH UR1T_DMA 发送高地址 FA35H 0000,0000 DMA_UR1T_TXAL UR1T_DMA 发送低地址 FA36H 0000,0000 DMA_UR1R_CFG UR1R_DMA 配置寄存器 FA38H UR1RIE - - - UR1RIP[1:0] DMA_UR1R_CR UR1R_DMA 控制寄存器 FA39H ENUR1R - TRIG - - - - CLRFIFO 0x0x,xxx0 DMA_UR1R_STA UR1R_DMA 状态寄存器 FA3AH - - - - - - RXLOSS UR1RIF xxxx,xx00 DMA_UR1R_AMT UR1R_DMA 传输总字节数 FA3BH 0000,0000 DMA_UR1R_DONE UR1R_DMA 传输完成字节数 FA3CH 0000,0000 DMA_UR1R_TXAH UR1R_DMA 发送高地址 FA3DH 0000,0000 DMA_UR1R_TXAL UR1R_DMA 发送低地址 FA3EH 0000,0000 DMA_UR2T_CFG UR2T_DMA 配置寄存器 FA40H UR2TIE - - - UR2TIP[1:0] DMA_UR2T_CR UR2T_DMA 控制寄存器 FA41H ENUR2T TRIG - - - - - DMA_UR2T_STA UR2T_DMA 状态寄存器 FA42H - - - - - TXOVW - DMA_UR2T_AMT UR2T_DMA 传输总字节数 FA43H 0000,0000 DMA_UR2T_DONE UR2T_DMA 传输完成字节数 FA44H 0000,0000 DMA_UR2T_TXAH UR2T_DMA 发送高地址 FA45H 0000,0000 DMA_UR2T_TXAL UR2T_DMA 发送低地址 FA46H 0000,0000 DMA_UR2R_CFG UR2R_DMA 配置寄存器 FA48H UR2RIE - - - UR2RIP[1:0] DMA_UR2R_CR UR2R_DMA 控制寄存器 FA49H ENUR2R - TRIG - - - - CLRFIFO 0x0x,xxx0 DMA_UR2R_STA UR2R_DMA 状态寄存器 FA4AH - - - - - - RXLOSS UR2RIF xxxx,xx00 DMA_UR2R_AMT UR2R_DMA 传输总字节数 FA4BH 0000,0000 DMA_UR2R_DONE UR2R_DMA 传输完成字节数 FA4CH 0000,0000 DMA_UR2R_TXAH UR2R_DMA 发送高地址 FA4DH 0000,0000 DMA_UR2R_TXAL UR2R_DMA 发送低地址 FA4EH 0000,0000 DMA_UR3T_CFG UR3T_DMA 配置寄存器 FA50H UR3TIE - - - UR3TIP[1:0] DMA_UR3T_CR UR3T_DMA 控制寄存器 FA51H ENUR3T TRIG - - - - - DMA_UR3T_STA UR3T_DMA 状态寄存器 FA52H - - - - - TXOVW - DMA_UR3T_AMT UR3T_DMA 传输总字节数 FA53H 0000,0000 DMA_UR3T_DONE UR3T_DMA 传输完成字节数 FA54H 0000,0000 DMA_UR3T_TXAH UR3T_DMA 发送高地址 FA55H 0000,0000 DMA_UR3T_TXAL UR3T_DMA 发送低地址 FA56H 0000,0000 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 WRPSS CLRFIFO 000x,xxx0 SPIIF xxxx,x000 SSS[1:0] xxxx,x000 UR1TPTY[1:0] 0xxx,0000 - 00xx,xxxx UR1TIF xxxx,x0x0 UR1RPTY[1:0] UR2TPTY[1:0] - 0xxx,0000 0xxx,0000 00xx,xxxx UR2TIF xxxx,x0x0 UR2RPTY[1:0] UR3TPTY[1:0] - 0xxx,0000 0xxx,0000 00xx,xxxx UR3TIF xxxx,x0x0 去纯技术交流论坛:www.STCAIMCU.com - 222 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 DMA_UR3R_CFG UR3R_DMA 配置寄存器 FA58H UR3RIE - - - UR3RIP[1:0] DMA_UR3R_CR UR3R_DMA 控制寄存器 FA59H ENUR3R - TRIG - - - - CLRFIFO 0x0x,xxx0 DMA_UR3R_STA UR3R_DMA 状态寄存器 FA5AH - - - - - - RXLOSS UR3RIF xxxx,xx00 DMA_UR3R_AMT UR3R_DMA 传输总字节数 FA5BH 0000,0000 DMA_UR3R_DONE UR3R_DMA 传输完成字节数 FA5CH 0000,0000 DMA_UR3R_TXAH UR3R_DMA 发送高地址 FA5DH 0000,0000 DMA_UR3R_TXAL UR3R_DMA 发送低地址 FA5EH 0000,0000 DMA_UR4T_CFG UR4T_DMA 配置寄存器 FA60H UR4TIE - - - UR4TIP[1:0] DMA_UR4T_CR UR4T_DMA 控制寄存器 FA61H ENUR4T TRIG - - - - - DMA_UR4T_STA UR4T_DMA 状态寄存器 FA62H - - - - - TXOVW - DMA_UR4T_AMT UR4T_DMA 传输总字节数 FA63H 0000,0000 DMA_UR4T_DONE UR4T_DMA 传输完成字节数 FA64H 0000,0000 DMA_UR4T_TXAH UR4T_DMA 发送高地址 FA65H 0000,0000 DMA_UR4T_TXAL UR4T_DMA 发送低地址 FA66H 0000,0000 DMA_UR4R_CFG UR4R_DMA 配置寄存器 FA68H UR4RIE - - - UR4RIP[1:0] DMA_UR4R_CR UR4R_DMA 控制寄存器 FA69H ENUR4R - TRIG - - - - CLRFIFO 0x0x,xxx0 DMA_UR4R_STA UR4R_DMA 状态寄存器 FA6AH - - - - - - RXLOSS UR4RIF xxxx,xx00 DMA_UR4R_AMT UR4R_DMA 传输总字节数 FA6BH 0000,0000 DMA_UR4R_DONE UR4R_DMA 传输完成字节数 FA6CH 0000,0000 DMA_UR4R_TXAH UR4R_DMA 发送高地址 FA6DH 0000,0000 DMA_UR4R_TXAL UR4R_DMA 发送低地址 FA6EH 0000,0000 DMA_LCM_CFG LCM_DMA 配置寄存器 FA70H LCMIE DMA_LCM_CR LCM_DMA 控制寄存器 FA71H ENLCM DMA_LCM_STA LCM_DMA 状态寄存器 FA72H - DMA_LCM_AMT LCM_DMA 传输总字节数 FA73H 0000,0000 DMA_LCM_DONE LCM_DMA 传输完成字节数 FA74H 0000,0000 DMA_LCM_TXAH LCM_DMA 发送高地址 FA75H 0000,0000 DMA_LCM_TXAL LCM_DMA 发送低地址 FA76H 0000,0000 DMA_LCM_RXAH LCM_DMA 接收高地址 FA77H 0000,0000 DMA_LCM_RXAL LCM_DMA 接收低地址 FA78H 0000,0000 - - TRIGWC TRIGWD - - - LCMIP[1:0] UR3RPTY[1:0] UR4TPTY[1:0] - 0xxx,0000 0xxx,0000 00xx,xxxx UR4TIF xxxx,x0x0 UR4RPTY[1:0] LCMPTY[1:0] 0xxx,0000 0xxx,0000 TRIGRC TRIGRD - - - 0000,0xxx - - - TXOVW LCMIF xxxx,xx00 注:特殊功能寄存器初始值意义 0: 初始值为 0; 1: 初始值为 1; n: 初始值与 ISP 下载时的硬件选项有关; x: 不存在这个位,初始值不确定 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 223 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 9 I/O 口 所有的 I/O 口均有 4 种工作模式:准双向口/弱上拉(标准 8051 输出口模式)、推挽输出/强上拉、高 阻输入(电流既不能流入也不能流出)、开漏输出。可使用软件对 I/O 口的工作模式进行容易配置。 关于 I/O 的注意事项: 1、 P3.0 和 P3.1 口上电后的状态为弱上拉/准双向口模式 2、 除 P3.0 和 P3.1 外,其余所有 IO 口上电后的状态均为高阻输入状态,用户在使用 IO 口 前必须先设置 IO 口模式 3、 芯片上电时如果不需要使用 USB 进行 ISP 下载,P3.0/P3.1/P3.2 这 3 个 I/O 口不能同时 为低电平,否则会进入 USB 下载模式而无法运行用户代码 4、 芯片上电时,若 P3.0 和 P3.1 同时为低电平,P3.2 口会短时间由高阻输入状态切换到双 向口模式,用以读取 P3.2 口外部状态来判断是否需要进入 USB 下载模式 5、 当使用 P5.4 当作复位脚时,这个端口内部的 4K 上拉电阻会一直打开;但 P5.4 做普通 I/O 口时,基于这个 I/O 口与复位脚共享管脚的特殊考量,端口内部的 4K 上拉电阻依 然会打开大约 6.5 毫秒时间,再自动关闭(当用户的电路设计需要使用 P5.4 口驱动外 部电路时,请务必考虑上电瞬间会有 6.5 毫秒时间的高电平的问题) 9.1 I/O 口相关寄存器 位地址与符号 符号 描述 地址 复位值 B7 B6 B5 B4 B3 B2 B1 B0 P0 P0 端口 80H P07 P06 P05 P04 P03 P02 P01 P00 1111,1111 P1 P1 端口 90H P17 P16 P15 P14 P13 P12 P11 P10 1111,1111 P2 P2 端口 A0H P27 P26 P25 P24 P23 P22 P21 P20 1111,1111 P3 P3 端口 B0H P37 P36 P35 P34 P33 P32 P31 P30 1111,1111 P4 P4 端口 C0H P47 P46 P45 P44 P43 P42 P41 P40 1111,1111 P5 P5 端口 C8H - - P55 P54 P53 P52 P51 P50 xx11,1111 P6 P6 端口 E8H P67 P66 P65 P64 P63 P62 P61 P60 1111,1111 P7 P7 端口 F8H P77 P76 P75 P74 P73 P72 P71 P70 1111,1111 P0M1 P0 口配置寄存器 1 93H P07M1 P06M1 P05M1 P04M1 P03M1 P02M1 P01M1 P00M1 1111,1111 P0M0 P0 口配置寄存器 0 94H P07M0 P06M0 P05M0 P04M0 P03M0 P02M0 P01M0 P00M0 0000,0000 P1M1 P1 口配置寄存器 1 91H P17M1 P16M1 P15M1 P14M1 P13M1 P12M1 P11M1 P10M1 1111,1111 P1M0 P1 口配置寄存器 0 92H P17M0 P16M0 P15M0 P14M0 P13M0 P12M0 P11M0 P10M0 0000,0000 P2M1 P2 口配置寄存器 1 95H P27M1 P26M1 P25M1 P24M1 P23M1 P22M1 P21M1 P20M1 1111,1111 P2M0 P2 口配置寄存器 0 96H P27M0 P26M0 P25M0 P24M0 P23M0 P22M0 P21M0 P20M0 0000,0000 P3M1 P3 口配置寄存器 1 B1H P37M1 P36M1 P35M1 P34M1 P33M1 P32M1 P31M1 P30M1 1111,1100 P3M0 P3 口配置寄存器 0 B2H P37M0 P36M0 P35M0 P34M0 P33M0 P32M0 P31M0 P30M0 0000,0000 P4M1 P4 口配置寄存器 1 B3H P47M1 P46M1 P45M1 P44M1 P43M1 P42M1 P41M1 P40M1 1111,1111 P4M0 P4 口配置寄存器 0 B4H P47M0 P46M0 P45M0 P44M0 P43M0 P42M0 P41M0 P40M0 0000,0000 C9H - - P55M1 P54M1 P53M1 P52M1 P51M1 P50M1 xx11,1111 P5M1 P5 口配置寄存器 1 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 224 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P5M0 P5 口配置寄存器 0 CAH - - P55M0 P54M0 P53M0 P52M0 P51M0 P50M0 xx00,0000 P6M1 P6 口配置寄存器 1 CBH P67M1 P66M1 P65M1 P64M1 P63M1 P62M1 P61M1 P60M1 1111,1111 P6M0 P6 口配置寄存器 0 CCH P67M0 P66M0 P65M0 P64M0 P63M0 P62M0 P61M0 P60M0 0000,0000 P7M1 P7 口配置寄存器 1 E1H P77M1 P76M1 P75M1 P74M1 P73M1 P72M1 P71M1 P70M1 1111,1111 P7M0 P7 口配置寄存器 0 E2H P77M0 P76M0 P75M0 P74M0 P73M0 P72M0 P71M0 P70M0 0000,0000 位地址与符号 符号 描述 复位值 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0PU P0 口上拉电阻控制寄存器 FE10H P07PU P06PU P05PU P04PU P03PU P02PU P01PU P00PU 0000,0000 P1PU P1 口上拉电阻控制寄存器 FE11H P17PU P16PU P15PU P14PU P13PU P12PU P11PU P10PU 0000,0000 P2PU P2 口上拉电阻控制寄存器 FE12H P27PU P26PU P25PU P24PU P23PU P22PU P21PU P20PU 0000,0000 P3PU P3 口上拉电阻控制寄存器 FE13H P37PU P36PU P35PU P34PU P33PU P32PU P31PU P30PU 0000,0000 P4PU P4 口上拉电阻控制寄存器 FE14H P47PU P46PU P45PU P44PU P43PU P42PU P41PU P40PU 0000,0000 P5PU P5 口上拉电阻控制寄存器 FE15H - - P55PU P54PU P53PU P52PU P51PU P50PU xx00,0000 P6PU P6 口上拉电阻控制寄存器 FE16H P67PU P66PU P65PU P64PU P63PU P62PU P61PU P60PU 0000,0000 P7PU P7 口上拉电阻控制寄存器 FE17H P77PU P76PU P75PU P74PU P73PU P72PU P71PU P70PU 0000,0000 P0NCS P0 口施密特触发控制寄存器 FE18H P07NCS P06NCS P05NCS P04NCS P03NCS P02NCS P01NCS P00NCS 0000,0000 P1NCS P1 口施密特触发控制寄存器 FE19H P17NCS P16NCS P15NCS P14NCS P13NCS P12NCS P11NCS P10NCS 0000,0000 P2NCS P2 口施密特触发控制寄存器 FE1AH P27NCS P26NCS P25NCS P24NCS P23NCS P22NCS P21NCS P20NCS 0000,0000 P3NCS P3 口施密特触发控制寄存器 FE1BH P37NCS P36NCS P35NCS P34NCS P33NCS P32NCS P31NCS P30NCS 0000,0000 P4NCS P4 口施密特触发控制寄存器 FE1CH P47NCS P46NCS P45NCS P44NCS P43NCS P42NCS P41NCS P40NCS 0000,0000 - P55NCS P54NCS P53NCS P52NCS P51NCS P50NCS xx00,0000 P5NCS P5 口施密特触发控制寄存器 FE1DH P6NCS P6 口施密特触发控制寄存器 FE1EH P67NCS P66NCS P65NCS P64NCS P63NCS P62NCS P61NCS P60NCS 0000,0000 P7NCS P7 口施密特触发控制寄存器 FE1FH P77NCS P76NCS P75NCS P74NCS P73NCS P72NCS P71NCS P70NCS 0000,0000 - P0SR P0 口电平转换速率寄存器 FE20H P07SR P06SR P05SR P04SR P03SR P02SR P01SR P00SR 1111,1111 P1SR P1 口电平转换速率寄存器 FE21H P17SR P16SR P15SR P14SR P13SR P12SR P11SR P10SR 1111,1111 P2SR P2 口电平转换速率寄存器 FE22H P27SR P26SR P25SR P24SR P23SR P22SR P21SR P20SR 1111,1111 P3SR P3 口电平转换速率寄存器 FE23H P37SR P36SR P35SR P34SR P33SR P32SR P31SR P30SR 1111,1111 P4SR P4 口电平转换速率寄存器 FE24H P47SR P46SR P45SR P44SR P43SR P42SR P41SR P40SR 1111,1111 P5SR P5 口电平转换速率寄存器 FE25H - - P55SR P54SR P53SR P52SR P51SR P50SR xx11,1111 P6SR P6 口电平转换速率寄存器 FE26H P67SR P66SR P65SR P64SR P63SR P62SR P61SR P60SR 1111,1111 P7SR P7 口电平转换速率寄存器 FE27H P77SR P76SR P75SR P74SR P73SR P72SR P71SR P70SR 1111,1111 P0DR P0 口驱动电流控制寄存器 FE28H P07DR P06DR P05DR P04DR P03DR P02DR P01DR P00DR 1111,1111 P1DR P1 口驱动电流控制寄存器 FE29H P17DR P16DR P15DR P14DR P13DR P12DR P11DR P10DR 1111,1111 P2DR P2 口驱动电流控制寄存器 FE2AH P27DR P26DR P25DR P24DR P23DR P22DR P21DR P20DR 1111,1111 P3DR P3 口驱动电流控制寄存器 FE2BH P37DR P36DR P35DR P34DR P33DR P32DR P31DR P30DR 1111,1111 P4DR P4 口驱动电流控制寄存器 FE2CH P47DR P46DR P45DR P44DR P43DR P42DR P41DR P40DR 1111,1111 P5DR P5 口驱动电流控制寄存器 FE2DH - - P55DR P54DR P53DR P52DR P51DR P50DR xx11,1111 P6DR P6 口驱动电流控制寄存器 FE2EH P67DR P66DR P65DR P64DR P63DR P62DR P61DR P60DR 1111,1111 P7DR P7 口驱动电流控制寄存器 FE2FH P77DR P76DR P75DR P74DR P73DR P72DR P71DR P70DR 1111,1111 P0IE P0 口输入使能控制寄存器 FE30H P07IE P06IE P05IE P04IE P03IE P02IE P01IE P00IE 1111,1111 P1IE P1 口输入使能控制寄存器 FE31H P17IE P16IE P15IE P14IE P13IE P12IE P11IE P10IE 1111,1111 P2IE P2 口输入使能控制寄存器 FE32H P27IE P26IE P25IE P24IE P23IE P22IE P21IE P20IE 1111,1111 P3IE P3 口输入使能控制寄存器 FE33H P37IE P36IE P35IE P34IE P33IE P32IE P31IE P30IE 1111,1111 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 225 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P4IE P4 口输入使能控制寄存器 FE34H P47IE P46IE P45IE P44IE P43IE P42IE P41IE P40IE 1111,1111 P5IE P5 口输入使能控制寄存器 FE35H - - P55IE P54IE P53IE P52IE P51IE P50IE xx11,1111 P6IE P6 口输入使能控制寄存器 FE36H P67IE P66IE P65IE P64IE P63IE P62IE P61IE P60IE 1111,1111 P7IE P7 口输入使能控制寄存器 FE37H P77IE P76IE P75IE P74IE P73IE P72IE P71IE P70IE 1111,1111 9.1.1 端口数据寄存器(Px) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0 80H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P1 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P3 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P4 C0H P4.7 P4.6 P4.5 P4.4 P4.3 P4.2 P4.1 P4.0 P5 C8H - - P55 P5.4 P5.3 P5.2 P5.1 P5.0 P6 E8H P6.7 P6.6 P6.5 P6.4 P6.3 P6.2 P6.1 P6.0 P7 F8H P7.7 P7.6 P7.5 P7.4 P7.3 P7.2 P7.1 P7.0 读写端口状态 写 0:输出低电平到端口缓冲区 写 1:输出高电平到端口缓冲区 读:直接读端口管脚上的电平 9.1.2 端口模式配置寄存器(PxM0,PxM1) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0M0 94H P07M0 P06M0 P05M0 P04M0 P03M0 P02M0 P01M0 P00M0 P0M1 93H P07M1 P06M1 P05M1 P04M1 P03M1 P02M1 P01M1 P00M1 P1M0 92H P17M0 P16M0 P15M0 P14M0 P13M0 P12M0 P11M0 P10M0 P1M1 91H P17M1 P16M1 P15M1 P14M1 P13M1 P12M1 P11M1 P10M1 P2M0 96H P27M0 P26M0 P25M0 P24M0 P23M0 P22M0 P21M0 P20M0 P2M1 95H P27M1 P26M1 P25M1 P24M1 P23M1 P22M1 P21M1 P20M1 P3M0 B2H P37M0 P36M0 P35M0 P34M0 P33M0 P32M0 P31M0 P30M0 P3M1 B1H P37M1 P36M1 P35M1 P34M1 P33M1 P32M1 P31M1 P30M1 P4M0 B4H P47M0 P46M0 P45M0 P44M0 P43M0 P42M0 P41M0 P40M0 P4M1 B3H P47M1 P46M1 P45M1 P44M1 P43M1 P42M1 P41M1 P40M1 P5M0 CAH - - P55M0 P54M0 P53M0 P52M0 P51M0 P50M0 P5M1 C9H - - P55M1 P54M1 P53M1 P52M1 P51M1 P50M1 P6M0 CCH P67M0 P66M0 P65M0 P64M0 P63M0 P62M0 P61M0 P60M0 P6M1 CBH P67M1 P66M1 P65M1 P64M1 P63M1 P62M1 P61M1 P60M1 P7M0 E2H P77M0 P76M0 P75M0 P74M0 P73M0 P72M0 P71M0 P70M0 P7M1 E1H P77M1 P76M1 P75M1 P74M1 P73M1 P72M1 P71M1 P70M1 配置端口的模式 PnM1.x PnM0.x Pn.x 口工作模式 0 0 准双向口 0 1 推挽输出 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 226 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 1 0 高阻输入 1 1 开漏输出 技术支持: 19864585985 选型顾问: 13922805190 注意:当有I/O口被选择为ADC输入通道时,必须设置PxM0/PxM1寄存器将I/O口模式设置为输入模式。另 外如果MCU进入掉电模式/时钟停振模式后,仍需要使能ADC通道,则需要设置PxIE寄存器关闭数字输入, 才能保证不会有额外的耗电 9.1.3 端口上拉电阻控制寄存器(PxPU) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0PU FE10H P07PU P06PU P05PU P04PU P03PU P02PU P01PU P00PU P1PU FE11H P17PU P16PU P15PU P14PU P13PU P12PU P11PU P10PU P2PU FE12H P27PU P26PU P25PU P24PU P23PU P22PU P21PU P20PU P3PU FE13H P37PU P36PU P35PU P34PU P33PU P32PU P31PU P30PU P4PU FE14H P47PU P46PU P45PU P44PU P43PU P42PU P41PU P40PU P5PU FE15H - - P55PU P54PU P53PU P52PU P51PU P50PU P6PU FE16H P67PU P66PU P65PU P64PU P63PU P62PU P61PU P60PU P7PU FE17H P77PU P76PU P75PU P74PU P73PU P72PU P71PU P70PU 端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些) 0:禁止端口内部的 4.1K 上拉电阻 1:使能端口内部的 4.1K 上拉电阻 9.1.4 端口施密特触发控制寄存器(PxNCS) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0NCS FE18H P07NCS P06NCS P05NCS P04NCS P03NCS P02NCS P01NCS P00NCS P1NCS FE19H P17NCS P16NCS P15NCS P14NCS P13NCS P12NCS P11NCS P10NCS P2NCS FE1AH P27NCS P26NCS P25NCS P24NCS P23NCS P22NCS P21NCS P20NCS P3NCS FE1BH P37NCS P36NCS P35NCS P34NCS P33NCS P32NCS P31NCS P30NCS P4NCS FE1CH P47NCS P46NCS P45NCS P44NCS P43NCS P42NCS P41NCS P40NCS P5NCS FE1DH - - P55NCS P54NCS P53NCS P52NCS P51NCS P50NCS P6NCS FE1EH P67NCS P66NCS P65NCS P64NCS P63NCS P62NCS P61NCS P60NCS P7NCS FE1FH P77NCS P76NCS P75NCS P74NCS P73NCS P72NCS P71NCS P70NCS 端口施密特触发控制位 0:使能端口的施密特触发功能。(上电复位后默认使能施密特触发) 1:禁止端口的施密特触发功能。 9.1.5 端口电平转换速度控制寄存器(PxSR) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0SR FE20H P07SR P06SR P05SR P04SR P03SR P02SR P01SR P00SR P1SR FE21H P17SR P16SR P15SR P14SR P13SR P12SR P11SR P10SR P2SR FE22H P27SR P26SR P25SR P24SR P23SR P22SR P21SR P20SR P3SR FE23H P37SR P36SR P35SR P34SR P33SR P32SR P31SR P30SR 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 227 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P4SR FE24H P47SR P46SR P45SR P44SR P43SR P42SR P41SR P40SR P5SR FE25H - - P55SR P54SR P53SR P52SR P51SR P50SR P6SR FE26H P67SR P66SR P65SR P64SR P63SR P62SR P61SR P60SR P7SR FE27H P77SR P76SR P75SR P74SR P73SR P72SR P71SR P70SR 控制端口电平转换的速度 0:电平转换速度快,相应的上下冲会比较大 1:电平转换速度慢,相应的上下冲比较小 9.1.6 端口驱动电流控制寄存器(PxDR) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0DR FE28H P07DR P06DR P05DR P04DR P03DR P02DR P01DR P00DR P1DR FE29H P17DR P16DR P15DR P14DR P13DR P12DR P11DR P10DR P2DR FE2AH P27DR P26DR P25DR P24DR P23DR P22DR P21DR P20DR P3DR FE2BH P37DR P36DR P35DR P34DR P33DR P32DR P31DR P30DR P4DR FE2CH P47DR P46DR P45DR P44DR P43DR P42DR P41DR P40DR P5DR FE2DH - - P55DR P54DR P53DR P52DR P51DR P50DR P6DR FE2EH P67DR P66DR P65DR P64DR P63DR P62DR P61DR P60DR P7DR FE2FH P77DR P76DR P75DR P74DR P73DR P72DR P71DR P70DR 控制端口的驱动能力 0:增强驱动能力 1:一般驱动能力 9.1.7 端口数字信号输入使能控制寄存器(PxIE) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0IE FE30H P07IE P06IE P05IE P04IE P03IE P02IE P01IE P00IE P1IE FE31H P17IE P16IE P15IE P14IE P13IE P12IE P11IE P10IE P2IE FE32H P27IE P26IE P25IE P24IE P23IE P22IE P21IE P20IE P3IE FE33H P37IE P36IE P35IE P34IE P33IE P32IE P31IE P30IE P4IE FE34H P47IE P46IE P45IE P44IE P43IE P42IE P41IE P40IE P5IE FE35H - - P55IE P54IE P53IE P52IE P51IE P50IE P6IE FE36H P67IE P66IE P65IE P64IE P63IE P62IE P61IE P60IE P7IE FE37H P77IE P76IE P75IE P74IE P73IE P72IE P71IE P70IE 数字信号输入使能控制 0:禁止数字信号输入。若 I/O 被当作比较器输入口、ADC 输入口或者触摸按键输入口等模拟口时, 进入时钟停振模式前,必须设置为 0,否则会有额外的耗电。 1:使能数字信号输入。若 I/O 被当作数字口时,必须设置为 1,否 MCU 无法读取外部端口的电平。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 228 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 229 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 注意: 虽然每个I/O口在弱上拉(准双向口)/强推挽输出/开漏模式时都能承受20mA的灌电流 (还是要加限流电阻,如1K、560Ω、472Ω等),在强推挽输出时能输出20mA的拉电流(也 要加限流电阻),但整个芯片的工作电流推荐不要超过70mA,即从Vcc流入的电流建议不要 超过70mA,从Gnd流出电流建议不要超过70mA,整体流入/流出电流建议都不要超过70mA。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 230 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 VCC 极弱 弱 端口 引脚 端口锁存数据 输入数据 干扰抑制 9.3.2 推挽输出 强推挽输出配置的下拉结构与开漏输出以及准双向口的下拉结构相同,但当锁存器为 1 时提供持续 的强上拉。推挽模式一般用于需要更大驱动电流的情况。 强推挽引脚配置如下图所示: VCC 强 端口 引脚 端口锁存数据 输入数据 干扰抑制 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 231 - STC8A8K64D4 系列技术手册 9.3.3 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 高阻输入 电流既不能流入也不能流出 输入口带有一个施密特触发输入以及一个干扰抑制电路 高阻输入引脚配置如下图所示: 端口 引脚 输入数据 干扰抑制 9.3.4 开漏输出 开漏模式既可读外部状态也可对外输出(高电平或低电平)。如要正确读外部状态或需要对外输出高 电平,需外加上拉电阻。 当端口锁存器为 0 时,开漏输出关闭所有上拉晶体管。当作为一个逻辑输出高电平时,这种配置方 式必须有外部上拉,一般通过电阻外接到 Vcc。如果外部有上拉电阻,开漏的 I/O 口还可读外部状态, 即此时被配置为开漏模式的 I/O 口还可作为输入 I/O 口。这种方式的下拉与准双向口相同。 开漏端口带有一个施密特触发输入以及一个干扰抑制电路。 输出端口配置如下图所示: 端口 引脚 端口锁存数据 输入数据 干扰抑制 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 232 - STC8A8K64D4 系列技术手册 9.3.5 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 新增 4.1K 上拉电阻 STC8 系列所有的 I/O 口内部均可使能一个大约 4.1K 的上拉电阻(由于制造误差,上拉电阻的范围 可能为 3K~5K) VCC VCC VCC VCC 新增 4.1K 上拉电阻 2个CPU 时钟延时 强 极弱 弱 端口 引脚 端口锁存数据 PxPU控制位 输入数据 干扰抑制 端口上拉电阻控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0PU FE10H P07PU P06PU P05PU P04PU P03PU P02PU P01PU P00PU P1PU FE11H P17PU P16PU P15PU P14PU P13PU P12PU P11PU P10PU P2PU FE12H P27PU P26PU P25PU P24PU P23PU P22PU P21PU P20PU P3PU FE13H P37PU P36PU P35PU P34PU P33PU P32PU P31PU P30PU P4PU FE14H P47PU P46PU P45PU P44PU P43PU P42PU P41PU P40PU P5PU FE15H - - - P54PU P53PU P52PU P51PU P50PU P6PU FE16H P67PU P66PU P65PU P64PU P63PU P62PU P61PU P60PU P7PU FE17H P77PU P76PU P75PU P74PU P73PU P72PU P71PU P70PU 端口内部4.1K上拉电阻控制位(注:P3.0和P3.1口上的上拉电阻可能会略小一些) 0:禁止端口内部的 4.1K 上拉电阻 1:使能端口内部的 4.1K 上拉电阻 9.3.6 如何设置 I/O 口对外输出速度 当用户需要 I/O 口对外输出较快的频率时,可通过加大 I/O 口驱动电流以及增加 I/O 口电平转换速度 以达到提高 I/O 口对外输出速度 设置 PxSR 寄存器,可用于控制 I/O 口电平转换速度,设置为 0 时相应的 I/O 口为快速翻转,设置为 1 时为慢速翻转。 设置 PxDR 寄存器,可用于控制 I/O 口驱动电流大小,设置为 1 时 I/O 输出为一般驱动电流,设置 为 0 时为强驱动电流 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 233 - STC8A8K64D4 系列技术手册 9.3.7 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 如何设置 I/O 口电流驱动能力 若需要改变 I/O 口的电流驱动能力,可通过设置 PxDR 寄存器来实现 设置 PxDR 寄存器,可用于控制 I/O 口驱动电流大小,设置为 1 时 I/O 输出为一般驱动电流,设置 为 0 时为强驱动电流 9.3.8 如何降低 I/O 口对外辐射 由于设置 PxSR 寄存器,可用于控制 I/O 口电平转换速度,设置 PxDR 寄存器,可用于控制 I/O 口驱 动电流大小 当需要降低 I/O 口对外的辐射时,需要将 PxSR 寄存器设置为 1 以降低 I/O 口电平转换速度,同时需 要将 PxDR 寄存器设为 1 以降低 I/O 驱动电流,最终达到降低 I/O 口对外辐射 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 234 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 深圳国芯人工智能有限公司 094H 093H 092H 091H 096H 095H 0B2H 0B1H 0B4H 0B3H 0CAH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 235 - STC8A8K64D4 系列技术手册 P5M1 P6M0 P6M1 P7M0 P7M1 官方网站: www.STCAI.com DATA DATA DATA DATA DATA 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 $ 技术支持: 19864585985 选型顾问: 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; P1M0 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 236 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 237 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 MOV MOV 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 去纯技术交流论坛:www.STCAIMCU.com - 238 - STC8A8K64D4 系列技术手册 9.5 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 一种典型三极管控制电路 如果上拉控制,建议加上拉电阻 R1(3.3K~10K),如果不加上拉电阻 R1(3.3K~10K),建议 R2 的值在 15K 以上,或用强推挽输出。 9.6 典型发光二极管控制电路 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 239 - STC8A8K64D4 系列技术手册 9.7 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 器件时,如果相应的 I/O 口是输入,可在该 I/O 口上串接一个隔离二极管,隔 离高压部分。外部信号电压高于单片机工作电压时截止,I/O 口因内内部上拉到高电平,所以读 I/O 口状态是 高电平;外部信号电压为低时导通,I/O 口被钳位在 0.7V,小于 0.8V 时单片机读 I/O 口状态是低电平。 STC 的 3V 单片机连接 5V 器件时,如果相应的 I/O 口是输出,可用一个 NPN 三极管隔离,电路如下: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 240 - STC8A8K64D4 系列技术手册 9.8 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 如何让 I/O 口上电复位时为低电平 传统 8051 单片机上电复位时普通 I/O 口为弱上拉(准双向口)高电平输出,而很多实际应用要求上电时某 些 I/O 口为低电平输出,否则所控制的系统(如马达)就会误动作,新一代 STC8A8K64D4 系列和 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 去纯技术交流论坛:www.STCAIMCU.com - 241 - STC8A8K64D4 系列技术手册 9.9 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 利用 74HC595 驱动 8 个数码管(串行扩展,3 根线)的线路图 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 242 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 9.10 I/O 口直接驱动 LED 数码管应用线路图 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 243 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 9.11 用 STC 系列 MCU 的 I/O 口直接驱动段码 LCD 当产品需要段码 LCD 显示时,如果使用不带 LCD 驱动器的 MCU,则需要外接 LCD 驱动 IC,这会 增加成本。事实上,很多小项目,比如大量的小家电,需要显示的段码不多,常见的是 4 个 8 带小数点 或时钟的冒号“:”,这样如果使用 IO 口直接扫描显示,则会降低成本,工作更可靠。 但是,本方案不合适驱动太多的段( 占用 IO 太多),也不合适非常低功耗的场合(驱动会有几百 uA 电流)。 段码 LCD 驱动简单原理:如图 1 所示。 LCD 是一种特殊的液态晶体,在电场的作用下晶体的排列方向会发生扭转,因而改变其透光性,从 而可以看到显示内容。LCD 有一个扭转电压阀值,当 LCD 两端电压高于此阀值时,显示内容,低于此 阀值时,不显示。通常 LCD 有 3 个参数:工作电压、DUTY(对应 COM 数)和 BIAS(即偏压,对应 阀值),比如 3.0V、1/4 DUTY、1/3 BIAS,表示 LCD 显示电压为 3.0V,4 个 COM,阀值大约是 1.5V, 当加在某段 LCD 两端电压为 3.0V 时显示,而加 1.0V 时不显示。但是 LCD 对于驱动电压的反应不是很 敏感的,比如加 2V 时,可能会微弱显示,这就是通常说的“鬼影”。所以要保证驱动显示时,要大于阀 值电压比较多,而不显示时,要用比阀值小比较多的电压。 注意:LCD 要用交流驱动,其两端不能加直流电压,否则时间稍长就会损坏,所以要保证加在 LCD 两端的驱动电压的平均电压为 0。LCD 使用时分割扫描法,任何时候一个 COM 扫描有效,另外的 COM 处于无效状态。 驱动 1/4Duty 1/2BIAS 3V 的方案电路见图 1,LCD 扫描原理见图 3,MCU 为 3.0V 或 3.3V 工作,并 且每个 COM 都串一个 20K 电阻接到一个电容 C1,RC 滤波后得到一个中点电压 1/2VDD。在轮到某个 COM 扫描时,连接的 IO 设置成推挽输出,其余 COM 设置成高阻,如果与本 COM 连接的 SEG 不显示, 则 SEG 输出与 COM 同相,如果显示,则反相。扫描完后,这个 COM 的 IO 就设置成高阻。每个 COM 通过 20K 电阻连接到电容 C1 上的 1/2VDD 电压,而 SEG 根据是否显示输出高低电平,这样加在 LCD 段上的电压,显示时是+-VDD,不显示时是+-1/2VDD,保证了 LCD 两端平均直流电压为 0。 驱动 1/4Duty 1/3BIAS 3V 的方案电路见图 4,LCD 扫描原理见图 5,MCU 为 5V 工作,SEG 接的 IO 通过电阻分压输出 1.5V、3.5V,COM 接的 IO 通过电阻分压输出 0.5V、2.5V(高阻时)、4.5V,分压电 阻公共点接到一个电容 C1,RC 滤波后得到一个中点电压 1/2VDD。在轮到某个 COM 扫描时,设置成推 挽输出,如果与本 COM 连接的 SEG 不显示,则 SEG 输出与 COM 同相,如果显示,则反相。扫描完后, 这个 COM 的 IO 就设置成高阻,这样这个 COM 就通过 47K 电阻连接到 2.5V 电压,而 SEG 根据是否显 示输出高低电平,这样加在 LCD 上的电压,显示时是+-3.0V,不显示时是+-1.0V,完全满足 LCD 的扫 描要求。 当需要睡眠省电时,把所有 COM 和 SEG 驱动 IO 全部输出低电平,LCD 驱动部分不会增加额 外电流。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 244 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 图 1:驱动 1/4Duty 1/2BIAS 3V LCD 的电路 图 2:段码名称图 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 245 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 图 3:1/4Duty 1/2BIAS 扫描原理图 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 246 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 图 4:驱动 1/4Duty 1/3BIAS 3V LCD 的电路 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 247 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 图 5:1/4Duty 1/3BIAS 扫描原理图 为了使用方便,显示内容放在一个显存中,其中的各个位与 LCD 的段一一对应,见图 6。 图 6:LCD 真值表和显存影射表 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 248 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 图 7:驱动效果照片 本 LCD 扫描程序仅需要两个函数: 1、 LCD 段码扫描函数 void LCD_scan(void) 程序隔一定的时间调用这个函数,就会将 LCD 显示缓冲的内容显示到 LCD 上,全部扫描一次需要 8 个 调用周期,调用间隔一般是 1~2ms,假如使用 1ms,则扫描周期就是 8ms,刷新率就是 125HZ。 2、 LCD 段码显示缓冲装载函数 void LCD_load(u8 n,u8 dat) 本函数用来将显示的数字或字符放在 LCD 显示缓冲中,比如 LCD_load(1,6),就是要在第一个数字位置 显示数字 6,支持显示 0~9,A~F,其它字符用户可以自己添加。 另外,用宏来显示、熄灭或闪烁冒号或小数点。 汇编代码 ;用 STC8 系列测试 I/O 直接驱动段码 LCD(6 个 8 字 LCD, 1/4 Dutys, 1/3 bias)。 ;上电后显示一个时间(时分秒). ;************************************************************ P0M1 DATA 0x93 P0M0 DATA 0x94 P1M1 DATA 0x91 P1M0 DATA 0x92 P2M1 DATA 0x95 P2M0 DATA 0x96 P3M1 DATA 0xB1 P3M0 DATA 0xB2 P4M1 DATA 0xB3 P4M0 DATA 0xB4 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 249 - STC8A8K64D4 系列技术手册 P5M1 P5M0 P6M1 P6M0 P7M1 P7M0 AUXR INT_CLKO IE2 P4 T2H T2L DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 0xC9 0xC 0xCB 0xCC 0xE1 0xE2 0x8E 0x8F 0xAF 0xC0 0xD6 0xD7 ;************************************************************ DIS_BLACK EQU 010H DIS_ EQU 011H DIS_A EQU 00AH DIS_B EQU 00BH DIS_C EQU 00CH DIS_D EQU 00DH DIS_E EQU 00EH DIS_F EQU 00FH B_2ms B_Second cnt_500ms second minute hour scan_index BIT BIT DATA DATA DATA DATA DATA 20H.0 20H.1 30H 31H 32H 33H 34H ;2ms 信号 ;秒信号 LCD_buff DATA 40H ;40H~47H ;************************************************************ ORG 0000H LJMP F_Main ORG LJMP 000BH F_Timer0_Interrupt ;************************************************************ ORG 0100H F_Main: CLR A MOV P3M1, A ;设置为准双向口 MOV P3M0, A MOV P5M1, A ;设置为准双向口 MOV P5M0, A MOV MOV ANL ORL ORL ANL MOV MOV USING 深圳国芯人工智能有限公司 P1M1, #0 P1M0, #0ffh P2M1, #NOT 0f0h P2M0, #0f0h P2M1, #00fH P2M0, #0f0H SP, #0D0H PSW, #0 0 ; segment 设置为推挽输出 ; segment 设置为推挽输出 ;全部 COM 输出高阻, COM 为中点电压 ;选择第 0 组 R0~R7 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 250 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ;************************************************************ MOV R2, #8 MOV R0, #LCD_buff L_ClearLcdRam: MOV @R0, #0 INC R0 DJNZ R2, L_ClearLcdRam ; ; LCALL SETB F_Timer0_init EA ORL ORL LCD_buff, #020H LCD_buff, #002H ;显示时分间隔: ;显示分秒间隔: MOV MOV MOV LCALL hour, #12 minute, #00 second, #00 F_LoadRTC ;显示时间 ;************************************************************ L_Main_Loop: JNB B_2ms, L_Main_Loop ;2ms 节拍到 CLR B_2ms INC MOV CJNE cnt_500ms A, cnt_500ms A, #250, L_Main_Loop MOV cnt_500ms, #0; XRL XRL LCD_buff, #020H LCD_buff, #002H CPL JNB B_Second B_Second, L_Main_Loop INC MOV CJNE MOV INC MOV CJNE MOV INC MOV CJNE MOV second A, second A, #60, L_Main_Load second, #0 minute A, minute A, #60, L_Main_Load minute, #0; hour A, hour A, #24, L_Main_Load hour, #0 LCALL LJMP F_LoadRTC L_Main_Loop ;500ms 到 ;闪烁时分间隔: ;闪烁分秒间隔: ; 1 分钟到 ;24 小时到 L_Main_Load: ;显示时间 ;************************************************************ F_Timer0_init: CLR ANL SETB ORL 深圳国芯人工智能有限公司 TR0 TMOD, #0f0H ET0 TMOD, #0 ; 停止计数 ; 允许中断 ; 工作模式, 0: 16 位自动重装 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 251 - STC8A8K64D4 系列技术手册 ANL ORL MOV MOV SETB RET 官方网站: www.STCAI.com INT_CLKO, #NOT 0x01 AUXR, #0x80 TH0, #HIGH (-22118) TL0, #LOW (-22118) TR0 技术支持: 19864585985 选型顾问: 13922805190 ; 不输出时钟 ; 1T mode ; 2ms ; ; 开始运行 ;************************************************************ F_Timer0_Interrupt: ;Timer0 1ms 中断函数 PUSH PSW ;PSW 入栈 PUSH ACC ;ACC 入栈 PUSH AR0 PUSH AR7 PUSH DPH PUSH DPL LCALL SETB F_LCD_scan B_2ms POP POP POP POP POP POP RETI DPL DPH AR7 AR0 ACC PSW ;ACC 出栈 ;PSW 出栈 ;******************** 显示时间 ************************** F_LoadRTC: MOV R6, #1 ;LCD_load(1,hour/10); MOV A, hour MOV B, #10 DIV AB MOV R7, A LCALL F_LCD_load ;R6 为第几个数字,为 1~6,R7 为要显示的数字 MOV MOV MOV DIV MOV LCALL R6, #2 A, hour B, #10 AB R7, B F_LCD_load ;LCD_load(2,hour%10); MOV MOV MOV DIV MOV LCALL R6, #3 A, minute B, #10 AB R7, A F_LCD_load ;LCD_load(3,minute/10); MOV MOV MOV DIV MOV LCALL R6, #4 A, minute B, #10 AB R7, B F_LCD_load ;LCD_load(4,minute%10); MOV MOV R6, #5 A, second ;LCD_load(5,second/10); 深圳国芯人工智能有限公司 ;R6 为第几个数字,为 1~6,R7 为要显示的数字 ;R6 为第几个数字,为 1~6,R7 为要显示的数字 ;R6 为第几个数字,为 1~6,R7 为要显示的数字 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 252 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV DIV MOV LCALL B, #10 AB R7, A F_LCD_load MOV MOV MOV DIV MOV LCALL R6, #6 A, second B, #10 AB R7, B F_LCD_load 技术支持: 19864585985 选型顾问: 13922805190 ;R6 为第几个数字,为 1~6,R7 为要显示的数字 ;LCD_load(6,second%10); ;R6 为第几个数字,为 1~6,R7 为要显示的数字 RET ;************************************************************ T_COM: DB 008H, 004H, 002H, 001H F_LCD_scan: MOV CLR RRC MOV ADD MOV ORL ANL A, scan_index C A R7, A A, #LCD_buff R0, A P2M1, #00fH P2M0, #0f0H MOV JNB MOV CPL MOV MOV ADD MOV MOV ANL CPL MOV SJMP A, scan_index ACC.0, L_LCD_Scan2 A, @R0 A P1, A A, R0 A, #4 R0, A A, @R0 A, #0f0H A P2, A L_LCD_Scan3 MOV MOV MOV ADD MOV MOV ANL MOV A, @R0 P1, A A, R0 A, #4 R0, A A, @R0 A, #0f0H P2, A MOV MOV MOVC ORL CPL ANL DPTR, #T_COM A, R7 A, @A+DPTR P2M0, A A P2M1, A L_LCD_Scan2: ;j = scan_index >> 1; ;R7 = j ;R0 = LCD_buff[j] ;全部 COM 输出高阻, COM 为中点电压 ;if(scan_index & 1) //反相扫描 ;P1 = ~LCD_buff[j]; ;P2 = ~(LCD_buff[j|4] & 0xf0); ;正相扫描 ;P1 = LCD_buff[j]; ;P2 = (LCD_buff[j|4] & 0xf0); L_LCD_Scan3: 深圳国芯人工智能有限公司 ;某个 COM 设置为推挽输出 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 253 - STC8A8K64D4 系列技术手册 INC MOV CJNE MOV 官方网站: www.STCAI.com scan_index A, scan_index A, #8, L_QuitLcdScan scan_index, #0 技术支持: 19864585985 ;if(++scan_index == 8) 选型顾问: 13922805190 scan_index = 0; L_QuitLcdScan: RET ;******************* 标准字库 ************************** T_Display: ; 0 1 2 3 4 5 6 7 8 9 A B C D E F DB 03FH,006H,05BH,04FH,066H,06DH,07DH,007H,07FH,06FH,077H,07CH,039H,05EH,079H,071H ; black DB 000H,040H ;****************** 对第 1~6 数字装载显示函数 算法简单 *************************** F_LCD_load: ;R6 为第几个数字,为 1~6,R7 为要显示的数字 MOV DPTR, #T_Display ;i = t_display[dat]; MOV A, R7 MOVC A, @A+DPTR MOV B, A ;要显示的数字 MOV CJNE MOV MOV MOV MOV MOV A, R6 A, #1, L_NotLoadChar1 R0, A, @R0 C, B.3 ACC.6, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.2 ACC.6, C C, B.4 ACC.7, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.1 ACC.6, C C, B.6 ACC.7, C @R0, A INC MOV MOV MOV MOV MOV MOV RET R0 A, @R0 C, B.0 ACC.6, C C, B.5 ACC.7, C @R0, A L_NotLoadChar1: CJNE MOV 深圳国芯人工智能有限公司 #LCD_buff ;D ;C ;E ;B ;G ;A ;F A, #2, L_NotLoadChar2 R0,#LCD_buff 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 254 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV A, @R0 C, B.3 ACC.4, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.2 ACC.4, C C, B.4 ACC.5, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.1 ACC.4, C C, B.6 ACC.5, C @R0, A INC MOV MOV MOV MOV MOV MOV RET R0 A, @R0 C, B.0 ACC.4, C C, B.5 ACC.5, C @R0, A L_NotLoadChar2: CJNE MOV MOV MOV MOV MOV A, #3, L_NotLoadChar3 R0,#LCD_buff A, @R0 C, B.3 ACC.2, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.2 ACC.2, C C, B.4 ACC.3, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.1 ACC.2, C C, B.6 ACC.3, C @R0, A INC MOV MOV MOV MOV R0 A, @R0 C, B.0 ACC.2, C C, B.5 深圳国芯人工智能有限公司 技术支持: 19864585985 选型顾问: 13922805190 ;D ;C ;E ;B ;G ;A ;F ;D ;C ;E ;B ;G ;A ;F 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 255 - STC8A8K64D4 系列技术手册 MOV MOV RET L_NotLoadChar3: CJNE MOV MOV MOV MOV MOV 官方网站: www.STCAI.com A, #4, L_NotLoadChar4 R0,#LCD_buff A, @R0 C, B.3 ACC.0, C @R0, A R0 A, @R0 C, B.2 ACC.0, C C, B.4 ACC.1, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.1 ACC.0, C C, B.6 ACC.1, C @R0, A INC MOV MOV MOV MOV MOV MOV RET R0 A, @R0 C, B.0 ACC.0, C C, B.5 ACC.1, C @R0, A A, #5, L_NotLoadChar5 R0,#LCD_buff+4 A, @R0 C, B.3 ACC.6, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.2 ACC.6, C C, B.4 ACC.7, C @R0, A INC MOV MOV MOV MOV MOV R0 A, @R0 C, B.1 ACC.6, C C, B.6 ACC.7, C 深圳国芯人工智能有限公司 选型顾问: 13922805190 ACC.3, C @R0, A INC MOV MOV MOV MOV MOV MOV L_NotLoadChar4: CJNE MOV MOV MOV MOV MOV 技术支持: 19864585985 ;D ;C ;E ;B ;G ;A ;F ;D ;C ;E ;B ;G 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 256 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV @R0, A INC MOV MOV MOV MOV MOV MOV RET R0 A, @R0 C, B.0 ACC.6, C C, B.5 ACC.7, C @R0, A L_NotLoadChar5: CJNE MOV MOV MOV MOV MOV A, #6, L_NotLoadChar6 R0,#LCD_buff+4 A, @R0 C, B.3 ACC.4, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.2 ACC.4, C C, B.4 ACC.5, C @R0, A INC MOV MOV MOV MOV MOV MOV R0 A, @R0 C, B.1 ACC.4, C C, B.6 ACC.5, C @R0, A INC MOV MOV MOV MOV MOV MOV RET L_NotLoadChar6: RET R0 A, @R0 C, B.0 ACC.4, C C, B.5 ACC.5, C @R0, A 技术支持: 19864585985 选型顾问: 13922805190 ;A ;F ;D ;C ;E ;B ;G ;A ;F E N D C 语言代码 /*****************功能说明****************** 用 STC15 系列测试 I/O 直接驱动段码 LCD(6 个 8 字 LCD, 1/4 Dutys, 1/3 bias)。 上电后显示一个时间(时分秒). P3.2 对地接一个开关,用来进入睡眠或唤醒. ******************************************/ #include "reg51.h" #include "intrins.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 257 - STC8A8K64D4 系列技术手册 typedef typedef typedef unsigned char unsigned int unsigned long 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 u8; u16; u32; sfr AUXR = 0x8e; sfr P1M1 = 0x91; sfr P1M0 = 0x92; sfr P2M1 = 0x95; sfr P2M0 = 0x96; /********************本地常量声明**************************/ #define MAIN_Fosc 11059200L //定义主时钟 #define DIS_BLACK #define DIS_ #define DIS_A #define DIS_B #define DIS_C #define DIS_D #define DIS_E #define DIS_F 0x10 0x11 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F #define LCD_SET_DP2 #define LCD_CLR_DP2 #define LCD_FLASH_DP2 LCD_buff[0] |= 0x08 LCD_buff[0] &= ~0x08 LCD_buff[0] ^= 0x08 #define LCD_SET_DP4 #define LCD_CLR_DP4 #define LCD_FLASH_DP4 LCD_buff[4] |= 0x80 LCD_buff[4] &= ~0x80 LCD_buff[4] ^= 0x80 #define LCD_SET_2M #define LCD_CLR_2M #define LCD_FLASH_2M LCD_buff[0] |= 0x20 LCD_buff[0] &= ~0x20 LCD_buff[0] ^= 0x20 #define LCD_SET_4M #define LCD_CLR_4M #define LCD_FLASH_4M LCD_buff[0] |= 0x02 LCD_buff[0] &= ~0x02 LCD_buff[0] ^= 0x02 #define LCD_SET_DP5 #define LCD_CLR_DP5 #define LCD_FLASH_DP5 LCD_buff[4] |= 0x20 LCD_buff[4] &= ~0x20 LCD_buff[4] ^= 0x20 #define P1n_standard(bitn) #define P1n_push_pull(bitn) #define P1n_pure_input(bitn) #define P1n_open_drain(bitn) P1M1 &= ~(bitn), P1M0 &= ~(bitn) P1M1 &= ~(bitn), P1M0 |= (bitn) P1M1 |= (bitn), P1M0 &= ~(bitn) P1M1 |= (bitn), P1M0 |= (bitn) #define P2n_standard(bitn) #define P2n_push_pull(bitn) #define P2n_pure_input(bitn) #define P2n_open_drain(bitn) P2M1 &= ~(bitn), P2M0 &= ~(bitn) P2M1 &= ~(bitn), P2M0 |= (bitn) P2M1 |= (bitn), P2M0 &= ~(bitn) P2M1 |= (bitn), P2M0 |= (bitn) /********************本地变量声明**************************/ u8 cnt_500ms; u8 second,minute,hour; bit B_Second; bit B_2ms; u8 LCD_buff[8]; u8 scan_index; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 258 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 /********************本地函数声明**************************/ void LCD_load(u8 n,u8 dat); void LCD_scan(void); void LoadRTC(void); void delay_ms(u8 ms); /********************主函数**************************/ void main(void) { u8 i; AUXR = 0x80; TMOD = 0x00; TL0 = (65536 - (MAIN_Fosc / 500)); TH0 = (65536 - (MAIN_Fosc / 500)) >> 8; TR0 = 1; ET0 = 1; EA = 1; //初始化 LCD 显存 for(i=0; i= 250) { cnt_500ms = 0; // LCD_FLASH_2M; // LCD_FLASH_4M; B_Second = ~B_Second; if(B_Second) { if(++second >= 60) { second = 0; if(++minute >= 60) { minute = 0; if(++hour >= 24) hour = 0; } } LoadRTC(); 深圳国芯人工智能有限公司 //500ms 到 //闪烁时分间隔: //闪烁分秒间隔: //1 分钟到 //1 小时到 //24 小时到 //显示时间 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 259 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 } } if(!P32) { LCD_CLR_2M; LCD_CLR_4M; LCD_load(1,DIS_BLACK); LCD_load(2,DIS_BLACK); LCD_load(3,0); LCD_load(4,0x0F); LCD_load(5,0x0F); LCD_load(6,DIS_BLACK); //键按下,准备睡眠 //显示时分间隔: //显示分秒间隔: while(!P32) delay_ms(10); delay_ms(50); while(!P32) delay_ms(10); //等待释放按键 TR0 = 0; IE0 = 0; EX0 = 1; IT0 = 1; //关闭定时器 //外中断 0 标志位 //INT0 Enable //INT0 下降沿中断 P1n_push_pull(0xff); P2n_push_pull(0xff); P1 = 0; P2 = 0; //com 和 seg 全部输出 0 PCON |= 0x02; _nop_(); _nop_(); _nop_(); //Sleep LCD_SET_2M; LCD_SET_4M; LoadRTC(); TR0 = 1; while(!P32) delay_ms(10); delay_ms(50); while(!P32) delay_ms(10); //显示时分间隔: //显示分秒间隔: //显示时间 //打开定时器 //等待释放按键 //再次等待释放按键 //再次等待释放按键 } } } } /********************延时函数**************************/ void delay_ms(u8 ms) { unsigned int i; do{ i = MAIN_Fosc / 13000; while(--i); //14T per loop }while(--ms); } /********************* Timer0 中断函数************************/ void timer0_int (void) interrupt 1 { LCD_scan(); 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 260 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 B_2ms = 1; } /********************* INT0 中断函数 *************************/ void INT0_int (void) interrupt 0 { EX0 = 0; IE0 = 0; } /****************** LCD 段码扫描函数 ***************************/ void LCD_scan(void) //5us @22.1184MHZ { u8 code T_COM[4]={0x08,0x04,0x02,0x01}; u8 j; j = scan_index >> 1; P2n_pure_input(0x0f); if(scan_index & 1) { P1 = ~LCD_buff[j]; P2 = ~(LCD_buff[j|4] & 0xf0); } else { P1 = LCD_buff[j]; P2 = LCD_buff[j|4] & 0xf0; } P2n_push_pull(T_COM[j]); if(++scan_index >= 8) scan_index = 0; //全部 COM 输出高阻, COM 为中点电压 //反相扫描 //正相扫描 //某个 COM 设置为推挽输出 } /****************** 对第 1~6 数字装载显示函数 ***************************/ void LCD_load(u8 n, u8 dat) //n 为第几个数字,dat 为要显示的数字 { u8 code t_display[]={ //标准字库 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7C,0x39,0x5E,0x79,0x71, //black 0x00,0x40 }; u8 code T_LCD_mask[4] = {~0xc0,~0x30,~0x0c,~0x03}; u8 code T_LCD_mask4[4] = {~0x40,~0x10,~0x04,~0x01}; u8 i,k; u8 *p; if((n == 0) || (n > 6)) return; i = t_display[dat]; if(n >2*n); p++; k = 0; if(i & 0x04) k |= 0x40; if(i & 0x10) k |= 0x80; *p = (*p & T_LCD_mask[n]) | (k>>2*n); p++; k = 0; if(i & 0x02) k |= 0x40; if(i & 0x40) k |= 0x80; *p = (*p & T_LCD_mask[n]) | (k>>2*n); p++; k = 0; if(i & 0x01) k |= 0x40; if(i & 0x20) k |= 0x80; *p = (*p & T_LCD_mask[n]) | (k>>2*n); 技术支持: 19864585985 选型顾问: 13922805190 //D //C //E //B //G //A //F } /********************显示时间 **************************/ void LoadRTC(void) { LCD_load(1,hour/10); LCD_load(2,hour%10); LCD_load(3,minute/10); LCD_load(4,minute%10); LCD_load(5,second/10); LCD_load(6,second%10); } 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 262 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 10 指令系统 10.1 寻址方式 寻址方式是每一种计算机的指令集中不可缺少的部分。寻址方式规定了数据的来源和目的地。对不同的 程序指令,来源和目的地的规定也会不同。在 STC 单片机中的寻址方式可概括为:        10.1.1 立即寻址 直接寻址 间接寻址 寄存器寻址 相对寻址 变址寻址 位寻址 立即寻址 立即寻址也称立即数,它是在指令操作数中直接给出参加运算的操作数,其指令格式如下: 如:MOV A, #70H 这条指令的功能是将立即数 70H 传送到累加器 A 中。 10.1.2 直接寻址 在直接寻址方式中,指令操作数域给出的是参加运算操作数地址。直接寻址方式只能用来表示特殊功能 寄存器、内部数据寄存器和位地址空间。其中特殊功能寄存器和位地址空间只能用直接寻址方式访问。 如:ANL 70H, #48H 表示 70H 单元中的数与立即数 48H 相“与”,结果存放在 70H 单元中。其中 70H 为直接地址,表示内部 数据存储器 RAM 中的一个单元。 10.1.3 间接寻址 间接寻址采用 R0 或 R1 前添加“@”符号来表示。例如,假设 R1 中的数据是 40H,内部数据存储器 40H 单元所包含的数据为 55H,那么如下指令: MOV A, @R1 把数据 55H 传送到累加器。 10.1.4 寄存器寻址 寄存器寻址是对选定的工作寄存器 R7~R0、累加器 A、通用寄存器 B、地址寄存器和进位 C 中的数进行操 作。其中寄存器 R7~R0 由指令码的低 3 位表示,ACC、B、DPTR 及进位位 C 隐含在指令码中。因此,寄存器寻 址也包含一种隐含寻址方式。 寄存器工作区的选择由程序状态字寄存器 PSW 中的 RS1、RS0 来决定。指令操作数指定的寄存器均指当前 工作区中的寄存器。 如:INC R0 ;(R0)+1 → R0 10.1.5 相对寻址 相对寻址是将程序计数器 PC 中的当前值与指令第二字节给出的数相加,其结果作为转移指令的转移地 址。转移地址也称为转移目的地址,PC 中的当前值称为基地址,指令第二字节给出的数称为偏移量。由于目 的地址是相对于 PC 中的基地址而言,所以这种寻址方式称为相对寻址。偏移量为带符号的数,所能表示的范 围为+127 ~ –128。这种寻址方式主要用于转移指令。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 263 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 如:JC 80H 技术支持: 19864585985 选型顾问: 13922805190 ;C=1 跳转 表示若进位位 C 为 0,则程序计数器 PC 中的内容不改变,即不转移。若进位位 C 为 1,则以 PC 中的当 前值为基地址,加上偏移量 80H 后所得到的结果作为该转移指令的目的地址。 变址寻址 10.1.6 在变址寻址方式中,指令操作数指定一个存放变址基值的变址寄存器。变址寻址时,偏移量与变址基值 相加,其结果作为操作数的地址。变址寄存器有程序计数器 PC 和地址寄存器 DPTR。 如:MOVC A, @A+DPTR 表示累加器 A 为偏移量寄存器,其内容与地址寄存器 DPTR 中的内容相加,其结果作为操作数的地址,取 出该单元中的数送入累加器 A。 位寻址 10.1.7 位寻址是指对一些内部数据存储器 RAM 和特殊功能寄存器进行位操作时的寻址。在进行位操作时,借助 于进位位 C 作为位操作累加器,指令操作数直接给出该位的地址,然后根据操作码的性质对该位进行位操作。 位地址与字节直接寻址中的字节地址形式完全一样,主要由操作码加以区分,使用时应注意。 如:MOV C, 20H ;片内位单元位操作型指令 指令表 10.2 助记符 指令说明 字节 时钟 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 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 264 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 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 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 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 技术支持: 19864585985 选型顾问: 13922805190 去纯技术交流论坛:www.STCAIMCU.com - 265 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 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 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 266 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 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] 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 技术支持: 19864585985 选型顾问: 13922805190 :访问外部扩展 RAM 时,指令的执行周期与寄存器 BUS_SPEED 中的 SPEED[2:0]位有关 :对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执 行下一条指令,此时条件跳转语句的执行时间为 1 个时钟;当条件满足时,则会发生跳转,此时条件跳 转语句的执行时间为 3 个时钟。 [3] :对于条件跳转语句的执行时间会依据条件是否满足而不同。当条件不满足时,不会发生跳转而继续执 行下一条指令,此时条件跳转语句的执行时间为 2 个时钟;当条件满足时,则会发生跳转,此时条件跳 转语句的执行时间为 3 个时钟。 [1] [2] 10.3 指令详解(中文) ACALL addr11 功能: 绝对调用 说明: ACALL 指令实现无条件调用位于 addr11 参数所表示地址的子例程。在执行该指令时, 首先将 PC 的值增加 2,即使得 PC 指向 ACALL 的下一条指令,然后把 16 位 PC 的低 8 位和高 8 位依 次压入栈,同时把栈指针两次加 1。然后,把当前 PC 值的高 5 位、ACALL 指令第 1 字节的 7~5 位和第 2 字节组合起来,得到一个 16 位目的地址,该地址即为即将调用的子例程的入口地址。 要求该子例程的起始地址必须与紧随 ACALL 之后的指令处于同 1 个 2KB 的程序存储页中。 ACALL 指令在执行时不会改变各个标志位。 举例: SP 的初始值为 07H,标号 SUBRTN 位于程序存储器的 0345H 地址处,如果执行位于地址 0123H 处的指令: ACALL SUBRTN 那么 SP 变为 09H,内部 RAM 地址 08H 和 09H 单元的内容分别为 25H 和 01H,PC 值变为 0345H。 指令长度(字节): 2 执行周期: 2 二进制编码: A10 深圳国芯人工智能有限公司 A9 A8 1 0 0 0 1 国内分销商电话: 0513-5501 2928/2929/2966 A7 A6 A5 A4 A3 A2 A1 A0 去纯技术交流论坛:www.STCAIMCU.com - 267 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 注意:a10 a9 a8 是 11 位目标地址 addr11 的 A10~A8 位,a7 a6 a5 a4 a3 a2 a1 a0 是 addr11 的 A7~A0 位。 操作: ACALL (PC)←(PC)+ 2 (SP)←(SP) + 1 ((SP)) ←(PC7-0) (SP)←(SP) + 1 ((SP))←(PC15-8) (PC10-0)←页码地址 ADD A, 功能: 加法 说明: ADD 指令可用于完成把 src-byte 所表示的源操作数和累加器 A 的当前值相加。并将结果置于累 加器 A 中。根据运算结果,若第 7 位有进位则置进位标志为 1,否则清零;若第 3 位有进位则置 辅助进位标志为 1,否则清零。如果是无符号整数相加则进位置位,显示当前运算结果发生溢出。 如果第 6 位有进位生成而第 7 位没有,或第 7 位有进位生成而第 6 位没有,则置 OV 为 1,否则 OV 被清零。在进行有符号整数的相加运算的时候,OV 置位表示两个正整数之和为一负数,或 是两个负整数之和为一正数。 本类指令的源操作数可接受 4 种寻址方式:寄存器寻址、直接寻址、寄存器间接寻址和立即寻 址。 举例: 假设累加器 A 中的数据为 0C3H(11000011B),R0 的值为 0AAH(10101010B)。执行如下指令: ADD A, R0 累加器 A 中的结果为 6DH(01101101B),辅助进位标志 AC 被清零,进位标志 C 和溢出标志 OV 被置 1。 ADD A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 1 0 1 r r r 0 0 1 0 1 0 1 1 i ADD (A)← (A) + (Rn) ADD A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 0 1 direct address ADD (A)← (A) + (direct) ADD A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 1 0 ADD (A)← (A) + ((Ri)) ADD A, #data 指令长度(字节): 2 执行周期: 1 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 268 - STC8A8K64D4 系列技术手册 二进制编码: 操作: 0 官方网站: www.STCAI.com 0 1 0 0 1 0 技术支持: 19864585985 0 选型顾问: 13922805190 immediate data ADD (A)← (A) + #data ADDC A, 功能: 带进位的加法 说明: 执行 ADDC 指令时,把 src-byte 所代表的源操作数连同进位标志一起加到累加器 A 上,并将结 果置于累加器 A 中。根据运算结果,若在第 7 位有进位生成,则将进位标志置 1,否则清零;若 在第 3 位有进位生成,则置辅助进位标志为 1,否则清零。如果是无符号数整数相加,进位的置 位显示当前运算结果发生溢出。 如果第 6 位有进位生成而第 7 位没有,或第 7 位有进位生成而第 6 位没有,则将 OV 置 1,否则 将 OV 清零。在进行有符号整数相加运算的时候,OV 置位,表示两个正整数之和为一负数,或 是两个负整数之和为一正数。 本类指令的源操作数允许 4 种寻址方式:寄存器寻址、直接寻址、寄存器间接寻址和立即寻址。 举例: 假设累加器 A 中的数据为 0C3H(11000011B),R0 的值为 0AAH(10101010B),进位标志为 1,执 行如下指令: ADDC A,R0 累加器 A 中的结果为 6EH(01101110B),辅助进位标志 AC 被清零,进位标志 C 和溢出标志 OV 被置 1。 ADDC A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 1 1 1 r r r 0 1 0 1 0 1 1 i 0 1 0 0 ADDC (A)← (A) + (C) + (Rn) ADDC A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 0 1 1 direct address ADDC (A)← (A) + (C) + (direct) ADDC A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 1 1 ADDC (A)← (A) + (C) + ((Ri)) ADDC A, #data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 0 1 1 immediate data ADDC (A)← (A) + (C) + #data 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 269 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 AJMP addr11 功能: 绝对跳转 说明: AJMP 指令用于将程序转到相应的目的地址去执行,该地址在程序执行过程之中产生,由 PC 值 (两次递增之后)的高 5 位、操作码的 7~5 位和指令的第 2 字节连接形成。要求跳转的目的地 址和 AJMP 指令的后一条指令的第 1 字节位于同一 2KB 的程序存储页内。 举例: 假设标号 JMPADR 位于程序存储器的 0123H,指令: AJMP JMPADR 位于 0345H,执行完该指令后 PC 值变为 0123H。 指令长度(字节): 2 执行周期: 2 二进制编码: A10 A9 A8 0 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 注意:目的地址的 A10-A8=a10~a8,A7-A0=a7~a0。 操作: AJMP (PC)←(PC)+ 2 (PC10-0)←page address ANL , 功能: 对字节变量进行逻辑与运算 说明: ANL 指令将由和所指定的两个字节变量逐位进行逻辑与运算,并将运算结 果存放在所指定的目的操作数中。该指令的执行不会影响标志位。 两个操作数组合起来允许 6 种寻址模式。当目的操作数为累加器时,源操作数允许寄存器寻址、 直接寻址、寄存器间接寻址和立即寻址。当目的操作数是直接地址时,源操作数可以是累加器 或立即数。 注意:当该指令用于修改输出端口时,读入的原始数据来自于输出数据的锁存器而非输入引脚。 举例: 如果累加器的内容为 0C3H(11000011B),寄存器 0 的内容为 55H(01010101B),那么指令: ANL A,R0 执行结果是累加器的内容变为 41H(01000001H)。 当目的操作数是可直接寻址的数据时,ANL 指令可用来把任何 RAM 单元或者硬件寄存器中的 某些位清零。屏蔽字节将决定哪些位将被清零。屏蔽字节可能是常数,也可能是累加器在计算 过程中产生。如下指令: ANL Pl, #01110011B 将端口 1 的位 7、位 3 和位 2 清零。 ANL A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 1 0 1 1 r r r 0 1 0 1 ANL (A)← (A) ∧ (Rn) ANL A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 0 1 direct address ANL 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 270 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 (A)← (A) ∧ (direct) ANL A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 1 0 1 0 1 1 i 0 1 0 0 immediate data 0 0 1 0 direct address 0 1 1 direct address ANL (A)← (A) ∧ ((Ri)) ANL A, #data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 0 1 ANL (A)← (A) ∧ #data ANL direct, A 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 0 1 ANL (direct)←(direct) ∧ (A) ANL direct, #data 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 1 0 1 0 immediate data ANL (direct)←(direct) ∧ #data ANL C, 功能: 对位变量进行逻辑与运算 说明: 如果 src-bit 表示的布尔变量为逻辑 0,清零进位标志位;否则,保持进位标志的当前状态不变。 在汇编语言程序中,操作数前面的“/”符号表示在计算时需要先对被寻址位取反,然后才作为 源操作数,但源操作数本身不会改变。该指令在执行时不会影响其他各个标志位。 源操作数只能采取直接寻址方式。 举例: 下面的指令序列当且仅当 P1.0=1、ACC.7=1 和 OV=0 时,将进位标志 C 置 1: MOV C, P1.0 ; LOAD CARRY WITH INPUT PIN STATE ANL C, ACC.7 ; AND CARRY WITH ACCUM. BIT.7 ANL C, /OV ;AND WITH INVERSE OF OVERFLOW FLAG ANL C, bit 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 0 0 0 0 1 0 bit address ANL (C) ←(C) ∧ (bit) ANL C, /bit 指令长度(字节): 2 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 271 - STC8A8K64D4 系列技术手册 执行周期: 二进制编码: 操作: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 2 1 0 1 1 0 0 0 0 bit address ANL (C)← (C) ∧( ) CJNE , , rel 功能: 若两个操作数不相等则转移 说明: CJNE 首先比较两个操作数的大小,如果二者不等则程序转移。目标地址由位于 CJNE 指 令最后 1 个字节的有符号偏移量和 PC 的当前值(紧邻 CJNE 的下一条指令的地址)相加 而成。如果目标操作数作为一个无符号整数,其值小于源操作数对应的无符号整数,那么 将进位标志置 1,否则将进位标志清零。但操作数本身不会受到影响。 和组合起来,允许 4 种寻址模式。累加器 A 可以与任何可直接寻址的 数据或立即数进行比较,任何间接寻址的 RAM 单元或当前工作寄存器都可以和立即常数 进行比较。 举例: 设累加器 A 中值为 34H,R7 包含的数据为 56H。如下指令序列: CJNE R7,#60H, NOT_EQ ; ... ...... NOT_EQ: JC ; ; R7 = 60H. REQ_LOW ... ; IF R7 < 60H. ...... ; R7 > 60H. 的第 1 条指令将进位标志置 1,程序跳转到标号 NOT_EQ 处。接下去,通过测试进位标志, 可以确定 R7 是大于 60H 还是小于 60H。 假设端口 1 的数据也是 34H,那么如下指令: WAIT: CJNE A,P1,WAIT 清除进位标志并继续往下执行,因为此时累加器的值也为 34H,即和 P1 口的数据相等。 (如果 Pl 端口的数据是其他的值,那么程序在此不停地循环,直到 P1 端口的数据变成 34H 为止。) CJNE A, direct, rel 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 1 0 1 1 0 1 0 1 direct address rel. address (PC) ←(PC) + 3 IF (A) < > (direct) THEN (PC) ←(PC) +relative offset IF (A) < (direct) THEN (C) ← 1 ELSE (C) ← 0 CJNE A, #data, rel 指令长度(字节): 3 执行周期: 2 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 272 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 二进制编码: 操作: 1 0 1 1 0 1 技术支持: 19864585985 选型顾问: 13922805190 0 0 immediate data rel. address r r immediate data rel. address 1 i immediate data rel. address (PC) ←(PC) + 3 IF (A) < > (data) THEN (PC) ←(PC) +relative offset IF (A) < (data) THEN (C) ← 1 ELSE (C) ← 0 CJNE Rn, #data, rel 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 1 0 1 1 1 r (PC) ←(PC) + 3 IF (Rn) < > (data) THEN (PC) ←(PC) +relative offset IF (Rn) < (data) THEN (C) ← 1 ELSE (C) ← 0 CJNE @Ri, #data, rel 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 1 0 1 1 0 1 (PC) ←(PC) + 3 IF (Ri) < > (data) THEN (PC) ←(PC) +relative offset IF (Ri) < (data) THEN (C) ← 1 ELSE (C) ← 0 CLR A 功能: 清除累加器 说明: 该指令用于将累加器 A 的所有位清零,不影响标志位。 举例: 假设累加器 A 的内容为 5CH(01011100B),那么指令: CLR A 执行后,累加器的值变为 00H(00000000B)。 指令长度(字节): 深圳国芯人工智能有限公司 1 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 273 - STC8A8K64D4 系列技术手册 执行周期: 官方网站: www.STCAI.com 选型顾问: 13922805190 1 二进制编码: 操作: 技术支持: 19864585985 1 1 1 0 0 1 0 0 CLR (A)←0 CLR bit 功能: 清零指定的位 说明: 将 bit 所代表的位清零,没有标志位会受到影响。CLR 可用于进位标志 C 或者所有可直接 寻址的位。 举例: 假设端口 1 的数据为 5DH(01011101B),那么指令: CLR P1.2 执行后,Pl 端口被设置为 59H(01011001B)。 CLR C 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 CLR (C)←0 CLR bit 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 bit address CLR (bit)←0 CPL A 功能: 累加器 A 求反 说明: 将累加器 A 的每一位都取反,即原来为 1 的位变为 0,原来为 0 的位变为 1。该指令不影 响标志位。 举例: 设累加器 A 的内容为 5CH(01011100B),那么指令: CPL A 执行后,累加器的内容变成 0A3H(10100011B)。 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 1 1 0 1 0 0 CPL (A)← ( ) CPL bit 功能: 将 bit 所表示的位求反 说明: 将 bit 变量所代表的位取反,即原来位为 1 的变为 0,原来为 0 的变为 1。没有标志位会受 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 274 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 到影响。CPL 可用于进位标志 C 或者所有可直接寻址的位。 注意:如果该指令被用来修改输出端口的状态,那么 bit 所代表的数据是端口锁存器中的 数据,而不是从引脚上输入的当前状态。 举例: 设 P1 端口的数据为 5BH(01011011B),那么指令: CPL P1.1 CPL P1.2 执行完后,Pl 端口被设置为 5DH(01011101B)。 CPL C 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 0 1 1 0 0 1 1 1 1 0 0 1 0 CPL (C)← ( ) CPL bit 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 0 bit address CPL (bit)← ( ) DA A 功能: 在加法运算之后,对累加器 A 进行十进制调整 说明: DA 指令对累加器 A 中存放的由此前的加法运算产生的 8 位数据进行调整(ADD 或 ADDC 指令可以用来实现两个压缩 BCD 码的加法),生成两个 4 位的数字。 如果累加器的低 4 位(位 3~位 0)大于 9 (xxxx1010~xxxx 1111),或者加法运算后,辅助 进位标志 AC 为 1,那么 DA 指令将把 6 加到累加器上,以在低 4 位生成正确的 BCD 数字。 若加 6 后,低 4 位向上有进位,且高 4 位都为 1,进位则会一直向前传递,以致最后进位 标志被置 1;但在其他情况下进位标志并不会被清零,进位标志会保持原来的值。 如果进位标志为 1,或者高 4 位的值超过 9 (1010xxxx~1111xxxx),那么 DA 指令将把 6 加 到高 4 位,在高 4 位生成正确的 BCD 数字,但不清除标志位。若高 4 位有进位输出,则 置进位标志为 1,否则,不改变进位标志。进位标志的状态指明了原来的两个 BCD 数据之 和是否大于 99,因而 DA 指令使得 CPU 可以精确地进行十进制的加法运算。注意,OV 标 志不会受影响。 DA 指令的以上操作在一个指令周期内完成。实际上,根据累加器 A 和机器状态字 PSW 中 的不同内容,DA 把 00H、06H、60H、66H 加到累加器 A 上,从而实现十进制转换。 注意:如果前面没有进行加法运算,不能直接用 DA 指令把累加器 A 中的十六进制数据转 换为 BCD 数,此外,如果先前执行的是减法运算,DA 指令也不会有所预期的效果。 举例: 如果累加器中的内容为 56H(01010110B),表示十进制数 56 的 BCD 码,寄存器 3 的内容 为 67H(01100111B),表示十进制数 67 的 BCD 码。进位标志为 1,则指令: ADDC A,R3 DA A 先执行标准的补码二进制加法,累加器 A 的值变为 0BEH,进位标志和辅助进位标志被清 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 275 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 零。 接着,DA 执行十进制调整,将累加器 A 的内容变为 24H(00100100B),表示十进制数 24 的 BCD 码,也就是 56、67 及进位标志之和的后两位数字。DA 指令会把进位标志置位 1,这表示在进行十进制加法时,发生了溢出。56、67 以及 1 的和为 124。 把 BCD 格式的变量加上 0lH 或 99H,可以实现加 1 或者减 1。假设累加器的初始值为 30H(表 示十进制数 30),指令序列: ADD A, #99H DA A 将把进位 C 置为 1,累加器 A 的数据变为 29H,因为 30+99=129。加法和的低位数据可 以看作减法运算的结果,即 30-1=29。 指令长度(字节): 1 执行周期: 1 二进制编码: 1 操作: DA 1 0 1 0 1 0 0 -contents of Accumulator are BCD IF [[(A3-0) > 9] V [(AC) = 1]] THEN(A3-0) ←(A3-0) + 6 AND IF [[(A7-4) > 9] V [(C) = 1]] THEN (A7-4)←(A7-4) + 6 DEC byte 功能: 把 BYTE 所代表的操作数减 1 说明: BYTE 所代表的变量被减去 l。如果原来的值为 00H,那么减去 1 后,变成 0FFH。没有标 志位会受到影响。该指令支持 4 种操作数寻址方式:累加器寻址、寄存器寻址、直接寻址 和寄存器间接寻址。 注意:当 DEC 指令用于修改输出端口的状态时,BYTE 所代表的数据是从端口输出数据锁 存器中获取的,而不是从引脚上读取的输入状态。 举例: 假设寄存器 0 的内容为 7FH(01111111B),内部 RAM 的 7EH 和 7FH 单元的内容分别为 00H 和 40H。则指令: DEC @R0 DEC R0 DEC @R0 执行后,寄存器 0 的内容变成 7EH,内部 RAM 的 7EH 和 7FH 单元的内容分别变为 0FFH 和 3FH。 DEC A 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 0 1 0 1 0 0 DEC (A)← (A) -1 DEC Rn 指令长度(字节): 1 执行周期: 1 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 276 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 二进制编码: 操作: 0 0 0 技术支持: 19864585985 1 1 r r r 1 0 1 0 1 0 1 1 i 选型顾问: 13922805190 DEC (Rn)←(Rn) - 1 DEC direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 0 0 Direct address DEC (direct)←(direct) - 1 DEC @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 0 1 DEC ((Ri))←((Ri)) - 1 DIV AB 功能: 除法 说明: DIV 指令把累加器 A 中的 8 位无符号整数除以寄存器 B 中的 8 位无符号整数,并将商置于 累加器 A 中,余数置于寄存器 B 中。进位标志 C 和溢出标志 OV 被清零。 例外:如果寄存器 B 的初始值为 00H(即除数为 0),那么执行 DIV 指令后,累加器 A 和 寄存器 B 中的值是不确定的,且溢出标志 OV 将被置位。但在任何情况下,进位标志 C 都 会被清零。 举例: 假设累加器的值为 251 (0FBH 或 11111011B),寄存器 B 的值为 18 (12H 或 00010010B)。 则指令: DIV AB 执行后,累加器的值变成 13 (0DH 或 00001101B),寄存器 B 的值变成 17 (11H 或 00010001B), 正好符合 251=13×18+17。进位和溢出标志都被清零。 指令长度(字节): 1 执行周期: 4 二进制编码: 操作: 1 0 0 0 0 1 0 0 DIV (A)15-8 (B)7-0 ← (A)/(B) DJNZ , 功能: 减 1,若非 0 则跳转 说明: DJNZ 指令首先将第 1 个操作数所代表的变量减 1,如果结果不为 0,则转移到第 2 个操作 数所指定的地址处去执行。如果第 1 个操作数的值为 00H,则减 1 后变为 0FFH。该指令 不影响标志位。跳转目标地址的计算:首先将 PC 值加 2(即指向下一条指令的首字节), 然后将第 2 操作数表示的有符号的相对偏移量加到 PC 上去即可。 byte 所代表的操作数可采用寄存器寻址或直接寻址。 注意:如果该指令被用来修改输出引脚上的状态,那么 byte 所代表的数据是从端口输出数 据锁存器中获取的,而不是直接读取引脚。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 277 - STC8A8K64D4 系列技术手册 举例: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 假设内部 RAM 的 40H、50H 和 60H 单元分别存放着 01H、70H 和 15H,则指令: DJNZ 40H, LABEL_1 DJNZ 50H, LABEL_2 DJNZ 60H, LABEL_3 执行之后,程序将跳转到标号 LABEL2 处执行,且相应的 3 个 RAM 单元的内容变成 00H、 6FH 和 15H。之所以第 1 个跳转没被执行,是因为减 1 后其结果为 0,不满足跳转条件。 使用 DJNZ 指令可以方便地在程序中实现指定次数的循环,此外用一条指令就可以在程序 中实现中等长度的时间延迟(2~512 个机器周期)。指令序列: MOV R2,#8 TOOOLE: CPL P1.7 DJNZ R2, TOOGLE 将使得 P1.7 的电平翻转 8 次,从而在 P1.7 产生 4 个脉冲,每个脉冲将持续 3 个机器周期, 其中 2 个为 DJNZ 指令的执行时间,1 个为 CPL 指令的执行时间。 DJNZ Rn, rel 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 1 0 1 1 r r r rel. address 1 0 1 direct address DJNZ (PC) ←(PC) + 2 (Rn) ←(Rn) – 1 IF (Rn) > 0 or (Rn) < 0 THEN (PC) ←(PC)+ rel DJNZ direct, rel 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 1 1 0 1 0 rel. address DJNZ (PC) ←(PC) + 2 (direct) ←(direct) – 1 IF (direct) > 0 or (direct) < 0 THEN (PC) ←(PC)+ rel INC 功能: 加1 说明: INC 指令将所代表的数据加 1。如果原来的值为 FFH,则加 1 后变为 00H,该指令 不影响标志位。支持 3 种寻址模式:寄存器寻址、直接寻址、寄存器间接寻址。 注意:如果该指令被用来修改输出引脚上的状态,那么 byte 所代表的数据是从端口输出数 据锁存器中获取的,而不是直接读的引脚。 举例: 假设寄存器 0 的内容为 7EH(01111110B),内部 RAM 的 7E 单元和 7F 单元分别存放着 0FFH 和 40H,则指令序列: INC @R0 INC R0 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 278 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 INC @R0 执行完毕后,寄存器 0 的内容变为 7FH,而内部 RAM 的 7EH 和 7FH 单元的内容分别变成 00H 和 41H。 INC A 指令长度(字节): 1 执行周期: 1 二进制编码: 0 操作: INC 0 0 0 0 1 0 0 0 0 1 r r r 0 0 1 0 1 0 1 1 i (A) ←(A)+1 INC Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 0 操作: INC 0 (Rn) ←(Rn)+1 INC direct 指令长度(字节): 2 执行周期: 1 二进制编码: 0 操作: INC 0 0 direct address (direct) ←(direct)+1 INC @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 0 操作: INC 0 0 0 ((Ri))←((Ri)) + 1 INC DPTR 功能: 数据指针加 1 说明: 该指令实现将 DPTR 加 1 功能。需要注意的是,这是 16 位的递增指令,低位字节 DPL 从 FFH 增加 1 之后变为 00H,同时进位到高位字节 DPH。该操作不影响标志位。 该指令是唯一 1 条 16 位寄存器递增指令。 举例: 假设寄存器 DPH 和 DPL 的内容分别为 12H 和 0FEH,则指令序列: IINC DPTR INC DPTR INC DPTR 执行完毕后,DPH 和 DPL 变成 13H 和 01H。 指令长度(字节): 1 执行周期: 2 二进制编码: 1 操作: INC 0 1 0 0 0 1 1 (DPTR) ← (DPTR) + 1 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 279 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 JB bit, rel 功能: 若位数据为 1 则跳转 说明: 如果 bit 代表的位数据为 1,则跳转到 rel 所指定的地址处去执行;否则,继续执行下一条 指令。跳转的目标地址按照如下方式计算:先增加 PC 的值,使其指向下一条指令的首字 节地址,然后把 rel 所代表的有符号的相对偏移量(指令的第 3 个字节)加到 PC 上去,新 的 PC 值即为目标地址。该指令只是测试相应的位数据,但不会改变其数值,而且该操作 不会影响标志位。 举例: 假设端口 1 的输入数据为 11001010B,累加器的值为 56H(01010110B)。则指令: JB P1.2, LABEL1 JB ACC.2, LABEL2 将导致程序转到标号 LABEL2 处去执行。 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 0 1 0 0 0 0 0 bit address rel. address JB (PC) ← (PC) + 3 IF (bit) = 1 THEN (PC) ← (PC)+ rel JBC bit, rel 功能: 若位数据为 1 则跳转并将其清零 说明: 如果 bit 代表的的位数据为 1,则将其清零并跳转到 rel 所指定的地址处去执行。如果 bit 代表的位数据为 0,则继续执行下一条指令。跳转的目标地址按照如下方式计算:先增加 PC 的值,使其指向下一条指令的首字节地址,然后把 rel 所代表的有符号的相对偏移量(指 令的第 3 个字节)加到 PC 上去,新的 PC 值即为目标地址,而且该操作不会影响标志位。 注意:如果该指令被用来修改输出引脚上的状态,那么 byte 所代表的数据是从端口输出数 据锁存器中获取的,而不是直接读取引脚。 举例: 假设累加器的内容为 56H(01010110B),则指令序列: JBC ACC.3, LABEL1 JBC ACC.2, LABEL2 将导致程序转到标号 LABEL2 处去执行,且累加器的内容变为 52H(01010010B)。 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 0 0 1 0 0 0 0 bit address rel. address JB (PC) ← (PC) + 3 IF (bit) = 1 THEN (bit) ← 0 (PC) ← (PC)+ rel JC rel 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 280 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 功能: 若进位标志为 1,则跳转 说明: 如果进位标志为 1,则程序跳转到 rel 所代表的地址处去执行;否则,继续执行下面的指令。 跳转的目标地址按照如下方式计算:先增加 PC 的值,使其指向紧接 JC 指令的下一条指令 的首地址,然后把 rel 所代表的有符号的相对偏移量(指令的第 2 个字节)加到 PC 上去, 新的 PC 值即为目标地址。该操作不会影响标志位。 举例: 假设进位标志此时为 0,则指令序列: JC LABEL1 CPL C JC LABEL2 执行完毕后,进位标志变成 1,并导致程序跳转到标号 LABEL2 处去执行。 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 0 1 0 0 0 0 0 0 rel. address JC (PC) ← (PC) + 2 IF (C) = 1 THEN (PC) ← (PC)+ rel JMP @A+DPTR 功能: 间接跳转 说明: 把累加器 A 中的 8 位无符号数据和 16 位的数据指针的值相加,其和作为下一条将要执行 的指令的地址,传送给程序计数器 PC。执行 16 位的加法时,低字节 DPL 的进位会传到高 字节 DPH。累加器 A 和数据指针 DPTR 的内容都不会发生变化。不影响任何标志位。 举例: 假设累加器 A 中的值是偶数(从 0 到 6)。下面的指令序列将使得程序跳转到位于跳转表 JMP_TBL 的 4 条 AJMP 指令中的某一条去执行: MOV DPTR, #JMP_TBL JMP @A+DPTR JMP-TBL: AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP LABEL3 如果开始执行上述指令序列时,累加器 A 中的值为 04H,那么程序最终会跳转到标号 LABEL2 处去执行。 注意:AJMP 是一个 2 字节指令,因而在跳转表中,各个跳转指令的入口地址依次相差 2 个字节。 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 0 1 1 1 0 0 1 1 JMP (PC) ← (A) + (DPTR) JNB bit, rel 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 281 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 功能: 如果 bit 所代表的位不为 1 则跳转 说明: 如果 bit 所表示的位为 0,则转移到 rel 所代表的地址去执行;否则,继续执行下一条指令。 跳转的目标地址如此计算:先增加 PC 的值,使其指向下一条指令的首字节地址,然后把 rel 所代表的有符号的相对偏移量(指令的第 3 个字节)加到 PC 上去,新的 PC 值即为目 标地址。该指令只是测试相应的位数据,但不会改变其数值,而且该操作不会影响标志位。 举例: 假设端口 1 的输入数据为 11001010B,累加器的值为 56H(01010110B)。则指令序列: JNB P1.3, LABEL1 JNB ACC.3, LABEL2 执行后将导致程序转到标号 LABEL2 处去执行。 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 0 1 1 0 0 0 0 bit address rel. address JNB (PC) ←(PC) + 3 IF (bit) = 0 THEN (PC) ← (PC) + rel JNC rel 功能: 若进位标志非 1 则跳转 说明: 如果进位标志为 0,则程序跳转到 rel 所代表的地址处去执行;否则,继续执行下面的指令。 跳转的目标地址按照如下方式计算:先增加 PC 的值加 2,使其指向紧接 JNC 指令的下一 条指令的地址,然后把 rel 所代表的有符号的相对偏移量(指令的第 2 个字节)加到 PC 上 去,新的 PC 值即为目标地址。该操作不会影响标志位。 举例: 假设进位标志此时为 1,则指令序列: JNC LABEL1 CPL C JNC LABEL2 执行完毕后,进位标志变成 0,并导致程序跳转到标号 LABEL2 处去执行。 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 0 1 0 1 0 0 0 0 rel. address JNC (PC) ←(PC) + 2 IF (C) = 0 THEN (PC) ← (PC) + rel JNZ rel 功能: 如果累加器的内容非 0 则跳转 说明: 如果累加器 A 的任何一位为 1,那么程序跳转到 rel 所代表的地址处去执行,如果各个位 都为 0,继续执行下一条指令。跳转的目标地址按照如下方式计算:先把 PC 的值增加 2, 然后把 rel 所代表的有符号的相对偏移量(指令的第 2 个字节)加到 PC 上去,新的 PC 值 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 282 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 即为目标地址。操作过程中累加器的值不会发生变化,不会影响标志位。 举例: 设累加器的初始值为 00H,则指令序列: JNZ LABEL1 INC A JNZ LAEEL2 执行完毕后,累加器的内容变成 01H,且程序将跳转到标号 LABEL2 处去执行。 指令长度(字节): 2 执行周期: 2 二进制编码: 0 操作: JNZ 1 1 1 0 0 0 0 rel. address (PC) ←(PC) + 2 IF (A) ≠ 0 THEN (PC) ← (PC) + rel JZ rel 功能: 若累加器的内容为 0 则跳转 说明: 如果累加器 A 的任何一位为 0,那么程序跳转到 rel 所代表的地址处去执行,如果各个位 都为 0,继续执行下一条指令。跳转的目标地址按照如下方式计算:先把 PC 的值增加 2, 然后把 rel 所代表的有符号的相对偏移量(指令的第 2 个字节)加到 PC 上去,新的 PC 值 即为目标地址。操作过程中累加器的值不会发生变化,不会影响标志位。 举例: 设累加器的初始值为 01H,则指令序列: JZ LABEL1 DEC A JZ LAEEL2 执行完毕后,累加器的内容变成 00H,且程序将跳转到标号 LABEL2 处去执行。 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 0 1 1 0 0 0 0 0 rel. address JZ (PC) ←(PC) + 2 IF (A) = 0 THEN (PC) ← (PC) + rel LCALL addr16 功能: 长调用 说明: LCALL 用于调用 addr16 所指地址处的子例程。首先将 PC 的值增加 3,使得 PC 指向紧随 LCALL 的下一条指令的地址,然后把 16 位 PC 的低 8 位和高 8 位依次压入栈(低位字节 在先),同时把栈指针加 2。然后再把 LCALL 指令的第 2 字节和第 3 字节的数据分别装 入 PC 的高位字节 DPH 和低位字节 DPL,程序从新的 PC 所对应的地址处开始执行。因而 子例程可以位于 64KB 程序存储空间的任何地址处。该操作不影响标志位。 举例: 栈指针的初始值为 07H,标号 SUBRTN 被分配的程序存储器地址为 1234H。则执行如 下位于地址 0123H 的指令后: LCALL SUBRTN 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 283 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 栈指针变成 09H,内部 RAM 的 08H 和 09H 单元的内容分别为 26H 和 01H,且 PC 的当前 值为 1234H。 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 0 0 1 0 0 1 0 addr15-addr8 addr7-addr0 LCALL (PC) ←(PC) + 3 (SP) ←(SP) + 1 ((SP)) ←(PC7-0) (SP) ←(SP) + 1 ((SP)) ←(PC15-8) (PC) ← addr15-0 LJMP addr16 功能: 长跳转 说明: LJMP 使得 CPU 无条件跳转到 addr16 所指的地址处执行程序。把该指令的第 2 字节和第 3 字节分别装入程序计数器 PC 的高位字节 DPH 和低位字节 DPL。程序从新 PC 值对应的地 址处开始执行。该 16 位目标地址可位于 64KB 程序存储空间的任何地址处。该操作不影响 标志位。 举例: 假设标号 JMPADR 被分配的程序存储器地址为 1234H。则位于地址 1234H 的指令: LJMP JMPADR 执行完毕后,PC 的当前值变为 1234H。 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 0 0 0 0 0 1 0 addr15-addr8 addr7-addr0 LJMP (PC) ← addr15-0 MOV , 功能: 传送字节变量 说明: 将第 2 操作数代表字节变量的内容复制到第 1 操作数所代表的存储单元中去。该指令不会 改变源操作数,也不会影响其他寄存器和标志位。 MOV 指令是迄今为止使用最灵活的指令,源操作数和目的操作数组合起来,寻址方式可 达 15 种。 举例: 假设内部 RAM 的 30H 单元的内容为 40H,而 40H 单元的内容为 10H。端口 1 的数据为 11001010B(0CAH)。则指令序列: MOV R0, #30H ; R0< = 30H MOV A, @R0 ; A < = 40H MOV R1, A ; R1 < = 40H MOV B, @Rl ; B < = 10H MOV @Rl, Pl ; RAM (40H) < = 0CAH MOV P2, P1 ; P2 #0CAH 执行完毕后,寄存器 0 的内容为 30H,累加器和寄存器 1 的内容都为 40H,寄存器 B 的内 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 284 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 容为 10H,RAM 中 40H 单元和 P2 口的内容均为 0CAH。 MOV A,Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 1 0 1 r r r 1 0 0 1 0 1 MOV (A) ←(Rn) *MOV A,direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 1 direct address MOV (A)← (direct) 注意:MOV A, ACC 是无效指令。 MOV A,@Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 1 0 0 1 1 i 1 1 0 1 0 0 1 1 1 r r r 1 0 1 r r r 1 1 r r r MOV (A) ←((Ri)) MOV A,#data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 immediate data MOV (A)←#data MOV Rn, A 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 MOV (Rn) ←(A) MOV Rn,direct 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 direct address MOV (Rn)← (direct) MOV Rn,#data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 1 immediate data MOV (Rn)←#data MOV direct, A 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 285 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 1 1 技术支持: 19864585985 1 0 1 0 1 direct address 0 1 r r r direct address 0 0 1 0 1 0 0 1 1 i 1 0 1 0 1 1 1 0 1 1 i 1 0 0 1 1 i 1 0 1 1 i 选型顾问: 13922805190 MOV (direct)← (A) MOV direct, Rn 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 0 MOV (direct)← (Rn) MOV direct, direct 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 1 0 0 dir.addr. (src) dir.addr. (dest) MOV (direct)← (direct) MOV direct, @Ri 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 0 direct address MOV (direct)←((Ri)) MOV direct, #data 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 1 1 direct address immediate data MOV (direct)←#data MOV @Ri, A 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 MOV ((Ri))←(A) MOV @Ri, direct 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 direct address MOV ((Ri))←(direct) MOV @Ri, #data 指令长度(字节): 2 执行周期: 1 二进制编码: 深圳国芯人工智能有限公司 0 1 1 国内分销商电话: 0513-5501 2928/2929/2966 immediate data 去纯技术交流论坛:www.STCAIMCU.com - 286 - STC8A8K64D4 系列技术手册 操作: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 MOV ((Ri))←#data MOV , 功能: 传送位变量 说明: 将代表的布尔变量复制到所指定的数据单元中去,两个操作数必须有一 个是进位标志,而另外一个是可直接寻址的位。本指令不影响其他寄存器和标志位。 举例: 假设进位标志 C 的初值为 1,端口 P3 中的数据是 11000101B,端口 1 的数据被设置为 35H(00110101B)。则指令序列: MOV P1.3, C MOV C, P3.3 MOV P1.2, C 执行后,进位标志被清零,端口 1 的数据变为 39H(00111001B)。 MOV C, bit 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 0 1 0 0 0 1 0 bit address 0 1 0 0 1 0 bit address MOV (C)← (bit) MOV bit, C 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 MOV (bit)← (C) MOV DPTR, #data 16 功能: 将 16 位的常数存放到数据指针 说明: 该指令将 16 位常数传递给数据指针 DPTR。16 位的常数包含在指令的第 2 字节和第 3 字 节中。其中 DPH 中存放的是#data16 的高字节,而 DPL 中存放的是#data16 的低字节。不 影响标志位。 该指令是唯一一条能一次性移动 16 位数据的指令。 举例: 指令: MOV DPTR, #1234H 将立即数 1234H 装入数据指针寄存器中。DPH 的值为 12H,DPL 的值为 34H。 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 1 0 0 1 0 0 0 0 immediate data15-8 immediate data7-0 MOV (DPTR) ← #data15-0 DPH DPL ← #data15-8 #data7-0 MOVC A , @A+ 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 287 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 功能: 把程序存储器中的代码字节数据(常数数据)转送至累加器 A 说明: MOVC 指令将程序存储器中的代码字节或常数字节传送到累加器 A。被传送的数据字节的 地址是由累加器中的无符号 8 位数据和 16 位基址寄存器(DPTR 或 PC)的数值相加产生 的。如果以 PC 为基址寄存器,则在累加器内容加到 PC 之前,PC 需要先增加到指向紧邻 MOVC 之后的语句的地址;如果是以 DPTR 为基址寄存器,则没有此问题。在执行 16 位 的加法时,低 8 位产生的进位会传递给高 8 位。本指令不影响标志位。 举例: 假设累加器 A 的值处于 0~4 之间,如下子例程将累加器 A 中的值转换为用 DB 伪指令(定 义字节)定义的 4 个值之一: REL-PC: INC A MOVC A, @A+PC RET DB 66H DB 77H DB 88H DB 99H 如果在调用该子例程之前累加器的值为 01H,执行完该子例程后,累加器的值变为 77H。 MOVC 指令之前的 INC A 指令是为了在查表时越过 RET 而设置的。如果 MOVC 和表格之 间被多个代码字节所隔开,那么为了正确地读取表格,必须将相应的字节数预先加到累加 器 A 上。 MOVC A,@A+DPTR 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 1 0 0 1 0 0 1 1 0 0 1 1 MOVC (A) ←((A)+(DPTR)) MOVC A,@A+PC 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 1 0 0 0 MOVC (PC) ←(PC)+1 (A) ←((A)+(PC)) MOVX , 功能: 外部传送 说明: MOVX 指令用于在累加器和外部数据存储器之间传递数据。因此在传送指令 MOV 后附加 了 X。MOVX 又分为两种类型,它们之间的区别在于访问外部数据 RAM 的间接地址是 8 位的还是 16 位的。 对于第 1 种类型,当前工作寄存器组的 R0 和 R1 提供 8 位地址到复用端口 P0。对于外部 I/O 扩展译码或者较小的 RAM 阵列,8 位的地址已经够用。若要访问较大的 RAM 阵列, 可在端口引脚上输出高位的地址信号。此时可在 MOVX 指令之前添加输出指令,对这些 端口引脚施加控制。 对于第 2 种类型,通过数据指针 DPTR 产生 16 位的地址。当 P2 端口的输出缓冲器发送 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 288 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 DPH 的内容时,P2 的特殊功能寄存器保持原来的数据。在访问规模较大的数据阵列时, 这种方式更为有效和快捷,因为不需要额外指令来配置输出端口。 在某些情况下,可以混合使用两种类型的 MOVX 指令。在访问大容量的 RAM 空间时,既 可以用数据指针 DP 在 P2 端口上输出地址的高位字节,也可以先用某条指令,把地址的高 位字节从 P2 端口上输出,再使用通过 R0 或 Rl 间址寻址的 MOVX 指令。 举例: 假设有一个分时复用地址/数据线的外部 RAM 存储器,容量为 256B(如:Intel 的 8155 RAM / I/O / TIMER),该存储器被连接到 8051 的端口 P0 上,端口 P3 被用于提供外部 RAM 所 需的控制信号。端口 Pl 和 P2 用作通用输入/输出端口。R0 和 Rl 中的数据分别为 12H 和 34H,外部 RAM 的 34H 单元存储的数据为 56H,则下面的指令序列: MOVX A, @R1 MOVX @R0, A 将数据 56H 复制到累加器 A 以及外部 RAM 的 12H 单元中。 MOVX A,@Ri 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 1 1 1 0 0 0 1 i 1 0 0 0 0 0 1 1 0 0 1 i 1 1 0 0 0 0 MOVX (A) ← ((Ri)) MOVX A,@DPTR 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 1 1 MOVX (A) ←((DPTR)) MOVX @Ri, A 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 1 1 MOVX ((Ri))←(A) MOVX @DPTR, A 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 1 1 MOVX (DPTR)←(A) MUL AB 功能: 乘法 说明: 该指令可用于实现累加器和寄存器 B 中的无符号 8 位整数的乘法。所产生的 16 位乘积的 低 8 位存放在累加器中,而高 8 位存放在寄存器 B 中。若乘积大于 255(0FFH),则置位溢 出标志;否则清零标志位。在执行该指令时,进位标志总是被清零。 举例: 假设累加器 A 的初始值为 80(50H),寄存器 B 的初始值为 160 (0A0H),则指令: MUL AB 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 289 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 求得乘积 12800 (3200H),所以寄存器 B 的值变成 32H (00110010B),累加器被清零,溢出 标志被置位,进位标志被清零。 指令长度(字节): 1 执行周期: 4 二进制编码: 操作: 1 0 1 0 0 1 0 0 (A)7-0 ← (A)×(B) (B)15-8 NOP 功能: 空操作 说明: 执行本指令后,将继续执行随后的指令。除了 PC 外,其他寄存器和标志位都不会有变化。 举例: 假设期望在端口 P2 的第 7 号引脚上输出一个长时间的低电平脉冲,该脉冲持续 5 个机器 周期(精确)。若是仅使用 SETB 和 CLR 指令序列,生成的脉冲只能持续 1 个机器周期。 因而需要设法增加 4 个额外的机器周期。可以按照如下方式来实现所要求的功能(假设中 断没有被启用): CLR P2.7 NOP NOP NOP NOP SETB P2.7 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 0 0 0 0 0 0 NOP (PC) ←(PC)+1 ORL , 功能: 两个字节变量的逻辑或运算 说明: ORL 指令将由和所指定的两个字节变量进行逐位逻辑或运算,结果 存放在所代表的数据单元中。该操作不影响标志位。 两个操作数组合起来,支持 6 种寻址方式。当目的操作数是累加器 A 时,源操作数可以采 用寄存器寻址、直接寻址、寄存器间接寻址或者立即寻址。当目的操作数采用直接寻址方 式时,源操作数可以是累加器或立即数。 注意:如果该指令被用来修改输出引脚上的状态,那么所代表的数据是从端口 输出数据锁存器中获取的数据,而不是从引脚上读取的数据。 举例: 假设累加器 A 中数据为 0C3H (11000011B), 寄存器 R0 中的数据为 55H(01010101) ,则指令: ORL A, R0 执行后,累加器的内容变成 0D7H(11010111B)。当目的操作数是直接寻址数据字节时,ORL 指令可用来把任何 RAM 单元或者硬件寄存器中的各个位设置为 1。究竟哪些位会被置 1 由屏蔽字节决定,屏蔽字节既可以是包含在指令中的常数,也可以是累加器 A 在运行过程 中实时计算出的数值。执行指令: ORL P1, #00110010B 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 290 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 之后,把 1 口的第 5、4、1 位置 1。 ORL A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 1 0 0 1 r r r 0 0 1 0 1 0 0 1 1 i 0 0 1 0 0 immediate data 0 0 0 1 0 direct address 0 0 1 1 direct address ORL (A) ←(A)∨(Rn) ORL A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 0 direct address ORL (A) ←(A)∨(direct) ORL A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 1 0 ORL (A) ←(A)∨((Ri)) ORL A, #data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 0 ORL (A) ←(A)∨#data ORL direct, A 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 0 ORL (direct)← (direct)∨(A) ORL direct, #data 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 1 0 0 immediate data ORL (direct)← (direct)∨#data ORL C, 功能: 位变量的逻辑或运算 说明: 如果所表示的位变量为 1,则置位进位标志;否则,保持进位标志的当前状态不变。 在汇编语言中,位于源操作数之前的“/”表示将源操作数取反后使用,但源操作数本身不 发生变化。在执行本指令时,不影响其他标志位。 举例: 深圳国芯人工智能有限公司 当执行如下指令序列时,当且仅当 P1.0=1 或 ACC.7=1 或 OV=0 时,置位进位标志 C: 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 291 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 MOV C, P1.0 ;LOAD CARRY WITH INPUT PIN P10 ORL C, ACC.7 ;OR CARRY WITH THE ACC.BIT 7 ORL C, /OV ;OR CARRY WITH THE INVERSE OF OV 选型顾问: 13922805190 ORL C, bit 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 0 1 1 1 0 0 1 0 bit address 0 0 0 0 0 bit address ORL (C) ←(C)∨(bit) ORL C, /bit 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 1 ORL (C) ←(C)∨( ) POP direct 功能: 出栈 说明: 读取栈指针所指定的内部 RAM 单元的内容,栈指针减 1。然后,将读到的内容传送到由 direct 所指示的存储单元(直接寻址方式)中去。该操作不影响标志位。 举例: 设栈指针的初值为 32H,内部 RAM 的 30H~32H 单元的数据分别为 20H、23H 和 01H。则 执行指令: POP DPH POP DPL 之后,栈指针的值变成 30H,数据指针变为 0123H。此时指令: POP SP 将把栈指针变为 20H。 注意:在这种特殊情况下,在写入出栈数据(20H)之前,栈指针先减小到 2FH,然后再 随着 20H 的写入,变成 20H。 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 1 0 1 0 0 0 0 direct address POP (direct) ←((SP)) (SP) ← (SP) - 1 PUSH direct 功能: 压栈 说明: 栈指针首先加 1,然后将 direct 所表示的变量内容复制到由栈指针指定的内部 RAM 存储单 元中去。该操作不影响标志位。 举例: 设在进入中断服务程序时栈指针的值为 09H,数据指针 DPTR 的值为 0123H。则执行如下 指令序列: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 292 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 PUSH DPL PUSH DPH 之后,栈指针变为 0BH,并把数据 23H 和 01H 分别存入内部 RAM 的 0AH 和 0BH 存储单 元之中。 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 1 0 0 0 0 0 0 direct address PUSH (SP) ←(SP) + 1 ((SP)) ← (direct) RET 功能: 从子例程返回 说明: 执行 RET 指令时,首先将 PC 值的高位字节和低位字节从栈中弹出,栈指针减 2。然后, 程序从形成的 PC 值所对应的地址处开始执行,一般情况下,该指令和 ACALL 或 LCALL 配合使用。改指令的执行不影响标志位。 举例: 设栈指针的初值为 0BH,内部 RAM 的 0AH 和 0BH 存储单元中的数据分别为 23H 和 01H。 则指令: RET 执行后,栈指针变为 09H。程序将从 0123H 地址处继续执行。 指令长度(字节): 1 执行周期: 2 二进制编码: 操作: 0 0 1 0 0 0 1 0 RET (PC15-8) ←((SP)) (SP) ←(SP) -1 (PC7-0) ←((SP)) (SP) ←(SP) -1 RETI 功能: 中断返回 说明: 执行该指令时,首先从栈中弹出 PC 值的高位和低位字节,然后恢复中断启用,准备接受 同优先级的其他中断,栈指针减 2。其他寄存器不受影响。但程序状态字 PSW 不会自动恢 复到中断前的状态。程序将继续从新产生的 PC 值所对应的地址处开始执行,一般情况下 是此次中断入口的下一条指令。在执行 RETI 指令时,如果有一个优先级较低的或同优先 级的其他中断在等待处理,那么在处理这些等待中的中断之前需要执行 1 条指令。 举例: 设栈指针的初值为 0BH,结束在地址 0123H 处的指令执行结束期间产生中断,内部 RAM 的 0AH 和 0BH 单元的内容分别为 23H 和 01H。则指令: RETI 执行完毕后,栈指针变成 09H,中断返回后程序继续从 0123H 地址开始执行。 指令长度(字节): 1 执行周期: 2 二进制编码: 深圳国芯人工智能有限公司 0 0 1 1 0 0 1 0 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 293 - STC8A8K64D4 系列技术手册 操作: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RETI (PC15-8) ←((SP)) (SP) ←(SP) -1 (PC7-0) ←((SP)) (SP) ←(SP) -1 RL A 功能: 将累加器 A 中的数据位循环左移 说明: 将累加器中的 8 位数据均左移 1 位,其中位 7 移动到位 0。该指令的执行不影响标志位。 举例: 设累加器的内容为 0C5H(11000101B),则指令: RL A 执行后,累加器的内容变成 8BH(10001011B),且标志位不受影响。 指令长度(字节): 1 执行周期: 1 二进制编码: 0 操作: RL 0 1 (An+1) ← (An) 0 0 0 1 1 n = 0-6 (A0) ←(A7) RLC A 功能: 带进位循环左移 说明: 累加器的 8 位数据和进位标志一起循环左移 1 位。其中位 7 移入进位标志,进位标志的初 始状态值移到位 0。该指令不影响其他标志位。 举例: 假设累加器 A 的值为 0C5H(11000101B),则指令: RLC A 执行后,将把累加器 A 的数据变为 8BH(10001011B),进位标志被置位。 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 1 1 0 0 1 1 RLC (An+1) ←(An) n = 0-6 (A0) ←(C) (C) ←(A7) RR A 功能: 将累加器的数据位循环右移 说明: 将累加器的 8 个数据位均右移 1 位,位 0 将被移到位 7,即循环右移,该指令不影响标志 位。 举例: 设累加器的内容为 0C5H(11000101B),则指令: RR A 执行后累加器的内容变成 0E2H(11100010B),标志位不受影响。 指令长度(字节): 深圳国芯人工智能有限公司 1 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 294 - STC8A8K64D4 系列技术手册 执行周期: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 1 二进制编码: 0 操作: RR 0 0 0 (An) ←(An+1) 0 0 1 1 n=0-6 (A7) ←(A0) RRC A 功能: 带进位循环右移 说明: 累加器的 8 位数据和进位标志一起循环右移 1 位。其中位 0 移入进位标志,进位标志的初 始状态值移到位 7。该指令不影响其他标志位。 举例: 假设累加器的值为 0C5H(11000101B),进位标志为 0,则指令: RRC A 执行后,将把累加器的数据变为 62H(01100010B),进位标志被置位。 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 0 0 1 0 0 1 1 RRC (An+1) ←(An) n=0-6 (A7) ←(C) (C) ←(A0) SETB 功能: 置位 说明: SETB 指令可将相应的位置 1,其操作对象可以是进位标志或其他可直接寻址的位。该指令 不影响其他标志位。 举例: 设进位标志被清零,端口 1 的输出状态为 34H(00110100B),则指令: SETB C SETB P1.0 执行后,进位标志变为 1,端口 1 的输出状态变成 35H(00110101B)。 SETB C 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 0 1 0 0 1 1 0 1 0 0 1 0 SETB (C) ← 1 SETB bit 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 1 bit address SETB (bit) ← 1 SJMP rel 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 295 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 功能: 短跳转 说明: 程序无条件跳转到 rel 所示的地址去执行。目标地址按如下方法计算:首先 PC 值加 2,然 后将指令第 2 字节(即 rel)所表示的有符号偏移量加到 PC 上,得到的新 PC 值即短跳转 的目标地址。所以,跳转的范围是当前指令(即 SJMP)地址的前 128 字节和后 127 字节。 举例: 设标号 RELADR 对应的指令地址位于程序存储器的 0123H 地址,则指令: SJMP RELADR 汇编后位于 0100H。当执行完该指令后,PC 值变成 0123H。 注意:在上例中,紧接 SJMP 的下一条指令的地址是 0102H,因此,跳转的偏移量为 0123H-0102H=21H。另外,如果 SJMP 的偏移量是 0FEH,那么构成只有 1 条指令的无限 循环。 指令长度(字节): 2 执行周期: 2 二进制编码: 操作: 1 0 0 0 0 0 0 0 rel. address SJMP (PC) ←(PC)+2 (PC) ← (PC)+rel SUBB A, 功能: 带借位的减法 说明: SUBB 指令从累加器中减去所代表的字节变量的数值及进位标志,减法运算的结 果置于累加器中。如果执行减法时第 7 位需要借位,SUBB 将会置位进位标志(表示借位); 否则,清零进位标志。(如果在执行 SUBB 指令前,进位标志 C 已经被置位,这意味着在 前面进行多精度的减法运算时,产生了借位。因而在执行本条指令时,必须把进位连同源 操作数一起从累加器中减去。)如果在进行减法运算的时候,第 3 位处向上有借位,那么 辅助进位标志 AC 会被置位;如果第 6 位有借位;而第 7 位没有,或是第 7 位有借位,而 第 6 位没有, 则溢出标志 OV 被置位。 当进行有符号整数减法运算时,若 OV 置位,则表示在正数减负数的过程中产生了负数; 或者,在负数减正数的过程中产生了正数。 源操作数支持的寻址方式:寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址。 举例: 设累加器中的数据为 0C9H(11001001B)。寄存器 R2 的值为 54H(01010100B),进位标志 C 被置位。则如下指令: SUBB A, R2 执行后,累加器的数据变为 74H(01110100B),进位标志 C 和辅助进位标志 AC 被清零,溢 出标志 C 被置位。 注意:0C9H 减去 54H 应该是 75H,但在上面的计算中,由于在 SUBB 指令执行前,进位 标志 C 已经被置位,因而最终结果还需要减去进位标志,得到 74H。因此,如果在进行单 精度或者多精度减法运算前,进位标志 C 的状态未知,那么应改采用 CLR C 指令把进位 标志 C 清零。 SUBB A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 深圳国芯人工智能有限公司 1 0 0 1 1 r r r SUBB 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 296 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 (A) ← (A) - (C) - (Rn) SUBB A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 0 0 1 0 1 0 1 0 1 1 i 0 1 0 0 direct address SUBB (A) ← (A) - (C) - (direct) SUBB A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 0 0 1 SUBB (A) ← (A) - (C) - ((Ri)) SUBB A, #data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 0 0 1 immediate data SUBB (A) ← (A) - (C) - #data SWAP A 功能: 交换累加器的高低半字节 说明: SWAP 指令把累加器的低 4 位(位 3~位 0)和高 4 位(位 7~位 4)数据进行交换。实际上 SWAP 指令也可视为 4 位的循环指令。该指令不影响标志位。 举例: 设累加器的内容为 0C5H(11000101B),则指令: SWAP A 执行后,累加器的内容变成 5CH(01011100B)。 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 0 0 0 1 0 0 SWAP (A3-0) (A7-4) XCH A, 功能: 交换累加器和字节变量的内容 说明: XCH 指令将所指定的字节变量的内容装载到累加器,同时将累加器的旧内容 写入所指定的字节变量。指令中的源操作数和目的操作数允许的寻址方式:寄存器 寻址、直接寻址和寄存器间接寻址。 举例: 设 R0 的内容为地址 20H,累加器的值为 3FH (00111111B)。内部 RAM 的 20H 单元的内容 为 75H (01110101B)。则指令: XCH A, @R0 执行后,内部 RAM 的 20H 单元的数据变为 3FH (00111111B),累加器的内容变为 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 297 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 75H(01110101B)。 XCH A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 0 0 1 r r r 0 0 1 0 1 0 0 1 1 i XCH (A) (Rn) XCH A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 1 1 0 direct address XCH (A) (direct) XCH A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 0 XCH (A) ((Ri)) XCHD A, @Ri 功能: 交换累加器和@Ri 对应单元中的数据的低 4 位 说明: XCHD 指令将累加器内容的低半字节(位 0~3,一般是十六进制数或 BCD 码)和间接寻址 的内部 RAM 单元的数据进行交换,各自的高半字(位 7~4)节不受影响。另外,该指令 不影响标志位。 举例: 设 R0 保存了地址 20H,累加器的内容为 36H (00110110B)。内部 RAM 的 20H 单元存储的 数据为 75H (011110101B)。则指令: XCHD A, @R0 执行后,内部 RAM 20H 单元的内容变成 76H (01110110B),累加器的内容变为 35H(00110101B)。 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 1 1 0 1 0 1 1 i XCHD (A3-0) (Ri3-0) XRL , 功能: 字节变量的逻辑异或 说明: XRL 指令将和所代表的字节变量逐位进行逻辑异或运算,结果保存在 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 298 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 所代表的字节变量里。该指令不影响标志位。 两个操作数组合起来共支持 6 种寻址方式:当目的操作数为累加器时,源操作数可以采用 寄存器寻址、直接寻址、寄存器间接寻址和立即数寻址;当目的操作数是可直接寻址的数 据时,源操作数可以是累加器或者立即数。 注意:如果该指令被用来修改输出引脚上的状态,那么 dest-byte 所代表的数据就是从端口 输出数据锁存器中获取的数据,而不是从引脚上读取的数据。 举例: 如果累加器和寄存器 0 的内容分别为 0C3H (11000011B)和 0AAH(10101010B),则指令: XRL A, R0 执行后,累加器的内容变成 69H (01101001B)。 当目的操作数是可直接寻址字节数据时,该指令可把任何 RAM 单元或者寄存器中的各个 位取反。具体哪些位会被取反,在运行过程当中确定。指令: XRL P1, #00110001B 执行后,P1 口的位 5、4、0 被取反。 XRL A, Rn 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 1 1 0 1 r r r 0 1 0 1 0 1 1 i 0 1 0 0 immediate data 0 0 1 0 direct address XRL (A) ←(A) (Rn) XRL A, direct 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 1 0 direct address XRL (A) ←(A) (direct) XRL A, @Ri 指令长度(字节): 1 执行周期: 1 二进制编码: 操作: 0 1 1 0 XRL (A) ←(A) ((Ri)) XRL A, #data 指令长度(字节): 2 执行周期: 1 二进制编码: 操作: 0 1 1 0 XRL (A) ←(A) #data XRL direct, A 指令长度(字节): 2 执行周期: 1 二进制编码: 深圳国芯人工智能有限公司 0 1 1 0 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 299 - STC8A8K64D4 系列技术手册 操作: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 XRL (direct) ←(direct) (A) XRL direct, #data 指令长度(字节): 3 执行周期: 2 二进制编码: 操作: 0 1 1 0 0 1 1 direct address immediate data XRL (direct)← (direct) 10.4 0 #data 指令详解(英文) ACALL addr11 Function: Description: Absolute Call ACALL unconditionally calls a subroutine located at the indicated address. The instruction increments the PC twice to obtain the address of the following instruction, then pushes the 16-bit result onto the stack (low-order byte first) and increments the Stack Pointer twice. The destination address is obtained by successively concatenating the five high-order bits of the incremented PC opcode bits 7-5, and the second byte of the instruction. The subroutine called must therefore start within the same 2K block of the program memory as the first byte of the instruction following ACALL. No flags are affected. Example: Initially SP equals 07H. The label “SUBRTN” is at program memory location 0345H. After executing the instruction, ACALL SUBRTN at location 0123H, SP will contain 09H, internal RAM locations 08H and 09H will contain 25H and 01H, respectively, and the PC will contain 0345H. Bytes: 2 Cycles: 2 Encoding: A10 Operation: ACALL A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 (PC)←(PC)+ 2 (SP)←(SP) + 1 ((SP)) ←(PC7-0) (SP)←(SP) + 1 ((SP))←(PC15-8) (PC10-0)←page address ADD A, Function: Description: Add ADD adds the byte variable indicated to the Accumulator, leaving the result in the Accumulator. The 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 300 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 carry and auxiliary-carry flags are set, respectively, if there is a carry-out from bit 7 or bit 3, and cleared otherwise. When adding unsigned integers, the carry flag indicates an overflow occurred. OV is set if there is a carry-out of bit 6 but not out of bit 7, or a carry-out of bit 7 but not bit 6; otherwise OV is cleared. When adding signed integers, OV indicates a negative number produced as the sum of two positive operands, or a positive sum from two negative operands. Four source operand addressing modes are allowed: register, direct register-indirect, or immediate. Example: The Accumulator holds 0C3H(11000011B) and register 0 holds 0AAH (10101010B). The instruction, ADD A, R0 will leave 6DH (01101101B) in the Accumulator with the AC flag cleared and both the carry flag and OV set to 1. ADD A, Rn Bytes: 1 Cycles: 1 Encoding: 0 Operation: ADD 0 1 0 1 r r r 0 0 1 0 1 0 0 1 1 i 0 0 1 0 0 (A)← (A) + (Rn) ADD A, direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: ADD 0 1 direct address (A)← (A) + (direct) ADD A, @Ri Bytes: 1 Cycles: 1 Encoding: 0 Operation: ADD 0 1 (A)← (A) + ((Ri)) ADD A, #data Bytes: 2 Cycles: 1 Encoding: 0 Operation: ADD 0 1 immediate data (A)← (A) + #data ADDC A, Function: Description: Add with Carry ADDC simultaneously adds the byte variable indicated, the Carry flag and the Accumulator, leaving the result in the Accumulator. The carry and auxiliary-carry flags are set, respectively, if there is a carry-out from bit 7 or bit 3, and cleared otherwise. When adding unsigned integers, the carry flag indicates an overflow occurred. OV is set if there is a carry-out of bit 6 but not out of bit 7, or a carry-out of bit 7 but not out of bit 6; otherwise OV is cleared. When adding signed integers, OV indicates a negative number produced as the sum of two positive operands or a positive sum from two negative operands. 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 301 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 Four source operand addressing modes are allowed: register, direct, register-indirect, or immediate. Example: The Accumulator holds 0C3H(11000011B) and register 0 holds 0AAH (10101010B) with the Carry. The instruction, ADDC A,R0 will leave 6EH (01101110B) in the Accumulator with the AC flag cleared and both the carry flag and OV set to 1. ADDC A, Rn Bytes: 1 Cycles: 1 Encoding: 0 Operation: ADDC 0 1 1 1 r r r 0 1 0 1 0 1 1 i 0 1 0 0 (A)← (A) + (C) + (Rn) ADDC A, direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: ADDC 0 1 1 direct address (A)← (A) + (C) + (direct) ADDC A, @Ri Bytes: 1 Cycles: 1 Encoding: 0 Operation: ADDC 0 1 1 (A)← (A) + (C) + ((Ri)) ADDC A, #data Bytes: 2 Cycles: 1 Encoding: 0 Operation: ADDC 0 1 1 immediate data (A)← (A) + (C) + #data AJMP addr11 Function: Description: Absolute Jump AJMP transfers program execution to the indicated address, which is formed at run-time by concatenating the high-order five bits of the PC (after incrementing the PC twice), opcode bits 7-5, and the second byte of the instruction. The destination must therefore be within the same 2K block of program memory as the first byte of the instruction following AJMP. Example: The label “JMPADR” is at program memory location 0123H. The instruction, AJMP JMPADR is at location 0345H and will load the PC with 0123H. Bytes: 2 Cycles: 2 Encoding: A10 Operation: AJMP 深圳国芯人工智能有限公司 A9 A8 0 0 0 0 1 国内分销商电话: 0513-5501 2928/2929/2966 A7 A6 A5 A4 A3 A2 A1 A0 去纯技术交流论坛:www.STCAIMCU.com - 302 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 (PC)←(PC)+ 2 (PC10-0)←page address ANL , Function: Description: Logical-AND for byte variables ANL performs the bitwise logical-AND operation between the variables indicated and stores the results in the destination variable. No flags are affected. The two operands allow six addressing mode combinations. When the destination is the Accumulator, the source can use register, direct, register-indirect, or immediate addressing; when the destination is a direct address, the source can be the Accumulator or immediate data. Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch not the input pins. Example: If the Accumulator holds 0C3H(11000011B) and register 0 holds 55H (01010101B) then the instruction, ANL A,R0 will leave 41H (01000001B) in the Accumulator. When the destination is a directly addressed byte, this instruction will clear combinations of bits in any RAM location or hardware register. The mask byte determining the pattern of bits to be cleared would either be a constant contained in the instruction or a value computed in the Accumulator at run-time. The instruction, ANL Pl, #01110011B will clear bits 7, 3, and 2 of output port 1. ANL A, Rn Bytes: 1 Cycles: 1 Encoding: 0 Operation: ANL 1 0 1 1 r r r 0 1 0 1 0 1 1 i 0 1 0 0 (A)← (A) ∧ (Rn) ANL A, direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: ANL 1 0 1 direct address (A)← (A) ∧ (direct) ANL A, @Ri Bytes: 1 Cycles: 1 Encoding: 0 Operation: ANL 1 0 1 (A)← (A) ∧ ((Ri)) ANL A, #data Bytes: 2 Cycles: 1 Encoding: 0 深圳国芯人工智能有限公司 1 0 1 国内分销商电话: 0513-5501 2928/2929/2966 immediate data 去纯技术交流论坛:www.STCAIMCU.com - 303 - STC8A8K64D4 系列技术手册 Operation: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ANL (A)← (A) ∧ #data ANL direct, A Bytes: 2 Cycles: 1 Encoding: 0 Operation: ANL 1 0 1 0 0 1 0 direct address 0 1 1 direct address (direct)←(direct) ∧ (A) ANL direct, #data Bytes: 3 Cycles: 2 Encoding: 0 Operation: ANL 1 0 1 0 immediate data (direct)←(direct) ∧ #data ANL C, Function: Description: Logical-AND for bit variables If the Boolean value of the source bit is a logical 0 then clear the carry flag; otherwise leave the carry flag in its current state. A slash (“ / ”) preceding the operand in the assembly language indicates that the logical complement of the addressed bit is used as the source value, but the source bit itself is not affected. No other flags are affected. Only direct addressing is allowed for the source operand. Example: Set the carry flag if, and only if, P1.0 = 1, ACC. 7 = 1, and OV = 0: MOV C, P1.0 ; LOAD CARRY WITH INPUT PIN STATE ANL C, ACC.7 ; AND CARRY WITH ACCUM. BIT.7 ANL C, /OV ;AND WITH INVERSE OF OVERFLOW FLAG ANL C, bit Bytes: 2 Cycles: 2 Encoding: 1 Operation: ANL 0 0 0 0 0 1 0 bit address 0 0 0 0 bit address (C) ←(C) ∧ (bit) ANL C, /bit Bytes: 2 Cycles: 2 Encoding: 1 Operation: ANL 0 1 (C)← (C) ∧ ( 1 ) CJNE , , rel Function: Description: 深圳国芯人工智能有限公司 Compare and Jump if Not Equal CJNE compares the magnitudes of the first two operands, and branches if their values are not 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 304 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 equal. The branch destination is computed by adding the signed relative-displacement in the last instruction byte to the PC, after incrementing the PC to the start of the next instruction. The carry flag is set if the unsigned integer value of is less than the unsigned integer value of ; otherwise, the carry is cleared. Neither operand is affected. The first two operands allow four addressing mode combinations: the Accumulator may be compared with any directly addressed byte or immediate data, and any indirect RAM location or working register can be compared with an immediate constant. Example: The Accumulator contains 34H. Register 7 contains 56H. The first instruction in the sequence, CJNE R7,#60H, NOT_EQ ; ... ...... NOT_EQ: JC ; ; R7 = 60H. REQ_LOW ... ; IF R7 < 60H. ...... ; R7 > 60H. sets the carry flag and branches to the instruction at label NOT-EQ. By testing the carry flag, this instruction determines whether R7 is greater or less than 60H. If the data being presented to Port 1 is also 34H, then the instruction, WAIT: CJNE A,P1,WAIT clears the carry flag and continues with the next instruction in sequence, since the Accumulator does equal the data read from P1. (If some other value was being input on Pl, the program will loop at this point until the P1 data changes to 34H.) CJNE A, direct, rel Bytes: 3 Cycles: 2 Encoding: Operation: 1 0 1 1 0 1 0 1 direct address 0 0 immediate data rel. address (PC) ←(PC) + 3 IF (A) < > (direct) THEN (PC) ←(PC) +relative offset IF (A) < (direct) THEN (C) ← 1 ELSE (C) ← 0 CJNE A, #data, rel Bytes: 3 Cycles: 2 Encoding: Operation: 1 0 1 1 0 1 rel. address (PC) ←(PC) + 3 IF (A) < > (data) THEN (PC) ←(PC) +relative offset IF (A) < (data) THEN (C) ← 1 ELSE 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 305 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 (C) ← 0 CJNE Rn, #data, rel Bytes: 3 Cycles: 2 Encoding: Operation: 1 0 1 1 1 r r r immediate data rel. address 1 i immediate data rel. address (PC) ←(PC) + 3 IF (Rn) < > (data) THEN (PC) ←(PC) +relative offset IF (Rn) < (data) THEN (C) ← 1 ELSE (C) ← 0 CJNE @Ri, #data, rel Bytes: 3 Cycles: 2 Encoding: Operation: 1 0 1 1 0 1 (PC) ←(PC) + 3 IF (Ri) < > (data) THEN (PC) ←(PC) +relative offset IF (Ri) < (data) THEN (C) ← 1 ELSE (C) ← 0 CLR A Function: Description: Example: Clear Accumulator The Accumulator is cleared (all bits set on zero). No flags are affected. The Accumulator contains 5CH (01011100B). The instruction, CLR A will leave the Accumulator set to 00H (00000000B). Bytes: 1 Cycles: 1 Encoding: 1 Operation: CLR 1 1 0 0 1 0 0 (A)←0 CLR bit Function: Description: 深圳国芯人工智能有限公司 Clear bit The indicated bit is cleared (reset to zero). No other flags are affected. CLR can operate on the 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 306 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 carry flag or any directly addressable bit. Example: Port 1 has previously been written with 5DH (01011101B). The instruction, CLR P1.2 will leave the port set to 59H (01011001B). CLR C Bytes: 1 Cycles: 1 Encoding: 1 Operation: CLR 1 0 0 0 0 1 1 1 0 0 0 0 1 0 (C)←0 CLR bit Bytes: 2 Cycles: 1 Encoding: 1 Operation: CLR bit address (bit)←0 CPL A Function: Description: Complement Accumulator Each bit of the Accumulator is logically complemented (one’s complement). Bits which previously contained a one are changed to a zero and vice-versa. No flags are affected. Example: The Accumulator contains 5CH(01011100B). The instruction, CPL A will leave the Accumulator set to 0A3H (10100011B). Bytes: 1 Cycles: 1 Encoding: 1 Operation: CPL 1 1 1 0 1 0 0 (A)← ( ) CPL bit Function: Description: Complement bit The bit variable specified is complemented. A bit which had been a one is changed to zero and vice-versa. No other flags are affected. CLR can operate on the carry or any directly addressable bit. Note: When this instruction is used to modify an output pin, the value used as the original data will be read from the output data latch, not the input pin. Example: Port 1 has previously been written with 5BH(01011011B). The instruction, CPL P1.1 CPL P1.2 will leave the port set to 5DH(01011101B). CPL C 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 307 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Bytes: 1 Cycles: 1 Encoding: 1 Operation: CPL 0 技术支持: 19864585985 1 1 0 0 1 1 1 1 0 0 1 0 选型顾问: 13922805190 (C)← ( ) CPL bit Bytes: 2 Cycles: 1 Encoding: 1 Operation: CPL 0 (bit)← ( bit address ) DA A Function: Description: Decimal-adjust Accumulator for Addition DA A adjusts the eight-bit value in the Accumulator resulting from the earlier addition of two variables (each in packed-BCD format), producing two four-bit digits. Any ADD or ADDC instruction may have been used to perform the addition. If Accumulator bits 3-0 are greater than nine (xxxx1010-xxxx1111), or if the AC flag is one, six is added to the Accumulator producing the proper BCD digit in the low-order nibble. This internal addition would set the carry flag if a carry-out of the low-order four-bit field propagated through all high-order bits, but it would not clear the carry flag otherwise. If the carry flag is now set or if the four high-order bits now exceed nine(1010xxxx- 1111xxxx), these high-order bits are incremented by six, producing the proper BCD digit in the high-order nibble. Again, this would set the carry flag if there was a carry-out of the high-order bits, but wouldn’t clear the carry. The carry flag thus indicates if the sum of the original two BCD variables is greater than 100, allowing multiple precision decimal addition. OV is not affected. All of this occurs during the one instruction cycle. Essentially, this instruction performs the decimal conversion by adding 00H, 06H, 60H, or 66H to the Accumulator, depending on initial Accumulator and PSW conditions. Note: DA A cannot simply convert a hexadecimal number in the Accumulator to BCD notation, nor does DA A apply to decimal subtraction. Example: The Accumulator holds the value 56H(01010110B) representing the packed BCD digits of the decimal number 56. Register 3 contains the value 67H (01100111B) representing the packed BCD digits of the decimal number 67. The carry flag is set. The instruction sequence. ADDC A,R3 DA A will first perform a standard twos-complement binary addition, resulting in the value 0BEH (10111110) in the Accumulator. The carry and auxiliary carry flags will be cleared. 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 308 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 The Decimal Adjust instruction will then alter the Accumulator to the value 24H (00100100B), indicating the packed BCD digits of the decimal number 24, the low-order two digits of the decimal sum of 56,67, and the carry-in. The carry flag will be set by the Decimal Adjust instruction, indicating that a decimal overflow occurred. The true sum 56, 67, and 1 is 124. BCD variables can be incremented or decremented by adding 01H or 99H. If the Accumulator initially holds 30H (representing the digits of 30 decimal), then the instruction sequence, ADD A, #99H DA A will leave the carry set and 29H in the Accumulator, since 30+99=129. The low-order byte of the sum can be interpreted to mean 30 – 1 = 29. Bytes: 1 Cycles: 1 Encoding: 1 Operation: DA 1 0 1 0 1 0 0 -contents of Accumulator are BCD IF [[(A3-0) > 9] V [(AC) = 1]] THEN(A3-0) ←(A3-0) + 6 AND IF [[(A7-4) > 9] V [(C) = 1]] THEN (A7-4)←(A7-4) + 6 DEC byte Function: Description: Decrement The variable indicated is decremented by 1. An original value of 00H will underflow to 0FFH. No flags are affected. Four operand addressing modes are allowed: accumulator, register, direct, or register-indirect. Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins. Example: Register 0 contains 7FH (01111111B). Internal RAM locations 7EH and 7FH contain 00H and 40H, respectively. The instruction sequence, DEC @R0 DEC R0 DEC @R0 will leave register 0 set to 7EH and internal RAM locations 7EH and 7FH set to 0FFH and 3FH. DEC A Bytes: 1 Cycles: 1 Encoding: 0 Operation: DEC 0 0 1 0 1 0 0 (A)← (A) -1 DEC Rn 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 309 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Bytes: 1 Cycles: 1 Encoding: 0 Operation: DEC 0 0 技术支持: 19864585985 1 1 r r r 1 0 1 0 1 0 1 1 i 选型顾问: 13922805190 (Rn)←(Rn) - 1 DEC direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: DEC 0 0 Direct address (direct)←(direct) - 1 DEC @Ri Bytes: 1 Cycles: 1 Encoding: 0 Operation: DEC 0 0 1 ((Ri))←((Ri)) - 1 DIV AB Function: Description: Divide DIV AB divides the unsigned eight-bit integer in the Accumulator by the unsigned eight-bit integer in register B. The Accumulator receives the integer part of the quotient; register B receives the integer remainder. The carry and OV flags will be cleared. Exception: if B had originally contained 00H, the values returned in the Accumulator and B-register will be undefined and the overflow flag will be set. The carry flag is cleared in any case. Example: The Accumulator contains 251(OFBH or 11111011B) and B contains 18(12H or 00010010B). The instruction, DIV AB will leave 13 in the Accumulator (0DH or 00001101B) and the value 17 (11H or 00010001B) in B, since 251 = (13×18) + 17. Carry and OV will both be cleared. Bytes: 1 Cycles: 4 Encoding: 1 Operation: DIV 0 0 0 0 1 0 0 (A)15-8 (B)7-0 ← (A)/(B) DJNZ , Function: Description: Decrement and Jump if Not Zero DJNZ decrements the location indicated by 1, and branches to the address indicated by the second operand if the resulting value is not zero. An original value of 00H will underflow to 0FFH. No flags are affected. The branch destination would be computed by adding the signed 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 310 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 relative-displacement value in the last instruction byte to the PC, after incrementing the PC to the first byte of the following instruction. The location decremented may be a register or directly addressed byte. Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins. Example: Internal RAM locations 40H, 50H, and 60H contain the values 01H, 70H, and 15H, respectively. The instruction sequence, DJNZ 40H, LABEL_1 DJNZ 50H, LABEL_2 DJNZ 60H, LABEL_3 will cause a jump to the instruction at label LABEL_2 with the values 00H, 6FH, and 15H in the three RAM locations. The first jump was not taken because the result was zero. This instruction provides a simple way of executing a program loop a given number of times, or for adding a moderate time delay (from 2 to 512 machine cycles) with a single instruction. The instruction sequence, MOV R2,#8 TOOOLE: CPL P1.7 DJNZ R2, TOOGLE will toggle P1.7 eight times, causing four output pulses to appear at bit 7 of output Port 1. Each pulse will last three machine cycles; two for DJNZ and one to alter the pin. DJNZ Rn, rel Bytes: 2 Cycles: 2 Encoding: 1 Operation: DJNZ 1 0 1 1 r r r rel. address 1 0 1 direct address (PC) ←(PC) + 2 (Rn) ←(Rn) – 1 IF (Rn) > 0 or (Rn) < 0 THEN (PC) ←(PC)+ rel DJNZ direct, rel Bytes: 3 Cycles: 2 Encoding: 1 Operation: DJNZ 1 0 1 0 rel. address (PC) ←(PC) + 2 (direct) ←(direct) – 1 IF (direct) > 0 or (direct) < 0 THEN (PC) ←(PC)+ rel INC Function: Description: 深圳国芯人工智能有限公司 Increment INC increments the indicated variable by 1. An original value of 0FFH will overflow to 00H.No 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 311 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 flags are affected. Three addressing modes are allowed: register, direct, or register-indirect. Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins. Example: Register 0 contains 7EH (01111110B). Internal RAM locations 7EH and 7FH contain 0FFH and 40H, respectively. The instruction sequence, INC @R0 INC R0 INC @R0 will leave register 0 set to 7FH and internal RAM locations 7EH and 7FH holding (respectively) 00H and 41H. INC A Bytes: 1 Cycles: 1 Encoding: 0 Operation: INC 0 0 0 0 1 0 0 0 0 1 r r r 0 0 1 0 1 0 1 1 i (A) ←(A)+1 INC Rn Bytes: 1 Cycles: 1 Encoding: 0 Operation: INC 0 (Rn) ←(Rn)+1 INC direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: INC 0 0 direct address (direct) ←(direct)+1 INC @Ri Bytes: 1 Cycles: 1 Encoding: 0 Operation: INC 0 0 0 ((Ri))←((Ri)) + 1 INC DPTR Function: Description: Increment Data Pointer Increment the 16-bit data pointer by 1. A 16-bit increment (modulo 216) is performed; an overflow of the low-order byte of the data pointer (DPL) from 0FFH to 00H will increment the high-order-byte (DPH). No flags are affected. This is the only 16-bit register which can be incremented. Example: Register DPH and DPL contains 12H and 0FEH, respectively. The instruction sequence, IINC DPTR INC DPTR 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 312 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 INC DPTR will change DPH and DPL to 13H and 01H. Bytes: 1 Cycles: 2 Encoding: 1 Operation: INC 0 1 0 0 0 1 1 (DPTR) ← (DPTR) + 1 JB bit, rel Function: Description: Jump if Bit set If the indicated bit is a one, jump to the address indicated; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the third instruction byte to the PC, after incrementing the PC to the first byte of the next instruction. The bit tested is not modified. No flags are affected Example: The data present at input port 1 is 11001010B. The Accumulator holds 56 (01010110B). The instruction sequence, JB P1.2, LABEL1 JB ACC.2, LABEL2 will cause program execution to branch to the instruction at label LABEL2. Bytes: 3 Cycles: 2 Encoding: Operation: 0 0 1 0 0 0 0 0 bit address rel. address JB (PC) ← (PC) + 3 IF (bit) = 1 THEN (PC) ← (PC)+ rel JBC bit, rel Function: Description: Jump if Bit is set and Clear bit If the indicated bit is one, branch to the address indicated; otherwise proceed with the next instruction. The bit will not be cleared if it is already a zero. The branch destination is computed by adding the signed relative-displacement in the third instruction byte to the PC, after incrementing the PC to the first byte of the next instruction. No flags are affected. Note: When this instruction is used to test an output pin, the value used as the original data will be read from the output data latch, not the input pin. Example: The Accumulator holds 56H (01010110B). The instruction sequence, JBC ACC.3, LABEL1 JBC ACC.2, LABEL2 will cause program execution to continue at the instruction identified by the label LABEL2, with the Accumulator modified to 52H (01010010B). Bytes: 3 Cycles: 2 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 313 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Encoding: Operation: 0 0 0 1 0 0 技术支持: 19864585985 0 0 bit address 选型顾问: 13922805190 rel. address JB (PC) ← (PC) + 3 IF (bit) = 1 THEN (bit) ← 0 (PC) ← (PC)+ rel JC rel Function: Description: Jump if Carry is set If the carry flag is set, branch to the address indicated; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the second instruction byte to the PC, after incrementing the PC twice. No flags are affected. Example: The carry flag is cleared. The instruction sequence, JC LABEL1 CPL C JC LABEL2 will set the carry and cause program execution to continue at the instruction identified by the label LABEL2. Bytes: 2 Cycles: 2 Encoding: Operation: 0 1 0 0 0 0 0 0 rel. address JC (PC) ← (PC) + 2 IF (C) = 1 THEN (PC) ← (PC)+ rel JMP @A+DPTR Function: Description: Jump indirect Add the eight-bit unsigned contents of the Accumulator with the sixteen-bit data pointer, and load the resulting sum to the program counter. This will be the address for subsequent instruction fetches. Sixteen-bit addition is performed (modulo ): a carry-out from the low-order eight bits propagates through the higher-order bits. Neither the Accumulator nor the Data Pointer is altered. No flags are affected. Example: An even number from 0 to 6 is in the Accumulator. The following sequence of instructions will branch to one of four AJMP instructions in a jump table starting at JMP_TBL: MOV DPTR, #JMP_TBL JMP @A+DPTR 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 314 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 JMP-TBL: AJMP LABEL0 AJMP LABEL1 AJMP LABEL2 AJMP LABEL3 If the Accumulator equals 04H when starting this sequence, execution will jump to label LABEL2. Remember that AJMP is a two-byte instruction, so the jump instructions start at every other address. Bytes: 1 Cycles: 2 Encoding: 0 Operation: JMP 1 1 1 0 0 1 1 (PC) ← (A) + (DPTR) JNB bit, rel Function: Description: Jump if Bit is not set If the indicated bit is a zero, branch to the indicated address; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the third instruction byte to the PC, after incrementing the PC to the first byte of the next instruction. The bit tested is not modified. No flags are affected. Example: The data present at input port 1 is 11001010B. The Accumulator holds 56H (01010110B). The instruction sequence, JNB P1.3, LABEL1 JNB ACC.3, LABEL2 will cause program execution to continue at the instruction at label LABEL2. Bytes: 3 Cycles: 2 Encoding: 0 Operation: JNB 0 1 1 0 0 0 0 bit address rel. address (PC) ←(PC) + 3 IF (bit) = 0 THEN (PC) ← (PC) + rel JNC rel Function: Description: Jump if Carry not set If the carry flag is a zero, branch to the address indicated; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the second instruction byte to the PC, after incrementing the PC twice to point to the next instruction. The carry flag is not modified. Example: The carry flag is set. The instruction sequence, JNC LABEL1 CPL C JNC LABEL2 will clear the carry and cause program execution to continue at the instruction identified by the 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 315 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 label LABEL2. Bytes: 2 Cycles: 2 Encoding: 0 Operation: JNC 1 0 1 0 0 0 0 rel. address (PC) ←(PC) + 2 IF (C) = 0 THEN (PC) ← (PC) + rel JNZ rel Function: Description: Jump if Accumulator Not Zero If any bit of the Accumulator is a one, branch to the indicated address; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the second instruction byte to the PC, after incrementing the PC twice. The Accumulator is not modified. No flags are affected. Example: The Accumulator originally holds 00H. The instruction sequence, JNZ LABEL1 INC A JNZ LAEEL2 will set the Accumulator to 01H and continue at label LABEL2. Bytes: 2 Cycles: 2 Encoding: 0 Operation: JNZ 1 1 1 0 0 0 0 rel. address (PC) ←(PC) + 2 IF (A) ≠ 0 THEN (PC) ← (PC) + rel JZ rel Function: Description: Jump if Accumulator Zero If all bits of the Accumulator are zero, branch to the address indicated; otherwise proceed with the next instruction. The branch destination is computed by adding the signed relative-displacement in the second instruction byte to the PC, after incrementing the PC twice. The Accumulator is not modified. No flags are affected. Example: The Accumulator originally contains 01H. The instruction sequence, JZ LABEL1 DEC A JZ LAEEL2 will change the Accumulator to 00H and cause program execution to continue at the instruction identified by the label LABEL2. Bytes: 2 Cycles: 2 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 316 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Encoding: Operation: 0 1 1 0 0 0 技术支持: 19864585985 0 0 选型顾问: 13922805190 rel. address JZ (PC) ←(PC) + 2 IF (A) = 0 THEN (PC) ← (PC) + rel LCALL addr16 Function: Description: Long call LCALL calls a subroutine located at the indicated address. The instruction adds three to the program counter to generate the address of the next instruction and then pushes the 16-bit result onto the stack (low byte first), incrementing the Stack Pointer by two. The high-order and low-order bytes of the PC are then loaded, respectively, with the second and third bytes of the LCALL instruction. Program execution continues with the instruction at this address. The subroutine may therefore begin anywhere in the full 64K-byte program memory address space. No flags are affected. Example: Initially the Stack Pointer equals 07H. The label “SUBRTN” is assigned to program memory location 1234H. After executing the instruction, LCALL SUBRTN at location 0123H, the Stack Pointer will contain 09H, internal RAM locations 08H and 09H will contain 26H and 01H, and the PC will contain 1234H. Bytes: 3 Cycles: 2 Encoding: Operation: 0 0 0 1 0 0 1 0 addr15-addr8 addr7-addr0 LCALL (PC) ←(PC) + 3 (SP) ←(SP) + 1 ((SP)) ←(PC7-0) (SP) ←(SP) + 1 ((SP)) ←(PC15-8) (PC) ← addr15-0 LJMP addr16 Function: Description: Long Jump LJMP causes an unconditional branch to the indicated address, by loading the high-order and low-order bytes of the PC (respectively) with the second and third instruction bytes. The destination may therefore be anywhere in the full 64K program memory address space. No flags are affected. Example: The label “JMPADR” is assigned to the instruction at program memory location 1234H. The instruction, LJMP JMPADR at location 0123H will load the program counter with 1234H. Bytes: 3 Cycles: 2 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 317 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Encoding: 0 Operation: LJMP 0 0 0 0 0 技术支持: 19864585985 1 0 addr15-addr8 选型顾问: 13922805190 addr7-addr0 (PC) ← addr15-0 MOV , Function: Description: Move byte variable The byte variable indicated by the second operand is copied into the location specified by the first operand. The source byte is not affected. No other register or flag is affected. This is by far the most flexible operation. Fifteen combinations of source and destination addressing modes are allowed. Example: Internal RAM location 30H holds 40H. The value of RAM location 40H is 10H. The data present at input port 1 is 11001010B (0CAH). MOV R0, #30H ; R0< = 30H MOV A, @R0 ; A < = 40H MOV R1, A ; R1 < = 40H MOV B, @Rl ; B < = 10H MOV @Rl, Pl ; RAM (40H) < = 0CAH MOV P2, P1 ; P2 #0CAH leaves the value 30H in register 0,40H in both the Accumulator and register 1,10H in register B, and 0CAH(11001010B) both in RAM location 40H and output on port 2. MOV A,Rn Bytes: 1 Cycles: 1 Encoding: 1 Operation: MOV 1 1 0 1 r r r 1 0 0 1 0 1 (A) ←(Rn) *MOV A,direct Bytes: 2 Cycles: 1 Encoding: 1 Operation: MOV 1 direct address (A)← (direct) *MOV A, ACC is not a valid instruction. MOV A,@Ri Bytes: 1 Cycles: 1 Encoding: 1 Operation: MOV 1 1 0 0 1 1 i 1 1 0 1 0 0 (A) ←((Ri)) MOV A,#data Bytes: 2 Cycles: 1 Encoding: 0 Operation: MOV 深圳国芯人工智能有限公司 1 国内分销商电话: 0513-5501 2928/2929/2966 immediate data 去纯技术交流论坛:www.STCAIMCU.com - 318 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 (A)←#data MOV Rn, A Bytes: 1 Cycles: 1 Encoding: 1 Operation: MOV 1 1 1 1 r r r 1 0 1 r r r 1 1 1 r r r 1 1 0 1 0 1 direct address 0 1 r r r direct address 0 0 1 0 1 0 0 1 1 i (Rn) ←(A) MOV Rn,direct Bytes: 2 Cycles: 2 Encoding: 1 Operation: MOV 0 direct address (Rn)← (direct) MOV Rn,#data Bytes: 2 Cycles: 1 Encoding: 0 Operation: MOV 1 immediate data (Rn)←#data MOV direct, A Bytes: 2 Cycles: 1 Encoding: 1 Operation: MOV 1 (direct)← (A) MOV direct, Rn Bytes: 2 Cycles: 2 Encoding: 1 Operation: MOV 0 0 (direct)← (Rn) MOV direct, direct Bytes: 3 Cycles: 2 Encoding: 1 Operation: MOV 0 0 dir.addr. (src) dir.addr. (dest) (direct)← (direct) MOV direct, @Ri Bytes: 2 Cycles: 2 Encoding: 1 Operation: MOV 0 0 direct address (direct)←((Ri)) MOV direct, #data Bytes: 深圳国芯人工智能有限公司 3 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 319 - STC8A8K64D4 系列技术手册 Cycles: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 2 Encoding: 0 Operation: MOV 1 1 1 0 1 0 1 1 1 0 1 1 i 1 0 0 1 1 i 1 0 1 1 i direct address immediate data (direct)←#data MOV @Ri, A Bytes: 1 Cycles: 1 Encoding: 1 Operation: MOV 1 ((Ri))←(A) MOV @Ri, direct Bytes: 2 Cycles: 2 Encoding: 1 Operation: MOV 0 direct address ((Ri))←(direct) MOV @Ri, #data Bytes: 2 Cycles: 1 Encoding: 0 Operation: MOV 1 1 immediate data ((Ri))←#data MOV , Function: Description: Move bit data The Boolean variable indicated by the second operand is copied into the location specified by the first operand. One of the operands must be the carry flag; the other may be any directly addressable bit. No other register or flag is affected. Example: The carry flag is originally set. The data present at input Port 3 is 11000101B. The data previously written to output Port 1 is 35H (00110101B). MOV P1.3, C MOV C, P3.3 MOV P1.2, C will leave the carry cleared and change Port 1 to 39H (00111001B). MOV C, bit Bytes: 2 Cycles: 1 Encoding: 1 Operation: MOV 0 1 0 0 0 1 0 bit address 0 1 0 0 1 0 bit address (C)← (bit) MOV bit, C Bytes: 2 Cycles: 2 Encoding: 深圳国芯人工智能有限公司 1 0 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 320 - STC8A8K64D4 系列技术手册 Operation: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 MOV (bit)← (C) MOV DPTR , #data 16 Function: Description: Load Data Pointer with a 16-bit constant The Data Pointer is loaded with the 16-bit constant indicated. The 16-bit constant is loaded into the second and third bytes of the instruction. The second byte (DPH) is the high-order byte, while the third byte (DPL) holds the low-order byte. No flags are affected. This is the only instruction which moves 16 bits of data at once. Example: The instruction, MOV DPTR, #1234H will load the value 1234H into the Data Pointer: DPH will hold 12H and DPL will hold 34H. Bytes: 3 Cycles: 2 Encoding: 1 Operation: MOV 0 0 1 0 0 0 0 immediate data15-8 immediate data7-0 (DPTR) ← #data15-0 DPH DPL ← #data15-8 #data7-0 MOVC A , @A+ Function: Description: Move Code byte The MOVC instructions load the Accumulator with a code byte, or constant from program memory. The address of the byte fetched is the sum of the original unsigned eight-bit. Accumulator contents and the contents of a sixteen-bit base register, which may be either the Data Pointer or the PC. In the latter case, the PC is incremented to the address of the following instruction before being added with the Accumulator; otherwise the base register is not altered. Sixteen-bit addition is performed so a carry-out from the low-order eight bits may propagate through higher-order bits. No flags are affected. Example: A value between 0 and 3 is in the Accumulator. The following instructions will translate the value in the Accumulator to one of four values defined by the DB (define byte) directive. REL-PC: INC A MOVC A, @A+PC RET DB 66H DB 77H DB 88H DB 99H If the subroutine is called with the Accumulator equal to 01H, it will return with 77H in the Accumulator. The INC A before the MOVC instruction is needed to “get around” the RET instruction above the table. If several bytes of code separated the MOVC from the table, the corresponding number would be added to the Accumulator instead. MOVC A,@A+DPTR Bytes: 深圳国芯人工智能有限公司 1 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 321 - STC8A8K64D4 系列技术手册 Cycles: 官方网站: www.STCAI.com 选型顾问: 13922805190 2 Encoding: Operation: 技术支持: 19864585985 1 0 0 1 0 0 1 1 0 0 1 1 MOVC (A) ←((A)+(DPTR)) MOVC A,@A+PC Bytes: 1 Cycles: 2 Encoding: Operation: 1 0 0 0 MOVC (PC) ←(PC)+1 (A) ←((A)+(PC)) MOVX , Function: Description: Move External The MOVX instructions transfer data between the Accumulator and a byte of external data memory, hence the “X” appended to MOV. There are two types of instructions, differing in whether they provide an eight-bit or sixteen-bit indirect address to the external data RAM. In the first type, the contents of R0 or R1 in the current register bank provide an eight-bit address multiplexed with data on P0. Eight bits are sufficient for external I/O expansion decoding or for a relatively small RAM array. For somewhat larger arrays, any output port pins can be used to output higher-order address bits. These pins would be controlled by an output instruction preceding the MOVX. In the second type of MOVX instruction, the Data Pointer generates a sixteen-bit address. P2 outputs the high-order eight address bits (the contents of DPH) while P0 multiplexes the low-order eight bits (DPL) with data. The P2 Special Function Register retains its previous contents while the P2 output buffers are emitting the contents of DPH. This form is faster and more efficient when accessing very large data arrays (up to 64K bytes), since no additional instructions are needed to set up the output ports. It is possible in some situations to mix the two MOVX types. A large RAM array with its high-order address lines driven by P2 can be addressed via the Data Pointer, or with code to output high-order address bits to P2 followed by a MOVX instruction using R0 or R1. Example: An external 256 byte RAM using multiplexed address/data lines (e.g., an Intel 8155 RAM/ I/O/Timer) is connected to the 8051 Port 0. Port 3 provides control lines for the external RAM. Ports 1 and 2 are used for normal I/O. Registers 0 and 1 contain 12H and 34H. Location 34H of the external RAM holds the value 56H. The instruction sequence, MOVX A, @R1 MOVX @R0, A copies the value 56H into both the Accumulator and external RAM location 12H. MOVX A,@Ri Bytes: 1 Cycles: 2 Encoding: Operation: 1 1 1 0 0 0 1 i MOVX (A) ← ((Ri)) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 322 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 MOVX A,@DPTR Bytes: 1 Cycles: 2 Encoding: Operation: 1 1 1 0 0 0 0 0 1 1 0 0 1 i 1 1 0 0 0 0 MOVX (A) ←((DPTR)) MOVX @Ri, A Bytes: 1 Cycles: 2 Encoding: Operation: 1 1 MOVX ((Ri))←(A) MOVX @DPTR, A Bytes: 1 Cycles: 2 Encoding: Operation: 1 1 MOVX (DPTR)←(A) MUL AB Function: Description: Multiply MUL AB multiplies the unsigned eight-bit integers in the Accumulator and register B. The low-order byte of the sixteen-bit product is left in the Accumulator, and the high-order byte in B. If the product is greater than 255 (0FFH) the overflow flag is set; otherwise it is cleared. The carry flag is always cleared. Example: Originally the Accumulator holds the value 80 (50H). Register B holds the value 160 (0A0H). The instruction, MUL AB will give the product 12,800 (3200H), so B is changed to 32H (00110010B) and the Accumulator is cleared. The overflow flag is set, carry is cleared. Bytes: 1 Cycles: 4 Encoding: Operation: 1 0 1 0 0 1 0 0 (A)7-0 ← (A)×(B) (B)15-8 NOP Function: Description: No Operation Execution continues at the following instruction. Other than the PC, no registers or flags are affected. Example: It is desired to produce a low-going output pulse on bit 7 of Port 2 lasting exactly 5 cycles. A simple SETB/CLR sequence would generate a one-cycle pulse, so four additional cycles must be inserted. This may be done (assuming no interrupts are enabled) with the instruction sequence. 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 323 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 CLR P2.7 NOP NOP NOP NOP SETB P2.7 Bytes: 1 Cycles: 1 Encoding: 0 Operation: NOP 0 0 0 0 0 0 0 (PC) ←(PC)+1 ORL , Function: Description: Logical-OR for byte variables ORL performs the bitwise logical-OR operation between the indicated variables, storing the results in the destination byte. No flags are affected. The two operands allow six addressing mode combinations. When the destination is the Accumulator, the source can use register, direct, register-indirect, or immediate addressing; when the destination is a direct address, the source can be the Accumulator or immediate data. Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins. Example: If the Accumulator holds 0C3H (11000011B) and R0 holds 55H (01010101B) then the instruction, ORL A, R0 will leave the Accumulator holding the value 0D7H (11010111B). When the destination is a directly addressed byte, the instruction can set combinations of bits in any RAM location or hardware register. The pattern of bits to be set is determined by a mask byte, which may be either a constant data value in the instruction or a variable computed in the Accumulator at run-time. The instruction, ORL P1, #00110010B will set bits 5,4, and 1of output Port 1. ORL A, Rn Bytes: 1 Cycles: 1 Encoding: 0 Operation: ORL 1 0 0 1 r r r 0 0 1 0 1 (A) ←(A)∨(Rn) ORL A, direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: ORL 1 0 direct address (A) ←(A)∨(direct) ORL A, @Ri 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 324 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Bytes: 1 Cycles: 1 Encoding: 0 Operation: ORL 1 0 技术支持: 19864585985 0 0 1 1 i 0 0 1 0 0 immediate data 0 0 0 1 0 direct address 0 0 1 1 direct address 选型顾问: 13922805190 (A) ←(A)∨((Ri)) ORL A, #data Bytes: 2 Cycles: 1 Encoding: 0 Operation: ORL 1 0 (A) ←(A)∨#data ORL direct, A Bytes: 2 Cycles: 1 Encoding: 0 Operation: ORL 1 0 (direct)← (direct)∨(A) ORL direct, #data Bytes: 3 Cycles: 2 Encoding: 0 Operation: ORL 1 0 0 immediate data (direct)← (direct)∨#data ORL C, Function: Description: Logical-OR for bit variables Set the carry flag if the Boolean value is a logical 1; leave the carry in its current state otherwise. A slash (“ / ”) preceding the operand in the assembly language indicates that the logical complement of the addressed bit is used as the source value, but the source bit itself is not affected. No other flags are affected. Example: Set the carry flag if and only if P1.0 = 1, ACC. 7 = 1, or OV = 0: MOV C, P1.0 ;LOAD CARRY WITH INPUT PIN P10 ORL C, ACC.7 ;OR CARRY WITH THE ACC.BIT 7 ORL C, /OV ;OR CARRY WITH THE INVERSE OF OV ORL C, bit Bytes: 2 Cycles: 2 Encoding: 0 Operation: ORL 1 1 1 0 0 1 0 bit address 0 0 0 0 0 bit address (C) ←(C)∨(bit) ORL C, /bit Bytes: 2 Cycles: 2 Encoding: 深圳国芯人工智能有限公司 1 0 1 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 325 - STC8A8K64D4 系列技术手册 Operation: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ORL (C) ←(C)∨( ) POP direct Function: Description: Pop from stack The contents of the internal RAM location addressed by the Stack Pointer is read, and the Stack Pointer is decremented by one. The value read is then transferred to the directly addressed byte indicated. No flags are affected. Example: The Stack Pointer originally contains the value 32H, and internal RAM locations 30H through 32H contain the values 20H, 23H, and 01H, respectively. The instruction sequence, POP DPH POP DPL will leave the Stack Pointer equal to the value 30H and the Data Pointer set to 0123H. At this point the instruction, POP SP will leave the Stack Pointer set to 20H. Note that in this special case the Stack Pointer was decremented to 2FH before being loaded with the value popped (20H). Bytes: 2 Cycles: 2 Encoding: 1 Operation: POP 1 0 1 0 0 0 0 direct address (direct) ←((SP)) (SP) ← (SP) - 1 PUSH direct Function: Description: Push onto stack The Stack Pointer is incremented by one. The contents of the indicated variable is then copied into the internal RAM location addressed by the Stack Pointer. Otherwise no flags are affected. Example: On entering an interrupt routine the Stack Pointer contains 09H. The Data Pointer holds the value 0123H. The instruction sequence, PUSH DPL PUSH DPH will leave the Stack Pointer set to 0BH and store 23H and 01H in internal RAM locations 0AH and 0BH, respectively. Bytes: 2 Cycles: 2 Encoding: 1 Operation: PUSH 1 0 0 0 0 0 0 direct address (SP) ←(SP) + 1 ((SP)) ← (direct) RET 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 326 - STC8A8K64D4 系列技术手册 Function: Description: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 Return from subroutine RET pops the high-and low-order bytes of the PC successively from the stack, decrementing the Stack Pointer by two. Program execution continues at the resulting address, generally the instruction immediately following an ACALL or LCALL. No flags are affected. Example: The Stack Pointer originally contains the value 0BH. Internal RAM locations 0AH and 0BH contain the values 23H and 01H, respectively. The instruction, RET will leave the Stack Pointer equal to the value 09H. Program execution will continue at location 0123H. Bytes: 1 Cycles: 2 Encoding: 0 Operation: RET 0 1 0 0 0 1 0 (PC15-8) ←((SP)) (SP) ←(SP) -1 (PC7-0) ←((SP)) (SP) ←(SP) -1 RETI Function: Description: Return from interrupt RETI pops the high- and low-order bytes of the PC successively from the stack, and restores the interrupt logic to accept additional interrupts at the same priority level as the one just processed. The Stack Pointer is left decremented by two. No other registers are affected; the PSW is not automatically restored to its pre-interrupt status. Program execution continues at the resulting address, which is generally the instruction immediately after the point at which the interrupt request was detected. If a lower- or same-level interrupt had been pending when the RETI instruction is executed, that one instruction will be executed before the pending interrupt is processed. Example: The Stack Pointer originally contains the value 0BH. An interrupt was detected during the instruction ending at location 0122H. Internal RAM locations 0AH and 0BH contain the values 23H and 01H, respectively. The instruction, RETI will leave the Stack Pointer equal to 09H and return program execution to location 0123H. Bytes: 1 Cycles: 2 Encoding: 0 Operation: RETI 0 1 1 0 0 1 0 (PC15-8) ←((SP)) (SP) ←(SP) -1 (PC7-0) ←((SP)) (SP) ←(SP) -1 RL A 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 327 - STC8A8K64D4 系列技术手册 Function: Description: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 Rotate Accumulator Left The eight bits in the Accumulator are rotated one bit to the left. Bit 7 is rotated into the bit 0 position. No flags are affected. Example: The Accumulator holds the value 0C5H (11000101B). The instruction, RL A leaves the Accumulator holding the value 8BH (10001011B) with the carry unaffected. Bytes: 1 Cycles: 1 Encoding: 0 Operation: RL 0 1 (An+1) ← (An) 0 0 0 1 1 n = 0-6 (A0) ←(A7) RLC A Function: Description: Rotate Accumulator Left through the Carry flag The eight bits in the Accumulator and the carry flag are together rotated one bit to the left. Bit 7 moves into the carry flag; the original state of the carry flag moves into the bit 0 position. No other flags are affected. Example: The Accumulator holds the value 0C5H (11000101B), and the carry is zero. The instruction, RLC A leaves the Accumulator holding the value 8BH (10001011B) with the carry set. Bytes: 1 Cycles: 1 Encoding: 0 Operation: RLC 0 1 (An+1) ←(An) 1 0 0 1 1 n = 0-6 (A0) ←(C) (C) ←(A7) RR A Function: Description: Rotate Accumulator Right The eight bits in the Accumulator are rotated one bit to the right. Bit 0 is rotated into the bit 7 position. No flags are affected. Example: The Accumulator holds the value 0C5H (11000101B). The instruction, RR A leaves the Accumulator holding the value 0E2H (11100010B) with the carry unaffected. Bytes: 1 Cycles: 1 Encoding: 0 Operation: RR 0 0 (An) ←(An+1) 0 0 0 1 1 n=0-6 (A7) ←(A0) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 328 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RRC A Function: Description: Rotate Accumulator Right through the Carry flag The eight bits in the Accumulator and the carry flag are together rotated one bit to the right. Bit 0 moves into the carry flag; the original value of the carry flag moves into the bit 7 position. No other flags are affected. Example: The Accumulator holds the value 0C5H (11000101B), and the carry is zero. The instruction, RRC A leaves the Accumulator holding the value 62H (01100010B) with the carry set. Bytes: 1 Cycles: 1 Encoding: 0 Operation: RRC 0 0 1 (An+1) ←(An) 0 0 1 1 n=0-6 (A7) ←(C) (C) ←(A0) SETB Function: Description: Set bit SETB sets the indicated bit to one. SETB can operate on the carry flag or any directly addressable bit. No other flags are affected. Example: The carry flag is cleared. Output Port 1 has been written with the value 34H (00110100B). The instructions, SETB C SETB P1.0 will leave the carry flag set to 1 and change the data output on Port 1 to 35H (00110101B). SETB C Bytes: 1 Cycles: 1 Encoding: 1 Operation: SETB 1 0 1 0 0 1 1 0 1 0 0 1 0 (C) ← 1 SETB bit Bytes: 2 Cycles: 1 Encoding: 1 Operation: SETB 1 bit address (bit) ← 1 SJMP rel Function: Description: 深圳国芯人工智能有限公司 Short Jump Program control branches unconditionally to the address indicated. The branch destination is 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 329 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 computed by adding the signed displacement in the second instruction byte to the PC, after incrementing the PC twice. Therefore, the range of destinations allowed is from 128bytes preceding this instruction to 127 bytes following it. Example: The label “RELADR” is assigned to an instruction at program memory location 0123H. The instruction, SJMP RELADR will assemble into location 0100H. After the instruction is executed, the PC will contain the value 0123H. (Note: Under the above conditions the instruction following SJMP will be at 102H.Therefore, the displacement byte of the instruction will be the relative offset (0123H - 0102H) = 21H. Put another way, an SJMP with a displacement of 0FEH would be an one-instruction infinite loop). Bytes: 2 Cycles: 2 Encoding: 1 Operation: SJMP 0 0 0 0 0 0 0 rel. address (PC) ←(PC)+2 (PC) ← (PC)+rel SUBB A, Function: Description: Subtract with borrow SUBB subtracts the indicated variable and the carry flag together from the Accumulator, leaving the result in the Accumulator. SUBB sets the carry (borrow)flag if a borrow is needed for bit 7, and clears C otherwise.(If C was set before executing a SUBB instruction, this indicates that a borrow was needed for the previous step in a multiple precision subtraction, so the carry is subtracted from the Accumulator along with the source operand).AC is set if a borrow is needed for bit 3, and cleared otherwise. OV is set if a borrow is needed into bit 6, but not into bit 7, or into bit 7, but not bit 6. When subtracting signed integers OV indicates a negative number produced when a negative value is subtracted from a positive value, or a positive result when a positive number is subtracted from a negative number. The source operand allows four addressing modes: register, direct, register-indirect, or immediate. Example: The Accumulator holds 0C9H (11001001B), register 2 holds 54H (01010100B), and the carry flag is set. The instruction, SUBB A, R2 will leave the value 74H (01110100B) in the accumulator, with the carry flag and AC cleared but OV set. Notice that 0C9H minus 54H is 75H. The difference between this and the above result is due to the carry (borrow) flag being set before the operation. If the state of the carry is not known before starting a single or multiple-precision subtraction, it should be explicitly cleared by a CLR C instruction. SUBB A, Rn Bytes: 1 Cycles: 1 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 330 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com Encoding: 1 Operation: SUBB 0 0 1 技术支持: 19864585985 1 r r r 0 1 0 1 0 1 1 i 0 1 0 0 选型顾问: 13922805190 (A) ← (A) - (C) - (Rn) SUBB A, direct Bytes: 2 Cycles: 1 Encoding: 1 Operation: SUBB 0 0 1 direct address (A) ← (A) - (C) - (direct) SUBB A, @Ri Bytes: 1 Cycles: 1 Encoding: 1 Operation: SUBB 0 0 1 (A) ← (A) - (C) - ((Ri)) SUBB A, #data Bytes: 2 Cycles: 1 Encoding: 1 Operation: SUBB 0 0 1 immediate data (A) ← (A) - (C) - #data SWAP A Function: Description: Swap nibbles within the Accumulator SWAP A interchanges the low- and high-order nibbles (four-bit fields) of the Accumulator (bits 3-0 and bits 7-4). The operation can also be thought of as a four-bit rotate instruction. No flags are affected. Example: The Accumulator holds the value 0C5H (11000101B). The instruction, SWAP A leaves the Accumulator holding the value 5CH (01011100B). Bytes: 1 Cycles: 1 Encoding: 1 Operation: SWAP (A3-0) 1 0 0 0 1 0 0 (A7-4) XCH A, Function: Description: Exchange Accumulator with byte variable XCH loads the Accumulator with the contents of the indicated variable, at the same time writing the original Accumulator contents to the indicated variable. The source/destination operand can use register, direct, or register-indirect addressing. Example: 深圳国芯人工智能有限公司 R0 contains the address 20H. The Accumulator holds the value 3FH (00111111B). Internal 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 331 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RAM location 20H holds the value 75H (01110101B). The instruction, XCH A, @R0 will leave RAM location 20H holding the values 3FH (00111111B) and 75H (01110101B) in the accumulator. XCH A, Rn Bytes: 1 Cycles: 1 Encoding: 1 Operation: XCH 1 (A) 0 0 1 r r r 0 0 1 0 1 0 0 1 1 i (Rn) XCH A, direct Bytes: 2 Cycles: 1 Encoding: 1 Operation: XCH 1 (A) 0 direct address (direct) XCH A, @Ri Bytes: 1 Cycles: 1 Encoding: 1 Operation: XCH 1 (A) 0 ((Ri)) XCHD A, @Ri Function: Description: Exchange Digit XCHD exchanges the low-order nibble of the Accumulator (bits 3-0), generally representing a hexadecimal or BCD digit, with that of the internal RAM location indirectly addressed by the specified register. The high-order nibbles (bits 7-4) of each register are not affected. No flags are affected. Example: R0 contains the address 20H. The Accumulator holds the value 36H (00110110B). Internal RAM location 20H holds the value 75H (01110101B). The instruction, XCHD A, @R0 will leave RAM location 20H holding the value 76H (01110110B) and 35H (00110101B) in the accumulator. Bytes: 1 Cycles: 1 Encoding: 1 Operation: XCHD (A3-0) 深圳国芯人工智能有限公司 1 0 1 0 1 1 i (Ri3-0) 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 332 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 XRL , Function: Description: Logical Exclusive-OR for byte variables XRL performs the bitwise logical Exclusive-OR operation between the indicated variables, storing the results in the destination. No flags are affected. The two operands allow six addressing mode combinations. When the destination is the Accumulator, the source can use register, direct, register-indirect, or immediate addressing; when the destination is a direct address, the source can be the Accumulator or immediate data. (Note: When this instruction is used to modify an output port, the value used as the original port data will be read from the output data latch, not the input pins.) Example: If the Accumulator holds 0C3H (11000011B) and register 0 holds 0AAH (10101010B) then the instruction, XRL A, R0 will leave the Accumulator holding the value 69H (01101001B). When the destination is a directly addressed byte, this instruction can complement combination of bits in any RAM location or hardware register. The pattern of bits to be complemented is then determined by a mask byte, either a constant contained in the instruction or a variable computed in the Accumulator at run-time. The instruction, XRL P1, #00110001B will complement bits 5,4 and 0 of output Port 1. XRL A, Rn Bytes: 1 Cycles: 1 Encoding: 0 Operation: XRL 1 1 (A) ←(A) 0 1 r r r 0 1 0 1 0 1 1 i 0 1 0 0 (Rn) XRL A, direct Bytes: 2 Cycles: 1 Encoding: 0 Operation: XRL 1 1 (A) ←(A) 0 direct address (direct) XRL A, @Ri Bytes: 1 Cycles: 1 Encoding: 0 Operation: XRL 1 1 (A) ←(A) 0 ((Ri)) XRL A, #data Bytes: 2 Cycles: 1 Encoding: 深圳国芯人工智能有限公司 0 1 1 0 国内分销商电话: 0513-5501 2928/2929/2966 immediate data 去纯技术交流论坛:www.STCAIMCU.com - 333 - STC8A8K64D4 系列技术手册 Operation: 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 XRL (A) ←(A) #data XRL direct, A Bytes: 2 Cycles: 1 Encoding: 0 Operation: XRL 1 1 0 (direct) ←(direct) 0 0 1 0 direct address 0 1 1 direct address (A) XRL direct, #data Bytes: 3 Cycles: 2 Encoding: 0 Operation: XRL 1 1 (direct)← (direct) 深圳国芯人工智能有限公司 0 0 immediate data #data 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 334 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 10.5 多级流水线内核的中断响应 STC 的 MCU 内核为多级流水线设计,在中断响应方面的设计和传统的 8051 略有差异。 对于传统的 8051: 如果当前正在执行的指令是中断返回指令 RETI 或者是访问中断使能寄存器、中断请求寄存器或者中 断优先级寄存器的特殊指令时,CPU 但等当前的这条特殊的指令执行完,再执行一条指令才能响应中断 请求; 如果当前正在执行的指令不是上面所指的特殊指令,则等当前指令执行完成后就立即响应中断请求; 获取下一条指令 特殊指令: 产生了中断请求 执行完成当前 特殊指令 解码当前指令 是否是 特殊指令 ? 中断返回指令RETI或者是访问中断使能 寄存器、中断请求寄存器或者中断优先 级寄存器的特殊指令 是 否 执行完成当前指令 响应中断 中断服务程序 对于 STC 的 8051 单片机,由于是多级流水线设计,响应中断上会比传统的 8051 再多执行一条语句: 如果当前正在执行的指令是中断返回指令 RETI 或者是访问中断使能寄存器、中断请求寄存器或者中 断优先级寄存器的特殊指令时,CPU 但等当前的这条特殊的指令执行完,同时解码下一条指令,直到下 一条指令不是特殊指令,则等下一条指令执行完成才能响应中断请求; 如果当前正在执行的指令不是上面所指的特殊指令,则等当前指令执行完成后,同时会解码下一条 指令,如果下一条也不是特殊指令,则会等下一条指令执行完成后再立即响应中断请求; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 335 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 获取下一条指令 特殊指令: 产生了中断请求 执行完成当前 特殊指令 解码当前指令 当前指令是否是 特殊指令? 中断返回指令RETI或者是访问中断使能 寄存器、中断请求寄存器或者中断优先 级寄存器的特殊指令 是 执行完成下一条 特殊指令 否 执行完成当前指令 同时解码下一条指令 下一条指令是否是 特殊指令? 是 否 执行完成 下一条指令 响应中断 深圳国芯人工智能有限公司 中断服务程序 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 336 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11 中断系统 (C 语言程序中使用中断号大于 31 的中断时,在 Keil 中编译会报错,解决办法请参考附录) 中断系统是为使 CPU 具有对外界紧急事件的实时处理能力而设置的。 当中央处理机 CPU 正在处理某件事的时候外界发生了紧急事件请求,要求 CPU 暂停当前的工作, 转而去处理这个紧急事件,处理完以后,再回到原来被中断的地方,继续原来的工作,这样的过程称为 中断。实现这种功能的部件称为中断系统,请示 CPU 中断的请求源称为中断源。微型机的中断系统一般 允许多个中断源,当几个中断源同时向 CPU 请求中断,要求为它服务的时候,这就存在 CPU 优先响应 哪一个中断源请求的问题。通常根据中断源的轻重缓急排队,优先处理最紧急事件的中断请求源,即规 定每一个中断源有一个优先级别。CPU 总是先响应优先级别最高的中断请求。 当 CPU 正在处理一个中断源请求的时候(执行相应的中断服务程序),发生了另外一个优先级比它 还高的中断源请求。如果 CPU 能够暂停对原来中断源的服务程序,转而去处理优先级更高的中断请求源, 处理完以后,再回到原低级中断服务程序,这样的过程称为中断嵌套。这样的中断系统称为多级中断系 统,没有中断嵌套功能的中断系统称为单级中断系统。 用户可以用关总中断允许位(EA/IE.7)或相应中断的允许位屏蔽相应的中断请求,也可以用打开相 应的中断允许位来使 CPU 响应相应的中断申请,每一个中断源可以用软件独立地控制为开中断或关中断 状态,部分中断的优先级别均可用软件设置。高优先级的中断请求可以打断低优先级的中断,反之,低 优先级的中断请求不可以打断高优先级的中断。当两个相同优先级的中断同时产生时,将由查询次序来 决定系统先响应哪个中断。 11.1 STC8A8K64D4 系列中断源 下表中√表示对应的系列有相应的中断源 中断源 STC8A8K64S4系列 外部中断 0 中断(INT0) 支持下降沿和边沿中断 √ 定时器 0 中断(Timer0) √ 外部中断 1 中断(INT1) 支持下降沿和边沿中断 √ 定时器 1 中断(Timer1) √ 串口 1 中断(UART1) √ 模数转换中断(ADC) √ 低压检测中断(LVD) √ 捕获中断(CCP/PCA/PWM) 支持下降沿、上升沿和边沿中断 √ 串口 2 中断(UART2) √ 串行外设接口中断(SPI) √ 外部中断 2 中断(INT2) 支持下降沿中断 √ 外部中断 3 中断(INT3) 支持下降沿中断 √ 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 337 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 定时器 2 中断(Timer2) √ 外部中断 4 中断(INT4) √ 串口 3 中断(UART3) √ 串口 4 中断(UART4) √ 定时器 3 中断(Timer3) √ 定时器 4 中断(Timer4) √ 比较器中断(CMP) √ 增强型 PWM 中断 √ PWM 异常检测中断 √ I2C 总线中断 √ P0 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P1 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P2 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P3 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P4 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P5 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P6 口中断 支持下降沿、上升沿、高电平和低电平中断 √ P7 口中断 支持下降沿、上升沿、高电平和低电平中断 √ DMA_M2M 中断 √ DMA_ADC 中断 √ DMA_SPI 中断 √ DMA_UR1T 中断 √ DMA_UR1R 中断 √ DMA_UR2T 中断 √ DMA_UR2R 中断 √ DMA_UR3T 中断 √ DMA_UR3R 中断 √ DMA_UR4T 中断 √ DMA_UR4R 中断 √ DMA_LCM 中断 √ LCM 中断 √ 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 选型顾问: 13922805190 去纯技术交流论坛:www.STCAIMCU.com - 338 - STC8A8K64D4 系列技术手册 深圳国芯人工智能有限公司 官方网站: www.STCAI.com 国内分销商电话: 0513-5501 2928/2929/2966 技术支持: 19864585985 选型顾问: 13922805190 去纯技术交流论坛:www.STCAIMCU.com - 339 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11.2 STC8A8K64D4 中断结构图 中断请求 中断允许控制 中断优先级控制 最低优先级 较低优先级 较高优先级 最高优先级 TCON.0/IT0=0 EX0 INT0 EA PX0/PX0H IE0 0 1 2 3 TCON.0/IT0=1 Timer0 ET0 EA EX1 EA TF0 PT0/PT0H 0 PX1/PX1H 0 1 2 3 TCON.2/IT1=0 INT1 IE1 1 2 3 TCON.2/IT1=1 Timer1 EA PT1/PT1H 0 ES EA PS/PSH 0 TF1 RI UART1 ET1 TI ADC EADC EA PADC/PADCH 0 ELVD EA PLVD/PLVDH 0 ADC_Flag LVD LVDF 1 1 1 1 2 2 2 2 ECF 3 3 3 3 CF ECF0 CCF0 ECF1 PCA EA PPCA/PPCAH CCF1 0 1 2 ECF2 3 CCF2 ECF3 CCF3 S2RI UART2 S2TI SPI ES2 EA PS2/PS2H 0 ESPI EA PSPI/PSPIH 0 SPIF EX2 INT2 INT2IF INT3 INT3IF Timer2 EA 优先级固定为最低优先级 ET2 EA 优先级固定为最低优先级 EX4 EA ES3 EA INT4IF S3RI UART4 S3TI S4RI ES4 S4TI ET3 Timer3 T3IF Timer4 T4IF ET4 CMP 优先级固定为最低优先级 EX3 T2IF INT4 UART3 EA PIE EA EA EA PS3/PS3H PCMP/PCMPH CMPIF 2 3 3 0 0 优先级固定为最低优先级 EA 2 0 0 优先级固定为最低优先级 1 0 PX4/PX4H PS4/PS4H 1 0 1 1 1 2 2 2 3 3 3 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 ERXI PI2C/PI2CH 0 1 2 3 RXIF ETXI TXIF 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 340 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11.3 STC8A8K64D4 系列中断列表 中断源 中断向量 次序 优先级设置 优先级 中断请求位 中断允许位 INT0 0003H 0 PX0PX0H 0/1/2/3 IE0 EX0 Timer0 000BH 1 PT0,PT0H 0/1/2/3 TF0 ET0 INT1 0013H 2 PX1,PX1H 0/1/2/3 IE1 EX1 Timer1 001BH 3 PT1,PT1H 0/1/2/3 TF1 ET1 UART1 0023H 4 PS,PSH 0/1/2/3 RI || TI ES ADC 002BH 5 PADC,PADCH 0/1/2/3 ADC_FLAG EADC LVD 0033H 6 PLVD,PLVDH 0/1/2/3 LVDF ELVD CF ECF CCF0 ECCF0 CCF1 ECCF1 CCF2 ECCF2 CCF3 ECCF3 PCA 003BH 7 PPCA,PPCAH 0/1/2/3 UART2 0043H 8 PS2,PS2H 0/1/2/3 S2RI || S2TI ES2 SPI 004BH 9 PSPI,PSPIH 0/1/2/3 SPIF ESPI INT2 0053H 10 0 INT2IF EX2 INT3 005BH 11 0 INT3IF EX3 Timer2 0063H 12 0 T2IF ET2 INT4 0083H 16 PX4,PX4H 0/1/2/3 INT4IF EX4 UART3 008BH 17 PS3,PS3H 0/1/2/3 S3RI || S3TI ES3 UART4 0093H 18 PS4,PS4H 0/1/2/3 S4RI || S4TI ES4 Timer3 009BH 19 0 T3IF ET3 Timer4 00A3H 20 0 T4IF ET4 CMP 00ABH 21 0/1/2/3 CMPIF PIE|NIE 深圳国芯人工智能有限公司 PCMP,PCMPH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 341 - STC8A8K64D4 系列技术手册 中断源 官方网站: www.STCAI.com 中断向 量 次 序 优先级设置 技术支持: 19864585985 优先级 选型顾问: 13922805190 中断请求位 中断允许位 CBIF ECBI EC0I && EC0T1SI C0IF EC0I && EC0T2SI EC1I && EC1T1SI C1IF EC1I && EC1T2SI EC2I && EC2T1SI C2IF EC2I && EC2T2SI EC3I && EC3T1SI C3IF PWM 00B3H 22 PPWM,PPWMH 0/1/2/3 EC3I && EC3T2SI EC4I && EC4T1SI C4IF EC4I && EC4T2SI EC5I && EC5T1SI C5IF EC5I && EC5T2SI EC6I && EC6T1SI C6IF EC6I && EC6T2SI EC7I && EC7T1SI C7IF EC7I && EC7T2SI PWMFD 00BBH I2C 00C3H 23 24 PPWMFD,PPWMFDH PI2C,PI2CH 0/1/2/3 0/1/2/3 FDIF EFDI MSIF EMSI STAIF ESTAI RXIF ERXI TXIF ETXI STOIF ESTOI P0 中断 012BH 37 P0IP,P0IPH 0/1/2/3 P0INTF P0INTE P1 中断 0133H 38 P1IP,P1IPH 0/1/2/3 P1INTF P1INTE P2 中断 013BH 39 P2IP,P2IPH 0/1/2/3 P2INTF P2INTE P3 中断 0143H 40 P3IP,P3IPH 0/1/2/3 P3INTF P3INTE P4 中断 014BH 41 P4IP,P4IPH 0/1/2/3 P4INTF P4INTE P5 中断 0153H 42 P5IP,P5IPH 0/1/2/3 P5INTF P5INTE P6 中断 015BH 43 P6IP,P6IPH 0/1/2/3 P6INTF P6INTE P7 中断 0163H 44 P7IP,P7IPH 0/1/2/3 P7INTF P7INTE DMA_M2M 中断 017BH 47 M2MIP[1:0] 0/1/2/3 M2MIF M2MIE DMA_ADC 中断 0183H 48 ADCIP[1:0] 0/1/2/3 ADCIF ADCIE DMA_SPI 中断 018BH 49 SPIIP[1:0] 0/1/2/3 SPIIF SPIIE 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 342 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 DMA_UR1T 中断 0193H 50 UR1TIP[1:0] 0/1/2/3 UR1TIF UR1TIE DMA_UR1R 中断 019BH 51 UR1RIP[1:0] 0/1/2/3 UR1RIF UR1RIE DMA_UR2T 中断 01A3H 52 UR2TIP[1:0] 0/1/2/3 UR2TIF UR2TIE DMA_UR2R 中断 01ABH 53 UR2RIP[1:0] 0/1/2/3 UR2RIF UR2RIE DMA_UR3T 中断 01B3H 54 UR3TIP[1:0] 0/1/2/3 UR3TIF UR3TIE DMA_UR3R 中断 01BBH 55 UR3RIP[1:0] 0/1/2/3 UR3RIF UR3RIE DMA_UR4T 中断 01C3H 56 UR4TIP[1:0] 0/1/2/3 UR4TIF UR4TIE DMA_UR4R 中断 01CBH 57 UR4RIP[1:0] 0/1/2/3 UR4RIF UR3RIE DMA_LCM 中断 01D3H 58 LCMIP[1:0] 0/1/2/3 LCMIF LCMIE LCM 中断 01DBH 59 LCMIFIP[1:0] 0/1/2/3 LCMIFIF LCMIFIE 在 C 语言中声明中断服务程序 void INT0_Routine(void) interrupt 0; void TM0_Rountine(void) interrupt 1; void INT1_Routine(void) interrupt 2; void TM1_Rountine(void) interrupt 3; void UART1_Routine(void) interrupt 4; void ADC_Routine(void) interrupt 5; void LVD_Routine(void) interrupt 6; void PCA_Routine(void) interrupt 7; void UART2_Routine(void) interrupt 8; void SPI_Routine(void) interrupt 9; void INT2_Routine(void) interrupt 10; void INT3_Routine(void) interrupt 11; void TM2_Routine(void) interrupt 12; void INT4_Routine(void) interrupt 16; void UART3_Routine(void) interrupt 17; void UART4_Routine(void) interrupt 18; void TM3_Routine(void) interrupt 19; void TM4_Routine(void) interrupt 20; void CMP_Routine(void) interrupt 21; void PWM_Routine(void) interrupt 22; void PWMFD_Routine(void) interrupt 23; void I2C_Routine(void) interrupt 24; 中断号超过31的C语言中断服务程序不能直接用interrupt声明,请参考附录的处理方 法,汇编语言不受影响 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 343 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11.4 中断相关寄存器 位地址与符号 符号 描述 复位值 地址 B7 B6 B5 B4 B3 B2 B1 B0 IE 中断允许寄存器 A8H EA ELVD EADC ES ET1 EX1 ET0 EX0 00x0,0000 IE2 中断允许寄存器 2 AFH - ET4 ET3 ES4 ES3 ET2 ESPI ES2 x000,0000 中断与时钟输出控制 8FH - EX4 EX3 EX2 - T2CLKO T1CLKO T0CLKO x000,x000 中断优先级控制寄存器 B8H PPCA PLVD PADC PS PT1 PX1 PT0 PX0 0000,0000 IPH 高中断优先级控制寄存器 B7H PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H 0000,0000 IP2 中断优先级控制寄存器 2 B5H - PI2C PCMP PX4 PPWMFD PPWM PSPI PS2 x000,0000 高中断优先级控制寄存器 2 B6H - PI2CH PCMPH PX4H PPWMFDH PPWMH PSPIH PS2H x000,0000 中断优先级控制寄存器 3 DFH - - - - - - PS4 PS3 xxxx,xx00 高中断优先级控制寄存器 3 EEH - - - - - - PS4H PS3H xxxx,xx00 扩展外部中断标志寄存器 EFH - INT4IF INT3IF INT2IF - T4IF T3IF T2IF x000,x000 SCON 串口 1 控制寄存器 98H SM0/FE SM1 SM2 REN TB8 RB8 TI RI 0000,0000 S2CON 串口 2 控制寄存器 9AH S2SM0 - S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI 0x00,0000 S3CON 串口 3 控制寄存器 ACH S3SM0 S3ST4 S3SM2 S3REN S3TB8 S3RB8 S3TI S3RI 0000,0000 S4CON 串口 4 控制寄存器 84H S4SM0 S4ST4 S4SM2 S4REN S4TB8 S4RB8 S4TI S4RI 0000,0000 PCON 电源控制寄存器 87H SMOD SMOD0 LVDF POF GF1 GF0 PD IDL 0011,0000 TCON 定时器控制寄存器 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 SPSTAT SPI 状态寄存器 CDH SPIF WCOL - - - - - - 00xx,xxxx CCON PCA 控制寄存器 D8H CF CR - - CCF3 CCF2 CCF1 CCF0 00xx,0000 CMOD PCA 模式寄存器 D9H CIDL - - - ECF 0xxx,0000 CCAPM0 PCA 模块 0 控制寄存器 DAH - ECOM0 CCAPP0 CCAPN0 MAT0 TOG0 PWM0 ECCF0 x000,0000 CCAPM1 PCA 模块 1 控制寄存器 DBH - ECOM1 CCAPP1 CCAPN1 MAT1 TOG1 PWM1 ECCF1 x000,0000 CCAPM2 PCA 模块 2 控制寄存器 DCH - ECOM2 CCAPP2 CCAPN2 MAT2 TOG2 PWM2 ECCF2 x000,0000 CMPCR1 比较器控制寄存器 1 E6H CMPEN CMPIF PIE NIE - - CMPOE CMPRES 0000,xx00 PWMCFG 增强型 PWM 配置寄存器 F6H - - - - PWMCBIF EPWMCBI ENPWMTA PWMCEN xxxx,0000 INTCLKO IP IP2H IP3 IP3H AUXINTIF CPS[2:0] 位地址与符号 符号 描述 地址 复位值 B7 B6 B5 B4 B3 B2 LCMIFCFG LCM 接口配置寄存器 FE50H LCMIFIE - LCMIFIP[1:0] LCMIFDPS[1:0] LCMIFSTA LCM 接口状态寄存器 FE53H - - - - - - B1 B0 D16_D8 M68_I80 0x00,0000 - LCMIFIF xxxx,xxx0 MSCMD[3:0] 0xxx,0000 I2CMSCR I2C 主机控制寄存器 FE81H EMSI - - - I2CMSST I2C 主机状态寄存器 FE82H MSBUSY MSIF - - - - MSACKI MSACKO 00xx,xx00 I2CSLCR I2C 从机控制寄存器 FE83H - ESTAI ERXI ETXI ESTOI - - SLRST x000,0xx0 I2CSLST I2C 从机状态寄存器 FE84H SLBUSY STAIF RXIF TXIF STOIF TXING SLACKI SLACKO 0000,0000 PWMIF PWM0 中断标志寄存器 FF05H C7IF C6IF C5IF C4IF C3IF C2IF C1IF C0IF 0000,0000 FF06H INVCMP INVIO ENFD FLTFLIO EFDI FDCMP FDIO FDIF 0000,0000 PWMFDCR PWM0 异常检测控制寄存器 PWM0CR PWM00 控制寄存器 FF14H ENC0O C0INI - C0_S[1:0] EC0I EC0T2SI EC0T1SI 00x0,0000 PWM1CR PWM01 控制寄存器 FF1CH ENC1O C1INI - C1_S[1:0] EC1I EC1T2SI EC1T1SI 00x0,0000 PWM2CR PWM02 控制寄存器 FF24H ENC2O C2INI - C2_S[1:0] EC2I EC2T2SI EC2T1SI 00x0,0000 PWM3CR PWM03 控制寄存器 FF2CH ENC3O C3INI - C3_S[1:0] EC3I EC3T2SI EC3T1SI 00x0,0000 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 344 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 PWM4CR PWM04 控制寄存器 FF34H ENC4O C4INI - C4_S[1:0] EC4I EC4T2SI EC4T1SI 00x0,0000 PWM5CR PWM05 控制寄存器 FF3CH ENC5O C5INI - C5_S[1:0] EC5I EC5T2SI EC5T1SI 00x0,0000 PWM6CR PWM06 控制寄存器 FF44H ENC6O C6INI - C6_S[1:0] EC6I EC6T2SI EC6T1SI 00x0,0000 PWM7CR PWM07 控制寄存器 FF4CH ENC7O C7INI - C7_S[1:0] EC7I EC7T2SI EC7T1SI 00x0,0000 P0INTE P0 口中断使能寄存器 FD00H P07INTE P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE P00INTE 0000,0000 P1INTE P1 口中断使能寄存器 FD01H P17INTE P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE P10INTE 0000,0000 P2INTE P2 口中断使能寄存器 FD02H P27INTE P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE P20INTE 0000,0000 P3INTE P3 口中断使能寄存器 FD03H P37INTE P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE P30INTE 0000,0000 P4INTE P4 口中断使能寄存器 FD04H P47INTE P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE P40INTE 0000,0000 P5INTE P5 口中断使能寄存器 FD05H - - P55INTE P54INTE P53INTE P52INTE P51INTE P50INTE xx00,0000 P6INTE P6 口中断使能寄存器 FD06H P67INTE P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE P60INTE 0000,0000 P7INTE P7 口中断使能寄存器 FD07H P77INTE P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE P70INTE 0000,0000 P0INTF P0 口中断标志寄存器 FD10H P07INTF P06INTF P05INTF P04INTF P03INTF P02INTF P01INTF P00INTF 0000,0000 P1INTF P1 口中断标志寄存器 FD11H P17INTF P16INTF P15INTF P14INTF P13INTF P12INTF P11INTF P10INTF 0000,0000 P2INTF P2 口中断标志寄存器 FD12H P27INTF P26INTF P25INTF P24INTF P23INTF P22INTF P21INTF P20INTF 0000,0000 P3INTF P3 口中断标志寄存器 FD13H P37INTF P36INTF P35INTF P34INTF P33INTF P32INTF P31INTF P30INTF 0000,0000 P4INTF P4 口中断标志寄存器 FD14H P47INTF P46INTF P45INTF P44INTF P43INTF P42INTF P41INTF P40INTF 0000,0000 P5INTF P5 口中断标志寄存器 FD15H - - P55INTF P54INTF P53INTF P52INTF P51INTF P50INTF xx00,0000 P6INTF P6 口中断标志寄存器 FD16H P67INTF P66INTF P65INTF P64INTF P63INTF P62INTF P61INTF P60INTF 0000,0000 P7INTF P7 口中断标志寄存器 FD17H P77INTF P76INTF P75INTF P74INTF P73INTF P72INTF P71INTF P70INTF 0000,0000 PCA 模块 3 模式控制寄存器 FD54H - ECOM3 CCAPP3 CCAPN3 MAT3 TOG3 PWM3 ECCF3 x000,0000 PINIPL I/O 口中断优先级低寄存器 FD60H P7IP P6IP P5IP P4IP P3IP P2IP P1IP P0IP 0000,0000 PINIPH I/O 口中断优先级高寄存器 FD61H P7IPH P6IPH P5IPH P4IPH P3IPH P2IPH P1IPH P0IPH 0000,0000 DMA_M2M_CFG M2M_DMA 配置寄存器 FA00H M2MIE - TXACO RXACO M2MIP[1:0] M2MPTY[1:0] 0x00,0000 DMA_ADC_CFG ADC_DMA 配置寄存器 FA10H ADCIE - - - ADCMIP[1:0] ADCPTY[1:0] 0xxx,0000 SPI_DMA 配置寄存器 FA20H SPIIE ACT_TX ACT_RX - SPIIP[1:0] SPIPTY[1:0] 000x,0000 DMA_UR1T_CFG UR1T_DMA 配置寄存器 FA30H UR1TIE - - - UR1TIP[1:0] UR1TPTY[1:0] 0xxx,0000 DMA_UR1R_CFG UR1R_DMA 配置寄存器 FA38H UR1RIE - - - UR1RIP[1:0] UR1RPTY[1:0] 0xxx,0000 DMA_UR2T_CFG UR2T_DMA 配置寄存器 FA40H UR2TIE - - - UR2TIP[1:0] UR2TPTY[1:0] 0xxx,0000 DMA_UR2R_CFG UR2R_DMA 配置寄存器 FA48H UR2RIE - - - UR2RIP[1:0] UR2RPTY[1:0] 0xxx,0000 DMA_UR3T_CFG UR3T_DMA 配置寄存器 FA50H UR3TIE - - - UR3TIP[1:0] UR3TPTY[1:0] 0xxx,0000 DMA_UR3R_CFG UR3R_DMA 配置寄存器 FA58H UR3RIE - - - UR3RIP[1:0] UR3RPTY[1:0] 0xxx,0000 DMA_UR4T_CFG UR4T_DMA 配置寄存器 FA60H UR4TIE - - - UR4TIP[1:0] UR4TPTY[1:0] 0xxx,0000 DMA_UR4R_CFG UR4R_DMA 配置寄存器 FA68H UR4RIE - - - UR4RIP[1:0] UR4RPTY[1:0] 0xxx,0000 DMA_LCM_CFG LCM_DMA 配置寄存器 FA70H LCMIE - - - LCMIP[1:0] LCMPTY[1:0] 0xxx,0000 DMA_M2M_STA M2M_DMA 状态寄存器 FA02H - - - - - - - M2MIF xxxx,xxx0 DMA_ADC_STA ADC_DMA 状态寄存器 FA12H - - - - - - - ADCIF xxxx,xxx0 CCAPM3 DMA_SPI_CFG SPI_DMA 状态寄存器 FA22H - - - - - TXOVW RXLOSS SPIIF xxxx,x000 DMA_UR1T_STA UR1T_DMA 状态寄存器 FA32H - - - - - TXOVW - UR1TIF xxxx,x0x0 DMA_UR1R_STA UR1R_DMA 状态寄存器 FA3AH - - - - - - RXLOSS UR1RIF xxxx,xx00 DMA_UR2T_STA UR2T_DMA 状态寄存器 FA42H - - - - - TXOVW - UR2TIF xxxx,x0x0 DMA_UR2R_STA UR2R_DMA 状态寄存器 FA4AH - - - - - - RXLOSS UR2RIF xxxx,xx00 DMA_UR3T_STA UR3T_DMA 状态寄存器 FA52H - - - - - TXOVW - UR3TIF xxxx,x0x0 DMA_UR3R_STA UR3R_DMA 状态寄存器 FA5AH - - - - - - RXLOSS UR3RIF xxxx,xx00 DMA_SPI_STA 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 345 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 DMA_UR4T_STA UR4T_DMA 状态寄存器 FA62H - - - - - TXOVW - UR4TIF xxxx,x0x0 DMA_UR4R_STA UR4R_DMA 状态寄存器 FA6AH - - - - - - RXLOSS UR4RIF xxxx,xx00 DMA_LCM_STA LCM_DMA 状态寄存器 FA72H - - - - - - TXOVW LCMIF xxxx,xx00 11.4.1 中断使能寄存器(中断允许位) IE(中断使能寄存器) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 IE A8H EA ELVD EADC ES ET1 EX1 ET0 EX0 EA:总中断允许控制位。EA 的作用是使中断允许形成多级控制。即各中断源首先受 EA 控制;其次还受 各中断源自己的中断允许控制位控制。 0:CPU 屏蔽所有的中断申请 1:CPU 开放中断 ELVD:低压检测中断允许位。 0:禁止低压检测中断 1:允许低压检测中断 EADC:A/D 转换中断允许位。 0:禁止 A/D 转换中断 1:允许 A/D 转换中断 ES:串行口 1 中断允许位。 0:禁止串行口 1 中断 1:允许串行口 1 中断 ET1:定时/计数器 T1 的溢出中断允许位。 0:禁止 T1 中断 1:允许 T1 中断 EX1:外部中断 1 中断允许位。 0:禁止 INT1 中断 1:允许 INT1 中断 ET0:定时/计数器 T0 的溢出中断允许位。 0:禁止 T0 中断 1:允许 T0 中断 EX0:外部中断 0 中断允许位。 0:禁止 INT0 中断 1:允许 INT0 中断 IE2(中断使能寄存器 2) 符号 地址 IE2 AFH B7 B6 B5 B4 B3 B2 B1 B0 ET4 ET3 ES4 ES3 ET2 ESPI ES2 ET4:定时/计数器 T4 的溢出中断允许位。 0:禁止 T4 中断 1:允许 T4 中断 ET3:定时/计数器 T3 的溢出中断允许位。 0:禁止 T3 中断 1:允许 T3 中断 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 346 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ES4:串行口 4 中断允许位。 0:禁止串行口 4 中断 1:允许串行口 4 中断 ES3:串行口 3 中断允许位。 0:禁止串行口 3 中断 1:允许串行口 3 中断 ET2:定时/计数器 T2 的溢出中断允许位。 0:禁止 T2 中断 1:允许 T2 中断 ESPI:SPI 中断允许位。 0:禁止 SPI 中断 1:允许 SPI 中断 ES2:串行口 2 中断允许位。 0:禁止串行口 2 中断 1:允许串行口 2 中断 INTCLKO(外部中断与时钟输出控制寄存器) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 INTCLKO 8FH - EX4 EX3 EX2 - T2CLKO T1CLKO T0CLKO EX4:外部中断 4 中断允许位。 0:禁止 INT4 中断 1:允许 INT4 中断 EX3:外部中断 3 中断允许位。 0:禁止 INT3 中断 1:允许 INT3 中断 EX2:外部中断 2 中断允许位。 0:禁止 INT2 中断 1:允许 INT2 中断 PCA/CCP/PWM 中断控制寄存器 符号 地址 B7 B6 B5 B4 CMOD D9H CIDL - - - CCAPM0 DAH - ECOM0 CCAPP0 CCAPN0 MAT0 TOG0 PWM0 ECCF0 CCAPM1 DBH - ECOM1 CCAPP1 CCAPN1 MAT1 TOG1 PWM1 ECCF1 CCAPM2 DCH - ECOM2 CCAPP2 CCAPN2 MAT2 TOG2 PWM2 ECCF2 CCAPM3 FD54H - ECOM3 CCAPP3 CCAPN3 MAT3 TOG3 PWM3 ECCF3 B3 B2 B1 CPS[2:0] B0 ECF ECF:PCA 计数器中断允许位。 0:禁止 PCA 计数器中断 1:允许 PCA 计数器中断 ECCF0:PCA 模块 0 中断允许位。 0:禁止 PCA 模块 0 中断 1:允许 PCA 模块 0 中断 ECCF1:PCA 模块 1 中断允许位。 0:禁止 PCA 模块 1 中断 1:允许 PCA 模块 1 中断 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 347 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ECCF2:PCA 模块 2 中断允许位。 0:禁止 PCA 模块 2 中断 1:允许 PCA 模块 2 中断 ECCF3:PCA 模块 3 中断允许位。 0:禁止 PCA 模块 3 中断 1:允许 PCA 模块 3 中断 CMPCR1(比较器控制寄存器 1) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 CMPCR1 E6H CMPEN CMPIF PIE NIE - - CMPOE CMPRES PIE:比较器上升沿中断允许位。 0:禁止比较器上升沿中断 1:允许比较器上升沿中断 NIE:比较器下降沿中断允许位。 0:禁止比较器下降沿中断 1:允许比较器下降沿中断 增强型 PWM 配置寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PWMCFG F6H - - - - PWMCBIF EPWMCBI ENPWMTA PWMCEN EPWMCBI:增强PWM0计数器中断允许位。 0:禁止 PWM0 计数器中断 1:允许 PWM0 计数器中断 增强型 PWM 异常检测控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PWMFDCR FF06H INVCMP INVIO ENFD FLTFLIO EFDI FDCMP FDIO FDIF B1 B0 EFDI:PWM外部异常事件中断允许位。 0:禁止 PWM 外部异常事件中断 1:允许 PWM 外部异常事件中断 增强型 PWM 控制寄存器 符号 地址 B7 B6 B5 PWM0CR FF14H ENC0O C0INI - C0_S[1:0] EC0I EC0T2SI EC0T1SI PWM1CR FF1CH ENC1O C1INI - C1_S[1:0] EC1I EC1T2SI EC1T1SI PWM2CR FF24H ENC2O C2INI - C2_S[1:0] EC2I EC2T2SI EC2T1SI PWM3CR FF2CH ENC3O C3INI - C3_S[1:0] EC3I EC3T2SI EC3T1SI PWM4CR FF34H ENC4O C4INI - C4_S[1:0] EC4I EC4T2SI EC4T1SI PWM5CR FF3CH ENC5O C5INI - C5_S[1:0] EC5I EC5T2SI EC5T1SI PWM6CR FF44H ENC6O C6INI - C6_S[1:0] EC6I EC6T2SI EC6T1SI PWM7CR FF4CH ENC7O C7INI - C7_S[1:0] EC7I EC7T2SI EC7T1SI 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 B4 B3 B2 去纯技术交流论坛:www.STCAIMCU.com - 348 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ECnI:PWM通道中断允许位。(n=0~7) 0:禁止 PWM 中断 1:允许 PWM 中断 ECnT2SI:PWM通道第2个触发点中断允许位。(n=0~7) 0:禁止 PWM 的第 2 个触发点中断 1:允许 PWM 的第 2 个触发点中断 ECnT1SI:PWM通道第1个触发点中断允许位。(n=0~7) 0:禁止 PWM 的第 1 个触发点中断 1:允许 PWM 的第 1 个触发点中断 I2C 控制寄存器 符号 地址 B7 B6 B5 B4 I2CMSCR FE81H EMSI - - - I2CSLCR FE83H - ESTAI ERXI ETXI B3 B2 B1 B0 MSCMD[3:0] ESTOI - - SLRST 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 事件中断 端口中断使能寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0INTE FD00H P07INTE P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE P00INTE P1INTE FD01H P17INTE P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE P10INTE P2INTE FD02H P27INTE P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE P20INTE P3INTE FD03H P37INTE P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE P30INTE P4INTE FD04H P47INTE P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE P40INTE P5INTE FD05H - - P55INTE P54INTE P53INTE P52INTE P51INTE P50INTE P6INTE FD06H P67INTE P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE P60INTE P7INTE FD07H P77INTE P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE P70INTE PnINTE.x:端口中断使能控制位(n=0~7,x=0~7) 0:关闭 Pn.x 口中断功能 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 349 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 1:使能 Pn.x 口中断功能 LCM 接口配置寄存器 符号 地址 B7 B6 LCMIFCFG FE50H LCMIFIE - B5 B4 B3 LCMIFIP[1:0] B2 LCMIFDPS[1:0] B1 B0 D16_D8 M68_I80 LCMIFIE:LCM接口中断允许位。 0:禁止 LCM 接口中断 1:允许 LCM 接口中断 DMA 中断使能寄存器 符号 地址 B7 B6 B5 B4 DMA_M2M_CFG FA00H M2MIE - TXACO RXACO M2MIP[1:0] M2MPTY[1:0] DMA_ADC_CFG FA10H ADCIE - - - ADCMIP[1:0] ADCPTY[1:0] DMA_SPI_CFG FA20H SPIIE ACT_TX ACT_RX - SPIIP[1:0] SPIPTY[1:0] DMA_UR1T_CFG FA30H UR1TIE - - - UR1TIP[1:0] UR1TPTY[1:0] DMA_UR1R_CFG FA38H UR1RIE - - - UR1RIP[1:0] UR1RPTY[1:0] DMA_UR2T_CFG FA40H UR2TIE - - - UR2TIP[1:0] UR2TPTY[1:0] DMA_UR2R_CFG FA48H UR2RIE - - - UR2RIP[1:0] UR2RPTY[1:0] DMA_UR3T_CFG FA50H UR3TIE - - - UR3TIP[1:0] UR3TPTY[1:0] DMA_UR3R_CFG FA58H UR3RIE - - - UR3RIP[1:0] UR3RPTY[1:0] DMA_UR3R_CFG FA60H UR4TIE - - - UR4TIP[1:0] UR4TPTY[1:0] DMA_UR4R_CFG FA68H UR4RIE - - - UR4RIP[1:0] UR4RPTY[1:0] DMA_LCM_CFG FA70H LCMIE - - - LCMIP[1:0] LCMPTY[1:0] B3 B2 B1 B0 M2MIE: DMA_M2M(存储器到存储器DMA)中断允许位。 0:禁止 DMA_M2M 中断 1:允许 DMA_M2M 中断 ADCIE:DMA_ADC(ADC DMA)中断允许位。 0:禁止 DMA_ADC 中断 1:允许 DMA_ADC 中断 SPIIE:DMA_SPI(SPI DMA)中断允许位。 0:禁止 DMA_SPI 中断 1:允许 DMA_SPI 中断 UR1TIE:DMA_UR1T(串口1发送DMA)中断允许位。 0:禁止 DMA_UR1T 中断 1:允许 DMA_UR1T 中断 UR1RIE:DMA_UR1R(串口1接收DMA)中断允许位。 0:禁止 DMA_UR1R 中断 1:允许 DMA_UR1R 中断 UR2TIE:DMA_UR2T(串口2发送DMA)中断允许位。 0:禁止 DMA_UR2T 中断 1:允许 DMA_UR2T 中断 UR2RIE:DMA_UR2R(串口2接收DMA)中断允许位。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 350 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 0:禁止 DMA_UR2R 中断 1:允许 DMA_UR2R 中断 UR3TIE:DMA_UR3T(串口3发送DMA)中断允许位。 0:禁止 DMA_UR3T 中断 1:允许 DMA_UR3T 中断 UR3RIE:DMA_UR3R(串口3接收DMA)中断允许位。 0:禁止 DMA_UR3R 中断 1:允许 DMA_UR3R 中断 UR4TIE:DMA_UR4T(串口4发送DMA)中断允许位。 0:禁止 DMA_UR4T 中断 1:允许 DMA_UR4T 中断 UR4RIE:DMA_UR4R(串口4接收DMA)中断允许位。 0:禁止 DMA_UR4R 中断 1:允许 DMA_UR4R 中断 LCMIE:DMA_LCM(LCM接口DMA)中断允许位。 0:禁止 DMA_LCM 中断 1:允许 DMA_LCM 中断 11.4.2 中断请求寄存器(中断标志位) 定时器控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 TCON 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1:定时器1溢出中断标志。中断服务程序中,硬件自动清零。 TF0:定时器0溢出中断标志。中断服务程序中,硬件自动清零。 IE1:外部中断1中断请求标志。中断服务程序中,硬件自动清零。 IE0:外部中断0中断请求标志。中断服务程序中,硬件自动清零。 中断标志辅助寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 AUXINTIF EFH - INT4IF INT3IF INT2IF - T4IF T3IF T2IF INT4IF:外部中断4中断请求标志。中断服务程序中硬件自动清零。 INT3IF:外部中断3中断请求标志。中断服务程序中硬件自动清零。 INT2IF:外部中断2中断请求标志。中断服务程序中硬件自动清零。 T4IF:定时器4溢出中断标志。中断服务程序中硬件自动清零(注意:此位为只写寄存器,不可读)。 T3IF:定时器3溢出中断标志。中断服务程序中硬件自动清零(注意:此位为只写寄存器,不可读)。 T2IF:定时器2溢出中断标志。中断服务程序中硬件自动清零(注意:此位为只写寄存器,不可读)。 注意: 早期采用 0.35um 工艺的 1T 8051,STC15 系列增加了 16 位重装载定时器,全球 8051 首次大手笔, 由于制造成本高,STC 可 16 位重装载的定时器 2/3/4 没有设计用户可以访问的中断请求标志位寄存器, 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 351 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 只有内部隐藏的标志位,提供给用户软件清内部隐藏标志位的方法是:用户软件禁止定时器 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 的新设计并没有考虑兼容传统 INTEL 的规格。 这是中国 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 S3CON ACH S3SM0 S3ST3 S3SM2 S3REN S3TB8 S3RB8 S3TI S3RI S4CON 84H S4SM0 S4ST4 S4SM2 S4REN S4TB8 S4RB8 S4TI S4RI TI:串口1发送完成中断请求标志。需要软件清零。 RI:串口1接收完成中断请求标志。需要软件清零。 S2TI:串口2发送完成中断请求标志。需要软件清零。 S2RI:串口2接收完成中断请求标志。需要软件清零。 S3TI:串口3发送完成中断请求标志。需要软件清零。 S3RI:串口3接收完成中断请求标志。需要软件清零。 S4TI:串口4发送完成中断请求标志。需要软件清零。 S4RI:串口4接收完成中断请求标志。需要软件清零。 电源管理寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PCON 87H SMOD SMOD0 LVDF POF GF1 GF0 PD IDL LVDF:低压检测中断请求标志。需要软件清零。 ADC 控制寄存器 符号 地址 B7 B6 B5 B4 ADC_CONTR BCH ADC_POWER ADC_START ADC_FLAG - B3 B2 B1 B0 ADC_CHS[3:0] ADC_FLAG:ADC转换完成中断请求标志。需要软件清零。 SPI 状态寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 SPSTAT CDH SPIF WCOL - - - - - - SPIF:SPI数据传输完成中断请求标志。需要软件清零。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 352 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 PCA 控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 CCON D8H CF CR - - CCF3 CCF2 CCF1 CCF0 CF:PCA计数器中断请求标志。需要软件清零。 CCF3:PCA模块3中断请求标志。需要软件清零。 CCF2:PCA模块2中断请求标志。需要软件清零。 CCF1:PCA模块1中断请求标志。需要软件清零。 CCF0:PCA模块0中断请求标志。需要软件清零。 比较器控制寄存器 1 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 CMPCR1 E6H CMPEN CMPIF PIE NIE - - 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 MSIF:I2C主机模式中断请求标志。需要软件清零。 ESTAI:I2C从机接收START事件中断请求标志。需要软件清零。 ERXI:I2C从机接收数据完成事件中断请求标志。需要软件清零。 ETXI:I2C从机发送数据完成事件中断请求标志。需要软件清零。 ESTOI:I2C从机接收STOP事件中断请求标志。需要软件清零。 增强型 PWM 配置寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PWMCFG F6H - - - - PWMCBIF EPWMCBI ENPWMTA PWMCEN PWMCBIF:增强型PWM0计数器中断请求标志。需要软件清零。 增强型 PWM 中断标志寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PWMIF FF05H C7IF C6IF C5IF C4IF C3IF C2IF C1IF C0IF C7IF:增强型PWM通道7中断请求标志。需要软件清零。 C6IF:增强型PWM通道6中断请求标志。需要软件清零。 C5IF:增强型PWM通道5中断请求标志。需要软件清零。 C4IF:增强型PWM通道4中断请求标志。需要软件清零。 C3IF:增强型PWM通道3中断请求标志。需要软件清零。 C2IF:增强型PWM通道2中断请求标志。需要软件清零。 C1IF:增强型PWM通道1中断请求标志。需要软件清零。 C0IF:增强型PWM通道0中断请求标志。需要软件清零。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 353 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 增强型 PWM 异常检测控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PWMFDCR FF06H INVCMP INVIO ENFD FLTFLIO EFDI FDCMP FDIO FDIF FDIF:增强型PWM异常检测中断请求标志。需要软件清零。 端口中断标志寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0INTF FD10H P07INTF P06INTF P05INTF P04INTF P03INTF P02INTF P01INTF P00INTF P1INTF FD11H P17INTF P16INTF P15INTF P14INTF P13INTF P12INTF P11INTF P10INTF P2INTF FD12H P27INTF P26INTF P25INTF P24INTF P23INTF P22INTF P21INTF P20INTF P3INTF FD13H P37INTF P36INTF P35INTF P34INTF P33INTF P32INTF P31INTF P30INTF P4INTF FD14H P47INTF P46INTF P45INTF P44INTF P43INTF P42INTF P41INTF P40INTF P5INTF FD15H - - P55INTF P54INTF P53INTF P52INTF P51INTF P50INTF P6INTF FD16H P67INTF P66INTF P65INTF P64INTF P63INTF P62INTF P61INTF P60INTF P7INTF FD17H P77INTF P76INTF P75INTF P74INTF P73INTF P72INTF P71INTF P70INTF PnINTF.x:端口中断请求标志位(n=0~7,x=0~7) 0:Pn.x 口没有中断请求 1:Pn.x 口有中断请求,若使能中断,则会进入中断服务程序。标志位需软件清 0。 LCM 接口状态寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 LCMIFSTA FE53H - - - - - - - LCMIFIF LCMIFIF:LCM接口中断请求标志。需要软件清零。 DMA 中断标志寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 DMA_M2M_STA FA02H - - - - - - - M2MIF DMA_ADC_STA FA12H - - - - - - - ADCIF DMA_SPI_STA FA22H - - - - - TXOVW RXLOSS SPIIF DMA_UR1T_STA FA32H - - - - - TXOVW - UR1TIF DMA_UR1R_STA FA3AH - - - - - - RXLOSS UR1RIF DMA_UR2T_STA FA42H - - - - - TXOVW - UR2TIF DMA_UR2R_STA FA4AH - - - - - - RXLOSS UR2RIF DMA_UR3T_STA FA52H - - - - - TXOVW - UR3TIF DMA_UR3R_STA FA5AH - - - - - - RXLOSS UR3RIF DMA_UR4T_STA FA62H - - - - - TXOVW - UR4TIF DMA_UR4R_STA FA6AH - - - - - - RXLOSS UR4RIF DMA_LCM_STA FA72H - - - - - - TXOVW LCMIF M2MIF: DMA_M2M(存储器到存储器DMA)中断请求标志。需要软件清零。 ADCIF:DMA_ADC(ADC DMA)中断请求标志。需要软件清零。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 354 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 SPIIF:DMA_SPI(SPI DMA)中断请求标志。需要软件清零。。 UR1TIF:DMA_UR1T(串口1发送DMA)中断请求标志。需要软件清零。 UR1RIF:DMA_UR1R(串口1接收DMA)中断请求标志。需要软件清零。 UR2TIF:DMA_UR2T(串口2发送DMA)中断请求标志。需要软件清零。 UR2RIF:DMA_UR2R(串口2接收DMA)中断请求标志。需要软件清零。 UR3TIF:DMA_UR3T(串口3发送DMA)中断请求标志。需要软件清零。 UR3RIF:DMA_UR3R(串口3接收DMA)中断请求标志。需要软件清零。 UR4TIF:DMA_UR4T(串口4发送DMA)中断请求标志。需要软件清零。 UR4RIF:DMA_UR4R(串口4接收DMA)中断请求标志。需要软件清零。 LCMIF:DMA_LCM(LCM接口DMA)中断请求标志。需要软件清零。 11.4.3 中断优先级寄存器 除 INT2、INT3、定时器 2、定时器 3 和定时器 4 外,其他中断均有 4 级中断优先级可设置 中断优先级控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 IP B8H PPCA PLVD PADC PS PT1 PX1 PT0 PX0 IPH B7H PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H IP2 B5H - PI2C PCMP PX4 PPWMFD PPWM PSPI PS2 IP2H B6H - PI2CH PCMPH PX4H PPWMFDH PPWMH PSPIH PS2H IP3 DFH - - - - - - PS4 PS3 IP3H EEH - - - - - - PS4H PS3H 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 级(较低级) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 355 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 10:定时器 1 中断优先级为 2 级(较高级) 11:定时器 1 中断优先级为 3 级(最高级) PSH,PS:串口1中断优先级控制位 00:串口 1 中断优先级为 0 级(最低级) 01:串口 1 中断优先级为 1 级(较低级) 10:串口 1 中断优先级为 2 级(较高级) 11:串口 1 中断优先级为 3 级(最高级) PADCH,PADC:ADC中断优先级控制位 00:ADC 中断优先级为 0 级(最低级) 01:ADC 中断优先级为 1 级(较低级) 10:ADC 中断优先级为 2 级(较高级) 11:ADC 中断优先级为 3 级(最高级) PLVDH,PLVD:低压检测中断优先级控制位 00:LVD 中断优先级为 0 级(最低级) 01:LVD 中断优先级为 1 级(较低级) 10:LVD 中断优先级为 2 级(较高级) 11:LVD 中断优先级为 3 级(最高级) PPCAH,PPCA:CCP/PCA/PWM中断优先级控制位 00:CCP/PCA/PWM 中断优先级为 0 级(最低级) 01:CCP/PCA/PWM 中断优先级为 1 级(较低级) 10:CCP/PCA/PWM 中断优先级为 2 级(较高级) 11:CCP/PCA/PWM 中断优先级为 3 级(最高级) PS2H,PS2:串口2中断优先级控制位 00:串口 2 中断优先级为 0 级(最低级) 01:串口 2 中断优先级为 1 级(较低级) 10:串口 2 中断优先级为 2 级(较高级) 11:串口 2 中断优先级为 3 级(最高级) PSPIH,PSPI:SPI中断优先级控制位 00:SPI 中断优先级为 0 级(最低级) 01:SPI 中断优先级为 1 级(较低级) 10:SPI 中断优先级为 2 级(较高级) 11:SPI 中断优先级为 3 级(最高级) PX4H,PX4:外部中断4中断优先级控制位 00:INT4 中断优先级为 0 级(最低级) 01:INT4 中断优先级为 1 级(较低级) 10:INT4 中断优先级为 2 级(较高级) 11:INT4 中断优先级为 3 级(最高级) PCMPH,PCMP:比较器中断优先级控制位 00:CMP 中断优先级为 0 级(最低级) 01:CMP 中断优先级为 1 级(较低级) 10:CMP 中断优先级为 2 级(较高级) 11:CMP 中断优先级为 3 级(最高级) PI2CH,PI2C:I2C中断优先级控制位 00:I2C 中断优先级为 0 级(最低级) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 356 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 01:I2C 中断优先级为 1 级(较低级) 10:I2C 中断优先级为 2 级(较高级) 11:I2C 中断优先级为 3 级(最高级) PPWMH,PPWM:增强型PWM中断优先级控制位 00:增强型 PWM 中断优先级为 0 级(最低级) 01:增强型 PWM 中断优先级为 1 级(较低级) 10:增强型 PWM 中断优先级为 2 级(较高级) 11:增强型 PWM 中断优先级为 3 级(最高级) PPWMFDH,PPWMFD:增强型PWM异常检测中断优先级控制位 00:PWMFD 中断优先级为 0 级(最低级) 01:PWMFD 中断优先级为 1 级(较低级) 10:PWMFD 中断优先级为 2 级(较高级) 11:PWMFD 中断优先级为 3 级(最高级) PS3H,PS3:串口3中断优先级控制位 00:串口 3 中断优先级为 0 级(最低级) 01:串口 3 中断优先级为 1 级(较低级) 10:串口 3 中断优先级为 2 级(较高级) 11:串口 3 中断优先级为 3 级(最高级) PS4H,PS4:串口4中断优先级控制位 00:串口 4 中断优先级为 0 级(最低级) 01:串口 4 中断优先级为 1 级(较低级) 10:串口 4 中断优先级为 2 级(较高级) 11:串口 4 中断优先级为 3 级(最高级) LCM 接口配置寄存器 符号 地址 B7 B6 LCMIFCFG FE50H LCMIFIE - B5 B4 LCMIFIP[1:0] B3 B2 LCMIFDPS[1:0] B1 B0 D16_D8 M68_I80 LCMIFIP[1:0]:LCM接口中断优先级控制位 00:LCM 接口中断优先级为 0 级(最低级) 01:LCM 接口中断优先级为 1 级(较低级) 10:LCM 接口中断优先级为 2 级(较高级) 11:LCM 接口中断优先级为 3 级(最高级) 端口中断优先级控制寄存器 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PINIPL FD60H P7IP P6IP P5IP P4IP P3IP P2IP P1IP P0IP PINIPH FD61H P7IPH P6IPH P5IPH P4IPH P3IPH P2IPH P1IPH P0IPH P0IPH,P0IP:P0口中断优先级控制位 00:P0 口中断优先级为 0 级(最低级) 01:P0 口中断优先级为 1 级(较低级) 10:P0 口中断优先级为 2 级(较高级) 11:P0 口中断优先级为 3 级(最高级) P1IPH,P1IP:P1口中断优先级控制位 00:P1 口中断优先级为 0 级(最低级) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 357 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 01:P1 口中断优先级为 1 级(较低级) 10:P1 口中断优先级为 2 级(较高级) 11:P1 口中断优先级为 3 级(最高级) P2IPH,P2IP:P2口中断优先级控制位 00:P2 口中断优先级为 0 级(最低级) 01:P2 口中断优先级为 1 级(较低级) 10:P2 口中断优先级为 2 级(较高级) 11:P2 口中断优先级为 3 级(最高级) P3IPH,P3IP:P3口中断优先级控制位 00:P3 口中断优先级为 0 级(最低级) 01:P3 口中断优先级为 1 级(较低级) 10:P3 口中断优先级为 2 级(较高级) 11:P3 口中断优先级为 3 级(最高级) P4IPH,P4IP:P4口中断优先级控制位 00:P4 口中断优先级为 0 级(最低级) 01:P4 口中断优先级为 1 级(较低级) 10:P4 口中断优先级为 2 级(较高级) 11:P4 口中断优先级为 3 级(最高级) P5IPH,P5IP:P5口中断优先级控制位 00:P5 口中断优先级为 0 级(最低级) 01:P5 口中断优先级为 1 级(较低级) 10:P5 口中断优先级为 2 级(较高级) 11:P5 口中断优先级为 3 级(最高级) P6IPH,P6IP:P6口中断优先级控制位 00:P6 口中断优先级为 0 级(最低级) 01:P6 口中断优先级为 1 级(较低级) 10:P6 口中断优先级为 2 级(较高级) 11:P6 口中断优先级为 3 级(最高级) P7IPH,P7IP:P7口中断优先级控制位 00:P7 口中断优先级为 0 级(最低级) 01:P7 口中断优先级为 1 级(较低级) 10:P7 口中断优先级为 2 级(较高级) 11:P7 口中断优先级为 3 级(最高级) DMA 中断优先级控制寄存器 符号 地址 B7 B6 B5 B4 DMA_M2M_CFG FA00H M2MIE - TXACO RXACO M2MIP[1:0] M2MPTY[1:0] DMA_ADC_CFG FA10H ADCIE - - - ADCMIP[1:0] ADCPTY[1:0] DMA_SPI_CFG FA20H SPIIE ACT_TX ACT_RX - SPIIP[1:0] SPIPTY[1:0] DMA_UR1T_CFG FA30H UR1TIE - - - UR1TIP[1:0] UR1TPTY[1:0] DMA_UR1R_CFG FA38H UR1RIE - - - UR1RIP[1:0] UR1RPTY[1:0] DMA_UR2T_CFG FA40H UR2TIE - - - UR2TIP[1:0] UR2TPTY[1:0] DMA_UR2R_CFG FA48H UR2RIE - - - UR2RIP[1:0] UR2RPTY[1:0] 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 B3 B2 B1 B0 去纯技术交流论坛:www.STCAIMCU.com - 358 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 DMA_UR3T_CFG FA50H UR3TIE - - - UR3TIP[1:0] UR3TPTY[1:0] DMA_UR3R_CFG FA58H UR3RIE - - - UR3RIP[1:0] UR3RPTY[1:0] DMA_UR3R_CFG FA60H UR4TIE - - - UR4TIP[1:0] UR4TPTY[1:0] DMA_UR4R_CFG FA68H UR4RIE - - - UR4RIP[1:0] UR4RPTY[1:0] DMA_LCM_CFG FA70H LCMIE - - - LCMIP[1:0] LCMPTY[1:0] M2MIP: DMA_M2M(存储器到存储器DMA)中断优先级控制位 00:DMA_M2M 中断优先级为 0 级(最低级) 01:DMA_M2M 中断优先级为 1 级(较低级) 10:DMA_M2M 中断优先级为 2 级(较高级) 11:DMA_M2M 中断优先级为 3 级(最高级) ADCIP:DMA_ADC(ADC DMA)中断优先级控制位 00:DMA_ADC 中断优先级为 0 级(最低级) 01:DMA_ADC 中断优先级为 1 级(较低级) 10:DMA_ADC 中断优先级为 2 级(较高级) 11:DMA_ADC 中断优先级为 3 级(最高级) SPIIP:DMA_SPI(SPI DMA)中断优先级控制位 00:DMA_SPI 中断优先级为 0 级(最低级) 01:DMA_SPI 中断优先级为 1 级(较低级) 10:DMA_SPI 中断优先级为 2 级(较高级) 11:DMA_SPI 中断优先级为 3 级(最高级) UR1TIP:DMA_UR1T(串口1发送DMA)中断优先级控制位 00:DMA_UR1T 中断优先级为 0 级(最低级) 01:DMA_UR1T 中断优先级为 1 级(较低级) 10:DMA_UR1T 中断优先级为 2 级(较高级) 11:DMA_UR1T 中断优先级为 3 级(最高级) UR1RIP:DMA_UR1R(串口1接收DMA)中断优先级控制位 00:DMA_UR1R 中断优先级为 0 级(最低级) 01:DMA_UR1R 中断优先级为 1 级(较低级) 10:DMA_UR1R 中断优先级为 2 级(较高级) 11:DMA_UR1R 中断优先级为 3 级(最高级) UR2TIP:DMA_UR2T(串口2发送DMA)中断优先级控制位 00:DMA_UR2T 中断优先级为 0 级(最低级) 01:DMA_UR2T 中断优先级为 1 级(较低级) 10:DMA_UR2T 中断优先级为 2 级(较高级) 11:DMA_UR2T 中断优先级为 3 级(最高级) UR2RIP:DMA_UR2R(串口2接收DMA)中断优先级控制位 00:DMA_UR2R 中断优先级为 0 级(最低级) 01:DMA_UR2R 中断优先级为 1 级(较低级) 10:DMA_UR2R 中断优先级为 2 级(较高级) 11:DMA_UR2R 中断优先级为 3 级(最高级) UR3TIP:DMA_UR3T(串口3发送DMA)中断优先级控制位 00:DMA_UR3T 中断优先级为 0 级(最低级) 01:DMA_UR3T 中断优先级为 1 级(较低级) 10:DMA_UR3T 中断优先级为 2 级(较高级) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 359 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11:DMA_UR3T 中断优先级为 3 级(最高级) UR3RIP:DMA_UR3R(串口3接收DMA)中断优先级控制位 00:DMA_UR3R 中断优先级为 0 级(最低级) 01:DMA_UR3R 中断优先级为 1 级(较低级) 10:DMA_UR3R 中断优先级为 2 级(较高级) 11:DMA_UR3R 中断优先级为 3 级(最高级) UR4TIP:DMA_UR4T(串口4发送DMA)中断优先级控制位 00:DMA_UR3R 中断优先级为 0 级(最低级) 01:DMA_UR3R 中断优先级为 1 级(较低级) 10:DMA_UR3R 中断优先级为 2 级(较高级) 11:DMA_UR3R 中断优先级为 3 级(最高级) UR4RIP:DMA_UR4R(串口4接收DMA)中断优先级控制位 00:DMA_UR4R 中断优先级为 0 级(最低级) 01:DMA_UR4R 中断优先级为 1 级(较低级) 10:DMA_UR4R 中断优先级为 2 级(较高级) 11:DMA_UR4R 中断优先级为 3 级(最高级) LCMIP:DMA_LCM(LCM接口DMA)中断优先级控制位 00:DMA_LCM 中断优先级为 0 级(最低级) 01:DMA_LCM 中断优先级为 1 级(较低级) 10:DMA_LCM 中断优先级为 2 级(较高级) 11:DMA_LCM 中断优先级为 3 级(最高级) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 360 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11.5 范例程序 INT0 中断(上升沿和下降沿),可同时支持上升沿和下降沿 11.5.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 sbit P10 P11 = = P1^0; P1^1; void INT0_Isr() interrupt 0 { if (P32) { P10 = !P10; } else { P11 = !P11; } } //判断上升沿和下降沿 //测试端口 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; IT0 = 0; EX0 = 1; EA = 1; 深圳国芯人工智能有限公司 //使能 INT0 上升沿和下降沿中断 //使能 INT0 中断 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 361 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 0003H INT0ISR ORG 0100H JB CPL RETI INT0,RISING P1.0 ;判断上升沿和下降沿 ;测试端口 CPL RETI P1.1 ;测试端口 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H CLR SETB SETB JMP IT0 EX0 EA $ INT0ISR: RISING: MAIN: ;使能 INT0 上升沿和下降沿中断 ;使能 INT0 中断 END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 362 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 INT0 中断(下降沿) 11.5.2 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 INT0_Isr() interrupt 0 { P10 = !P10; } //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //使能 INT0 下降沿中断 //使能 INT0 中断 IT0 = 1; EX0 = 1; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P0M1 P0M0 P1M1 DATA DATA DATA 深圳国芯人工智能有限公司 093H 094H 091H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 363 - STC8A8K64D4 系列技术手册 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0003H INT0ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H SETB SETB SETB JMP IT0 EX0 EA $ 技术支持: 19864585985 选型顾问: 13922805190 INT0ISR: ;测试端口 MAIN: ;使能 INT0 下降沿中断 ;使能 INT0 中断 END INT1 中断(上升沿和下降沿),可同时支持上升沿和下降沿 11.5.3 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 深圳国芯人工智能有限公司 = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 364 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr sfr sfr sfr P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit sbit P10 P11 = = P1^0; P1^1; void INT1_Isr() interrupt 2 { if (INT1) { P10 = !P10; } else { P11 = !P11; } } 技术支持: 19864585985 选型顾问: 13922805190 //判断上升沿和下降沿 //测试端口 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //使能 INT1 上升沿和下降沿中断 //使能 INT1 中断 IT1 = 0; EX1 = 1; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 深圳国芯人工智能有限公司 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 365 - STC8A8K64D4 系列技术手册 P5M1 P5M0 官方网站: www.STCAI.com 技术支持: 19864585985 DATA DATA 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0013H INT1ISR ORG 0100H JB CPL RETI INT1,RISING P1.0 ;判断上升沿和下降沿 ;测试端口 CPL RETI P1.1 ;测试端口 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H CLR SETB SETB JMP IT1 EX1 EA $ 选型顾问: 13922805190 INT1ISR: RISING: MAIN: ;使能 INT1 上升沿和下降沿中断 ;使能 INT1 中断 END INT1 中断(下降沿) 11.5.4 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 深圳国芯人工智能有限公司 = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 366 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr P4M1 P4M0 P5M1 P5M0 = = = = 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void INT1_Isr() interrupt 2 { P10 = !P10; } 技术支持: 19864585985 选型顾问: 13922805190 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //使能 INT1 下降沿中断 //使能 INT1 中断 IT1 = 1; EX1 = 1; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0013H INT1ISR ORG 0100H CPL P1.0 INT1ISR: 深圳国芯人工智能有限公司 ;测试端口 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 367 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RETI MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H SETB SETB SETB JMP IT1 EX1 EA $ ;使能 INT1 下降沿中断 ;使能 INT1 中断 END INT2 中断(下降沿),只支持下降沿中断 11.5.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; sfr #define #define #define sbit INTCLKO EX2 EX3 EX4 P10 = 0x8f; 0x10 0x20 0x40 P1^0; = void INT2_Isr() interrupt 10 { P10 = !P10; } 深圳国芯人工智能有限公司 //测试端口 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 368 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; //使能 INT2 中断 INTCLKO = EX2; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz INTCLKO EX2 EX3 EX4 DATA EQU EQU EQU 8FH 10H 20H 40H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0053H INT2ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H INT2ISR: ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 369 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV MOV MOV MOV P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV SETB JMP INTCLKO,#EX2 EA $ 技术支持: 19864585985 选型顾问: 13922805190 ;使能 INT2 中断 END INT3 中断(下降沿),只支持下降沿中断 11.5.6 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sfr #define #define #define sbit INTCLKO EX2 EX3 EX4 P10 = 0x8f; 0x10 0x20 0x40 P1^0; void INT3_Isr() interrupt 11 { P10 = !P10; } = //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 370 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //使能 INT3 中断 INTCLKO = EX3; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz INTCLKO EX2 EX3 EX4 DATA EQU EQU EQU 8FH 10H 20H 40H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 005BH INT3ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H INT3ISR: ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 371 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV P5M1, #00H MOV SETB JMP INTCLKO,#EX3 EA $ 技术支持: 19864585985 选型顾问: 13922805190 ;使能 INT3 中断 END INT4 中断(下降沿),只支持下降沿中断 11.5.7 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sfr #define #define #define sbit INTCLKO EX2 EX3 EX4 P10 = 0x8f; 0x10 0x20 0x40 P1^0; = void INT4_Isr() interrupt 16 { P10 = !P10; } //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 372 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 //使能 INT4 中断 INTCLKO = EX4; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz INTCLKO EX2 EX3 EX4 DATA EQU EQU EQU 8FH 10H 20H 40H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0083H INT4ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV SETB JMP INTCLKO,#EX4 EA $ INT4ISR: ;测试端口 MAIN: ;使能 INT4 中断 END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 373 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 定时器 0 中断 11.5.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 TM0_Isr() interrupt 1 { P10 = !P10; } //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; TMOD = 0x00; TL0 = 0x66; TH0 = 0xfc; TR0 = 1; ET0 = 1; EA = 1; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 汇编代码 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 374 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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: ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 11.5.9 定时器 1 中断 C 语言代码 //测试工作频率为 11.0592MHz 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 375 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 #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; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 DATA DATA DATA DATA DATA DATA 深圳国芯人工智能有限公司 093H 094H 091H 092H 095H 096H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 376 - STC8A8K64D4 系列技术手册 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 001BH TM1ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV SETB SETB SETB TMOD,#00H TL1,#66H TH1,#0FCH TR1 ET1 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM1ISR: ;测试端口 MAIN: ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 11.5.10 定时器 2 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr T2L T2H AUXR IE2 深圳国芯人工智能有限公司 = = = = 0xd7; 0xd6; 0x8e; 0xaf; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 377 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com #define sfr #define ET2 AUXINTIF T2IF = 0x04 0xef; 0x01 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void TM2_Isr() interrupt 12 { P10 = !P10; } 技术支持: 19864585985 选型顾问: 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; T2L = 0x66; T2H = 0xfc; AUXR = 0x10; IE2 = ET2; EA = 1; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T2L T2H AUXR IE2 ET2 AUXINTIF T2IF DATA DATA DATA DATA EQU DATA EQU 深圳国芯人工智能有限公司 0D7H 0D6H 8EH 0AFH 04H 0EFH 01H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 378 - STC8A8K64D4 系列技术手册 P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com 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 MOV MOV MOV MOV SETB T2L,#66H T2H,#0FCH AUXR,#10H IE2,#ET2 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM2ISR: ;测试端口 MAIN: ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 11.5.11 定时器 3 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 379 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 #include "intrins.h" sfr sfr sfr sfr #define sfr #define T3L T3H T4T3M IE2 ET3 AUXINTIF T3IF = = = = 0xd5; 0xd4; 0xd1; 0xaf; 0x20 0xef; 0x02 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; = void TM3_Isr() interrupt 19 { 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; T3L = 0x66; T3H = 0xfc; T4T3M = 0x08; IE2 = ET3; EA = 1; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T3L DATA 深圳国芯人工智能有限公司 0D5H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 380 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com T3H T4T3M IE2 ET3 AUXINTIF T3IF DATA DATA DATA EQU DATA EQU 0D4H 0D1H 0AFH 20H 0EFH 02H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 009BH TM3ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV SETB T3L,#66H T3H,#0FCH T4T3M,#08H IE2,#ET3 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM3ISR: ;测试端口 MAIN: ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 381 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 11.5.12 定时器 4 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr #define #define sfr #define #define T3L T3H T4L T4H T4T3M IE2 ET3 ET4 AUXINTIF T3IF T4IF = = = = = = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void TM4_Isr() interrupt 20 { P10 = !P10; } = 0xd5; 0xd4; 0xd3; 0xd2; 0xd1; 0xaf; 0x20 0x40 0xef; 0x02 0x04 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T4L = 0x66; T4H = 0xfc; 深圳国芯人工智能有限公司 //65536-11.0592M/12/1000 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 382 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 //启动定时器 //使能定时器中断 T4T3M = 0x80; IE2 = ET4; EA = 1; while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T3L T3H T4L T4H T4T3M IE2 ET3 ET4 AUXINTIF T3IF T4IF DATA DATA DATA DATA DATA DATA EQU EQU DATA EQU EQU 0D5H 0D4H 0D3H 0D2H 0D1H 0AFH 20H 40H 0EFH 02H 04H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 00A3H TM4ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV 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 TM4ISR: ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 383 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV P5M1, #00H MOV MOV MOV MOV SETB T4L,#66H T4H,#0FCH T4T3M,#80H IE2,#ET4 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 11.5.13 UART1 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr T2L T2H AUXR = = = 0xd7; 0xd6; 0x8e; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit sbit P10 P11 = = P1^0; P1^1; void UART1_Isr() interrupt 4 { if (TI) { TI = 0; P10 = !P10; } if (RI) { RI = 0; P11 = !P11; } } //清中断标志 //测试端口 //清中断标志 //测试端口 void main() 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 384 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; SCON = 0x50; T2L = 0xe8; T2H = 0xff; AUXR = 0x15; ES = 1; EA = 1; SBUF = 0x5a; //65536-11059200/115200/4=0FFE8H //启动定时器 //使能串口中断 //发送测试数据 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T2L T2H AUXR DATA DATA DATA 0D7H 0D6H 8EH 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 UART1ISR ORG 0100H JNB CLR CPL TI,CHECKRI TI P1.0 ;清中断标志 ;测试端口 JNB CLR RI,ISREXIT RI ;清中断标志 UART1ISR: CHECKRI: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 385 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com CPL P1.1 技术支持: 19864585985 选型顾问: 13922805190 ;测试端口 ISREXIT: RETI MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV SETB SETB MOV SCON,#50H T2L,#0E8H T2H,#0FFH AUXR,#15H ES EA SBUF,#5AH JMP $ ;65536-11059200/115200/4=0FFE8H ;启动定时器 ;使能串口中断 ;发送测试数据 END 11.5.14 UART2 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr #define T2L T2H AUXR S2CON S2BUF IE2 ES2 = = = = = = 0xd7; 0xd6; 0x8e; 0x9a; 0x9b; 0xaf; 0x01 sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 386 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr P4M1 P4M0 P5M1 P5M0 = = = = 0xb3; 0xb4; 0xc9; 0xca; sbit sbit P12 P13 = = P1^2; P1^3; void UART2_Isr() interrupt 8 { if (S2CON & 0x02) { S2CON &= ~0x02; P12 = !P12; } if (S2CON & 0x01) { S2CON &= ~0x01; P13 = !P13; } } 技术支持: 19864585985 选型顾问: 13922805190 //清中断标志 //测试端口 //清中断标志 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; S2CON = 0x10; T2L = 0xe8; T2H = 0xff; AUXR = 0x14; IE2 = ES2; EA = 1; S2BUF = 0x5a; //65536-11059200/115200/4=0FFE8H //启动定时器 //使能串口中断 //发送测试数据 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T2L T2H AUXR S2CON S2BUF IE2 ES2 DATA DATA DATA DATA DATA DATA EQU 深圳国芯人工智能有限公司 0D7H 0D6H 8EH 9AH 9BH 0AFH 01H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 387 - STC8A8K64D4 系列技术手册 P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com 技术支持: 19864585985 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0043H UART2ISR ORG 0100H PUSH PUSH MOV JNB ANL CPL ACC PSW A,S2CON ACC.1,CHECKRI S2CON,#NOT 02H P1.2 ;清中断标志 ;测试端口 MOV JNB ANL CPL A,S2CON ACC.0,ISREXIT S2CON,#NOT 01H P1.3 ;清中断标志 ;测试端口 POP POP RETI PSW ACC MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV MOV SETB MOV S2CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H IE2,#ES2 EA S2BUF,#5AH 选型顾问: 13922805190 UART2ISR: CHECKRI: ISREXIT: MAIN: 深圳国芯人工智能有限公司 ;65536-11059200/115200/4=0FFE8H ;启动定时器 ;使能串口中断 ;发送测试数据 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 388 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com JMP 技术支持: 19864585985 选型顾问: 13922805190 $ END 11.5.15 UART3 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr #define T2L T2H AUXR S3CON S3BUF IE2 ES3 = = = = = = 0xd7; 0xd6; 0x8e; 0xac; 0xad; 0xaf; 0x08 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit sbit P12 P13 = = P1^2; P1^3; void UART3_Isr() interrupt 17 { if (S3CON & 0x02) { S3CON &= ~0x02; P12 = !P12; } if (S3CON & 0x01) { S3CON &= ~0x01; P13 = !P13; } } //清中断标志 //测试端口 //清中断标志 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 389 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; S3CON = 0x10; T2L = 0xe8; T2H = 0xff; AUXR = 0x14; IE2 = ES3; EA = 1; S3BUF = 0x5a; //65536-11059200/115200/4=0FFE8H //启动定时器 //使能串口中断 //发送测试数据 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T2L T2H AUXR S3CON S3BUF IE2 ES3 DATA DATA DATA DATA DATA DATA EQU 0D7H 0D6H 8EH 0ACH 0ADH 0AFH 08H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 008BH UART3ISR ORG 0100H PUSH PUSH MOV JNB ANL ACC PSW A,S3CON ACC.1,CHECKRI S3CON,#NOT 02H UART3ISR: 深圳国芯人工智能有限公司 ;清中断标志 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 390 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 CPL P1.2 ;测试端口 MOV JNB ANL CPL A,S3CON ACC.0,ISREXIT S3CON,#NOT 01H P1.3 ;清中断标志 ;测试端口 POP POP RETI PSW ACC MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV MOV SETB MOV S3CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H IE2,#ES3 EA S3BUF,#5AH JMP $ 选型顾问: 13922805190 CHECKRI: ISREXIT: MAIN: ;65536-11059200/115200/4=0FFE8H ;启动定时器 ;使能串口中断 ;发送测试数据 END 11.5.16 UART4 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr #define T2L T2H AUXR S4CON S4BUF IE2 ES4 = = = = = = 0xd7; 0xd6; 0x8e; 0x84; 0x85; 0xaf; 0x10 sfr P0M1 = 0x93; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 391 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit sbit P12 P13 = = P1^2; P1^3; void UART4_Isr() interrupt 18 { if (S4CON & 0x02) { S4CON &= ~0x02; P12 = !P12; } if (S4CON & 0x01) { S4CON &= ~0x01; P13 = !P13; } } 技术支持: 19864585985 选型顾问: 13922805190 //清中断标志 //测试端口 //清中断标志 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; S4CON = 0x10; T2L = 0xe8; T2H = 0xff; AUXR = 0x14; IE2 = ES4; EA = 1; S4BUF = 0x5a; //65536-11059200/115200/4=0FFE8H //启动定时器 //使能串口中断 //发送测试数据 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 392 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 T2L T2H AUXR S4CON S4BUF IE2 ES4 DATA DATA DATA DATA DATA DATA EQU 0D7H 0D6H 8EH 84H 85H 0AFH 10H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0093H UART4ISR ORG 0100H PUSH PUSH MOV JNB ANL CPL ACC PSW A,S4CON ACC.1,CHECKRI S4CON,#NOT 02H P1.2 ;清中断标志 ;测试端口 MOV JNB ANL CPL A,S4CON ACC.0,ISREXIT S4CON,#NOT 01H P1.3 ;清中断标志 ;测试端口 POP POP RETI PSW ACC MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV 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 选型顾问: 13922805190 UART4ISR: CHECKRI: ISREXIT: MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 393 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV SETB MOV S4CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H IE2,#ES4 EA S4BUF,#5AH JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;65536-11059200/115200/4=0FFE8H ;启动定时器 ;使能串口中断 ;发送测试数据 END 11.5.17 LVD 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr #define #define #define #define #define sbit #define RSTCFG ENLVR LVD2V2 LVD2V4 LVD2V7 LVD3V0 ELVD LVDF = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sbit P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 P10 = = = = = = = = = = = = = void LVD_Isr() interrupt 6 { PCON &= ~LVDF; P10 = !P10; } = 0xff; 0x40 0x00 0x01 0x02 0x03 IE^6; 0x20 //RSTCFG.6 //LVD@2.2V //LVD@2.4V //LVD@2.7V //LVD@3.0V //PCON.5 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; P1^0; //清中断标志 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 394 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; PCON &= ~LVDF; RSTCFG = LVD3V0; ELVD = 1; //使能 LVD 中断 EA = 1; //上电需要清中断标志 //设置 LVD 电压为 3.0V while (1); } 汇编代码 ;测试工作频率为 11.0592MHz RSTCFG ENLVR LVD2V2 LVD2V4 LVD2V7 LVD3V0 ELVD LVDF DATA EQU EQU EQU EQU EQU BIT EQU 0FFH 40H 00H 01H 02H 03H IE.6 20H 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 0033H LVDISR ORG 0100H ANL CPL RETI PCON,#NOT LVDF P1.0 MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H ;RSTCFG.6 ;LVD@2.2V ;LVD@2.4V ;LVD@2.7V ;LVD@3.0V ;PCON.5 LVDISR: ;清中断标志 ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 395 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV MOV MOV MOV P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H ANL MOV SETB SETB JMP PCON,#NOT LVDF RSTCFG,# LVD3V0 ELVD EA $ 技术支持: 19864585985 选型顾问: 13922805190 ;上电需要清中断标志 ;设置 LVD 电压为 3.0V ;使能 LVD 中断 END 11.5.18 SPI 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr #define SPSTAT SPCTL SPDAT IE2 ESPI = = = = 0xcd; 0xce; 0xcf; 0xaf; 0x02 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void SPI_Isr() interrupt 9 { SPSTAT = 0xc0; P10 = !P10; } //清中断标志 //测试端口 void main() { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 396 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; //使能 SPI 主机模式 //清中断标志 //使能 SPI 中断 SPCTL = 0x50; SPSTAT = 0xc0; IE2 = ESPI; EA = 1; SPDAT = 0x5a; //发送测试数据 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz SPSTAT SPCTL SPDAT IE2 ESPI DATA DATA DATA DATA EQU 0CDH 0CEH 0CFH 0AFH 02H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 004BH SPIISR ORG 0100H MOV CPL RETI SPSTAT,#0C0H P1.0 MOV MOV SP, #5FH P0M0, #00H SPIISR: ;清中断标志 ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 397 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV SETB MOV SPCTL,#50H SPSTAT,#0C0H IE2,#ESPI EA SPDAT,#5AH JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;使能 SPI 主机模式 ;清中断标志 ;使能 SPI 中断 ;发送测试数据 END 11.5.19 比较器中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr CMPCR1 CMPCR2 = = 0xe6; 0xe7; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void CMP_Isr() interrupt 21 { CMPCR1 &= ~0x40; P10 = !P10; } //清中断标志 //测试端口 void main() 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 398 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; CMPCR2 = 0x00; CMPCR1 = 0x80; CMPCR1 |= 0x30; CMPCR1 &= ~0x08; CMPCR1 |= 0x04; CMPCR1 |= 0x02; EA = 1; //使能比较器模块 //使能比较器边沿中断 //P3.6 为 CMP+输入脚 //P3.7 为 CMP-输入脚 //使能比较器输出 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz CMPCR1 CMPCR2 DATA DATA 0E6H 0E7H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 00ABH CMPISR ORG 0100H ANL CPL RETI CMPCR1,#NOT 40H P1.0 MOV MOV SP, #5FH P0M0, #00H CMPISR: ;清中断标志 ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 399 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 ORL ANL ORL ORL SETB CMPCR2,#00H CMPCR1,#80H CMPCR1,#30H CMPCR1,#NOT 08H CMPCR1,#04H CMPCR1,#02H EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;使能比较器模块 ;使能比较器边沿中断 ;P3.6 为 CMP+输入脚 ;P3.7 为 CMP-输入脚 ;使能比较器输出 END 11.5.20 I2C 中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr P_SW2 #define #define #define #define #define #define #define #d efine I2CCFG I2CMSCR I2CMSST I2CSLCR I2CSLST I2CSLADR I2CTXD (*(unsigned char volatile xdata *)0xfe80) (*(unsigned char volatile xdata *)0xfe81) (*(unsigned char volatile xdata *)0xfe82) (*(unsigned char volatile xdata *)0xfe83) (*(unsigned char volatile xdata *)0xfe84) (*(unsigned char volatile xdata *)0xfe85) (*(unsigned char volatile xdata *)0xfe86) I2CRXD (*(unsigned char volatile xdata *)0xfe87) sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 深圳国芯人工智能有限公司 = = = = = = = = = = = = 0xba; 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 400 - STC8A8K64D4 系列技术手册 sfr sbit P5M0 P10 官方网站: www.STCAI.com = = 技术支持: 19864585985 选型顾问: 13922805190 0xca; P1^0; void I2C_Isr() interrupt 24 { _push_(P_SW2); P_SW2 |= 0x80; if (I2CMSST & 0x40) { I2CMSST &= ~0x40; P10 = !P10; } _pop_(P_SW2); } //清中断标志 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P_SW2 = 0x80; I2CCFG = 0xc0; I2CMSCR = 0x80; P_SW2 = 0x00; EA = 1; //使能 I2C 主机模式 //使能 I2C 中断; P_SW2 = 0x80; I2CMSCR = 0x81; P_SW2 = 0x00; //发送起始命令 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz P_SW2 DATA 0BAH I2CCFG I2CMSCR I2CMSST I2CSLCR I2CSLST I2CSLADR I2CTXD I2CRXD XDATA XDATA XDATA XDATA XDATA XDATA XDATA XDATA 0FE80H 0FE81H 0FE82H 0FE83H 0FE84H 0FE85H 0FE86H 0FE87H P0M1 DATA 093H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 401 - STC8A8K64D4 系列技术手册 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 00C3H I2CISR ORG 0100H PUSH PUSH PUSH PUSH MOV MOV MOVX ANL MOVX CPL POP POP POP POP RETI ACC DPL DPH P_SW2 P_SW2,#80H DPTR,#I2CMSST A,@DPTR A,#NOT 40H @DPTR,A P1.0 P_SW2 DPH DPL ACC MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOVX MOV MOV MOVX MOV SETB P_SW2,#80H A,#0C0H DPTR,#I2CCFG @DPTR,A A,#80H DPTR,#I2CMSCR @DPTR,A P_SW2,#00H EA 技术支持: 19864585985 选型顾问: 13922805190 I2CISR: ;清中断标志 ;测试端口 MAIN: 深圳国芯人工智能有限公司 ;使能 I2C 主机模式 ;使能 I2C 中断 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 402 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOVX MOV P_SW2,#80H A,#081H DPTR,#I2CMSCR @DPTR,A P_SW2,#00H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;发送起始命令 END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 403 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 12 普通 I/O 口均可中断,不是传统外部中断 STC8A8K64D4 系列支持所有的 I/O 中断,且支持 4 种中断模式:下降沿中断、上升沿中断、低电 平中断、高电平中断。每组 I/O 口都有独立的中断入口地址,每个 I/O 可独立设置中断模式, 每个 I/O 可 独立设置唤醒掉电模式 12.1 I/O 口中断相关寄存器 位地址与符号 符号 描述 地址 复位值 B7 B6 B5 B4 B3 B2 B1 B0 P0INTE P0 口中断使能寄存器 FD00H P07INTE P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE P00INTE 0000,0000 P1INTE P1 口中断使能寄存器 FD01H P17INTE P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE P10INTE 0000,0000 P2INTE P2 口中断使能寄存器 FD02H P27INTE P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE P20INTE 0000,0000 P3INTE P3 口中断使能寄存器 FD03H P37INTE P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE P30INTE 0000,0000 P4INTE P4 口中断使能寄存器 FD04H P47INTE P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE P40INTE 0000,0000 P5INTE P5 口中断使能寄存器 FD05H - P55INTE P54INTE P53INTE P52INTE P51INTE P50INTE xx00,0000 P6INTE P6 口中断使能寄存器 FD06H P67INTE P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE P60INTE 0000,0000 P7INTE P7 口中断使能寄存器 FD07H P77INTE P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE P70INTE 0000,0000 P0INTF P0 口中断标志寄存器 FD10H P07INTF P06INTF P05INTF P04INTF P03INTF P02INTF P01INTF P00INTF 0000,0000 P1INTF P1 口中断标志寄存器 FD11H P17INTF P16INTF P15INTF P14INTF P13INTF P12INTF P11INTF P10INTF 0000,0000 P2INTF P2 口中断标志寄存器 FD12H P27INTF P26INTF P25INTF P24INTF P23INTF P22INTF P21INTF P20INTF 0000,0000 P3INTF P3 口中断标志寄存器 FD13H P37INTF P36INTF P35INTF P34INTF P33INTF P32INTF P31INTF P30INTF 0000,0000 P4INTF P4 口中断标志寄存器 FD14H P47INTF P46INTF P45INTF P44INTF P43INTF P42INTF P41INTF P40INTF 0000,0000 P5INTF P5 口中断标志寄存器 FD15H - P55INTF P54INTF P53INTF P52INTF P51INTF P50INTF xx00,0000 P6INTF P6 口中断标志寄存器 FD16H P67INTF P66INTF P65INTF P64INTF P63INTF P62INTF P61INTF P60INTF 0000,0000 P7INTF P7 口中断标志寄存器 FD17H P77INTF P76INTF P75INTF P74INTF P73INTF P72INTF P71INTF P70INTF 0000,0000 P0IM0 P0 口中断模式寄存器 0 FD20H P07IM0 P06IM0 P05IM0 P04IM0 P03IM0 P02IM0 P01IM0 P00IM0 0000,0000 P1IM0 P1 口中断模式寄存器 0 FD21H P17IM0 P16IM0 P15IM0 P14IM0 P13IM0 P12IM0 P11IM0 P10IM0 0000,0000 P2IM0 P2 口中断模式寄存器 0 FD22H P27IM0 P26IM0 P25IM0 P24IM0 P23IM0 P22IM0 P21IM0 P20IM0 0000,0000 P3IM0 P3 口中断模式寄存器 0 FD23H P37IM0 P36IM0 P35IM0 P34IM0 P33IM0 P32IM0 P31IM0 P30IM0 0000,0000 P4IM0 P4 口中断模式寄存器 0 FD24H P47IM0 P46IM0 P45IM0 P44IM0 P43IM0 P42IM0 P41IM0 P40IM0 0000,0000 P5IM0 P5 口中断模式寄存器 0 FD25H - - P55IM0 P54IM0 P53IM0 P52IM0 P51IM0 P50IM0 xx00,0000 P6IM0 P6 口中断模式寄存器 0 FD26H P67IM0 P66IM0 P65IM0 P64IM0 P63IM0 P62IM0 P61IM0 P60IM0 0000,0000 P7IM0 P7 口中断模式寄存器 0 FD27H P77IM0 P76IM0 P75IM0 P74IM0 P73IM0 P72IM0 P71IM0 P70IM0 0000,0000 P0IM1 P0 口中断模式寄存器 1 FD30H P07IM1 P06IM1 P05IM1 P04IM1 P03IM1 P02IM1 P01IM1 P00IM1 0000,0000 P1IM1 P1 口中断模式寄存器 1 FD31H P17IM1 P16IM1 P15IM1 P14IM1 P13IM1 P12IM1 P11IM1 P10IM1 0000,0000 P2IM1 P2 口中断模式寄存器 1 FD32H P27IM1 P26IM1 P25IM1 P24IM1 P23IM1 P22IM1 P21IM1 P20IM1 0000,0000 P3IM1 P3 口中断模式寄存器 1 FD33H P37IM1 P36IM1 P35IM1 P34IM1 P33IM1 P32IM1 P31IM1 P30IM1 0000,0000 P4IM1 P4 口中断模式寄存器 1 FD34H P47IM1 P46IM1 P45IM1 P44IM1 P43IM1 P42IM1 P41IM1 P40IM1 0000,0000 P5IM1 P5 口中断模式寄存器 1 FD35H - - P55IM1 P54IM1 P53IM1 P52IM1 P51IM1 P50IM1 xx00,0000 P6IM1 P6 口中断模式寄存器 1 FD36H P67IM1 P66IM1 P65IM1 P64IM1 P63IM1 P62IM1 P61IM1 P60IM1 0000,0000 P7IM1 P7 口中断模式寄存器 1 FD37H P77IM1 P76IM1 P75IM1 P74IM1 P73IM1 P72IM1 P71IM1 P70IM1 0000,0000 深圳国芯人工智能有限公司 - - 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 404 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 PINIPL I/O 口中断优先级低寄存器 FD60H P7IP P6IP P5IP P4IP P3IP P2IP P1IP P0IP 0000,0000 PINIPH I/O 口中断优先级高寄存器 FD61H P7IPH P6IPH P5IPH P4IPH P3IPH P2IPH P1IPH P0IPH 0000,0000 P0WKUE P0 口中断唤醒使能寄存器 FD40H P07WKUE P06WKUE P05WKUE P04WKUE P03WKUE P02WKUE P01WKUE P00WKUE 0000,0000 P1WKUE P1 口中断唤醒使能寄存器 FD41H P17WKUE P16WKUE P15WKUE P14WKUE P13WKUE P12WKUE P11WKUE P10WKUE 0000,0000 P2WKUE P2 口中断唤醒使能寄存器 FD42H P27WKUE P26WKUE P25WKUE P24WKUE P23WKUE P22WKUE P21WKUE P20WKUE 0000,0000 P3WKUE P3 口中断唤醒使能寄存器 FD43H P37WKUE P36WKUE P35WKUE P34WKUE P33WKUE P32WKUE P31WKUE P30WKUE 0000,0000 P4WKUE P4 口中断唤醒使能寄存器 FD44H P47WKUE P46WKUE P45WKUE P44WKUE P43WKUE P42WKUE P41WKUE P40WKUE 0000,0000 P5WKUE P5 口中断唤醒使能寄存器 FD45H P6WKUE P6 口中断唤醒使能寄存器 FD46H P67WKUE P66WKUE P65WKUE P64WKUE P63WKUE P62WKUE P61WKUE P60WKUE 0000,0000 P7WKUE P7 口中断唤醒使能寄存器 FD47H P77WKUE P76WKUE P75WKUE P74WKUE P73WKUE P72WKUE P71WKUE P70WKUE 0000,0000 - - P55WKUE P54WKUE P53WKUE P52WKUE P51WKUE P50WKUE xx00,0000 12.1.1 端口中断使能寄存器(PxINTE) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0INTE FD00H P07INTE P06INTE P05INTE P04INTE P03INTE P02INTE P01INTE P00INTE P1INTE FD01H P17INTE P16INTE P15INTE P14INTE P13INTE P12INTE P11INTE P10INTE P2INTE FD02H P27INTE P26INTE P25INTE P24INTE P23INTE P22INTE P21INTE P20INTE P3INTE FD03H P37INTE P36INTE P35INTE P34INTE P33INTE P32INTE P31INTE P30INTE P4INTE FD04H P47INTE P46INTE P45INTE P44INTE P43INTE P42INTE P41INTE P40INTE P5INTE FD05H - - P55INTE P54INTE P53INTE P52INTE P51INTE P50INTE P6INTE FD06H P67INTE P66INTE P65INTE P64INTE P63INTE P62INTE P61INTE P60INTE P7INTE FD07H P77INTE P76INTE P75INTE P74INTE P73INTE P72INTE P71INTE P70INTE PnINTE.x:端口中断使能控制位(n=0~7,x=0~7) 0:关闭 Pn.x 口中断功能 1:使能 Pn.x 口中断功能 12.1.2 端口中断标志寄存器(PxINTF) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0INTF FD10H P07INTF P06INTF P05INTF P04INTF P03INTF P02INTF P01INTF P00INTF P1INTF FD11H P17INTF P16INTF P15INTF P14INTF P13INTF P12INTF P11INTF P10INTF P2INTF FD12H P27INTF P26INTF P25INTF P24INTF P23INTF P22INTF P21INTF P20INTF P3INTF FD13H P37INTF P36INTF P35INTF P34INTF P33INTF P32INTF P31INTF P30INTF P4INTF FD14H P47INTF P46INTF P45INTF P44INTF P43INTF P42INTF P41INTF P40INTF P5INTF FD15H - - P55INTF P54INTF P53INTF P52INTF P51INTF P50INTF P6INTF FD16H P67INTF P66INTF P65INTF P64INTF P63INTF P62INTF P61INTF P60INTF P7INTF FD17H P77INTF P76INTF P75INTF P74INTF P73INTF P72INTF P71INTF P70INTF PnINTF.x:端口中断请求标志位(n=0~7,x=0~7) 0:Pn.x 口没有中断请求 1:Pn.x 口有中断请求,若使能中断,则会进入中断服务程序。标志位需软件清 0。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 405 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 12.1.3 端口中断模式配置寄存器(PxIM0,PxIM1) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0IM0 FD20H P07IM0 P06IM0 P05IM0 P04IM0 P03IM0 P02IM0 P01IM0 P00IM0 P0IM1 FD30H P07IM1 P06IM1 P05IM1 P04IM1 P03IM1 P02IM1 P01IM1 P00IM1 P1IM0 FD21H P17IM0 P16IM0 P15IM0 P14IM0 P13IM0 P12IM0 P11IM0 P10IM0 P1IM1 FD31H P17IM1 P16IM1 P15IM1 P14IM1 P13IM1 P12IM1 P11IM1 P10IM1 P2IM0 FD22H P27IM0 P26IM0 P25IM0 P24IM0 P23IM0 P22IM0 P21IM0 P20IM0 P2IM1 FD32H P27IM1 P26IM1 P25IM1 P24IM1 P23IM1 P22IM1 P21IM1 P20IM1 P3IM0 FD23H P37IM0 P36IM0 P35IM0 P34IM0 P33IM0 P32IM0 P31IM0 P30IM0 P3IM1 FD33H P37IM1 P36IM1 P35IM1 P34IM1 P33IM1 P32IM1 P31IM1 P30IM1 P4IM0 FD24H P47IM0 P46IM0 P45IM0 P44IM0 P43IM0 P42IM0 P41IM0 P40IM0 P4IM1 FD34H P47IM1 P46IM1 P45IM1 P44IM1 P43IM1 P42IM1 P41IM1 P40IM1 P5IM0 FD25H - - P55IM0 P54IM0 P53IM0 P52IM0 P51IM0 P50IM0 P5IM1 FD35H - - P55IM1 P54IM1 P53IM1 P52IM1 P51IM1 P50IM1 P6IM0 FD26H P67IM0 P66IM0 P65IM0 P64IM0 P63IM0 P62IM0 P61IM0 P60IM0 P6IM1 FD36H P67IM1 P66IM1 P65IM1 P64IM1 P63IM1 P62IM1 P61IM1 P60IM1 P7IM0 FD27H P77IM0 P76IM0 P75IM0 P74IM0 P73IM0 P72IM0 P71IM0 P70IM0 P7IM1 FD37H P77IM1 P76IM1 P75IM1 P74IM1 P73IM1 P72IM1 P71IM1 P70IM1 配置端口的模式 PnIM1.x PnIM0.x Pn.x 口中断模式 0 0 下降沿中断 0 1 上升沿中断 1 0 低电平中断 1 1 高电平中断 12.1.4 端口中断优先级控制寄存器(PINIPL,PINIPH) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 PINIPL FD60H P7IP P6IP P5IP P4IP P3IP P2IP P1IP P0IP PINIPH FD61H P7IPH P6IPH P5IPH P4IPH P3IPH P2IPH P1IPH P0IPH PxIPH,PxIP:Px口中断优先级控制位 00:Px 口中断优先级为 0 级(最低级) 01:Px 口中断优先级为 1 级(较低级) 10:Px 口中断优先级为 2 级(较高级) 11:Px 口中断优先级为 3 级(最高级) 12.1.5 端口中断掉电唤醒使能寄存器(PxWKUE) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 P0WKU FD40 P07WKU P06WKU P05WKU P04WKU P03WKU P02WKU P01WKU P00WKU E H E E E E E E E E P1WKU FD41 P17WKU P16WKU P15WKU P14WKU P13WKU P12WKU P11WKU P10WKU 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 406 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 E H E E E E E E E E P2WKU FD42 P27WKU P26WKU P25WKU P24WKU P23WKU P22WKU P21WKU P20WKU E H E E E E E E E E P3WKU FD43 P37WKU P36WKU P35WKU P34WKU P33WKU P32WKU P31WKU P30WKU E H E E E E E E E E P4WKU FD44 P47WKU P46WKU P45WKU P44WKU P43WKU P42WKU P41WKU P40WKU E H E E E E E E E E P5WKU FD45 P54WKU P53WKU P52WKU P51WKU P50WKU H - P55WKU E - E E E E E E P6WKU FD46 P67WKU P66WKU P65WKU P64WKU P63WKU P62WKU P61WKU P60WKU E H E E E E E E E E P7WKU FD47 P77WKU P76WKU P75WKU P74WKU P73WKU P72WKU P71WKU P70WKU E H E E E E E E E E PnxWKUE:端口中断掉电唤醒使能控制位(n=0~7,x=0~7) 0:关闭 Pn.x 口中断掉电唤醒功能 1:使能 Pn.x 口中断掉电唤醒功能 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 407 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 12.2 范例程序 P0 口下降沿中断 12.2.1 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 = = = = = = = = = = = = = = = = 0x94; 0x93; 0x92; 0x91; 0x96; 0x95; 0xb2; 0xb1; 0xb4; 0xb3; 0xca; 0xc9; 0xcc; 0xcb; 0xe2; 0xe1; sfr P_SW2 = 0xba; #define #define #define #define P0INTE P0INTF P0IM0 P0IM1 (*(unsigned char volatile xdata *)0xfd00) (*(unsigned char volatile xdata *)0xfd10) (*(unsigned char volatile xdata *)0xfd20) (*(unsigned char volatile xdata *)0xfd30) void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P_SW2 |= 0x80; P0IM0 = 0x00; P0IM1 = 0x00; P0INTE = 0xff; P_SW2 &= ~0x80; //下降沿中断 //使能 P0 口中断 EA = 1; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 408 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 while (1); } //由于中断向量大于 31,在 KEIL 中无法直接编译 //必须借用第 13 号中断入口地址 void common_isr() interrupt 13 { unsigned char psw2_st; unsigned char intf; psw2_st = P_SW2; P_SW2 |= 0x80; intf = P0INTF; if (intf) { P0INTF = 0x00; if (intf & 0x01) { //P0.0 口中断 } if (intf & 0x02) { //P0.1 口中断 } if (intf & 0x04) { //P0.2 口中断 } if (intf & 0x08) { //P0.3 口中断 } if (intf & 0x10) { //P0.4 口中断 } if (intf & 0x20) { //P0.5 口中断 } if (intf & 0x40) { //P0.6 口中断 } if (intf & 0x80) { //P0.7 口中断 } } P_SW2 = psw2_st; } // ISR.ASM //将下面的代码保存为 ISR.ASM,然后将文件加入到项目中即可 CSEG JMP AT 012BH P0INT_ISR ;P0 口中断入口地址 P0INT_ISR: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 409 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com JMP END 006BH 技术支持: 19864585985 选型顾问: 13922805190 ;借用 13 号中断的入口地址 汇编代码 ;测试工作频率为 11.0592MHz P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 094H 093H 092H 091H 096H 095H 0B2H 0B1H 0B4H 0B3H 0CAH 0C9H 0CCH 0CBH 0E2H 0E1H P_SW2 DATA 0BAH P0INTE P0INTF P0IM0 P0IM1 XDATA XDATA XDATA XDATA 0FD00H 0FD10H 0FD20H 0FD30H ORG LJMP 0000H MAIN ORG 012BH PUSH PUSH PUSH PUSH PUSH ACC B DPL DPH P_SW2 MOV MOVX MOV CLR MOVX MOV DPTR,#P0INTF A,@DPTR B,A A @DPTR,A A,B JNB NOP ACC.0,CHECKP01 JNB NOP ACC.1,CHECKP02 JNB NOP ACC.2,CHECKP03 ;P0 口中断入口地址 P0INT_ISR: CHECKP00: ;P0.0 口中断 CHECKP01: ;P0.1 口中断 CHECKP02: 深圳国芯人工智能有限公司 ;P0.2 口中断 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 410 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 CHECKP03 JNB NOP ACC.3,CHECKP04 JNB NOP ACC.4,CHECKP05 JNB NOP ACC.5,CHECKP06 JNB NOP ACC.6,CHECKP07 JNB NOP ACC.7,P0ISREXIT POP POP POP POP POP RETI P_SW2 DPH DPL B ACC ORG 0200H MOV SP, #5FH MOV MOV MOV MOV MOV MOV MOV MOV P0M0,#00H P0M1,#00H P1M0,#00H P1M1,#00H P2M0,#00H P2M1,#00H P3M0,#00H P3M1,#00H ORL CLR MOV MOVX MOV MOVX MOV MOV MOVX ANL P_SW2,#80H A DPTR,# P0IM0 @DPTR,A DPTR,# P0IM1 @DPTR,A DPTR,# P0INTE A,#0FFH @DPTR,A P_SW2,#7FH SETB EA JMP $ ;P0.3 口中断 CHECKP04: ;P0.4 口中断 CHECKP05: ;P0.5 口中断 CHECKP06: ;P0.6 口中断 CHECKP07: ;P0.7 口中断 P0ISREXIT: MAIN: ;下降沿中断 ;使能 P0 口中断 END 12.2.2 P1 口上升沿中断 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 411 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 = = = = = = = = = = = = = = = = 0x94; 0x93; 0x92; 0x91; 0x96; 0x95; 0xb2; 0xb1; 0xb4; 0xb3; 0xca; 0xc9; 0xcc; 0xcb; 0xe2; 0xe1; sfr P_SW2 = 0xba; #define #define #define #define P1INTE P1INTF P1IM0 P1IM1 (*(unsigned char volatile xdata *)0xfd01) (*(unsigned char volatile xdata *)0xfd11) (*(unsigned char volatile xdata *)0xfd21) (*(unsigned char volatile xdata *)0xfd31) void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P_SW2 |= 0x80; P1IM0 = 0xff; P1IM1 = 0x00; P1INTE = 0xff; P_SW2 &= ~0x80; //上升沿中断 //使能 P1 口中断 EA = 1; while (1); } //由于中断向量大于 31,在 KEIL 中无法直接编译 //必须借用第 13 号中断入口地址 void common_isr() interrupt 13 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 412 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 { unsigned char psw2_st; unsigned char intf; psw2_st = P_SW2; P_SW2 |= 0x80; intf = P1INTF; if (intf) { P1INTF = 0x00; if (intf & 0x01) { //P1.0 口中断 } if (intf & 0x02) { //P1.1 口中断 } if (intf & 0x04) { //P1.2 口中断 } if (intf & 0x08) { //P1.3 口中断 } if (intf & 0x10) { //P1.4 口中断 } if (intf & 0x20) { //P1.5 口中断 } if (intf & 0x40) { //P1.6 口中断 } if (intf & 0x80) { //P1.7 口中断 } } P_SW2 = psw2_st; } // ISR.ASM //将下面的代码保存为 ISR.ASM,然后将文件加入到项目中即可 CSEG JMP AT 0133H P1INT_ISR ;P1 口中断入口地址 JMP END 006BH ;借用 13 号中断的入口地址 P1INT_ISR: 汇编代码 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 413 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 ;测试工作频率为 11.0592MHz P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 094H 093H 092H 091H 096H 095H 0B2H 0B1H 0B4H 0B3H 0CAH 0C9H 0CCH 0CBH 0E2H 0E1H P_SW2 DATA 0BAH P1INTE P1INTF P1IM0 P1IM1 XDATA XDATA XDATA XDATA 0FD01H 0FD11H 0FD21H 0FD31H ORG LJMP 0000H MAIN ORG 0133H PUSH PUSH PUSH PUSH PUSH ACC B DPL DPH P_SW2 MOV MOVX MOV CLR MOVX MOV DPTR,#P1INTF A,@DPTR B,A A @DPTR,A A,B JNB NOP ACC.0,CHECKP11 JNB NOP ACC.1,CHECKP12 JNB NOP ACC.2,CHECKP13 JNB NOP ACC.3,CHECKP14 JNB NOP ACC.4,CHECKP15 ;P1 口中断入口地址 P1INT_ISR: CHECKP10: ;P1.0 口中断 CHECKP11: ;P1.1 口中断 CHECKP12: ;P1.2 口中断 CHECKP13 ;P1.3 口中断 CHECKP14: ;P1.4 口中断 CHECKP15: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 414 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com JNB NOP ACC.5,CHECKP16 JNB NOP ACC.6,CHECKP17 JNB NOP ACC.7,P1ISREXIT POP POP POP POP POP RETI P_SW2 DPH DPL B ACC ORG 0200H MOV SP, #5FH MOV MOV MOV MOV MOV MOV MOV MOV P0M0,#00H P0M1,#00H P1M0,#00H P1M1,#00H P2M0,#00H P2M1,#00H P3M0,#00H P3M1,#00H ORL CLR MOV MOVX MOV MOVX MOV MOV MOVX ANL P_SW2,#80H A DPTR,# P1IM0 @DPTR,A DPTR,# P1IM1 @DPTR,A DPTR,# P1INTE A,#0FFH @DPTR,A P_SW2,#7FH SETB EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;P1.5 口中断 CHECKP16: ;P1.6 口中断 CHECKP17: ;P1.7 口中断 P1ISREXIT: MAIN: ;下降沿中断 ;使能 P1 口中断 END 12.2.3 P2 口低电平中断 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 415 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 = = = = = = = = = = = = = = = = 0x94; 0x93; 0x92; 0x91; 0x96; 0x95; 0xb2; 0xb1; 0xb4; 0xb3; 0xca; 0xc9; 0xcc; 0xcb; 0xe2; 0xe1; sfr P_SW2 = 0xba; #define #define #define #define P2INTE P2INTF P2IM0 P2IM1 (*(unsigned char volatile xdata *)0xfd02) (*(unsigned char volatile xdata *)0xfd12) (*(unsigned char volatile xdata *)0xfd22) (*(unsigned char volatile xdata *)0xfd32) 选型顾问: 13922805190 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P_SW2 |= 0x80; P2IM0 = 0x00; P2IM1 = 0xff; P2INTE = 0xff; P_SW2 &= ~0x80; //低电平中断 //使能 P2 口中断 EA = 1; while (1); } //由于中断向量大于 31,在 KEIL 中无法直接编译 //必须借用第 13 号中断入口地址 void common_isr() interrupt 13 { unsigned char psw2_st; unsigned char intf; psw2_st = P_SW2; P_SW2 |= 0x80; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 416 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 intf = P2INTF; if (intf) { P2INTF = 0x00; if (intf & 0x01) { //P2.0 口中断 } if (intf & 0x02) { //P2.1 口中断 } if (intf & 0x04) { //P2.2 口中断 } if (intf & 0x08) { //P0.3 口中断 } if (intf & 0x10) { //P2.4 口中断 } if (intf & 0x20) { //P2.5 口中断 } if (intf & 0x40) { //P2.6 口中断 } if (intf & 0x80) { //P2.7 口中断 } } P_SW2 = psw2_st; } // ISR.ASM //将下面的代码保存为 ISR.ASM,然后将文件加入到项目中即可 CSEG JMP AT 013BH P2INT_ISR ;P2 口中断入口地址 JMP END 006BH ;借用 13 号中断的入口地址 P2INT_ISR: 汇编代码 ;测试工作频率为 11.0592MHz P0M0 P0M1 P1M0 P1M1 DATA DATA DATA DATA 深圳国芯人工智能有限公司 094H 093H 092H 091H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 417 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com P2M0 P2M1 P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 096H 095H 0B2H 0B1H 0B4H 0B3H 0CAH 0C9H 0CCH 0CBH 0E2H 0E1H P_SW2 DATA 0BAH P2INTE P2INTF P2IM0 P2IM1 XDATA XDATA XDATA XDATA 0FD02H 0FD12H 0FD22H 0FD32H ORG LJMP 0000H MAIN ORG 013BH PUSH PUSH PUSH PUSH PUSH ACC B DPL DPH P_SW2 MOV MOVX MOV CLR MOVX MOV DPTR,#P2INTF A,@DPTR B,A A @DPTR,A A,B JNB NOP ACC.0,CHECKP21 JNB NOP ACC.1,CHECKP22 JNB NOP ACC.2,CHECKP23 JNB NOP ACC.3,CHECKP24 JNB NOP ACC.4,CHECKP25 JNB NOP ACC.5,CHECKP26 JNB NOP ACC.6,CHECKP27 技术支持: 19864585985 选型顾问: 13922805190 ;P2 口中断入口地址 P2INT_ISR: CHECKP20: ;P2.0 口中断 CHECKP21: ;P2.1 口中断 CHECKP22: ;P2.2 口中断 CHECKP23 ;P2.3 口中断 CHECKP24: ;P2.4 口中断 CHECKP25: ;P2.5 口中断 CHECKP26: ;P2.6 口中断 CHECKP27: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 418 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com JNB NOP ACC.7,P2ISREXIT POP POP POP POP POP RETI P_SW2 DPH DPL B ACC ORG 0200H MOV SP, #5FH MOV MOV MOV MOV MOV MOV MOV MOV P0M0,#00H P0M1,#00H P1M0,#00H P1M1,#00H P2M0,#00H P2M1,#00H P3M0,#00H P3M1,#00H ORL CLR MOV MOVX MOV MOVX MOV MOV MOVX ANL P_SW2,#80H A DPTR,# P2IM0 @DPTR,A DPTR,# P2IM1 @DPTR,A DPTR,# P2INTE A,#0FFH @DPTR,A P_SW2,#7FH SETB EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;P2.7 口中断 P2ISREXIT: MAIN: ;低电平中断 ;使能 P2 口中断 END P3 口高电平中断 12.2.4 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr P0M0 P0M1 P1M0 P1M1 P2M0 P2M1 深圳国芯人工智能有限公司 = = = = = = 0x94; 0x93; 0x92; 0x91; 0x96; 0x95; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 419 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P3M0 P3M1 P4M0 P4M1 P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 = = = = = = = = = = 0xb2; 0xb1; 0xb4; 0xb3; 0xca; 0xc9; 0xcc; 0xcb; 0xe2; 0xe1; sfr P_SW2 = 0xba; #define #define #define #define P3INTE P3INTF P3IM0 P3IM1 (*(unsigned char volatile xdata *)0xfd03) (*(unsigned char volatile xdata *)0xfd13) (*(unsigned char volatile xdata *)0xfd23) (*(unsigned char volatile xdata *)0xfd33) 选型顾问: 13922805190 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; P_SW2 |= 0x80; P3IM0 = 0xff; P3IM1 = 0xff; P3INTE = 0xff; P_SW2 &= ~0x80; //高电平中断 //使能 P3 口中断 EA = 1; while (1); } //由于中断向量大于 31,在 KEIL 中无法直接编译 //必须借用第 13 号中断入口地址 void common_isr() interrupt 13 { unsigned char psw2_st; unsigned char intf; psw2_st = P_SW2; P_SW2 |= 0x80; intf = P3INTF; if (intf) { P3INTF = 0x00; if (intf & 0x01) { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 420 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 //P3.0 口中断 } if (intf & 0x02) { //P3.1 口中断 } if (intf & 0x04) { //P3.2 口中断 } if (intf & 0x08) { //P3.3 口中断 } if (intf & 0x10) { //P3.4 口中断 } if (intf & 0x20) { //P3.5 口中断 } if (intf & 0x40) { //P3.6 口中断 } if (intf & 0x80) { //P3.7 口中断 } } P_SW2 = psw2_st; } // ISR.ASM //将下面的代码保存为 ISR.ASM,然后将文件加入到项目中即可 CSEG JMP AT 0143H P3INT_ISR ;P3 口中断入口地址 JMP END 006BH ;借用 13 号中断的入口地址 P3INT_ISR: 汇编代码 ;测试工作频率为 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 去纯技术交流论坛:www.STCAIMCU.com - 421 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com P5M0 P5M1 P6M0 P6M1 P7M0 P7M1 DATA DATA DATA DATA DATA DATA 0CAH 0C9H 0CCH 0CBH 0E2H 0E1H P_SW2 DATA 0BAH P3INTE P3INTF P3IM0 P3IM1 XDATA XDATA XDATA XDATA 0FD03H 0FD13H 0FD23H 0FD33H ORG LJMP 0000H MAIN ORG 0143H PUSH PUSH PUSH PUSH PUSH ACC B DPL DPH P_SW2 MOV MOVX MOV CLR MOVX MOV DPTR,#P3INTF A,@DPTR B,A A @DPTR,A A,B JNB NOP ACC.0,CHECKP31 JNB NOP ACC.1,CHECKP32 JNB NOP ACC.2,CHECKP33 JNB NOP ACC.3,CHECKP34 JNB NOP ACC.4,CHECKP35 JNB NOP ACC.5,CHECKP36 JNB NOP ACC.6,CHECKP37 JNB NOP ACC.7,P3ISREXIT POP POP P_SW2 DPH 技术支持: 19864585985 选型顾问: 13922805190 ;P3 口中断入口地址 P3INT_ISR: CHECKP30: ;P3.0 口中断 CHECKP31: ;P3.1 口中断 CHECKP32: ;P3.2 口中断 CHECKP33 ;P3.3 口中断 CHECKP34: ;P3.4 口中断 CHECKP35: ;P3.5 口中断 CHECKP36: ;P3.6 口中断 CHECKP37: ;P3.7 口中断 P3ISREXIT: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 422 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com POP POP POP RETI DPL B ACC ORG 0200H MOV SP, #5FH MOV MOV MOV MOV MOV MOV MOV MOV P0M0,#00H P0M1,#00H P1M0,#00H P1M1,#00H P2M0,#00H P2M1,#00H P3M0,#00H P3M1,#00H ORL CLR MOV MOVX MOV MOVX MOV MOV MOVX ANL P_SW2,#80H A DPTR,# P3IM0 @DPTR,A DPTR,# P3IM1 @DPTR,A DPTR,# P3INTE A,#0FFH @DPTR,A P_SW2,#7FH SETB EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ;高电平中断 ;使能 P3 口中断 END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 423 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13 定时器/计数器 STC8A8K64D4 系列单片机内部设置了 5 个 16 位定时器/计数器。5 个 16 位定时器 T0、T1、T2、T3 和 T4 都具有计数方式和定时方式两种工作方式。对定时器/计数器 T0 和 T1,用它们在特殊功能寄存器 TMOD 中相对应的控制位 C/T 来选择 T0 或 T1 为定时器还是计数器。对定时器/计数器 T2,用特殊功能 寄存器 AUXR 中的控制位 T2_C/T 来选择 T2 为定时器还是计数器。对定时器/计数器 T3,用特殊功能寄 存器 T4T3M 中的控制位 T3_C/T 来选择 T3 为定时器还是计数器。对定时器/计数器 T4,用特殊功能寄存 器 T4T3M 中的控制位 T4_C/T 来选择 T4 为定时器还是计数器。定时器/计数器的核心部件是一个加法计 数器,其本质是对脉冲进行计数。只是计数脉冲来源不同:如果计数脉冲来自系统时钟,则为定时方式, 此时定时器/计数器每 12 个时钟或者每 1 个时钟得到一个计数脉冲,计数值加 1;如果计数脉冲来自单片 机外部引脚,则为计数方式,每来一个脉冲加 1。 当定时器/计数器 T0、T1 及 T2 工作在定时模式时,特殊功能寄存器 AUXR 中的 T0x12、T1x12 和 T2x12 分别决定是系统时钟/12 还是系统时钟/1(不分频)后让 T0、T1 和 T2 进行计数。当定时器/计数 器 T3 和 T4 工作在定时模式时,特殊功能寄存器 T4T3M 中的 T3x12 和 T4x12 分别决定是系统时钟/12 还是系统时钟/1(不分频)后让 T3 和 T4 进行计数。当定时器/计数器工作在计数模式时,对外部脉冲计 数不分频。 定时器/计数器 0 有 4 种工作模式:模式 0(16 位自动重装载模式),模式 1(16 位不可重装载模式), 模式 2(8 位自动重装模式),模式 3(不可屏蔽中断的 16 位自动重装载模式)。定时器/计数器 1 除模 式 3 外,其他工作模式与定时器/计数器 0 相同。T1 在模式 3 时无效,停止计数。定时器 T2 的工作模式 固定为 16 位自动重装载模式。T2 可以当定时器使用,也可以当串口的波特率发生器和可编程时钟输出。 定时器 3、定时器 4 与定时器 T2 一样,它们的工作模式固定为 16 位自动重装载模式。T3/T4 可以当定 时器使用,也可以当串口的波特率发生器和可编程时钟输出。 13.1 定时器的相关寄存器 位地址与符号 符号 描述 地址 复位值 B7 B6 B5 B4 B3 B2 B1 B0 TCON 定时器控制寄存器 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 0000,0000 TMOD 定时器模式寄存器 89H GATE C/T M1 M0 GATE C/T M1 M0 0000,0000 TL0 定时器 0 低 8 位寄存器 8AH 0000,0000 TL1 定时器 1 低 8 位寄存器 8BH 0000,0000 TH0 定时器 0 高 8 位寄存器 8CH 0000,0000 TH1 定时器 1 高 8 位寄存器 8DH 0000,0000 AUXR 辅助寄存器 1 8EH T0x12 T1x12 UART_M0x6 T2R T2_C/T T2x12 EXTRAM INTCLKO 中断与时钟输出控制寄存器 8FH - EX4 EX3 EX2 - T2CLKO T1CLKO WKTCL 掉电唤醒定时器低字节 AAH WKTCH 掉电唤醒定时器高字节 ABH WKTEN T4T3M 定时器 4/3 控制寄存器 D1H T4R T4H 定时器 4 高字节 D2H 0000,0000 T4L 定时器 4 低字节 D3H 0000,0000 T3H 定时器 3 高字节 D4H 0000,0000 T3L 定时器 3 低字节 D5H 0000,0000 T2H 定时器 2 高字节 D6H 0000,0000 T2L 定时器 2 低字节 D7H 0000,0000 深圳国芯人工智能有限公司 S1ST2 0000,0001 T0CLKO x000,x000 1111,1111 0111,1111 T4_C/T T4x12 国内分销商电话: 0513-5501 2928/2929/2966 T4CLKO T3R T3_C/T T3x12 T3CLKO 0000,0000 去纯技术交流论坛:www.STCAIMCU.com - 424 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 位地址与符号 符号 描述 地址 复位值 B7 B6 B5 B4 B3 B2 B1 B0 TM2PS 定时器 2 时钟预分频寄存器 FEA2H 0000,0000 TM3PS 定时器 3 时钟预分频寄存器 FEA3H 0000,0000 TM4PS 定时器 4 时钟预分频寄存器 FEA4H 0000,0000 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 425 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13.2 定时器 0/1 定时器 0/1 控制寄存器(TCON) 13.2.1 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 TCON 88H TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1:T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件将TF1位置“1”, 并向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0”(也可由查询软件清“0”)。 TR1:定时器T1的运行控制位。该位由软件置位和清零。当GATE(TMOD.7)=0,TR1=1时就允许T1开 始计数,TR1=0时禁止T1计数。当GATE(TMOD.7)=1,TR1=1且INT1输入高电平时,才允许T1 计数。 TF0:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”TF0, 向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。 TR0:定时器T0的运行控制位。该位由软件置位和清零。当GATE(TMOD.3)=0,TR0=1时就允许T0开 始计数,TR0=0时禁止T0计数。当GATE(TMOD.3)=1,TR0=1且INT0输入高电平时,才允许T0 计数,TR0=0时禁止T0计数。 IE1:外部中断1请求源(INT1/P3.3)标志。IE1=1,外部中断向CPU请求中断,当CPU响应该中断时由 硬件清“0”IE1。 IT1:外部中断源1触发控制位。IT1=0,上升沿或下降沿均可触发外部中断1。IT1=1,外部中断1程控为 下降沿触发方式。 IE0:外部中断0请求源(INT0/P3.2)标志。IE0=1外部中断0向CPU请求中断,当CPU响应外部中断时, 由硬件清“0”IE0(边沿触发方式)。 IT0:外部中断源0触发控制位。IT0=0,上升沿或下降沿均可触发外部中断0。IT0=1,外部中断0程控为 下降沿触发方式。 定时器 0/1 模式寄存器(TMOD) 13.2.2 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 TMOD 89H T1_GATE T1_C/T T1_M1 T1_M0 T0_GATE T0_C/T T0_M1 T0_M0 T1_GATE:控制定时器1,置1时只有在INT1脚为高及TR1控制位置1时才可打开定时器/计数器1。 T0_GATE:控制定时器0,置1时只有在INT0脚为高及TR0控制位置1时才可打开定时器/计数器0。 T1_C/T:控制定时器1用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作 计数器(对引脚T1/P3.5外部脉冲进行计数)。 T0_C/T:控制定时器0用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作 计数器(对引脚T0/P3.4外部脉冲进行计数)。 T1_M1/T1_M0:定时器定时器/计数器1模式选择 T1_M1 定时器/计数器1工作模式 T1_M0 16位自动重载模式 0 0 当[TH1,TL1]中的16位计数值溢出时,系统会自动将内部16位 重载寄存器中的重载值装入[TH1,TL1]中。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 426 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 有中断的优先级,并且不可关闭,可用作操作系统的系统节拍 定时器,或者系统监控定时器。 13.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) P3.5 control T0CLKO TR0 GATE INT0 T0CLKO 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 工作在定时方式。当 C/T=1 时,多路开关连接到外部脉冲输入 P3.4/T0,即 T0 工作在计数方式。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 427 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 13.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 工作在定时方式。当 C/T=1 时,多路开关连接到外部脉冲输入 P3.4/T0,即 T0 工作在计数方式。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 428 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 STC 单片机的定时器 0 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同; 另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T0 的速率由特殊功能寄存器 AUXR 中的 T0x12 决定,如果 T0x12=0,T0 则工作在 12T 模式;如果 T0x12=1,T0 则工作在 1T 模式 13.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 13.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 去纯技术交流论坛:www.STCAIMCU.com - 429 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 都不能关闭此中断。 13.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) P3.4 control T1CLKO TR1 GATE INT1 T1CLKO 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 去纯技术交流论坛:www.STCAIMCU.com - 430 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 13.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 去纯技术交流论坛:www.STCAIMCU.com - 431 - STC8A8K64D4 系列技术手册 13.2.9 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 13.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位寄存器。 13.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位寄存器。 13.2.12 辅助寄存器 1(AUXR) 符号 地址 深圳国芯人工智能有限公司 B7 B6 B5 国内分销商电话: 0513-5501 2928/2929/2966 B4 B3 B2 B1 B0 去纯技术交流论坛:www.STCAIMCU.com - 432 - STC8A8K64D4 系列技术手册 AUXR 8EH 官方网站: www.STCAI.com T0x12 T1x12 UART_M0x6 技术支持: 19864585985 选型顾问: 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) 13.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 口的电平自动发生翻转。 13.2.14 定时器 0 定时计算公式 定时器模式 定时器速度 周期计算公式 1T 定时器周期 = 12T 定时器周期 = 1T 定时器周期 = 12T 定时器周期 = 1T 定时器周期 = 12T 定时器周期 = 65536 – [TH0, TL0] SYSclk 模式0/3 (16位自动重载) 65536 – [TH0, TL0] SYSclk 65536 – [TH0, TL0] SYSclk 模式1 (16位不自动重载) 65536 – [TH0, TL0] SYSclk SYSclk 模式2 (8位自动重载) 深圳国芯人工智能有限公司 256 – TH0 国内分销商电话: 0513-5501 2928/2929/2966 256 – TH0 SYSclk (自动重载) ×12 (自动重载) (需软件装载) ×12 (需软件装载) (自动重载) ×12 (自动重载) 去纯技术交流论坛:www.STCAIMCU.com - 433 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13.2.15 定时器 1 定时计算公式 定时器模式 定时器速度 周期计算公式 1T 定时器周期 = 12T 定时器周期 = 1T 定时器周期 = 12T 定时器周期 = 1T 定时器周期 = 12T 定时器周期 = 65536 – [TH1, TL1] SYSclk 模式0 (16位自动重载) 65536 – [TH1, TL1] SYSclk 65536 – [TH1, TL1] SYSclk 模式1 (16位不自动重载) 65536 – [TH1, TL1] SYSclk SYSclk 模式2 (8位自动重载) 深圳国芯人工智能有限公司 256 – TH1 国内分销商电话: 0513-5501 2928/2929/2966 256 – TH1 SYSclk (自动重载) ×12 (自动重载) (需软件装载) ×12 (需软件装载) (自动重载) ×12 (自动重载) 去纯技术交流论坛:www.STCAIMCU.com - 434 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13.3 定时器 2(24 位定时器,8 位预分频+16 位定时) 13.3.1 辅助寄存器 1(AUXR) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 AUXR 8EH T0x12 T1x12 UART_M0x6 T2R T2_C/T T2x12 EXTRAM S1ST2 T2R:定时器2的运行控制位 0:定时器 2 停止计数 1:定时器 2 开始计数 T2_C/T:控制定时器2用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作 计数器(对引脚T2/P1.2外部脉冲进行计数)。 T2x12:定时器2速度控制位 0:12T 模式,即 CPU 时钟 12 分频(FOSC/12) 1:1T 模式,即 CPU 时钟不分频分频(FOSC/1) 13.3.2 中断与时钟输出控制寄存器(INTCLKO) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 INTCLKO 8FH - EX4 EX3 EX2 - T2CLKO T1CLKO T0CLKO T2CLKO:定时器2时钟输出控制 0:关闭时钟输出 1:使能 P1.3 口的是定时器 2 时钟输出功能 当定时器 2 计数发生溢出时,P1.3 口的电平自动发生翻转。 13.3.3 定时器 2 计数寄存器(T2L,T2H) 符号 地址 T2L D7H T2H D6H B7 B6 B5 B4 B3 B2 B1 B0 定时器/计数器2的工作模式固定为16位重载模式,T2L和T2H组合成为一个16位寄存器,T2L为低字节, T2H为高字节。当[T2H,T2L]中的16位计数值溢出时,系统会自动将内部16位重载寄存器中的重载 值装入[T2H,T2L]中。 13.3.4 定时器 2 的 8 位预分频寄存器(TM2PS) 符号 地址 TM2PS FEA2H B7 B6 B5 B4 B3 B2 B1 B0 定时器2的时钟 = 系统时钟SYSclk ÷ ( TM2PS + 1 ) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 435 - STC8A8K64D4 系列技术手册 13.3.5 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 定时器 2 工作模式 定时器/计数器 2 的原理框图如下: ÷12 SYSclk AUXR.2/T2x12=0 TM2PS 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]。 13.3.6 定时器 2 计算公式 定时器速度 周期计算公式 1T 定时器周期 = 12T 定时器周期 = 65536 – [T2H, T2L] (自动重载) SYSclk/(TM2PS+1) 深圳国芯人工智能有限公司 65536 – [T2H, T2L] SYSclk/(TM2PS+1) ×12 (自动重载) 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 436 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13.4 定时器 3/4(24 位定时器,8 位预分频+16 位定时) 13.4.1 定时器 4/3 控制寄存器(T4T3M) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 T4T3M D1H T4R T4_C/T T4x12 T4CLKO T3R T3_C/T T3x12 T3CLKO T4R:定时器4的运行控制位 0:定时器 4 停止计数 1:定时器 4 开始计数 T4_C/T:控制定时器4用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作 计数器(对引脚T4/P0.6外部脉冲进行计数)。 T4x12:定时器4速度控制位 0:12T 模式,即 CPU 时钟 12 分频(FOSC/12) 1:1T 模式,即 CPU 时钟不分频分频(FOSC/1) T4CLKO:定时器4时钟输出控制 0:关闭时钟输出 1:使能 P0.7 口的是定时器 4 时钟输出功能 当定时器 4 计数发生溢出时,P0.7 口的电平自动发生翻转。 T3R:定时器3的运行控制位 0:定时器 3 停止计数 1:定时器 3 开始计数 T3_C/T:控制定时器3用作定时器或计数器,清0则用作定时器(对内部系统时钟进行计数),置1用作 计数器(对引脚T3/P0.4外部脉冲进行计数)。 T3x12:定时器3速度控制位 0:12T 模式,即 CPU 时钟 12 分频(FOSC/12) 1:1T 模式,即 CPU 时钟不分频分频(FOSC/1) T3CLKO:定时器3时钟输出控制 0:关闭时钟输出 1:使能 P0.5 口的是定时器 3 时钟输出功能 当定时器 3 计数发生溢出时,P0.5 口的电平自动发生翻转。 13.4.2 定时器 3 计数寄存器(T3L,T3H) 符号 地址 T3L D5H T3H D4H B7 B6 B5 B4 B3 B2 B1 B0 定时器/计数器3的工作模式固定为16位重载模式,T3L和T3H组合成为一个16位寄存器,T3L为低字节, T3H为高字节。当[T3H,T3L]中的16位计数值溢出时,系统会自动将内部16位重载寄存器中的重载 值装入[T3H,T3L]中。 13.4.3 定时器 4 计数寄存器(T4L,T4H) 符号 地址 T4L D3H T4H D2H 深圳国芯人工智能有限公司 B7 B6 B5 国内分销商电话: 0513-5501 2928/2929/2966 B4 B3 B2 B1 B0 去纯技术交流论坛:www.STCAIMCU.com - 437 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 定时器/计数器 4 的工作模式固定为 16 位重载模式,T4L 和 T4H 组合成为一个 16 位寄存器,T4L 为低 字节,T4H 为高字节。当[T4H,T4L]中的 16 位计数值溢出时,系统会自动将内部 16 位重载寄存器中的 重载值装入[T4H,T4L]中。 13.4.4 定时器 3 的 8 位预分频寄存器(TM3PS) 符号 地址 TM3PS FEA3H B7 B6 B5 B4 B3 B2 B1 B0 B2 B1 B0 定时器3的时钟 = 系统时钟SYSclk ÷ ( TM3PS + 1 ) 13.4.5 定时器 4 的 8 位预分频寄存器(TM4PS) 符号 地址 TM4PS FEA4H B7 B6 B5 B4 B3 定时器4的时钟 = 系统时钟SYSclk ÷ ( TM4PS + 1 ) 13.4.6 定时器 3 工作模式 定时器/计数器 3 的原理框图如下: ÷12 SYSclk T4T3M.1/T3x12=0 TM3PS T3IF T3_C/T=0 ÷1 T3H (8bits) T4T3M.1/T3x12=1 T3_C/T=1 T3 Pin Interrupt T3L (8bits) T3CLKO Toggle control T3CLKO T3R RL_T3H (8bits) RL_T3L (8bits) 定时器/计数器 3 的工作模式:16 位自动重装载模式 T3R/T4T3M.3 为 T4T3M 寄存器内的控制位,T4T3M 寄存器各位的具体功能描述见上节 T4T3M 寄存器的 介绍。 当 T3_C/T=0 时,多路开关连接到系统时钟输出,T3 对内部系统时钟计数, T3 工作在定时方式。 当 T3_C/T=1 时,多路开关连接到外部脉冲输 T3,即 T3 工作在计数方式。 STC 单片机的定时器 3 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同; 另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T3 的速率由特殊功能寄存器 T4T3M 中的 T3x12 决定,如果 T3x12=0,T3 则工作在 12T 模式;如果 T3x12=1,T3 则工作在 1T 模式 定时器 3 有两个隐藏的寄存器 RL_T3H 和 RL_T3L。RL_T3H 与 T3H 共有同一个地址,RL_T3L 与 T3L 共有同一个地址。当 T3R=0 即定时器/计数器 3 被禁止工作时,对 T3L 写入的内容会同时写入 RL_T3L,对 T3H 写入的内容也会同时写入 RL_T3H。当 T3R=1 即定时器/计数器 3 被允许工作时,对 T3L 写入内容,实 际上不是写入当前寄存器 T3L 中,而是写入隐藏的寄存器 RL_T3L 中,对 T3H 写入内容,实际上也不是写入 当前寄存器 T3H 中,而是写入隐藏的寄存器 RL_T3H,这样可以巧妙地实现 16 位重装载定时器。当读 T3H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 438 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 和 T3L 的内容时,所读的内容就是 T3H 和 T3L 的内容,而不是 RL_T3H 和 RL_T3L 的内容。 [T3H,T3L]的溢出不仅置位中断请求标志位(T3IF),使 CPU 转去执行定时器 3 的中断程序,而且会自动 将[RL_T3H,RL_T3L]的内容重新装入[T3H,T3L]。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 439 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 定时器 4 工作模式 13.4.7 定时器/计数器 4 的原理框图如下: ÷12 SYSclk T4T3M.5/T4x12=0 TM4PS T4IF T4_C/T=0 ÷1 T4H (8bits) T4T3M.5/T4x12=1 T4_C/T=1 T4 Pin Interrupt T4L (8bits) T4CLKO Toggle control T4CLKO T4R RL_T4H (8bits) RL_T4L (8bits) 定时器/计数器 4 的工作模式:16 位自动重装载模式 T4R/T4T3M.7 为 T4T3M 寄存器内的控制位,T4T3M 寄存器各位的具体功能描述见上节 T4T3M 寄存器的 介绍。 当 T4_C/T=0 时,多路开关连接到系统时钟输出,T4 对内部系统时钟计数, T4 工作在定时方式。 当 T4_C/T=1 时,多路开关连接到外部脉冲输 T4,即 T4 工作在计数方式。 STC 单片机的定时器 4 有两种计数速率:一种是 12T 模式,每 12 个时钟加 1,与传统 8051 单片机相同; 另外一种是 1T 模式,每个时钟加 1,速度是传统 8051 单片机的 12 倍。T4 的速率由特殊功能寄存器 T4T3M 中的 T4x12 决定,如果 T4x12=0,T4 则工作在 12T 模式;如果 T4x12=1,T4 则工作在 1T 模式 定时器 4 有两个隐藏的寄存器 RL_T4H 和 RL_T4L。RL_T4H 与 T4H 共有同一个地址,RL_T4L 与 T4L 共有同一个地址。当 T4R=0 即定时器/计数器 4 被禁止工作时,对 T4L 写入的内容会同时写入 RL_T4L,对 T4H 写入的内容也会同时写入 RL_T4H。当 T4R=1 即定时器/计数器 4 被允许工作时,对 T4L 写入内容,实 际上不是写入当前寄存器 T4L 中,而是写入隐藏的寄存器 RL_T4L 中,对 T4H 写入内容,实际上也不是写入 当前寄存器 T4H 中,而是写入隐藏的寄存器 RL_T4H,这样可以巧妙地实现 16 位重装载定时器。当读 T4H 和 T4L 的内容时,所读的内容就是 T4H 和 T4L 的内容,而不是 RL_T4H 和 RL_T4L 的内容。 [T4H,T4L]的溢出不仅置位中断请求标志位(T4IF),使 CPU 转去执行定时器 4 的中断程序,而且会自动 将[RL_T4H,RL_T4L]的内容重新装入[T4H,T4L]。 13.4.8 定时器 3 计算公式 定时器速度 周期计算公式 1T 定时器周期 = 12T 定时器周期 = 65536 – [T3H, T3L] (自动重载) SYSclk/(TM3PS+1) 深圳国芯人工智能有限公司 65536 – [T3H, T3L] SYSclk/(TM3PS+1) ×12 (自动重载) 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 440 - STC8A8K64D4 系列技术手册 13.4.9 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 定时器 4 计算公式 定时器速度 周期计算公式 1T 定时器周期 = 12T 定时器周期 = 65536 – [T4H, T4L] (自动重载) SYSclk/(TM4PS+1) 深圳国芯人工智能有限公司 65536 – [T4H, T4L] SYSclk/(TM4PS+1) ×12 (自动重载) 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 441 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13.5 范例程序 定时器 0(模式 0-16 位自动重载),用作定时 13.5.1 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 去纯技术交流论坛:www.STCAIMCU.com - 442 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 13.5.2 定时器 0(模式 1-16 位不自动重载),用作定时 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 443 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 444 - STC8A8K64D4 系列技术手册 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.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 $ 技术支持: 19864585985 选型顾问: 13922805190 TM0ISR: ;重设定时参数 ;测试端口 MAIN: ;模式 1 ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 13.5.3 定时器 0(模式 2-8 位自动重载),用作定时 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 445 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 446 - STC8A8K64D4 系列技术手册 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.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 $ 技术支持: 19864585985 选型顾问: 13922805190 TM0ISR: ;测试端口 MAIN: ;模式 2 ;256-11.0592M/12/76K ;启动定时器 ;使能定时器中断 END 定时器 0(模式 3-16 位自动重载不可屏蔽中断),用作定时 13.5.4 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 深圳国芯人工智能有限公司 = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 447 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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; } 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 448 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 $ 技术支持: 19864585985 选型顾问: 13922805190 TM0ISR: ;测试端口 MAIN: ; ;模式 3 ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 ;不受 EA 控制 END 定时器 0(外部计数-扩展 T0 为外部下降沿中断) 13.5.5 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 去纯技术交流论坛:www.STCAIMCU.com - 449 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com void TM0_Isr() interrupt 1 { P10 = !P10; } 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 450 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 $ 技术支持: 19864585985 选型顾问: 13922805190 ;外部计数模式 ;启动定时器 ;使能定时器中断 END 定时器 0(测量脉宽-INT0 高电平宽度) 13.5.6 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr AUXR = 0x8e; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 = 0x00; TH0 = 0x00; } 深圳国芯人工智能有限公司 //TL0 为测量值低字节 //TH0 为测量值高字节 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 451 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //1T 模式 //使能 GATE,INT0 为 1 时使能计时 AUXR = 0x80; TMOD = 0x08; TL0 = 0x00; TH0 = 0x00; while (P32); 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 MOV MOV RETI P0,TL0 P1,TH0 TL0,#00H TH0,#00H INT0ISR: 深圳国芯人工智能有限公司 ;TL0 为测量值低字节 ;TH0 为测量值高字节 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 452 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV JB SETB SETB SETB SETB AUXR,#80H TMOD,#08H TL0,#00H TH0,#00H P3.2,$ TR0 IT0 EX0 EA JMP $ ;1T 模式 ;使能 GATE,INT0 为 1 时使能计时 ;等待 INT0 为低 ;启动定时器 ;使能 INT0 下降沿中断 END 定时器 0(模式 0),时钟分频输出 13.5.7 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr INTCLKO = 0x8f; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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() { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 453 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; //模式 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 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 454 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV SETB MOV TMOD,#00H TL0,#66H TH0,#0FCH TR0 INTCLKO,#01H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;模式 0 ;65536-11.0592M/12/1000 ;启动定时器 ;使能时钟输出 END 定时器 1(模式 0-16 位自动重载),用作定时 13.5.8 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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; 深圳国芯人工智能有限公司 //模式 0 //65536-11.0592M/12/1000 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 455 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com TH1 = 0xfc; TR1 = 1; ET1 = 1; EA = 1; 技术支持: 19864585985 选型顾问: 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 ;启动定时器 ;使能定时器中断 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 456 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 END 定时器 1(模式 1-16 位不自动重载),用作定时 13.5.9 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 去纯技术交流论坛:www.STCAIMCU.com - 457 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 458 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 13.5.10 定时器 1(模式 2-8 位自动重载),用作定时 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 459 - STC8A8K64D4 系列技术手册 P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com 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,#20H TL1,#0F4H TH1,#0F4H TR1 ET1 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM1ISR: ;测试端口 MAIN: ;模式 2 ;256-11.0592M/12/76K ;启动定时器 ;使能定时器中断 END 13.5.11 定时器 1(外部计数-扩展 T1 为外部下降沿中断) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 460 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 TM1_Isr() interrupt 3 { P10 = !P10; } //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //外部计数模式 TMOD = 0x40; TL1 = 0xff; TH1 = 0xff; TR1 = 1; ET1 = 1; EA = 1; //启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz 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 去纯技术交流论坛:www.STCAIMCU.com - 461 - STC8A8K64D4 系列技术手册 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 001BH TM1ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV SETB SETB SETB TMOD,#40H TL1,#0FFH TH1,#0FFH TR1 ET1 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM1ISR: ;测试端口 MAIN: ;外部计数模式 ;启动定时器 ;使能定时器中断 END 13.5.12 定时器 1(测量脉宽-INT1 高电平宽度) 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 去纯技术交流论坛:www.STCAIMCU.com - 462 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr sfr sfr P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sfr AUXR = 0x8e; void INT1_Isr() interrupt 2 { P0 = TL1; P1 = TH1; TL1 = 0x00; TH1 = 0x00; } 技术支持: 19864585985 选型顾问: 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 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 深圳国芯人工智能有限公司 8EH 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 463 - STC8A8K64D4 系列技术手册 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0013H INT1ISR ORG 0100H MOV MOV MOV MOV RETI P0,TL1 P1,TH1 TL1,#00H TH1,#00H 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 $ 技术支持: 19864585985 选型顾问: 13922805190 INT1ISR: ;TL1 为测量值低字节 ;TH1 为测量值高字节 MAIN: ;1T 模式 ;使能 GATE,INT1 为 1 时使能计时 ;等待 INT1 为低 ;启动定时器 ;使能 INT1 下降沿中断 END 13.5.13 定时器 1(模式 0),时钟分频输出 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr INTCLKO 深圳国芯人工智能有限公司 = 0x8f; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 464 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com = = = = = = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; //模式 0 //65536-11.0592M/12/1000 TMOD = 0x00; TL1 = 0x66; TH1 = 0xfc; TR1 = 1; INTCLKO = 0x02; //启动定时器 //使能时钟输出 while (1); } 汇编代码 ;测试工作频率为 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 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 465 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV SETB MOV TMOD,#00H TL1,#66H TH1,#0FCH TR1 INTCLKO,#02H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ;模式 0 ;65536-11.0592M/12/1000 ;启动定时器 ;使能时钟输出 END 13.5.14 定时器 1(模式 0)做串口 1 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr AUXR = 0x8e; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 busy; wptr; rptr; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 466 - STC8A8K64D4 系列技术手册 char 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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) { 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; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 467 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 ORG LJMP ORG LJMP 0000H MAIN 0023H UART_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H JNB CLR CLR TI,CHKRI TI BUSY JNB CLR MOV RI,UARTISR_EXIT RI A,WPTR ;16 bytes UART_ISR: CHKRI: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 468 - STC8A8K64D4 系列技术手册 ANL ADD MOV MOV INC UARTISR_EXIT: POP POP RETI 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 LCALL INC JMP SENDEND: RET A A,@A+DPTR SENDEND UART_SEND DPTR UART_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV LCALL DPTR,#STRING UART_SENDSTR 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 469 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 LOOP: STRING: MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H END 13.5.15 定时器 1(模式 2)做串口 1 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (256 - FOSC / 115200 / 32) sfr AUXR = 0x8e; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 470 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 busy = 0; } if (RI) { RI = 0; buffer[wptr++] = SBUF; wptr &= 0x0f; } } void UartInit() { SCON = 0x50; TMOD = 0x20; TL1 = BRT; TH1 = BRT; TR1 = 1; AUXR = 0x40; wptr = 0x00; rptr = 0x00; busy = 0; } void UartSend(char dat) { while (busy); busy = 1; SBUF = dat; } void UartSendStr(char *p) { while (*p) { UartSend(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; 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 去纯技术交流论坛:www.STCAIMCU.com - 471 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 深圳国芯人工智能有限公司 RI,UARTISR_EXIT RI A,WPTR A,#0FH A,#BUFFER R0,A @R0,SBUF WPTR PSW 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 472 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com POP RETI ACC 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 技术支持: 19864585985 选型顾问: 13922805190 UART_INIT: ;256-11059200/115200/32=0FDH UART_SEND: UART_SENDSTR: CLR MOVC JZ LCALL INC JMP SENDEND: RET A A,@A+DPTR SENDEND UART_SEND DPTR UART_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV LCALL DPTR,#STRING UART_SENDSTR MOV XRL ANL JZ MOV A,RPTR A,WPTR A,#0FH LOOP A,RPTR LOOP: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 473 - STC8A8K64D4 系列技术手册 STRING: 官方网站: www.STCAI.com ANL ADD MOV MOV LCALL INC JMP A,#0FH A,#BUFFER R0,A A,@R0 UART_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H 技术支持: 19864585985 选型顾问: 13922805190 END 13.5.16 定时器 2(16 位自动重载),用作定时 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr #define sfr #define T2L T2H AUXR IE2 ET2 AUXINTIF T2IF = = = = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 474 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T2L = 0x66; T2H = 0xfc; AUXR = 0x10; IE2 = ET2; EA = 1; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz 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 SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H TM2ISR: ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 475 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV MOV P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV SETB T2L,#66H T2H,#0FCH AUXR,#10H IE2,#ET2 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 13.5.17 定时器 2(外部计数-扩展 T2 为外部下降沿中断) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr #define sfr #define T2L T2H AUXR IE2 ET2 AUXINTIF T2IF = = = = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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() 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 476 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; 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 TM2ISR: ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 477 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 MOV SETB T2L,#0FFH T2H,#0FFH AUXR,#18H IE2,#ET2 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;设置外部计数模式并启动定时器 ;使能定时器中断 END 13.5.18 定时器 2,时钟分频输出 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr T2L T2H AUXR INTCLKO = = = = 0xd7; 0xd6; 0x8e; 0x8f; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 478 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T2L = 0x66; T2H = 0xfc; AUXR = 0x10; INTCLKO = 0x04; //65536-11.0592M/12/1000 //启动定时器 //使能时钟输出 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T2L T2H AUXR INTCLKO DATA DATA DATA DATA 0D7H 0D6H 8EH 8FH 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 去纯技术交流论坛:www.STCAIMCU.com - 479 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV T2L,#66H T2H,#0FCH AUXR,#10H INTCLKO,#04H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;65536-11.0592M/12/1000 ;启动定时器 ;使能时钟输出 END 13.5.19 定时器 2 做串口 1 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr AUXR T2H T2L = = = 0x8e; 0xd6; 0xd7; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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 去纯技术交流论坛:www.STCAIMCU.com - 480 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 } void UartInit() { SCON = 0x50; T2L = BRT; T2H = BRT >> 8; AUXR = 0x15; wptr = 0x00; rptr = 0x00; busy = 0; } void UartSend(char dat) { while (busy); busy = 1; SBUF = dat; } void UartSendStr(char *p) { while (*p) { UartSend(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; UartInit(); ES = 1; EA = 1; UartSendStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { UartSend(buffer[rptr++]); rptr &= 0x0f; } } } 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 481 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 汇编代码 ;测试工作频率为 11.0592MHz AUXR T2H T2L DATA DATA DATA 8EH 0D6H 0D7H BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0023H UART_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H JNB CLR CLR TI,CHKRI TI BUSY ;16 bytes UART_ISR: CHKRI: JNB CLR MOV ANL ADD MOV MOV INC UARTISR_EXIT: POP POP 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 T2L,#0E8H T2H,#0FFH AUXR,#15H ;65536-11059200/115200/4=0FFE8H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 482 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com CLR MOV MOV RET BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY SBUF,A 技术支持: 19864585985 选型顾问: 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 DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 483 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 END 13.5.20 定时器 2 做串口 2 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr AUXR T2H T2L S2CON S2BUF IE2 = = = = = = 0x8e; 0xd6; 0xd7; 0x9a; 0x9b; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr 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() { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 484 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S2CON = 0x10; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart2Send(char dat) { while (busy); busy = 1; S2BUF = dat; } void Uart2SendStr(char *p) { while (*p) { Uart2SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart2Init(); IE2 = 0x01; EA = 1; Uart2SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart2SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz AUXR DATA 深圳国芯人工智能有限公司 8EH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 485 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com T2H T2L S2CON S2BUF IE2 DATA DATA DATA DATA DATA 0D6H 0D7H 9AH 9BH 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0043H UART2_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S2CON ACC.1,CHKRI S2CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 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 深圳国芯人工智能有限公司 S2CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H ;65536-11059200/115200/4=0FFE8H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 486 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com CLR MOV MOV RET BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S2BUF,A 技术支持: 19864585985 选型顾问: 13922805190 UART2_SEND: UART2_SENDSTR: CLR MOVC JZ LCALL INC JMP SEND2END: RET A A,@A+DPTR SEND2END UART2_SEND DPTR UART2_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART2_INIT IE2,#01H EA MOV LCALL DPTR,#STRING UART2_SENDSTR MOV XRL ANL JZ 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: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 487 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 END 13.5.21 定时器 2 做串口 3 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr AUXR T2H T2L S3CON S3BUF IE2 = = = = = = 0x8e; 0xd6; 0xd7; 0xac; 0xad; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit char char char busy; wptr; rptr; buffer[16]; void Uart3Isr() interrupt 17 { if (S3CON & 0x02) { S3CON &= ~0x02; busy = 0; } if (S3CON & 0x01) { S3CON &= ~0x01; buffer[wptr++] = S3BUF; wptr &= 0x0f; } } void Uart3Init() { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 488 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S3CON = 0x10; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart3Send(char dat) { while (busy); busy = 1; S3BUF = dat; } void Uart3SendStr(char *p) { while (*p) { Uart3SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart3Init(); IE2 = 0x08; EA = 1; Uart3SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart3SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz AUXR DATA 深圳国芯人工智能有限公司 8EH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 489 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com T2H T2L S3CON S3BUF IE2 DATA DATA DATA DATA DATA 0D6H 0D7H 0ACH 0ADH 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 008BH UART3_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S3CON ACC.1,CHKRI S3CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 ;16 bytes UART3_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART3ISR_EXIT: POP POP RETI ACC.0,UART3ISR_EXIT S3CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S3BUF WPTR PSW ACC UART3_INIT: MOV MOV MOV MOV 深圳国芯人工智能有限公司 S3CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H ;65536-11059200/115200/4=0FFE8H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 490 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com CLR MOV MOV RET BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S3BUF,A 技术支持: 19864585985 选型顾问: 13922805190 UART3_SEND: UART3_SENDSTR: CLR MOVC JZ LCALL INC JMP SEND3END: RET A A,@A+DPTR SEND3END UART3_SEND DPTR UART3_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART3_INIT IE2,#08H EA MOV LCALL DPTR,#STRING UART3_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART3_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 491 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 END 13.5.22 定时器 2 做串口 4 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr AUXR T2H T2L S4CON S4BUF IE2 = = = = = = 0x8e; 0xd6; 0xd7; 0x84; 0x85; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit char char char busy; wptr; rptr; buffer[16]; void Uart4Isr() interrupt 18 { if (S4CON & 0x02) { S4CON &= ~0x02; busy = 0; } if (S4CON & 0x01) { S4CON &= ~0x01; buffer[wptr++] = S4BUF; wptr &= 0x0f; } } void Uart4Init() { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 492 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S4CON = 0x10; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart4Send(char dat) { while (busy); busy = 1; S4BUF = dat; } void Uart4SendStr(char *p) { while (*p) { Uart4SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart4Init(); IE2 = 0x10; EA = 1; Uart4SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart4SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz AUXR DATA 深圳国芯人工智能有限公司 8EH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 493 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com T2H T2L S4CON S4BUF IE2 DATA DATA DATA DATA DATA 0D6H 0D7H 84H 85H 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0093H UART4_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S4CON ACC.1,CHKRI S4CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 ;16 bytes UART4_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART4ISR_EXIT: POP POP RETI ACC.0,UART4ISR_EXIT S4CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S4BUF WPTR PSW ACC UART4_INIT: MOV MOV MOV MOV 深圳国芯人工智能有限公司 S4CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H ;65536-11059200/115200/4=0FFE8H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 494 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com CLR MOV MOV RET BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S4BUF,A 技术支持: 19864585985 选型顾问: 13922805190 UART4_SEND: UART4_SENDSTR: CLR MOVC JZ LCALL INC JMP SEND4END: RET A A,@A+DPTR SEND4END UART4_SEND DPTR UART4_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART4_INIT IE2,#10H EA MOV LCALL DPTR,#STRING UART4_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART4_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 495 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 END 13.5.23 定时器 3(16 位自动重载),用作定时 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr #define #define #define sfr #define #define #define T4T3M T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF = = = = = = = = = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void TM3_Isr() interrupt 19 { P10 = !P10; } = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; 0x8e; 0xaf; 0x04 0x20 0x40 0xef; 0x01 0x02 0x04 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 496 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T3L = 0x66; T3H = 0xfc; T4T3M = 0x08; IE2 = ET3; EA = 1; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF DATA DATA DATA DATA DATA DATA DATA DATA DATA EQU EQU EQU DATA EQU EQU EQU 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 8EH 0AFH 04H 20H 40H 0EFH 01H 02H 04H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 009BH TM3ISR ORG 0100H CPL RETI P1.0 TM3ISR: 深圳国芯人工智能有限公司 ;测试端口 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 497 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV SETB T3L,#66H T3H,#0FCH T4T3M,#08H IE2,#ET3 EA JMP $ ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 13.5.24 定时器 3(外部计数-扩展 T3 为外部下降沿中断) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr #define #define #define sfr #define #define #define T4T3M T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF = = = = = = = = = sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 = = = = 深圳国芯人工智能有限公司 = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; 0x8e; 0xaf; 0x04 0x20 0x40 0xef; 0x01 0x02 0x04 0x91; 0x92; 0x93; 0x94; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 498 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr sfr sfr sfr sfr P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void TM3_Isr() interrupt 19 { P10 = !P10; } 技术支持: 19864585985 选型顾问: 13922805190 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T3L = 0x66; T3H = 0xfc; T4T3M = 0x0c; IE2 = ET3; EA = 1; //65536-11.0592M/12/1000 //设置外部计数模式并启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M DATA T4L DATA T4H DATA T3L DATA T3H DATA T2L DATA T2H DATA AUXR DATA IE2 DATA ET2 EQU ET3 EQU ET4 EQU AUXINTIF DATA T2IF EQU T3IF EQU T4IF EQU 深圳国芯人工智能有限公司 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 8EH 0AFH 04H 20H 40H 0EFH 01H 02H 04H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 499 - STC8A8K64D4 系列技术手册 P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 009BH TM3ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV SETB T3L,#66H T3H,#0FCH T4T3M,#0CH IE2,#ET3 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM3ISR: ;测试端口 MAIN: ;65536-11.0592M/12/1000 ;设置外部计数模式并启动定时器 ;使能定时器中断 END 13.5.25 定时器 3,时钟分频输出 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 500 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr T4T3M T4L T4H T3L T3H T2L T2H = = = = = = = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T3L = 0x66; T3H = 0xfc; T4T3M = 0x09; //65536-11.0592M/12/1000 //使能时钟输出并启动定时器 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H DATA DATA DATA DATA DATA DATA DATA 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H P1M1 P1M0 DATA DATA 091H 092H 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 501 - STC8A8K64D4 系列技术手册 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV T3L,#66H T3H,#0FCH T4T3M,#09H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ;65536-11.0592M/12/1000 ;使能时钟输出并启动定时器 END 13.5.26 定时器 3 做串口 3 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr T4T3M T4L T4H T3L T3H T2L = = = = = = 深圳国芯人工智能有限公司 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 502 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr T2H S3CON S3BUF IE2 = = = = 0xd6; 0xac; 0xad; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit char char char busy; wptr; rptr; buffer[16]; 技术支持: 19864585985 选型顾问: 13922805190 void Uart3Isr() interrupt 17 { if (S3CON & 0x02) { S3CON &= ~0x02; busy = 0; } if (S3CON & 0x01) { S3CON &= ~0x01; buffer[wptr++] = S3BUF; wptr &= 0x0f; } } void Uart3Init() { S3CON = 0x50; T3L = BRT; T3H = BRT >> 8; T4T3M = 0x0a; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart3Send(char dat) { while (busy); busy = 1; S3BUF = dat; } void Uart3SendStr(char *p) { while (*p) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 503 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 { Uart3SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart3Init(); IE2 = 0x08; EA = 1; Uart3SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart3SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H S3CON S3BUF IE2 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 0ACH 0ADH 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 DATA DATA DATA DATA 093H 094H 091H 092H 深圳国芯人工智能有限公司 ;16 bytes 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 504 - STC8A8K64D4 系列技术手册 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 008BH UART3_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S3CON ACC.1,CHKRI S3CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART3_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART3ISR_EXIT: POP POP RETI ACC.0,UART3ISR_EXIT S3CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S3BUF WPTR PSW ACC UART3_INIT: MOV MOV MOV MOV CLR MOV MOV RET S3CON,#50H T3L,#0E8H T3H,#0FFH T4T3M,#0AH BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S3BUF,A ;65536-11059200/115200/4=0FFE8H UART3_SEND: UART3_SENDSTR: CLR MOVC JZ 深圳国芯人工智能有限公司 A A,@A+DPTR SEND3END 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 505 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com LCALL INC JMP 技术支持: 19864585985 选型顾问: 13922805190 UART3_SEND DPTR UART3_SENDSTR SEND3END: RET MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART3_INIT IE2,#08H EA MOV LCALL DPTR,#STRING UART3_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART3_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: END 13.5.27 定时器 4(16 位自动重载),用作定时 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr T4T3M 深圳国芯人工智能有限公司 = 0xd1; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 506 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr sfr sfr sfr sfr #define #define #define sfr #define #define #define T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF = = = = = = = = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void TM4_Isr() interrupt 20 { P10 = !P10; } = 技术支持: 19864585985 选型顾问: 13922805190 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; 0x8e; 0xaf; 0x04 0x20 0x40 0xef; 0x01 0x02 0x04 //测试端口 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T4L = 0x66; T4H = 0xfc; T4T3M = 0x80; IE2 = ET4; EA = 1; //65536-11.0592M/12/1000 //启动定时器 //使能定时器中断 while (1); } 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 507 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF DATA DATA DATA DATA DATA DATA DATA DATA DATA EQU EQU EQU DATA EQU EQU EQU 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 8EH 0AFH 04H 20H 40H 0EFH 01H 02H 04H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 00A3H TM4ISR ORG 0100H CPL 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 TM4ISR: ;测试端口 MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 508 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV SETB T4L,#66H T4H,#0FCH T4T3M,#80H IE2,#ET4 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;65536-11.0592M/12/1000 ;启动定时器 ;使能定时器中断 END 13.5.28 定时器 4(外部计数-扩展 T4 为外部下降沿中断) C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr sfr sfr #define #define #define sfr #define #define #define T4T3M T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF = = = = = = = = = sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x91; 0x92; 0x93; 0x94; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sbit P10 = P1^0; void TM4_Isr() interrupt 20 { P10 = !P10; } 深圳国芯人工智能有限公司 = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; 0x8e; 0xaf; 0x04 0x20 0x40 0xef; 0x01 0x02 0x04 //测试端口 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 509 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; T4L = 0x66; T4H = 0xfc; T4T3M = 0xc0; IE2 = ET4; EA = 1; //65536-11.0592M/12/1000 //设置外部计数模式并启动定时器 //使能定时器中断 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H AUXR IE2 ET2 ET3 ET4 AUXINTIF T2IF T3IF T4IF DATA DATA DATA DATA DATA DATA DATA DATA DATA EQU EQU EQU DATA EQU EQU EQU 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 8EH 0AFH 04H 20H 40H 0EFH 01H 02H 04H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 510 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ORG LJMP ORG LJMP 0000H MAIN 00A3H TM4ISR ORG 0100H CPL RETI P1.0 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV MOV SETB T4L,#66H T4H,#0FCH T4T3M,#0C0H IE2,#ET4 EA JMP $ 技术支持: 19864585985 选型顾问: 13922805190 TM4ISR: ;测试端口 MAIN: ;65536-11.0592M/12/1000 ;设置外部计数模式并启动定时器 ;使能定时器中断 END 13.5.29 定时器 4,时钟分频输出 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" sfr sfr sfr sfr sfr sfr sfr T4T3M T4L T4H T3L T3H T2L T2H = = = = = = = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; sfr sfr sfr sfr P1M1 P1M0 P0M1 P0M0 = = = = 0x91; 0x92; 0x93; 0x94; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 511 - STC8A8K64D4 系列技术手册 sfr sfr sfr sfr sfr sfr sfr sfr P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com = = = = = = = = 技术支持: 19864585985 选型顾问: 13922805190 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P3M1 = 0x00; T4L = 0x66; T4H = 0xfc; T4T3M = 0x90; //65536-11.0592M/12/1000 //使能时钟输出并启动定时器 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H DATA DATA DATA DATA DATA DATA DATA 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H P1M1 P1M0 P0M1 P0M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 091H 092H 093H 094H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP 0000H MAIN 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 512 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ORG 0100H MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV MOV MOV T4L,#66H T4H,#0FCH T4T3M,#90H JMP $ 技术支持: 19864585985 选型顾问: 13922805190 MAIN: ;65536-11.0592M/12/1000 ;使能时钟输出并启动定时器 END 13.5.30 定时器 4 做串口 4 波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr T4T3M T4L T4H T3L T3H T2L T2H S4CON S4BUF IE2 = = = = = = = = = = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; 0x84; 0x85; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 513 - STC8A8K64D4 系列技术手册 sfr sfr sfr P4M0 P5M1 P5M0 bit char char char busy; wptr; rptr; buffer[16]; 官方网站: www.STCAI.com = = = 技术支持: 19864585985 选型顾问: 13922805190 0xb4; 0xc9; 0xca; void Uart4Isr() interrupt 18 { if (S4CON & 0x02) { S4CON &= ~0x02; busy = 0; } if (S4CON & 0x01) { S4CON &= ~0x01; buffer[wptr++] = S4BUF; wptr &= 0x0f; } } void Uart4Init() { S4CON = 0x50; T4L = BRT; T4H = BRT >> 8; T4T3M = 0xa0; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart4Send(char dat) { while (busy); busy = 1; S4BUF = dat; } void Uart4SendStr(char *p) { while (*p) { Uart4SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 514 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart4Init(); IE2 = 0x10; EA = 1; Uart4SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart4SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H S4CON S4BUF IE2 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 84H 85H 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0093H UART4_ISR 深圳国芯人工智能有限公司 ;16 bytes 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 515 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S4CON ACC.1,CHKRI S4CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART4_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART4ISR_EXIT: POP POP RETI ACC.0,UART4ISR_EXIT S4CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S4BUF WPTR PSW ACC UART4_INIT: MOV MOV MOV MOV CLR MOV MOV RET S4CON,#50H T4L,#0E8H T4H,#0FFH T4T3M,#0A0H BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S4BUF,A ;65536-11059200/115200/4=0FFE8H UART4_SEND: UART4_SENDSTR: CLR MOVC JZ LCALL INC JMP SEND4END: RET A A,@A+DPTR SEND4END UART4_SEND DPTR UART4_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV 深圳国芯人工智能有限公司 SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 516 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART4_INIT IE2,#10H EA MOV LCALL DPTR,#STRING UART4_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART4_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H 技术支持: 19864585985 选型顾问: 13922805190 LOOP: STRING: END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 517 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14 串口通信 STC8A8K64D4 系列单片机具有 4 个全双工异步串行通信接口。每个串行口由 2 个数据缓冲器、一 个移位寄存器、一个串行控制寄存器和一个波特率发生器等组成。每个串行口的数据缓冲器由 2 个互相 独立的接收、发送缓冲器构成,可以同时发送和接收数据。 STC8A8K64D4 系列单片机的串口 1 有 4 种工作方式,其中两种方式的波特率是可变的,另两种是 固定的,以供不同应用场合选用。串口 2/串口 3/串口 4 都只有两种工作方式,这两种方式的波特率都是 可变的。用户可用软件设置不同的波特率和选择不同的工作方式。主机可通过查询或中断方式对接收/ 发送进行程序处理,使用十分灵活。 串口 1、串口 2、串口 3、串口 4 的通讯口均可以通过功能管脚的切换功能切换到多组端口,从而可 以将一个通讯口分时复用为多个通讯口。 14.1 串口功能脚切换 符号 地址 P_SW1 A2H P_SW2 BAH B7 B6 B5 S1_S[1:0] EAXFR B4 B3 CCP_S[1:0] - I2C_S[1:0] B2 SPI_S[1:0] CMPO_S S4_S B1 B0 0 - S3_S S2_S S1_S[1:0]:串口 1 功能脚选择位 S1_S[1:0] RxD TxD 00 P3.0 P3.1 01 P3.6 P3.7 10 P1.6 P1.7 11 P4.3 P4.4 S4_S:串口 4 功能脚选择位 S4_S RxD4 TxD4 0 P0.2 P0.3 1 P5.2 P5.3 S3_S:串口 3 功能脚选择位 S3_S RxD3 TxD3 0 P0.0 P0.1 1 P5.0 P5.1 S2_S:串口 2 功能脚选择位 S2_S RxD2 TxD2 0 P1.0 P1.1 1 P4.0 P4.2 14.2 串口相关寄存器 位地址与符号 符号 描述 地址 SCON 串口 1 控制寄存器 98H SBUF 串口 1 数据寄存器 99H 深圳国芯人工智能有限公司 复位值 B7 B6 B5 B4 B3 B2 B1 B0 SM0/FE SM1 SM2 REN TB8 RB8 TI RI 国内分销商电话: 0513-5501 2928/2929/2966 0000,0000 0000,0000 去纯技术交流论坛:www.STCAIMCU.com - 518 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S2CON 串口 2 控制寄存器 9AH S2BUF 串口 2 数据寄存器 9BH S3CON 串口 3 控制寄存器 ACH S3BUF 串口 3 数据寄存器 ADH S4CON 串口 4 控制寄存器 84H S4BUF 串口 4 数据寄存器 85H PCON 电源控制寄存器 87H SMOD SMOD0 LVDF POF GF1 AUXR 辅助寄存器 1 8EH T0x12 T1x12 UART_M0x6 T2R T2_C/T SADDR 串口 1 从机地址寄存器 A9H 0000,0000 SADEN 串口 1 从机地址屏蔽寄存器 B9H 0000,0000 深圳国芯人工智能有限公司 S2SM0 - S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI 0100,0000 0000,0000 S3SM0 S3ST3 S3SM2 S3REN S3TB8 S3RB8 S3TI S3RI 0000,0000 0000,0000 S4SM0 S4ST4 S4SM2 S4REN S4TB8 S4RB8 S4TI S4RI 0000,0000 0000,0000 国内分销商电话: 0513-5501 2928/2929/2966 GF0 PD T2x12 EXTRAM IDL 0011,0000 S1ST2 0000,0001 去纯技术交流论坛:www.STCAIMCU.com - 519 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.3 串口 1 14.3.1 串口 1 控制寄存器(SCON) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 SCON 98H SM0/FE SM1 SM2 REN TB8 RB8 TI RI SM0/FE:当PCON寄存器中的SMOD0位为1时,该位为帧错误检测标志位。当UART在接收过程中检测 到一个无效停止位时,通过UART接收器将该位置1,必须由软件清零。当PCON寄存器中的SMOD0 位为0时,该位和SM1一起指定串口1的通信工作模式,如下表所示: SM0 SM1 串口1工作模式 功能说明 0 0 模式0 同步移位串行方式 0 1 模式1 可变波特率8位数据方式 1 0 模式2 固定波特率9位数据方式 1 1 模式3 可变波特率9位数据方式 SM2:允许模式 2 或模式 3 多机通信控制位。当串口 1 使用模式 2 或模式 3 时,如果 SM2 位为 1 且 REN 位为 1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 RB8)来筛选地址帧, 若 RB8=1,说明该帧是地址帧,地址信息可以进入 SBUF,并使 RI 为 1,进而在中断服务程序中 再进行地址号比较;若 RB8=0,说明该帧不是地址帧,应丢掉且保持 RI=0。在模式 2 或模式 3 中,如果 SM2 位为 0 且 REN 位为 1,接收收机处于地址帧筛选被禁止状态,不论收到的 RB8 为 0 或 1,均可使接收到的信息进入 SBUF,并使 RI=1,此时 RB8 通常为校验位。模式 1 和模式 0 为非多机通信方式,在这两种方式时,SM2 应设置为 0。 REN:允许/禁止串口接收控制位 0:禁止串口接收数据 1:允许串口接收数据 TB8:当串口 1 使用模式 2 或模式 3 时,TB8 为要发送的第 9 位数据,按需要由软件置位或清 0。在模 式 0 和模式 1 中,该位不用。 RB8:当串口 1 使用模式 2 或模式 3 时,RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据 帧标志位。在模式 0 和模式 1 中,该位不用。 TI:串口 1 发送中断请求标志位。在模式 0 中,当串口发送数据第 8 位结束时,由硬件自动将 TI 置 1, 向主机请求中断,响应中断后 TI 必须用软件清零。在其他模式中,则在停止位开始发送时由硬件 自动将 TI 置 1,向 CPU 发请求中断,响应中断后 TI 必须用软件清零。 RI:串口 1 接收中断请求标志位。在模式 0 中,当串口接收第 8 位数据结束时,由硬件自动将 RI 置 1, 向主机请求中断,响应中断后 RI 必须用软件清零。在其他模式中,串行接收到停止位的中间时刻 由硬件自动将 RI 置 1,向 CPU 发中断申请,响应中断后 RI 必须由软件清零。 14.3.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 去纯技术交流论坛:www.STCAIMCU.com - 520 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.3.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 的定时器 1 作为波特率发生器时有效)、模式 2、模式 3(使用模式 2 的定时器 1 作为波特率发生器时有效)的波特率加倍 SMOD0:帧错误检测控制位 0:无帧错检测功能 1:使能帧错误检测功能。此时 SCON 的 SM0/FE 为 FE 功能,即为帧错误检测标志位。 14.3.4 辅助寄存器 1(AUXR) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 AUXR 8EH T0x12 T1x12 UART_M0x6 T2R T2_C/T T2x12 EXTRAM S1ST2 UART_M0x6:串口 1 模式 0 的通讯速度控制 0:串口 1 模式 0 的波特率不加倍,固定为 Fosc/12 1:串口 1 模式 0 的波特率 6 倍速,即固定为 Fosc/12*6 = Fosc/2 S1ST2:串口 1 波特率发生器选择位 0:选择定时器 1 作为波特率发生器 1:选择定时器 2 作为波特率发生器 14.3.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 去纯技术交流论坛:www.STCAIMCU.com - 521 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 写SBUF TxD RxD D0 D1 D2 D3 D4 D5 D6 D7 D6 D7 TI RI 发送数据(串口1模式0) 写SCON REN=1, RI=0 TxD RxD D0 D1 D2 D3 D4 D5 TI RI 接收数据(串口1模式0) 工作于模式 0 时,必须清 0 多机通信控制位 SM2,使之不影响 TB8 位和 RB8 位。由于波特率固定 为 SYSclk/12 或 SYSclk/2,无需定时器提供,直接由单片机的时钟作为同步移位脉冲。 串口 1 模式 0 的波特率计算公式如下表所示(SYSclk 为系统工作频率): UART_M0x6 波特率计算公式 0 波特率 = 1 波特率 = 14.3.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 去纯技术交流论坛:www.STCAIMCU.com - 522 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 523 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 524 - STC8A8K64D4 系列技术手册 14.3.7 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 串口 1 模式 2,模式 2 波特率计算公式 当 SM0、SM1 两位为 10 时,串行口 1 工作在模式 2。串行口 1 工作模式 2 为 9 位数据异步通信 UART 模式,其一帧的信息由 11 位组成:1 位起始位,8 位数据位(低位在先),1 位可编程位(第 9 位数据) 和 1 位停止位。发送时可编程位(第 9 位数据)由 SCON 中的 TB8 提供,可软件设置为 1 或 0,或者可 将 PSW 中的奇/偶校验位 P 值装入 TB8(TB8 既可作为多机通信中的地址数据标志位,又可作为数据的 奇偶校验位) 。接收时第 9 位数据装入 SCON 的 RB8。TxD 为发送端口,RxD 为接收端口,以全双工模 式进行接收/发送。 模式 2 的波特率固定为系统时钟的 64 分频或 32 分频(取决于 PCON 中 SMOD 的值) 串口 1 模式 2 的波特率计算公式如下表所示(SYSclk 为系统工作频率): SMOD 波特率计算公式 0 波特率 = 1 波特率 = SYSclk 64 SYSclk 32 模式 2 和模式 1 相比,除波特率发生源略有不同,发送时由 TB8 提供给移位寄存器第 9 数据位不同 外,其余功能结构均基本相同,其接收/发送操作过程及时序也基本相同。 当接收器接收完一帧信息后必须同时满足下列条件: ·RI=0 ·SM2=0 或者 SM2=1 且接收到的第 9 数据位 RB8=1。 当上述两条件同时满足时,才将接收到的移位寄存器的数据装入 SBUF 和 RB8 中,RI 标志位被置 1, 并向主机请求中断处理。如果上述条件有一个不满足,则刚接收到移位寄存器中的数据无效而丢失,也 不置位 RI。无论上述条件满足与否,接收器又重新开始检测 RxD 输入端口的跳变信息,接收下一帧的 输入信息。在模式 2 中,接收到的停止位与 SBUF、RB8 和 RI 无关。 通过软件对 SCON 中的 SM2、TB8 的设置以及通信 Ð 议的约定,为多机通信提供了方便。 写SBUF TxD Start D0 D1 D2 D3 D4 D5 D6 D7 TB8 Stop D6 D7 RB8 Stop TI 发送数据(串口1模式2) 写SCON RxD REN=1,RI=0 Start D0 D1 D2 D3 D4 D5 RI 接收数据(串口1模式2) 14.3.8 串口 1 模式 3,模式 3 波特率计算公式 当 SM0、SM1 两位为 11 时,串行口 1 工作在模式 3。串行通信模式 3 为 9 位数据异步通信 UART 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 525 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 模式,其一帧的信息由 11 位组成:1 位起始位,8 位数据位(低位在先),1 位可编程位(第 9 位数据) 和 1 位停止位。发送时可编程位(第 9 位数据)由 SCON 中的 TB8 提供,可软件设置为 1 或 0,或者可 将 PSW 中的奇/偶校验位 P 值装入 TB8(TB8 既可作为多机通信中的地址数据标志位,又可作为数据的 奇偶校验位) 。接收时第 9 位数据装入 SCON 的 RB8。TxD 为发送端口,RxD 为接收端口,以全双工模 式进行接收/发送。 模式 3 和模式 1 相比,除发送时由 TB8 提供给移位寄存器第 9 数据位不同外,其余功能结构均基本 相同,其接收‘发送操作过程及时序也基本相同。 当接收器接收完一帧信息后必须同时满足下列条件: ·RI=0 ·SM2=0 或者 SM2=1 且接收到的第 9 数据位 RB8=1。 当上述两条件同时满足时,才将接收到的移位寄存器的数据装入 SBUF 和 RB8 中,RI 标志位被置 1, 并向主机请求中断处理。如果上述条件有一个不满足,则刚接收到移位寄存器中的数据无效而丢失,也 不置位 RI。无论上述条件满足与否,接收器又重新开始检测 RxD 输入端口的跳变信息,接收下一帧的 输入信息。在模式 3 中,接收到的停止位与 SBUF、RB8 和 RI 无关。 通过软件对 SCON 中的 SM2、TB8 的设置以及通信协议的约定,为多机通信提供了方便。 写SBUF TxD Start D0 D1 D2 D3 D4 D5 D6 D7 TB8 Stop D6 D7 RB8 Stop TI 发送数据(串口1模式3) 写SCON RxD REN=1,RI=0 Start D0 D1 D2 D3 D4 D5 RI 接收数据(串口1模式3) 串口 1 模式 3 的波特率计算公式与模式 1 是完全相同的。请参考模式 1 的波特率计算公式。 14.3.9 自动地址识别 14.3.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 去纯技术交流论坛:www.STCAIMCU.com - 526 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 527 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.4 串口 2 14.4.1 串口 2 控制寄存器(S2CON) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 S2CON 9AH S2SM0 - S2SM2 S2REN S2TB8 S2RB8 S2TI S2RI S2SM0:指定串口2的通信工作模式,如下表所示: S2SM0 串口2工作模式 功能说明 0 模式0 可变波特率8位数据方式 1 模式1 可变波特率9位数据方式 S2SM2:允许串口 2 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S2SM2 位为 1 且 S2REN 位为 1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S2RB8)来筛选地址帧: 若 S2RB8=1,说明该帧是地址帧,地址信息可以进入 S2BUF,并使 S2RI 为 1,进而在中断服务 程序中再进行地址号比较;若 S2RB8=0,说明该帧不是地址帧,应丢掉且保持 S2RI=0。在模式 1 中,如果 S2SM2 位为 0 且 S2REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的 S2RB8 为 0 或 1,均可使接收到的信息进入 S2BUF,并使 S2RI=1,此时 S2RB8 通常为校验位。模式 0 为非多机通信方式,在这种方式时,要设置 S2SM2 应为 0。 S2REN:允许/禁止串口接收控制位 0:禁止串口接收数据 1:允许串口接收数据 S2TB8:当串口 2 使用模式 1 时,S2TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧标 志位,按需要由软件置位或清 0。在模式 0 中,该位不用。 S2RB8:当串口 2 使用模式 1 时,S2RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧标 志位。在模式 0 中,该位不用。 S2TI:串口 2 发送中断请求标志位。在停止位开始发送时由硬件自动将 S2TI 置 1,向 CPU 发请求中断, 响应中断后 S2TI 必须用软件清零。 S2RI:串口 2 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S2RI 置 1,向 CPU 发 中断申请,响应中断后 S2RI 必须由软件清零。 14.4.2 串口 2 数据寄存器(S2BUF) 符号 地址 S2BUF 9BH B7 B6 B5 B4 B3 B2 B1 B0 S2BUF:串口 1 数据接收/发送缓冲区。S2BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分 别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对 S2BUF 进行读操作,实际是读取串口接收缓冲区,对 S2BUF 进行写操作则是触发串口开始发送 数据。 14.4.3 串口 2 模式 0,模式 0 波特率计算公式 串行口 2 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位, 8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD2 为数据发送口, RxD2 为数据接收口,串行口全双工接受/发送。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 528 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 写S2BUF TxD2 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop S2TI 发送数据(串口2模式0) 写S2CON S2REN=1, S2RI=0 RxD2 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop S2RI 接收数据(串口2模式0) 串口 2 的波特率是可变的,其波特率由定时器 2 产生。当定时器采用 1T 模式时(12 倍速),相应的 波特率的速度也会相应提高 12 倍。 串口 2 模式 0 的波特率计算公式如下表所示:(SYSclk 为系统工作频率) 选择定时器 定时器速度 波特率计算公式 1T 定时器2重载值 = 65536 - 12T 定时器2重载值 = 65536 - SYSclk 4×波特率 定时器2 14.4.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 去纯技术交流论坛:www.STCAIMCU.com - 529 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 串口 2 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 530 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.5 串口 3 14.5.1 串口 3 控制寄存器(S3CON) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 S3CON ACH S3SM0 S3ST3 S3SM2 S3REN S3TB8 S3RB8 S3TI S3RI S3SM0:指定串口3的通信工作模式,如下表所示: S3SM0 串口3工作模式 功能说明 0 模式0 可变波特率8位数据方式 1 模式1 可变波特率9位数据方式 S3ST3:选择串口 3 的波特率发生器 0:选择定时器 2 为串口 3 的波特率发生器 1:选择定时器 3 为串口 3 的波特率发生器 S3SM2:允许串口 3 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S3SM2 位为 1 且 S3REN 位为 1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S3RB8)来筛选地址帧: 若 S3RB8=1,说明该帧是地址帧,地址信息可以进入 S3BUF,并使 S3RI 为 1,进而在中断服务 程序中再进行地址号比较;若 S3RB8=0,说明该帧不是地址帧,应丢掉且保持 S3RI=0。在模式 1 中,如果 S3SM2 位为 0 且 S3REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的 S3RB8 为 0 或 1,均可使接收到的信息进入 S3BUF,并使 S3RI=1,此时 S3RB8 通常为校验位。模式 0 为非多机通信方式,在这种方式时,要设置 S3SM2 应为 0。 S3REN:允许/禁止串口接收控制位 0:禁止串口接收数据 1:允许串口接收数据 S3TB8:当串口 3 使用模式 1 时,S3TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧标 志位,按需要由软件置位或清 0。在模式 0 中,该位不用。 S3RB8:当串口 3 使用模式 1 时,S3RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧标 志位。在模式 0 中,该位不用。 S3TI:串口 3 发送中断请求标志位。在停止位开始发送时由硬件自动将 S3TI 置 1,向 CPU 发请求中断, 响应中断后 S3TI 必须用软件清零。 S3RI:串口 3 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S3RI 置 1,向 CPU 发 中断申请,响应中断后 S3RI 必须由软件清零。 14.5.2 串口 3 数据寄存器(S3BUF) 符号 地址 S3BUF ADH B7 B6 B5 B4 B3 B2 B1 B0 S3BUF:串口 1 数据接收/发送缓冲区。S3BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分 别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对 S3BUF 进行读操作,实际是读取串口接收缓冲区,对 S3BUF 进行写操作则是触发串口开始发送 数据。 14.5.3 串口 3 模式 0,模式 0 波特率计算公式 串行口 3 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位, 8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD3 为数据发送口, 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 531 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RxD3 为数据接收口,串行口全双工接受/发送。 写S3BUF TxD3 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop S3TI 发送数据(串口3模式0) 写S3CON S3REN=1, S3RI=0 RxD3 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop S3RI 接收数据(串口3模式0) 串口 3 的波特率是可变的,其波特率可由定时器 2 或定时器 3 产生。当定时器采用 1T 模式时(12 倍速),相应的波特率的速度也会相应提高 12 倍。 串口 3 模式 0 的波特率计算公式如下表所示:(SYSclk 为系统工作频率) 选择定时器 定时器速度 波特率计算公式 1T 定时器2重载值 = 65536 - 12T 定时器2重载值 = 65536 - 1T 定时器3重载值 = 65536 - 12T 定时器3重载值 = 65536 - SYSclk 4×波特率 定时器2 SYSclk 12×4×波特率 SYSclk 4×波特率 定时器3 14.5.4 SYSclk 12×4×波特率 串口 3 模式 1,模式 1 波特率计算公式 串行口 3 的模式 1 为 9 位数据位可变波特率 UART 工作模式。此模式一帧信息为 11 位:1 位起始位, 9 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD3 为数据发送口, RxD3 为数据接收口,串行口全双工接受/发送。 写S3BUF TxD3 Start D0 D1 D2 D3 D4 D5 D6 D7 TB8 Stop S3TI 发送数据(串口3模式1) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 532 - STC8A8K64D4 系列技术手册 写S3CON RxD3 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S3REN=1,S3RI=0 Start D0 D1 D2 D3 D4 D5 D6 D7 RB8 Stop S3RI 接收数据(串口3模式1) 串口 3 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 533 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.6 串口 4 14.6.1 串口 4 控制寄存器(S4CON) 符号 地址 B7 B6 B5 B4 B3 B2 B1 B0 S4CON 84H S4SM0 S4ST4 S4SM2 S4REN S4TB8 S4RB8 S4TI S4RI S4SM0:指定串口4的通信工作模式,如下表所示: S4SM0 串口4工作模式 功能说明 0 模式0 可变波特率8位数据方式 1 模式1 可变波特率9位数据方式 S4ST4:选择串口 4 的波特率发生器 0:选择定时器 2 为串口 4 的波特率发生器 1:选择定时器 4 为串口 4 的波特率发生器 S4SM2:允许串口 4 在模式 1 时允许多机通信控制位。在模式 1 时,如果 S4SM2 位为 1 且 S4REN 位为 1,则接收机处于地址帧筛选状态。此时可以利用接收到的第 9 位(即 S4RB8)来筛选地址帧: 若 S4RB8=1,说明该帧是地址帧,地址信息可以进入 S4BUF,并使 S4RI 为 1,进而在中断服务 程序中再进行地址号比较;若 S4RB8=0,说明该帧不是地址帧,应丢掉且保持 S4RI=0。在模式 1 中,如果 S4SM2 位为 0 且 S4REN 位为 1,接收收机处于地址帧筛选被禁止状态。不论收到的 S4RB8 为 0 或 1,均可使接收到的信息进入 S4BUF,并使 S4RI=1,此时 S4RB8 通常为校验位。模式 0 为非多机通信方式,在这种方式时,要设置 S4SM2 应为 0。 S4REN:允许/禁止串口接收控制位 0:禁止串口接收数据 1:允许串口接收数据 S4TB8:当串口 4 使用模式 1 时,S4TB8 为要发送的第 9 位数据,一般用作校验位或者地址帧/数据帧标 志位,按需要由软件置位或清 0。在模式 0 中,该位不用。 S4RB8:当串口 4 使用模式 1 时,S4RB8 为接收到的第 9 位数据,一般用作校验位或者地址帧/数据帧标 志位。在模式 0 中,该位不用。 S4TI:串口 4 发送中断请求标志位。在停止位开始发送时由硬件自动将 S4TI 置 1,向 CPU 发请求中断, 响应中断后 S4TI 必须用软件清零。 S4RI:串口 4 接收中断请求标志位。串行接收到停止位的中间时刻由硬件自动将 S4RI 置 1,向 CPU 发 中断申请,响应中断后 S4RI 必须由软件清零。 14.6.2 串口 4 数据寄存器(S4BUF) 符号 地址 S4BUF 85H B7 B6 B5 B4 B3 B2 B1 B0 S4BUF:串口 1 数据接收/发送缓冲区。S4BUF 实际是 2 个缓冲器,读缓冲器和写缓冲器,两个操作分 别对应两个不同的寄存器,1 个是只写寄存器(写缓冲器),1 个是只读寄存器(读缓冲器)。对 S4BUF 进行读操作,实际是读取串口接收缓冲区,对 S4BUF 进行写操作则是触发串口开始发送 数据。 14.6.3 串口 4 模式 0,模式 0 波特率计算公式 串行口 4 的模式 0 为 8 位数据位可变波特率 UART 工作模式。此模式一帧信息为 10 位:1 位起始位, 8 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD4 为数据发送口, RxD4 为数据接收口,串行口全双工接受/发送。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 534 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 写S4BUF TxD4 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop S4TI 发送数据(串口4模式0) 写S4CON S4REN=1, S4RI=0 RxD4 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop S4RI 接收数据(串口4模式0) 串口 4 的波特率是可变的,其波特率可由定时器 2 或定时器 4 产生。当定时器采用 1T 模式时(12 倍速),相应的波特率的速度也会相应提高 12 倍。 串口 4 模式 0 的波特率计算公式如下表所示:(SYSclk 为系统工作频率) 选择定时器 定时器速度 波特率计算公式 1T 定时器2重载值 = 65536 - 12T 定时器2重载值 = 65536 - 1T 定时器4重载值 = 65536 - 12T 定时器4重载值 = 65536 - SYSclk 4×波特率 定时器2 SYSclk 12×4×波特率 SYSclk 4×波特率 定时器4 14.6.4 SYSclk 12×4×波特率 串口 4 模式 1,模式 1 波特率计算公式 串行口 4 的模式 1 为 9 位数据位可变波特率 UART 工作模式。此模式一帧信息为 11 位:1 位起始位, 9 位数据位(低位在先)和 1 位停止位。波特率可变,可根据需要进行设置波特率。TxD4 为数据发送口, RxD4 为数据接收口,串行口全双工接受/发送。 写S4BUF TxD4 Start D0 D1 D2 D3 D4 D5 D6 D7 TB8 Stop S4TI 发送数据(串口4模式1) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 535 - STC8A8K64D4 系列技术手册 写S4CON RxD4 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 S4REN=1,S4RI=0 Start D0 D1 D2 D3 D4 D5 D6 D7 RB8 Stop S4RI 接收数据(串口4模式1) 串口 4 模式 1 的波特率计算公式与模式 0 是完全相同的。请参考模式 0 的波特率计算公式。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 536 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.7 串口注意事项 关于串口中断请求有如下问题需要注意:(串口 1、串口 2、串口 3、串口 4 均类似,下面以串口 1 为例进行说明) 8 位数据模式时,发送完成约 1/3 个停止位后产生 TI 中断请求,如下图所示: 写SBUF TxD Start D0 D1 D2 D3 D4 D5 D6 D7 Stop TI 发送数据(8位数据) 8 位数据模式时,接收完成一半个停止位后产生 RI 中断请求,如下图所示: 写SCON RxD REN=1, RI=0 Start D0 D1 D2 D3 D4 D5 D6 D7 Stop RI 接收数据(8位数据) 9 位数据模式时,发送完成约 1/3 个停止位后产生 TI 中断请求: 写SBUF TxD Start D0 D1 D2 D3 D4 D5 D6 D7 TB8 Stop D7 RB8 Stop TI 发送数据(9位数据) 9 位数据模式时,一半个停止位后产生 RI 中断请求,如下图所示: 写SCON RxD REN=1,RI=0 Start D0 D1 D2 D3 D4 D5 D6 RI 接收数据(9位数据) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 537 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.8 范例程序 串口 1 使用定时器 2 做波特率发生器 14.8.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 去纯技术交流论坛:www.STCAIMCU.com - 538 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 539 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 540 - STC8A8K64D4 系列技术手册 MOV RET UART_SENDSTR: CLR MOVC JZ LCALL INC JMP SENDEND: RET 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 14.8.2 串口 1 使用定时器 1(模式 0)做波特率发生器 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 541 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 542 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 543 - STC8A8K64D4 系列技术手册 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.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 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 544 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com LCALL INC JMP 技术支持: 19864585985 选型顾问: 13922805190 UART_SEND DPTR UART_SENDSTR SENDEND: RET MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL SETB SETB UART_INIT ES EA MOV LCALL DPTR,#STRING UART_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: END 串口 1 使用定时器 1(模式 2)做波特率发生器 14.8.3 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define FOSC 深圳国芯人工智能有限公司 11059200UL 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 545 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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]; 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 546 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 547 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 548 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 技术支持: 19864585985 选型顾问: 13922805190 LOOP: STRING: END 串口 2 使用定时器 2 做波特率发生器 14.8.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 去纯技术交流论坛:www.STCAIMCU.com - 549 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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]; 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 550 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 551 - STC8A8K64D4 系列技术手册 P5M0 官方网站: www.STCAI.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 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 552 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 技术支持: 19864585985 选型顾问: 13922805190 LOOP: STRING: END 串口 3 使用定时器 2 做波特率发生器 14.8.5 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr AUXR T2H T2L S3CON S3BUF = = = = = 深圳国芯人工智能有限公司 0x8e; 0xd6; 0xd7; 0xac; 0xad; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 553 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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]; 技术支持: 19864585985 选型顾问: 13922805190 void Uart3Isr() interrupt 17 { if (S3CON & 0x02) { S3CON &= ~0x02; busy = 0; } if (S3CON & 0x01) { S3CON &= ~0x01; buffer[wptr++] = S3BUF; wptr &= 0x0f; } } void Uart3Init() { S3CON = 0x10; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart3Send(char dat) { while (busy); busy = 1; S3BUF = dat; } void Uart3SendStr(char *p) { while (*p) { Uart3SEND(*p++); } 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 554 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart3Init(); IE2 = 0x08; EA = 1; Uart3SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart3SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz AUXR T2H T2L S3CON S3BUF IE2 DATA DATA DATA DATA DATA DATA 8EH 0D6H 0D7H 0ACH 0ADH 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 深圳国芯人工智能有限公司 ;16 bytes 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 555 - STC8A8K64D4 系列技术手册 P5M0 官方网站: www.STCAI.com DATA 0CAH ORG LJMP ORG LJMP 0000H MAIN 008BH UART3_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S3CON ACC.1,CHKRI S3CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART3_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART3ISR_EXIT: POP POP RETI ACC.0,UART3ISR_EXIT S3CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S3BUF WPTR PSW ACC UART3_INIT: MOV MOV MOV MOV CLR MOV MOV RET S3CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S3BUF,A ;65536-11059200/115200/4=0FFE8H UART3_SEND: UART3_SENDSTR: CLR MOVC JZ LCALL INC JMP SEND3END: RET A A,@A+DPTR SEND3END UART3_SEND DPTR UART3_SENDSTR MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 556 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART3_INIT IE2,#08H EA MOV LCALL DPTR,#STRING UART3_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART3_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H 技术支持: 19864585985 选型顾问: 13922805190 LOOP: STRING: END 串口 3 使用定时器 3 做波特率发生器 14.8.6 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr T4T3M T4L T4H T3L T3H = = = = = 深圳国芯人工智能有限公司 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 557 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com sfr sfr sfr sfr sfr T2L T2H S3CON S3BUF IE2 = = = = = 0xd7; 0xd6; 0xac; 0xad; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit char char char busy; wptr; rptr; buffer[16]; 技术支持: 19864585985 选型顾问: 13922805190 void Uart3Isr() interrupt 17 { if (S3CON & 0x02) { S3CON &= ~0x02; busy = 0; } if (S3CON & 0x01) { S3CON &= ~0x01; buffer[wptr++] = S3BUF; wptr &= 0x0f; } } void Uart3Init() { S3CON = 0x50; T3L = BRT; T3H = BRT >> 8; T4T3M = 0x0a; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart3Send(char dat) { while (busy); busy = 1; S3BUF = dat; } void Uart3SendStr(char *p) { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 558 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 while (*p) { Uart3SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart3Init(); IE2 = 0x08; EA = 1; Uart3SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart3SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H S3CON S3BUF IE2 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 0ACH 0ADH 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 DATA DATA DATA 093H 094H 091H 深圳国芯人工智能有限公司 ;16 bytes 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 559 - STC8A8K64D4 系列技术手册 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 008BH UART3_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S3CON ACC.1,CHKRI S3CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART3_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART3ISR_EXIT: POP POP RETI ACC.0,UART3ISR_EXIT S3CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S3BUF WPTR PSW ACC UART3_INIT: MOV MOV MOV MOV CLR MOV MOV RET S3CON,#50H T3L,#0E8H T3H,#0FFH T4T3M,#0AH BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S3BUF,A ;65536-11059200/115200/4=0FFE8H UART3_SEND: UART3_SENDSTR: CLR MOVC 深圳国芯人工智能有限公司 A A,@A+DPTR 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 560 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com JZ LCALL INC JMP 技术支持: 19864585985 选型顾问: 13922805190 SEND3END UART3_SEND DPTR UART3_SENDSTR SEND3END: RET MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART3_INIT IE2,#08H EA MOV LCALL DPTR,#STRING UART3_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART3_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: END 14.8.7 串口 4 使用定时器 2 做波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 561 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr AUXR T2H T2L S4CON S4BUF IE2 = = = = = = 0x8e; 0xd6; 0xd7; 0x84; 0x85; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit char char char busy; wptr; rptr; buffer[16]; 技术支持: 19864585985 选型顾问: 13922805190 void Uart4Isr() interrupt 18 { if (S4CON & 0x02) { S4CON &= ~0x02; busy = 0; } if (S4CON & 0x01) { S4CON &= ~0x01; buffer[wptr++] = S4BUF; wptr &= 0x0f; } } void Uart4Init() { S4CON = 0x10; T2L = BRT; T2H = BRT >> 8; AUXR = 0x14; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart4Send(char dat) { while (busy); busy = 1; S4BUF = dat; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 562 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 } void Uart4SendStr(char *p) { while (*p) { Uart4SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart4Init(); IE2 = 0x10; EA = 1; Uart4SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart4SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz AUXR T2H T2L S4CON S4BUF IE2 DATA DATA DATA DATA DATA DATA 8EH 0D6H 0D7H 84H 85H 0AFH BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 DATA DATA DATA 093H 094H 091H 深圳国芯人工智能有限公司 ;16 bytes 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 563 - STC8A8K64D4 系列技术手册 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 官方网站: www.STCAI.com DATA DATA DATA DATA DATA DATA DATA DATA DATA 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0093H UART4_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S4CON ACC.1,CHKRI S4CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 UART4_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART4ISR_EXIT: POP POP RETI ACC.0,UART4ISR_EXIT S4CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S4BUF WPTR PSW ACC UART4_INIT: MOV MOV MOV MOV CLR MOV MOV RET S4CON,#10H T2L,#0E8H T2H,#0FFH AUXR,#14H BUSY WPTR,#00H RPTR,#00H JB SETB MOV RET BUSY,$ BUSY S4BUF,A ;65536-11059200/115200/4=0FFE8H UART4_SEND: UART4_SENDSTR: CLR MOVC 深圳国芯人工智能有限公司 A A,@A+DPTR 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 564 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com JZ LCALL INC JMP 技术支持: 19864585985 选型顾问: 13922805190 SEND4END UART4_SEND DPTR UART4_SENDSTR SEND4END: RET MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART4_INIT IE2,#10H EA MOV LCALL DPTR,#STRING UART4_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART4_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: END 14.8.8 串口 4 使用定时器 4 做波特率发生器 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 565 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr T4T3M T4L T4H T3L T3H T2L T2H S4CON S4BUF IE2 = = = = = = = = = = 0xd1; 0xd3; 0xd2; 0xd5; 0xd4; 0xd7; 0xd6; 0x84; 0x85; 0xaf; sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; bit char char char busy; wptr; rptr; buffer[16]; 技术支持: 19864585985 选型顾问: 13922805190 void Uart4Isr() interrupt 18 { if (S4CON & 0x02) { S4CON &= ~0x02; busy = 0; } if (S4CON & 0x01) { S4CON &= ~0x01; buffer[wptr++] = S4BUF; wptr &= 0x0f; } } void Uart4Init() { S4CON = 0x50; T4L = BRT; T4H = BRT >> 8; T4T3M = 0xa0; wptr = 0x00; rptr = 0x00; busy = 0; } void Uart4Send(char dat) 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 566 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 { while (busy); busy = 1; S4BUF = dat; } void Uart4SendStr(char *p) { while (*p) { Uart4SEND(*p++); } } void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; Uart4Init(); IE2 = 0x10; EA = 1; Uart4SENDStr(“Uart Test !\r\n”); while (1) { if (rptr != wptr) { Uart4SEND(buffer[rptr++]); rptr &= 0x0f; } } } 汇编代码 ;测试工作频率为 11.0592MHz T4T3M T4L T4H T3L T3H T2L T2H S4CON S4BUF IE2 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 深圳国芯人工智能有限公司 0D1H 0D3H 0D2H 0D5H 0D4H 0D7H 0D6H 84H 85H 0AFH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 567 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com BUSY WPTR RPTR BUFFER BIT DATA DATA DATA 20H.0 21H 22H 23H P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA DATA 093H 094H 091H 092H 095H 096H 0B1H 0B2H 0B3H 0B4H 0C9H 0CAH ORG LJMP ORG LJMP 0000H MAIN 0093H UART4_ISR ORG 0100H PUSH PUSH MOV ACC PSW PSW,#08H MOV JNB ANL CLR A,S4CON ACC.1,CHKRI S4CON,#NOT 02H BUSY 技术支持: 19864585985 选型顾问: 13922805190 ;16 bytes UART4_ISR: CHKRI: JNB ANL MOV ANL ADD MOV MOV INC UART4ISR_EXIT: POP POP RETI ACC.0,UART4ISR_EXIT S4CON,#NOT 01H A,WPTR A,#0FH A,#BUFFER R0,A @R0,S4BUF WPTR PSW ACC UART4_INIT: MOV MOV MOV MOV CLR MOV MOV RET S4CON,#50H T4L,#0E8H T4H,#0FFH T4T3M,#0A0H BUSY WPTR,#00H RPTR,#00H ;65536-11059200/115200/4=0FFE8H UART4_SEND: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 568 - STC8A8K64D4 系列技术手册 JB SETB MOV RET UART4_SENDSTR: CLR MOVC JZ LCALL INC JMP SEND4END: RET 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 BUSY,$ BUSY S4BUF,A A A,@A+DPTR SEND4END UART4_SEND DPTR UART4_SENDSTR MAIN: MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H LCALL MOV SETB UART4_INIT IE2,#10H EA MOV LCALL DPTR,#STRING UART4_SENDSTR MOV XRL ANL JZ MOV ANL ADD MOV MOV LCALL INC JMP A,RPTR A,WPTR A,#0FH LOOP A,RPTR A,#0FH A,#BUFFER R0,A A,@R0 UART4_SEND RPTR LOOP DB 'Uart Test !',0DH,0AH,00H LOOP: STRING: END 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 569 - STC8A8K64D4 系列技术手册 14.8.9 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 串口多机通讯 现参考 STC15 系列数据手册,后续补充 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 570 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 14.8.10 串口转 LIN 总线 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 sbit P00 P01 = = P0^0; P0^1; 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 571 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 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^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; 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 572 - STC8A8K64D4 系列技术手册 #define LIN_ID 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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 去纯技术交流论坛:www.STCAIMCU.com - 573 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com if(RX1_Cnt > 0) { Lin_Send(RX1_Buffer); } RX1_Cnt = 0; 技术支持: 19864585985 选型顾问: 13922805190 //将 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 / 10000; while(--i); //10T 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 ; 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(); } //使用 MOVC 读取 EEPROM 需要加上相应的偏移 //使用 MOVC 读取数据 //使能 IAP //设置等待参数 12MHz //设置 IAP 写命令 //设置 IAP 低地址 //设置 IAP 高地址 //写 IAP 数据 //写触发命令(0x5a) //写触发命令(0xa5) //关闭 IAP 功能 //使能 IAP //设置等待参数 12MHz //设置 IAP 擦除命令 //设置 IAP 低地址 //设置 IAP 高地址 //写触发命令(0x5a) //写触发命令(0xa5) // //关闭 IAP 功能 void main() { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 605 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 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; IapErase(0x0400); P0 = IapRead(0x0400); IapProgram(0x0400, 0x12); P1 = IapRead(0x0400); //P0=0xff //P1=0x12 while (1); } 汇编代码 ;测试工作频率为 11.0592MHz IAP_DATA IAP_ADDRH IAP_ADDRL IAP_CMD IAP_TRIG IAP_CONTR IAP_TPS DATA DATA DATA DATA DATA DATA DATA 0C2H 0C3H 0C4H 0C5H 0C6H 0C7H 0F5H IAP_OFFSET EQU 0F000H 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 IAP_CONTR,#0 IAP_CMD,#0 IAP_TRIG,#0 IAP_ADDRH,#80H IAP_ADDRL,#0 ;STC8A8K60S4 IAP_IDLE: 深圳国芯人工智能有限公司 ;关闭 IAP 功能 ;清除命令寄存器 ;清除触发寄存器 ;将地址设置到非 IAP 区域 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 606 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 RET IAP_READ: A,#LOW IAP_OFFSET A,DPL DPL,A A,@HIGH IAP_OFFSET A,DPH DPH,A A A,@A+DPTR ;使用 MOVC 读取 EEPROM 需要加上相应的偏移 IAP_CONTR,#80H IAP_TPS,#12 IAP_CMD,#2 IAP_ADDRL,DPL IAP_ADDRH,DPH IAP_DATA,A IAP_TRIG,#5AH IAP_TRIG,#0A5H ;使能 IAP ;设置等待参数 12MHz ;设置 IAP 写命令 ;设置 IAP 低地址 ;设置 IAP 高地址 ;写 IAP 数据 ;写触发命令(0x5a) ;写触发命令(0xa5) IAP_IDLE ;关闭 IAP 功能 MOV MOV MOV MOV MOV MOV MOV NOP LCALL RET IAP_CONTR,#80H IAP_TPS,#12 IAP_CMD,#3 IAP_ADDRL,DPL IAP_ADDRH,DPH IAP_TRIG,#5AH IAP_TRIG,#0A5H ;使能 IAP ;设置等待参数 12MHz ;设置 IAP 擦除命令 ;设置 IAP 低地址 ;设置 IAP 高地址 ;写触发命令(0x5a) ;写触发命令(0xa5) IAP_IDLE ;关闭 IAP 功能 MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV SP, #5FH P0M0, #00H P0M1, #00H P1M0, #00H P1M1, #00H P2M0, #00H P2M1, #00H P3M0, #00H P3M1, #00H P4M0, #00H P4M1, #00H P5M0, #00H P5M1, #00H MOV LCALL MOV LCALL MOV MOV DPTR,#0400H IAP_ERASE DPTR,#0400H IAP_READ P0,A DPTR,#0400H MOV ADD MOV MOV ADDC MOV CLR MOVC RET IAP_PROGRAM: MOV MOV MOV MOV MOV MOV MOV MOV NOP LCALL RET ;使用 MOVC 读取数据 IAP_ERASE: MAIN: 深圳国芯人工智能有限公司 ;P0=0FFH 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 607 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com MOV LCALL MOV LCALL MOV A,#12H IAP_PROGRAM DPTR,#0400H IAP_READ P1,A SJMP $ 技术支持: 19864585985 选型顾问: 13922805190 ;P1=12H END 使用串口送出 EEPROM 数据 16.4.3 C 语言代码 //测试工作频率为 11.0592MHz #include "reg51.h" #include "intrins.h" #define #define FOSC BRT 11059200UL (65536 - FOSC / 115200 / 4) sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr sfr P0M1 P0M0 P1M1 P1M0 P2M1 P2M0 P3M1 P3M0 P4M1 P4M0 P5M1 P5M0 = = = = = = = = = = = = 0x93; 0x94; 0x91; 0x92; 0x95; 0x96; 0xb1; 0xb2; 0xb3; 0xb4; 0xc9; 0xca; sfr sfr sfr AUXR T2H T2L = = = 0x8e; 0xd6; 0xd7; sfr sfr sfr sfr sfr sfr sfr IAP_DATA IAP_ADDRH IAP_ADDRL IAP_CMD IAP_TRIG IAP_CONTR IAP_TPS = = = = = = = 0xC2; 0xC3; 0xC4; 0xC5; 0xC6; 0xC7; 0xF5; void UartInit() { SCON = 0x5a; T2L = BRT; T2H = BRT >> 8; AUXR = 0x15; } void UartSend(char dat) { 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 608 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 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 = 0x80; IAP_TPS = 12; IAP_CMD = 1; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_TRIG = 0x5a; IAP_TRIG = 0xa5; _nop_(); dat = IAP_DATA; IapIdle(); //使能 IAP //设置等待参数 12MHz //设置 IAP 读命令 //设置 IAP 低地址 //设置 IAP 高地址 //写触发命令(0x5a) //写触发命令(0xa5) //读 IAP 数据 //关闭 IAP 功能 return dat; } void IapProgram(int addr, char dat) { IAP_CONTR = 0x80; IAP_TPS = 12; IAP_CMD = 2; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_DATA = dat; IAP_TRIG = 0x5a; IAP_TRIG = 0xa5; _nop_(); IapIdle(); } void IapErase(int addr) { IAP_CONTR = 0x80; IAP_TPS = 12; IAP_CMD = 3; IAP_ADDRL = addr; IAP_ADDRH = addr >> 8; IAP_TRIG = 0x5a; IAP_TRIG = 0xa5; _nop_(); IapIdle(); } 深圳国芯人工智能有限公司 //使能 IAP //设置等待参数 12MHz //设置 IAP 写命令 //设置 IAP 低地址 //设置 IAP 高地址 //写 IAP 数据 //写触发命令(0x5a) //写触发命令(0xa5) //关闭 IAP 功能 //使能 IAP //设置等待参数 12MHz //设置 IAP 擦除命令 //设置 IAP 低地址 //设置 IAP 高地址 //写触发命令(0x5a) //写触发命令(0xa5) // //关闭 IAP 功能 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 609 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 void main() { P0M0 = 0x00; P0M1 = 0x00; P1M0 = 0x00; P1M1 = 0x00; P2M0 = 0x00; P2M1 = 0x00; P3M0 = 0x00; P3M1 = 0x00; P4M0 = 0x00; P4M1 = 0x00; P5M0 = 0x00; P5M1 = 0x00; UartInit(); IapErase(0x0400); UartSend(IapRead(0x0400)); IapProgram(0x0400, 0x12); UartSend(IapRead(0x0400)); while (1); } 汇编代码 ;测试工作频率为 11.0592MHz AUXR T2H T2L DATA DATA DATA 8EH 0D6H 0D7H IAP_DATA IAP_ADDRH IAP_ADDRL IAP_CMD IAP_TRIG IAP_CONTR IAP_TPS DATA DATA DATA DATA DATA DATA DATA 0C2H 0C3H 0C4H 0C5H 0C6H 0C7H 0F5H 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 UART_INIT: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 610 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 MOV MOV MOV MOV RET SCON,#5AH T2L,#0E8H T2H,#0FFH AUXR,#15H JNB CLR MOV RET TI,$ TI SBUF,A MOV MOV MOV MOV MOV RET IAP_CONTR,#0 IAP_CMD,#0 IAP_TRIG,#0 IAP_ADDRH,#80H IAP_ADDRL,#0 ;关闭 IAP 功能 ;清除命令寄存器 ;清除触发寄存器 ;将地址设置到非 IAP 区域 MOV MOV MOV MOV MOV MOV MOV NOP MOV LCALL RET IAP_CONTR,#80H IAP_TPS,#12 IAP_CMD,#1 IAP_ADDRL,DPL IAP_ADDRH,DPH IAP_TRIG,#5AH IAP_TRIG,#0A5H ;使能 IAP ;设置等待参数 12MHz ;设置 IAP 读命令 ;设置 IAP 低地址 ;设置 IAP 高地址 ;写触发命令(0x5a) ;写触发命令(0xa5) A,IAP_DATA IAP_IDLE ;读取 IAP 数据 ;关闭 IAP 功能 IAP_CONTR,#80H IAP_TPS,#12 IAP_CMD,#2 IAP_ADDRL,DPL IAP_ADDRH,DPH IAP_DATA,A IAP_TRIG,#5AH IAP_TRIG,#0A5H ;使能 IAP ;设置等待参数 12MHz ;设置 IAP 写命令 ;设置 IAP 低地址 ;设置 IAP 高地址 ;写 IAP 数据 ;写触发命令(0x5a) ;写触发命令(0xa5) IAP_IDLE ;关闭 IAP 功能 IAP_CONTR,#80H IAP_TPS,#12 IAP_CMD,#3 IAP_ADDRL,DPL IAP_ADDRH,DPH IAP_TRIG,#5AH IAP_TRIG,#0A5H ;使能 IAP ;设置等待参数 12MHz ;设置 IAP 擦除命令 ;设置 IAP 低地址 ;设置 IAP 高地址 ;写触发命令(0x5a) ;写触发命令(0xa5) IAP_IDLE ;关闭 IAP 功能 选型顾问: 13922805190 ;65536-11059200/115200/4=0FFE8H UART_SEND: IAP_IDLE: IAP_READ: IAP_PROGRAM: MOV MOV MOV MOV MOV MOV MOV MOV NOP LCALL RET IAP_ERASE: MOV MOV MOV MOV MOV MOV MOV NOP LCALL RET MAIN: 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 611 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.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 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 $ 技术支持: 19864585985 选型顾问: 13922805190 END 16.4.4 串口 1 读写 EEPROM-带 MOVC 读 C 语言代码(main.c) //测试工作频率为 11.0592MHz /* 本程序经过测试完全正常, 不提供电话技术支持, 如不能理解, 请自行补充相关基础. */ /************* 本程序功能说明 ************** STC8G 系列 EEPROM 通用测试程序. 请先别修改程序, 直接下载"02-串口 1 读写 EEPROM-带 MOVC 读"里面的"UART-EEPROM.hex"测试. 下载时选择主频 11.0592MHZ. PC 串口设置: 波特率 115200,8,n,1. 对 EEPROM 做扇区擦除、写入 64 字节、读出 64 字节的操作。 命令例子: E0 对 EEPROM 进行扇区擦除操作,E 表示擦除, 数字 0 为 0 扇区(十进制, 0~126, 看具体 IC). W0 对 EEPROM 进行写入操作,W 表示写入, 数字 0 为 0 扇区(十进制, 0~126, 看具体 IC). 从扇区的开始地址连续 写 64 字节. R 0 对 EEPROM 进行 IAP 读出操作,R 表示读出, 数字 0 为 0 扇区(十进制, 0~126, 看具体 IC). 从扇区的开始地址 连续读 64 字节. M0 对 EEPROM 进行 MOVC 读出操作(操作地址为扇区*512+偏移地址),数字 0 为 0 扇区(十进制, 0~126, 看具体 IC). 从扇区的开始地址连续读 64 字节. 注意:为了通用,程序不识别扇区是否有效,用户自己根据具体的型号来决定。 深圳国芯人工智能有限公司 国内分销商电话: 0513-5501 2928/2929/2966 去纯技术交流论坛:www.STCAIMCU.com - 612 - STC8A8K64D4 系列技术手册 官方网站: www.STCAI.com 技术支持: 19864585985 选型顾问: 13922805190 日期: 2019-6-10 ******************************************/ #include #include "config.H" "EEPROM.h" #define #define #define Baudrate1 UART1_BUF_LENGTH EEADDR_OFFSET 115200L 10 (8 * 1024) #define TimeOutSet1 5 //定义 EEPROM 用 MOVC 访问时加的偏移量, //等于 FLASH ROM 的大小.对于 IAP 或 IRC 开头的, //则偏移量必须为 0 /************* 本地常量声明 **************/ u8 code T_Strings[]={"去年今日此门中,人面桃花相映红。人面不知何处去,桃花依旧笑春风。"}; /************* 本地变量声明 **************/ u8 xdata tmp[70]; u8 xdata RX1_Buffer[UART1_BUF_LENGTH]; u8 RX1_Cnt; u8 RX1_TimeOut; bit B_TX1_Busy; /************* 本地函数声明 **************/ void UART1_config(void); void TX1_write2buff(u8 dat); void PrintString1(u8 *puts); /************* //写入发送缓冲 //发送一个字符串 外部函数和变量声明 *****************/ /**********************************************/ u8 { CheckData(u8 dat) if((dat >= '0') && (dat = 'A') && (dat = 'a') && (dat
STC8A8K64D4-45I-LQFP44 价格&库存

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

免费人工找货
STC8A8K64D4-45I-LQFP44
    •  国内价格
    • 1+9.41320
    • 10+8.06190
    • 30+7.32270
    • 160+6.21390
    • 480+5.83280

    库存:0

    STC8A8K64D4-45I-LQFP44
    •  国内价格
    • 1+5.15198
    • 10+4.76198
    • 30+4.68398
    • 100+4.44998

    库存:320

    STC8A8K64D4-45I-LQFP44
      •  国内价格
      • 1+8.80200
      • 10+7.53840
      • 30+6.84720
      • 160+5.81040
      • 480+5.45400
      • 960+5.30280

      库存:0