首页资源分类嵌入式处理器51内核 > C8051中文资料

C8051中文资料

已有 445117个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:C8051

    分    享:

    文档简介

    C8051单片机中文资料

    文档预览

    C8051F310/1 混合信号 ISP FLASH 微控制器 C8051F310/1/2/3/4/5 8/16 KB ISP FLASH 微控制器 数据手册 潘琢金 译 Rev 1.5 2004.11 版权所有 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 1 C8051F310/1 混合信号 ISP FLASH 微控制器 版权声明 本手册中文版版权归译者和新华龙电子有限公司所有。研究和开发人员可以 自由使用本手册。任何单位和个人未经版权所有者授权不得在任何形式的出版物 中摘抄本手册内容。 译者将在本手册英文版更新后及时更新中文版内容。译文中一定存在不少错 误和不准确之处,望各位同仁不吝赐教,以便在新版本中更正。 译者联系方式: 沈阳航空工业学院计算机学院 潘琢金 电话:024-86802267,13066535936 Email:panzhuojin@sina.com 或 panzhj@syiae.edu.cn 2 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 模拟外设 − 10 位 ADC(仅限于 C8051F310/1/2/3) 转换速率可达 200ksps 可多达 21 或 17 个外部单端或差分输入 VREF 可在外部引脚或 VDD 中选择 内置温度传感器(±3°C) 外部转换启动输入 − 两个模拟比较器 可编程回差电压和响应时间 可配置为中断或复位源(比较器 0) 小电流(<0.5µA) 在片调试 − 片内调试电路提供全速、非侵入式的在系统调 试(不需仿真器) − 支持断点、单步、观察/修改存储器和寄存器 − 比使用仿真芯片、目标仿真头和仿真插座的仿 真系统有更优越的性能 − 完整的开发套件 供电电压…………………………2.7V - 3.6V − 典型工作电流:5mA @ 25MHz 11µA @ 32KHz − 典型停机电流:0.1µA − 温度范围:-40°C - +85°C 高速 8051 微控制器内核 − 流水线指令结构;70%的指令的执行时间为一 个或两个系统时钟周期 − 速度可达 25MIPS(时钟频率为 25MHz 时) − 扩展的中断系统 存储器 − 1280 字节内部数据 RAM(1024+256) − 16KB(C8051F310/1)或 8KB (C8051F312/3/4/5) FLASH 存储器;可在系统编程,扇区大小为 512 字节 数字外设 − 29/25 个端口 I/O;所有口线均耐 5V 电压 − 硬件增强型 UART、SMBus 和 SPI 串口 − 4 个通用 16 位计数器/定时器 − 16 位可编程计数器/定时器阵列(PCA),有 5 个捕捉/比较模块 − 使用 PCA 或定时器和外部时钟源的实时时钟 方式 时钟源 − 内部可编程振荡器:24.5MHz,±2%的精度, 可支持无晶体 UART 操作 − 外部振荡器:晶体、RC、C、或外部时钟 − 可在运行中切换时钟源,适用于节电方式 封装 − 32 脚 LQFP(C8051F310/2/4) − 28 脚 MLP(C8051F311/3/5) 模拟外设 A 10 位 M U 200ksps X ADC 温度 传感器 + + - 电压 比较器 数字I/O UART SMBus 交 叉 SPI 开 PCA 关 定时器0 定时器1 定时器2 定时器3 端口0 端口1 端口2 端口3 可编程精密内部振荡器 16KB/8KB ISP FLASH 14个中断源 高速控制器内核 8051 CPU (25MIPS) 调试电路 1280 B SRAM POR WDT 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 1 C8051F310/1 混合信号 ISP FLASH 微控制器 1 . 系统概述 ........................................................................................................................................6 1.1 CIP-51TM 微控制器核..........................................................................................................10 1.1.1 与 8051 完全兼容.............................................................................................................14 1.1.2 速度提高 ..........................................................................................................................14 1.1.3 增加的功能.......................................................................................................................15 1.2 片内存储器 .............................................................................................................................16 1.3 片内调试电路 .........................................................................................................................17 1.4 可编程数字I/O和交叉开关 ....................................................................................................18 1.5 串行端口 .................................................................................................................................19 1.6 可编程计数器阵列..................................................................................................................19 1.7 10 位模/数转换器 .................................................................................................................20 1.8 比较器 .....................................................................................................................................21 2. 极限参数 .......................................................................................................................................22 3. 总体直流电气特性 .......................................................................................................................22 4. 引脚和封装定义 ...........................................................................................................................23 5. 10 位ADC(ADC0) .................................................................................................................29 5.1 模拟多路选择器......................................................................................................................30 5.1 温度传感器 .............................................................................................................................31 5.3 工作方式 .................................................................................................................................33 5.3.1 转换启动方式...................................................................................................................33 5.3.2 跟踪方式 ..........................................................................................................................34 5.3.3 建立时间要求.................................................................................................................35 5.4 可编程窗口检测器................................................................................................................40 5.4.1 单端方式下的窗口检测器...............................................................................................41 5.4.2 差分方式下的窗口检测器...............................................................................................42 6. 电压基准 .......................................................................................................................................45 7. 比较器 ...........................................................................................................................................47 8. CIP-51 微控制器 ..........................................................................................................................55 8.1 指令集 .....................................................................................................................................56 8.1.1 指令和CPU时序...............................................................................................................56 8.1.2 MOVX指令和程序存储器..............................................................................................56 8.2 存储器组织 .............................................................................................................................60 2 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 8.2.1 程序存储器.......................................................................................................................60 8.2.2 数据存储器.......................................................................................................................61 8.2.3 通用寄存器.......................................................................................................................62 8.2.4 位寻址空间.......................................................................................................................62 8.2.5 堆栈 ..................................................................................................................................62 8.2.6 特殊功能寄存器...............................................................................................................62 8.2.7 寄存器说明.......................................................................................................................66 8.3 中断系统 .................................................................................................................................69 8.3.1 MCU中断源和中断向量................................................................................................69 8.3.2 外部中断 ..........................................................................................................................69 8.3.3 中断优先级.......................................................................................................................70 8.3.4 中断响应时间...................................................................................................................70 8.3.5 中断寄存器说明...............................................................................................................72 8.4 电源管理方式 .........................................................................................................................77 8.4.1 空闲方式 ..........................................................................................................................77 8.4.2 停机方式 ..........................................................................................................................77 9. 复位源 ...........................................................................................................................................79 9.1 上电复位 .................................................................................................................................80 9.2 掉电复位和VDD监视器 .........................................................................................................80 9.3 外部复位 .................................................................................................................................81 9.4 时钟丢失检测器复位..............................................................................................................81 9.5 比较器 0 复位 .........................................................................................................................82 9.6 PCA看门狗定时器复位........................................................................................................82 9.7 FLASH错误复位...................................................................................................................82 9.8 软件复位 .................................................................................................................................82 10. FLASH存储器 .............................................................................................................................85 10.1 FLASH存储器编程.............................................................................................................85 10.1.1 FLASH锁定和关键码功能...........................................................................................85 10.1.2 FLASH擦除...................................................................................................................85 10.1.3 FLASH写.......................................................................................................................86 10.2 非易失性数据存储 ..............................................................................................................86 10.3 安全选项 .............................................................................................................................86 11.外部RAM ...................................................................................................................................91 12. 振荡器 .........................................................................................................................................92 12.1 可编程内部振荡器................................................................................................................92 12.1.1 C8051F310/1 的内部振荡器编程 ...............................................错误!未定义书签。 12.2 外部振荡器驱动电路............................................................................................................94 12.3 系统时钟选择 .......................................................................................................................94 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 3 C8051F310/1 混合信号 ISP FLASH 微控制器 12.4 外部晶体示例 .......................................................................................................................96 12.5 外部RC示例 ..........................................................................................................................97 12.6 外部电容示例 .......................................................................................................................97 13. 端口输入/输出 ............................................................................................................................98 12.1 优先权交叉开关译码器....................................................................................................99 13.2 端口I/O初始化 ................................................................................................................101 13.3 通用端口I/O ....................................................................................................................105 14. SMBUS.......................................................................................................................................112 14.1 支持文档 .............................................................................................................................113 14.2 SMBUS配置.......................................................................................................................113 14.3 SMBUS操作.......................................................................................................................114 14.3.1 总线仲裁 ......................................................................................................................114 14.3.2 时钟低电平扩展...........................................................................................................115 14.3.3 SCL低电平超时..........................................................................................................115 14.3.4 SCL高电平(SMBus空闲)超时...............................................................................115 14.4 SMBUS的使用 ...................................................................................................................115 14.4.1 SMBus配置寄存器 .....................................................................................................116 14.4.2 SMBus控制寄存器 .....................................................................................................119 14.4.3 数据寄存器...................................................................................................................121 14.5 SMBUS传输方式 ...............................................................................................................122 14.5.1 主发送器方式...............................................................................................................122 14.5.2 主接收器方式...............................................................................................................123 14.5.3 从接收器方式...............................................................................................................124 14.5.4 从发送器方式...............................................................................................................125 14.6 SMBUS状态译码 ...............................................................................................................126 15. UART0 .......................................................................................................................................128 15.1 增强的波特率发生器..........................................................................................................129 15.2 工作方式 .............................................................................................................................130 15.2.1 8 位UART....................................................................................................................130 15.2.2 9 位UART....................................................................................................................131 15.3 多机通信 .............................................................................................................................132 16. 增强型串行外设接口(SPI0) ...............................................................................................137 16.1 信号说明 .............................................................................................................................138 16.1.1 主输出、从输入(MOSI) .........................................................................................138 16.1.2 主输入、从输出(MISO) .........................................................................................138 16.1.3 串行时钟(SCK) .......................................................................................................138 16.1.4 从选择(NSS)............................................................................................................138 16.2 SPI0 主方式操作...............................................................................................................139 4 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 16.3 SPI0 从方式操作...............................................................................................................140 16.4 SPI0 中断源..........................................................................................................................141 16.5 串行时钟时序 .....................................................................................................................141 16.6 SPI特殊功能寄存器..........................................................................................................144 17. 定时器 .......................................................................................................................................150 17.1 定时器 0 和定时器 1............................................................................................................150 17.1.1 方式 0 ...........................................................................................................................150 17.1.2 方式 1 ...........................................................................................................................152 17.1.3 方式 2 ...........................................................................................................................152 17.1.4 方式 3 ...........................................................................................................................153 17.2 定时器 2 ..............................................................................................................................158 17.2.1 16 位自动重装载方式................................................................................................158 17.2.2 8 位自动重装载定时器方式......................................................................................159 17.3 定时器 3 ..............................................................................................................................162 17.3.1 16 位自动重装载方式................................................................................................162 17.3.2 8 位自动重装载定时器方式......................................................................................163 18. 可编程计数器阵列 ...................................................................................................................166 18.1 PCA计数器/定时器...........................................................................................................167 18.2 捕捉/比较模块 ....................................................................................................................168 18.2.1 边沿触发的捕捉方式...................................................................................................169 18.2.2 软件定时器方式...........................................................................................................170 18.2.3 高速输出方式...............................................................................................................171 18.2.4 频率输出方式...............................................................................................................172 18.2.5 8 位脉宽调制器方式..................................................................................................173 18.2.6 16 位脉宽调制器方式................................................................................................174 18.3 看门狗定时器方式..............................................................................................................175 18.3.1 看门狗定时器操作.......................................................................................................175 18.3.2 看门狗定时器的使用...................................................................................................176 18.4 PCA寄存器说明................................................................................................................177 19. 不同版本之间的行为差别........................................................................................................181 19.1 版本标识 ...........................................................................................................................181 19.2 复位表现 ...........................................................................................................................181 19.2.1 GPIO引脚的弱上拉 ...................................................................................................181 19.2.2 VDD监视器和/RST引脚.............................................................................................181 19.3 PCA计数器........................................................................................................................182 20. C2 接口.......................................................................................................................................183 20.1 C2 接口寄存器..................................................................................................................183 20.2 C2 引脚共享......................................................................................................................185 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 5 C8051F310/1 混合信号 ISP FLASH 微控制器 1 . 系统概述 C8051F31x 器件是完全集成的混合信号片上系统型 MCU 芯片。下面列出了一些主要特性, 有关某一产品的具体特性参见表 1.1。 高速、流水线结构的 8051 兼容的 CIP-51 内核(可达 25MIPS) 全速、非侵入式的在系统调试接口(片内) 带模拟多路器、真正 10 位 200 ksps 的 25 通道单端/差分 ADC(C8051F310/1/2/3)。 高精度可编程的 25MHz 内部振荡器 16KB(C8051F310/1)或 8KB(C8051F312/3/4/5)可在系统编程的 FLASH 存储器 1280 字节片内 RAM 硬件实现的SMBus/ I2C、增强型UART和增强型SPI串行接口 4 个通用的 16 位定时器 具有 5 个捕捉/比较模块和看门狗定时器功能的可编程计数器/定时器阵列(PCA) 片内上电复位、VDD 监视器和温度传感器 片内电压比较器(2) 29/25 个端口 I/O(容许 5V 输入) 具有片内上电复位、VDD 监视器、看门狗定时器和时钟振荡器的 C8051F31x 是真正能独 立工作的片上系统。FLASH 存储器还具有在系统重新编程能力,可用于非易失性数据存储, 并允许现场更新 8051 固件。用户软件对所有外设具有完全的控制,可以关断任何一个或所有 外设以节省功耗。 片内 Silicon Labs 二线(C2)开发接口允许使用安装在最终应用系统上的产品 MCU 进行非 侵入式(不占用片内资源)、全速、在系统调试。调试逻辑支持观察和修改存储器和寄存器, 支持断点、单步、运行和停机命令。在使用 C2 进行调试时,所有的模拟和数字外设都可全功 能运行。两个 C2 接口引脚可以与用户功能共享,使在系统调试功能不占用封装引脚。 每种器件都可在工业温度范围(-45℃到+85℃)内用 2.7V-3.6V 的电压工作。端口 I/O、/RST 和 JTAG 引脚都容许 5V 的输入信号电压。C8051F31x 有 32 脚 LQFP 封装和 28 脚 MLP 封装。 6 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 表 1.1 产品选择指南 MIPS(峰值) FLASH 存储器(字节) RAM(字节) 校准的内部振荡器 SMBus/12C 增强型 SPI UART 定时器(16 位) 可编程计数器阵列 数字端口 I/O 10 位 200ksps ADC 温度传感器 模拟比较器 封装 C8051F310 25 16K 1280 √ √ √ √ 4 √ 29 √ √ 2 LQFP-32 C8051F311 25 16K 1280 √ √ √ √ 4 √ 25 √ √ 2 MLP-28 C8051F312 25 8K 1280 √ √ √ √ 4 √ 29 √ √ 2 LQFP-32 C8051F313 25 8K 1280 √ √ √ √ 4 √ 25 √ √ 2 MLP-28 C8051F314 25 8K 1280 √ √ √ √ 4 √ 29 2 LQFP-32 C8051F315 25 8K 1280 √ √ √ √ 4 √ 25 2 MLP-28 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 7 C8051F310/1 混合信号 ISP FLASH 微控制器 图 1.1 C8051F310 原理框图 VDD Analog/Digital Power GND /RST/C2CK XTAL1 XTAL2 C2D Debug HW 8 16kbyte 0 FLASH POR BrownOut 5 Reset 1 C 256 byte SRAM 1K byte SRAM External Oscillator Circuit o r System Clock SFR Bus 2% e Internal Oscillator Port 0 Latch Port 1 Latch UART Timer 0,1,2,3 / RTC PCA/ WDT SMBus SPI Port 2 Latch P 0 D r v C R P O 1 S S D B r A v R P 2 D r v P 3 Port 3 Latch D r v CP0 + - VDD CP1 + - VREF Temp 10-bit 200ksps A M U ADC X VDD AIN0-AIN20 P0.0/VREF P0.1 P0.2/XTAL1 P0.3/XTAL2 P0.4/TX P0.5/RX P0.6/CNVST 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/C2D P3.1 P3.2 P3.3 P3.4 8 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 1.2 C8051F311 原理框图 VDD Analog/Digital Power GND /RST/C2CK XTAL1 XTAL2 C2D Debug HW 8 16kbyte 0 FLASH POR BrownOut External Oscillator Circuit 5 Reset 1 C o System Clock r 256 byte SRAM 1K byte SRAM SFR Bus 2% e Internal Oscillator Port 0 Latch Port 1 Latch UART Timer 0,1,2,3 / RTC PCA/ WDT SMBus SPI Port 2 Latch P 0 D r v C R P O 1 S S D B r A v R P 2 D r v P 3 Port 3 Latch D r v CP0 + - VDD CP1 + - VREF Temp 10-bit A 200ksps M U ADC X VDD AIN0-AIN20 P0.0/VREF P0.1 P0.2/XTAL1 P0.3/XTAL2 P0.4/TX P0.5/RX P0.6/CNVST 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/C2D 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 9 C8051F310/1 混合信号 ISP FLASH 微控制器 图 1.3 C8051F312 原理框图 VDD Analog/Digital Power GND /RST/C2CK XTAL1 XTAL2 C2D Debug HW 8 8kbyte 0 FLASH POR BrownOut 5 Reset 1 C 256 byte SRAM 1K byte SRAM External Oscillator Circuit o r System Clock SFR Bus 2% e Internal Oscillator Port 0 Latch Port 1 Latch UART Timer 0,1,2,3 / RTC PCA/ WDT SMBus SPI Port 2 Latch P 0 D r v C R P O 1 S S D B r A v R P 2 D r v P 3 Port 3 Latch D r v CP0 + - VDD CP1 + - VREF Te mp 10-bit 200ksps A M U ADC X VDD AIN0-AIN20 P0.0/VREF P0.1 P0.2/XTAL1 P0.3/XTAL2 P0.4/TX P0.5/RX P0.6/CNVST 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/C2D P3.1 P3.2 P3.3 P3.4 10 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 1.4 C8051F313 原理框图 VDD Analog/Digital Power GND /RST/C2CK XTAL1 XTAL2 C2D Debug HW 8 8kbyte 0 FLASH POR BrownOut 5 Reset 1 C 256 byte SRAM 1K byte SRAM External Oscillator Circuit o r System Clock SFR Bus 2% e Internal Oscillator Port 0 Latch Port 1 Latch UART Timer 0,1,2,3 / RTC PCA/ WDT SMBus SPI Port 2 Latch P 0 D r v C R P O 1 S S D B r A v R P 2 D r v P 3 Port 3 Latch D r v CP0 + - VDD CP1 + - VREF Temp 10-bit 200ksps A M U ADC X VDD AIN0-AIN20 P0.0/VREF P0.1 P0.2/XTAL1 P0.3/XTAL2 P0.4/TX P0.5/RX P0.6/CNVST 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/C2D 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 11 C8051F310/1 混合信号 ISP FLASH 微控制器 图 1.5 C8051F314 原理框图 VDD Analog/Digital Power GND /RST/C2CK XTAL1 XTAL2 C2D Debug HW 8 8kbyte 0 FLASH POR BrownOut 5 Reset 1 C 256 byte SRAM 1K byte SRAM External Oscillator Circuit o r System Clock SFR Bus 2% e Internal Oscillator Port 0 Latch Port 1 Latch UART Timer 0,1,2,3 / RTC PCA/ WDT SMBus SPI Port 2 Latch P 0 D r v C R P O 1 S S D B r A v R P 2 D r v P 3 Port 3 Latch D r v CP0 + - CP1 + - P0.0/VREF P0.1 P0.2/XTAL1 P0.3/XTAL2 P0.4/TX P0.5/RX P0.6/CNVST 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/C2D P3.1 P3.2 P3.3 P3.4 12 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 1.6 C8051F315 原理框图 VDD Analog/Digital Power GND /RST/C2CK XTAL1 XTAL2 C2D Debug HW 8 8kbyte 0 FLASH POR BrownOut 5 Reset 1 C 256 byte SRAM 1K byte SRAM External Oscillator Circuit o r System Clock SFR Bus 2% e Internal Oscillator Port 0 Latch Port 1 Latch UART Timer 0,1,2,3 / RTC PCA/ WDT SMBus SPI Port 2 Latch P 0 D r v C R P O 1 S S D B r A v R P 2 D r v P 3 Port 3 Latch D r v CP0 + - CP1 + - P0.0/VREF P0.1 P0.2/XTAL1 P0.3/XTAL2 P0.4/TX P0.5/RX P0.6/CNVST 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/C2D 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 13 C8051F310/1 混合信号 ISP FLASH 微控制器 1.1 CIP-51TM 微控制器核 1.1.1 与 8051 完全兼容 C8051F31x系列器件使用Silicon Labs的专利CIP-51 微控制器内核。CIP-51 与MCS-51TM指 令集完全兼容,可以使用标准 803x/805x的汇编器和编译器进行软件开发。CIP-51 内核具有标 准 8052 的所有外设部件,包括 4 个 16 位计数器/定时器、一个具有增强波特率配置的全双工 UART、一个增强型SPI端口、1280 字节内部RAM、128 字节特殊功能寄存器(SFR)地址空 间及 29/25 个I/O端口。 1.1.2 速度提高 CIP-51 采用流水线结构,与标准的 8051 结构相比指令执行速度有很大的提高。在一个标 准的 8051 中,除 MUL 和 DIV 以外所有指令都需要 12 或 24 个系统时钟周期,最大系统时钟 频率为 12-24MHz。而对于 CIP-51 内核,70%的指令的执行时间为 1 或 2 个系统时钟周期,只 有 4 条指令的执行时间大于 4 个系统时钟周期。 CIP-51 共有 111 条指令。下表列出了指令条数与执行时所需的系统时钟周期数的关系。 执行周期数 1 2 2/3 3 3/4 4 4/5 5 8 指令数 26 50 5 16 7 3 1 2 1 CIP-51 工作在最大系统时钟频率 25MHz 时,它的峰值速度达到 25MIPS。图 1.7 给出了 几种 8 位微控制器内核工作在最大系统时钟时峰值速度的比较关系。 图 1.7 MCU 峰值执行速度比较 25 20 15 10 5 Cygnal Microchip Philips ADuC812 CIP-51 PIC17C75x 80C51 8051 (25MHz clk) (33MHz clk) (33MHz clk) (16MHz clk) 14 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 1.1.3 增加的功能 C8051F31x 系列 MCU 在 CIP-51 内核和外设方面有几项关键性的改进,提高了整体性能, 更易于在最终应用中使用。 扩展的中断系统向 CIP-51 提供 14 个中断源(标准 8051 只有 7 个中断源),允许大量的模 拟和数字外设中断微控制器。一个中断驱动的系统需要较少的 MCU 干预,因而有更高的执行 效率。在设计一个多任务实时系统时,这些增加的中断源是非常有用的。 MCU有多达 8 个复位源:上电复位电路(POR)、一个片内VDD监视器(当电源电压低于 VRST时强制复位)、一个看门狗定时器、一个时钟丢失检测器、一个由比较器 0 提供的电压检 测器、一个软件强制复位、外部复位输入引脚和FLASH读/写错误保护复位。除了POR、复位 输入引脚及FLASH操作错误这三个复位源之外,其他复位源都可以被软件禁止。在一次上电 复位之后的MCU初始化期间,WDT可以被永久性使能。 内部振荡器在出厂时已经被校准为 24.5MHz ± 2%。器件内还集成了外部振荡器驱动电路, 允许使用晶体、陶瓷谐振器、电容、RC 或外部时钟源产生系统时钟。如果需要,时钟源可以 在运行时切换到外部振荡器。外部振荡器在低功耗系统中是非常有用的,它允许 MCU 从一个 低频率(节电)外部晶体源运行,当需要时再周期性地切换到高速(可达 25MHz)的内部振 荡器。 图 1.8 片内时钟和复位电路 VDD P0 . x P0 . y X TA L1 X TA L2 内部 振荡器 外部 振荡器 驱动 比较器0 + - C0RSEF 电源 监视器 + - 允许 上电复位 '0' 线或 时钟 丢失 检测器 EN PCA WDT EN 允许 允许 系统时钟 时钟选择 CIP-51 微控制器 内核 扩展中断系统 系统复位 (软件复位) SWRSF 复位 逻辑 FLASH 操作错误 / RST 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 15 C8051F310/1 混合信号 ISP FLASH 微控制器 1.2 片内存储器 CIP-51 有标准的 8051 程序和数据地址配置。它包括 256 字节的数据 RAM,其中高 128 字节为双映射。用间接寻址访问通用 RAM 的高 128 字节,用直接寻址访问 128 字节的 SFR 地址空间。数据 RAM 的低 128 字节可用直接或间接寻址方式访问。前 32 个字节为 4 个通用 寄存器区,接下来的 16 字节既可以按字节寻址也可以按位寻址。 C8051F31x 包含 8 或 16KB 的 FLASH 程序存储器。该存储器以 512 字节为一个扇区,可 以在系统编程,且不需特别的编程电压。图 1.9 给出了 C8051F31x 系统的存储器结构。 图 1.9 片内存储器组织 程序存储器(FLASH) C8051F310/1 0x3E00 0x3DFF 保留 16KB FLASH (在系统可编程 以512字节 为一个扇区) 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x00 数据存储器 内部数据地址空间 高128字节RAM (只能间接寻址) 特殊功能寄存器 (只能直接寻址) (直接和间接寻址) 可位寻址空间 通用寄存器 低128字节RAM (直接和间接寻址) 0x0000 0x2000 0x1 F FF C8051F312/3/4/5 保留 0xFFFF 外部数据地址空间 与0x0000~0x03FF为 相同的RAM块, 以1KB 为界回绕 16KB FLASH (在系统可编程 以512字节 为一个扇区) 0x0400 0x03FF 0x0000 XRAM - 1024字节 (只能用MOVX指令) 0x0000 16 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 1.3 片内调试电路 C8051F31x器件具有片内Silicon Labs 2线(C2)接口调试电路,支持使用安装在最终应用 系统中的产品器件进行非侵入式、全速的在系统调试。 Silicon Labs的调试系统支持观察和修改存储器和寄存器,支持断点和单步执行。不需要 额外的目标RAM、程序存储器、定时器或通信通道。在调试时所有的模拟和数字外设都正常 工作。当MCU单步执行或遇到断点而停止运行时,所有的外设(ADC和SMBus除外)都停止 运行,以保持与指令执行同步。 开发套件C8051F310DK具有开发应用代码和对C8051F31x MCU进行在系统调试所需要的 全部硬件和软件。开发套件中包括开发者工作室软件和调试器、一个集成的8051汇编器和一 个RS-232转换到C2的串行适配器。套件中还有一个目标应用板,上面有对应的MCU和一大块 样机区域。套件中还包括RS-232和C2电缆及一个墙装电源。开发套件需要一个运行Windows 95/98/Me/2000并有一个可用RS-232串口的计算机。如图1.6所示,PC机通过RS-232与串行适配 器连接。一条六英寸的扁平电缆将串行适配器和用户的应用板连接起来,使用2个C2引脚和 VDD及GND。串行适配器从应用板获取其电源。对于不能从目标板上提取足够电源的应用, 可以将套件中提供的电源直接连到串行适配器上。 对于开发和调试来说,Silicon Labs IDE接口比采用标准MCU仿真器要优越得多。标准的 MCU仿真器要使用在板仿真芯片和目标电缆,还需要在应用板上有MCU的插座。Silicon Labs 的调试环境既便于使用又能保证精确模拟外设的性能。 图1.10 开发/在系统调试示意图 WINDOWS 95/98/NT/ME/2000 Silicon Labs Integrated Development Environment RS-232 Serial Adapter C2 (x2), VDD, GND VDD GND TARGET PCB C8051F310 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 17 C8051F310/1 混合信号 ISP FLASH 微控制器 1.4 可编程数字 I/O 和交叉开关 C8051F310/2/4有29个I/O引脚(3个8位口和一个5位口);C8051F311/3/5有25个I/O引脚(3 个8位口和一个1位口)。C8051F31x端口的工作情况与标准8051相似,但有一些改进。每个端 口引脚都可以被配置为模拟输入或数字I/O。被选择作为数字I/O的引脚还可以被配置为推挽或 漏极开路输出。在标准8051中固定的“弱上拉”可以被总体禁止,这为低功耗应用提供了进 一步节电的能力。 数字交叉开关允许将内部数字系统资源映射到端口I/O引脚(见图1.11)。可通过设置交叉 开关控制寄存器将片内的计数器/定时器、串行总线、硬件中断、比较器输出以及微控制器内 部的其它数字信号配置为出现在端口I/O引脚。这一特性允许用户根据自己的特定应用选择通 用端口I/O和所需数字资源的组合。 图1.11 数字交叉开关原理框图 XBR0, XBR1, PnSKIP Registers PnMDOUT, PnMDIN Registers Highest Priority Lowest Priority 2 UART 4 SPI 2 SMBus CP0 2 Outputs CP1 2 Outputs SYSCLK PCA 6 2 T0, T1 8 P0 (P0.0-P0.7) 8 P1 (P1.0-P1.7) 8 P2 (P2.0-P2.7) 8 P3 (P3.0-P3.4) Priority Decoder 8 P0 I/O Cells P0.0 P0.7 Digital 8 P1 P1.0 Crossbar I/O Cells P1.7 8 P2 I/O Cells P2.0 P2.7 5 P3 I/O Cells P3.0 P3.4 Note: P3.1-P3.4 only available on the C8051F310 18 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 1.5 串行端口 C8051F31x系列MCU内部有一个SMBus/I2C接口、一个具有增强型波特率配置的全双工 UART和一个增强型SPI接口。每种串行总线都完全用硬件实现,都能向CIP-51产生中断,因 此需要很少的CPU干预。 1.6 可编程计数器阵列 除了4个16位的通用计数器/定时器之外,MCU中还有一个片内可编程计数器/定时器阵列 (PCA)。PCA包括一个专用的16位计数器/定时器时间基准和5个可编程的捕捉/比较模块。时 间基准的时钟可以是下面的六个时钟源之一:系统时钟/12、系统时钟/4、定时器0溢出、外部 时钟输入(ECI)、系统时钟和外部振荡源频率/8。外部时钟源对于实时时钟功能是非常有用的, 可以在使用内部振荡器驱动系统时钟的同时由外部振荡器给PCA提供时钟。 每个捕捉/比较模块都有六种工作方式:边沿触发捕捉、软件定时器、高速输出、8位或16 位脉冲宽度调制器、频率输出。此外,捕捉/比较模块4还提供看门狗定时器(WDT)功能。 在系统复位后,捕捉/比较模块4被配置并被使能为工作在WDT方式。PCA捕捉/比较模块的I/O 和外部时钟输入可以通过数字交叉开关连到端口I/O引脚。 图1.12 PCA原理框图 SYSCLK/12 SYSCLK/4 定时器0溢出 ECI SYSCLK 外部时钟/8 PCA 时钟 选择 电路 16位计数器/定时器 捕捉/比较模块0 捕捉/比较模块1 捕捉/比较模块2 捕捉/比较模块3 捕捉/比较模块4 交叉开关 端口I/O 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 19 C8051F310/1 混合信号 ISP FLASH 微控制器 1.7 10 位模/数转换器 C8051F310/1/2/3内部有一个10位SAR ADC和一个25通道差分输入多路选择器。该ADC工 作在200ksps的最大采样速率时可提供真正的10位精度,INL为±1LSB。ADC系统包含一个可 编程的模拟多路选择器,用于选择ADC的正输入和负输入。端口1~3的每个引脚都可以作为 ADC的输入;另外,片内温度传感器的输出和电源电压(VDD)也可以作为ADC的输入。用 户固件可以将ADC置于关断状态以节省功耗。 A/D转换可以有6种启动方式:软件命令、定时器0溢出、定时器1溢出、定时器2溢出、定 时器3溢出或外部转换启动信号。这种灵活性允许用软件事件、外部硬件信号或周期性的定时 器溢出信号触发转换。一次转换完成可以产生中断(如果被允许),或者用软件查询一个状态 位来判断转换结束。 窗口比较寄存器可被配置为当ADC数据位于一个规定的范围之内或之外时向控制器申请 中断。ADC可以用后台方式监视一个关键电压,当转换数据位于规定的窗口之内/外时才向控 制器申请中断。 图1.13 10位ADC原理框图 Analog Multiplexer P1.0 P1.7 P2.0 P3.1-3.4 available on C8051F310 Temp Sensor P2.7 P3.0 P3.4 VDD P1.0 23-to-1 AMUX Configuration, Control, and Data Registers 000 Start Conversion 001 010 011 100 101 AD0BUSY (W) Timer 0 Overflow Timer 2 Overflow Timer 1 Overflow CNVSTR Input Timer 3 Overflow 10-Bit (+) SAR (-) ADC ADC Data 16 Registers P1.7 P2.0 P3.1-3.4 available on C8051F310 P2.7 P3.0 P3.4 GND 22-to-1 AMUX End of Conversion Interrupt Window Compare Logic Window Compare Interrupt 20 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 1.8 比较器 C8051F31x器件内部有两个电压比较器,可以由用户软件使能/禁止和配置。端口I/O引脚 可以通过多路选择器被配置为比较器输入。如果需要,可以将两个比较器输出连到端口引脚: 一个锁存输出和/或一个未锁存的输出(异步)。比较器的响应时间是可编程的,允许用户在高 速和低功耗方式之间选择。比较器的正向和负向回差电压也是可配置的。 比较器能在上升沿、下降沿产生中断,或在两个边沿都产生中断。当MCU工作在空闲方 式时,这些中断可用于唤醒MCU。比较器0还可以被配置为复位源。图1.14给出了比较器0的 原理框图。 CMX0N1 CMX0N0 CMX0P1 CMX0P0 P1.0 P1.4 P2.0 P2.4 P1.1 P1.5 P2.1 P2.5 图1.14 比较器原理框图 CP0EN CP0OUT CP0RIF CP0FIF CP0HYP1 CP0HYP0 CP0HYN1 CP0HYN0 VDD CP0 Interrupt CP0 Rising-edge CP0 Falling-edge CP0 + CP0 - + - GND D Q SE T Q CL R D Q SE T Q CL R (SYNCHRONI ZER) Reset Decision Tree CP0RIE CP0FIE Interrupt Logic CP0 Crossbar CP0A CP0MD1 CP0MD0 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 21 C8051F310/1 混合信号 ISP FLASH 微控制器 2. 极限参数 表 2.1 极限参数* 参数 条 件 最小值 环境温度(通电情况下) -55 储存温度 -65 任何端口I/O引脚或/RST相对GND的电压 -0.3 VDD引脚相对DGND的电压 -0.3 通过VDD和GND的最大总电流 /RST或任何端口引脚的最大输出灌电流 典型值 最大值 125 150 5.8 4.2 500 100 单位 ℃ ℃ V V mA mA *注:超过这些列出的“极限参数”可能导致器件永久性损坏。长时间在最大允许值或超 过最大允许值的条件下工作可能影响器件的可靠性。 3. 总体直流电气特性 表 3.1 总体直流电气特性 -40℃到+85℃,25MHz 系统时钟(除非特别说明)。 参数 条件 数字电源电压 数字电源电流(CPU处于活动 状态) VDD=2.7V, CLK=25MHz VDD=2.7V, CLK= 1MHz VDD=2.7V, CLK=32kHz 数字电源电流(CPU不活动, 不访问FLASH) VDD=2.7V, CLK=25MHz VDD=2.7V, CLK= 1MHz VDD=2.7V, CLK=32kHz 数字电源电流(停机方式) 振荡器停止运行 RAM数据保持电源电压 额定工作温度范围 SYSCLK(系统时钟频率) TSYSH(SYSCLK高电平时间) TSYSH(SYSCLK低电平时间) †见表 9.1 ††为能使用调试功能,SYSCLK 至少应为 32kHz。 最小值 典型值 最大值 VRST 3.0 3.6 6.4 0.36 9 3.2 180 5.5 <0.1 1.5 -40 +85 0†† 25 18 18 单位 V mA mA µA mA µA µA µA V ℃ MHz ns ns 22 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 4. 引脚和封装定义 表 4.1 C8051F31x 引脚定义 引脚名称 VDD GND /RST C2CK P3.0 C2D P0.0 VREF P0.1 P0.2 XTAL1 P0.3 XTAL2 P0.4 P0.5 P0.6 CNVSTR P0.7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 引脚号 F310/2/4 F311/3/5 4 4 3 3 5 5 6 6 2 2 1 1 32 28 31 27 30 26 29 25 28 24 27 23 26 22 25 21 24 20 23 19 22 18 21 17 20 16 19 15 引脚类型 数字 I/O 数字 I/O 数字 I/O 数字 I/O 数字 I/O 模拟输入 数字 I/O 数字 I/O 模拟输入 数字 I/O 模拟输出或 数字输入 数字 I/O 数字 I/O 数字 I/O 数字 I/O 数字 I/O 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 说明 电源 地。 器件复位。内部上电复位或 VDD 监视器的漏极开路输 出。一个外部源可以通过将该引脚驱动为低电平(至少 10µs)来启动一次系统复位。 C2 开发接口的时钟信号。 端口 3.0 C2 开发接口的双向数据信号。 端口 0.0 外部 VREF 输入 端口 0.1 端口 0.2 外部时钟输入。对于晶体或陶瓷谐振器,该引脚是外部 振荡器电路的反馈输入。 端口 0.3 外部时钟输出。该引脚是晶体或陶瓷谐振器的激励驱动 器。对于 CMOS 时钟、电容或 RC 振荡器配置,该引脚 是外部时钟输入。 端口 0.4 端口 0.5 端口 0.6 ADC0 外部转换启动输入。 端口 0.7 端口 1.0 端口 1.1 端口 1.2 端口 1.3 端口 1.4 端口 1.5 端口 1.6 端口 1.7 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 23 C8051F310/1 混合信号 ISP FLASH 微控制器 引脚名称 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 P3.1 P3.2 P3.3 P3.4 引脚号 F310 18 F311 14 17 13 16 12 15 11 14 10 13 9 12 8 11 7 7 8 9 10 表 4.1 C8051F31x 引脚定义 引脚类型 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 数字 I/O 或 模拟输入 端口 2.0 端口 2.1 端口 2.2 端口 2.3 端口 2.4 端口 2.5 端口 2.6 端口 2.7 端口 3.1 端口 3.2 端口 3.3 端口 3.4 说明 24 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 4.1 LQFP-32 引脚图(顶视图) P0.1 1 P0.0 2 GND 3 VDD 4 /RST/C2CK 5 P3.0/C2D 6 P3.1 7 P3.2 8 C8051F310 / 2/4 Top View 24 P1.2 23 P1.3 22 P1.4 21 P1.5 20 P1.6 19 P1.7 18 P2.0 17 P2.1 . 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 25 C8051F310/1 混合信号 ISP FLASH 微控制器 32 PIN 1 IDENTIFIER 1 A2 b 图 4.2 LQFP-32 封装图 D D1 E1 E Table 4.2. LQFP-32 Package Dimensions MM MIN TYP MAX A - - 1.60 A1 0.05 - 0.15 A2 1.35 1.40 1.45 b 0.30 0.37 0.45 D - 9.00 - D1 - 7.00 - e - 0.80 - E - 9.00 - E1 - 7.00 - A A1 e 26 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 4.3 MLP-28 引脚图(顶视图) P0.1 1 P0.0 2 GND 3 VDD 4 /RST/C2CK 5 P3.0/C2D 6 P2.7 7 C8051F311 / 3/5 Top View 21 P1.1 20 P1.2 19 P1.3 18 P1.4 17 P1.5 16 P1.6 15 P1.7 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 27 C8051F310/1 混合信号 ISP FLASH 微控制器 图 4.4 MLPP-28 封装图 Bottom View 7 6 D2 5 D2 2 4 3 2 1 DETAIL 1 15 16 17 18 R 19 20 21 6 xe D Side View Table 4.2. MLP-28 Package Dimensions MM MIN TYP MAX A 0.80 0.90 1.00 A1 0 0.02 0.05 A2 0 0.65 1.00 A3 - 0.25 - b 0.18 0.23 0.30 D - 5.00 - D2 2.90 3.15 3.35 E - 5.00 - E2 2.90 3.15 3.35 e - 0.5 - L 0.45 0.55 0.65 N - 28 - ND - 7 - NE - 7 - R 0.09 - - AA - 0.435 - BB - 0.435 - CC - 0.18 - DD - 0.18 - e DETAIL 1 AA CC 28 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 5. 10 位 ADC(ADC0,仅限于 C8051F310/1/2/3) C8051F310/1/2/3 的 ADC0 子系统集成了两个 25 通道模拟多路选择器(合称 AMUX0)和 一个 200ksps 的 10 位逐次逼近寄存器型 ADC,ADC 中集成了跟踪保持电路和可编程窗口检 测器(见框图 5.1)。AMUX0、数据转换方式及窗口检测器都可用软件通过特殊功能寄存器来 配置。ADC0 可以工作在单端方式或差分方式,可以被配置为用于测量 P1.0~P3.4、温度传感 器输出或 VDD(相对于 P1.0~P3.4 或 GND)。只有当 ADC 控制寄存器(ADC0CN)中的 AD0EN 位被置‘1’时 ADC0 子系统才被使能。当 AD0EN 位为‘0’时,ADC0 子系统处于低功耗关 断方式。 Analog Multiplexer P1.0 P1.7 P2.0 P3.1-3.4 available on C8051F310 Temp Sensor P2.7 P3.0 P3.4 VDD P1.0 图 5.1 ADC0 功能框图 23-to-1 AMUX Configuration, Control, and Data Registers 000 Start Conversion 001 010 011 100 101 AD0BUSY (W) Timer 0 Overflow Timer 2 Overflow Timer 1 Overflow CNVSTR Input Timer 3 Overflow 10-Bit (+) SAR (-) ADC ADC Data 16 Registers P1.7 P2.0 P3.1-3.4 available on C8051F310 P2.7 P3.0 P3.4 GND 22-to-1 AMUX End of Conversion Interrupt Window Compare Logic Window Compare Interrupt 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 29 C8051F310/1 混合信号 ISP FLASH 微控制器 5.1 模拟多路选择器 模拟多路选择器(AMUX0)选择去 PGA 的正输入和负输入,P1.0~P3.4、片内温度传感 器输出和正电源(VDD)中的任何一个都可以被选择为正输入;P1.0~P3.4 和 GND 中的任何 一个都可以被选择为负输入。当 GND 被选择为负输入时,ADC0 工作在单端方式;在所有其 它时间,ADC0 工作在差分方式。ADC0 的输入通道由寄存器 AMX0P 和 AMX0N 选择(见图 5.6 和图 5.7)。 转换码的格式在单端方式和差分方式下是不同的。每次转换结束后,寄存器 ADC0H 和 ADC0L 中保存 ADC 转换结果的高字节和低字节。转换数据在寄存器对 ADC0H:ADC0L 中的 存储方式可以是左对齐或右对齐,由 AD0LJST 位(ADC0CN.)设置决定。当工作在单端方式 时,转化码为 10 位无符号整数,所测量的输入范围为 0 – VREF*1023/1024。下面是单端方式 下数据左对齐和右对齐的例子。ADC0H 和 ADC0L 寄存器中未使用的位被设置为‘0’。 输入电压 VREF*1023/1024 VREF*512/1024 VREF*256/1024 0 右对齐的 ADC0H:ADC0L (AD0LJST = 0) 0x03FF 0x0200 0x0100 0x0000 左对齐的 ADC0H:ADC0L (AD0LJST = 1) 0xFFC0 0x8000 0x4000 0x0000 当工作在差分方式时,转化码为 10 位有符号整数(2 的补码),所测量的输入范围为-VREF ~ VREF*511/512。下面是差分方式下数据左对齐和右对齐的例子。 输入电压 VREF*511/512 VREF*256/512 0 -VREF*256/512 -VREF 右对齐的 ADC0H:ADC0L (AD0LJST = 0) 0x01FF 0x0100 0x0000 0xFF00 0xFE00 左对齐的 ADC0H:ADC0L (AD0LJST = 1) 0x7FC0 0x4000 0x0000 0xC000 0x8000 需要特别注意的是,被选择为 ADC0 输入的引脚应被配置为模拟输入,并且应被数字交 叉开关跳过。要将一个端口引脚配置为模拟输入,应将 PnMDIN(n=0,1,2,3)寄存器中的对应 位置 0。为了使交叉开关跳过一个端口引脚,应将 PnSKIP(n=0,1,2)寄存器中的对应位置 1。 有关部门端口 I/O 配置的详细信息见“13. 端口输入/输出”。 30 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 5.1 温度传感器 温度传感器的典型传输函数示于图 5.2。当温度传感器被寄存器AMX0P中的AMX0P4-0 位 选中时,输出电压(VTEMP)为ADC的正输入。 图 5.2 温度传感器典型传输函数 (mV) 1200 1100 1000 900 VTEMP = 3.35*(TEMPC) + 897 mV 800 700 -50 0 50 100 (Celsius) 未经校准的温度传感器输出的线性度非常好,适合于相对温度测量(见表 5.1 的线性度指 标)。对于绝对温度测量,建议对增益和/或偏移进行校准。典型的一点校准包括下面几个步骤: 1.控制/测量环境温度(该温度必须是已知的)。 2.给器件上电,等待几秒钟使器件自热。 3.将温度传感器选择为正输入,将 GND 选择为负输入,进行一次 ADC 转换。 4.计算偏移和/或增益,并将这些计算值存入到非易失性存储器中,以备以后使用温度传 感器进行温度测量时使用。 图 5.3 示出了典型的温度传感器误差曲线(假设在 25℃进行一点校准)。注意:影响 ADC 测量精度的参数,尤其是基准电压值,也同样会影响温度测量的精度。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 31 C8051F310/1 混合信号 ISP FLASH 微控制器 5.00 4.00 3.00 2.00 1.00 0.00 -40.00 -1.00 -2.00 -3.00 -4.00 -5.00 图 5.3 一点校准的温度传感器误差(VREF = 2.40 V) -20.00 0.00 40.00 60.00 20.00 Temperature (degrees C) 5.00 4.00 3.00 2.00 1.00 0.00 80.00 -1.00 -2.00 -3.00 -4.00 -5.00 32 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 5.3 工作方式 ADC0 的最高转换速度为 200ksps。ADC0 的转换时钟由系统时钟分频得到,分频数由 ADC0CF 寄存器的 AD0SC 位决定(转换时钟为系统时钟/(AD0SC+1),0 ≤ AD0SC ≤ 31)。 5.3.1 转换启动方式 有 6 种 A/D 转换启动方式,由 ADC0CN 中的 ADC0 转换启动方式位(AD0CM2-0)的状 态决定采用哪一种方式。转换触发源有: 1.写‘1’到 ADC0CN 的 AD0BUSY 位; 2.定时器 0 溢出(即定时的连续转换); 3.定时器 2 溢出; 4.定时器 1 溢出; 5.CNVSTR 输入信号(P0.6)的上升沿; 6.定时器 3 溢出。 向 AD0BUSY 写‘1’方式提供了用软件控制 ADC0 转换的能力。AD0BUSY 位在转换期 间被置‘1’,转换结束后复‘0’。AD0BUSY 位的下降沿触发中断(当被允许时)并置位 ADC0CN 中的中断标志(AD0INT)。注意:当工作在查询方式时,应使用 ADC0 中断标志(AD0INT) 来查询 ADC 转换是否完成。当 AD0INT 位为逻辑‘1’时,ADC0 数据寄存器(ADC0H:ADC0L) 中的转换结果有效。注意:当转换源是定时器 2 溢出或定时器 3 溢出时,如果定时器 2 或定 时器 3 工作在 8 位方式,使用定时器 2/3 的低字节溢出;如果定时器 2/3 工作在 16 位方式, 则使用定时器 2/3 的高字节溢出。有关定时器配置方面的信息见“17 定时器”。 需要注意的是,CNVSTR 输入引脚还是端口引脚 P0.6。当使用 CNVSTR 输入作为转换启 动源时,P0.6 应被数字交叉开关跳过。为使交叉开关跳过 P0.6,应将寄存器 P0SKIP 中的位 6 置‘1’。有关端口 I/O 配置的详细信息,见“13 端口输入/输出”。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 33 C8051F310/1 混合信号 ISP FLASH 微控制器 5.3.2 跟踪方式 根据表 5.1,为了得到精确的转换结果,每次 ADC0 转换之前都必须有一段最小的跟踪时 间。寄存器 ADC0CN 中的 AD0TM 位控制 ADC0 的跟踪保持方式。在缺省状态,ADC0 输入 被连续跟踪(转换期间除外)。当 AD0TM 位被置‘1’时,ADC0 工作在低功耗跟踪保持方式。 在该方式,每次转换前有 3 个 SAR 时钟的跟踪时间(跟踪发生在转换启动信号有效之后)。在 低功耗跟踪保持方式下使用 CNVSTR 信号作为转换启动源时,只在 CNVSTR 输入为低电平时 跟踪;从 CNVSTR 的上升沿开始转换(见图 5.4)。当器件处于低功耗停机或休眠方式时,可 以禁止跟踪。低功耗跟踪和保持方式在 AMUX 的设置经常改变时也是很有用的,因为 ADC 有建立时间要求(见“5.3.3 建立时间要求”)。 图 5.4 10 位 ADC 跟踪和转换时序示例 CNVSTR (AD0CM[2:0]=100) A. 使用外部触发源的ADC0时序 SAR时钟 1 2 3 4 5 6 7 8 9 10 11 AD0TM=1 低功耗 或转换 跟踪 转换 低功耗方式 AD0TM=0 跟踪或转换 转换 跟踪 定时器0溢出,定时器2溢出 定时器1溢出,定时器3溢出 (AD0CM[2:0]=000, 001,010 011, 101) SAR时钟 B. 使用内部触发源的ADC0时序 1 2 3 4 5 6 7 8 9 10 11 12 13 14 AD0TM=1 SAR时钟 低功耗 或转换 跟踪 转换 1 2 3 4 5 6 7 8 9 10 11 低功耗方式 AD0TM =0 跟踪或转换 转换 跟踪 34 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 5.3.3 建立时间要求 当 ADC 输入配置发生改变时(即 AMUX0 的选择发生变化),在进行一次精确的转换之 前需要有一个最小的跟踪时间。该跟踪时间由 AMUX0 的电阻、ADC0 采样电容、外部信号源 阻抗及所要求的转换精度决定。注意:在低功耗跟踪方式,每次转换需要用三个 SAR 时钟跟 踪。对于大多数应用,三个 SAR 时钟可以满足最小跟踪时间的要求。 图 5.5 给出了单端和差分方式下等效的ADC0 输入电路,这两种电路的时间常数相等。对 于一个给定的建立精度(SA),所需要的ADC0 建立时间可以用方程 5.1 估算。当测量温度传 感器的输出或VDD(相对于GND)时,RTOTAL等于RMUX。表 5.1 给出了ADC0 的最小建立时间 要求。 方程 5.1 ADC0 建立时间要求 t = ln ⎜⎜⎝⎛ 2n SA ⎟⎟⎠⎞ × R C TOTAL SAMPLE 其中: SA 是建立精度,用一个 LSB 的分数表示(例如,建立精度 0.25 对应 1/4 LSB); t 为所需要的建立时间,以秒为单位; RTOTAL为AMUX0 电阻与外部信号源电阻之和; n 为 ADC 的分辨率,用比特表示(10)。 差分方式 MUX选择 图 5.5 ADC0 等效输入电路 单端方式 MUX选择 Px.x RMUX = 5k RCInput = RMUX * CSAMPLE Px.y RMUX = 5k MUX选择 CSAMPLE = 5 pF CSAMPLE = 5 pF Px.x RMUX = 5k RCInput = RMUX * CSAMPLE CSAMPLE = 5 pF 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 35 C8051F310/1 混合信号 ISP FLASH 微控制器 图 5.6 AMUX0P: AMUX0 正输入通道选择寄存器 R R R R/W R/W R/W R/W R/W 复位值 - - - AMX0P4 AMX0P3 AMX0P2 AMX0P1 AMX0P0 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xBB 位 7-5: 未使用。读=000b,写=忽略。 位 4-0: AMX0P4-0:AMUX0 正输入选择 AMX0P4-0 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001* 10010* 10011* 10100* 10101~11101 11110 11111 ADC0 正输入 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* 保留 温度传感器 VDD *只适用于 C8051F310/2;对于 C8051F311/3,这些选择值保留。 36 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 5.7 AMUX0N: AMUX0 负输入通道选择寄存器 R R R R/W R/W R/W R/W R/W 复位值 - - - AMX0N4 AMX0N3 AMX0N2 AMX0N1 AMX0N0 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xBA 位 7-5: 未使用。读=000b,写=忽略。 位 4-0: AMX0N4-0:AMUX0 负输入选择 AMX0N4-0 00000 00001 00010 00011 00100 00101 00110 00111 01000 01001 01010 01011 01100 01101 01110 01111 10000 10001* 10010* 10011* 10100* 10101~11101 11110 11111 ADC0 负输入 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* 保留 VREF GND(ADC 工作在单端方式) *只适用于 C8051F310/2;对于 C8051F311/3,这些选择值保留。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 37 C8051F310/1 混合信号 ISP FLASH 微控制器 图 5.8 ADC0CF: ADC0 配置寄存器 R/W R/W R/W R/W R/W R/W R/W AD0SC4 AD0SC3 AD0SC2 AD0SC1 AD0SC0 AD0LJST - 位7 位6 位5 位4 位3 位2 位1 R/W 复位值 - 11111000 位0 SFR地址: 0xBC 位 7-3: AD0SC4-0:ADC0 SAR 转换时钟周期控制位 SAR转换时钟来源于系统时钟,由下面的方程给出,其中AD0SC表示AD0SC4-0 中保存的 5 位数值,CLKSAR表示所需要的ADC0 SAR转换时钟。对SAR转换时 钟频率的要求见表 5.1。 AD0SC = SYSCLK − 1 CLK SAR 位2 AD0LJST:ADC0 左对齐选择位。 0:ADC0H:ADC0L 中的数据为右对齐。 1:ADC0H:ADC0L 中的数据为左对齐。 位 1-0: 未使用。读=00b,写=忽略。 图 5.9 ADC0H: ADC0 数据字高字节寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xBE 位 7-0: ADC0 数据字高字节。 AD0LJST = 0 时:位 7~2 为位 1 的符号扩展位,位 1~0 为 10 位 ADC0 数据的 高 2 位。 AD0LJST = 1 时:位 7~0 是 10 位 ADC0 数据的高 8 位。 图 5.10 ADC0L: ADC0 数据字低字节寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xBD 位 7-0: ADC0 数据字低字节。 AD0LJST = 0 时:位 7~0 是 10 位 ADC0 数据的低 8 位。 AD0LJST = 1 时:位 7~6 是 10 位 ADC0 数据的低 2 位,位 5~0 的读出值 总是为 0。 38 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 5.11 ADC0CN: ADC0 控制寄存器 R/W AD0EN 位7 R/W AD0TM 位6 R/W AD0INT 位5 R/W R/W AD0BUSY AD0WINT 位4 位3 R/W AD0CM2 位2 R/W AD0CM1 位1 R/W 复位值 AD0CM0 00000000 位0 SFR地址: (可位寻址) 0xE8 位 7: 位 6: 位 5: AD0EN:ADC0 使能位 0:ADC0 禁止。ADC0 处于低耗停机状态。 1:ADC0 使能。ADC0 处于活动状态,可以进行转换数据。 AD0TM:ADC0 跟踪方式位 0:正常方式:当 ADC0 被使能时,除了转换期间之外一直处于跟踪方式。 1:低功耗跟踪方式:由 AD0CM2-0 定义跟踪方式(见下面的说明)。 AD0INT:ADC0 转换结束中断标志 0:从最后一次将该位清‘0’后,ADC0 还没有完成一次数据转换。 1:ADC0 完成了一次数据转换。 位 4: AD0BUSY:ADC0 忙标志位 读 0:ADC0 转换结束或当前不在进行数据转换。AD0INT 在 AD0BUSY 的下降沿 被置‘1’。 1:ADC0 正在进行转换。 写 0:无作用。 1:若 AD0CM2-0=000b 则启动 ADC0 转换。 位 3: AD0WINT:ADC0 窗口比较中断标志 0:未发生 ADC0 窗口比较匹配。 1:发生 ADC0 窗口比较匹配。 位 2-0: AD0CM2-0:ADC0 转换启动方式选择 当 AD0TM = 0 时: 000:向 AD0BUSY 写 1 时启动 ADC0 转换。 001:定时器 0 溢出启动 ADC0 转换。 010:定时器 2 溢出启动 ADC0 转换。 011:定时器 1 溢出启动 ADC0 转换。 100:外部 CNVSTR 输入信号的上升沿启动 ADC0 转换。 101:定时器 3 溢出启动 ADC0 转换。 11x:保留。 当 AD0TM = 1 时: 000:向 AD0BUSY 写 1 时启动跟踪,持续 3 个 SAR 时钟后开始转换。 001:定时器 0 溢出启动跟踪,持续 3 个 SAR 时钟后开始转换。 010:定时器 2 溢出启动跟踪,持续 3 个 SAR 时钟后开始转换。 011:定时器 1 溢出启动跟踪,持续 3 个 SAR 时钟后开始转换。 100:ADC0 只在 CNVSTR 输入为逻辑低电平时跟踪,在 CNVSTR 的上升沿开 始转换。 101:定时器 3 溢出启动跟踪,持续 3 个 SAR 时钟后开始转换。 11x:保留。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 39 C8051F310/1 混合信号 ISP FLASH 微控制器 5.4 可编程窗口检测器 ADC 可编程窗口检测器不停地将 ADC0 输出与用户编程的极限值进行比较,并在检测到 越限条件时通知系统控制器。这在一个中断驱动的系统中尤其有效,既可以节省代码空间和 CPU 带宽又能提供快速响应时间。窗口检测器中断标志(ADC0CN 中的 AD0WINT)也可被 用于查询方式。ADC0 下限(大于)寄存器(ADC0GTH:ADC0GTL)和 ADC0 上限(小于) 寄存器(ADC0LTH:ADC0LTL)中保持比较值。注意,窗口检测器标志既可以在测量数据位 于用户编程的极限值以内时有效,也可以在测量数据位于用户编程的极限值以外时有效,这 取决于 ADC0GT 和 ADC0LT 寄存器的编程值。 图 5.12 ADC0GTH: ADC0 下限(大于)数据字高字节寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 11111111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xC4 位 7-0: ADC0 下限数据字高字节。 图 5.13 ADC0GTL: ADC0 下限(大于)数据字低字节寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 11111111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xC3 位 7-0: ADC0 下限数据字低字节。 图 5.14 ADC0LTH: ADC0 上限(小于)数据字高字节寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xC6 位 7-0: ADC0 上限数据字高字节。 图 5.15 ADC0LTL: ADC0 上限(小于)数据字低字节寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xC5 位 7-0: ADC0 上限数据字低字节。 40 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 5.4.1 单端方式下的窗口检测器 图 5.16 给出了单端方式下数据右对齐窗口比较的两个例子。左边的例子所使用的极限值 为:ADC0LTH:ADC0LTL = 0x0080 和 ADC0GTH:ADC0GTL = 0x0040;右边的例子所使用的 极限值为:ADC0LTH:ADC0LTL = 0x0040 和 ADC0GTH:ADC0GTL = 0x0080。在单端方式, 转换码是 10 位无符号整数,对应的电压范围为 0 ~ VREF*1023/1024。对于左边的例子,如果 ADC0 转换结果数据字位于由 ADC0GTH:ADC0GT 和 ADC0LTH:ADC0LTL 定义的范围之内 (即 0x0040 < ADC0H:ADC0L < 0x0080),则会产生一个 AD0WINT 中断。对于右边的例子, 如果 ADC0 转换结果数据字位于由 ADC0GT 和 ADC0LT 定义的范围之外(即 ADC0H:ADC0L < 0x0040 或 ADC0H:ADC0L > 0x0080),则会产生一个 AD0WINT 中断。图 5.176 给出了单端 方式下数据左对齐窗口比较的例子。 图 5.16 ADC 窗口中断示例(单端方式右对齐数据) ADC0H:ADC0L Input Voltage (Px.x - AGND) VREF x (1023/1024) 0x03FF VREF x (128/1024) VREF x (64/1024) 0 x00 81 0 x00 80 0x007F 0 x00 41 0 x00 40 0x003F 0 0 x00 00 AD0 WI NT not affected ADC0H:AD C0 L Input Voltage (Px.x - AGND) VREF x (1023/1024) 0x03FF ADC0LTH:ADC0LTL VREF x (128/1024) AD0W INT =1 ADC0GTH:ADC0GTL VREF x (64/1024) 0x0081 0x0080 0x007F 0x0041 0x0040 0x003F AD0 WI NT not affected 0 0x0000 AD0WINT=1 ADC0GTH:ADC0GTL AD0W INT not affected ADC0LTH:ADC0LTL AD0WINT=1 图 5.17 ADC 窗口中断示例(单端方式左对齐数据) ADC0H:ADC0L Input Voltage (Px.x - AGND) VREF x (1023/1024) 0xFFC0 VREF x (128/1024) VREF x (64/1024) 0x2100 0x2000 0x1FC0 0x1040 0x1000 0x0FC0 ADC0H:ADC0L Input Voltage (Px.x - AGND) VREF x (1023/1024) 0xFFC0 AD0WINT not affected ADC0LTH :A DC0LTL AD0W INT=1 ADC0GTH:ADC0GTL VREF x (128/1024) VREF x (64/1024) 0x2100 0x2000 0x1FC0 0x1040 0x1000 0x0FC0 AD0W INT=1 ADC0GTH:ADC0GTL AD0W INT not affected ADC0LTH:ADC0LTL 0 0x0000 AD0WINT not affected 0 0x0000 AD0W INT=1 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 41 C8051F310/1 混合信号 ISP FLASH 微控制器 5.4.2 差分方式下的窗口检测器 图 5.18 给出了差分方式下数据右对齐窗口比较的两个例子。左边的例子所使用的极限值 为:ADC0LTH:ADC0LTL = 0x0040(+64d)和 ADC0GTH:ADC0GTL = 0xFFFF(-1d);右边 的例子所使用的极限值为:ADC0LTH:ADC0LTL = 0xFFFF(-1d)和 ADC0GTH:ADC0GTL = 0x0040(+64d)。在差分方式,转换码是 10 位有符号整数(2 的补码),对应的电压范围为-VREF ~ VREF*511/512。对于左边的例子,如果 ADC0 转换结果数据字(ADC0H:ADC0L)位于由 ADC0GTH:ADC0GT 和 ADC0LTH:ADC0LTL 定 义 的 范 围 之 内 ( 即 0xFFFF ( -1d ) < ADC0H:ADC0L< 0x0040(+64d)),则会产生一个 AD0WINT 中断。对于右边的例子,如果 ADC0 转换结果数据字(ADC0H:ADC0L)位于由 ADC0GT 和 ADC0LT 定义的范围之外(即 ADC0H:ADC0L < 0xFFFF(-1d)或 ADC0H:ADC0L > 0x0040(+64d)),则会产生一个 AD0WINT 中断。 图 5.18 ADC 窗口比较示例(差分方式右对齐数据) ADC0H:ADC0L Input Voltage (Px.x - Px.x) VREF x (511/512) 0x01FF VREF x (64/512) VREF x (-1/512) 0x0041 0x0040 0x003F 0x0000 0xF FFF 0xFFFE -VREF 0x0200 AD0W INT not affected ADC0LT H:ADC 0LTL AD0WINT=1 ADC0G TH:ADC0GTL ADC 0H: ADC0L Input Voltage (Px.x - Px.x) VREF x (511/512) 0x01FF VREF x (64/512) VREF x (-1/512) 0x 004 1 0x 004 0 0x003F 0x 000 0 0xFFFF 0xFFFE AD0W INT not affected -VREF 0x 020 0 AD0W INT=1 ADC0GTH:ADC0GTL AD0WINT not affected ADC0LTH:ADC0LT L AD0W INT=1 42 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 5.19 ADC 窗口比较示例(差分方式左对齐数据) ADC0H:ADC0L Input Voltage (Px.x - Px.x) VREF x (511/512) 0x7FC0 VREF x (64/512) VREF x (-1/512) 0x1040 0x1000 0x0F C0 0x0000 0xFFC0 0xFF80 -VREF 0x8000 AD0W INT not affected ADC0LT H:ADC 0LTL AD0WINT=1 ADC0G TH:ADC0GTL ADC 0H: ADC0L Input Voltage (Px.x - Px.y) VREF x (511/512) 0x7FC0 VREF x (64/512) VREF x (-1/512) 0x 104 0 0x 100 0 0x0FC0 0x 000 0 0xFFC0 0xFF 80 AD0W INT not affected -VREF 0x 800 0 AD0W INT=1 ADC0GTH:ADC0GTL AD0WINT not affected ADC0LTH:ADC0LT L AD0W INT=1 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 43 C8051F310/1 混合信号 ISP FLASH 微控制器 表 5.1 ADC0 电气特性 VDD=3.0V, VREF=2.40V(REFSL=0), -40oC到+85oC(除非特别说明) 参数 条件 最小值 典型值 直流精度 分辨率 10 积分非线性 ±0.5 微分非线性 保证单调 ±0.5 偏移误差 -12 1 满度误差 差分方式 -15 -5 偏移温度系数 3.6 动态性能(10kHz 正弦波差分输入,满度值的 0 到-1dB,200ksps) 信号与噪声加失真比 53 55.5 总谐波失真 到 5 次谐波 -67 无失真动态范围 78 转换速率 SAR 转换时钟 转换时间(SAR 时钟数) 10 跟踪/保持捕获时间 300 转换速率 模拟输入 输入电压范围 输入电容 温度传感器 0 5 线性度 注 1,2 ±0.5 增益 偏移 电源指标 注 1,2 注 1,2(温度=0℃) 3350 ±10 897±31 电 源 电 流 ( VDD 给 ADC0 供电) 工作方式,200ksps 电源抑制比 400 ±0.3 最大值 ±1 ±1 +12 +5 3 200 VREF 900 单位 位 LSB LSB LSB LSB ppm/℃ dB dB dB MHz 时钟 ns ksps V pF ℃ µV/℃ mV µA mV/V 注 1:代表偏离平均值一个标准偏差。 注 2:包括 ADC 偏移、增益和线性度变化引起的误差。 44 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 6. 电压基准(仅限于 C8051F310/1/2/3) C8051F310/1/2/3 的电压基准 MUX 可以被配置为连接到外部电压基准或电源电压 VDD (见图 6.1)。基准控制寄存器 REF0CN 中的 REFSL 位用于选择基准源。选择使用外部基准时, REFSL 位应被设置‘0’;选择 VDD 作为基准源时,REFSL 应被置‘1’。 REF0CN 中的 BIASE 位控制内部偏置电压发生器。ADC、温度传感器和内部振荡器都要 使用偏置电压发生器提供的偏置电压。当这些外设中的任何一个被使能时,BIASE 位被自动 置‘1’,也可以通过向 REF0CN 中的 BIASE 位写‘1’来使能偏置电压发生器,见图 6.2 对 REF0CN 寄存器的详细说明。表 6.1 给出了电压基准电路的电气特性。 注意:端口引脚 P0.0 用作外部 VREF 输入。当使用外部电压基准时,P0.0 应被配置为模 拟输入并被数字交叉开关跳过。为了将 P0.0 配置为模拟输入,应将 P0MDIN 寄存器的位 0 设 置为‘0’。为使交叉开关跳过 P0.0,应将 P0SKIP 寄存器的位 0 置‘1’。有关端口 I/O 配置的 详细信息,见“13 端口输入/输出”。 C8051F310/1/2/3 的内部温度传感器接到 ADC0 的正输入多路选择器(见“5.1 模拟多路 选择器”)。REF0CN 中的 TEMPE 位用于使能/禁止温度传感器。当被禁止时,温度传感器为 缺省的高阻状态,此时对温度传感器的任何 ADC0 测量结果都是无意义的。 图 6.1 电压基准功能框图 REF0CN VDD 外部电压 R1 基准电路 GND VREF EN 偏压发生器 IOSCEN EN 温度传感器 0 VDD 1 去ADC和 内部振荡器 去模拟多路器 内部VREF (去ADC) 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 45 C8051F310/1 混合信号 ISP FLASH 微控制器 图 6.2 REF0CN: 电压基准控制寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - - - - REFSL TEMPE BIASE - 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xD1 位 7-4: 未用。读 = 0000b,写 = 忽略。 位 3: REFSL:电压基准选择 0:VREF 引脚输入作为电压基准。 1:VDD 作为电压基准。 位 2: TEMPE:温度传感器使能位 0:内部温度传感器关闭。 1:内部温度传感器工作。 位 1: BIASE:内部模拟偏压发生器使能位 0:内部偏压发生器关闭。 1:内部偏压发生器工作(使用 ADC 时该位必须为‘1’)。 位 0: 未用。读 = 0b,写 = 忽略。 表 6.1 外部电压基准电路的电气特性 VDD = 3.0V, -40℃到+85℃(除非特别说明) 参数 条 件 输入电压范围 输入电流 采样速率 = 200ksps; VREF = 3.0V 最小值 0 典型值 12 最大值 VDD 单位 V µA 46 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 7. 比较器 C8051F31x 器件内部有 2 个可编程电压比较器:比较器 0 示于图 7.1,比较器 1 示于图 7.2。 两个比较器在工作上完全相同,只有以下两点差别:1)它们的输入选择不同;2)比较器 0 可以用作复位源。 比较器的响应时间和回差电压都是可编程的。比较器有一个模拟输入多路器和两个可以 通过交叉开关接到外部引脚的输出:一个同步“锁存”输出(CP0、CP1)和一个异步“直接” 输出(CP0A、CP1A)。即使在系统时钟停止时,CP0A 信号仍然可用,这就允许比较器在器 件处于停机方式时工作并产生输出。当被分配了端口引脚时,比较器的输出可以被配置为漏 极开路或推挽方式。比较器 0 可以被用作复位源(见 9.5 比较器复位)。 比较器 0 的输入用 CPT0MX 寄存器(图 7.5)来选择。CMX0P1 和 CMX0P0 位选择比较 器 0 的正输入;CMX0N1 和 CMX0N0 位选择比较器 0 的负输入。比较器 1 的输入用 CPT1MX 寄存器(图 7.8)来选择。CMX1P1 和 CMX1P0 位选择比较器 1 的正输入;CMX1N1 和 CMX1N0 位选择比较器 1 的负输入。 注意:被选择为比较器输入的引脚应被配置为模拟输入(通过端口配置寄存器),交叉开 关应被配置为跳过这些引脚,有关端口配置的详细信息见“13.3 通用端口 I/O”。 图 7.1 比较器 0 功能框图 CMX0N1 CMX0N0 CP0EN CP0OUT CP0RIF CP0FIF CP0HYP1 CP0HYP0 CP0HYN1 CP0HYN0 VDD CP0 Interrupt CMX0P1 CMX0P0 P1.0 P1.4 P2.0 P2.4 P1.1 P1.5 P2.1 P2.5 CP0 + CP0 - CP0 Rising-edge CP0 Falling-edge + - GND D Q SE T Q CL R D Q SE T Q CL R (SYNCHRONI ZER) Reset Decision Tree Interrupt Logic CP0 Crossbar CP0A CP0RIE CP0FIE CP0MD1 CP0MD0 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 47 C8051F310/1 混合信号 ISP FLASH 微控制器 比较器的输出可以被软件查询,可以作为中断源,也可以被连到端口引脚。当被连到端 口引脚时,比较器的输出可以是与系统时钟同步的或者是不同步的。即使在停机方式(系统 时钟停止),异步输出信号仍然可用。当被禁止时,比较器输出(如果已通过交叉开关分配了 端口 I/O 引脚)的缺省值为逻辑低电平,电源电流降到小于 100 nA。有关通过交叉开关配置 比较器输出的详细信息见“13.1 优先权交叉开关译码器”。比较器的输入可以承受-0.25V 到 (VDD) + 0.25V 的外部驱动电压而不至损坏或发生工作错误。表 7.1 给出了比较器的电气特性。 可以通过对寄存器 CPTnMD(见图 7.6 和图 7.9)编程来设置比较器的响应时间。选择较 长的响应时间可以减小比较器消耗的电流。见表 7.1 给出的比较器电气特性。 图 7.2 比较器 1 功能框图 CMX1N1 CMX1N0 CMX1P1 CMX1P0 P1.2 P1.6 P2.2 P2.6 P1.3 P1.7 P2.3 P2.7 CP1EN CP1OUT CP1RIF CP1FIF CP1HYP1 CP1HYP0 CP1HYN1 CP1HYN0 VDD CP1 Interrupt CP1 Rising-edge CP1 Falling-edge CP1 + CP1 - + - GND SET DQ Q CL R SET DQ Q CLR (S YNCHRONIZ ER) Reset Decision Tree CP1RIE CP1FIE Interrupt Logic CP1 Crossbar CP1A CP1MD1 CP1MD0 48 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 7.3 比较器回差电压曲线 CP0+ VIN+ VIN- CP0- + CP0 _ 电路配置 OUT 正向回差电压 (用CP0HYP 位编程) VIN- 输入 VIN+ 负向回差电压 (用CP0HYN 位编程) VOH 输出 VOL 正向回差禁止 负向回差禁止 最大正向回差电压 最大负向回差电压 比较器的回差电压可以通过比较器控制寄存器(CPTnCN)用软件编程。用户既可以对回 差电压值(这里指输入电压)编程,也可以对门限电压两侧的正向和负向回差对称度编程。 使用比较器控制寄存器 CPTnCN(见图 7.4 和图 7.7)中的位 3-0 对比较器的回差值进行 编程。负向回差电压值由 CPnHYN 位的设置决定。如图 7.3 所示,可以设置 20mV、10mV 或 5mV 的负向回差电压值,或者禁止负向回差电压。类似地,通过编程 CPnHYP 位设置正向回 差电压值。 在比较器输出的上升沿和下将沿都可以产生中断。比较器的下降沿置‘1’CPnFIF 中断标 志,比较器的上升沿置‘1’CPnRIF 中断标志。这些位一旦被置‘1’,将一直保持‘1’状态 直到被软件清除。可以在任意时刻通过读取 CPnOUT 位得到比较器的输出状态。通过置‘1’ CPnEN 位来使能比较器,通过将该位清‘0’来禁止比较器。 注意:在对比较器上电或改变比较器的回差电压或响应时间控制位时,可能产生假上升 沿或下降沿。建议在比较器被使能或方式位发生变化后经过一段延时将上升沿和下降沿标志 清 0。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 49 C8051F310/1 混合信号 ISP FLASH 微控制器 图 7.4 CPT0CN: 比较器 0 控制寄存器 R/W R R/W R/W R/W R/W R/W R/W 复位值 CP0EN 位7 位 7: CP0OUT CP0RIF CP0FIF 位6 位5 位4 CP0EN:比较器 0 使能位 CP0HYP1 CP0HYP0 CP0HYN1 CP0HYN0 00000000 位3 位2 位1 位0 SFR地址: 0x9B 0:比较器 0 禁止。 1:比较器 0 使能。 位 6: CP0OUT:比较器 0 输出状态标志 0:电压值 CP0+ < CP0-。 1:电压值 CP0+ > CP0-。 位 5: CP0RIF:比较器 0 上升沿中断标志 0:自该标志位被清除后,没有发生过比较器 0 上升沿中断。 1:自该标志位被清除后,发生了比较器 0 上升沿中断。 位 4: CP0FIF:比较器 0 下降沿中断标志 0:自该标志位被清除后,没有发生过比较器 0 下降沿中断。 1:自该标志位被清除后,发生了比较器 0 下降沿中断。 位 3-2: CP0HYP1-0:比较器 0 正向回差电压控制位 00:禁止正向回差电压。 01:正向回差电压= 5mV。 10:正向回差电压= 10mV。 11:正向回差电压= 20mV。 位 1-0: CP0HYN1-0:比较器 0 负向回差电压控制位 00:禁止负向回差电压。 01:负向回差电压= 5mV。 10:负向回差电压= 10mV。 11:负向回差电压= 20mV。 50 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 7.5 CPT0MX: 比较器 0 MUX 选择寄存器 R/W R/W R/W R/W R/W R/W - - CMX0N1 CMX0N0 - - 位7 位6 位5 位4 位3 位2 位 7-6: 未用。读 = 00b,写 = 忽略。 位 5-4: CMX0N1-0: 比较器 0 负输入 MUX 选择 这两位选择作为比较器 0 负输入的端口引脚。 CMX0N1 0 0 1 1 CMX0N0 0 1 0 1 比较器负输入 P1.1 P1.5 P2.1 P2.5 位 3-2: 未用。读 = 00b,写 = 忽略。 位 1-0: CMX0P1-0: 比较器 0 正输入 MUX 选择 这两位选择作为比较器 0 正输入的端口引脚。 CMX0P1 0 0 1 1 CMX0P0 0 1 0 1 比较器正输入 P1.0 P1.4 P2.0 P2.4 R/W CMX0P1 位1 R/W CMX0P0 位0 复位值 00000000 SFR地址: 0x9F 图 7.6 CPT0MD: 比较器方式选择寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - - CP0RIE CP0FIE - - CP0MD1 CP0MD0 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x9D 位 7-6: 未用。读 = 00b,写 = 忽略。 位 5: CP0RIE:比较器 0 上升沿中断允许 0:比较器 0 上升沿中断禁止 1:比较器 0 上升沿中断允许 位 4: CP0FIE:比较器 0 下降沿中断允许 0:比较器 0 下降沿中断禁止 1:比较器 0 下降沿中断允许 位 3-2: 未用。读 = 00b,写 = 忽略。 位 1-0: CP0MD1-0:比较器 0 方式选择 这两位选择比较器 0 的响应时间。 方式 0 1 2 3 CP0MD1 0 0 1 1 CP0MD0 0 1 0 1 CP0 响应时间(典型值) 最快响应时间 — — 最慢响应时间 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 51 C8051F310/1 混合信号 ISP FLASH 微控制器 图 7.7 CPT1CN: 比较器 1 控制寄存器 R/W R R/W R/W R/W R/W R/W R/W 复位值 CP1EN 位7 位 7: CP1OUT CP1RIF CP1FIF 位6 位5 位4 CP1EN:比较器 1 使能位 CP1HYP1 CP1HYP0 CP1HYN1 CP1HYN0 00000000 位3 位2 位1 位0 SFR地址: 0x9A 0:比较器 1 禁止。 1:比较器 1 使能。 位 6: CP1OUT:比较器 1 输出状态标志 0:电压值 CP1+ < CP1-。 1:电压值 CP1+ > CP1-。 位 5: CP1RIF:比较器 1 上升沿中断标志 0:自该标志位被清除后,没有发生过比较器 1 上升沿中断。 1:自该标志位被清除后,发生了比较器 1 上升沿中断。 位 4: CP1FIF:比较器 1 下降沿中断标志 0:自该标志位被清除后,没有发生过比较器 1 下降沿中断。 1:自该标志位被清除后,发生了比较器 1 下降沿中断。 位 3-2: CP1HYP1-0:比较器 1 正向回差电压控制位 00:禁止正向回差电压。 01:正向回差电压= 5mV。 10:正向回差电压= 10mV。 11:正向回差电压= 20mV。 位 1-0: CP1HYN1-0:比较器 1 负向回差电压控制位 00:禁止负向回差电压。 01:负向回差电压= 5mV。 10:负向回差电压= 10mV。 11:负向回差电压= 20mV。 52 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 7.8 CPT1MX: 比较器 1 MUX 选择寄存器 R/W R/W R/W R/W R/W R/W - - CMX1N1 CMX1N0 - - 位7 位6 位5 位4 位3 位2 位 7-6: 未用。读 = 00b,写 = 忽略。 位 5-4: CMX1N1-0: 比较器 1 负输入 MUX 选择 这两位选择作为比较器 1 负输入的端口引脚。 CMX1N1 0 0 1 1 CMX1N0 0 1 0 1 比较器负输入 P1.3 P1.7 P2.3 P2.7 位 3-2: 未用。读 = 00b,写 = 忽略。 位 1-0: CMX1P1-0: 比较器 1 正输入 MUX 选择 这两位选择作为比较器 1 正输入的端口引脚。 CMX1P1 0 0 1 1 CMX1P0 0 1 0 1 比较器正输入 P1.2 P1.6 P2.2 P2.6 R/W CMX1P1 位1 R/W CMX1P0 位0 复位值 00000000 SFR地址: 0x9E 图 7.6 CPT1MD: 比较器方式选择寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - - CP1RIE CP1FIE - - CP1MD1 CP1MD0 00000010 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x9C 位 7-6: 未用。读 = 00b,写 = 忽略。 位 5: CP1RIE:比较器 1 上升沿中断允许 0:比较器 1 上升沿中断禁止 1:比较器 1 上升沿中断允许 位 4: CP1FIE:比较器 1 下降沿中断允许 0:比较器 1 下降沿中断禁止 1:比较器 1 下降沿中断允许 位 3-2: 未用。读 = 00b,写 = 忽略。 位 1-0: CP1MD1-0:比较器 1 方式选择 这两位选择比较器 1 的响应时间。 方式 0 1 2 3 CP1MD1 0 0 1 1 CP1MD0 0 1 0 1 CP1 响应时间(典型值) 最快响应时间 — — 最慢响应时间 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 53 C8051F310/1 混合信号 ISP FLASH 微控制器 表 7.1 比较器电气特性 VDD=3.0V, -40℃到+85℃(除非特别说明)。 所有指标都适用于比较器 0 和比较器 1,除非特别说明。 参数 条件 最小值 典型值 最大值 响应时间: (CP0+) - (CP0-) = 100mV 方式 0,Vcm†=1.5V (CP0+) - (CP0-) = -100mV 响应时间: (CP0+) - (CP0-) = 100mV 方式 1,Vcm†=1.5V (CP0+) - (CP0-) = -100mV 响应时间: (CP0+) - (CP0-) = 100mV 方式 2,Vcm†=1.5V (CP0+) - (CP0-) = -100mV 响应时间: (CP0+) - (CP0-) = 100mV 方式 3,Vcm†=1.5V (CP0+) - (CP0-) = -100mV 共模抑制比 正向回差电压 1 CP0HYP1-0 = 00 正向回差电压 2 CP0HYP1-0 = 01 正向回差电压 3 CP0HYP1-0 = 10 正向回差电压 4 CP0HYP1-0 = 11 负向回差电压 1 CP0HYN1-0 = 00 负向回差电压 2 CP0HYN1-0 = 01 负向回差电压 3 CP0HYN1-0 = 10 负向回差电压 4 CP0HYN1-0 = 11 反相或同相输入电压 范围 输入电容 输入偏置电流 输入偏移电压 电源 电源抑制比 上电时间 方式 0 电源电流(DC) 方式 1 方式 2 方式 3 †Vcm是CP0+和CP0-上的共模电压。 2 5 12 2 5 12 -0.25 -5 100 250 175 500 320 1100 1050 5200 1.5 4 0 1 5 7 10 13 20 25 0 1 5 7 10 13 20 25 VDD+0.25 7 0.001 +5 0.1 1 10 7.6 20 3.2 10 1.3 5 0.4 2.5 单位 ns ns ns ns ns ns ns ns mV/V mV mV mV mV mV mV mV mV V pF nA mV mV/V µS µA µA µA µA 54 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 8. CIP-51 微控制器 MCU系统控制器的内核是CIP-51 微控制器。CIP-51 与MCS-51TM指令集完全兼容,可以 使用标准 803x/805x的汇编器和编译器进行软件开发。该系列MCU具有标准 8051 的所有外设 部件,包括 4 个 16 位的计数器/定时器(详见第 17 章)、一个增强型全双工UART(详见第 15 章)、一个增强型SPI(详见第 16 章)、256 字节内部RAM、128 字节特殊功能寄存器(SFR) 地址空间及 29 个端口I/O(详见第 13 章)。CIP-51 还包含片内调试硬件(详见第 19 章)与模 拟和数字子系统直接接口,在一个集成电路内提供了完全的数据采集或控制系统解决方案。 CIP-51 微控制器内核除了具有标准 8051 的组织结构和外设以外,另有增加的定制外设和 功能,大大增强了它的处理能力(见图 8.1 的原理框图)。CIP-51 具有下列特点: – 与 MCS-51 指令集完全兼容 – 在 25MHz 时钟时最大速度为 25MIPS – 0 到 25MHz 的时钟频率 – 256 字节内部 RAM – 29 个端口 I/O – 扩展的中断处理系统 – 复位输入 – 电源管理方式 – 片内调试逻辑 – 程序和数据存储器安全 图 8.1 CIP-51 原理框图 数据总线 数据总线 数据总线 累加器 TMP1 TMP2 PSW ALU B 寄存器 堆栈指针 SRAM 地址寄存器 SRAM (256 X 8) 复位 时钟 停机 空闲 数据总线 缓冲器 D8 数据指针 D8 PC 增量器 程序计数器 程序地址寄存器 控制 逻辑 流水线 电源控制 寄存器 D8 SFR D8 总线 接口 D8 存储器 A16 接口 D8 中断接口 D8 SFR 地址 SFR 控制 SFR 写数据 SFR 读数据 存储器地址 存储器控制 存储器写数据 存储器读数据 系统中断 仿真中断 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 55 C8051F310/1 混合信号 ISP FLASH 微控制器 性能 CIP-51采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高。在一个标准 的8051中,除MUL和DIV以外所有指令都需要12或24个系统时钟周期,并且通常最大系统时 钟频率为12 MHz。而对于CIP-51内核,70%的指令的执行时间为1或2个系统时钟周期,没有 执行时间超过8个系统时钟周期的指令。 CIP-51 工作在最大系统时钟频率 25MHz 时,它的峰值速度达到 25MIPS。CIP-51 共有 111 条指令。下表列出了指令条数与执行时所需的系统时钟周期数的关系。 执行周期数 1 2 2/3 3 3/4 4 4/5 5 8 指令数 26 50 5 16 7 3 1 2 1 编程和调试支持 对 FLASH 程序存储器的在系统编程和与片内调试支持逻辑的通信是通过 Silicon Labs 2 线开发接口(C2)实现的。注意,可以在用户软件中使用 MOVC 和 MOVX 指令对可再编程 的 FLASH 读和写,每次读或写一个字节。这一特性允许将程序存储器用于非易失性数据存储 以及在软件控制下更新代码。 片内调试逻辑支持全速的在系统调试,允许设置硬件断点,支持开始、停止和单步执行 (包括单步通过中断服务程序)命令,支持检查程序调用堆栈及读/写寄存器和存储器。这种 片内调试方法完全是非侵入式的,不需要额外的目标 RAM、堆栈、定时器或其它片内资源。 有关 C2 接口的详细信息见“19. C2 接口”。 CIP-51 有 Silicon Labs 和第三方供应商的开发工具支持。Silicon Labs 提供一个集成开发环 境(IDE),包括编辑器、宏汇编器、调试器和编程器。IDE 的调试器和编程器与 CIP-51 之间 通过 C2 接口,提供快速和有效的在系统编程和调试。也有第三方的宏汇编器和 C 编译器可用。 8.1 指令集 CIP-51 系统控制器的指令集与标准MCS-51TM指令集完全兼容,可以使用标准 8051 的开 发工具开发CIP-51 的软件。所有的CIP-51 指令在二进制码和功能上与同类的MCS-51TM产品完 全等价,包括操作码、寻址方式和对PSW标志的影响,但是指令时序与标准 8051 不同。 8.1.1 指令和 CPU 时序 在很多的 8051 产品中,机器周期和时钟周期是不同的,机器周期的长度在 2 到 12 个时 钟周期之间。但是 CIP-51 只基于时钟周期,所有指令时序都以时钟周期计算。 由于 CIP-51 采用了流水线结构,大多数指令执行所需的时钟周期数与指令的字节数一致。 条件转移指令在不发生转移时的执行周期数比发生转移时少一个。表 8.1 给出了 CIP-51 指令 一览表,包括每条指令的助记符、字节数和时钟周期数。 8.1.2 MOVX 指令和程序存储器 MOVX 指令通常用于访问外部数据存储器(注:C8051F31x 不支持外部数据或程序存储 器)。在 CIP-51 中,MOVX 指令可用于访问片内 XRAM 或片内 FLASH 程序存储器。这一特 性为 CIP-51 提供了由用户程序更新程序代码和将程序存储器空间用于非易失性数据存储的机 制,详见“10. FLASH 存储器”。 56 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 助记符 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data INC A INC Rn INC direct INC @Ri DEC A DEC Rn DEC direct DEC @Ri INC DPTR MUL AB DIV AB DA A ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ORL A,Rn ORL A,direct ORL A,@Ri ORL A,#data ORL direct,A ORL direct,#data XRL A,Rn XRL A,direct XRL A,@Ri XRL A,#data XRL direct,A XRL direct,#data CLR A CPL A RL A RLC A 表 8.1 CIP-51 指令集 功能说明 算术操作类指令 寄存器加到累加器 直接寻址字节加到累加器 间址 RAM 内容加到累加器 立即数加到累加器 寄存器加到累加器(带进位) 直接寻址字节加到累加器(带进位) 间址 RAM 加到累加器(带进位) 立即数加到累加器(带进位) 累加器减去寄存器(带借位) 累加器减去直接字节(带借位) 累加器减去间址 RAM(带借位) 累加器减去立即数(带借位) 累加器加 1 寄存器加 1 直接寻址字节加 1 间址 RAM 加 1 累加器减 1 寄存器减 1 直接寻址字节减 1 间址 RAM 减 1 数据地址加 1 累加器与寄存器 B 相乘 累加器除以寄存器 B 累加器十进制调整 逻辑操作类指令 寄存器“与”到累加器 直接寻址字节“与”到累加器 间址 RAM“与”到累加器 立即数“与”到累加器 累加器“与”到直接寻址字节 立即数“与”到直接寻址字节 寄存器“或”到累加器 直接寻址字节“或”到累加器 间址 RAM“或”到累加器 立即数“或”到累加器 累加器“或”到直接寻址字节 立即数“或”到直接寻址字节 寄存器“异或”到累加器 直接寻址字节“异或”到累加器 间址 RAM“异或”到累加器 立即数“异或”到累加器 累加器“异或”到直接寻址字节 立即数“异或”到直接寻址字节 累加器清零 累加器求反 累加器循环左移 带进位的累加器循环左移 字节数 时钟 周期数 1 1 2 2 1 2 2 2 1 1 2 2 1 2 2 2 1 1 2 2 1 2 2 2 1 1 1 1 2 2 1 2 1 1 1 1 2 2 1 2 1 1 1 4 1 8 1 1 1 1 2 2 1 2 2 2 2 2 3 3 1 1 2 2 1 2 2 2 2 2 3 3 1 1 2 2 1 2 2 2 2 2 3 3 1 1 1 1 1 1 1 1 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 57 C8051F310/1 混合信号 ISP FLASH 微控制器 助记符 RR A RRC A MOV A,Rn MOV A,direct MOV A,@Ri MOV A,#data MOV Rn,A MOV Rn,direct MOV Rn,#data MOV direct,A MOV direct,Rn MOV direct,direct MOV direct,@Ri MOV direct,#data MOV @Ri,A MOV @Ri,direct MOV @Ri,#data MOV DPTR,#data16 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A PUSH direct POP direct XCH A,Rn XCH A,direct XCH A,@Ri XCHD A,@Ri SWAP A CLR C CLR bit SETB C SETB bit CPL C CPL bit ANL C,bit ANL C,/bit ORL C,bit ORL C,/bit MOV C,bit MOV bit,C JC rel JNC rel JB bit,rel JNB bit,rel JBC bit,rel 功能说明 累加器循环右移 带进位的累加器循环右移 数据传送类指令 寄存器传送到累加器 直接寻址字节传送到累加器 间址 RAM 传送到累加器 立即数传送到累加器 累加器传送到寄存器 直接寻址字节传送到寄存器 立即数传送到寄存器 累加器传送到直接寻址字节 寄存器传送到直接寻址字节 直接寻址字节传送到直接寻址字节 间址 RAM 传送到直接寻址字节 立即数传送到直接寻址字节 累加器传送到间址 RAM 直接寻址字节传送到间址 RAM 立即数传送到间址 RAM 16 位常数装入 DPTR 相对于 DPTR 的代码字节传送到累加器 相对于 PC 的代码字节传送到累加器 外部 RAM(8 位地址)传送到 A 累加器传到外部 RAM(8 位地址) 外部 RAM(16 位地址)传送到 A 累加器传到外部 RAM(16 位地址) 直接寻址字节压入栈顶 栈顶数据弹出到直接寻址字节 寄存器和累加器交换 直接寻址字节与累加器交换 间址 RAM 与累加器交换 间址 RAM 和累加器交换低半字节 累加器内高低半字节交换 位操作类指令 清进位位 清直接寻址位 进位位置 1 直接寻址位置位 进位位取反 直接寻址位取反 直接寻址位“与”到进位位 直接寻址位的反码“与”到进位位 直接寻址位“或”到进位位 直接寻址位的反码“或”到进位位 直接寻址位传送到进位位 进位位传送到直接寻址位 若进位位为 1 则跳转 若进位位为零则跳转 若直接寻址位为 1 则跳转 若直接寻址位为零则跳转 若直接寻址位为 1 则跳转,并清除该位 字节数 1 1 时钟 周期数 1 1 1 1 2 2 1 2 2 2 1 1 2 2 2 2 2 2 2 2 3 3 2 2 3 3 1 2 2 2 2 2 3 3 1 3 1 3 1 3 1 3 1 3 1 3 2 2 2 2 1 1 2 2 1 2 1 2 1 1 1 1 2 2 1 1 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2/3 2 2/3 3 3/4 3 3/4 3 3/4 58 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 助记符 ACALL addr11 LCALL addr16 RET RETI AJMP addr11 LJMP addr16 SJMP rel JMP @A+DPTR JZ rel JNZ rel CJNE A,direct,rel CJNE A,#data,rel CJNE Rn,#data,rel CJNE @Ri,#data,rel DJNZ Rn,rel DJNZ direct,rel NOP 功能说明 控制转移类指令 绝对调用子程序 长调用子程序 从子程序返回 从中断返回 绝对转移 长转移 短转移(相对偏移) 相对 DPTR 的间接转移 累加器为 0 则转移 累加器为非 0 则转移 比较直接寻址字节与累加器,不相等则转移 比较立即数与累加器,不相等则转移 比较立即数与寄存器,不相等则转移 比较立即数与间接寻址 RAM,不相等则转移 寄存器减 1,不为零则转移 直接寻址字节减 1,不为零则转移 空操作 字节数 时钟 周期数 2 3 3 4 1 5 1 5 2 3 3 4 2 3 1 3 2 2/3 2 2/3 3 3/4 3 3/4 3 3/4 3 4/5 2 2/3 3 3/4 1 1 寄存器、操作数和寻址方式说明: Rn – 当前选择的寄存器区的寄存器 R0-R7。 @Ri – 通过寄存器 R0-R1 间接寻址的数据 RAM 地址。 rel – 相对于下一条指令第一个字节的 8 位有符号(2 的补码)偏移量。SJMP 和所有条 件转移指令使用。 direct – 8 位内部数据存储器地址。可以是直接访问数据 RAM 地址(0x00-0x7F)或一 个 SFR 地址(0x80-0xFF)。 #data – 8 位立即数 #data16 – 16 位立即数 bit – 数据 RAM 或 SFR 中的直接寻址位 addr11 – ACALL 或 AJMP 使用的 11 位目的地址。目的地址必须与下一条指令第一个字 节处于同一个 2K 字节的程序存储器页。 addr16 – LCALL 或 LJMP 使用的 16 位目的地址。目的地址可以是 16K 程序存储器空间 内的任何位置。 有一个未使用的操作码(0xA5),它执行与 NOP 指令相同的功能。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 59 C8051F310/1 混合信号 ISP FLASH 微控制器 8.2 存储器组织 CIP-51 系统控制器的存储器组织与标准 8051 的存储器组织类似。有两个独立的存储器空 间:程序存储器和数据存储器。程序和数据存储器共享同一个地址空间,但用不同的指令类 型访问。CIP-51 的存储器组织如图 8.2 所示。 图 8.2 存储器组织图 程序存储器(FLASH) C8051F310/1 0x3E00 0x3DFF 保留 16KB FLASH (在系统可编程 以512字节 为一个扇区) 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x00 数据存储器 内部数据地址空间 高128字节RAM (只能间接寻址) 特殊功能寄存器 (只能直接寻址) (直接和间接寻址) 可位寻址空间 通用寄存器 低128字节RAM (直接和间接寻址) 0x0000 0x2000 0x1 F FF C8051F312/3/4/5 保留 0xFFFF 外部数据地址空间 与0x0000~0x03FF为 相同的RAM块, 以1KB 为界回绕 8KB FLASH (在系统可编程 以512字节 为一个扇区) 0x0400 0x03FF 0x0000 XRAM - 1024字节 (只能用MOVX指令) 0x0000 8.2.1 程序存储器 CIP-51 有 64KB 的程序存储器空间。C8051F310/1 和 C8051F312/3/4/5 在这个程序存储器 空间中分别实现了 16KB 和 8KB 的可在系统编程的 FLASH 存储器,组织在一个连续的存储块 内(0x0000 ~ 0x3FFF,或 0x0000 ~ 0x1FFF)。注意:对于 C8051F310/1,该 FLASH 存储器中 有 512 字节(0x3E00 ~ 0x3FFF)被保留。 程序存储器通常被认为是只读的。但是 CIP-51 可以通过设置程序存储写允许位(PSCTL.0) 60 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 用 MOVX 指令对程序存储器写入。这一特性为 CIP-51 提供了更新程序代码和将程序存储器空 间用于非易失性数据存储的机制。更详细的信息见“10. FLASH 存储器”。 8.2.2 数据存储器 CIP-51 的数据存储器空间中有 256 字节的内部 RAM,位于地址 0x00 到 0xFF 的地址空间。 数据存储器中的低 128 字节用于通用寄存器和临时存储器。可以用直接或间接寻址方式访问 数据存储器的低 128 字节。从 0x00 到 0x1F 为 4 个通用寄存器区,每个区有 8 个 8 位寄存器。 接下来的 16 字节,从地址 0x20 到 0x2F,既可以按字节寻址又可以作为 128 个位地址用直接 位寻址方式访问。 数据存储器中的高 128 字节只能用间接寻址访问。该存储区与特殊功能寄存器(SFR)占 据相同的地址空间,但物理上与 SFR 空间是分开的。当寻址高于 0x7F 的地址时,指令所用的 寻址方式决定了 CPU 是访问数据存储器的高 128 字节还是访问 SFR。使用直接寻址方式的指 令将访问 SFR 空间,间接寻址高于 0x7F 地址的指令将访问数据存储器的高 128 字节。图 8.2 给出了 CIP-51 数据存储器组织的示意图。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 61 C8051F310/1 混合信号 ISP FLASH 微控制器 8.2.3 通用寄存器 数据存储器的低 32 字节,从地址 0x00 到 0x1F,可以作为 4 个通用寄存器区访问。每个 区有 8 个 8 位寄存器,称为 R0 - R7。在某一时刻只能选择一个寄存器区。程序状态字中的 RS0 (PSW.3)和 RS1(PSW.4)位用于选择当前的寄存器区(见图 8.6 中关于 PSW 的说明)。这 允许在进入子程序或中断服务程序时进行快速现场切换。间接寻址方式使用 R0 和 R1 作为间 址寄存器。 8.2.4 位寻址空间 除了直接访问按字节组织的数据存储器外,从 0x20 到 0x2F 的 16 个数据存储器单元还可 以作为 128 个独立寻址位访问。每个位有一个位地址,从 0x00 到 0x7F。位于地址 0x20 的数 据字节的位 0 具有位地址 0x00,位于 0x20 的数据字节的位 7 具有位地址 0x07。位于 0x2F 的 数据字节的位 7 具有位地址 0x7F。由所用指令的类型来区分是位寻址还是字节寻址。 MCS-51TM汇编语言允许用XX . B的形式替代位地址,XX为字节地址,B为寻址位在字节 中的位置。例如,指令: MOV C, 22h . 3 将 0x13 中的布尔值(字节地址 0x22 中的位 3)传送到进位标志。 8.2.5 堆栈 程序的堆栈可以位于 256 字节数据存储器中的任何位置。堆栈区域用堆栈指针(SP,0x81) SFR 指定。SP 指向最后使用的位置。下一个压入堆栈的数据将被存放在 SP+1,然后 SP 加 1。 复位后堆栈指针被初始化为地址 0x07,因此第一个被压入堆栈的数据将被存放在地址 0x08, 这也是寄存器区 1 的第一个寄存器(R0)。如果使用不止一个寄存器区,SP 应被初始化为数 据存储器中不用于数据存储的位置。堆栈深度最大可达 256 字节。 8.2.6 特殊功能寄存器 从 0x80 到 0xFF的直接寻址存储器空间为特殊功能寄存器(SFR)。SFR提供对CIP-51 的 资源和外设的控制及CIP-51 与这些资源和外设之间的数据交换。CIP-51 具有标准 8051 中的全 部SFR,还增加了一些用于配置和访问专有子系统的SFR。这就允许在保证与MCS-51TM指令 集兼容的前提下增加新的功能。表 8.2 列出了CIP-51 系统控制器中的全部SFR。 任何时刻用直接寻址方式访问 0x80~0xFF 的存储器空间将访问特殊功能寄存器(SFR)。 地址以 0x0 或 0x8 结尾的 SFR(例如 P0、TCON、P1、SCON、IE 等)既可以按字节寻址也可 以按位寻址,所有其它 SFR 只能按字节寻址。SFR 空间中未使用的地址保留为将来使用,访 问这些地址会产生不确定的结果,应予避免。有关每个寄存器的详细说明请参见本数据表的 相关部分(表 8.3 中已标明)。 62 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 表 8.2 特殊功能寄存器存储器映象 F8 SPI0CN PCA0L PCA0H PCA0CPL0 PCA0CPH0 PCA0CPL4 PCA0CPH4 VDM0CN F0 B P0MDIN P1MDIN P2MDIN P3MDIN EIP1 E8 ADC0CN PCA0CPL1 PCA0CPH1 PCA0CPL2 PCA0CPH2 PCA0CPL3 PCA0CPH3 RSTSRC E0 ACC XBR0 XBR1 IT01CF EIE1 D8 PCA0CN PCA0MD PCA0CPM0 PCA0CPM1 PCA0CPM2 PCA0CPM3 PCA0CPM4 D0 PSW REF0CN P0SKIP P1SKIP P2SKIP C8 TMR2CN TMR2RLL TMR2RLH TMR2L TMR2H C0 SMB0CN SMB0CF SMB0DAT ADC0GTL ADC0GTH ADC0LTL ADC0LTH B8 IP AMX0N AMX0P ADC0CF ADC0L ADC0H B0 P3 OSCXCN OSCICN OSCICL FLSCL FLKEY A8 IE CLKSL EMI0CN A0 P2 SPI0CFG SPI0CKR SPI0DAT P0MDOUT P1MDOUT P2MDOUT P3MDOUT 98 SCON0 SBUF0 CPT1CN CPT0CN CPT1MD CPT0MD CPT1MX CPT0MX 90 P1 TMR3CN TMR3RLL TMR3RLH TMR3L TMR3H 88 TCON TMOD TL0 TL1 TH0 TH1 CKCON PSCTL 80 P0 SP DPL DPH PCON 0(8) 1(9) 2(A) 3(B) 4(C) 5(D) 6(E) 7(F) 可位寻址 表 8.3 特殊功能寄存器 SFR 以字母顺序排列,所有未定义的 SFR 位置保留。 寄存器 地址 说明 ACC ADC0CF ADC0CN ADC0GTH ADC0GTL ADC0H ADC0L ADC0LTH ADC0LTL AMX0N AMX0P B CKCON CLKSEL CPT0CN CPT0MD CPT0MX CPT1CN CPT1MD CPT1MX 0xE0 0xBC 0xE8 0xC4 0xC3 0xBE 0xBD 0xC6 0xC5 0xBA 0xBB 0xF0 0x8E 0xA9 0x9B 0x9D 0x9F 0x9A 0x9C 0x9E 累加器 ADC0 配置寄存器 ADC0 控制寄存器 ADC0 下限(大于)比较字高字节 ADC0 下限(大于)比较字低字节 ADC0 数据字高字节 ADC0 数据字低字节 ADC0 上限(小于)比较字 ADC0 上限(小于)比较字 AMUX0 负通道选择寄存器 AMUX0 正通道选择寄存器 B 寄存器 时钟控制寄存器 时钟选择寄存器 比较器 0 控制寄存器 比较器 0 方式选择寄存器 比较器 0 MUX 选择寄存器 比较器 1 控制寄存器 比较器 1 方式选择寄存器 比较器 1 MUX 选择寄存器 页码 76 42 44 45 45 42 43 46 46 41 40 76 171 103 56 58 57 59 61 60 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 63 C8051F310/1 混合信号 ISP FLASH 微控制器 表 8.3 特殊功能寄存器(续) SFR 以字母顺序排列,所有未定义的 SFR 位置保留。 寄存器 地址 说明 DPH DPL EIE1 EIP1 EMI0CN FLKEY FLSCL IE IP IT01CF OSCICL OSCICN OSCXCN P0 P0MDIN P0MDOUT P0SKIP P1 P1MDIN P1MDOUT P1SKIP P2 P2MDIN P2MDOUT P2SKIP P3 P3MDIN P3MDOUT PCA0CN PCA0CPH0 PCA0CPH1 PCA0CPH2 PCA0CPH3 PCA0CPH4 PCA0CPL0 PCA0CPL1 PCA0CPL2 PCA0CPL3 PCA0CPL4 0x83 0x82 0xE6 0xF6 0xAA 0xB7 0xB6 0xA8 0xB8 0xE4 0xB3 0xB2 0xB1 0x80 0xF1 0xA4 0xD4 0x90 0xF2 0xA5 0xD5 0xA0 0xF3 0xA6 0xD6 0xB0 0xF4 0xA7 0xD8 0xFC 0xEA 0xEC 0xEE 0xFE 0xFB 0xE9 0xEB 0xE9 0xEB 数据指针高字节 数据指针低字节 扩展中断允许寄存器 1 扩展中断优先级寄存器 1 外部存储器接口控制寄存器 FLASH 锁定和关键码寄存器 FLASH 存储器时序预分频器 中断允许寄存器 中断优先级寄存器 INT0/INT1 配置寄存器 内部振荡器校准寄存器 内部振荡器控制寄存器 外部振荡器控制寄存器 端口 0 锁存器 端口 0 输入方式配置寄存器 端口 0 输出方式配置寄存器 端口 0 跳过寄存器 端口 1 锁存器 端口 1 输入方式配置寄存器 端口 1 输出方式配置寄存器 端口 1 跳过寄存器 端口 2 锁存器 端口 2 输入方式配置寄存器 端口 2 输出方式配置寄存器 端口 2 跳过寄存器 端口 3 锁存器 端口 3 输入方式配置寄存器 端口 3 输出方式配置寄存器 PCA 控制寄存器 PCA 捕捉模块 0 高字节 PCA 捕捉模块 1 高字节 PCA 捕捉模块 2 高字节 PCA 捕捉模块 3 高字节 PCA 捕捉模块 4 高字节 PCA 捕捉模块 0 低字节 PCA 捕捉模块 1 低字节 PCA 捕捉模块 2 低字节 PCA 捕捉模块 3 低字节 PCA 捕捉模块 4 低字节 页码 74 74 82 83 99 97 97 80 81 84 102 102 105 115 115 116 116 117 117 118 118 119 119 120 120 121 121 122 192 196 196 196 196 196 196 196 196 196 196 64 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 表 8.3 特殊功能寄存器(续) SFR 以字母顺序排列,所有未定义的 SFR 位置保留。 寄存器 地址 说明 PCA0CPM0 PCA0CPM1 PCA0CPM2 PCA0CPM3 PCA0CPM4 PCA0H PCA0L PCA0MD PCON PSCTL PSW REF0CN RSTSRC SBUF0 SCON0 SMB0CF SMB0CN SMB0DAT SP SPI0CFG SPI0CKR SPI0CN SPI0DAT TCON TH0 TH1 TL0 TL1 TMOD TMR2CN TMR2H TMR2L TMR2RLH TMR2RLL TMR3CN TMR3H TMR3L TMR3RLH TMR3RLL VDM0CN 0xDA 0xDB 0xDC 0xDD 0xDE 0xFA 0xF9 0xD9 0x87 0x8F 0xD0 0xD1 0xEF 0x99 0x98 0xC1 0xC0 0xC2 0x81 0xA1 0xA2 0xF8 0xA3 0x88 0x8C 0x8D 0x8A 0x8B 0x89 0xC8 0xCD 0xCC 0xCB 0xCA 0x91 0x95 0x94 0x93 0x92 0xFF PCA 模块 0 方式寄存器 PCA 模块 1 方式寄存器 PCA 模块 2 方式寄存器 PCA 模块 3 方式寄存器 PCA 模块 4 方式寄存器 PCA 计数器高字节 PCA 计数器低字节 PCA 方式寄存器 电源控制寄存器 程序存储读/写控制寄存器 程序状态字 电压基准控制寄存器 复位源寄存器 UART0 数据缓冲器 UART0 控制寄存器 SMBus 配置寄存器 SMBus 控制寄存器 SMBus 数据寄存器 堆栈指针 SPI 配置寄存器 SPI 时钟频率控制寄存器 SPI 控制寄存器 SPI 数据寄存器 计数器/定时器控制寄存器 计数器/定时器 0 高字节 计数器/定时器 1 高字节 计数器/定时器 0 低字节 计数器/定时器 1 低字节 计数器/定时器方式寄存器 计数器/定时器 2 控制寄存器 计数器/定时器 2 高字节 计数器/定时器 2 低字节 计数器/定时器 2 重载值高字节 计数器/定时器 2 重载值低字节 计数器/定时器 3 控制寄存器 计数器/定时器 3 高字节 计数器/定时器 3 低字节 计数器/定时器 3 重载值高字节 计数器/定时器 3 重载值低字节 VDD 监视器控制寄存器 页码 194 194 194 194 194 195 195 193 86 96 75 52 91 147 146 130 132 134 75 158 160 159 161 169 172 172 172 172 170 175 176 176 176 176 179 180 180 180 180 89 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 65 C8051F310/1 混合信号 ISP FLASH 微控制器 表 8.3 特殊功能寄存器(续) SFR 以字母顺序排列,所有未定义的 SFR 位置保留。 寄存器 地址 说明 XBR0 0xE1 XBR1 0xE2 0x84~0x86, 0x96~0x97, 0xAB~0xAF,0xB4, 0xB9, 0xBF,0xC7, 0xC9, 0xCE, 0xCF, 0xD2, 0xD3,0xD7, 0xDF, 0xE3, 0xE5,0xF5 端口 I/O 交叉开关控制 0 端口 I/O 交叉开关控制 1 保留 页码 112 113 8.2.7 寄存器说明 下面对与 CIP-51 系统控制器操作有关的 SFR 加以说明。保留位不应被置为逻辑‘1’。将 来的产品版本可能会使用这些位实现新功能,在这种情况下各位的复位值将是逻辑‘0’以选 择缺省状态。有关其它 SFR 的详细说明见本数据表中与它们对应的系统功能相关的章节。 图 8.3 DPL:数据指针低字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x82 位 7-0: DPL:数据指针低字节 DPL 为 16 位数据指针(DPTR)的低字节。DPTR 用于访问间接寻址 FLASH 存储器或 XRAM。。 图 8.4 DPH:数据指针高字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x83 位 7-0: DPH:数据指针高字节 DPH 为 16 位数据指针(DPTR)的高字节。DPTR 用于访问间接寻址的 FLASH 存储器或 XRAM。。 66 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 8.5 SP:堆栈指针 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x81 位 7-0: SP:堆栈指针 堆栈指针保持栈顶位置。在每次执行 PUSH 操作前,堆栈指针加 1。SP 寄存 器复位后的默认值为 0x07。 图 8.6 PSW:程序状态字 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 CY AC F0 RS1 RS0 OV F1 PARITY 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0xD0 位 7: 位 6: 位 5: CY:进位标志。 当最后一次算术操作产生进位(加法)或借位(减法)时,该位置 1。其它算 术操作将其清 0。 AC:辅助进位标志。 当最后一次算术操作向高半字节有进位(加法)或借位(减法)时,该位置 1。 其它算术操作将其清 0。 F0:用户标志 0。 这是一个可位寻址、受软件控制的通用标志位。 位 4-3: RS1-RS0:寄存器区选择。 该两位在寄存器访问时用于选择寄存器区。 位 2: 位 1: 位 0: RS1 RS0 寄存器区 地址 00 01 10 11 0 0x00-0x07 1 0x08-0x0F 2 0x10-0x17 3 0x18-0x1F OV:溢出标志。 该位在下列情况下被置 1: ADD、ADDC 或 SUBB 指令引起符号位变化溢出。 MUL 指令的结果引起溢出(结果大于 255)。 DIV 指令的除数为 0。 ADD、ADDC、SUBB、MUL 和 DIV 指令的其它情况使该位清 0。 F1:用户标志 1。 这是一个可位寻址、受软件控制的通用标志位。 PARITY:奇偶标志。 若累加器中 8 个位的和为奇数时该位置 1,为偶数时清 0。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 67 C8051F310/1 混合信号 ISP FLASH 微控制器 图 8.7 ACC:累加器 R/W ACC.7 位7 R/W ACC.6 位6 R/W ACC.5 位5 R/W ACC.4 位4 R/W ACC.3 位3 R/W ACC.2 位2 R/W ACC.1 位1 R/W ACC.0 位0 (可位寻址) 复位值 00000000 SFR地址: 0xE0 位 7-0: ACC:累加器 该寄存器为算术操作用的累加器。 图 8.8 B:B 寄存器 R/W R/W R/W R/W R/W R/W B.7 B.6 B.5 B.4 B.3 B.2 位7 位6 位5 位4 位3 位2 位 7-0: B:B 寄存器 该寄存器为某些算术操作的第二累加器。 R/W R/W 复位值 B.1 B.0 00000000 位1 位0 SFR地址: (可位寻址) 0xF0 68 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 8.3 中断系统 CIP-51 包含一个扩展的中断系统,支持 14 个中断源,每个中断源有两个优先级。中断源 在片内外设与外部输入引脚之间的分配随器件的不同而变化。每个中断源可以在一个 SFR 中 有一个或多个中断标志。当一个外设或外部源满足有效的中断条件时,相应的中断标志被置 为逻辑‘1’。 如果一个中断源被允许,则在中断标志被置位时将产生一个中断。一旦当前指令执行完, CPU 产生一个 LCALL 到预定地址,开始执行中断服务程序(ISR)。每个 ISR 必须以 RETI 指 令结束,使程序回到中断前执行的那条指令的下一条指令。如果中断未被允许,中断标志将 被硬件忽略,程序继续正常执行。中断标志置‘1’与否不受中断允许/禁止状态的影响。 每个中断源都可以用一个 SFR(IE – EIE1)中的相关中断允许位来允许或禁止,但是必 须首先将 EA 位(IE.7)置‘1’,以保证每个单独的中断允许位有效。不管每个中断允许位的 设置如何,清‘0’EA 位将禁止所有中断。 注意:任何使 EA 位清 0 的指令的后面都应立即跟随一条具有两个或更多操作码字节的指 令。例如: // 用 C 语言编程 EA = 0 ; // 清‘0’EA 位 EA = 0 ; // 跟随一条两字节操作码的指令 ; 用汇编语言编程 CLR EA ; 清‘0’EA 位 CLR EA ; 跟随一条两字节操作码的指令 如果一个中断在“CLR EA”指令(或任何使 EA 清‘0’的指令)的执行阶段有效,并且 该指令的后面是一条单周期的指令,则该中断可能被响应,但在中断服务程序中读 EA 位将返 回‘0’值。如果“CLR EA”指令后面是一条多周期的指令,则中断不会被响应。 某些中断标志在 CPU 进入 ISR 时被自动清除,但大多数中断标志不是由硬件清除的,必 须在 ISR 返回前用软件清除。如果一个中断标志在 CPU 执行完中断返回(RETI)指令后仍然 保持置位状态,则会立即产生一个新的中断请求,CPU 将在执行完下一条指令后再次进入该 ISR。 8.3.1 MCU 中断源和中断向量 MCU 支持 14 个中断源。软件可以通过将任何一个中断标志设置为逻辑‘1’来模拟一个 中断。如果中断标志被允许,系统将产生一个中断请求,CPU 将转向与该中断标志对应的 ISR 地址。表 8.4 给出了 MCU 中断源、对应的向量地址、优先级和控制位一览表。关于外设有效 中断条件和中断标志位工作状态方面的详细信息,请见与特定外设相关的章节。 8.3.2 外部中断 两个外部中断源/INT0 和/INT1 可被配置为低电平有效或高电平有效,边沿触发或电平触 发。IT01CF 寄存器中的 IN0PL(/INT0 极性)和 IN1PL(/INT1 极性)位用于选择高电平有效 还是低电平有效;TCON 中的 IT0 和 IT1 用于选择电平或边沿触发。下面的表列出了可能的配 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 69 C8051F310/1 混合信号 ISP FLASH 微控制器 置组合。 IT0 IN0PL 1 0 1 1 0 0 0 1 /INT0 中断 低电平有效,边沿触发 高电平有效,边沿触发 低电平有效,电平触发 高电平有效,电平触发 IT1 IN1PL /INT1 中断 1 0 低电平有效,边沿触发 1 1 高电平有效,边沿触发 0 0 低电平有效,电平触发 0 1 高电平有效,电平触发 /INT0 和/INT1 所使用的端口引脚在 IT01CF 寄存器中定义(见图 8.13)。注意,/INT0 和 /INT0 端口引脚分配与交叉开关的设置无关。/INT0 和/INT1 监视分配给它们的端口引脚,不 影响被交叉开关分配了相同引脚的外设。如果要将一个端口引脚只分配给/INT0 或/INT1,则 应使交叉开关跳过这个引脚。这可以通过设置寄存器 XBR0 中的相应位来实现(有关配置交 叉开关的详细信息见“13.1 优先权交叉开关译码器”)。 IE0(TCON.1)和 IE1(TCON.3)分别为外部中断/INT0 和/INT1 的中断标志。如果/INT0 或/INT1 外部中断被配置为边沿触发,CPU 在转向 ISR 时将自动清除相应的中断标志。当被配 置为电平触发时,在输入有效期间(根据极性控制位 IN0PL 或 IN1PL 的定义)中断标志将保 持在逻辑‘1’状态;在输入无效期间该标志保持逻辑‘0’状态。电平触发的外部中断源必 须一直保持输入有效直到中断请求被响应,在 ISR 返回前必须使该中断请求无效,否则将产 生另一个中断请求。 8.3.3 中断优先级 每个中断源都可以被独立地编程为两个优先级中的一个:低优先级或高优先级。一个低 优先级的中断服务程序可以被高优先级的中断所中断,但高优先级的中断不能被中断。每个 中断在 SFR(IP 或 EIP1)中都有一个配置其优先级的中断优先级设置位,缺省值为低优先级。 如果两个中断同时发生,具有高优先级的中断先得到服务。如果这两个中断的优先级相同, 则由固定的优先级顺序决定哪一个中断先得到服务。 8.3.4 中断响应时间 中断响应时间取决于中断发生时 CPU 的状态。中断系统在每个系统时钟周期对中断标志 采样并对优先级译码。最快的响应时间为 5 个系统时钟周期:一个周期用于检测中断,4 个周 期完成对 ISR 的长调用(LCALL)。如果中断标志有效时 CPU 正在执行 RETI 指令,则需要再 执行一条指令才能进入中断服务程序。因此,最长的中断响应时间(没有其它中断正被服务 或新中断具有较高优先级)发生在 CPU 正在执行 RETI 指令,而下一条指令是 DIV 的情况。 在这种情况下,响应时间为 18 个系统时钟周期:1 个时钟周期检测中断,5 个时钟周期执行 RETI,8 个时钟周期完成 DIV 指令,4 个时钟周期执行对 ISR 的长调用(LCALL)。如果 CPU 正在执行一个具有相同或更高优先级的中断的 ISR,则新中断要等到当前 ISR 执行完(包括 RETI 和下一条指令)才能得到服务。 70 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 中断源 复位 外部中断 0 (/INT0) 定时器 0 溢出 外部中断 1 (INT1) 定时器 1 溢出 UART0 定时器 2 溢出 SPI0 SMB0 保留 ADC0 窗口比较 ADC0 转换结束 可编程计数器阵列 比较器 0 比较器 1 定时器 3 溢出 中断 向量 0x0000 0x0003 0x000B 0x0013 0x001B 0x0023 0x002B 0x0033 0x003B 0x0043 0x004B 0x0053 0x005B 0x0063 0x006B 0x0073 表 8.4 中断一览表 优先级 中断标志 最高 0 1 2 3 4 5 6 无 IE0 (TCON.1) TF0 (TCON.5) IE1 (TCON.3) TF1 (TCON.7) RI0 (SCON0.0) TI0 (SCON0.1) TF2H (TMR2CN.7) TF2L (TMR2CN.6) SPIF (SPI0CN.7) WCOL (SPI0CN.6) MODF (SPI0CN.5) RXOVRN (SPI0CN.4) 7 SI (SMB0CN.0) 8 N/A 9 AD0WINT (ADC0CN.3) 10 AD0INT (ADC0CN.5) 11 CF (PCA0CN.7) CCFn (PCA0CN.n) CP0FIF 12 (CPT0CN.4) CP0RIF (CPT0CN.5) CP1FIF 13 (CPT1CN.4) CP1RIF (CPT1CN.5) TF3H 14 (TMR3CN.7) TF3L (TMR3CN.6) 位寻址 N/A Y Y Y Y Y Y Y Y N/A Y Y Y N N N 硬件 清除 N/A Y Y Y Y N N N N N/A N N N N N N 中断允许 始终允许 EX0 (IE.0) ET0 (IE.1) EX1 (IE.2) ET1 (IE.3) ES0 (IE.4) ET2 (IE.5) ESPI0 (IE.6) ESMB0 (EIE1.0) N/A EWADC0 (EIE1.2) EADC0C (EIE1.3) EPCA0 (EIE1.4) ECP0 (EIE1.5) ECP1 (EIE1.6) ET3 (EIE1.7) 优先级 控制 总是最高 PX0 (IP.0) PT0 (IP.1) PX1 (IP.2) PT1 (IP.3) PS0 (IP.4) PT2 (IP.5) PSPI0 (IP.6) PSMB0 (EIP1.0) N/A PWADC0 (EIP1.2) PADC0 (EIP1.3) PPCA0 (EIP1.4) PCP0 (EIP1.5) PCP1 (EIP1.6) PT3 (EIP1.7) 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 71 C8051F310/1 混合信号 ISP FLASH 微控制器 8.3.5 中断寄存器说明 下面介绍用于允许中断源和设置中断优先级的特殊功能寄存器。关于外设有效中断条件 和中断标志位工作状态方面的详细信息,请见与特定片内外设相关的章节。 图 8.9 IE:中断允许寄存器 R/W EA 位7 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: R/W R/W R/W R/W R/W R/W R/W 复位值 ESPI0 ET2 ES0 ET1 EX1 ET0 EX0 00000000 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0xA8 EA:允许所有中断。 该位允许/禁止所有中断。它超越所有的单个中断屏蔽设置。 0:禁止所有中断源。 1:开放中断。每个中断由它对应的中断屏蔽设置决定。 ESPI0:串行外设接口(SPI0)中断允许位。 该位用于设置 SPI0 的中断屏蔽。 0:禁止 SPI0 中断。 1:允许 SPI0 的中断请求。 ET2:定时器 2 中断允许位。 该位用于设置定时器 2 的中断屏蔽。 0:禁止定时器 2 中断。 1:允许 TF2L 或 TF2H 标志的中断请求。 ES0:UART0 中断允许位。 该位设置 UART0 的中断屏蔽。 0:禁止 UART0 中断。 1:允许 UART0 中断。 ET1:定时器 1 中断允许位。 该位用于设置定时器 1 的中断屏蔽。 0:禁止定时器 1 中断。 1:允许 TF1 标志位的中断请求。 EX1:外部中断 1 允许位。 该位用于设置外部中断 1 的中断屏蔽。 0:禁止外部中断 1。 1:允许/INT1 引脚的中断请求 ET0:定时器 0 中断允许位。 该位用于设置定时器 0 的中断屏蔽。 0:禁止定时器 0 中断。 1:允许 TF0 标志位的中断请求。 EX0:外部中断 0 允许位。 该位用于设置外部中断 0 的中断屏蔽。 0:禁止外部中断 0。 1:允许/INT0 引脚的中断请求 72 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 8.10 IP:中断优先级寄存器 R/W R/W R/W R/W R/W R/W - PSPI0 PT2 PS0 PT1 PX1 位7 位6 位5 位4 位3 位2 位 7: 位 6: 位 5: 位 4: 位 3: 未用。读=1b,写=忽略。 PSPI0:串行外设接口(SPI0)中断优先级控制 该位设置 SPI0 中断的优先级。 0:SPI0 为低优先级。 1:SPI0 为高优先级。 PT2:定时器 2 中断优先级控制 该位设置定时器 2 中断的优先级。 0:定时器 2 为低优先级。 1:定时器 2 为高优先级。 PS0: UART0 中断优先级控制。 该位设置 UART0 中断的优先级。 0:UART0 为低优先级。 1:UART1 为高优先级。 PT1:定时器 1 中断优先级控制 该位设置定时器 1 中断的优先级。 0:定时器 1 为低优先级。 1:定时器 1 为高优先级。 R/W R/W 复位值 PT0 PX0 10000000 位1 位0 SFR地址: (可位寻址) 0xB8 位 2: 位 1: 位 0: PX1:外部中断 1 优先级控制 该位设置外部中断 1 的优先级。 0:外部中断 1 为低优先级。 1:外部中断 1 为高优先级。 PT0:定时器 0 中断优先级控制 该位设置定时器 0 中断的优先级。 0:定时器 0 为低优先级。 1:定时器 0 为高优先级。 PX0:外部中断 0 优先级控制 该位设置外部中断 0 的优先级。 0:外部中断 0 为低优先级。 1:外部中断 0 为高优先级。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 73 C8051F310/1 混合信号 ISP FLASH 微控制器 图 8.11 EIE1:扩展中断允许 1 R/W R/W R/W R/W R/W R/W R/W ET3 ECP1 ECP0 EPCA0 EADC0 EWADC0 保留 位7 位6 位5 位4 位3 位2 位1 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: ET3:定时器 3 中断允许位 该位设置定时器 3 的中断屏蔽。 0:禁止定时器 3 中断。 1:允许 TF3L 或 TF3H 标志的中断请求。 ECP1:比较器 1(CP1)中断允许位 该位设置 CP1 的中断屏蔽。 0:禁止 CP1 中断。 1:允许 CP1RIF 或 CP1FIF 标志的中断请求。 ECP0:比较器 0(CP0)中断允许位 该位设置 CP0 的中断屏蔽。 0:禁止 CP0 中断。 1:允许 CP0RIF 或 CP0FIF 标志的中断请求。 EPCA0:可编程计数器阵列(PCA0)中断允许位 该位设置 PCA0 的中断屏蔽。 0:禁止所有 PCA0 中断。 1:允许 PCA0 的中断请求。 EADC0C:ADC0 转换结束中断允许位 该位设置 ADC0 转换结束中断屏蔽。 0:禁止 ADC0 转换结束中断。 1:允许 AD0INT 标志的中断请求。 EWADC0:ADC0 窗口比较中断允许位 该位设置 ADC0 窗口比较中断屏蔽。 0:禁止 ADC0 窗口比较中断。 1:允许 ADC0 窗口比较标志的中断请求。 保留。读=0b,必须写 0。 ESMB0:SMBus 中断允许位 该位设置 SMBus(SMB0)的中断屏蔽。 0:禁止 SMB0 中断。 1:允许 SMB0 的中断请求。 R/W ESMB0 位0 复位值 00000000 SFR地址: 0xE6 74 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 8.12 EIP1:扩展中断优先级 1 R/W R/W R/W R/W R/W R/W R/W PT3 PCP1 PCP0 PPCA0 PADC0 PWADC0 保留 位7 位6 位5 位4 位3 位2 位1 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: PT3:定时器 3 中断优先级控制 该位设置定时器 3 中断的优先级。 0:定时器 3 中断为低优先级。 1:定时器 3 中断为高优先级。 PCP1:比较器 1(CP1)沿中断优先级控制 该位设置 CP1 中断的优先级。 0:CP1 沿中断为低优先级。 1:CP1 中断为高优先级。 PCP0:比较器 0(CP0)中断优先级控制 该位设置 CP0 中断的优先级。 0:CP0 中断为低优先级。 1:CP0 中断为高优先级。 PPCA0:可编程计数器阵列中断优先级控制 该位设置 PCA0 中断的优先级。 0:PCA0 中断为低优先级。 1:PCA0 中断为高优先级。 PADC0:ADC0 转换结束中断优先级控制 该位设置 ADC0 转换结束中断的优先级。 0:ADC0 转换结束中断为低优先级。 1:ADC0 转换结束中断为高优先级。 PWADC0:ADC0 窗口比较器中断优先级控制 该位设置 ADC0 窗口中断的优先级。 0:ADC0 窗口中断为低优先级。 1:ADC0 窗口中断为高优先级。 保留。读=0b,必须写 0。 PSMB0:SMBus(SMB0)中断优先级控制 该位设置 SMB0 中断的优先级。 0:SMB0 中断为低优先级。 1:SMB0 中断为高优先级。 R/W PSMB0 位0 复位值 00000000 SFR地址: 0xF6 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 75 C8051F310/1 混合信号 ISP FLASH 微控制器 图 8.13 INT01CF:INT0/INT1 配置寄存器 R/W IN1PL 位7 R/W IN1SL2 位6 R/W IN1SL1 位5 R/W IN1SL0 位4 R/W IN0PL 位3 R/W IN0SL2 位2 R/W IN0SL1 位1 R/W IN0SL0 位0 复位值 00000001 SFR地址: 0xE4 位 7: IN1PL:/INT1 极性 0:/INT1 为低电平有效。 1:/INT1 为高电平有效。 位 6-4: IN1SL2-0:/INT1 端口引脚选择位 这些位用于选择分配给/INT1 的端口引脚。注意,该引脚分配与交叉开关无关; /INT1 将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外 设。如果将交叉开关配置为跳过这个引脚(通过将寄存器 P0SKIP 中的对应位 置‘1’来实现),则该引脚将不会被分配给外设。 IN1SL2-0 000 001 010 011 100 101 110 111 /INT1 端口引脚 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 位 3: IN0PL:/INT0 极性 0:/INT0 为低电平有效。 1:/INT0 为高电平有效。 位 2-0: IN0SL2-0:/INT0 端口引脚选择位 这些位用于选择分配给/INT0 的端口引脚。注意,该引脚分配与交叉开关无关; /INT0 将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外 设。如果将交叉开关配置为跳过这个引脚(通过将寄存器 P0SKIP 中的对应位 置‘1’来实现),则该引脚将不会被分配给外设。 IN0SL2-0 000 001 010 011 100 101 110 111 /INT0 端口引脚 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 76 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 8.4 电源管理方式 CIP-51 有两种可软件编程的电源管理方式:等待和停机。在空闲方式,CPU 停止运行, 而外设和时钟处于活动状态。在停机方式,CPU 停止运行,所有的中断和定时器(时钟丢失 检测器除外)都处于非活动状态,内部振荡器被停止(模拟外设保持在所选择的状态;外部 振荡器不受影响)。由于在空闲方式下时钟仍然运行,所以功耗与进入空闲方式之前的系统时 钟频率和处于活动状态的外设数目有关。停机方式消耗最少的功率。图 8.14 对用于控制 CIP-51 电源管理方式的电源控制寄存器作出了说明。 虽然 CIP-51 具有空闲和停机方式(与任何标准 8051 结构一样),但最好禁止不需要的外 设,以使整个 MCU 的功耗最小。每个模拟外设在不用时都可以被禁止,使其进入低功耗方式。 像定时器、串行总线这样的数字外设在不使用时消耗很少的功率。关闭振荡器可以大大降低 消耗功率,但需要复位来重新启动 MCU。 8.4.1 空闲方式 将空闲方式选择位(PCON.0)置 1 导致 CIP-51 停止 CPU 运行并进入空闲方式,在执行 完对该位置 1 的指令后 MCU 立即进入空闲方式。所有内部寄存器和存储器都保持原来的数据 不变。所有模拟和数字外设在空闲方式期间都可以保持活动状态。 有被允许的中断发生或复位有效将结束空闲方式。当有一个被允许的中断发生时,空闲 方式选择位(PCON.0)被清 0,CPU 将继续工作。该中断将得到服务,中断返回(RETI)后 将开始执行设置空闲方式选择位的那条指令的下一条指令。如果空闲方式因一个内部或外部 复位而结束,则 CIP-51 进行正常的复位过程并从地址 0x0000 开始执行程序。 如果被使能,WDT 将产生一个内部看门狗复位,从而结束空闲方式。这一功能可以保护 系统不会因为对 PCON 寄存器的意外写入而导致永久性停机。如果不需要这种功能,可以在 进入空闲方式之前禁止看门狗。这将进一步节省功耗,允许系统一直保持在空闲状态,等待 一个外部激励唤醒系统。有关使用和配置 WDT 的详细信息,请参见第 9.6 节。 注意:任何将 IDLE 位置 1 的指令后面应立即跟随一条具有 2 或多字节操作码的指令。例 如: // 用‘C’语言: PCON |= 0x01 ; // 将 IDLE 位置 1 PCON = PCON ; // … 跟随一条 3 字接操作码的指令 ; 用汇编语言: ORL PCON, #01h MOV PCON, PCON ; 将 IDLE 位置 1 ; … 跟随一条 3 字接操作码的指令 如果在写 IDLE 位的指令之后是一条单字节指令,并且在执行将 IDLE 位置 1 的指令期间 产生了一个中断,则将来发生中断时 CPU 可能不会被唤醒。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 77 C8051F310/1 混合信号 ISP FLASH 微控制器 8.4.2 停机方式 将停机方式选择位(PCON.1)置 1 导致 CIP-51 进入停机方式,在执行完对该位置 1 的指 令后 MCU 立即进入停机方式。在停机方式,内部振荡器、CPU 和所有的数字外设都停止工作, 但外部振荡器电路的状态不受影响。在进入停机方式之前,每个模拟外设(包括外部振荡器 电路)都可以被单独关断。只有内部或外部复位能结束停机方式。复位时,CIP-51 进行正常 的复位过程并从地址 0x0000 开始执行程序。 如果被使能,时钟丢失检测器将产生一个内部复位,从而结束停机方式。如果想要使 CPU 的休眠时间长于 100 微秒的 MCD 超时时间,则应禁止时钟丢失检测器。 图 8.14 PCON:电源控制寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 GF5 GF4 GF3 GF2 GF1 GF0 STOP IDLE 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x87 位 7-2: GF5-GF0:通用标志位 5-0。 这些位是用作软件控制的通用标志位。 位 1: STOP:停机方式选择。 将该位置‘1’使 CIP-51 进入停机方式。该位读出值总是为 0。 1:进入掉电方式(内部振荡器停止运行) 位 0: IDLE:空闲方式选择。 将该位置‘1’使 CIP-51 进入空闲方式。该位读出值总是为 0。 1:CPU 进入空闲方式。(关闭供给 CPU 的时钟信号,但定时器、中断、串口 和模拟外设保持活动状态。) 78 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 9. 复位源 复位电路允许很容易地将控制器置于一个预定的缺省状态。在进入复位状态时,将发生 以下过程: CIP-51 停止程序执行 特殊功能寄存器(SFR)被初始化为所定义的复位值 外部端口引脚被置于一个已知状态 中断和定时器被禁止。 所有的 SFR 都被初始化为预定值,SFR 中各位的复位值在 SFR 的详细说明中定义。在复 位期间内部数据存储器的内容不发生改变,复位前存储的数据保持不变。但由于堆栈指针 SFR 被复位,堆栈实际上已丢失,尽管堆栈中的数据未发生变化。 端口 I/O 锁存器的复位值为 0xFF(全部为逻辑‘1’),处于漏极开路方式。在复位期间和 复位之后弱上拉被使能。对于 VDD 监视器和上电复位,/RST 引脚被驱动为低电平,直到器 件退出复位状态。 在退出复位状态时,程序计数器(PC)被复位,MCU 使用内部振荡器作为默认的系统时 钟。有关选择和配置系统时钟源的详细说明见“12. 振荡器”。看门狗定时器被使能,使用系 统时钟的 12 分频作为其时钟源(有关使用看门狗定时器的详细信息见“18.3 看门狗定时器方 式”)。程序从地址 0x0000 开始执行。 图 9.1 复位源框图 VDD Px . x Px . x XTAL1 XTAL2 内部 振荡器 外部 振荡器 驱动 比较器0 + - C0 RS EF 电源 监视器 + - 允许 上电复 位 '0' 线或 时钟 丢失 检测器 EN PCA W DT EN 允许 允许 系统时钟 时钟选择 CIP-51 微控制器 内核 扩展中断系统 系统复位 (软件复位) SWRSF 复位 逻辑 FLASH 操作错误 / RST 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 79 C8051F310/1 混合信号 ISP FLASH 微控制器 9.1 上电复位 在上电期间,器件保持在复位状态,/RST引脚被驱动到低电平,直到VDD上升到超过VRST 电平。从复位开始到退出复位状态要经过一个延时;该延时随着VDD上升时间的增大而减小 (VDD上升时间被定义为VDD从 0V上升到 2.7V的时间)。图 9.2 给出了上电和VDD监视器复 位的时序。对于合理的上升时间(小于 1ms),上电复位延时(TPORDelay)通常小于 0.3ms。 最大的VDD上升时间为 1ms;上升时间超过该最大值时可能导致器件在VDD达到VRST电 平之前退出复位状态。 注:VDD 的最大上升时间为 1ms 在退出复位状态时,PORSF 标志(RSTSRC.1)被硬件置为逻辑‘1’。当 PORSF 标志被 置位时,RSTSRC 寄存器中的所有其它复位标志都是不确定的。PORSF 被任何其它复位源清 0。由于所有的复位都导致程序从同一个地址(0x0000)开始执行,软件可以通过读 PORSF 标志来确定是否为上电产生的复位。在一次上电复位后,内部数据存储器中的内容应被认为 是不确定的。在上电复位后,VDD 监视器被禁止。 图 9.2 上电和 VDD 监视器复位时序 (伏) 2.70 2.40 2.0 VRST VDD 1.0 t 逻辑高电平 /RST 逻辑低电平 TPORDelay 上电 复位 VDD 监视器 复位 9.2 掉电复位和 VDD 监视器 当发生掉电或因电源波动导致VDD降到VRST以下时,电源监视器将/RST引脚驱动为低电 平并使CIP-51 保持复位状态(见图 9.2)。当VDD又回到高于VRST的电平时,CIP-51 将退出复 位状态。注意,尽管内部数据存储器的内容可能没有因掉电复位而发生改变,但无法确定VDD 是否降到了数据保持所要求的最低电平以下。如果PORSF标志被置位,则内部RAM的数据可 能不再有效。在上电复位后VDD监视器被禁止,但它的状态(使能/禁止)不受任何其它复位 源的影响。例如,在VDD监视器被使能后执行一次软件复位,复位后VDD监视器仍然为使能 状态。 80 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 注意:在选择 VDD 监视器作为复位源之前,必须使能 VDD 监视器。在 VDD 监视器被 使能或稳定之前选其为复位源可能导致系统复位。将 VDD 监视器配置为复位源的步骤如下: 1. 使能 VDD 监视器(VDM0CN 中的 VDMEN 位 = 1); 2. 等待 VDD 监视器稳定(见表 9.1 的 VDD 监视器启动时间); 3. 选择 VDD 监视器作为复位源(RSTSRC 中的 PORSF 位 = 1) 图 9.2 给出了 VDD 监视器的时序。注意,在 VDD 监视器复位后没有复位延时。表 9.1 给 出了 VDD 监视器的电气特性。 图 9.3 VDM0CN:VDD 监视器控制寄存器 R/W R VDMEN VDDSTAT 位7 位6 R 保留 位5 R 保留 位4 R 保留 位3 R 保留 位2 R 保留 位1 R 保留 位0 复位值 可变 SFR地址: 0xFF 位 7: VDMEN:VDD 监视器使能位。 该位控制 VDD 监视器电源的通断。VDD 监视器在被选择为复位源之前不可能 产生系统复位。在被选择为复位源之前,VDD 监视器必须稳定。在 VDD 监视 器稳定之前选其为复位源可能导致系统复位。VDD 监视器的最小启动时间见 表 9.1。 0:禁止 VDD 监视器。 1:使能 VDD 监视器。 位 6: VDDSTAT:VDD 状态。 该位指示当前电源状态(VDD 监视器输出)。 0:VDD 等于或低于 VDD 监视器阈值。 1:VDD 高于 VDD 监视器阈值 位 5-0: 保留。读 = 00000b,写 = 忽略。 9.3 外部复位 外部/RST 引脚提供了使用外部电路强制 MCU 进入复位状态的手段。在/RST 引脚上加一 个低电平有效信号将导致 MCU 进入复位状态。尽管在内部有弱上拉,但最好能提供一个外部 上拉和/或对/RST 引脚去耦以防止强噪声引起复位。从外部复位状态退出后,PINRSF 标志 (RSTSRC.0)被置‘1’。 9.4 时钟丢失检测器复位 时钟丢失检测器(MCD)实际上是由系统时钟触发的单稳态电路。如果系统时钟保持在 高电平或低电平的时间大于 100 微秒,单稳态电路将超时并产生复位。在发生时钟丢失检测 器复位后,MCDRSF 标志(RSTSRC.2)的读出值为‘1’,表示本次复位源为 MCD;否则该 位读出值为‘0’。向 MCDRSF 位写‘1’将使能时钟丢失检测器;写‘0’将禁止时钟丢失检 测器。/RST 引脚的状态不受该复位的影响。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 81 C8051F310/1 混合信号 ISP FLASH 微控制器 9.5 比较器 0 复位 向 C0RSEF 标志(RSTSRC.5)写‘1’可以将比较器 0 配置为复位源。应在写 C0RSEF 之前使能比较器 0 并等待输出稳定,以防止通电瞬间在输出端产生抖动,从而导致不希望的 复位。比较器 0 复位为低电平有效:如果同相端输入电压(CP0+)小于反相端输入电压(CP0-), 则 MCU 被置于复位状态。在发生比较器 0 复位后,C0RSEF 标志(RSTSRC.5)的读出值为 ‘1’,表示本次复位源为比较器 0;否则该位读出值为‘0’。/RST 引脚的状态不受该复位的 影响。 9.6 PCA 看门狗定时器复位 可编程计数器阵列(PCA)的可编程看门狗定时器(WDT)功能可用于在系统出现错误 的情况下防止软件运行失控。可以通过软件使能或禁止 PCA 的 WDT 功能。在每次复位后, WDT 被使能并使用 SYSCLK/12 作为计数时钟。如果因系统出错使用户软件不能更新 WDT, 则 WDT 将产生一次复位,WDTRSF 位(RSTSRC.5)被置‘1’。/RST 引脚的状态不受该复位 的影响。 9.7 FLASH 错误复位 如果 FLASH 读/写/擦除操作的地址或程序读地址为非法地址,将发生系统复位。下述的 任何一种情况都会导致操作失败: FLASH 写或擦除地址超出了用户代码空间。这种情况发生在 PSWE 被置‘1’,并且 MOVX 操作的地址大于 0x3DFF。 FLASH 读地址超出了用户代码空间,即 MOVC 操作的地址大于 0x3DFF。 程序读超出了用户代码址空间。这种情况发生在用户代码试图转移到大于 0x3DFF 的 地址时。 当 FLASH 读、写或擦除被安全设置禁止时(见 10.3 安全选项)。 在发生 FLASH 错误复位后,FERROR 位(RSTSRC.6)被置位。/RST 引脚的状态不受该 复位的影响。 9.8 软件复位 软件可以通过向 SWRSF 位(RSTSRC.4)写‘1’强制产生一次系统复位。在发生软件强 制复位后,SWRSF 位的读出值为‘1’。/RST 引脚的状态不受该复位的影响。 82 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 9.4 RSTSRC:复位源寄存器 R 位7 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: R FERROR 位6 R/W C0RSEF 位5 R/W SWRSF 位4 R WDTRSF 位3 R/W MCDRSF 位2 R/W PORSF 位1 R PINRSF 位0 复位值 可变 SFR地址: 0xEF 未用。读 = 0,写 = 忽略。 FERROR:FLASH 错误标志。 0:最后一次复位不是来自 FLASH 读/写/擦除错误。 1:最后一次复位是由于 FLASH 读/写/擦除错误。 C0RSEF:比较器 0 复位使能和标志 写 0:比较器 0 不是复位源。 1:比较器 0 是复位源(低电平有效)。 读 0:最后一次复位不是来自比较器 0。 1:最后一次复位来自比较器 0。 SWRSF:软件强制复位和标志 写 0:无作用 1:强制产生一次系统复位。 读 0:最后一次复位不是来自写 SWRSF 位。 1:最后一次复位来自写 SWRSF 位。 WDTRSF:看门狗定时器复位标志 0:最后一次复位不是来自 WDT 超时。 1:最后一次复位来自 WDT 超时。 MCDRSF:时钟丢失检测器标志 写 0:禁止时钟丢失检测器。 1:使能时钟丢失检测器;检测到时钟丢失条件时触发复位。 读 0:最后一次复位不是来自时钟丢失检测器超时。 1:最后一次复位来自时钟丢失检测器超时。 PORSF:上电复位和 VDD 监视器复位标志 该位在上电复位后被置位。对该位写入可以使能/禁止 VDD 监视器作为复位源。 在 VDD 监视器被使能和稳定之前向该位写 1 可能导致系统复位。见寄存器 VDM0CN(图 9.3)。 写 0:禁止 VDD 监视器为复位源。 1:使能 VDD 监视器为复位源。 读 0:最后一次复位不是上电复位或 VDD 监视器复位。 1:最后一次复位是上电或 VDD 监视器复位,所有其它复位标志是不确定的。 PINRSF:硬件引脚复位标志 0:最后一次复位不是来自/RST 引脚。 1:最后一次复位来自/RST 引脚。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 83 C8051F310/1 混合信号 ISP FLASH 微控制器 表 9.1 复位源电气特性 VDD = 2.7V ~ 3.6V;-40℃到+85℃(除非特别说明) 参数 条件 最小值 /RST 输出低电平 /RST 输入高电平 IOL= 8.5 mA,VDD=2.7 - 3.6V 0.7xVDD /RST 输入低电平 /RST 输入上拉电流 /RST=0.0V VDD监视器门限电压 2.40 (VRST) 时钟丢失检测器超时 从最后一个系统时钟上升沿 到产生复位 100 复位时间延迟 从退出复位到开始执行位于 0x0000 地址的代码之间的延 5.0 时 产生系统复位的最小 /RST 低电平时间 15 VDD 监视器启动时间 100 VDD 监视器电源电流 VDD 上升时间 VDD = 0V 到 VDD = 2.7V 典型值 最大值 单位 0.6 V V 0.3xVDD V 25 40 µA 2.55 2.70 V 220 600 µs µs µs µs 20 50 µA 1 ms 84 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 10. FLASH 存储器 C8051F31x 内部有 16KB 的 FLASH 存储器,用于程序代码和非易失性数据存储。可以通 过 C2 接口或由软件使用 MOVX 指令对 FLASH 存储器进行在系统编程,每次一个字节。一个 FLASH 位一旦被清‘0’,必须经过擦除才能再回到‘1’状态。在进行重新编程之前,一般要 将数据字节擦除(置为 0xFF)。为了保证操作正确,写和擦除操作由硬件自动定时,不需要进 行数据查询来判断写/擦除操作何时结束。在 FLASH 写/擦除操作期间,程序停止执行。表 10.1 给出了 FLASH 存储器的电气特性。 10.1 FLASH 存储器编程 对 FLASH 存储器编程的最简单的方法是使用由 Silicon Labs 或第三方供应商提供的编程 工具,通过 C2 接口编程,这是对未被初始化过的器件的唯一编程方法。有关对 FLASH 程序 存储器编程的 C2 命令的详细信息见“20. C2 接口”。 为了保证 FLASH 内容的正确性,强烈建议在使用用户软件对 FLASH 存储器进行写和/ 或擦除操作的系统中使能片内 VDD 监视器。 10.1.1 FLASH 锁定和关键码功能 从用户软件写和擦除 FLASH 受 FLASH 锁定和关键码功能的保护。在进行 FLASH 操作 之前,必须按顺序向 FLASH 锁定和关键码寄存器(FLKEY)写入正确的关键码。关键码为: 0xA5,0xF1。写关键码的时序并不重要,但必须按顺序写。如果写关键码的顺序不对或写入 了错误的关键码,FLASH 写和擦除操作将被禁止,直到下一次系统复位。如果在写入关键码 之前进行了 FLASH 写或擦除操作,FLASH 写和擦除也将被禁止。每次 FLASH 写和擦除操作 之后,FLASH 锁定功能复位;在进行下一次 FLASH 写或擦除操作之前,必须重新写关键码。 图 10.3 给出了 FLKEY 寄存器的详细说明。 10.1.2 FLASH 擦除 可以用软件使用 MOVX 指令对 FLASH 存储器编程,象一般的操作数一样为 MOVX 指令 提供待编程的地址和数据字节。在使用 MOVX 指令对 FLASH 存储器写入之前,必须先允许 FLASH 写操作。允许 FLASH 写操作的过程是:1)将程序存储写允许位 PSWE(PSCTL.0) 设置为逻辑‘1’(这将使 MOVX 操作指向目标 FLASH 存储器);2)按顺序向 FLASH 锁定寄 存器(FLKEY)写入 FLASH 关键码。PSWE 位将保持置位状态,直到被软件清除。 写 FLASH 存储器可以清除数据位,但不能使数据位置‘1’,只有擦除操作能将 FLASH 中的数据位置‘1’。所以在写入新值之前,必须先擦除待编程的地址。FLASH 存储器是以 512 字节的扇区为单位组织的,一次擦除操作将擦除整个扇区(将扇区内的所有字节置为 0xFF)。 擦除一个扇区(页)的步骤如下: 1. 禁止中断(建议这样做)。 2. 置‘1’程序存储器擦除允许位(PSCTL 中的 PSEE),以允许 FLASH 扇区擦除。 3. 置‘1’程序存储器写允许位(PSCTL 中的 PSWE),以允许 FLASH 写入。 4. 向 FLKEY 写第一个关键码:0xA5。 5. 向 FLKEY 写第二个关键码:0xF1。 6. 用 MOVX 指令向待擦除页内的任何一个地址写入一个数据字节。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 85 C8051F310/1 混合信号 ISP FLASH 微控制器 10.1.3 FLASH 写 用软件对 FLASH 字节编程的步骤如下: 1. 禁止中断(建议这样做)。 2. 擦除包含目标地址的 FLASH 页(见上节的说明)。 3. 置‘1’PSCTL 中的 PSWE 位。 4. 清除 PSCTL 中的 PSEE 位。 5. 向 FLKEY 写第一个关键码:0xA5。 6. 向 FLKEY 写第二个关键码:0xF1。 7. 用 MOVX 指令向扇区内的目标地址写入一个数据字节。 重复步骤 5-7,直到写完每个字节。在完成了对 FLASH 的数据写入后,PSWE 位应被清 ‘0’,以使 MOVX 指令不再指向程序存储器。 表 10.1 FLASH 存储器电气特性 参数 条 件 最小值 典型值 FLASH 规模 C8051F310/1 C8051F312/3/4/5 16384* 8192 擦写寿命 20k 擦除时间 25 MHz 系统时钟 10 写入时间 25 MHz 系统时钟 40 *注:位于 0x3E00 ~ 0x3FFF(C8051F310/1)的 512 字节保留。 100k 15 55 最大值 20 70 单位 字节 擦/写 ms µs 10.2 非易失性数据存储 FLASH 存储器除了用于存储程序代码之外还可以用于非易失性数据存储。这就允许在程 序运行时计算和存储类似标定系数这样的数据。数据写入时用 MOVX 指令,读出时用 MOVC 指令。MOVX 读指令总是指向 XRAM。 尽管 FLASH 存储器可以每次写一个字节,但必须首先擦除整个扇区。为了修改一个多字 节数据集中的某一个字节,整个数据集必须被保存到一个临时存储区。接下来将扇区擦除, 更新数据集,最后将数据集写回到原扇区。 10.3 安全选项 CIP-51 提供了安全选项以保护 FLASH 存储器不会被软件意外修改,以及防止产权程序代 码和常数被读取。程序存储器写允许(PSCTL 寄存器中的 PSWE)和程序存储器擦除允许 (PSCTL 寄存器中的 PSEE)位保护 FLASH 存储器不会被软件意外修改。在用软件修改 FLASH 存储器的内容之前,PSWE 必须被置为逻辑‘1’;在用软件擦除 FLASH 存储器之前,PSWE 位和 PSEE 位都必须被置为逻辑‘1’。此外,CIP-51 还提供了可以防止通过 C2 接口读取产权 程序代码和常数这一安全功能。 保存在 FLASH 用户空间的最后一个字节中的安全锁定字节保护 FLASH 存储器,使其不 能被非保护代码或通过 C2 接口读、写或擦除。FLASH 安全机制允许用户从 0 页(地址 0x0000 ~ 0x01FF)开始锁定 n 个 512 字节的 FLASH 页,其中 n 是安全锁定字节的反码。 注意:当没有其它 FLASH 页被锁定时(锁定字节的所有位均为‘1’),包含安全锁定字 节的 FLASH 页不被锁定;当任何一个其它 FLASH 页被锁定时(锁定字节中的任何一位为‘0’), 86 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 包含安全锁定字节的 FLASH 页即被锁定。见下面的例子。 安全锁定字节: 11111101 b 反码: 00000010 b 锁定的 FLASH 页: 3(头两个 FLASH 页 + 锁定字节所在页) 锁定的地址: 0x0000 ~ 0x03FF(头两个 FLASH 页) 和 0x3C00 ~ 0x3DFF 或 0x1E00 ~ 0x1FFF(锁定字节所在页) 图 10.1 FLASH 程序存储器结构和安全字节 在任何其他页被锁 定时该页被锁定 C8051F310/1 保留区 锁定字节 0x3E00 0x3DFF 0x3DFE 0x3C00 未锁定的FLASH页 C8051F312/3/4/5 保留区 锁定字节 0x2000 0x1FFF 0x1EFE 0x1E00 未锁定的FLASH页 FLASH存储器按 512字节页组织 由FLASH安全锁定字节 决定的访问极限地址 0x0000 0x0000 FLASH 安全级别取决于对 FLASH 访问的方式。有 3 种可被限制的访问方式:经 C2 调试 接口的读、写和擦除,在非锁定页执行的用户固件,在锁定页执行的用户固件。 经 C2 调试接口访问 FLASH: 1. 任何未锁定的页均可被读、写或擦除。 2. 被锁定的页不能被读、写或擦除。 3. 包含锁定字节的页在未被锁定时可以被读、写或擦除。 4. 读锁定字节的内容总是被允许。 5. 不允许追加锁定页(将锁定字节中的‘1’改写为‘0’)。 6. 对 FLASH 页解除锁定(将锁定字节中的‘0’改写为‘1’)需要使用 C2 器件擦除命 令,这将擦除所有页,包括含有锁定字节的页和锁定字节本身。 7. 保留区不能被读、写或擦除。 在未锁定页执行的用户固件访问 FLASH: 1. 除包含锁定字节的页之外,任何未被锁定的页均可被读、写或擦除。 2. 被锁定的页不能被读、写或擦除。 3. 包含锁定字节的页不能被擦除,在未被锁定时可以被读或写。 4. 读锁定字节的内容总是被允许。 5. 不允许追加锁定页(将锁定字节中的‘1’改写为‘0’); 6. 不能对 FLASH 页解除锁定(将锁定字节中的‘0’改写为‘1’)。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 87 C8051F310/1 混合信号 ISP FLASH 微控制器 7. 保留区不能被读、写或擦除。访问保留区或任何被锁定页的操作将导致 FLASH 错误 型系统复位。 在被锁定页执行的用户固件访问 FLASH: 1. 除包含锁定字节的页之外,任何未被锁定的页均可被读、写或擦除。 2. 除包含锁定字节的页之外,任何被锁定的页都可以被读、写或擦除。 3. 包含锁定字节的页不能被擦除,只能被读或写。 4. 读锁定字节的内容总是被允许。 5. 不允许追加锁定页(将锁定字节中的‘1’改写为‘0’); 6. 不能对 FLASH 页解除锁定(将锁定字节中的‘0’改写为‘1’)。 7. 保留区不能被读、写或擦除。访问保留区或任何被锁定页的操作将导致 FLASH 错误 型系统复位。 图 10.2 PSCTL:程序存储读写控制 R/W R/W R/W R/W R/W R/W - - - - - 位7 位6 位5 位4 位3 位2 位 7-2: 未使用。读 = 000000b,写 = 忽略。 R/W PSEE 位1 R/W PSWE 位0 复位值 00000000 SFR地址: 0x8F 位 1: PSEE:程序存储擦除允许 将该位置‘1’后允许擦除 FLASH 存储器中的一个页(前提是 PSWE 位也被 置‘1’)。在将该位置‘1’后,用 MOVX 指令进行一次写操作将擦除包含 MOVX 指令寻址地址的那个 FLASH 页。用于写操作的数据可以是任意值。 0:禁止擦除 FLASH 存储器。 1:允许擦除 FLASH 存储器。 位 0: PSWE:程序存储写允许 将该位置‘1’后允许用 MOVX 指令向 FLASH 存储器写一个字节。在写数据 之前必须先进行擦除。 0:禁止写 FLASH 存储器。 1:允许写 FLASH 存储器;MOVX 写指令寻址 FLASH 存储器。 88 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 10.3 FLKEY:FLASH 锁定和关键码寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xB7 位 7-0: FLKEY:FLASH 锁定和关键码寄存器 写: 必须在写或擦除 FLASH 之前写该寄存器。FLASH 保持在锁定状态,直到该寄 存器被写入下面的关键码:0xA5,0xF1。写入的时序并不重要,只要按顺序写 即可。每次写或擦除 FLASH 之前都必须写关键码。如果写入了错误的关键码 或在写关键码之前进行了 FLASH 操作,则 FLASH 将被锁定,直到下一次系统 复位。 读: 位 1-0 指示当前的 FLASH 锁定状态 00:FLASH 写/擦除被锁定。 01:第一个关键码已被写入(0xA5)。 10:FLASH 处于解锁状态(允许写/擦除) 11:FLASH 写/擦除操作被禁止,直到下一次复位。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 89 C8051F310/1 混合信号 ISP FLASH 微控制器 图 10.4 FLSCL:FLASH 定时预分频 R/W FOSE 位7 R/W 保留 位6 R/W 保留 位5 R/W 保留 位4 R/W 保留 位3 R/W 保留 位2 R/W 保留 位1 R/W 保留 位0 复位值 10000000 SFR地址: 0xB6 位 7: FOSE:FLASH 单稳态定时器使能 该位用于使能 FLASH 读操作单稳态定时器。当 FLASH 单稳态定时器被禁止时, FLASH 读出放大器在整个 FLASH 读周期内被使能。当系统时钟频率低于 10MHz 时,禁止 FLASH 单稳态定时器会增加系统功耗。 0:禁止 FLASH 单稳态定时器。 1:使能 FLASH 单稳态定时器。 位 6-0: 保留。读 = 0,必须写 0。 90 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 11.外部 RAM C8051F31x 器件内部有位于外部数据存储器空间的 1024 字节 RAM。可以用外部传送指 令(MOVX)和数据指针(DPTR)访问这些地址单元,或者用 MOVX 间接寻址方式。如果 MOVX 指令使用一个 8 位地址操作数(例如 @R1),则 16 位地址的高字节由外部存储器接口 控制寄存器(EMI0CN,如图 1.1 所示)提供。注:MOVX 指令还用于写 FLASH 存储器,详 见第 10 章。缺省情况下 MOVX 指令访问 XRAM。 对于 16 位 MOVX 操作(@DPTR),16 位外部数据存储器地址的高 6 位是被“忽略”的。 因此,这个 1024 字节的 RAM 以取模的方式映射到整个 64KB 的外部数据存储器地址范围。 例如,位于地址 0x0000 的 XRAM 字节也位于 0x0400、0x0800、0x0C00、0x1000 等地址。在 进行线性存储器填充时这是一个很有用的特性,因为在达到 RAM 块的边界时不必对地址指针 复位。 图 11.1 EMI0CN: 外部存储器接口控制 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - - - - - - PGSEL 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xAA 位 7-2: 未用-读为 000000b,写 = 忽略。 位 1-0: PGSEL:XRAM 页选择位 当使用 8 位的 MOVX 命令时,XRAM 页选择位提供 16 位外部数据存储器地 址的高字节,实际上是选择一个 256 字节的 RAM 页。由于该寄存器的高位(未 使用)总是为 0,PGSEL 决定要访问的 XRAM 页。 例如:如果 EMI0CN = 0x01,则地址 0x100-0x1FF 将被访问。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 91 C8051F310/1 混合信号 ISP FLASH 微控制器 12. 振荡器 C8051F31x MCU 有一个可编程内部振荡器和一个外部振荡器驱动电路。内部振荡器可以 被使能/禁止,其输出频率可以通过 OSCICN 和 OSCICL 寄存器编程(如图 12.1 所示)。系统 时钟可以由外部振荡器电路、内部振荡器或内部振荡器分频后提供。表 12.1 给出了内部振荡 器的电气特性。 Option 3 XTAL2 图 12.1 振荡器框图 OSCICL OSCICN CLKSEL Option 4 XTAL2 EN Programmable n Internal Clock Generator Option 2 VDD XTAL2 Option 1 XTAL1 10M XTAL2 Input Circuit OSC SYSCLK OSCXCN 12.1 可编程内部振荡器 C8051F31x 器件包含一个可编程内部振荡器,该振荡器在系统复位后被默认为系统时钟。 内部振荡器的周期可以通过 OSCICL 寄存器编程,见图 12.2。OSCICL 已经过工厂校准,对应 频率为 24.5MHz。 表 12.1 给出了精密内部振荡器的电气特性。注意:可编程内部振荡器的频率不能超过 25MHz。系统时钟可以从内部振荡器分频得到,分频数由寄存器 OSCICN 中的 IFCN 位设定, 可为 1、2、4 或 8。复位后的缺省分频数为 8。 92 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 12.2 OSCICL:内部振荡器校准寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - 可变 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xB3 位 7: 未用。读=0b,写 = 忽略。 位 6-0: OSCICL:内部振荡器校准寄存器。 该寄存器决定内部振荡器的周期(根据方程 12.1)。OSCICL 的复位值定义内 部振荡器的基频。对于 C8051F31x,复位值已经过工厂校准,对应的基频为 24.5MHz。 R/W IOSCEN 位7 R/W IFRDY 位6 图 12.3 OSCICN:内部振荡器控制寄存器 R/W R/W R/W R/W R/W - - - - IFCN1 位5 位4 位3 位2 位1 位 7: IOSCEN:内部振荡器使能位 0:内部振荡器禁止。 1:内部振荡器使能。 位 6: IFRDY:内部振荡器频率准备好标志 0:内部振荡器未运行在编程频率。 1:内部振荡器按编程频率运行。 位 5-2: 未用。读 = 0000b,写 = 忽略。 位 1-0: IFCN1-0:内部振荡器频率控制位 00:SYSCLK 为内部振荡器 8 分频。 01:SYSCLK 为内部振荡器 4 分频。 10:SYSCLK 为内部振荡器 2 分频。 11:SYSCLK 为内部振荡器输出(不分频)。 R/W IFCN0 位0 复位值 11000000 SFR地址: 0xB2 图 12.4 CLKSEL:时钟选择寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - - - - - - - CLKSL0 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xA9 位 7-1: 未用。读 = 0000000b,写 = 忽略。 位 0: CLKSL0:系统时钟源选择位 0:SYSCLK 取自内部振荡器,分频数由 OSCICN 寄存器中的 IFCN 位决定。 1:SYSCLK 取自外部振荡器。 表 12.1 内部振荡器电气特性 VDD = 2.7V~3.6V;-40℃到+85℃(除非特别说明)。 参数 条件 最小值 内部振荡器频率 24 内部振荡器电源电流(由 VDD 供电) OSCICN.7 = 1 典型值 最大值 24.5 25 450 1000 单位 MHz µA 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 93 C8051F310/1 混合信号 ISP FLASH 微控制器 12.2 外部振荡器驱动电路 外部振荡器电路可以驱动外部晶体、陶瓷谐振器、电容或 RC 网络。也可以使用一个外部 CMOS 时钟提供系统时钟。对于晶体和陶瓷谐振器配置,晶体/陶瓷谐振器必须并接到 XTAL1 和 XTAL2 引脚(见图 12.1,选项 1),还必须在 XTAL1 和 XTAL2 引脚之间并接一个 10MΩ 的电阻。对于 RC、电容或 CMOS 时钟配置,时钟源应接到 XTAL2 引脚(见图 12.1,选项 2、 3、4)。必须在 OSCXCN 寄存器中选择外部振荡器类型,还必须正确选择频率控制位 XFCN (见图 12.5)。 当使用外部振荡器电路时,必须对所用端口引脚进行配置。当外部振荡器电路被配置为 晶体/谐振器方式时,端口引脚 P0.2 和 P0.3 分别被用作 XTAL1 和 XTAL2。当外部振荡器电路 被配置为 RC、电容或 CMOS 时钟方式时,端口引脚 P0.3 分别被用作 XTAL2。端口 I/O 交叉 开关应被配置为跳过被占用的引脚。当在晶体/陶瓷谐振器、电容或 RC 方式使用外部振荡器 电路时,应将所用的端口引脚配置为模拟输入。在 CMOS 时钟方式,应将所用的端口引脚配 置为数字输入。有关端口输入方式选择的详细信息见“13.2 端口 I/O 初始化”。 12.3 系统时钟选择 寄存器 CLKSEL 中的 CLKSL0 位选择用于产生系统时钟的振荡器。如果要选择外部振荡 器作为系统时钟,必须将 CLKSL0 位置‘1’。当选择内部振荡器作为系统时钟时,外部振荡 器仍然可以给外设(定时器、PCA)提供时钟。系统时钟可以在内部振荡器和外部振荡器之间 自由切换,只要所选择的振荡器被使能并稳定运行。内部振荡器的起动时间很短,因此可以 在使能内部振荡器的 OSCICN 写操作后立即选择内部振荡器作为系统时钟。外部晶体和陶瓷 谐振器通常需要较长的起动时间,应待其稳定后方可用作系统时钟。当外部振荡器稳定后, 晶体有效标志(寄存器 OSCXCN 中的 XTLVLD)被硬件置‘1’。在晶体方式,为了防止读到 假 XTLVLD 标志,软件在使能外部振荡器和检查 XTLVLD 之间至少应延时 1ms。RC 和 C 方 式通常不需要起动时间。 94 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 12.5 OSCXCN:外部振荡器控制寄存器 R R/W R/W R/W R XTLVLD XOSCMD2 XOSCMD1 XOSCMD0 - 位7 位6 位5 位4 位3 R/W XFCN2 位2 位 7: XTLVLD:晶体振荡器有效标志 (在 XOSCMD=11x 时有效,只读) 0:晶体振荡器未用或未稳定。 1:晶体振荡器正在运行并且工作稳定。 位 6-4: XOSCMD2-0:外部振荡器方式位 00x:外部振荡器电路关闭。 010:外部 CMOS 时钟方式。 011:外部 CMOS 时钟方式二分频。 100:RC 振荡器方式。 101:电容振荡器方式。 110:晶体振荡器方式。 111:晶体振荡器方式二分频。 位 3: 保留。读 = 0,写 = 忽略。 位 2-0: XFCN2-0:外部振荡器频率控制位。 000-111:见下表 R/W XFCN1 位1 R/W XFCN0 位0 复位值 00000000 SFR地址: 0xB1 XFCN 000 001 010 011 100 101 110 111 晶体(XOSCMD=11x) F ≤ 32kHz 32kHz < f ≤ 84kHz 84kHz < f ≤ 225kHz 225kHz < f ≤ 590kHz 590kHz < f ≤ 1.5MHz 1.5MHz < f ≤ 4MHz 4MHz < f≤ 10MHz 10MHz < f≤ 30MHz RC(XOSCMD=10x) F ≤ 25kHz 25kHz < f ≤ 50kHz 50kHz < f ≤ 100kHz 100kHz < f ≤ 200kHz 200kHz < f ≤ 400kHz 400kHz < f ≤ 800kHz 800kHz < f ≤ 1.6MHz 1.6MHz < f ≤ 3.2MHz 晶体方式(电路见图 12.1,选项 1;XOSCMD=11x) 选择与晶体振荡器频率匹配的 XFCN 值。 RC 方式(电路见图 12.1,选项 2;XOSCMD=10x) 选择与频率范围匹配的 XFCN 值: f = 1.23(103)/(R*C),其中: f = 振荡器频率(MHz) C = 电容值(pF) R = 上拉电阻值(kΩ) C 方式(电路见图 12.1,选项 3;XOSCMD=10x) 根据所期望的振荡器频率选择 K 因子(KF): f = KF/(C*VDD),其中: f = 振荡器频率(MHz) C = XTAL2 引脚的电容值(pF) VDD = MCU 的电源电压值(伏) C(XOSCMD=10x) K 因子= 0.87 K 因子= 2.6 K 因子= 7.7 K 因子= 22 K 因子= 65 K 因子= 180 K 因子= 664 K 因子= 1590 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 95 C8051F310/1 混合信号 ISP FLASH 微控制器 12.4 外部晶体示例 如果使用晶体或陶瓷谐振器作为 MCU 的外部振荡源,则电路为图 12.1 中的选项 1。应从 图 12.5(OSCXCN 寄存器)中的晶体列选择外部振荡器频率控制值(XFCN)。例如,一个 11.0592MHz 的晶体要求 XFCN 设置值为 111b。 在晶体振荡器被使能时,振荡器幅度检测电路需要一个建立时间来达到合适的偏置。在 使能晶体振荡器和检查 XTLVLD 位之间引入 1ms 的延时可以防止提前将系统时钟切换到外部 振荡器。在晶体振荡器稳定之前就切换到外部晶体振荡器可能产生不可预见的后果。建议的 步骤如下: 1. 通过向端口寄存器的对应位写 0 使 XTAL1 和 XTAL2 引脚为低电平。 2. 将 XTAL1 和 XTAL2 配置为模拟输入。 3. 使能外部振荡器。 4. 等待至少 1ms。 5. 查询 XTLVLD =>‘1’。 6. 将系统时钟切换到外部振荡器。 注:对于音叉晶体,可能需要等待较长的时间 XTLVLD 才能有效。 外部晶体配置电路中的电容提供晶体正确振荡所需要的负载。从晶体来看,这两个电容 是“串联”的,与 XTAL1 和 XTAL2 引脚的寄生电容“并联”。 注:负载电容的大小取决于晶体的振荡频率和生产厂家。计算负载电容值时请参考晶体 的数据手册。 例如,使用 32.768 KHz 的音叉晶体,建议的负载电容为 12.5 pF,应采用图 12.1 中的配置 选项 1。负载电容与 XTAL 引脚的寄生电容的总值应为 25 pF。如果每个 XTAL 引脚的寄生电 容值为 3 pF,则采用 22 pF 的负载电容后将跨接在晶体两端的等效电容为 12.5 pF,如图 12.2 所示。 图 12.6 32.768 KHz 外部晶体示例 22 pF XTAL1 32.768 kHz 10 M 22 pF XTAL2 注意,晶体振荡器电路对 PCB 布局非常敏感。应将晶体尽可能地靠近器件的 XTAL 引脚, 布线应尽可能地短并用地平面屏蔽,以防止其它引线引入噪声或干扰。 96 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 12.5 外部 RC 示例 如果使用外部 RC 网络作为 MCU 的外部振荡源,则配置电路为图 11.1 中的选项 2。电容 不应大于 100pF;但当电容值很小时,PCB 的寄生电容将在总电容中占支配地位,使频率偏差 很大。为了确定 OSCXCN 寄存器中所需要的外部振荡器频率控制值(XFCN),首先选择能产 生所要求的振荡频率的 RC 网络值。如果所希望的频率是 100kHz,选 R = 246kΩ和 C = 50pF: f= 1.23*103/RC = 1.23*103/[246*50] = 0.1MHz = 100kHz 查图 12.5 中的表,得到所需要的 XFCN 值为 010b。 12.6 外部电容示例 如使用外部电容作为 MCU 的外部振荡源,则电路为图 11.1 中的选项 3。电容不应大于 100pF;但当电容值很小时,PCB 的寄生将在总电容中占支配地位,使频率偏差很大。为了确 定 OSCXCN 寄存器中所需要的外部振荡器频率控制值(XFCN),选择要用的电容并利用下面 的公式计算振荡频率。假设 VDD = 3.0V 和 C = 50pF: f = KF / (C * VDD) = KF / (50*3) MHz f = KF / 150 MHz 如果所需要的频率大约为 150kHz,从图 11.4 的表中选择 K 因子,得到 KF = 22: f = 22 / 150 = 0.146 MHz,或 146 kHz。 因此,本例中要用的 XFCN 值为 011b。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 97 C8051F310/1 混合信号 ISP FLASH 微控制器 13. 端口输入/输出 数字和模拟资源可以通过 29 个 I/O 引脚(C8051F310)或 25 个 I/O 引脚(C8051F311) 使用。每个引脚都可以被定义为通用 I/O(GPIO)或模拟输入。端口引脚被组织为三个 8 位口 和一个 5 位口(C8051F310)或一个 1 位口(C8051F311)。P0.0 ~ P2.3 可以被分配给内部数字 资源,如图 13.3 所示。设计者完全控制数字功能的引脚分配,只受 I/O 引脚数的限制。这种 资源分配的灵活性是通过使用优先权交叉开关译码器实现的。注意,不论交叉开关的设置如 何,端口 I/O 引脚的状态总是可以被读到相应的端口锁存器。 交叉开关根据优先权译码表(图 13.3 和图 13.4)为所选择的内部数字资源分配 I/O 引脚。 寄存器 XBR0 和 XBR1(见图 13.5 – 13.6)用于选择内部数字功能。 所有端口 I/O 都耐 5V 电压(端口 I/O 单元示于图 13.2)。端口 I/O 单元可以被配置为漏极 开路或推挽方式(在端口输出方式寄存器 PnMDOUT 中设置,n = 0,1,2,3)。表 13.1 给出了端 口 I/O 的电气特性。 图 13.1 端口 I/O 功能框图 XBR0, XBR1, PnMDOUT, PnSKIP Registers PnMDIN Registers Highest Priority Lowest Priority 2 UART 4 SPI 2 SMBus CP0 2 Outputs CP1 2 Outputs SYSCLK PCA 6 2 T0, T1 8 P0 (P0.0-P0.7) 8 P1 (P1.0-P1.7) 8 P2 (P2.0-P2.7) 8 P3 (P3.0-P3.4) Priority Decoder 8 P0 I/O Cells P0.0 P0.7 Digital 8 P1 P1.0 Crossbar I/O Cells P1.7 8 P2 I/O Cells P2.0 P2.7 5 P3 I/O Cells P3.0 P3.4 Note: P3.1-P3.4 only available on the C8051F310 98 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 /弱上拉 推挽 /端口输出使能 端口输出 模拟输入 端口输入 图 13.2 端口 I/O 单元框图 模拟选择 VDD GND VDD (弱上拉) 端口 引脚 13.1 优先权交叉开关译码器 优先权交叉开关译码器(图 13.3)为每个 I/O 功能分配优先权,从优先权最高的 UART0 开始。当一个数字资源被选择时,尚未分配的端口引脚中的最低位被分配给该资源(UART0 总是使用引脚 4 和 5)。如果一个端口引脚已经被分配,则交叉开关在为下一个被选择的资源 分配引脚时将跳过该引脚。此外,交叉开关还将跳过在 PnSKIP 寄存器中被置‘1’的那些位 所对应的引脚。PnSKIP 寄存器允许软件跳过那些被用作模拟输入、特定功能或 GPIO 的引脚。 注意:如果一个端口引脚被一个外设使用而不经过交叉开关,则该引脚在 PnSKIP 寄存器 中的对应位应被置‘1’。这种情况适用于 P0.0(如果使用 VREF)、P0.3 和/或 P0.2(如果外部 振荡器电路被使能)、P0.6(如果 ADC 被配置为使用外部转换启动信号 CNVSTR)和任何被 选择的 ADC 或比较器输入。交叉开关跳过那些已经被分配的引脚,移向下一个未被分配的引 脚。图 13.3 示出没有引脚被跳过(P0SKIP, P1SKIP, P2SKIP = 0x00)的优先权交叉开关译码表; 图 13.4 给出了 XTAL1(P0.2)脚和 XTAL2(P0.3)脚被跳过情况下(P0SKIP = 0x30)的交叉开关 优先权译码表。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 99 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.3 没有引脚被跳过的交叉开关优先权译码表 P0 P1 P2 SF Signals PIN I/O TX0 RX0 SCK MISO MOSI NSS * SDA SCL CP0 CP0A CP1 CP1A SYSCLK CEX0 CEX1 CEX2 CEX3 CEX4 ECI T0 T1 012345670123456701234567 00000000000000000000 P0SKIP[0:7] P1SKIP[0:7] P2SKIP[0:3] Port pin potentially available to peripheral SF Signals Special Function Signals are not assigned by the Crossbar. When these signals are enabled, the Crossbar must be manually configured to skip their corresponding port pins. * NSS is only pinned out in 4-wire SPI mode. 100 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.4 晶体引脚被跳过的交叉开关优先权译码表 P0 P1 P2 SF Signals PIN I/O TX0 RX0 SCK MISO MOSI NSS SDA SCL CP0 CP0A CP1 CP1A SYSCLK CEX0 CEX1 CEX2 CEX3 CEX4 ECI T0 T1 012345670123456701234567 00 11 00 00 00 00 00 00 00 00 P0SKIP[0:7] P1SKIP[0:7] P2SKIP[0:3] Port pin potentially available to peripheral SF Signals Special Function Signals are not assigned by the Crossbar. When these signals are enabled, the Crossbar must be manually configured to skip their corresponding port pins. * NSS is only pinned out in 4-wire SPI mode. 寄存器 XBR0 和 XBR1 用于为数字 I/O 资源分配物理 I/O 引脚。注意,当 SMBus 被选择 时,交叉开关将为其分配两个引脚(SDA 和 SCL)。当 UART 被选择时,交叉开关也为其分 配两个引脚(TX 和 RX)。UART0 的引脚分配是固定的(这是出于引导装入的目的): UART TX0 总是被分配到 P0.4;UART RX0 总是被分配到 P0.5。在优先功能被分配之后,标准端口 I/O 是连续的。 注意:SPI 可以工作在三线或四线方式,由 SPI0CN 寄存器中的 NSSMD1-NSSMD0 位指 定。根据 SPI 方式,NSS 信号可以连到端口引脚,也可以不连到端口引脚。 13.2 端口 I/O 初始化 端口 I/O 初始化包括以下步骤: 1. 用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输入方式(模拟或数字)。 2. 用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的输出方式(漏极开路或推 挽)。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 101 C8051F310/1 混合信号 ISP FLASH 微控制器 3. 用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那些引脚。 4. 将引脚分配给要使用的外设。 5. 使能交叉开关(XBARE =‘1’)。 所有端口引脚都必须被配置为模拟或数字输入。被用作比较器或 ADC 输入的任何引脚都 必须被配置为模拟输入。当一个引脚被配置为模拟输入时,它的弱上拉、数字驱动器和数字 接收器都被禁止,这可以节省功耗并减小模拟输入的噪声。被配置为数字输入的引脚可以被 模拟外设使用,但不建议这样做。 此外,应将交叉开关配置为跳过所有被用作模拟输入的引脚(通过将 PnSKIP 寄存器中的 对应位置‘1’来实现)。端口输入方式在 PnMDIN 寄存器中设置,其中‘1’表示数字输入, ‘0’表示模拟输入。复位后所有引脚的缺省设置都是数字输入。对 PnMDIN 寄存器的详细说 明见图 13.8。 I/O 引脚的输出驱动器特性由端口输出方式寄存器 PnMDOUT 中的对应位决定,每个端口 输出驱动器都可被配置为漏极开路或推挽方式。不管交叉开关是否将端口引脚分配给某个数 字外设,都需要对端口驱动器的输出方式进行设置。唯一的例外是 SMBus 引脚(SDA,SCL), 不管 PnMDOUT 的设置如何,这两个引脚总是被配置为漏极开路。 当 XBR1 寄存器中的 WEAKPUD 位为‘0’时,输出方式为漏极开路的那些引脚的弱上 拉被使能。弱上拉不影响被配置为推挽方式的端口 I/O。当漏极开路输出被驱动为逻辑‘0’ 时,弱上拉被自动关断(禁止)以避免不必要的功率消耗。 寄存器 XBR0 和 XBR1 必须被装入正确的值以选择设计所需要的数字 I/O 功能。置‘1’ XBR1 中的 XBARE 位将使能交叉开关。不管 XBRn 寄存器的设置如何,在交叉开关被使能之 前,外部引脚保持标准端口 I/O 方式(输入)。对于给定的 XBRn 设置,可以使用优先权译码 表确定 I/O 引脚分配;另一种方法是使用 Silicon Labs IDE 软件的配置向导功能来确定基于 XBRn 寄存器设置的 I/O 引脚分配。 注意:为使端口引脚工作在标准端口 I/O 输出方式,交叉开关必须被使能。当交叉开关被 禁止时,端口输出驱动器被禁止。 102 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.5 XBR0:端口 I/O 交叉开关寄存器 0 R/W CP1AE 位7 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: R/W CP1E 位6 R/W CP0AE 位5 R/W CP0E 位4 R/W R/W SYSCKE SMB0E 位3 位2 R/W SPI0E 位1 CP1AE:比较器 1 异步输出使能位 0:CP1A 不连到端口引脚。 1:CP1A 连到端口引脚。 CP1E:比较器 1 输出使能位 0:CP1 不连到端口引脚。 1:CP1 连到端口引脚。 CP0AE:比较器 0 异步输出使能位 0:CP0A 不连到端口引脚。 1:CP0A 连到端口引脚。 CP0E:比较器 0 输出使能位 0:CP0 不连到端口引脚。 1:CP0 连到端口引脚。 SYSCKE:/SYSCLK 输出使能位 0:/SYSCLK 不连到端口引脚; 1:/SYSCLK 连到端口引脚。 SMB0E:SMBus I/O 使能位 0:SMBus I/O 不连到端口引脚。 1:SMBus I/O 连到端口引脚。 SPI0E:SPI I/O 使能位 0:SPI I/O 不连到端口引脚。 1:SPI I/O 连到端口引脚。 URT0E:UART I/O 允许位 0:UART I/O 不连到端口引脚。 1:UART TX0, RX0 连到端口引脚 P0.4 和 P0.5。 R/W URT0E 位0 复位值 00000000 SFR地址: 0xE1 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 103 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.6 XBR1:端口 I/O 交叉开关寄存器 1 R/W R/W R/W R/W R/W R/W R/W R/W WEAKPUD XBARE T1E T0E ECIE PCA0ME 位7 位6 位5 位4 位3 位2 位1 位0 位 7: 位 6: 位 5: 位 4: 位 3: 位 2-0: WEAKPUD:端口 I/O 弱上拉禁止位。 0:弱上拉使能(被配置为模拟输入的端口 I/O 除外)。 1:弱上拉禁止。 XBARE:交叉开关使能位 0:交叉开关禁止。 1:交叉开关使能。 T1E:T1 使能位 0:T1 不连到端口引脚。 1:T1 连到端口引脚。 T0E:T0 使能位 0:T0 不连到端口引脚。 1:T0 连到端口引脚。 ECIE:PCA0 外部计数输入使能位 0:ECI 不连到端口引脚。 1:ECI 连到端口引脚。 PCA0ME:PCA 模块 I/O 使能位 000:所有的 PCA I/O 都不连到端口引脚。 001:CEX0 连到端口引脚。 010:CEX0、CEX1 连到端口引脚。 011:CEX0、CEX1、CEX2 连到端口引脚。 100:CEX0、CEX1、CEX2、CEX3 连到端口引脚。 101:CEX0、CEX1、CEX2、CEX3、CEX4 连到端口引脚。 复位值 00000000 SFR地址: 0xE2 104 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 13.3 通用端口 I/O 未被交叉开关分配的端口引脚和未被模拟外设使用的端口引脚都可以作为通用 I/O。通过 对应的端口数据寄存器访问端口 P3-0,这些寄存器既可以按位寻址也可以按字节寻址。向端 口写入时,数据被锁存到端口数据寄存器中,以保持引脚上的输出数据值不变。读端口数据 寄存器(或端口位)将总是返回引脚本身的逻辑状态,而与 XBRn 的设置值无关,即使在引 脚被交叉开关分配给其它信号时,端口寄存器总是可以其对应的端口 I/O 引脚。但在对端口 SFR 执行下面的读-修改-写指令(ANL、ORL、XRL、JBC、CPL、INC、DEC、DJNZ)和对 端口 SFR 中的某一位执行 MOV、CLR、SETB 期间例外。这些指令读端口寄存器(而不是引 脚)的值,修改后再写回端口 SFR。 图 13.7 P0:端口 0 寄存器 R/W P0.7 位7 位 7-0: R/W R/W R/W R/W R/W R/W R/W 复位值 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 11111111 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0x80 P0.[7:0] 写 - 输出出现在 I/O 引脚(根据交叉开关寄存器的设置)。 0:逻辑低电平输出。 1:逻辑高电平输出。(若相应的 P0MDOUT.n 位 = 0,则为高阻态)。 读 - 读那些在 P0MDIN 中被选择为模拟输入的引脚时总是返回‘1’。被配 置为数字输入时直接读端口引脚。 0:P0.n 为逻辑低电平。 1:P0.n 为逻辑高电平。 图 13.8 P0MDIN:端口 0 输入方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 11111111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xF1 位 7-0: P0.7 – P0.0 输入方式配置位(分别对应) 当端口引脚被配置为模拟输入时,其弱上拉、数字驱动器和数字接收器都 被禁止。 0:对应的 P0.n 引脚被配置为模拟输入。 1:对应的 P0.n 引脚不配置为模拟输入。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 105 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.9 P0MDOUT:端口 0 输出方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xA4 位 7-0: P0.7 – P0.0 输出方式配置位(分别对应)。如果 P0MDIN 寄存器中的对应位为 逻辑‘0’,则输出方式配置位被忽略。 0:对应的 P0.n 输出为漏极开路。 1:对应的 P0.n 输出为推挽方式。 注:当 SDA 和 SCL 出现在端口引脚时,总是被配置为漏极开路,与 P0MDOUT 的设置值无关。 图 13.10 P0SKIP:端口 0 跳过寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xD4 位 7-0: 端口 0 交叉开关跳过使能位。 这些位选择被交叉开关译码器跳过的端口引脚。作为模拟输入(ADC 或比较 器)或特殊功能(VREF 输入、外部振荡器电路、CNVSTR 输入)的引脚应被 交叉开关跳过。 0:对应的 P0.n 不被交叉开关跳过。 1:对应的 P0.n 被交叉开关跳过。 图 13.11 P1:端口 1 寄存器 R/W P1.7 位7 位 7-0: R/W R/W R/W R/W R/W R/W R/W 复位值 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 11111111 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0x90 P1.[7:0] 写 - 输出出现在 I/O 引脚(根据交叉开关寄存器的设置)。 0:逻辑低电平输出。 1:逻辑高电平输出。(若相应的 P1MDOUT.n 位 = 0,则为高阻态)。 读 - 读那些在 P1MDIN 中被选择为模拟输入的引脚时总是返回‘1’。被配 置为数字输入时直接读端口引脚。 0:P1.n 为逻辑低电平。 1:P1.n 为逻辑高电平。 106 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.12 P1MDIN:端口 1 输入方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 11111111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xF2 位 7-0: P1.7 – P1.0 输入方式配置位(分别对应) 当端口引脚被配置为模拟输入时,其弱上拉、数字驱动器和数字接收器都 被禁止。 0:对应的 P1.n 引脚被配置为模拟输入。 1:对应的 P1.n 引脚不配置为模拟输入。 图 13.13 P1MDOUT:端口 1 输出方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xA5 位 7-0: P1.7 – P1.0 输出方式配置位(分别对应)。如果 P1MDIN 寄存器中的对应位为 逻辑‘0’,则输出方式配置位被忽略。 0:对应的 P1.n 输出为漏极开路。 1:对应的 P1.n 输出为推挽方式。 图 13.14 P1SKIP:端口 1 跳过寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xD5 位 7-0: 端口 1 交叉开关跳过使能位。 这些位选择被交叉开关译码器跳过的端口引脚。作为模拟输入(ADC 或比较 器)或特殊功能(VREF 输入、外部振荡器电路、CNVSTR 输入)的引脚应被 交叉开关跳过。 0:对应的 P1.n 不被交叉开关跳过。 1:对应的 P1.n 被交叉开关跳过。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 107 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.15 P2:端口 2 寄存器 R/W P2.7 位7 位 7-0: R/W R/W R/W R/W R/W R/W R/W 复位值 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 11111111 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0xA0 P2.[7:0] 写 - 输出出现在 I/O 引脚(根据交叉开关寄存器的设置)。 0:逻辑低电平输出。 1:逻辑高电平输出。(若相应的 P2MDOUT.n 位 = 0,则为高阻态)。 读 - 读那些在 P2MDIN 中被选择为模拟输入的引脚时总是返回‘1’。被配 置为数字输入时直接读端口引脚。 0:P2.n 为逻辑低电平。 1:P2.n 为逻辑高电平。 图 13.16 P2MDIN:端口 2 输入方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 11111111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xF3 位 7-0: P2.7 – P2.0 输入方式配置位(分别对应) 当端口引脚被配置为模拟输入时,其弱上拉、数字驱动器和数字接收器都 被禁止。 0:对应的 P2.n 引脚被配置为模拟输入。 1:对应的 P2.n 引脚不配置为模拟输入。 图 13.17 P2MDOUT:端口 2 输出方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xA6 位 7-0: P2.7 – P2.0 输出方式配置位(分别对应)。如果 P2MDIN 寄存器中的对应位为 逻辑‘0’,则输出方式配置位被忽略。 0:对应的 P2.n 输出为漏极开路。 1:对应的 P2.n 输出为推挽方式。 108 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.18 P2SKIP:端口 20 跳过寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xD6 位 7-0: 端口 2 交叉开关跳过使能位。 这些位选择被交叉开关译码器跳过的端口引脚。作为模拟输入(ADC 或比较 器)或特殊功能(VREF 输入、外部振荡器电路、CNVSTR 输入)的引脚应被 交叉开关跳过。 0:对应的 P2.n 不被交叉开关跳过。 1:对应的 P2.n 被交叉开关跳过。 注意:只有 P2.0 ~ P2.3 与交叉开关相连。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 109 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.19 P3:端口 3 寄存器 R/W P3.7 位7 位 7-0: R/W R/W R/W R/W R/W R/W R/W 复位值 P30.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 11111111 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0xB0 P3.[7:0] 写 - 输出出现在 I/O 引脚。 0:逻辑低电平输出。 1:逻辑高电平输出。(若相应的 P3MDOUT.n 位 = 0,则为高阻态)。 读 - 读那些在 P0MDIN 中被选择为模拟输入的引脚时总是返回‘1’。被配 置为数字输入时直接读端口引脚。 0:P3.n 为逻辑低电平。 1:P3.n 为逻辑高电平。 注意:对于 C8051F310,只有 P3.0 ~ P3.4 有对应的引脚;对于 C8051F311,只 有 P3.0 有对应的引脚。 图 13.20 P3MDIN:端口 3 输入方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 - - - 11111111 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xF4 位 7-5: 未用。读 = 000b,写 = 忽略。 位 4-0: P3MDIN.[4:0]:P3.4 – P3.0 输入方式配置位(分别对应) 当端口引脚被配置为模拟输入时,其弱上拉、数字驱动器和数字接收器都 被禁止。 0:对应的 P3.n 引脚被配置为模拟输入。 1:对应的 P3.n 引脚不配置为模拟输入。 注意:对于 C8051F310,只有 P3.0 ~ P3.4 有对应的引脚;对于 C8051F311,只 有 P3.0 有对应的引脚。 110 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 13.21 P3MDOUT:端口 3 输出方式寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xA7 位 7-5: 未用。读 = 000b,写 = 忽略。 位 4-0: P3MDOUT.[4:0]:P3.4 – P3.0 输出方式配置位(分别对应)。如果 P3MDIN 寄 存器中的对应位为逻辑‘0’,则输出方式配置位被忽略。 0:对应的 P3.n 输出为漏极开路。 1:对应的 P3.n 输出为推挽方式。 注意:对于 C8051F310,只有 P3.0 ~ P3.4 有对应的引脚;对于 C8051F311, 只有 P3.0 有对应的引脚。 表 13.1 端口 I/O 直流电气特性 VDD = 2.7V – 3.6V, -40℃到+85℃(除非特别说明)。 参数 条件 最小值 输出高电压 (VOH) 输出低电压 (VOL) 输入高电压 (VIH) 输入低电压 (VIL) 输入漏电流 IOH = -10µA,端口I/O为推挽方式 IOH = -3mA,端口I/O为推挽方式 IOH = -10mA,端口I/O为推挽方式 IOL = 10µA IOL = 8.5mA IOL = 25mA VDD-0.1 VDD-0.7 2.0 弱上拉禁止 弱上拉使能,VIN = 0 V 典型值 最大值 VDD-0.8 0.1 0.6 1.0 0.8 ±1 25 40 单位 V V V V µA 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 111 C8051F310/1 混合信号 ISP FLASH 微控制器 14. SMBus SMBus I/O接口是一个双线的双向串行总线。SMBus完全符合系统管理总线规范 1.1 版, 与I2C串行总线兼容。系统控制器对总线的读写操作都是以字节为单位的,由SMBus接口自动 控制数据的串行传输。在作为主或从器件时,数据传输的最大速率可达系统时钟频率的十分 之一(这可能比SMBus的规定速度要快,取决于所使用的系统时钟)。可以采用延长低电平时 间的方法协调同一总线上不同速度的器件。 SMBus 可以工作在主和/或从方式,一个总线上可以有多个主器件。SMBus 提供了 SDA (串行数据)控制、SCL(串行时钟)产生和同步、仲裁逻辑以及起始/停止的控制和产生电 路。有三个与 SMBus 相关的特殊功能寄存器: SMB0CF 配置 SMBus,SMB0CN 控制 SMBus 的状态,SMB0DAT 为数据寄存器,用于发送和接收 SMBus 数据和从地址。 图 14.1 SMBus 原理框图 SMB0CN MT SSAAAS AXT TCRC I SMAOK BK TO RL ED QO RE S T SMB0CF E I BESSSS N N U X MMMM SHS T BBB B M YHT FCC B OOTS S LEE1 0 D 中断请求 00 T0溢出 01 T1溢出 10 TMR2H溢出 11 TMR2L溢出 SMBUS控制逻辑 仲裁 SCL同步 状态产生 SCL产生(主方式) IRQ产生 数据路径 控制 SCL 控制 SDA 控制 滤波器 SCL 交 N 叉 开 SMB0DAT 76543210 滤波器 关 SDA 端口I/O N 112 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 14.1 支持文档 假设读者熟悉或有条件阅读下列支持文档: 1. I2C总线及使用(包含规范),菲力浦半导体。 2. I2C总线规范—2.0 版,菲力浦半导体。 3. 系统管理总线规范—1.1 版 14.2 SMBus 配置 图 14.2 给出了一个典型的 SMBus 配置。SMBus 接口的工作电压可以在 3.0V 和 5.0V 之间, 总线上不同器件的工作电压可以不同。SCL(串行时钟)和 SDA(串行数据)线是双向的, 必须通过一个上拉电阻或等效电路将它们连到电源电压。连接在总线上的每个器件的 SCL 和 SDA 都必须是漏极开路或集电极开路的,因此当总线空闲时,这两条线都被拉到高电平。总 线上的最大器件数只受规定的上升和下降时间的限制,上升和下降时间分别不能超过 300ns 和 1000ns。 图 14.2 典型 SMBus 配置 VDD = 5V VDD = 3V VDD = 5V VDD = 3V 主器件 从器件1 从器件2 SDA SCL 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 113 C8051F310/1 混合信号 ISP FLASH 微控制器 14.3 SMBus 操作 有两种可能的数据传输类型:从主发送器到所寻址的从接收器(写)和从被寻址的从发 送器到主接收器(读)。这两种数据传输都由主器件启动,主器件还在 SCL 上提供串行时钟。 SMBus 接口可以工作在主方式或从方式。总线上可以有多个主器件。如果两个或多个主器件 同时启动数据传输,仲裁机制将保证有一个主器件会赢得总线。注意:没有必要在一个系统 中指定某个器件作为主器件;任何一个发送起始条件(START)和从器件地址的器件就成为 该次数据传输的主器件。 一次典型的 SMBus 数据传输包括一个起始条件(START)、一个地址字节(位 7-1:7 位 从地址;位 0:R/W 方向位)、一个或多个字节的数据和一个停止条件(STOP)。每个接收的 字节(由一个主器件或从器件)都必须用 SCL 高电平期间的 SDA 低电平(见图 14.3)来确认 (ACK)。如果接收器件不确认(ACK),则发送器件将读到一个“非确认”(NACK),这用 SCL 高电平期间的 SDA 高电平表示。 方向位占据地址字节的最低位。方向位被设置为逻辑 1 表示这是一个“读”(READ)操 作,方向位为逻辑 0 表示这是一个“写”(WRITE)操作。 所有的数据传输都由主器件启动,可以寻址一个或多个目标从器件。主器件产生一个起 始条件,然后发送地址和方向位。如果本次数据传输是一个从主器件到从器件的写操作,则 主器件每发送一个数据字节后等待来自从器件的确认。如果是一个读操作,则由从器件发送 数据并等待主器件的确认。在数据传输结束时,主器件产生一个停止条件,结束数据交换并 释放总线。图 14.3 示出了一次典型的 SMBus 数据传输过程。 图 14.3 SMBus 数据传输 SCL SDA SLA6 SLA5-0 R/W D7 D6-0 START 从地址+R/W ACK 数据字节 NACK STOP 14.3.1 总线仲裁 一个主器件只能在总线空闲时启动一次传输。在一个停止条件之后或 SCL 和 SDA 保持高 电平已经超过了指定时间,则总线是空闲的。两个或多个主器件可能在同一时刻产生起始条 件,所以使用仲裁机制迫使一个主器件放弃总线。这些主器件继续发送起始条件,直到其中 一个主器件发送高电平而其它主器件在 SDA 上发送低电平。试图发送高电平的主器件将检测 到 SDA 上的低电平而退出竞争。赢得总线的器件继续其数据传输过程,而未赢得总线的器件 成为从器件。该仲裁机制是非破坏性的:总会有一个器件赢得总线,不会发生数据丢失。 114 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 14.3.2 时钟低电平扩展 SMBus提供一种与I2C类似的同步机制,允许不同速度的器件共存于一个总线上。为了使 低速从器件能与高速主器件通信,在传输期间采取低电平扩展。从器件可以保持SCL为低电平 以扩展时钟低电平时间,这实际上相当于降低了串行时钟频率。 14.3.3 SCL 低电平超时 如果 SCL 线被总线上的从器件保持为低电平,则不能再进行通信,并且主器件也不能强 制 SCL 为高电平来纠正这种错误情况。为了解决这一问题,SMBus 协议规定:参加一次数据 传输的器件必须检查时钟低电平时间,若超过 25ms 则认为是“超时”。检测到超时条件的器 件必须在 10ms 以内复位通信电路。 当 SMB0CF 中的 SMBTOE 位被置位时,定时器 3 被用于检测 SCL 低电平超时。定时器 3 在 SCL 为高电平时被强制重装载,在 SCL 为低电平时开始计数。在定时器 3 被允许并且溢出 周期被配置为 25ms 时(且 SMBTOE 被置 1),定时器 3 中断服务程序可以用于对 SMBus 复位 (在发生 SCL 低电平超时)。 14.3.4 SCL 高电平(SMBus 空闲)超时 SMBus 标准规定:如果一个器件保持 SCL 和 SDA 线为高电平的时间超过 50 微秒,则可 认为总线处于空闲状态。当 SMB0CF 中的 SMBFTE 位被置‘1’时,如果 SCL 和 SDA 保持 高电平的时间超过 10 个 SMBus 时钟周期,总线将被视为空闲。如果一个 SMBus 器件正等待 产生一个主起始条件,则该起始条件将在总线空闲超时之后立即产生。注意:总线空闲超时 检测需要一个时钟源,即使对从器件也不例外。 14.4 SMBus 的使用 SMBus 可以工作在主方式或从方式。接口电路提供串行传输的时序和移位控制;更高层 的协议由用户软件实现。SMBus 接口提供下述与应用无关的特性: 以字节为单位的串行数据传输; SCL 时钟信号产生(只限于主方式)和 SDA 数据同步; 超时/总线错误识别(在配置寄存器 SMB0CF 中定义); START/STOP 定时、检测和产生; 总线仲裁; 中断产生; 状态信息。 每次数据字节或从地址传输都产生 SMBus 中断。发送数据时在 ACK 周期后产生中断, 使软件能读取接收到的 ACK 值;接收数据时在 ACK 周期之前产生中断,使软件能确定要发 出的 ACK 值。 主器件产生起始条件时会产生一个中断,指示数据传输开始;从器件在检测到停止条件 时产生一个中断,指示数据传输结束。软件应通过读 SMB0CN(SMBus 控制寄存器)来确定 SMBus 中断的原因。 SMBus 配置选项包括: 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 115 C8051F310/1 混合信号 ISP FLASH 微控制器 1. 超时检测(SCL 低电平超时和/或总线空闲超时); 2. SDA 建立和保持时间扩展; 3. 从事件允许/禁止 4. 时钟源选择。 这些选项在 SMB0CF 寄存器中设定,见“14.4.1 SMBus 配置寄存器”。 14.4.1 SMBus 配置寄存器 SMBus 配置寄存器(SMB0CF,见图 14.5)用于使能 SMBus 主和/或从方式,选择 SMBus 时钟源和设置 SMBus 时序和超时选项。当 ENSMB 位被置‘1’时,SMBus 的所有主和从事 件都被允许。可以通过将 INH 位置‘1’来禁止从事件。在从事件被禁止的情况下,SMBus 接口仍然监视 SCL 和 SDA 引脚;但在接收到地址时会发出 NACK(非确认)信号,并且不会 产生任何从中断。当 INH 被置位时,在下一个起始条件(START)后所有的从事件都将被禁 止(当前传输过程的中断将继续)。 SMBCS1-0 位选择 SMBus 时钟源(见表 14.1),时钟源只在主方式或空闲超时检测被使能 时使用。当 SMBus 接口工作在主方式时,所选择的时钟源的溢出周期决定 SCL 低电平和高电 平的最小时间,该最小时间由下面的方程 14.1 给出。注意,SMBus 可以与其它外设共享该时 钟源,前提是时钟源定时器一直保持运行状态。例如,定时器 1 溢出可以同时用于产生 SMBus 和 UART 波特率。 表 14.1 SMBus 时钟源选择 SMBCS1 0 0 1 1 SMBCS0 0 1 0 1 SMBus 时钟源 定时器 0 溢出 定时器 1 溢出 定时器 2 高字节溢出 定时器 2 低字节溢出 方程 14.1 最小 SCL 高和低电平时间 T = T = f 1 HighMin LowMin ClockSourceOverflow 其中THighMin为最小SCL高电平时间,TLowMin为最小SCL低电平时间,fClockSourceOverflow为时钟 源的溢出频率。 所选择的时钟源应被配置为能产生由方程 14.1 所定义的最小 SCL 高电平和低电平时间。 当接口工作在主方式时(并且 SCL 不被总线上的任何其它器件驱动),典型的 SMBus 位速率 可由下面的方程 14.2 估算: 方程 14.2 典型 SMBus 位速率 位速率 = f ClockSourceOverflow 3 图 14.4 给出了由方程 14.2 定义的典型SCL波形。注意,THIGH通常为TLOW的两倍。实际的 SCL输出波形可能会因总线上有其它器件而发生改变(SCL可能被低速从器件扩展低电平,或 116 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 被其它参与竞争的主器件驱动为低电平)。当工作在主方式时,位速率不能超过由方程 14.1 定 义的极限值。 图 14.4 典型的 SMBus SCL 波形 定时器源 溢出 SCL TLow THigh SCL高电平超时 设置 EXTHOLD 位为逻辑‘1’将扩展 SDA 线的最小建立时间和保持时间。最小 SDA 建 立时间定义了在 SCL 上升沿到来之前 SDA 的最小稳定时间。最小 SDA 保持时间定义了在 SCL 下降沿过去之后 SDA 继续保持稳定的最小时间。SMBus 规定的最小建立和保持时间分别为 250ns 和 300ns。必要时应将 EXTHOLD 位置‘1’,以保证最小建立和保持时间符合 SMBus 规范。表 14.2 列出了对应两种 EXTHOLD 设置情况的最小建立和保持时间。当 SYSCLK 大于 10MHz 时,通常需要扩展建立和保持时间。 表 14.2 最小 SDA 建立和保持时间 EXTHOLD 0 1 最小 SDA 建立时间 Tlow – 4 个系统时钟 或 1 个系统时钟 + 软件延时† 11 个系统时钟 最小 SDA 保持时间 3 个系统时钟 12 个系统时钟 †发送ACK位和所有数据传输中MSB的建立时间。软件延时 发生在写 SMB0DAT 或 ACK 到 SI 被清除之间。注意,如果 写 ACK 和清除 SI 发生在同一个写操作,则软件延时为 0。 当 SMBTOE 位被置‘1’的情况下,定时器 3 应被配置为以 25ms 的溢出周期溢出,以检 测 SCL 低电平超时。SMBus 接口在 SCL 为高电平时强制重装载定时器 3,并允许定时器 3 在 SCL 为低电平时开始计数。应使用定时器 3 中断服务程序对 SMBus 复位,这可通过先禁止然 后再重新使能 SMBus 接口来实现。定时器 3 的配置说明见“17.3 定时器 3”。 通过将 SMBFTE 位置‘1’来使能 SMBus 总线超时检测。当该位被置‘1’时,如果 SCL 和 SDA 保持高电平的时间超过 10 个 SMBus 时钟周期(见图 14.4),总线将被视为空闲。当 检测到空闲超时时,SMBus 接口的响应就如同检测到一个停止条件(产生一个中断,STO 被 置位)。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 117 C8051F310/1 混合信号 ISP FLASH 微控制器 图 14.5 SMB0CF:SMBus 时钟/配置寄存器 R R/W R/W R/W R/W R/W R/W R/W 复位值 ENSMB 位7 位 7: INH BUSY EXTHOLD 位6 位5 位4 ENSMB:SMBus 使能 SMBTOE 位3 SMBFTE 位2 SMBCS1 位1 SMBCS0 00000000 位0 SFR地址: 0xC1 该位使能/禁止 SMBus 串行接口。当被使能时,接口一直监视 SDA 和 SCL 引脚。 0:禁止 SMBus。 1:使能 SMBus。 位 6: INH:SMBus 从禁止 当该位被设置为逻辑‘1’时,SMBus 接口不产生从事件中断。这实际上相当于 将 SMBus 从器件从总线上移出。主方式中断不受影响。 0:SMBus 从方式允许。 1:SMBus 从方式禁止。 位 5: BUSY:忙状态标志 当正在进行一次传输时,该位由硬件置‘1’。当检测到停止条件或空闲超时时, 该位被清‘0’。 位 4: EXTHOLD:SMBus 建立和保持时间扩展允许 该位控制 SDA 的建立和保持时间(见表 14.2)。 0:禁止 SDA 建立和保持时间扩展。 1:允许 SDA 建立和保持时间扩展 位 3: SMBTOE:SMBus SCL 超时检测使能位 该位使能/禁止 SCL 低电平超时检测。当被置‘1’时,SMBus 接口在 SCL 为高 电平时强制重装载定时器 3,并允许定时器 3 在 SCL 为低电平时开始计数。如 果定时器 3 被配置为分割方式(两个 8 位计数器,T3SPLIT 被置 1),则当 SCL 为高电平时,只有定时器 3 的高字节被重装载。应将定时器 3 编程为每 25ms 产 生一次中断,并使用定时器 3 中断服务程序对 SMBus 复位。 位 2: SMBFTE:SMBus 空闭超时检测使能位 当该位被置‘1’时,如果 SCL 和 SDA 保持高电平的时间超过 10 个 SMBus 时 钟周期,总线将被视为空闲。 位 1-0: SMBCS1-SMBCS0:SMBus 时钟源选择位 这两位选择用于产生 SMBus 位速率的时钟源。应根据方程 14.1 配置所选器件的 时钟源。 SMBCS1 0 0 1 1 SMBCS0 0 1 0 1 SMBus 时钟源 定时器 0 溢出 定时器 1 溢出 定时器 2 高字节溢出 定时器 2 低字节溢出 118 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 14.4.2 SMBus 控制寄存器 SMBus 控制寄存器(SMB0CN)用于控制 SMBus 接口和提供状态信息(见图 14.6)。 SMB0CN 中的高 4 位(MASTER、TXMODE、STA 和 STO)组成一个状态向量,可利用该状 态向量转移到中断服务程序。MASTER 和 TXMODE 分别指示主/从状态和发送/接收方式。 STA 和 STO 指示自上次 SMBus 中断以来检测到一个起始(START)和/或停止条件 (STOP)。当 SMBus 工作在主方式时,STA 和 STO 还用于产生起始和停止条件。当总线空闲 时,向 STA 写‘1’将使 SMBus 接口进入主方式并产生一个起始条件。在产生起始条件后 STA 不能由硬件清除,必须用软件清除。在主方式,向 STO 写‘1’将使硬件产生一个停止条件, 并在下一个 ACK 周期之后结束当前的数据传输。如果 STA 和 STO 都被置位(在主方式),则 发送一个停止条件后再发送一个起始条件。 当 SMBus 接口作为接收器时,写 ACK 位定义要发出的 ACK 值;当作为发送器时,读 ACK 位将返回最后一个 ACK 周期的接收值。ACKRQ 在每接收到一个字节后置位,表示需要 写待发出的 ACK 值。当 ACKRQ 置位时,软件应在清除 SI 之前向 ACK 位写入要发出的 ACK 值。如果在清除 SI 之前软件未写 ACK 位,接口电路将产生一个 NACK。在向 ACK 位写入后, SDA 线将立即出现所定义的 ACK 值;但 SCL 将保持低电平,直到 SI 被清除。如果接收的从 地址不被确认,则以后的从事件将被忽略,直到检测到下一个起始条件。 ARBLOST 位指示 SMBus 接口是否在一次总线竞争中失败。当接口工作在发送方式时(主 或从),可能出现这种情况。当工作在从方式时,出现这种情况表示发生了总线错误条件。在 每次 SI 被清除后,ARBLOST 被硬件清除。 在每次传输的开始和结束、每个字节帧之后或竞争失败时,SI 位(SMBus 中断标志)被 硬件置‘1’,详见表 14.3。 注意:当 SI 标志被置‘1’时,SMBus 接口暂停工作;SCL 线被保持为低电平,总线状 态被冻结,直到 SI 被清‘0’为止。 表 14.3 列出了影响 SMB0CN 寄存器中各个位的硬件源。有关 SMBus 的状态请参见表 14.4 的 SMBus 状态译码表。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 119 C8051F310/1 混合信号 ISP FLASH 微控制器 图 14.6 SMB0CN:SMBus 控制寄存器 R R R/W R/W R R R/W R/W 复位值 MASTER TXMODE STA 位7 位6 位5 STO ACKRQ ARBLOST 位4 位3 位2 位 7: MASTER:SMBus 主/从标志 ACK 位1 SI 00000000 位0 SFR地址: (可位寻址) 0xC0 该只读位指示 SMBus 是否工作在主方式。 0:SMBus 工作在从方式。 1:SMBus 工作在主方式。 位 6: TXMODE:SMBus 发送方式标志 该只读位指示 SMBus 是否工作在发送器方式。 0:SMBus 工作在接收器方式。 1:SMBus 工作在发送器方式。 位 5: STA:SMBus 起始标志 写: 0:不产生起始条件。 1:当工作在主方式时,若总线空闭,则发送出一个起始条件(如果总线不空 闲,在收到停止条件或检测到超时后再发送起始条件)。当工作在主方式时, 如果 STA 被软件置‘1’,在下一个 ACK 周期之后将产生一个重复起始条件。 读: 0:未检测到起始条件或重复起始条件。 1:检测到起始条件或重复起始条件。 位 4: STO:SMBus 停止标志 写: 0:不发送停止条件。 1:将 STO 置为逻辑‘1’将导致发送一个停止条件(在下一个 ACK 周期之后)。 在产生停止条件之后,硬件将 STO 清为逻辑‘0’。如果 STA 和 STO 都被置‘1’, 则发送一个停止条件后再发送一个起始条件。 读: 0:未检测到停止条件。 1:检测到停止条件(在从方式)或挂起(在主方式)。 位 3: ACKRQ:SMBus 确认请求 当 SMBus 接收到一个字节并需要向 ACK 位写 ACK 响应值时,该只读位被硬 件置‘1’。 位 2: ARBLOST:SMBus 竞争失败标志 当 SMBus 作为发送器在总线竞争中失败时该只读位被置‘1’。在从方式时, 竞争失败表示发生了总线错误条件。 位 1: ACK:SMBus 确认标志 该位定义要发出的 ACK 电平和记录接收的 ACK 电平。应在每接收到一个字节 后写 ACK 位(当 ACKRQ = 1 时),或在发送一个字节后读 ACK 位。 0:接收到“非确认”(在发送器方式)或将发出“非确认”(在接收器方式)。 1:接收到“确认”(在发送器方式)或将发出“确认”(在接收器方式)。 位 0: SI:SMBus 中断标志 当出现表 14.3 列出的条件时该位被硬件置‘1’。SI 只能用软件清除。当 SI 被 置‘1’时, SCL 被保持为低电平,总线状态被冻结。 120 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 位 MASTER TXMODE STA STO ACKRQ ARBLOST ACK SI 表 14.3 影响 SMB0CN 的硬件源 在下述情况被硬件置‘1’: • 产生了起始条件。 • 产生了起始条件。 • 在一个 SMBus 帧开始之前写了 SMB0DAT。 • 在起始条件后接收到一个地址字节。 • 在作为从器件被寻址时检测到一个停止条件。 • 因检测到停止条件而导致竞争失败。 • 接收到一个字节并需要一个 ACK 响应值。 • 当 STA 为‘0’时,主器件检测到一个重复起始条 件(不希望的重复起始条件)。 • 在试图产生一个停止条件或重复起始条件时检测 到 SCL 为低电平。 • 在试图发送‘1’时检测到 SDA 为低电平(ACK 位除外)。 • 在下述情况被硬件清‘0’: • 产生了停止条件。 • 在总线竞争中失败。 • 检测到起始条件。 • 竞争失败。 • 在一个 SMBus 帧开始之前没写 SMB0DAT。 • 必须用软件清除。 • 产生了一个挂起的停止条件。 • 每个 ACK 周期之后。 • 每次 SI 被清除时。 • 输入的 ACK 值为低(确认)。 • 产生了一个起始条件。 • 竞争失败。 • 发送了一个字节并收到一个 ACK/NACK • 接收到一个字节。 • 在起始条件或重复起始条件之后接收到一个从地 址字节+R/W。 • 收到一个停止条件。 • 输入的 ACK 值为高(非确认)。 •必须用软件清除。 14.4.3 数据寄存器 SMBus 数据寄存器 SMB0DAT 保存要发送或刚接收的串行数据字节。在 SI 标志被置‘1’ 时数据是稳定的,此时软件可以安全地读/写数据寄存器。当 SMBus 被使能但 SI 标志被清为 逻辑‘0’时软件不应访问 SMB0DAT 寄存器,因为硬件可能正在对该寄存器中的数据字节进 行移入或移出操作。 SMB0DAT 中的数据总是先移出 MSB。在收到一个字节后,接收数据的第一位位于 SMB0DAT 的 MSB。在数据被移出的同时,总线上的数据被移入。所以 SMB0DAT 中总是保 存最后出现在总线上的数据字节。在竞争失败后,从主发送器变为从接收器时 SMB0DAT 中 的数据或地址保持不变。 图 14.7 SMB0DAT:SMBus 数据寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xC2 位 7-0: SMB0DAT:SMBus 数据 SMB0DAT 寄存器保存要发送到 SMBus 串行接口上的一个数据字节,或刚从 SMBus 串行接口接收到的一个字节。一旦 SI 串行中断标志被置‘1’,CPU 即 可读或写该寄存器。只要 SI 串行中断标志位为逻辑‘1’,该寄存器内的串行 数据就是稳定的。当 SI 标志位不为‘1’时,系统可能正在移入/移出数据, 此时 CPU 不应访问该寄存器。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 121 C8051F310/1 混合信号 ISP FLASH 微控制器 14.5 SMBus 传输方式 SMBus 接口可以被配置为工作在主方式和/或从方式。在任一时刻,它将工作在下述 4 种 方式之一:主发送器、主接收器、从发送器或从接收器。SMBus 在产生起始条件时进入主方 式,并保持在该方式直到产生一个停止条件或在总线竞争中失败。SMBus 在每个字节帧结束 后都产生一个中断;但作为接收器时中断在 ACK 周期之前产生,作为发送器时中断在 ACK 周期之后产生。 14.5.1 主发送器方式 在 SDA 上发送串行数据,在 SCL 上输出串行时钟。SMBus 接口首先产生一个起始条件, 然后发送含有目标从器件地址和数据方向位的第一个字节。在主发送器方式数据方向位(R/W) 应为逻辑‘0’,表示这是一个“写”操作。主发送器接着发送一个或多个字节的串行数据。 在每发送一个字节后,从器件发出确认位。当 STO 为被置‘1’并产生一个停止条件后,串行 传输结束。注意,如果在发生主发送器中断后没有向 SMB0DAT 写入数据,则接口将切换到 主接收器方式。图 14.8 给出了典型的主发送器时序,只给出了发送两个字节的传输时序,尽 管可以发送任意多个字节。注意,在该方式下,“数据字节传输结束”中断发生在 ACK 周期 之后。 图 14.8 典型的主发送器时序 S SLA W A 数据字节 A 数据字节 A P 中断 中断 由SMBus接口接收 由SMBus接口发送 中断 中断 S = START(开始) P = STOP(停止) A = ACK(确认) W = WRITE (写) SLA = 从地址 122 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 14.5.2 主接收器方式 在 SDA 上接收串行数据,在 SCL 上输出串行时钟。SMBus 接口首先产生一个起始条件, 然后发送含有目标从器件地址和数据方向位的第一个字节。在这种情况下数据方向位(R/W) 应为逻辑‘1’,表示这是一个“读”操作。接着从 SDA 接收来自从器件的串行数据并在 SCL 上输出串行时钟。从器件发送一个或多个字节的串行数据。每收到一个字节后,ACKRQ 被置 ‘1’并产生一个中断。软件必须写 ACK 位(SMB0CN.1),以定义要发出的确认值(注:向 ACK 位写‘1’产生一个 ACK,写‘0’产生一个 NACK)。软件应在接收到最后一个字节后 向 ACK 位写‘0’,以发送 NACK。接口电路将在对 STO 位置‘1’并产生一个停止条件后退 出主接收器方式。注意:在主接收器方式,如果执行 SMB0DAT 写操作,接口将切换到主发 送器方式。图 14.9 给出了典型的主接收器时序,只给出了接收两个字节的传输时序,尽管可 以接收任意多个字节。注意,在该方式下,“数据字节传输结束”中断发生在 ACK 周期之前。 图 14.9 典型的主接收器时序 S SLA RA 数据字节 A 数据字节 NP 中断 中断 由SMBus接口接收 由SMBus接口发送 中断 中断 S = START(开始) P = STOP(停止) A = ACK(确认) N = NACK(非确认) R = READ(读) SLA = 从地址 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 123 C8051F310/1 混合信号 ISP FLASH 微控制器 14.5.3 从接收器方式 在 SDA 上接收串行数据,在 SCL 上接收串行时钟。在从事件被允许的情况下(INH = 0), 当接收到一个起始条件(START)和一个含有从地址和数据方向位(此处应为写)的字节时, SMBus 接口进入从接收器方式。在进入从接收器方式时将产生一个中断,并且 ACKRQ 被置 ‘1’。软件用一个 ACK 对接收到的从地址确认,或用一个 NACK 忽略接收到的从地址。如果 接收到的从地址被忽略,从事件中断将被禁止,直到检测到下一个起始条件。如果收到的从 地址被确认,将接收 0 个或多个字节的数据。在每接收到一个字节后,软件应向 ACK 位写 ACK 或 NACK,对接收字节作出应答。在收到主器件发出的停止条件后,SMBus 接口退出从 发送器方式。注意,如果在从接收器方式对 SMB0DAT 进行写操作,接口将切换到从发送器 方式。图 14.10 给出了典型的从接收器时序,只给出了接收两个字节的传输时序,尽管可以接 收任意多个字节。注意,在该方式下“数据字节传输中断”发生在 ACK 周期之前。 图 14.10 典型的从接收器时序 中断 S SLA WA 数据字节 A 数据字节 A P 中断 由SMBus接口接收 由SMBus接口发送 中断 中断 S = START(开始) P = STOP(停止) A = ACK(确认) W= WRITE(写) SLA = 从地址 124 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 14.5.4 从发送器方式 在 SDA 上发送串行数据,在 SCL 上接收串行时钟。在从事件被允许的情况下(INH = 0), 当接收到一个起始条件(START)和一个含有从地址和数据方向位(此处应为读)的字节时, SMBus 接口进入从接收器方式(接收从地址)。在进入从发送器方式时,会产生一个中断,并 且 ACKRQ 位被置‘1’。软件用一个 ACK 对接收到的从地址确认,或用一个 NACK 忽略接收 到的从地址。如果接收到的从地址被忽略,从事件中断将被禁止,直到检测到下一个起始条 件。如果收到的从地址被确认,软件应向 SMB0DAT 写入要发送的数据。此时 SMBus 进入从 发送器方式,并发送一个或多个字节的数据。在每发送一个字节后,主器件发出确认位。如 果确认位为 ACK,应向 SMB0DAT 写入下一个数据字节;如果确认位为 NACK,在 SI 被清除 前不应再写 SMB0DAT(注:在从发送器方式,如果在收到 NACK 后写 SMB0DAT,将会导致 一个错误条件)。在收到主器件发出的停止条件后,SMBus 接口退出从发送器方式。注意,如 果在一个从发送器中断发生之后没有对 SMB0DAT 进行写操作,接口将切换到从接收器方式。 图 14.11 给出了典型的从发送器时序。注意,在该方式下“数据字节传输”中断发生在 ACK 周期之后。 图 14.11 典型的从发送器时序 中断 S SLA RA 数据字节 A 数据字节 NP 中断 由SMBus接口接收 由SMBus接口发送 中断 中断 S = START(开始) P = STOP(停止) A = ACK(确认) N = NACK(非确认) R = READ(读) SLA = 从地址 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 125 C8051F310/1 混合信号 ISP FLASH 微控制器 14.6 SMBus 状态译码 读 SMB0CN 寄存器可以得到 SMBus 的当前状态。在下面的表 14.4 中,状态向量指的是 SMB0CN 中的高 4 位:MASTER、TXMODE、STA 和 STO。注意,表中只列出了典型的响应 选项。只要符合 SMBus 规范,特定应用的过程是允许的。表中被突出显示的响应选项是允许 的,但不符合 SMBus 规范。 读取值 表 14.4 SMBus 状态译码 写入值 SMBus 的当前状态 典型响应选项 STA STO ACK 方式 状态向量 ACKRQ ARBLOST ACK 主发送器 1110 0 0 X 起始条件已发出。 将从地址+R/W 装入到 SMB0DAT。 0 0 X 数据或地址字节已发出; 0 0 0 收到 NACK。 置位 STA 以重新启动数据传输。 放弃发送。 1 0X 0 1X 将下一字节装入到 SMB0DAT。 0 0X 1100 数据或地址字节已发出; 0 0 1 收到 ACK。 用停止条件结束数据传输。 0 1X 用停止条件结束数据传输并开始另一 次传输。 1 1X 发送重复起始条件。 1 0X 切换到主接收器方式(清除 SI,不向 SMB0DAT 写新数据)。 0 0X 确认接收字节;读 SMB0DAT。 001 发 NACK,表示这是最后一个字节。 0 1 0 发 NACK,表示这是最后一个字节, 接着发停止条件,再发起始条件。 1 1 0 发 ACK 后再发重复起始条件。 101 1000 1 0 X 收到数据字节;请求确认。 发 NACK,表示这是最后一个字节, 接着发重复起始条件。 1 0 0 发 ACK 并切换到主发送器方式(在清 除 SI 之前写 SMB0DAT)。 001 发 NACK 并切换到主发送器方式(在 清除 SI 之前写 SMB0DAT)。 000 主接收器 126 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 STA STO ACK 方式 状态向量 ACKRQ ARBLOST ACK 从发送器 C8051F310/1 混合信号 ISP FLASH 微控制器 读取值 表 14.4 SMBus 状态译码(续) SMBus 的当前状态 典型响应选项 写入值 0 0 0 字节已发送;收到 NACK。 不需任何操作(等待停止条件)。 0 0X 0100 0 0 1 字节已发送;收到 ACK。 将下一个要发送的数据字节装入到 SMB0DAT。 0 0X 0 1 X 字节已发送;检测到错误。 不需任何操作(等待主器件结束传 输)。 0 0 X 0101 0 X X 检测到停止条件。 不需任何操作(传输结束)。 0 0X 1 0 X 接收到从地址;请求确认。 对接收到的地址进行确认。 不对接收到的地址进行确认。 001 000 0010 1 1 竞争主器件失败;收到从地 X 址;请求确认。 对接收到的地址进行确认。 不对接收到的地址进行确认。 重新启动失败的传输;不对接收到的 0 0 0 0 1 0 地址进行确认。 100 试图发送重复起始条件时 放弃失败的传输。 0010 0 1 X 竞争失败。 重新启动失败的传输 0 0X 1 0X 1 1 X 试图发送停止条件时竞争 失败。 不需任何操作(传输完成/放弃)。 000 0001 0 0 X 检测到停止条件。 不需任何操作(传输完成)。 0 0X 因检测到停止条件而导致 放弃失败的传输。 0 1 X 竞争失败。 重新启动失败的传输。 0 0X 1 0X 1 0 X 接收到字节;请求确认。 确认接收字节;读 SMB0DAT。 不对接收到的字节进行确认。 0000 试图作为主器件发送数据 放弃失败的传输。 1 1 X 字节时竞争失败。 重新启动失败的传输。 001 000 000 100 从接收器 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 127 C8051F310/1 混合信号 ISP FLASH 微控制器 15. UART0 UART0 是一个异步、全双工串口,它提供标准 8051 串行口的方式 1 和方式 3。UART0 具有增强的波特率发生器电路,有多个时钟源可用于产生标准波特率。接收数据缓冲机制允 许 UART0 在软件尚未读取前一个数据字节的情况下开始接收第二个输入数据字节。 UART0 有两个相关的特殊功能寄存器:串行控制寄存器(SCON0)和串行数据缓冲器 (SBUF0)。用同一个 SBUF0 地址可以访问发送寄存器和接收寄存器。写 SBUF0 时自动访问 发送寄存器;读 SBUF0 时自动访问接收寄存器,不可能从发送数据寄存器中读数据。 如果 UART0 中断被允许,则每次发送完成(SCON0 中的 TI0 位被置‘1’)或接收到数 据字节(SCON0 中的 RI0 位被置‘1’)时将产生一个中断。当 CPU 转向中断服务程序时硬件 不清除 UART0 中断标志。中断标志必须用软件清除,这就允许软件查询 UART0 中断的原因 (发送完成或接收完成)。 图 15.1 UART0 原理框图 SFR 总线 写SBUF TB8 SET DQ CLR SBUF (TX 移位 ) 零检测器 停止位 开始 发送时钟 移位 发送控制 数据 发送 Tx IRQ TX 交叉开关 波特率 发生器 SCON0 TI 串口中断 RI 端口 I/O 128 接收时钟 开始 移位 Rx IRQ 接收控制 0x1FF RB8 装载 SBUF 输入移位寄存器 (9位) 装载 SBUF0 读SBUF SBUF (RX 锁存 ) SFR 总线 RX 交叉开关 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 15.1 增强的波特率发生器 UART0 波特率由定时器 1 工作在 8 位自动重装载方式产生。发送(TX)时钟由 TL1 产生; 接收(RX)时钟由 TL1 的拷贝寄存器(图 15.2 中的 RX 定时器)产生,该寄存器不能被用户 访问。TX 和 RX 定时器的溢出信号经过二分频后用于产生 TX 和 RX 波特率。当定时器 1 被 允许时,RX 定时器运行并使用与定时器 1 相同的重载值(TH1)。在检测到 RX 引脚上的起始 条件时 RX 定时器被强制重载,这允许在检测到起始位时立即开始接收过程,而与 TX 定时器 的状态无关。 图 15.2 UART0 波特率逻辑 定时器1 UART0 TL1 溢出 2 TX时钟 TH1 检测到 起始位 RX定时器 溢出 2 RX时钟 定时器 1 应被配置为方式 2,即 8 位自动重装载方式。定时器 1 的重载值应设置为使其溢 出频率为所期望的波特率频率的两倍。注意,定时器 1 的时钟可以在 6 个时钟源中选择: SYSCLK、SYSCLK/4、SYSCLK/12、SYSCLK/48、外部振荡器时钟/8 和外部输入 T1。对于 任何给定的定时器 1 时钟源,UART0 的波特率由方程 15.1 决定: 方程 15.1 UART0 波特率 UART波特率 = T 1CLK (256 − T1H ) × 1 2 其中T1CLK是定时器 1 的时钟频率,T1H是定时器 1 的高字节(重载值)。 定时器 1 时钟频率的选择方法见“17 定时器”。表 15.1 – 15.6 给出了典型波特率和系统 时钟频率的对照表。注意,当外部振荡器驱动定时器 1 时,内部振荡器仍可产生系统时钟。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 129 C8051F310/1 混合信号 ISP FLASH 微控制器 15.2 工作方式 UART0 提供标准的异步、全双工通信,其工作方式(8 位或 9 位)通过 S0MODE 位 (SCON0.7)来选择。典型的 UART 连接方式如图 15.3 所示。 图 15.3 UART 连接图 R S -2 3 2 TX RS-232 电平转换器 RX C8051Fxxx 或 TX MCU RX TX C 8 0 5 1 F xxx RX 15.2.1 8 位 UART 在 8 位 UART 方式,每个数据字节共使用 10 位:一个起始位、8 个数据位(LSB 在先) 和一个停止位。数据从 TX 引脚发送,在 RX 引脚接收。在接收时,8 个数据位存入 SBUF0, 停止位进入 RB80(SCON0.2)。 当软件向 SBUF0 寄存器写入一个字节时开始数据发送。在发送结束时(停止位开始)发 送中断标志 TI0(SCON0.1)被置‘1’。在接收允许位 REN0(SCON0.4)被置‘1’后,数据 接收可以在任何时刻开始。收到停止位后,如果满足下述条件则数据字节将被装入到接收寄 存器 SBUF0:RI0 必须为逻辑‘0’;如果 MCE0 为逻辑‘1’,则停止位必须为‘1’。在发生 接收数据溢出的情况下,先接收到的 8 位数据被锁存到 SBUF0,而后面的溢出数据被丢弃。 如果这些条件满足,则 8 位数据被存入 SBUF0,停止位被存入 RB80,RI0 标志被置位。 如果这些条件不满足,则不装入 SBUF0 和 RB80,RI0 标志也不会被置‘1’。如果中断被允许, 在 TI0 或 RI0 置位时将产生一个中断。 图 15.4 8 位 UART 时序图 MARK SPACE 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 位时间 位采样 130 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 15.2.2 9 位 UART 在 9 位 UART 方式,每个数据字节共使用 11 位:一个起始位、8 个数据位(LSB 在先)、 一个可编程的第九位和一个停止位。第九发送数据位由 TB80(SCON0.3)中的值决定,由用 户软件赋值。它可以被赋值为 PSW 中的奇偶位 P(用于错误检测),或用于多处理器通信。在 接收时,第九数据位进入 RB80(SCON0.2),停止位被忽略。 当执行一条向 SBUF0 寄存器写一个数据字节的指令时开始数据发送。在发送结束时(停 止位开始)发送中断标志 TI0 被置‘1’。在接收允许位 REN0 被置‘1’后,数据接收可以在 任何时刻开始。收到停止位后如果满足下述条件则数据字节将被装入到接收寄存器 SBUF0: RI0 为逻辑‘0’;如果 MCE0 为逻辑‘1’,则第九位必须为逻辑‘1’(当 MCE0 为逻辑‘0’ 时,第九位数据的状态并不重要)。如果这些条件满足,则 8 位数据被存入 SBUF0,第九位被 存入 RB80,RI0 标志被置位。如果这些条件不满足,则不装入 SBUF0 和 RB80,RI0 标志也 不会被置‘1’。如果中断被允许,在 TI0 或 RI0 置位时将产生一个中断。 图 15.5 9 位 UART 时序图 MARK SPACE 起始位 D0 D1 D2 D3 D4 D5 D6 D7 D8 停止位 位时间 位采样 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 131 C8051F310/1 混合信号 ISP FLASH 微控制器 15.3 多机通信 9 位 UART 方式通过使用第九数据位可以支持一个主处理器与一个或多个从处理器之间 的多机通信。当主机想发送数据给一个或多个从机时,它先发送一个用于选择目标的地址字 节。地址字节与数据字节的区别是:地址字节的第九位为逻辑‘1’;数据字节的第九位总是 设置为逻辑‘0’。 如果从机的 MCE0 位(SCON.5)被置‘1’,则只有当 UART 接收到的第九位为逻辑‘1’ (RB80 = 1)并收到有效的停止位后 UART 才会产生中断。在 UART 的中断处理程序中,软 件将接收到的地址与从机自身的 8 位地址进行比较。如果地址匹配,从机将清除它的 MCE0 位以允许后面接收数据字节时产生中断。未被寻址的从机仍保持其 MCE0 位为‘1’,在收到 后续的数据字节时不产生中断,从而忽略收到的数据。一旦接收完整个消息,被寻址的从机 将它的 MCE0 位重新置‘1’以忽略所有的数据传输,直到它收到下一个地址字节。 可以将多个地址分配给一个从机,或将一个地址分配给多个从机从而允许同时向多个从 机“广播”发送。主机可以被配置为接收所有的传输数据,或通过实现某种协议使主/从角色 能临时变换以允许原来的主机和从机之间进行半双工通信。 图 15.6 UART 多机方式连接图 主器件 RX TX 从器件 RX TX 从器件 RX TX 从器件 +5V RX TX 132 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 15.7 SCON0: UART0 控制寄存器 R/W R S0MODE - 位7 位6 R/W MCE0 位5 R/W REN0 位4 R/W TB80 位3 R/W RB80 位2 R/W TI0 位1 R/W 复位值 RI0 01000000 位0 SFR地址: (可位寻址) 0x98 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: S0MODE:串行口工作方式选择位 该位选择 UART0 的工作方式。 0:方式 0:波特率可编程的 8 位 UART。 1:方式 1:波特率可编程的 9 位 UART。 未使用。读 = 1b。写 = 忽略。 MCE0:多处理器通信允许 该位的功能取决于串行口工作方式。 S0MODE = 0:检查有效停止位。 0:停止位的逻辑电平被忽略。 1:只有当停止位为逻辑‘1’时 RI0 激活。 S0MODE = 1:多处理器通信允许。 0:第 9 位的逻辑电平被忽略。 1:只有当第 9 位为逻辑‘1’时 RI0 才被置位并产生中断。 REN0:接收允许 该位允许/禁止 UART 接收器。 0:UART 接收禁止。 1:UART 接收允许。 TB80:第九发送位 该位的逻辑电平被赋值给 9 位 UART 方式的第九发送位。在 8 位 UART 方式中 未用。跟据需要用软件置‘1’或清‘0’。 RB80:第九接收位 在方式 0,则 RB80 被赋值为停止位的值。在方式 1 该位被赋值为 9 位 UART 方 式中第九数据位的值。 TI0:发送中断标志 当 UART 发送完一个字节数据后该位被硬件置‘1’(在 8 位 UART 方式时,是 在发送第 8 位后;在 9 位 UART 方式时,是在停止位开始)。当 UART0 中断被 允许时,置‘1’该位将导致 CPU 转到 UART0 中断服务程序。该位必须用软件 清‘0’。 RI0:接收中断标志 当 UART0 接收到一个字节数据时该位被硬件置‘1’(在停止位后)。当 UART0 中断被允许时,置‘1’该位将会使 CPU 转到 UART0 中断服务程序。该位必须 用软件清‘0’。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 133 SYSCLK 源自 内部振荡器 C8051F310/1 混合信号 ISP FLASH 微控制器 图 15.9 SBUF0:UART0 串行数据缓冲寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x99 位 7-0: SBUF0.[7:0]: UART0 数据缓冲器位 7-0(MSB-LSB) 实际上是两个寄存器:发送移位寄存器和接收锁存寄存器。当数据被写到 SBUF0 时,它进入发送移位寄存器等待串行发送。向 SBUF0 写入一个字节即 启动发送过程。读 SBUF0 时返回接收锁存器的内容。 表 15.1 对应标准波特率的定时器设置(使用内部振荡器) 频率:24.5MHz 目标波特率 波特率 振荡器 (bps) 误差(%) 分频系数 定时器 时钟源 SCA1-SCA0 定时器 1 (分频选择) T1M 重载值(hex) 230400 -0 32% 106 SYSCLK XX 115200 -0.32% 212 SYSCLK XX 57600 0.15% 426 SYSCLK XX 28800 -0.32% 848 SYSCLK/4 01 14400 0.15% 1704 SYSCLK/12 00 9600 -0.32% 2544 SYSCLK/12 00 2400 -0.32% 10176 SYSCLK/48 10 1200 0.15% 20448 SYSCLK/48 10 1 0xCB 1 0x96 1 0x2B 0 0x96 0 0xB9 0 0x96 0 0x96 0 0x2B X = 忽略 表 15.2 对应标准波特率的定时器设置(使用外部振荡器) 目标波特率 (bps) 波特率 误差(%) 频率:25.0 MHz 振荡器 分频系数 定时器 时钟源 SCA1-SCA0 (分频选择) 定时器 1 T1M 重载值(hex) 230400 -0.47% 108 SYSCLK XX 1 0xCA 115200 0.45% 218 SYSCLK XX 1 0x93 57600 -0.01% 434 SYSCLK XX 1 0x27 28800 0.45% 872 SYSCLK/4 01 0 0x93 14400 -0.01% 1736 SYSCLK/4 01 9600 0.15% 2608 SYSCLK/8 11 0 0x27 0 0x5D 2400 0.45% 10464 SYSCLK/48 10 0 0x93 1200 -0.01% 20832 SYSCLK/48 10 0 0x27 57600 -0 47% 432 EXTCLK/8 11 28800 -0.47% 864 EXTCLK/8 11 14400 0.45% 1744 EXTCLK/8 11 0 0xE5 0 0xCA 0 0x93 9600 0.15% 2608 EXTCLK/8 11 0 0x5D X = 忽略 SYSCLK 源自 外部振荡器 SYSCLK 源 自 内部振荡器 134 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 SYSCLK 源自 外部振荡器 SYSCLK 源自 内部振荡器 C8051F310/1 混合信号 ISP FLASH 微控制器 表 15.3 对应标准波特率的定时器设置(使用外部振荡器) 频率:22.1184MHz 目标波特率 波特率 振荡器 (bps) 误差(%) 分频系数 定时器 时钟源 SCA1-SCA0 定时器 1 (分频选择) T1M 重载值(hex) 230400 0.00% 96 SYSCLK XX 1 0xD0 115200 0.00% 192 SYSCLK XX 1 0xA0 57600 0.00% 384 SYSCLK XX 28800 0.00% 768 SYSCLK/12 00 1 0x40 0 0xE0 14400 0.00% 1536 SYSCLK/12 00 0 0xC0 9600 0.00% 2304 SYSCLK/12 00 0 0xA0 2400 0.00% 9216 SYSCLK/48 10 0 0xA0 1200 0.00% 18432 SYSCLK/48 10 0 0x40 230400 0 00% 96 EXTCLK/8 11 115200 0.00% 192 EXTCLK/8 11 57600 0.00% 384 EXTCLK/8 11 28800 0.00% 768 EXTCLK/8 11 14400 0.00% 1536 EXTCLK/8 11 9600 0.00% 2304 EXTCLK/8 11 0 0xFA 0 0xF4 0 0xE8 0 0xD0 0 0xA0 0 0x70 X = 忽略 表 15.4 对应标准波特率的定时器设置(使用外部振荡器) 目标波特率 (bps) 波特率 误差(%) 频率:18.432MHz 振荡器 分频系数 定时器 时钟源 SCA1-SCA0 (分频选择) 定时器 1 T1M 重载值(hex) 230400 0.00% 80 SYSCLK XX 1 0xD8 115200 0.00% 160 SYSCLK XX 1 0xB0 57600 0.00% 320 SYSCLK XX 1 0x60 28800 0.00% 640 SYSCLK/4 01 0 0xB0 14400 0.00% 1280 SYSCLK/4 01 0 0x60 9600 0.00% 1920 SYSCLK/12 00 0 0xB0 2400 0.00% 7680 SYSCLK/48 10 0 0xB0 1200 0.00% 15360 SYSCLK/48 10 0 0x60 230400 0 00% 80 EXTCLK/8 11 115200 0.00% 160 EXTCLK/8 11 57600 0.00% 320 EXTCLK/8 11 28800 0.00% 640 EXTCLK/8 11 14400 0.00% 1280 EXTCLK/8 11 9600 0.00% 1920 EXTCLK/8 11 0 0xFB 0 0xF6 0 0xEC 0 0xD8 0 0xB0 0 0x88 X = 忽略 SYSCLK 源自 外部振荡器 SYSCLK 源自 内部振荡器 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 135 SYSCLK 源自 外部振荡器 SYSCLK 源自 内部振荡器 C8051F310/1 混合信号 ISP FLASH 微控制器 表 15.5 对应标准波特率的定时器设置(使用外部振荡器) 目标波特率 (bps) 波特率 误差(%) 频率:11.0592MHz 振荡器 分频系数 定时器 时钟源 SCA1-SCA0 (分频选择) 定时器 1 T1M 重载值(hex) 230400 0.00% 48 SYSCLK XX 1 0xE8 115200 0.00% 96 SYSCLK XX 1 0xD0 57600 0.00% 192 SYSCLK XX 1 0xA0 28800 0.00% 384 SYSCLK XX 1 0x40 14400 0.00% 768 SYSCLK/12 00 9600 0.00% 1152 SYSCLK/12 00 0 0xE0 0 0xD0 2400 0.00% 4608 SYSCLK/12 00 0 0x40 1200 0.00% 9216 SYSCLK/48 10 0 0xA0 230400 0 00% 48 EXTCLK/8 11 115200 0.00% 96 EXTCLK/8 11 57600 0.00% 192 EXTCLK/8 11 28800 0.00% 384 EXTCLK/8 11 14400 0.00% 768 EXTCLK/8 11 9600 0.00% 1152 EXTCLK/8 11 0 0xFD 0 0xFA 0 0xF4 0 0xE8 0 0xD0 0 0xB8 X = 忽略 表 15.6 对应标准波特率的定时器设置(使用外部振荡器) 目标波特率 (bps) 波特率 误差(%) 频率:3.6864MHz 振荡器 分频系数 定时器 时钟源 SCA1-SCA0 (分频选择) T1M 定时器 1 重载值(hex) 230400 0.00% 16 SYSCLK XX 1 0xF8 115200 0.00% 32 SYSCLK XX 1 0xF0 57600 0.00% 64 SYSCLK XX 1 0xE0 28800 0.00% 128 SYSCLK XX 1 0xC0 14400 0.00% 256 SYSCLK XX 1 0x80 9600 0.00% 384 SYSCLK XX 1 0x40 2400 0.00% 1536 SYSCLK/12 00 0 0xC0 1200 0.00% 3072 SYSCLK/12 00 0 0x80 230400 0 00% 16 EXTCLK/8 11 115200 0.00% 32 EXTCLK/8 11 57600 0.00% 64 EXTCLK/8 11 28800 0.00% 128 EXTCLK/8 11 14400 0.00% 256 EXTCLK/8 11 9600 0.00% 384 EXTCLK/8 11 0 0xFF 0 0xFE 0 0xFC 0 0xF8 0 0xF0 0 0xE8 X = 忽略 SYSCLK 源自 外部振荡器 SYSCLK 源自 内部振荡器 136 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 16. 增强型串行外设接口(SPI0) 增强型串行外设接口(SPI0)提供访问一个全双工同步串行总线的能力。SPI0 可以作为 主器件或从器件工作,可以使用 3 线或 4 线方式,并可在同一总线上支持多个主起见和从器 件。从选择信号(NSS)可被配置为输入以选择 SPI0 工作在从方式,或在多主环境中禁止主 方式操作,以避免两个以上主器件试图同时进行数据传输时发生 SPI 总线冲突。NSS 可以被 配置为片选输出(在主方式),或在 3 线操作时被禁止。在主方式,可以用其他通用端口 I/O 引脚选择多个从器件。 图 16.1 SPI 原理框图 SFR Bus SPI0CKR SPI0CFG SPI0CN SYSCLK Clock Divide Logic SPI CONTROL LOGIC Data Path Control Pin Interface Control SPI IRQ Tx Data MOSI C SPI0DAT Transmit Data Buffer SCK R O Shift Register 7654 3210 Pin S Control Logic Rx Data MISO S B A R Receive Data Buffer NSS Write SPI0DAT Read SPI0DAT SFR Bus Port I/O 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 137 C8051F310/1 混合信号 ISP FLASH 微控制器 16.1 信号说明 下面介绍 SPI 所使用的 4 个信号(MOSI、MISO、SCK、NSS)。 16.1.1 主输出、从输入(MOSI) 主出从入(MOSI)信号是主器件的输出和从器件的输入,用于从主器件到从器件的串行 数据传输。当 SPI0 作为主器件时,该信号是输出;当 SPI0 作为从器件时,该信号是输入。数 据传输时最高位在先。当被配置为主器件时,MOSI 由移位寄存器的 MSB 驱动。 16.1.2 主输入、从输出(MISO) 主入从出(MISO)信号是从器件的输出和主器件的输入,用于从从器件到主器件的串行 数据传输。当 SPI0 作为主器件时,该信号是输入;当 SPI0 作为从器件时,该信号是输出。数 据传输时最高位在先。当 SPI 被禁止或工作在 4 线从方式而未被选中时, MISO 引脚被置于 高阻态。当作为从器件工作在 3 线方式时,MISO 由移位寄存器的 MSB 驱动。 16.1.3 串行时钟(SCK) 串行时钟(SCK)信号是主器件的输出和从器件的输入,用于同步主器件和从器件之间在 MOSI 和 MISO 线上的串行数据传输。当 SPI0 作为主器件时产生该信号。在 4 线从方式,当 SPI 未被选中时(NSS=1),SCK 信号被忽略。 16.1.4 从选择(NSS) 从选择(NSS)信号的功能取决于 SPI0CN 寄存器中 NSSMD1 和 NSSMD0 位的设置。有 3 种可能的方式: 1. NSSMD[1:0] = 00:3 线主方式或从方式:SPI0 工作在 3 线方式,NSS 被禁止。当作 为从器件时,SPI0 总是被选择为 3 线方式。由于没有选择信号,SPI0 只能工作在 3 线从方式。这种情况用于一个主器件和一个从器件之间点对点通信。 2. NSSMD[1:0] = 01:4 线从方式或多主方式:SPI0 工作在 4 线方式,NSS 作为输入。 当作为从器件时,NSS 选择从 SPI0 器件。当作为主器件时,NSS 信号的负跳变禁止 SPI0 的主器件功能,因此可以在同一个 SPI 总线上使用多个主器件。 3. NSSMD[1:0] = 1x:4 线主方式:SPI0 工作在 4 线方式,NSS 作为输出。NSSMD0 的 设置值决定 NSS 引脚的输出电平。这种配置只能在 SPI0 作为主器件时使用。 图 16.2 ~ 16.4 给出了不同方式下的典型连接图。注意:NSSMD 位的设置影响器件的引脚 分配。当工作在 3 线主或从方式时,NSS 不被交叉开关分配。在所有其他方式,NSS 必须被 映射到器件引脚。 138 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 16.2 多主方式连接图 NSS Master MISO MOSI Device 1 SCK GPIO GPIO MISO Master MOSI Device 2 SCK NSS 图 16.3 3 线单主方式和 3 线单从方式连接图 Master Device MISO MOSI SCK Slave MISO Device MOSI SCK 图 16.4 4 线单主方式和 4 线从方式连接图 Master Device GPIO MISO MOSI SCK NSS MISO Slave MOSI Device SCK NSS MISO Slave MOSI Device SCK NSS 16.2 SPI0 主方式操作 只有 SPI 主器件能启动数据传输。通过将主允许标志(MSTEN,SPI0CFG.6)置 1 将 SPI0 置于主方式。当处于主方式时,向 SPI0 数据寄存器(SPI0DAT)写入一个字节时是写发送缓 冲器。如果 SPI 移位寄存器为空,发送缓冲器中的数据字节被传送到移位寄存器,数据传输开 始。SPI0 主器件立即在 MOSI 线上串行移出数据,同时在 SCK 上提供串行时钟。在传输结束 后 SPIF(SPI0CN.7)标志被置为逻辑 1。如果中断被允许,在 SPIF 标志置位时将产生一个中 断请求。在全双工操作中,当 SPI 主器件在 MOSI 线向从器件发送数据时,被寻址的 SPI 从器 件可以同时在 MISO 线上向主器件发送其移位寄存器中的内容。因此,SPIF 标志既作为发送 完成标志又作为接收数据准备好标志。从从器件接收的数据字节以 MSB 在先的形式传送到主 器件的移位寄存器。当一个数据字节被完全移入移位寄存器时,便被传送到接收缓冲器,处 理器通过读 SPI0DAT 来读该缓冲器。 当被配置为主器件时,SPI0 可以工作在下面的三种方式之一:多主方式、3 线单主方式或 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 139 C8051F310/1 混合信号 ISP FLASH 微控制器 4 线单主方式。当 NSSMD1(SPI0CN.3)=0 且 NSSMD0(SPI0CN.2)=1 时,是默认的多主方 式。在该方式,NSS 是器件的输入,用于禁止主 SPI0,以允许另一主器件访问总线。在该方 式,当 NSS 被拉为低电平时,MSTEN(SPI0CN.6)和 SPIEN(SPI0CN.0)位被硬件清 0,以 禁止 SPI 主器件,且方式错误标志(MODF,SPI0CN.5)被置 1。如过中断被允许,将产生中 断。在这种情况下,必须用软件重新使能 SPI0。在多主系统中,当器件不作为系统主器件使 用时,一般被默认为从器件。在多主方式,可以用通用 I/O 引脚对从器件单独寻址(如果需要)。 图 16.2 给出了两个主器件在多主方式下的连接图。 当 NSSMD1(SPI0CN.3)=0 且 NSSMD0(SPI0CN.2)=0 时,SPI0 工作在 3 线单主方式。 在该方式,NSS 未被使用,也不被交叉开关映射到外部端口引脚。在该方式,应使用通用 I/O 引脚选择要寻址的从器件。图 16.3 给出了一个 3 线主方式主器件和一个从器件的连接图。 当 NSSMD1(SPI0CN.3)=1 时,SPI0 工作在 4 线单主方式。在该方式,NSS 被配置为输 出引脚,可被用作从选择信号去选中一个 SPI 器件。在该方式,NSS 的输出值由 NSSMD0 (SPI0CN.2)控制(用软件)。可以用通用 I/O 引脚选择另外的从器件。图 16.4 给出了一个 4 线主方式主器件和两个从器件的连接图。 16.3 SPI0 从方式操作 当 SPI0 被使能而未被配置为主器件时,它将作为 SPI 从器件工作。作为从器件,由主器 件控制串行时钟,从 MOSI 移入数据,从 MISO 引脚移出数据。SPI0 逻辑中的位计数器对 SCK 边沿计数。当 8 位数据经过移位寄存器后,SPIF 标志被置为逻辑 1,接收到的字节被传送到 接收缓冲器。通过读 SPI0DAT 来读取接收缓冲器中的数据。从器件不能启动数据传送。通过 写 SPI0DAT 来预装要发送给主器件的数据。写往 SPI0DAT 的数据是双缓冲的,首先被放在发 送缓冲器。如果移位寄存器为空,发送缓冲器中的数据回立即被传送到移位寄存器。当移位 寄存器中已经有数据时,SPI 将等到数据发送完后再将发送缓冲器的内容装入移位寄存器。 当被配置为从器件时,SPI0 可以工作 4 线或 3 线方式。当 NSSMD1(SPI0CN.3)=0 且 NSSMD0(SPI0CN.2)=1 时,是默认的 4 线方式。在 4 线方式,NSS 被分配端口引脚并被配 置为数字输入。当 NSS 为逻辑 0 时,SPI0 被使能;当 NSS 为逻辑 1 时,SPI0 被禁止。在 NSS 的下降沿,位计数器被复位。注意,对应每次字节传输,在第一个有效 SCK 边沿到来之前, NSS 信号必须被驱动到低电平至少两个系统时钟周期。图 16.4 给出了两个 4 线方式从器件和 一个主器件的连接图。 当 NSSMD1(SPI0CN.3)=0 且 NSSMD0(SPI0CN.2)=0 时,SPI0 工作在 3 线从方式。 在该方式,NSS 未被使用,也不被交叉开关映射到外部端口引脚。由于在 3 线从方式无法唯 一地寻址从器件,所以 SPI0 必须是总线上唯一的从器件。需要注意的是,在 3 线从方式,没 有外部手段对位计数器复位以判断是否收到一个完整的字节。只能通过用 SPIEN 位禁止并重 新使能 SPI0 来复位位计数器。图 16.3 给出了一个 3 线从器件和一个主器件的连接图。 140 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 16.4 SPI0 中断源 如果 SPI0 中断被允许,在下述 4 个标志位被置 1 时将产生中断。 注意:这 4 个标志位都必须用软件清 0。 1. 在每次字节传输结束,SPI 中断标志 SPIF(SPI0CN.7)被置 1。该标志适用于所有 SPI 方式。 2. 如果在发送缓冲器中的数据尚未被传送到移位寄存器时写 SPI0DAT,写冲突标志 WCOL(SPI0CN.6)被置 1。发生这种情况时,写 SPI0DAT 的操作被忽略,不会对 发送缓冲器写入。该标志适用于所有 SPI 方式。 3. 当 SPI0 被配置为主器件并且工作于多主方式,而 NSS 被拉为低电平时,方式错误标 志 MODF(SPI0CN.5)被置 1。当发生方式错误时,SPI0CN 中的 MSTEN 和 SPIEN 位被清 0,以禁止 SPI0 并允许另一个主器件访问总线。 4. 当 SPI0 被配置为从器件并且一次传输结束,而接收缓冲器中还保持着上一次传输的 数据未被读取时,接收溢出标志 RXOVRN(SPI0CN.4)被置 1。新接收的字节将不 被传送到接收缓冲器,允许前面接收的字节被读取。引起溢出的数据字节丢失。 16.5 串行时钟时序 使用 SPI0 配置寄存器(SPI0CFG)中的时钟控制选择位可以在串行时钟相位和极性的 4 种组合中选择其一。CKPHA 位(SPI0CFG.5)选择两种时钟相位(锁存数据所用的边沿)中 的一种。CKPOL 位(SPI0CFG.4)在高电平有效和低电平有效的时钟之间选择。主器件和从 器件必须被配置为使用相同的时钟相位和极性。注意:在改变时钟相位和极性期间应禁止 SPI0 (通过清除 SPIEN 位,SPI0CN.0)。主方式下时钟和数据线的时序关系如图 16.5 所示。图 16.6 和图 16.7 给出了从方式下时钟和数据线的时序关系。注意:当 C8051F04x, C8051F06x, C8051F12x, C8051F31x, C8051F32x, C8051F33x 中的两个器件通信时,不论工作在主方式还是 从方式,CKPHA 必须被置 0。 图 16.10 所示的 SPI0 时钟速率寄存器(SPI0CKR)控制主方式的串行时钟频率。当工作 于从方式时该寄存器被忽略。当 SPI 被配置为主器件时,最大数据传输率(位/秒)是系统时 钟频率的二分之一或 12.5MHz(取较低的频率)。当 SPI 被配置为从器件时,全双工操作的最 大数据传输率(位/秒)是系统时钟频率的十分之一,前提是主器件与系统时钟同步发出 SCK、 NSS(在 4 线从方式)和串行输入数据。如果主器件发出的 SCK、NSS 及串行输入数据不同 步,则最大数据传输率(位/秒)必须小于系统时钟频率的十分之一。在主器件只想发送数据 到从器件而不需要接收从器件发出的数据(即半双工操作)这一特殊情况下,SPI 从器件接收 数据时的最大数据传输率(位/秒)是系统时钟频率的四分之一,这是在假设由主器件与系统 时钟同步发出 SCK、NSS 和串行输入数据的情况下。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 141 C8051F310/1 混合信号 ISP FLASH 微控制器 SCK (CKPOL=0, CKPHA=0) SCK (CKPOL=0, CKPHA=1) SCK (CKPOL=1, CKPHA=0) SCK (CKPOL=1, CKPHA=1) MISO/MOSI NSS(在多主方式必须 保持高电平) 图 16.5 主方式数据/时钟时序图 MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 142 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 SCK (CKPOL=0, CKPHA=0) SCK (CKPOL=1, CKPHA=0) MOSI 图 16.6 从方式数据/时钟时序图(CKPHA = 0) MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 MISO MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 NSS(4线方式) SCK (CKPOL=0, CKPHA=1) SCK (CKPOL=1, CKPHA=1) MOSI 图 16.7 从方式数据/时钟时序图(CKPHA = 1) MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 MISO MSB Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 NSS(4线方式) 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 143 C8051F310/1 混合信号 ISP FLASH 微控制器 16.6 SPI 特殊功能寄存器 对 SPI0 的访问和控制是通过系统控制器中的 4 个特殊功能寄存器实现的:控制寄存器 SPI0CN、数据寄存器 SPI0DAT、配置寄存器 SPI0CFG 和时钟频率寄存器 SPI0CKR。下面将 介绍这 4 个与 SPI0 总线操作有关的特殊功能寄存器。 图 16.8 SPI0CFG:SPI0 配置寄存器 R R/W R/W R/W R R SPIBSY MSTEN CKPHA CKPOL SLVSEL NSSIN 位7 位6 位5 位4 位3 位2 R SRMT 位1 R 复位值 RXBMT 00000111 位0 SFR地址: 0xA1 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: SPIBSY:SPI 忙标志(只读) 当一次 SPI 传输正在进行时(主或从方式),该位被置为逻辑 1。 MSTEN:主方式允许位 0:禁止主方式,工作在从方式。 1:允许主方式,工作在主器件方式。 CKPHA:SPI0 时钟相位。 该位控制 SPI0 时钟的相位。 0:在SCK周期的第一个边沿采样数据†。 1:在SCK周期的第二个边沿采样数据†。 CKPOL:SPI0 时钟极性 该位控制 SPI0 时钟的极性。 0:SCK 在空闲状态时处于低电平。 1:SCK 在空闲状态时处于高电平。 SLVSEL:从选择标志(只读) 当 NSS 引脚为低电平时该位被置 1,表示 SPI0 是被选中的从器件。当 NSS 引 脚为高电平时(未被选中为从器件)该位被清 0。该位不指示 NSS 引脚的即时 值,而是该引脚输入的去噪信号。 NSSIN:NSS 引脚的瞬时值(只读) 该位指示读该寄存器时 NSS 引脚的即时值。该信号未被去噪。 SRMT:移位寄存器空标志(在从方式有效,只读)。 当所有数据都被移入/移出移位寄存器并且没有新数据可以从发送缓冲器读出 或向接收缓冲器写入时,该位被置 1。当数据字节被从发送缓冲器传送到移位 寄存器或 SCK 发生变化时,该位被清 0。 注:在主方式时 SRMT = 1。 RXBMT:接收缓冲器空(在从方式有效,只读) 当接收缓冲器被读取且没有新数据时,该位被置 1。如果在接收缓冲器中有新 数据未被读取,则该位被清 0。 注:在主方式时,RXBMT = 1。 †在从方式,MOSI上的数据是在每个数据位的中间被采样。在主方式,MISO上的数据是 在每个数据结束前一个SYSCLK位被采样,为从器件提供最大的建立时间。时序参数见 表 16.1。 144 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 R/W SPIF 位7 R/W WCOL 位6 图 16.9 SPI0CN:SPI0 控制寄存器 R/W MODF 位5 R/W R/W R/W RXOVRN NSSMD1 NSSMD0 位4 位3 位2 R TXBMT 位1 R/W SPIEN 位0 (可位寻址) 复位值 00000110 SFR地址: 0xF8 位 7: SPIF:SPI0 中断标志 该位在数据传输结束后被硬件置为逻辑 1。如果中断被允许,置 1 该位 将会使 CPU 转到 SPI0 中断处理服务程序。该位不能被硬件自动清 0, 必须用软件清 0。 位 6: WCOL:写冲突标志 该位由硬件置为逻辑 1(并产生一个 SPI0 中断),表示数据传送期间对 SPI0 数据寄存器进行了写操作。该位必须用软件清 0。 位 5: MODF:方式错误标志 当检测到主方式冲突(NSS 为低电平,MSTEN=1,NSSMD[1:0] = 01) 时,该位由硬件置为逻辑 1(并产生一个 SPI0 中断)。该位不能被硬件 自动清 0,必须用软件清 0。 位 4: RXOVRN:接收溢出标志(只适用于从方式) 当前传输的最后一位已经移入 SPI0 移位寄存器,而接收缓冲器中仍保 存着前一次传输未被读取的数据时该位由硬件置为逻辑 1(并产生一个 SPI0 中断)。该位不会被硬件自动清 0,必须用软件清 0。 位 3-2: NSSMD1-NSSMD0:从选择方式位 选择 NSS 工作方式: 00:3 线从方式或 3 线主方式。NSS 信号不连到端口引脚。 01:4 线从方式或多主方式(默认值)。NSS 总是器件的输入。 1x:4 线单主方式。NSS 被分配一个输出引脚并输出 NSSMD0 的值。 位 1: TXBMT:发送缓冲器空标志 当新数据被写入发送缓冲器时,该位被清 0。当发送缓冲器中的数据被传送到 SPI 移位寄存器时,该位被置 1,表示可以向发送缓冲器写新数据。 位 0: SPIEN:SPI0 使能位 该位使能/禁止 SPI0。 0:禁止 SPI0 1:使能 SPI0 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 145 C8051F310/1 混合信号 ISP FLASH 微控制器 图 16.10 SPI0CKR:SPI0 时钟速率寄存器 R/W SCR7 位7 R/W SCR6 位6 R/W SCR5 位5 R/W SCR4 位4 R/W SCR3 位3 R/W SCR2 位2 R/W SCR1 位1 R/W SCR0 位0 复位值 00000000 SFR地址: 0xA2 位 7-0: SCR7-SCR0:SPI0 时钟频率 当 SPI0 模块被配置为工作于主方式时,这些位决定 SCK 输出的频率。SCK 时 钟频率是从系统时钟分频得到的,由下面的方程给出,其中:SYSCLK 是系统 时钟频率,SPI0CKR 是 SPI0CKR 寄存器中的 8 位值。 f SCK = SYSCLK 2 × (SPI 0CKR + 1) (0 ≤SPI0CKR≤255) 例如:如果 SYSCLK = 2MHz,SPI0CKR = 0x04,则 f SCK = 2000000 2 × (4 + 1) fSCK = 200kHz 图 16.11 SPI0DAT:SPI0 数据寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xA3 位 7-0: SPI0DAT:SPI0 发送和接收数据寄存器。 SPI0DAT 寄存器用于发送和接收 SPI0 数据。在主方式下,向 SPI0DAT 写入数 据时,数据被放到发送缓冲器并启动发送。读 SPI0DAT 返回接收缓冲器的内 容。 146 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 16.12 SPI 主方式时序(CKPHA = 0) SCK* T MCKH T MCKL T MIS T MIH MISO MOSI * 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。 图 16.13 SPI 主方式时序(CKPHA = 1) SCK* T MCKH T MCKL T T MIS MIH MISO MOSI * 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 147 C8051F310/1 混合信号 ISP FLASH 微控制器 NSS T SE SCK* 图 16.14 SPI 从方式时序(CKPHA = 0) T CKL T CKH T T SIS SIH MOSI T TSEZ SOH MISO * 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。 图 16.15 SPI 从方式时序(CKPHA = 1) NSS T T SE CKL SCK* T CKH T T SIS SIH MOSI T SD TSDZ T SD TSEZ TSOH MISO * 这是对应 CKPOL = 0时的 SCK 波形。对于 CKPOL = 1,SCK波形的极性反向。 TSLH TSDZ 148 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 表 16.1 SPI 从方式时序参数 参数 说明 主方式时序(见图 17.12 和图 17.13) TMCKH SCK 高电平时间 TMIS SCK 低电平时间 TMCKH MISO 有效到 SCK 移位边沿 TMIH SCK 移位边沿到 MISO 发生改变 从方式时序(见图 17.14 和图 17.15) TSE TSD TSEZ TSDZ TCKH TCKL TSIS TSIH TSOH TSLH NSS 下降沿到第一个 SCK 边沿 最后一个 SCK 边沿到 NSS 上升沿 NSS 下降沿到 MISO 有效 NSS 上升沿到 MISO 变为高阻态 SCK 高电平时间 SCK 低电平时间 MOSI 有效到 SCK 采样边沿 SCK 采样边沿到 MOSI 发生改变 SCK 移位边沿到 MISO 发生改变 最后一个 SCK 边沿到 MISO 发生改变 (只限于 CKPHA = 1) 注:TSYSCLK为系统时钟(SYSCLK)周期。 最小值 最大值 1*TSYSCLK 1*TSYSCLK 1*TSYSCLK+20 0 2*TSYSCLK 2*TSYSCLK 5*TSYSCLK 5*TSYSCLK 2*TSYSCLK 2*TSYSCLK 6*TSYSCLK 4*TSYSCLK 4*TSYSCLK 4*TSYSCLK 8*TSYSCLK 单位 ns ns ns ns ns ns ns ns ns ns ns ns ns ns 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 149 C8051F310/1 混合信号 ISP FLASH 微控制器 17. 定时器 C8051F31x 内部有 4 个 16 位计数器/定时器:其中两个与标准 8051 中的计数器/定时器兼 容,另外两个是 16 位自动重装载定时器,可用于 ADC、SMBus 或作为通用定时器使用。这 些定时器可以用于测量时间间隔,对外部事件计数或产生周期性的中断请求。定时器 0 和定 时器 1 几乎完全相同,有四种工作方式。定时器 2 和定时器 3 均可以作为一个 16 位或两个 8 位自动重装载定时器。 定时器 0 和定时器 1 工作方式 13 位计数/定时器 16 位计数器/定时器 8 位自动重装载的计数器/定时器 两个 8 位计数器/定时器 (仅限于定时器 0) 定时器 2 工作方式 16 位自动重装载定时器 两个 8 位自动重装载定时器 定时器 3 工作方式 16 位自动重装载定时器 两个 8 位自动重装载定时器 定时器 0 和定时器 1 有 5 个可选择的时钟源,由定时器时钟选择位(T1M-T0M)和时钟 分频位(SCA1-SCA0)决定。时钟分频位定义一个分频时钟,作为定时器 0 和/或定时器 1 的 时钟源(见图 17.6)。 定时器 0 和定时器 1 可以被配置为使用分频时钟或系统时钟。定时器 2 和定时器 3 可以 使用系统时钟、系统时钟/12 或外部振荡器时钟/8 作为时钟源。 定时器 0 和定时器 1 可以工作在计数器方式。当作为计数器使用时,在为定时器所选择 的输入引脚(T0 或 T1)上出现负跳变时计数器/定时器寄存器的值加 1。对事件计数的最大频 率可达到系统时钟频率的四分之一。输入信号不需要是周期性的,但在一个给定电平上的保 持时间至少应为两个完整的系统时钟周期,以保证该电平能够被正确采样。 17.1 定时器 0 和定时器 1 每个计数器/定时器都是一个 16 位的寄存器,在被访问时以两个字节的形式出现:一个低 字节(TL0 或 TL1)和一个高字节(TH0 或 TH1)。计数器/定时器控制寄存器(TCON)用于 允许定时器 0 和定时器 1 以及指示它们的状态。通过将 IE 寄存器中的 ET0 位置‘1’来允许 定时器 0 中断,通过将 ET1 位置‘1’来允许定时器 1 中断。这两个计数器/定时器都有四种 工作方式,通过设置计数器/定时器方式寄存器(TMOD)中的方式选择位 T1M1-T0M0 来选 择工作方式,每个定时器都可以被独立配置。下面对每种工作方式进行详细说明。 17.1.1 方式 0 在方式 0,定时器 0 和定时器 1 被作为 13 位的计数器/定时器使用。图 17.1 给出了定时器 0 工作在方式 0 时的原理框图。下面介绍对定时器 0 的配置和操作。由于这两个定时器在工作 上完全相同,定时器 1 的配置过程与定时器 0 一样。 TH0 寄存器保持 13 位计数器/定时器的 8 个 MSB,TL0 在 TL0.4-TL0.0 位置保持 5 个 LSB。 TL0 的高 3 位(TL0.7-TL0.5)是不确定的,在读计数值时应屏蔽掉或忽略这 3 位。作为 13 位 定时器寄存器,计到 0x1FFF(全 1)后再计一次将发生溢出,使计数值回到 0x0000,此时定 150 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 时器溢出标志 TF0(TCON.5)被置位并产生一个中断(如果该中断被允许)。 C/T0 位(TMOD.2)选择计数器/定时器的时钟源。当 C/T0 被设置为逻辑‘1’时,出现 在所选定时器 0 输入引脚(T0)上的负跳变使定时器寄存器加 1。清除 C/T0 位将选择由 T0M 位(CKCON.3)定义的时钟作为定时器的输入。当 T0M 被置‘1’时,定时器 0 的时钟为系 统时钟;当 T0M 位被清‘0’时,定时器 0 的时钟源由 CKCON(见图 17.6)中的时钟分频位 定义。 当 GATE0(TMOD.3)为逻辑‘0’或输入信号/INT0 有效时(有效电平由 INT01CF 寄存 器中的 IN0PL 位定义,见图 17.13),置‘1’TR0 位(TCON.4)将允许定时器 0 工作。设置 GATE0 为逻辑‘1’允许定时器受外部输入信号/INT0 的控制,便于脉冲宽度测量。 TR0 0 1 1 1 X=任意 GATE0 X 0 1 1 /INT0 X X 0 1 计数器/定时器 禁止 允许 禁止 允许 注意,置位 TR0 并不强制定时器 0 复位。应在定时器被允许前将定时器寄存器装入所需 要的初值。 与上述的 TL0 和 TH0 一样,TL1 和 TH1 构成定时器 1 的 13 位寄存器。定时器 1 的配置 和控制方法与定时器 0 一样,使用 TCON 和 TMOD 中的对应位。输入信号/INT1 为定时器 1 所用,其极性由 IT01CF 寄存器中的 IN1PL 位定义。 图 17.1 T0 方式 0 原理框图 预分频时钟 CKCON TTTT TTSS 3 3 2 2 1 0 CC MMMM MM A A HLHL 1 0 TMOD GCT T GC T T A/ 11A/ 00 T T MM T T MM E1 10E01 0 1 0 INT01CF IIIIIIII NNNNNNNN 11110000 PSSSPSSS LLLLLLLL 210 210 0 SYSCLK 0 1 1 T0 交 叉 开 关 TR0 GATE0 TCLK TL0 ( 5位 ) TH0 ( 8位 ) TF1 TR1 TF0 中断 TR0 IE1 IT1 IE0 IT0 /INT0 IN0PL XOR 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 151 C8051F310/1 混合信号 ISP FLASH 微控制器 17.1.2 方式 1 方式 1 的操作与方式 0 完全一样,所不同的是计数器/定时器使用全部 16 位。用与方式 0 相同的方法允许和控制工作在方式 1 的计数器/定时器。 17.1.3 方式 2 方式 2 将定时器 0 和定时器 1 配置为具有自动重新装入计数初值能力的 8 位计数器/定时 器。TL0 保持计数值,而 TH0 保持重载值。当 TL0 中的计数值发生溢出(从全‘1’到 0x00) 时,定时器溢出标志 TF0(TCON.5)被置位,TH0 中的重载值被重新装入到 TL0。如果中断 被允许,在 TF0 被置位时将产生一个中断。TH0 中的重载值保持不变。为了保证第一次计数 正确,必须在允许定时器之前将 TL0 初始化为所希望的计数初值。当工作于方式 2 时,定时 器 1 的操作与定时器 0 完全相同。 在方式 2,定时器 1 和定时器 0 的配置和控制方法与方式 0 一样。当 GATE0(TMOD.3) 为逻辑‘0’或输入信号/INT0 有效时(有效电平由 INT01CF 寄存器中的 IN0PL 为定义),置 ‘1’TR0 位(TCON.4)将允许定时器 0 工作。 T0 /INT0 预分频时钟 SYSCLK 图 17.2 T0 方式 2 原理框图 CKCON TTTTTT SS 3 3 2 2 1 0 CC MMMMMM A A HLHL 10 TMOD GC T TGCT T A / 11A/ 00 T T MMT T MM E110E010 1 0 INT01CF IIIIIIII NNNNNNNN 11110000 PSSSPSSS LLLLLLLL 210 210 0 0 1 1 交 TR0 叉 开 GATE0 关 IN0PL XOR TCLK TL0 ( 8位 ) TH0 ( 8位 ) 重装载 TF1 TR1 TF0 中断 TR0 IE1 IT1 IE0 IT0 152 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 17.1.4 方式 3 在方式 3 时,定时器 0 被配置两个独立的 8 位定时器/计数器,计数值分别在 TL0 和 TH0 中。在 TL0 中的计数器/定时器使用 TCON 和 TMOD 中定时器 0 的控制/状态位:TR0、C/T0、 GATE0 和 TF0。TL0 既可以使用系统时钟也可以使用一个外部输入信号作为时基。TH0 寄存 器只能作为定时器使用,由系统时钟或分频时钟提供时基。TH0 使用定时器 1 的运行控制位 TR1,并在发生溢出时将定时器 1 的溢出标志位 TF1 置‘1’,所以它控制定时器 1 的中断。 定时器 1 在方式 3 时停止运行。在定时器 0 工作于方式 3 时,定时器 1 可以工作在方式 0、 1 或 2,但不能用外部信号作为时钟,也不能设置 TF1 标志和产生中断。但是定时器 1 溢出可 以用于为 SMBus 和/或 UART 产生波特率,也可以用于启动 ADC 转换。当定时器 0 工作在方 式 3 时,定时器 1 的运行控制由其方式设置决定。为了在定时器 0 工作于方式 3 时使用定时 器 1,应使定时器 1 工作在方式 0、1 或 2。可以通过将定时器 1 切换到方式 3 使其停止运行。 图 17.3 T0 方式 3 原理框图 预分频时钟 SYSCLK CKCON T TTTTTSS 3 3 2 2 1 0 CC MMMMMM A A HLHL 1 0 TMOD GCT TGCT T A / 11A / 0 0 T T M M T T MM E1 10E01 0 1 0 0 TR1 1 0 T0 交 叉 开 关 1 TR0 GATE0 T H0 ( 8位 ) TL0 ( 8位 ) TF1 中断 TR1 TF0 中断 TR0 IE1 IT1 IE0 IT0 /INT0 IN0PL XOR 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 153 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.4 TCON:定时器控制寄存器 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0x88 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: TF1:定时器 1 溢出标志 当定时器 1 溢出时由硬件置位。该位可以用软件清 0,但当 CPU 转向定时器 1 中断服务程序时该位被自动清 0。 0:未检测到定时器 1 溢出。 1:定时器 1 发生溢出。 TR1:定时器 1 运行控制 0:定时器 1 禁止。 1:定时器 1 允许。 TF0:定时器 0 溢出标志 当定时器 0 溢出时由硬件置位。该位可以用软件清 0,但当 CPU 转向定时器 0 中断服务程序时该位被自动清 0。 TR0:定时器 0 运行控制 0:定时器 0 禁止。 1:定时器 0 允许。 IE1:外部中断 1 当检测到一个由 IT1 定义的边沿/电平时,该标志由硬件置位。该位可以用软件 清 0,但当 CPU 转向外部中断 1 中断服务程序时该位被自动清 0(如果 IT1=1)。 当 IT1=0 时,该标志在/INT1 有效时被置‘1’(有效电平由 IT01CF 寄存器中 的 IN1PL 位定义)。 IT1:中断 1 类型选择 该位选择/INT1 中断是边沿触发还是电平触发。可以用 IT01CF 寄存器中的 IN1PL 位将/INT1 配置为低电平有效或高电平有效。 0:/INT1 为电平触发。 1:/INT1 为边沿触发。 IE0:外部中断 0 当检测到一个由 IT0 定义的边沿/电平时,该标志由硬件置位。该位可以用软件 清 0,但当 CPU 转向外部中断 0 中断服务程序时该位被自动清 0(如果 IT0=1)。 当 IT0=0 时,该标志在/INT0 有效时被置‘1’(有效电平由 IT01CF 寄存器中 的 IN0PL 位定义)。 IT0:中断 0 类型选择 该位选择/INT0 中断是边沿触发还是电平触发。可以用 IT01CF 寄存器中的 IN0PL 位将/INT0 配置为低电平有效或高电平有效。 0:/INT0 为电平触发。 1:/INT0 为边沿触发。 154 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.5 TMOD:定时器方式寄存器 R/W GATE1 位7 R/W C/T1 位6 R/W T1M1 位5 R/W T1M0 位4 R/W GATE0 位3 R/W C/T0 位2 R/W T0M1 位1 R/W T0M0 位0 复位值 00000000 SFR地址: 0x89 位 7: GATE1:定时器 1 门控位 0:当 TR1=1 时定时器 1 工作,与/INT1 的逻辑电平无关。 1:只有当 TR1=1 并且/INT1 有效时定时器 1 才工作。 位 6: C/T1:计数器/定时器 1 功能选择。 0:定时器功能:定时器 1 由 T1M 位(CKCON.4)定义的时钟加 1。 1:计数器功能:定时器 1 由外部输入引脚(T1)的负跳变加 1。 位 5-4: T1M1-T1M0:定时器 1 方式选择 这些位选择定时器 1 的工作方式。 T1M1 T1M0 方式 0 0 方式 0:13 位计数器/定时器 0 1 方式 1:16 位计数器/定时器 1 0 方式 2:自动重装载的 8 位计数器/定时器 1 1 方式 3:定时器 1 停止运行 位 3: 位 2: GATE0:定时器 0 门控位 0:当 TR0=1 时定时器 0 工作,与/INT0 的逻辑电平无关。 1:只有当 TR0=1 并且/INT0 有效时定时器 0 才工作。 C/T0:计数器/时器 0 功能选择。 0:定时器功能:定时器 0 由 T0M 位(CKCON.3)定义的时钟加 1。 1:计数器功能:定时器 0 由外部输入引脚(T0)的负跳变加 1。 位 1-0: T0M1-T0M0:定时器 0 方式选择 这些位选择定时器 0 的工作方式。 T0M1 0 0 1 1 T0M0 0 1 0 1 方式 方式 0:13 位计数器/定时器 方式 1:16 位计数器/定时器 方式 2:自动重装载的 8 位计数器/定时器 方式 3:两个 8 位计数器/定时器 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 155 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.6 CKCON:时钟控制寄存器 R/W T3MH 位7 R/W T3ML 位6 R/W T2MH 位5 R/W T2ML 位4 R/W T1M 位3 R/W T0M 位2 R/W SCA1 位1 R/W SCA0 位0 复位值 00000000 SFR地址: 0x8E 位 7: T3MH:定时器 3 高字节时钟选择。 该位选择供给定时器 3 高字节的时钟(如果定时器 3 被配置为两个 8 位定时器)。 定时器 3 工作在其他方式时该位被忽略。 0:定时器 3 高字节使用 TMR3CN 中的 T3XCLK 位定义的时钟。 1:定时器 3 高字节使用系统时钟。 位 5: T3ML:定时器 3 低字节时钟选择。 该位选择供给定时器 3 的时钟。如果定时器 3 被配置为两个 8 位定时器,该位 选择供给低 8 位定时器的时钟。 0:定时器 3 低字节使用 TMR3CN 中的 T3XCLK 位定义的时钟。 1:定时器 3 低字节使用系统时钟。 位 5: T2MH:定时器 2 高字节时钟选择。 该位选择供给定时器 2 高字节的时钟(如果定时器 2 被配置为两个 8 位定时器)。 定时器 2 工作在其他方式时该位被忽略。 0:定时器 2 高字节使用 TMR2CN 中的 T2XCLK 位定义的时钟。 1:定时器 2 高字节使用系统时钟。 位 4: T2ML:定时器 2 低字节时钟选择。 该位选择供给定时器 2 的时钟。如果定时器 2 被配置为两个 8 位定时器,该位 选择供给低 8 位定时器的时钟。 0:定时器 2 低字节使用 TMR2CN 中的 T2XCLK 位定义的时钟。 1:定时器 2 低字节使用系统时钟。 位 3: T1M:定时器 1 时钟选择。 该位选择定时器 1 的时钟源。当 C/T1 被设置为逻辑‘1’时,T1M 被忽略。 0:定时器 1 使用由分频位(SCA1-SAC0)定义的时钟。 1:定时器 1 使用系统时钟 位 2: T0M:定时器 0 时钟选择。 该位选择定时器 0 的时钟源。当 C/T0 被设置为逻辑‘1’时,T0M 被忽略。 0:定时器 0 使用由分频位(SCA1-SAC0)定义的时钟。 1:定时器 0 使用系统时钟 位 1-0: SCA1-SCA0:定时器 0/1 分频位 如果定时器 0/1 被配置为使用分频时钟,则这些位控制时钟分频数。 SCA1 0 0 1 1 SCA0 0 1 0 1 分频时钟 系统时钟/12 系统时钟/4 系统时钟/48 外部时钟/8 注:外部时钟 8 分频与系统时钟同步,在该方式,外 部时钟频率必须小于或等于系统时钟频率。 156 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.7 TL0:定时器 0 低字节 R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位 7-0: TL0:定时器 0 低字节 TL0 寄存器是 16 位定时器 0 的低字节。 图 17.8 TL1:定时器 1 低字节 R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位 7-0: TL1:定时器 1 低字节 TL1 寄存器是 16 位定时器 1 的低字节。 图 17.9 TH0:定时器 0 高字节 R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位 7-0: TH0:定时器 0 高字节 TH0 寄存器是 16 位定时器 0 的高字节。 图 17.10 TH1:定时器 1 高字节 R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位 7-0: TH1:定时器 1 高字节 TH1 寄存器是 16 位定时器 1 的高字节。 R/W 复位值 00000000 位0 SFR地址: 0x8A R/W 复位值 00000000 位0 SFR地址: 0x8B R/W 复位值 00000000 位0 SFR地址: 0x8C R/W 复位值 00000000 位0 SFR地址: 0x8D 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 157 C8051F310/1 混合信号 ISP FLASH 微控制器 17.2 定时器 2 定时器 2 是一个 16 位的计数器/定时器,由两个 8 位的 SFR 组成:TL2(低字节)和 TH2 (高字节)。定时器可以工作在 16 位自动重装载方式或 8 位自动重装载方式(两个 8 位定时 器)。T2SPLIT 位(TMR2CN.3)定义定时器 2 的工作方式。 定时器 2 的时钟源可以是系统时钟、系统时钟/12 或外部振荡源时钟/8。在使用实时时钟 (RTC)功能时,外部时钟方式是理想的选择,此时用内部振荡器驱动系统时钟,而定时器 2 (和/或 PCA)的时钟由一个精确的外部振荡器提供。注意,外部振荡源时钟/8 与系统时钟同 步。 17.2.1 16 位自动重装载方式 当 T2SPLIT 位(TMR2CN.3)被设置为逻辑‘0’时,定时器 2 工作在自动重装载的 16 位定时器方式(见图 17.11)。定时器 2 可以使用 SYSCLK、SYSCLK/12 或外部振荡器时钟/8 作为其时钟源。当 16 位定时器寄存器发生溢出(从 0xFFFF 到 0x0000)时,定时器 2 重载寄 存器(TMR2RLH 和 TMR2RLL)中的 16 位计数初值被自动装入到定时器寄存器,并将定时 器 2 高字节溢出标志 TF2H(TMR2CN.7)置‘1’。如果定时器 2 中断被允许(如果 IE.5 被置 1),每次溢出都将产生中断。如果定时器 2 中断被允许并且 TF2LEN 位(TMR2CN.5)被置‘1’, 则每次低 8 位(TL2)溢出时(从 0xFF 到 0x00)将产生一个中断。 图 17.11 定时器 2 的 16 位方式原理框图 T2XCLK CKCON TTTTTTSS 3 3 2 2 1 0CC MMMMMMA A HLHL 1 0 SYSCLK / 12 0 TL2 溢出 去SMBus 去ADC, SMBus 0 外部时钟/ 8 1 TR2 TCLK TL2 TH2 TF2H TF2L 中断 TF2LEN SYSCLK 1 T2SPLIT TR2 TMR2RLL TMR2RLH 重装载 T2XCLK 158 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 17.2.2 8 位自动重装载定时器方式 当 T2SPLIT 位(TMR2CN.3)被置‘1’时,定时器 2 工作双 8 位定时器方式。两个 8 位 定时器 TH2 和 TL2 都工作在自动重装载方式(见图 17.12)。TMR2RLL 保持 TL2 的重载值, 而 TMR2RLH 保持 TH2 的重载值。TMR2CN 中的 TR2 是 TH2 的运行控制位。当定时器 2 被 配置为 8 位方式时,TL2 总是处于运行状态。 每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟/8 作为其 时钟源。定时器 2 时钟选择位 T2MH 和 T2ML(位于 CKCON 中)选择 SYSCLK 或由定时器 2 外部时钟选择位(TMR2CN 中的 T2XCLK)定义的时钟源。时钟源的选择情况如下所示。 T2MH 0 0 1 T2XCLK 0 1 X TH2 时钟源 SYSCLK/12 外部时钟/8 SYSCLK T2ML 0 0 1 T2XCLK 0 1 X TL2 时钟源 SYSCLK/12 外部时钟/8 SYSCLK 当 TH2 发生溢出时(从 0xFF 到 0x00),TF2H 被置‘1’;当 TL2 发生溢出时(从 0xFF 到 0x00),TF2L 被置‘1’。如果定时器 2 中断被允许,则每次 TH2 溢出时都将产生一个中断。 如果定时器 2 中断被允许并且 TF2LEN 位(TMR2CN.5)被置‘1’,则每当 TL2 或 TH2 发生 溢出时将产生一个中断。在 TF2LEN 位被置‘1’的情况下,软件应检查 TF2H 和 TF2L 标志, 以确定中断的来源。TF2H 和 TF2L 标志不能被硬件自动清除,必须通过软件清除。 图 17.12 T2 8 位方式原理框图 T2XCLK SYSCLK / 12 0 CKCON T T T T T TSS 3 3 2 2 1 0CC MMMMMMA A HLHL 10 重装载 TMR2RLH 去SMBus 0 外部时钟/ 8 1 1 SYSCLK TCLK TR2 TH2 重装载 TMR2RLL TF2H TF2L TF2LEN T2SPLIT TR2 T2XCLK 中断 1 TCLK TL2 去ADC, SMBus 0 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 159 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.13 TMR2CN:定时器 2 控制寄存器 R/W TF2H 位7 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: R/W R/W R/W R/W R/W TF2L TF2LEN - T2SPLIT TR2 位6 位5 位4 位3 位2 R/W R/W 复位值 - T2XCLK 00000000 位1 位0 SFR地址: (可位寻址) 0xC8 TF2H:定时器 2 高字节溢出标志 当定时器 2 高字节发生溢出时(从 0xFF 到 0x00)由硬件置‘1’。在 16 位方 式,当定时器 2 发生溢出时(从 0xFFFF 到 0x0000)由硬件置‘1’。当定时器 2 中断被允许时,该位置‘1’将导致 CPU 转向定时器 2 的中断服务程序。该 位不能由硬件自动清 0,必须用软件清 0。 TF2L:定时器 2 低字节溢出标志 当定时器 2 低字节发生溢出时(从 0xFF 到 0x00)由硬件置‘1’。当定时器 2 中断被允许并且 TF2LEN 位被设置为逻辑‘1’时,该位置‘1’将产生中断。 TF2L 在低字节溢出时置位,与定时器 2 的工作方式无关。该位不能由硬件自 动清 0,必须用软件清 0。 TF2LEN:定时器 2 低字节中断允许位 该位允许/禁止定时器 2 低字节中断。如果 TF2LEN 被置‘1’并且定时器 2 中 断被允许(IE.5),则当定时器 2 低字节发生溢出时将产生一个中断。当定时器 2 工作在 16 位方式时,该位应被清‘0’。 0:禁止定时器 2 低字节中断。 1:允许定时器 2 低字节中断。 未用。读 = 0b,写 = 忽略。 T2SPLIT:定时器 2 双 8 位方式允许位 当该位被置‘1’时,定时器 2 工作在双 8 位自动重装载定时器方式。 0:定时器 2 工作在 16 位自动重装载方式。 1:定时器 2 工作在双 8 位自动重装载定时器方式。 TR2:定时器 2 运行控制 该位允许/禁止定时器 2。在 8 位方式,该位只控制 TH2,TL2 总是处于运行状 态。 0:定时器 2 禁止。 1:定时器 2 允许。 未用。读 = 0b,写 = 忽略。 T2XCLK:定时器 2 外部时钟选择 该位选择定时器 2 的外部时钟源。如果定时器 2 工作在 8 位方式,该位为两个 8 位定时器选择外部振荡器时钟源。但仍可用定时器 2 时钟选择位(CKCON 中的 T2MH 和 T2ML)在外部时钟和系统时钟之间作出选择。 0:选择定时器 2 外部时钟为系统时钟/12。 1:选择定时器 2 外部时钟为外部时钟/8。注意,外部振荡源时钟/8 与系统时钟 同步。 160 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.14 TMR2RLL:定时器 2 重载寄存器低字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xCA 位 7-0: TMR2RLL:定时器 2 重载寄存器的低字节 TMR2RLL 保持定时器 2 重载值的低字节。 图 17.15 TMR2RLH:定时器 2 重载寄存器高字节 R/W R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: TMR2RLH:定时器 2 重载寄存器的高字节 TMR2RLH 保持定时器 2 重载值的高字节。 复位值 00000000 SFR地址: 0xCB 图 17.16 TMR2L:定时器 2 低字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xCC 位 7-0: TMR2L:定时器 2 的低字节 在 16 位方式,TMR2L 寄存器保持 16 位定时器 2 的低字节。在 8 位方式,TMR2L 中保持 8 位低字节定时器的计数值。 图 17.17 TMR2H:定时器 2 高字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0xCD 位 7-0: TMR2H:定时器 2 的高字节 在 16 位方式,TMR2H 寄存器保持 16 位定时器 2 的高字节。在 8 位方式,TMR2H 中保持 8 位高字节定时器的计数值。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 161 C8051F310/1 混合信号 ISP FLASH 微控制器 17.3 定时器 3 定时器 3 是一个 16 位的计数器/定时器,由两个 8 位的 SFR 组成:TMR3L(低字节)和 TMR3H(高字节)。定时器可以工作在 16 位自动重装载方式或 8 位自动重装载方式(两个 8 位定时器)。T3SPLIT 位(TMR3CN.3)定义定时器 3 的工作方式。 定时器 3 的时钟源可以是系统时钟、系统时钟/12 或外部振荡源时钟/8。在使用实时时钟 (RTC)功能时,外部时钟方式是理想的选择,此时用内部振荡器驱动系统时钟,而定时器 3 (和/或 PCA)的时钟由一个精确的外部振荡器提供。注意,外部振荡源时钟/8 与系统时钟同 步。 17.3.1 16 位自动重装载方式 当 T3SPLIT 位(TMR3CN.3)被设置为逻辑‘0’时,定时器 3 工作在自动重装载的 16 位定时器方式(见图 17.18)。定时器 3 可以使用 SYSCLK、SYSCLK/12 或外部振荡器时钟/8 作为其时钟源。当 16 位定时器寄存器发生溢出(从 0xFFFF 到 0x0000)时,定时器 3 重载寄 存器(TMR3RLH 和 TMR3RLL)中的 16 位计数初值被自动装入到定时器寄存器,并将定时 器 3 高字节溢出标志 TF3H(TMR3CN.7)置‘1’。如果定时器 3 中断被允许,每次溢出都将 产生一个中断。如果定时器 3 中断被允许并且 TF3LEN 位(TMR3CN.5)被置‘1’,则每次低 8 位(TL3)溢出时(从 0xFF 到 0x00)将产生一个中断。 图 17.18 定时器 3 的 16 位方式原理框图 T3XCLK CKCON TTTTT TSS 3 3 2 2 1 0CC MMMMMM A A HLHL 1 0 SYSCLK / 12 0 去SMBus TL3 去ADC, SMBus 溢出 0 外部时钟/ 8 1 TR3 TCLK TL3 TH3 TF3H TF3L 中断 TF3LEN SYSCLK 1 3 T3SPLIT TR3 TMR3RLL TMR3RLH 重装载 T3XCLK 162 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 17.3.2 8 位自动重装载定时器方式 当 T3SPLIT 位(TMR3CN.3)被置‘1’时,定时器 3 工作双 8 位定时器方式。两个 8 位 定时器 TH3 和 TL3 都工作在自动重装载方式(见图 17.19)。TMR3RLL 保持 TL3 的重载值, 而 TMR3RLH 保持 TH3 的重载值。TMR3CN 中的 TR3 是 TH3 的运行控制位。当定时器 3 被 配置为 8 位方式时,TL3 总是处于运行状态。 每个 8 位定时器都可以被配置为使用 SYSCLK、SYSCLK/12 或外部振荡器时钟/8 作为其 时钟源。定时器 3 时钟选择位 T3MH 和 T3ML(位于 CKCON 中)选择 SYSCLK 或由定时器 3 外部时钟选择位(TMR3CN 中的 T3XCLK)定义的时钟源。时钟源的选择情况如下所示。 T3MH 0 0 1 T3XCLK 0 1 X TH3 时钟源 SYSCLK/12 外部时钟/8 SYSCLK T3ML 0 0 1 T3XCLK 0 1 X TL3 时钟源 SYSCLK/12 外部时钟/8 SYSCLK 当 TH3 发生溢出时(从 0xFF 到 0x00),TF3H 被置‘1’;当 TL3 发生溢出时(从 0xFF 到 0x00),TF3L 被置‘1’。如果定时器 3 中断被允许,则每次 TH3 溢出时都将产生一个中断。 如果定时器 3 中断被允许并且 TF3LEN 位(TMR3CN.5)被置‘1’,则每当 TL3 或 TH3 发生 溢出时将产生一个中断。在 TF3LEN 位被置‘1’的情况下,软件应检查 TF3H 和 TF3L 标志, 以确定中断的来源。TF3H 和 TF3L 标志不能被硬件自动清除,必须通过软件清除。 图 17.19 T3 8 位方式原理框图 T3XCLK SYSCLK / 12 0 CKCON T T T T T TSS 3 3 2 2 1 0CC MMMMMMA A HLHL 10 重装载 TMR3RLH 去SMBus 0 外部时钟/ 8 1 1 SYSCLK TCLK TR3 TH3 重装载 TMR3RLL 3 TF3H TF3L TF3LEN T3SPLIT TR3 T3XCLK 中断 1 TCLK TL3 去ADC 0 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 163 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.20 TMR3CN:定时器 3 控制寄存器 R/W TF3H 位7 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: R/W R/W R/W R/W R/W TF3L TF3LEN - T3SPLIT TR3 位6 位5 位4 位3 位2 R/W R/W 复位值 - T3XCLK 00000000 位1 位0 SFR地址: 0x91 TF3H:定时器 3 高字节溢出标志 当定时器 3 高字节发生溢出时(从 0xFF 到 0x00)由硬件置‘1’。在 16 位方 式,当定时器 3 发生溢出时(从 0xFFFF 到 0x0000)由硬件置‘1’。当定时器 3 中断被允许时,该位置‘1’将导致 CPU 转向定时器 3 的中断服务程序。该 位不能由硬件自动清 0,必须用软件清 0。 TF3L:定时器 3 低字节溢出标志 当定时器 3 低字节发生溢出时(从 0xFF 到 0x00)由硬件置‘1’。当定时器 3 中断被允许并且 TF3LEN 位被设置为逻辑‘1’时,该位置‘1’将产生中断。 TF3L 在低字节溢出时置位,与定时器 3 的工作方式无关。该位不能由硬件自 动清 0。 TF3LEN:定时器 3 低字节中断允许位 该位允许/禁止定时器 3 低字节中断。如果 TF3LEN 被置‘1’并且定时器 3 中 断被允许,则当定时器 3 低字节发生溢出时将产生一个中断。当定时器 3 工作 在 16 位方式时,该位应被清‘0’。 0:禁止定时器 3 低字节中断。 1:允许定时器 3 低字节中断。 未用。读 = 0b,写 = 忽略。 T3SPLIT:定时器 3 双 8 位方式允许位 当该位被置‘1’时,定时器 3 工作在双 8 位自动重装载定时器方式。 0:定时器 3 工作在 16 位自动重装载方式。 1:定时器 3 工作在双 8 位自动重装载定时器方式。 TR3:定时器 3 运行控制 该位允许/禁止定时器 3。在 8 位方式,该位只控制 TH3,TL3 总是处于运行状 态。 0:定时器 3 禁止。 1:定时器 3 允许。 未用。读 = 0b,写 = 忽略。 T3XCLK:定时器 3 外部时钟选择 该位选择定时器 3 的外部时钟源。如果定时器 3 工作在 8 位方式,该位为两个 8 位定时器选择外部振荡器时钟源。但仍可用定时器 3 时钟选择位(CKCON 中的 T3MH 和 T3ML)在外部时钟和系统时钟之间作出选择。 0:选择定时器 3 外部时钟为系统时钟/12。 1:选择定时器 3 外部时钟为外部时钟/8。注意,外部振荡源时钟/8 与系统时钟 同步。 164 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 17.21 TMR3RLL:定时器 3 重载寄存器低字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x92 位 7-0: TMR3RLL:定时器 3 重载寄存器的低字节 TMR3RLL 保持定时器 3 重载值的低字节。 图 17.22 TMR3RLH:定时器 3 重载寄存器高字节 R/W R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: TMR3RLH:定时器 3 重载寄存器的高字节 TMR3RLH 保持定时器 3 重载值的高字节。 复位值 00000000 SFR地址: 0x93 图 17.23 TMR3L:定时器 3 低字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x94 位 7-0: TMR3L:定时器 3 的低字节 在 16 位方式,TMR3L 寄存器保持 16 位定时器 3 的低字节。在 8 位方式,TMR3L 中保持 8 位低字节定时器的计数值。 图 17.24 TMR3H:定时器 3 高字节 R/W R/W R/W R/W R/W R/W R/W R/W 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 SFR地址: 0x95 位 7-0: TMR3H:定时器 3 的高字节 在 16 位方式,TMR3H 寄存器保持 16 位定时器 3 的高字节。在 8 位方式,TMR3H 中保持 8 位高字节定时器的计数值。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 165 C8051F310/1 混合信号 ISP FLASH 微控制器 18. 可编程计数器阵列 可编程计数器阵列(PCA0)提供增强的定时器功能,与标准8051的计数器/定时器相比, 它需要较少的CPU干预。PCA由一个专用的16位计数器/定时器和5个16位捕捉/比较模块组成。 每个捕捉/比较模块有其自己的I/O线(CEXn),这些I/O线在被使能时通过交叉开关连到端口 I/O。计数器/定时器由一个可编程的时基信号驱动,时基信号可以在六个时钟源中选择:系统 时钟、系统时钟/4、系统时钟/12、外部振荡器时钟/8、定时器0溢出或ECI输入引脚上的外部时 钟信号。在使用实时时钟(RTC)功能时,外部振荡器时钟方式是理想的选择,此时用内部振 荡器驱动系统时钟,而PCA的时钟由一个精确的外部振荡器提供。捕捉/比较模块有六种工作 方式:边沿触发捕捉、软件定时器、高速输出、频率输出、8位PWM和16位PWM。每个捕捉/ 比较模块的工作方式都可以被独立配置。对PCA的配置和控制是通过系统控制器的特殊功能寄 存器来实现的。PCA的原理框图示于图18.1。 注意:PCA的模块4可被用作看门狗定时器(WDT),在系统复位后即被使能为该方式。 在看门狗方式被使能时,对某些寄存器的访问受到限制,详见18.3节。 图 18.1 PCA 原理框图 SYSCLK/12 SYSCLK/4 定时器0溢出 ECI SYSCLK 外部时钟/8 PCA 时钟 选择 电路 16位计数器/定时器 捕捉/比较模块0 捕捉/比较模块1 捕捉/比较模块2 捕捉/比较模块3 捕捉/比较模块4 交叉开关 端口I/O 166 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 18.1 PCA 计数器/定时器 16 位的 PCA 计数器/定时器由两个 8 位的 SFR 组成:PCA0L 和 PCA0H。PCA0H 是 16 位计数器/定时器的高字节(MSB),而 PCA0L 是低字节(LSB)。在读 PCA0L 时,“瞬象寄存 器”自动锁存 PCA0H 的值,随后读 PCA0H 时将访问这个“瞬象寄存器”而不是 PCA0H 本 身。先读 PCA0L 寄存器可以保证正确读取整个 16 位 PCA 计数器的值。读 PCA0H 或 PCA0L 不影响计数器工作。PCA0MD 寄存器中的 CPS2-CPS0 位用于选择 PCA 计数器/定时器的时基, 如表 18.1 所示。注意:在“外部时钟 8 分频”方式,外部振荡源与系统时钟同步,外部时钟 频率必须小于或等于系统时钟频率。 当计数器/定时器溢出时(从 0xFFFF 到 0x0000),PCA0MD 中的计数器溢出标志(CF) 被置为逻辑‘1’并产生一个中断请求(如果 CF 中断被允许)。将 PCA0MD 中 ECF 位设置为 逻辑‘1’即可允许 CF 标志产生中断请求。当 CPU 转向中断服务程序时,CF 位不能被硬件 自动清除,必须用软件清除。注意,要使 CF 中断得到响应,必须先总体允许 PCA0 中断。通 过将 EA 位(IE.7)和 EPCA0 位(EIE1.4)设置为逻辑‘1’来总体允许 PCA0 中断。清除 PCA0MD 寄存器中的 CIDL 位将允许 PCA 在微控制器内核处于空闲方式时继续正常工作。 CPS2 0 0 0 0 1 1 CPS1 0 0 1 1 0 0 表 18.1 PCA 时基输入选择 CPS0 0 1 0 1 0 1 时间基准 系统时钟的 12 分频 系统时钟的 4 分频 定时器 0 溢出 ECI 下降沿(最大速率 = 系统时钟频率/4) 系统时钟 外部振荡器的 8 分频 图 18.2 PCA 计数器/定时器原理框图 IDLE P CA0 M D C WW I DD DTL L EC K CCCE PP PC SSSF 210 SYSCLK/12 000 SYSCLK/4 001 定时器0溢出 010 ECI 011 SYSCLK 100 外部时钟/8 101 PCA0CN CC CCCCC F R CCCCC F FFF F 43210 读P CA0 L 瞬象寄存器 去SFR总 线 0 溢出 PCA0H PCA0L 1 去PCA中断系统 CF 去P CA模 块 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 167 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2 捕捉/比较模块 每个模块都可被配置为独立工作,有六种工作方式:边沿触发捕捉、软件定时器、高速 输出、频率输出、8位脉宽调制器和16位脉宽调制器。每个模块在CIP-51系统控制器中都有属 于自己的特殊功能寄存器(SFR),这些寄存器用于配置模块的工作方式和与模块交换数据。 PCA0CPMn寄存器用于配置PCA捕捉/比较模块的工作方式,表18.2概述了模块工作在不 同方式时该寄存器各位的设置情况。置‘1’PCA0CPMn寄存器中的ECCFn位将允许模块的CCFn 中断。注意:要使单个的CCFn中断得到响应,必须先整体允许PCA0中断。通过将EA位(IE.7) 和EPCA0位(EIE1.4)设置为逻辑‘1’来整体允许PCA0中断。PCA0中断配置的详细信息见 图18.3。 表 18.2 PCA 捕捉/比较模块的 PCA0CPM 寄存器设置 PWM16 X X X X X X 0 1 X = 任意 ECOM X X X 1 1 1 1 1 CAPP 1 0 1 0 0 0 0 0 CAPN 0 1 1 0 0 0 0 0 MAT 0 0 0 1 1 X X X TOG 0 0 0 0 1 1 0 0 PWM 0 0 0 0 0 1 1 1 ECCF X X X X X X X X 工作方式 用 CEXn 的正沿触发捕捉 用 CEXn 的负沿触发捕捉 用 CEXn 的跳变触发捕捉 软件定时器 高速输出 频率输出 8 位脉冲宽度调制器 16 位脉冲宽度调制器 - ( n = 0 4) P CA0CP Mn PECCMT PE WC A A A O WC MO P P T G MC 1 MP Nn n n F 6nnn n n PCA计数器 /定时器溢出 P CA0CN CC CCCCC F R CCCCC FF FF F 43210 图 18.3 PCA0MD CWW C C C E IDD P PPC DT L S S S F LE C 2 1 0 K 0 1 PCA 中断原理框图 PCA模块0 PCA模块1 PCA模块2 PCA模块3 PCA模块4 ECC F0 0 1 ECC F1 0 1 ECC F2 0 1 ECC F3 0 1 ECC F4 0 1 E P C A0 ( E IE 1 . 3 ) EA ( IE .7 ) 0 1 0 中断优先级 译码 1 器 168 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2.1 边沿触发的捕捉方式 在该方式,CEXn引脚上出现的电平跳变导致PCA捕捉PCA计数器/定时器的值并将其装入 到 对 应 模 块 的 16 位 捕 捉 / 比 较 寄 存 器 ( PCA0CPLn 和 PCA0CPHn )。 PCA0CPMn 寄 存 器 中 的 CAPPn和CAPNn位用于选择触发捕捉的电平变化类型:低电平到高电平(正沿)、高电平到低 电平(负沿)或任何变化(正沿或负沿)。当捕捉发生时,PCA0CN中的捕捉/比较标志(CCFn) 被置为逻辑‘1’并产生一个中断请求(如果CCF中断被允许)。当CPU转向中断服务程序时, CCFn位不能被硬件自动清除,必须用软件清0。如果CAPPn和CAPNn位都被设置为逻辑‘1’, 可以通过直接读CEXn对应端口引脚的状态来确定本次捕捉是由上升沿触发还是由下降沿触 发。 端口I/O 图18.4 PCA捕捉方式原理框图 PCA中断 PCA0CPMn PECCMT PE WC A A A O WC MOP P T GMC 1MPNn n n F 6nnn n n x0 000x PCA0CN CC CCCCC FR CCCCC FFFFF 43210 (去CCFn) 交叉开关 CEXn 0 1 0 1 PCA0CPLn PCA0CPHn 捕捉 PCA时基 PCA0L PCA0H 注意:CEXn 输入信号必须在高电平或低电平期间至少保持两个系统时钟周期,以保证能 够被硬件识别。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 169 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2.2 软件定时器方式 软件定时器方式也称为比较器方式。在该方式,PCA将计数器/定时器的计数值与模块的 16位捕捉/比较寄存器(PCA0CPHn和PCA0CPLn)进行比较。当发生匹配时,PCA0CN中的捕 捉/比较标志(CCFn)被置为逻辑‘1’并产生一个中断请求(如果CCF中断被允许)。当CPU 转向中断服务程序时,CCFn位不能被硬件自动清除,必须用软件清0。置‘1’PCA0CPMn寄 存器中的ECOMn和MATn位将使能软件定时器方式。 注意,当向PCA0的捕捉/比较寄存器写入一个16位数值时,应先写低字节。向PCA0CPLn 的写入操作将清‘0’ECOMn位;向PCA0CPHn写入时将置‘1’ECOMn位。 写PCA0CPLn 0 复位 ENB 写 PCA0CPHn ENB 1 图 18.5 PCA 软件定时器方式原理框图 PCA0CPMn PECCMT PE WC A A A O WC MO P P T G MC 1 MPN n n n F 6nnn n n x 00 00x 允许 PCA0CPLn PCA0CPHn 16位比较器 PCA中断 PCA0CN CC CCCCC FR CCCCC FFFFF 4 3 21 0 匹配 0 1 PCA时基 PCA0L PCA0H 170 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2.3 高速输出方式 在 高 速 输 出 方 式 , 每 当 PCA 计 数 器 与 模 块 的 16 位 捕 捉 / 比 较 寄 存 器 ( PCA0CPHn 和 PCA0CPLn)发生匹配时,模块的CEXn引脚上的逻辑电平将发生变化。置‘1’ PCA0CPMn 寄存器中的TOGn、MATn和ECOMn位将使能高速输出方式。 注意:当向PCA0的捕捉/比较寄存器写入一个16位数值时,应先写低字节。向PCA0CPLn 的写入操作将清‘0’ECOMn位;向PCA0CPHn写入时将置‘1’ECOMn位。 写PCA0CPLn 0 复位 ENB 写PCA0CPHn ENB 1 图 18.6 PCA 高速输出方式原理框图 PCA0CPMn PECCMT PE WC A A A OWC MO P P T GMC 1MPN n n n F 6nnn n n x 00 0x PCA0CPLn PCA0CPHn PCA中断 PCA0CN CC CCCCC FR CCCCC FFFFF 43210 允许 16位比较器 PCA时基 PCA0L PCA0H 匹配 电平切换 0 1 TOGn 0 CEXn 交叉开关 1 端口I/O 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 171 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2.4 频率输出方式 频率输出方式可在CEXn引脚产生可编程频率的方波。捕捉/比较模块的高字节保持输出电 平改变前要计的PCA时钟数。所产生的方波的频率由方程18.1定义: 方程18.1 方波输出频率 FCEXn = FPCA 2 × PCA0CPHn 注:对于该方程,PCA0CPHn中的值为0x00时,相当于256。 其中:FPCA是由PCA方式寄存器(PCA0MD)中的CPS2-0位选择的PCA时钟的频率。捕捉 /比较模块的低字节与PCA0计数器的低字节比较;两者匹配时,CEXn的电平发生改变,高字 节中的偏移值被加到PCA0CPLn。通过将PCA0CPMn寄存器中ECOMn、TOGn和PWMn位置‘1’ 来使能频率输出方式。 写PCA0CPLn 0 复位 ENB 写PCA0CPHn ENB 1 图 18.7 PCA 频率输出方式原理框图 PCA0CPMn PECCMT PE WC A A A OWC MOP P T GMC 1 MPN n n n F 6nnn n n x 000 x PCA0CPLn 允许 8位比较器 8位加法器 PCA0CPHn 加法器允许 电平切换 匹配 TOGn 0 CEXn 1 交叉开关 端口I/O PCA时基 PCA0L 172 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2.5 8 位脉宽调制器方式 每个模块都可以被独立地用于在对应的CEXn引脚产生脉宽调制(PWM)输出。PWM输 出的频率取决于PCA计数器/定时器的时基。使用模块的捕捉/比较寄存器PCA0CPLn改变PWM 输出信号的占空比。当PCA计数器/定时器的低字节(PCA0L)与PCA0CPLn中的值相等时, CEXn引脚上的输出被置‘1’;当PCA0L中的计数值溢出时,CEXn输出被复位(见图18.8)。 当计数器/定时器的低字节PCA0L溢出时(从0xFF到0x00),保存在PCA0CPHn中的值被自动装 入到PCA0CPLn,不需软件干预。通过将PCA0CPMn寄存器中的ECOMn和PWMn位置‘1’来 使能8位脉冲宽度调制器方式。8位PWM方式的占空比由方程18.2给出。 注意:当向PCA0的捕捉/比较寄存器写入一个16位数值时,应先写低字节。向PCA0CPLn 的写入操作将清‘0’ECOMn位;向PCA0CPHn写入时将置‘1’ECOMn位。 方程18.2 8位PWM占空比 占空比 = (256 − PCA0CPHn) 256 由方程18.2可知,最大占空比为100%(PCA0CPHn = 0),最小占空比为0.39%(PCA0CPHn = 0xFF)。可以通过清‘0’ECOMn位产生0%的占空比。 写PCA0CPLn 0 复位 ENB 写PCA0CPHn ENB 1 图 18.8 PCA 的 8 位 PWM 方式原理框图 PCA0CPHn PCA0CPMn PECCMT PE WC A A A O WC MO P P T G MC 1MPN n n nF 6nnn n n 0 00x0 x PCA0CPLn 允许 8位比较器 匹配 S SET Q CEXn 交叉开关 PCA时基 PCA0L 溢出 RQ CLR 端口I/O 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 173 C8051F310/1 混合信号 ISP FLASH 微控制器 18.2.6 16 位脉宽调制器方式 PCA模块还可被配置为工作在16位PWM方式。在该方式下,16位捕捉/比较模块定义PWM 信号低电平时间的PCA时钟数。当PCA计数器与模块的值匹配时,CEXn的输出被置为高电平; 当计数器溢出时,CEXn输出被置为低电平。为了输出一个占空比可变的波形,新值的写入应 与PCA的CCFn匹配中断同步。通过将PCA0CPMn寄存器中的ECOMn、PWMn和PWM16n位置 ‘1’来使能16位PWM方式。为了得到可变的占空比,应允许匹配中断(ECCFn = 1并且MATn = 1),以同步对捕捉/比较寄存器的写操作。16位PWM方式的占空比由方程18.3给出。 注意:当向PCA0的捕捉/比较寄存器写入一个16位数值时,应先写低字节。向PCA0CPLn 的写入操作将清‘0’ECOMn位;向PCA0CPHn写入时将置‘1’ECOMn位。 方程18.3 16位PWM占空比 占空比 = (65536 − PCA0CPn) 65536 由方程18.3可知,最大占空比为100%(PCA0CPn = 0),最小占空比为0.0015%(PCA0CPn = 0xFFFF)。可以通过将ECOMn位清‘0’产生0%的占空比。 写PCA0CPLn 0 复位 ENB 写PCA0CPHn ENB 1 图 18.9 PCA 的 16 位 PWM 方式原理框图 PCA0CPMn PECCMT PE WC A A A OWC MO P P T G MC 1MPNn n nF 6n n n n n 1 00x0 x PCA0CPHn PCA0CPLn 允许 16位比较器 匹配 S SET Q CEXn 交叉开关 PCA时基 PCA0H PCA0L RQ CLR 溢出 端口I/O 174 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 18.3 看门狗定时器方式 通过 PCA 的模块 4 可以实现可编程看门狗定时器(WDT)功能。如果两次对 WDT 更新 寄存器(PCA0CPH4)的写操作相隔的时间超过规定的极限,WDT 将产生一次复位。可以根 据需要用软件配置和使能/禁止 WDT。 当 PCA0MD 寄存器中的 WDTE 位被置‘1’时,模块 4 被作为看门狗定时器(WDT)使 用。模块 4 高字节与 PCA 计数器的高字节比较;模块 4 低字节保持执行 WDT 更新时要使用 的偏移值。在系统复位后看门狗被使能。在看门狗被使能时,对某些 PCA 寄存器的写操作受 到限制。 18.3.1 看门狗定时器操作 当 WDT 被使能时: PCA 计数器被强制运行。 不允许写 PCA0L 和 PCA0H。 PCA 时钟源选择位(CPS2-CPS0)被冻结。 PCA 等待控制位(CIDL)被冻结。 模块 4 被强制进入软件定时器方式。 对模块 4 方式寄存器(PCA0CPM4 )的写操作被禁止。 当 WDT 被使能时,写 CR 位并不改变 PCA 计数器的状态;计数器将一直保持运行状态, 直到 WDT 被禁止。如果 WDT 被使能,但用户软件没有允许 PCA 计数器,则读 PCA 运行控 制(CR)位时将返回‘0’。如果在 WDT 被使能时 PCA0CPH4 和 PCA0H 发生匹配,则系统 将被复位。为了防止 WDT 复位,需要通过写 PCA0CPH4 来更新 WDT(写入值可以是任意值)。 在写 PCA0CPH4 时,PCA0H 的值加上 PCA0CPL4 中保存的偏移值后被装入到 PCA0CPH4(见 图 18.10)。 PCA0MD C WW I DD DT L LEC K CCC E PPPC SSSF 210 图 18.10 PCA 模块 4 的看门狗定时器方式 PCA0CPH4 允许 8位比较器 匹配 复位 PCA0CPL4 8位加法器 加法器 写PCA0CPH2 允 许 PCA0H PCA0L溢出 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 175 C8051F310/1 混合信号 ISP FLASH 微控制器 保存在 PCA0CPH4 中的 8 位偏移值与 16 位 PCA 计数器的高字节进行比较,该偏移值是 复位前 PCA0L 的溢出次数。PCA0L 的溢出周期取决于进行更新操作时 PCA0L 的值,最长可 达 256 个 PCA 时钟。总偏移值(PCA 时钟数)由方程 18.4 给出,其中 PCA0L 是执行更新操 作时 PCA0L 寄存器的值。 方程18.4 看门狗定时器偏移值(PCA时钟数) 偏移值 = (256 × PCA0CPL4) + (256 − PCA0L) 当 PCA0L 发生溢出并且 PCA0CPH4 和 PCA0H 匹配时,WDT 将产生一次复位。在 WDT 被使能的情况下,软件可以通过向 CCF4 标志(PCA0CN.4)写‘1’来强制产生 WDT 复位。 18.3.2 看门狗定时器的使用 配置 WDT 的步骤如下: 通过向 WDTE 位写‘0’来禁止 WDT。 选择 PCA 时钟源(用 CPS2-0 位)。 向 PCA0CPL4 装入所希望的 WDT 更新偏移值。 配置 PCA 的空闲方式位(如果希望在 CPU 处于空闲方式时 WDT 停止工作,则应将 CIDL 位置‘1’)。 通过向 WDTE 位写‘1’来使能 WDT。 在 WDT 被使能时,不能改变 PCA 时钟源和空闲方式的设置值。通过向 PCA0MD 寄存器 的 WDTE 或 WDCLK 位写‘1’来使能 WDT。当 WDCLK 被置‘1’时,在发生下一次系统 复位之前将不能禁止 WDT。如果 WDCLK 未被置‘1’,清除 WDTE 位将禁止 WDT。 WDT 在任何一次系统复位之后都被设置为使能状态。PCA0 计数器的缺省时钟为系统时 钟的十二分频(SYSCLK/12)。PCA0L 和 PCA0CPL4 的缺省值均为 0x00,因此 WDT 的超时 间隔为 256 个系统时钟。表 18.3 列出了对应某些典型系统时钟频率的超时间隔。 表 18.3 看门狗定时器超时间隔* 系统时钟(Hz) PCA0CPL4 超时间隔(ms) 24,500,000 255 32.1 24,500,000 128 16.2 24,500,000 32 4.1 18,432,000 255 42.7 18,432,000 128 21.5 18,432,000 32 5.5 11,059,200 255 71.1 11,059,200 128 35.8 11,059,200 32 9.2 3,060,000** 255 257 3,060,000** 128 129.5 3,060,000** 32 33.1 32,000 255 24576 32,000 128 12384 32,000 32 3168 *假设 PCA 使用 SYSCLK/12 作为时钟源,更新时 PCA0L 的值为 0x00。 **内部振荡器复位频率。 176 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 18.4 PCA 寄存器说明 下面对与 PCA 工作有关的特殊功能寄存器进行详细说明。 图 18.11 PCA0CN:PCA 控制寄存器 R/W CF 位7 位 7: 位 6: 位 5: 位 4: 位 3: 位 2: 位 1: 位 0: R/W R/W R/W R/W R/W R/W R/W 复位值 CR - CCF4 CCF3 CCF2 CCF1 CCF0 00000000 位6 位5 位4 位3 位2 位1 位0 SFR地址: (可位寻址) 0xD8 CF:PCA 计数器/定时器溢出标志 当 PCA 计数器/定时器从 0xFFFF 到 0x0000 溢出时由硬件置位。在计数器/定时 器溢出(CF)中断被允许时,该位置‘1’将导致 CPU 转向 PCA 中断服务程 序。该位不能由硬件自动清 0,必须用软件清 0。 CR:PCA 计数器/定时器运行控制 该位允许/禁止 PCA 计数器/定时器。 0:禁止 PCA 计数器/定时器。 1:允许 PCA 计数器/定时器。 未用。读 = 0b,写 = 忽略。 CCF4:PCA 模块 4 捕捉/比较标志 在发生一次匹配或捕捉时该位由硬件置位。当 CCF4 中断被允许时,该位置‘1’ 将导致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件 清 0。 CCF4:PCA 模块 4 捕捉/比较标志 在发生一次匹配或捕捉时该位由硬件置位。当 CCF4 中断被允许时,该位置‘1’ 将导致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件 清 0。 CCF2:PCA 模块 2 捕捉/比较标志 在发生一次匹配或捕捉时该位由硬件置位。当 CCF2 中断被允许时,该位置‘1’ 将导致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件 清 0。 CCF1:PCA 模块 1 捕捉/比较标志 在发生一次匹配或捕捉时该位由硬件置位。当 CCF1 中断被允许时,该位置‘1’ 将导致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件 清 0。 CCF0:PCA 模块 0 捕捉/比较标志 在发生一次匹配或捕捉时该位由硬件置位。当 CCF0 中断被允许时,该位置‘1’ 将导致 CPU 转向 PCA 中断服务程序。该位不能由硬件自动清 0,必须用软件 清 0。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 177 C8051F310/1 混合信号 ISP FLASH 微控制器 图 18.12 PCA0MD:PCA 方式寄存器 R/W R/W R/W R/W CIDL WDTE WDCLK - 位7 位6 位5 位4 R/W CPS2 位3 R/W CPS1 位2 R/W CPS0 位1 R/W 复位值 ECF 01000000 位0 SFR地址: 0xD9 位 7: 位 6: 位 5: 位 4: CIDL:PCA 计数器/定时器空闲控制 设置 CPU 空闲方式下的 PCA 工作方式。 0:当系统控制器处于空闲方式时,PCA 继续正常工作。 1:当系统控制器处于空闲方式时,PCA 停止工作。 WDTE:看门狗定时器使能位 如果该位被置‘1’,PCA 模块 4 被用作看门狗定时器。 0:看门狗定时器被禁止。 1:PCA 模块 4 被用作看门狗定时器。 WDCLK:看门狗定时器锁定 该位对看门狗定时器使能位锁定/解锁。当 WDCLK 被置‘1’时,在发生下一 次系统复位之前将不能禁止 WDT。 0:对看门狗定时器使能位解锁。 1:锁定看门狗定时器使能位。 未用。读 = 0b,写 = 忽略。 位 3-1: CPS2-CPS0:PCA 计数器/定时器时钟选择 这些位选择 PCA 计数器的时钟源。 CPS2 0 0 0 0 1 1 1 1 CPS1 0 0 1 1 0 0 1 1 CPS0 0 1 0 1 0 1 0 1 时钟源 系统时钟的 12 分频 系统时钟的 4 分频 定时器 0 溢出 ECI 负跳变(最大速率 = 系统时钟频率/4) 系统时钟 外部时钟的 8 分频 保留 保留 位 0: ECF:PCA 计数器/定时器溢出中断允许 该位是 PCA 计数器/定时器溢出(CF)中断的屏蔽位。 0:禁止 CF 中断。 1:当 CF(PCA0CN.7)被置位时,允许 PCA 计数器/定时器溢出的中断请求。 注意:当 WDTE 位被置‘1’时,不能改写 PCA0MD 寄存器。要改变 PCA0MD 寄存 器的内容,必须先禁止看门狗定时器。 178 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 图 18.13 PCA0CPMn:PCA 捕捉/比较寄存器 R/W R/W PWM16n ECOMn 位7 位6 R/W CAPPn 位5 R/W CAPNn 位4 R/W MATn 位3 R/W TOGn 位2 R/W PWMn 位1 R/W ECCFn 位0 复位值 00000000 PCA0CPMn 地址: PCA0CPM0=0xDA(n=0) PCA0CPM1=0xDB(n=1) PCA0CPM2=0xDC(n=2) PCA0CPM3=0xDB(n=3) PCA0CPM4=0xDE(n=4) 位 7: PWM16n:16 位脉冲宽度调制使能 当脉冲宽度调制方式被使能时(PWMn = 1),该位选择 16 位方式。 0:选择 8 位 PWM。 1:选择 16 位 PWM。 位 6: ECOMn:比较器功能使能 该位使能/禁止 PCA 模块 n 的比较器功能。 0:禁止。 1:使能。 位 5: CAPPn:正沿捕捉功能使能 该位使能/禁止 PCA 模块 n 的正边沿捕捉。 0:禁止。 1:使能。 位 4: CAPNn:负沿捕捉功能使能 该位使能/禁止 PCA 模块 n 的负边沿捕捉。 0:禁止。 1:使能。 位 3: MATn:匹配功能使能 该位使能/禁止 PCA 模块 n 的匹配功能。如果被使能,当 PCA 计数器与一个模 块的捕捉/比较寄存器匹配时,PCA0MD 寄存器中的 CCFn 位被置‘1’。 0:禁止。 1:使能。 位 2: TOGn:电平切换功能使能 该位使能/禁止 PCA 模块 n 的电平切换功能。如果被使能,当 PCA 计数器与一 个模块的捕捉/比较寄存器匹配时,CEXn 引脚的逻辑电平发生切换。如果 PWMn 位也被置‘1’,模块将工作在频率输出方式。 0:禁止。1:使能。 位 1: PWMn:脉宽调制方式使能 该位使能/禁止 PCA 模块 n 的 PWM 功能。当被使能时,CEXn 引脚输出脉冲 宽度调制信号。PWM16n 为‘0’时使用 8 位 PWM 方式,PWM16n 为‘1’时 使用 16 位方式。如果 TOGn 位也被置为逻辑‘1’,则模块工作在频率输出方 式。 0:禁止。1:使能。 位 0: ECCFn:捕捉/比较标志中断允许 该位设置捕捉/比较标志(CCFn)的中断屏蔽。 0:禁止 CCFn 中断。 1:当 CCFn 位被置‘1’时,允许捕捉/比较标志的中断请求。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 179 C8051F310/1 混合信号 ISP FLASH 微控制器 图 18.14 PCA0L:PCA 计数器/定时器低字节 R/W R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: PCA0L:PCA 计数器/定时器的低字节 PCA0L 寄存器保存 16 位 PCA 计数器/定时器的低字节(LSB)。 复位值 00000000 SFR地址: 0xF9 图 18.15 PCA0H:PCA 计数器/定时器高字节 R/W R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: PCA0H:PCA 计数器/定时器高字节 PCA0H 寄存器保存 16 位 PCA 计数器/定时器的高字节(MSB)。 复位值 00000000 SFR地址: 0xFA 图 18.16 PCA0CPLn:PCA 捕捉模块低字节 R/W R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位0 PCA0CPLn 地址: PCA0CPL0 = 0xFB (n=0) PCA0CPL1 = 0xE9 (n=1) PCA0CPL2 = 0xEB (n=2) PCA0CPL3 = 0xED (n=3) PCA0CPL4 = 0xFD (n=4) 位 7-0: PCA0CPLn:PCA 捕捉模块低字节 PCA0CPLn 寄存器保存 16 位捕捉模块 n 的低字节(LSB)。 复位值 00000000 SFR地址: 0xFB, 0xE9 0xEB, 0xED 0xFD 图 18.17 PCA0CPHn:PCA 捕捉模块高字节 R/W R/W R/W R/W R/W R/W R/W R/W 位7 位6 位5 位4 位3 位2 位1 位0 PCA0CPHn 地址: PCA0CPH0=0xFC (n=0) PCA0CPH1=0xEA (n=1) PCA0CPH2=0xEC (n=2) PCA0CPH3=0xEE (n=3) PCA0CPH4=0xFE (n=4) 位 7-0: PCA0CPHn:PCA 捕捉模块高字节 PCA0CPHn 寄存器保存 16 位捕捉模块 n 的高字节(MSB)。 复位值 00000000 SFR地址: 0xFC, 0xEA 0xEC, 0xEE 0xFE 180 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 19. 不同版本之间的行为差别 本章介绍 C8051F31x “REV A”与“REV B”或更新版本之间的行为差别。对于大多数 系统而言,这些差别并不影响功能或性能。 19.1 版本标识 位于器件顶部的批次代码含有器件的版本信息。对于 C8051F310 器件,代表版本的字母 为批次代码的倒数第二个字母;对于 C8051F311 器件,代表版本的字母为批次代码的最后一 个字母。图 19.1 示出如何在器件的顶部查找批次代码。 图 19.1 封装标志 C8051F310 封装标志 C8051F311 封装标志 C8051F310 T2ABGFAC ∧ 表示 REV A 0227 EP CYG F311 ABGFA ∧ 表示 REV A 19.2 复位表现 C8051F31x“REV A”器件的复位表现与“REV B”或更新版本的器件不同,表现在两个 方面:VDD 监视器复位期间/RST 引脚的状态和任何器件复位期间 GPIO 引脚的状态。 19.2.1 GPIO 引脚的弱上拉 对于“REV A”器件,在复位期间 GPIO 引脚为高阻态,弱上拉被禁止。复位结束后,弱 上拉立即被使能。 对于“REV B”和更新的器件,在复位期间和复位结束后 GPIO 引脚均为高阻态,弱上拉 被使能。 19.2.2 VDD 监视器和/RST 引脚 对于“REV A”器件,VDD 监视器复位不影响/RST 引脚的状态。 对于“REV B”和更新的器件,在欠压条件期间 VDD 监视器复位将/RST 引脚拉为低电平。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 181 C8051F310/1 混合信号 ISP FLASH 微控制器 19.3 PCA 计数器 对于“REV A”器件,如果在执行针对 PCA0CN 寄存器的读-修改-写指令(位操作 SETB 或 CLR,ANL,ORL,XRL)期间主 PCA 计数器(PCA0H:PCA0L)发生溢出,CF(计数器 溢出)位不被置‘1’。下面给出了解决这一问题的软件编程步骤。 1. 禁止全局中断(EA = 0)。 2. 读 PCA0L。该操作将 PCA0H 的值锁存。 3. 读 PCA0H,保存该值。 4. 执行对 CCFn 的位操作(例如:CLR CCF0,或 CCF0 = 0)。 5. 读 PCA0L。 6. 读 PCA0H,保存该值。 7. 如果第 3 步中读到的 PCA0H 的值是 0xFF,且第 6 步中读到的 PCA0H 的值是 0x00, 则在软件中将 CF 位手动置‘1’(例如:SETB CF,或 CF = 1)。 8. 重新允许中断(EA = 1)。 这种情况不会在“REV B”和更新的器件中出现。为“REV A”器件编写的软件不用修改 就可以在“REV B”和更新的器件中运行。 182 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 20. C2 接口 C8051F31x 有一个 Silicon Labs 2 线(C2)调试接口,支持 FLASH 编程、边界扫描和使 用安装在最终应用系统中的器件进行在系统调试。C2 接口使用一个时钟信号(C2CK)和一个 双向的 C2 数据信号(C2D)在器件和宿主机之间传送信息。有关 C2 协议的详细信息见 C2 接口规范。 20.1 C2 接口寄存器 下面对与 FLASH 编程和边界扫描功能有关的 C2 寄存器进行说明。对所有 C2 寄存器的 访问都要通过 C2 接口实现(详见 C2 接口规范)。 图 20.1 C2ADD:C2 地址寄存器 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: C2ADD 寄存器选择 C2 数据读和 C2 数据写命令的目标数据寄存器。 地址 0x00 0x01 0x02 0xB4 说明 选择器件 ID 寄存器(数据读指令)。 选择版本 ID 寄存器(数据读指令)。 选择 C2 FLASH 编程控制寄存器(数据读/写指令) 选择 C2 FLASH 编程数据寄存器(数据读/写指令) 图 20.2 DEVICEID:C2 器件 ID 寄存器 位7 位6 位5 位4 位3 位2 位1 该只读寄存器返回 8 位的器件 ID 号:0x09(C8051F31x)。 复位值 00001001 位0 图 20.3 REVID:C2 版本 ID 寄存器 位7 位6 位5 位4 位3 位2 位1 该只读寄存器返回 8 位的版本 ID。 复位值 可变 位0 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 183 C8051F310/1 混合信号 ISP FLASH 微控制器 图 20.4 FPCTL:C2 FLASH 编程控制寄存器 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: FPCTL:FLASH 编程控制寄存器。 该寄存器用于允许通过 C2 接口对 FLASH 编程。为了允许 C2 FLASH 编程, 必须按顺序写代码:0x02、0x01。一旦 C2 FLASH 编程被允许,必须进行一次 复位才能使系统恢复正常工作。 图 20.5 FPDAT:C2 FLASH 编程数据寄存器 复位值 00000000 位7 位6 位5 位4 位3 位2 位1 位0 位 7-0: FPDAT:FLASH 编程数据寄存器。 该寄存器用于在 C2 FLASH 访问期间传递 FLASH 命令、地址和数据。下面列 出了有效的 FLASH 命令。 代码 命令 0x06 0x07 0x08 0x03 读 FLASH 块 写 FLASH 块 擦除 FLASH 页 擦除器件 184 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 C8051F310/1 混合信号 ISP FLASH 微控制器 20.2 C2 引脚共享 C2 协议允许 C2 引脚与用户功能共享,可以进行在系统调试、FLASH 编程和边界扫描。 这种共享之所以可能,是因为 C2 通信通常发生在器件的停止运行状态。在这种状态下片内外 设和用户软件停止工作,C2 接口可以安全地“借用”C2CK(正常方式为/RST)和 C2D(正 常方式为 P3.0)引脚。在大多数情况下,需要使用外部电阻对 C2 接口和用户应用进行隔离。 典型的隔离电路如图 20.6 所示。 图 20.6 典型 C2 引脚共享电路 C8051F31x /复位 (a) 输入 (b) 输出 (c) C2CK(/RST) C2D(P0.7) C2 接口主设备 在图 20.6 的配置中,我们假设: 1. 在目标器件的停止运行状态,用户输入(b)不能改变状态。 2. 目标器件的/RST 引脚只能被作为输入使用。 对于具体的应用,可能还需要加入一些电阻。 新华龙电子有限公司 电话: 0755-83645240 83645242 传真: 0755-83645243 185

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高进,我们会尽快处理。