79F161 V0.2

Size: px
Start display at page:

Download "79F161 V0.2"

Transcription

1 集成 8 路触摸按键,12 位 PWM 的增强型 8051 微控制器 1. 特性 基于 8051 指令流水线结构的 8 位单片机 Flash ROM:32K 字节 ( 烧写次数 1 万次 ) RAM: 内部 256 字节, 外部 1280 字节,LED RAM 28 字节, 触摸按键 RAM 16 字节 类 EEPROM:1024 字节 ( 烧写次数 10 万次 ) 工作电压 : - f OSC = 2MHz - 12MHz,V DD = 2.7V - 5.5V 振荡器 ( 代码选项 ): - 晶体谐振器 :32.768kHz - 晶体谐振器 :2MHz - 12MHz - 陶瓷谐振器 :2MHz - 12MHz - 内部高频 RC 振荡器 :16.6MHz(T A = +25 C,±1%) 全温度范围 (T A = -40 C +85 C,±2%) - 内部低频 RC 振荡器 :128KHz(±10%) 24pin:22 个 CMOS 双向 I/O 管脚 I/O 内建上拉电阻 ( 典型值 30K) 7 个大电流驱动口 (7 路可以驱动共阴 / 共阳 LED) 4 个独立灌电流 I/O(P0.1 - P0.4) 5 个 16 位定时器 / 计数器 T0,T1,T2,T3,T4 2 个 12 位 PWM 定时器 中断源 : - 定时器 0,1,2,3,4 - 外部中断 4:4 输入 - 外部中断 3:2 输入 - 外部中断 2 - EUART,TWI,SCM,LPD - PWM1,2,TOUCH,CRC 集成 8 路触摸按键功能 增强型 EUART TWI( 主从模式 ) LED 驱动器 (7COM 驱动共阴 / 共阳 LED) - 7 X 13 段 内建低电压检测功能 (LPD) - LPD 电压 2.8V - 4.2V 可设置 内建的低电压复位功能 (LVR)( 代码选项 ) - LVR 电压 1:3.7V - LVR 电压 2:3.1V - LVR 电压 3:2.8V CPU 机器周期 : - 1 个振荡周期 看门狗定时器 (WDT) 预热计数器 循环冗余校验 (CRC) 支持省电运行模式 : - 空闲模式 - 掉电模式 Flash 型 ROM 封装 : - SOP24 2. 概述 SH79F3218 是一种高速高效率 8051 可兼容单片机 在同样振荡频率下, 较之传统的 8051 芯片它有着运行更快速的优越特性 SH79F3218 保留了标准 8051 芯片的大部分特性 这些特性包括内置 256 字节 RAM,1 个 UART 和外置中断 INT2,INT3 和 INT4, 一个 TWI 中断, 一个 TK 中断 此外,SH79F3218 还集成了外部 1280 字节 RAM, 可兼容 8052 芯片的 16 位定时器 (Timer2) 该单片机还包括适合于程序和数据的 32K 字节 Flash 块 SH79F3218 不仅集成了如 EUART/TWI 等标准通讯模块, 此外还集成了 LED 驱动器,PWM 定时器等模块 为了达到高可靠性和低功耗,SH79F3218 内建看门狗定时器, 低电压复位功能及系统时钟监控功能 此外 SH79F3218 还提供了 2 种低功耗省电模式 1 V1.0

2 3. 方框图 VDD Power Pipelined 8051 architecture 32K Bytes Flash ROM Internal 256 Bytes External 768 Bytes (Exclude System Register) Timer 0,1 (16bit) Timer 2 (16bit) Timer 3 (16bit) Timer 4(16bit) External Interrupt PWM1,2 Watch Dog Touch key channel Port 3 Configuration I/Os Port 2 Configuration I/Os Port 1 Configuration I/Os Port 0 Configuration I/Os EUART TK1-TK8 P3.0-P3.2 P2.0-P2.7 P1.0-P1.2, P1.7 P0.1-P0.7 Oscillator TWI v JTAG ports (for debug) LPD LED Driver SEG/COM 2

3 4. 引脚配置 24Pin SOP 封装引脚图 TCH5/SEG2/P2.4 TCH6/SEG1/P2.5 TCH7/SEG0/P2.6 C1/COM7/P2.7 XTAL1/COM6/SEG12/T4/P3.0 XTAL2/COM5/SEG11/T3/P3.1 TDO/SWE/INT2/P3.2 VDD GND P0.1 P0.2 BUZ1/P SH79F3218 SOP 24 P2.3/SEG3/TCH4 P2.2/INT46/SEG4/TCH3/TCK P2.1/PWM1/SEG5/TCH2/TDI P2.0/PWM2/SEG6/TCH1/TMS P1.7/INT45/SEG7/TCH0 P1.2/INT40/SEG13/COM4 P1.1/INT47/COM3 P1.0/INT31/TXD/SCK/COM2 P0.7/INT30/RXD/SDA/COM1 P0.6/BUZ2/SEG14 P0.5/SEG15 P0.4 引脚配置图 注意 : (1) 未使用的 I/O 需要设置输出 ( 保持低电平 ) 或者输入上拉 ( 保持高电平 ), 避免引脚浮动导致的漏电及干扰 SH79F3218 封装需要设置的引脚 :P3.3,P3.4,P3.6,P0.0(PxPCRy,x = 0-4,y = 0-7)(Px.y,x = 0-4,y = 0-7), 将以上引脚设置输出 ( 保持低电平 ) 或者输入上拉 ( 保持高电平 ), 避免引脚浮动导致的漏电及干扰 SH79F3218 无 ADC 功能 (2) 命名中, 写在最外侧的功能具有最高优先级, 最内侧的功能具有最低优先级 ( 参见配置图 ) 当一个被高优先级的功能占用时, 即使低优先级功能被允许, 也不能作为低优先级功能 只有当软件禁止高优先级功能, 才能被释放作为低优先级端口使用 3

4 Table 4.1 引脚功能 引脚编号 (SOP24) 引脚命名 默认功能 1 TCH5/SEG2/P2.4 P2.4 2 TCH6/SEG1/P2.5 P2.5 3 TCH7/SEG0/P2.6 P2.6 4 C1/COM7/P2.7 P2.7 5 XTAL1/COM5/SEG12/T4/P3.0 P3.0 6 XTAL2/COM6/SEG11/T3/P3.1 P3.1 7 SWE/INT2/P3.2 P3.2 8 VDD GND P0.1 P P0.2 P BUZ1/P0.3 P P0.4 P SEG15/P0.5 P SEG14/BUZ2/P0.6 P COM1/SDA/RXD/INT30/P0.7 P COM2/SCK/TXD/INT31/P1.0 P COM3/INT47/P1.1 P COM4/SEG13/INT40/P1.2 P TCH0/SEG7/INT45/P1.7 P TMS/TCH1/SEG6/PWM2/P2.0 P TDI/TCH2/SEG5/PWM1/P2.1 P TCK/TCH3/SEG4/INT46/P2.2 P TCH4/SEG3/P2.3 P2.3 注意 : 未使用的 I/O 需要设置输出 ( 保持低电平 ) 或者输入上拉 ( 保持高电平 ), 避免引脚浮动导致的漏电及干扰 SH79F3218 需要设置的引脚 :P3.3,P3.4,P3.6,P0.0(PxPCRy,x = 0-4,y = 0-7)(Px.y,x = 0-4,y = 0-7), 将以上引脚设置输出 ( 保持低电平 ) 或者输入上拉 ( 保持高电平 ), 避免引脚浮动导致的漏电及干扰 SH79F3218 无 ADC 功能 4

5 5. 引脚描述 I/O 端口 引脚编号类型说明 P0.1 - P0.7 I/O 7 位双向 I/O 端口 P1.0 - P1.2,P1.7 I/O 4 位双向 I/O 端口 定时器 P2.0 - P2.7 I/O 8 位双向 I/O 端口 P3.0 - P3.2 I/O 3 位双向 I/O 端口 PWM 控制器 EUART LED 驱动器 T3 I/O 定时器 3 外部输入 T4 I/O 定时器 4 外部输入 / 比较输出 PWM1 O 12 位 PWM0 定时器输出引脚 PWM2 O 12 位 PWM1 定时器输出引脚 RXD I EUART 数据输入引脚 TXD O EUART 数据输出引脚 LED_C1 - LED_C7 O LED 显示 COM 信号输出引脚 TWI TK LED_S0 - S7 LED_S11 - S15 蜂鸣器 O LED 显示 Segment 信号输出引脚 SDA I/O TWI 数据输入 / 输出引脚 SCK I/O TWI 时钟引脚 TCH0-7 I 触摸按键输入引脚 BUZ1,2 O 蜂鸣器输出 中断 & 复位 & 时钟 & 电源 INT2 I 外部中断 2 INT30 I 外部中断 30 INT31 I 外部中断 31 INT40,INT45-47 I 外部中断 40,45-47 XTAL1 I 谐振器输入 XTAL2 O 谐振器输出 GND P 接地 VDD P 电源 ( V) 5

6 续上表 单线仿真 引脚编号类型说明 SWE(P3.2) I/O 单线仿真 TDO(P3.2) O 调试接口 : 测试数据输出 TCK(P2.2) I 调试接口 : 测试模式选择 TDI(P2.1) I 调试接口 : 测试数据输入 TMS(P2.0) I 调试接口 : 测试时钟输入 注意 : 当 P3.2,P2.2 - P2.0 作为调试接口时,P3.2,P2.2 - P2.0 功能被禁止 当 P3.2 为单线仿真时, 其他功能无效 6

7 6. SFR 映像 SH79F3218 内置 256 字节的直接寻址寄存器, 包括通用数据存储器和特殊功能寄存器 (SFR),SH79F3218 的 SFR 有以下几种 : CPU 内核寄存器 : ACC,B,PSW,SP,DPL,DPH CPU 内核增强寄存器 : 电源时钟控制寄存器 : Flash 寄存器 : 数据页面控制寄存器 : 看门狗定时器寄存器 : 系统时钟控制寄存器 : 中断寄存器 : I/O 口寄存器 : 定时器寄存器 : EUART 寄存器 : LED 寄存器 : BUZZER 寄存器 : TWI 寄存器 : PWM 寄存器 : LPD 寄存器 : TK 寄存器 : CRC 寄存器 : AUXC,DPL1,DPH1,INSCON,XPAGE PCON,SUSLO IB_OFFSET,IB_DATA,IB_CON1,IB_CON2,IB_CON3,IB_CON4,IB_CON5,FLASHCON XPAGE RSTSTAT CLKCON IEN0,IEN1,IENC,IENC1,IENC2,IPH0,IPL0,IPH1,IPL1,EXF0,EXF1,EXF3,EXCON0, EXCON1,EXCON2 P0,P1,P2,P3,P4,P0CR,P1CR,P2CR,P3CR,P4CR,P0PCR,P1PCR,P2PCR, P3PCR,P4PCR,P1OS TCON,TMOD,TL0,TH0,TL1,TH1,TCON1,T2CON,T2MOD,TH2,TL2,RCAP2L, RCAP2H,T3CON,TH3,TL3,T4CON,TH4,TL4,SWTHL SCON,SBUF,SADEN,SADDR,PCON,RxCON DISPCON,SEG01,SEG02,DISPCLK,LEDCOM,DISCOM,LIGHTCOM,SHARECON BUZCON,BUZD,BUZP TWIDAT,TWIADR,TWISTA,TWICON PWMEN,PWMEN1,PWMLO,PWM1C,PWM2C,PWM1PL,PWM1PH,PWM1DL,PWM1DH, PWM2C,PWM2PL,PWM2PH,PWM2DL,PWM2DH LPDCON TKCON1,TKF0,TKU1,TKDIV01,TKDIV02,TKDIV03,TKDIV04,TKVREF,TKST, TKRANDOM,TKCOUNT,TKW,P2SS,TKWAIT CRCCON,CRCDL,CRCDH 7

8 Table 6.1 C51 核 SFRs 符号地址名称 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 ACC E0H 累加器 ACC.7 ACC.6 ACC.5 ACC.4 ACC.3 ACC.2 ACC.1 ACC.0 B F0H B 寄存器 B.7 B.6 B.5 B.4 B.3 B.2 B.1 B.0 AUXC F1H C 寄存器 C.7 C.6 C.5 C.4 C.3 C.2 C.1 C.0 PSW D0H 程序状态字 CY AC F0 RS1 RS0 OV F1 P SP 81H 堆栈指针 SP.7 SP.6 SP.5 SP.4 SP.3 SP.2 SP.1 SP.0 DPL 82H 数据指针低位字节 DPL0.7 DPL0.6 DPL0.5 DPL0.4 DPL0.3 DPL0.2 DPL0.1 DPL0.0 DPH 83H 数据指针高位字节 DPH0.7 DPH0.6 DPH0.5 DPH0.4 DPH0.3 DPH0.2 DPH0.1 DPH0.0 DPL1 84H 数据指针 1 低位字节 DPL1.7 DPL1.6 DPL1.5 DPL1.4 DPL1.3 DPL1.2 DPL1.1 DPL1.0 DPH1 85H 数据指针 1 高位字节 DPH1.7 DPH1.6 DPH1.5 DPH1.4 DPH1.3 DPH1.2 DPH1.1 DPH1.0 INSCON 86H 数据指针选择 BKS0 - - DIV MUL - DPS Table 6.2 电源时钟控制 SFRs 符号地址名称 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PCON 87H 电源控制 SMOD SSTAT - - GF1 GF0 PD IDL SUSLO 8EH 电源控制保护字 SUSLO.7 SUSLO.6 SUSLO.5 SUSLO.4 SUSLO.3 SUSLO.2 SUSLO.1 SUSLO.0 8

9 Table 6.3 Flash 控制 SFRs 符号地址名称 IB_OFF SET IB_DATA IB_CON1 IB_CON2 IB_CON3 IB_CON4 IB_CON5 XPAGE FLASHCON FBH FCH F2H F3H F4H F5H F6H F7H A7H Table 6.4 WDT SFR 符号地址名称 RSTSTAT B1H POR/WDT/LVR /PIN 可编程 flash 低位字节偏移 SH79F3218 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_OFF SET.7 IB_OFF SET.6 IB_OFF SET.5 IB_OFF SET.4 IB_OFF SET.3 IB_OFF SET.2 IB_OFF SET.1 IB_OFF SET.0 可编程 flash 数据寄存器 IB_DATA.7 IB_DATA.6 IB_DATA.5 IB_DATA.4 IB_DATA.3 IB_DATA.2 IB_DATA.1 IB_DATA.0 flash 控制寄存器 IB_CON1.7 IB_CON1.6 IB_CON1.5 IB_CON1.4 IB_CON1.3 IB_CON1.2 IB_CON1.1 IB_CON1.0 flash 控制寄存器 IB_CON2.3 IB_CON2.2 IB_CON2.1 IB_CON2.0 flash 控制寄存器 IB_CON3.3 IB_CON3.2 IB_CON3.1 IB_CON3.0 flash 控制寄存器 IB_CON4.3 IB_CON4.2 IB_CON4.1 IB_CON4.0 flash 控制寄存器 IB_CON5.3 IB_CON5.2 IB_CON5.1 IB_CON5.0 编程用地址选择寄存器 XPAGE.7 XPAGE.6 XPAGE.5 XPAGE.4 XPAGE.3 XPAGE.2 XPAGE.1 XPAGE.0 flash 控制寄存器 FAC POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 看门狗定时器控制寄存器 * WDOF SWRF PORF LVRF - WDT.2 WDT.1 WDT.0 注意 :* 表示不同情况的复位决定 RSTSTAT 寄存器中的, 详见 WDT 章节 9

10 Table 6.5 时钟控制 SFR 符号地址名称 CLKCON B2H Table 6.6 中断 SFRs 符号地址名称 IEN0 IEN1 IENC IENC1 IENC2 IPH0 IPL0 IPH1 IPL1 EXF0 EXF1 EXF3 EXCON A8H A9H BAH BBH BCH B4H B8H B5H B9H E8H D8H D1H A4H POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 系统时钟选择 k_SPDUP CLKS1 CLKS0 SCMIF HFON FS - - POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 中断允许控制 EA - ET2 ES ET1 EPWM2 ET0 TKIE 中断允许控制 ESCM EX3 EPWM1 ET3 ETWI EX4 EX2 ET4 中断通道允许控制 EXS47 EXS46 EXS EXS40 中断通道允许控制 ECRC EPWM1 EPWM2 - ESCM1 ELPD 中断通道允许控制 EXS31 EXS30 中断优先权控制高位 PT2H PESH PX3H PW2H PT0H PTKH 中断优先权控制低位 PT2L PESL PX3L PW2L PTKL PT0L 中断优先权控制高位 PSCH PT1H PW1H PT3H PTWH PX4H PX2H PT4H 中断优先权控制低位 PSCL PT1L PW1L PT3L PTWL PX4L PX2L PT4L 外部中断寄存器 IT4.1 IT4.0 IT3.1 IT3.0 IT2.1 IT2.0 IE3 IE2 外部中断寄存器 IF47 IF46 IF IF40 外部中断寄存器 IF31 IF30 外部中断采样次数控制 EXCON I1PS1 I1PS0 I1SN1 I1SN0 I0PS1 I0PS0 I0SN1 10

11 Table 6.7 端口 SFRs 符号地址名称 P0 P1 P2 P3 P4 P0CR P1CR P2CR P3CR P4CR P0PCR P1PCR P2PCR P3PCR P4PCR P1OS P2SS 80H 90H A0H B0H 90H Bank1 E1H E2H E3H E4H 91H Bank1 E9H EAH EBH ECH 92H Bank1 EFH 9DH POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 8 位端口 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 8 位端口 P1.7 * * * * P1.2 P1.1 P1.0 8 位端口 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 3 位端口 * P3.6 * P3.4 P3.3 P3.2 P3.1 P3.0 3 位端口 * * * * * * * * 端口 0 输入 / 输出方向控制 P0CR.7 P0CR.6 P0CR.5 P0CR.4 P1CR.3 P1CR.2 P1CR.1 * 端口 1 输入 / 输出方向控制 P1CR.7 * * * * P1CR.2 P1CR.1 P1CR.0 端口 2 输入 / 输出方向控制 P2CR.7 P2CR.6 P2CR.5 P2CR.4 P2CR.3 P2CR.2 P2CR.1 P2CR.0 端口 3 输入 / 输出方向控制 * P3CR.6 * P3CR.4 P3CR.3 P3CR.2 P3CR.1 P3CR.0 端口 4 输入 / 输出方向控制 * * * * * * * * 端口 0 内部上拉允许 P0PCR.7 P0PCR.6 P0PCR.5 P0PCR.4 P0PCR.3 P0PCR.2 P0PCR.1 * 端口 1 内部上拉允许 P1PCR.7 * * * * P1PCR.2 P1PCR.1 P1PCR.0 端口 2 内部上拉允许 P2PCR.7 P2PCR.6 P2PCR.5 P2PCR.4 P2PCR.3 P2PCR.2 P2PCR.1 P2PCR.0 端口 3 内部上拉允许 * P3PCR.6 * P3PCR.4 P3PCR.3 P3PCR.2 P3PCR.1 P3PCR.0 端口 4 内部上拉允许 * * * * * * * * 输出模式选择 P1OSCR.1 P1OSCR.0 P1OS.1 P1OS.0 触摸按键模式选择 P2SS.7 P2SS.6 P2SS.5 P2SS.4 P2SS.3 P2SS.2 P2SS.1 P2SS.0 注意 :* 处设置请查阅 7.7 I/O 端口章节 (P34) 11

12 Table 6.8 定时器 SFRs 符号地址名称 TCON TMOD TL0 TH0 TL1 TH1 TCON1 T2CON T2MOD RCAP2L RCAP2H TL2 TH2 T3CON TL3 TH3 T4CON TL4 TH4 88H 89H 8AH 8BH 8CH 8DH 8FH C8H C9H CAH CBH CCH CDH C0H Bank1 C2H Bank1 C3H Bank1 C8H Bank1 CCH Bank1 CDH Bank1 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 定时器 / 计数器控制寄存器 TF1 TR1 TF0 TR 定时器 / 计数器 0,1 模式寄存器 M11 M M01 M00 定时器 / 计数器 0 低位字节 TL0.7 TL0.6 TL0.5 TL0.4 TL0.3 TL0.2 TL0.1 TL0.0 定时器 / 计数器 0 高位字节 TH0.7 TH0.6 TH0.5 TH0.4 TH0.3 TH0.2 TH0.1 TH0.0 定时器 / 计数器 1 低位字节 TL1.7 TL1.6 TL1.5 TL1.4 TL1.3 TL1.2 TL1.1 TL1.0 定时器 / 计数器 1 高位字节 TH1.7 TH1.6 TH1.5 TH1.4 TH1.3 TH1.2 TH1.1 TH1.0 定时器 / 计数器 0,1 控制寄存器 TCLK_S1 TCLK_S0 - TCLKP1 TCLKP0 - - 定时器 / 计数器 2 控制寄存器 TF TR2 - - 定时器 / 计数器 2 模式寄存器 TCLKP 定时器 / 计数器 2 重载 / 截获低位字节 RCAP2L.7 RCAP2L.6 RCAP2L.5 RCAP2L.4 RCAP2L.3 RCAP2L.2 RCAP2L.1 RCAP2L.0 定时器 / 计数器 2 重载 / 截获高位字节 RCAP2H.7 RCAP2H.6 RCAP2H.5 RCAP2H.4 RCAP2H.3 RCAP2H.2 RCAP2H.1 RCAP2H.0 定时器 / 计数器 2 低位字节 TL2.7 TL2.6 TL2.5 TL2.4 TL2.3 TL2.2 TL2.1 TL2.0 定时器 / 计数器 2 高位字节 TH2.7 TH2.6 TH2.5 TH2.4 TH2.3 TH2.2 TH2.1 TH2.0 定时器 / 计数器 3 控制寄存器 TF3 - T3PS.1 T3PS.0 - TR3 T3CLKS.1 T3CLKS.0 定时器 / 计数器 3 低位字节 TL3.7 TL3.6 TL3.5 TL3.4 TL3.3 TL3.2 TL3.1 TL3.0 定时器 / 计数器 3 高位字节 TH3.7 TH3.6 TH3.5 TH3.4 TH3.3 TH3.2 TH3.1 TH3.0 定时器 / 计数器 4 控制寄存器 TF4 TC4 T4PS1 T4PS0 T4M1 T4M0 TR4 T4CLKS 定时器 / 计数器 4 低位字节 TL4.7 TL4.6 TL4.5 TL4.4 TL4.3 TL4.2 TL4.1 TL4.0 定时器 / 计数器 4 高位字节 TH4.7 TH4.6 TH4.5 TH4.4 TH4.3 TH4.2 TH4.1 TH4.0 12

13 Table 6.9 EUART SFRs 符号地址名称 SCON SBUF SADEN SADDR SBRTH SBRTL SFINE PCON 98H 99H 9BH 9AH C7H BFH BEH 87H Table 6.10 BUZZER SFRs 符号地址名称 BUZCON BUZP BDH AFH Table 6.11 CRC SFRs 符号地址名称 CRCCON CRCDL CRCDH ACH ADH AEH POR/WDT/LVR /PIN SH79F3218 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 串行控制 SM0/FE SM1/RXOV SM2/TXCOL REN TB8 RB8 TI RI 串行数据缓冲器 SBUF.7 SBUF.6 SBUF.5 SBUF.4 SBUF.3 SBUF.2 SBUF.1 SBUF.0 从属地址掩码 SADEN.7 SADEN.6 SADEN.5 SADEN.4 SADEN.3 SADEN.2 SADEN.1 SADEN.0 从属地址 SADDR.7 SADDR.6 SADDR.5 SADDR.4 SADDR.3 SADDR.2 SADDR.1 SADDR.0 波特率发生寄存器 SBRTEN SBRT.14 SBRT.13 SBRT.12 SBRT.11 SBRT.10 SBRT.9 SBRT.8 波特率发生寄存器 SBRT.7 SBRT.6 SBRT.5 SBRT.4 SBRT.3 SBRT.2 SBRT.1 SBRT.0 波特率微调寄存器 SFINE.3 SFINE.2 SFINE.1 SFINE.0 电源和串行控制 SMOD SSTAT - - GF1 GF0 PD IDL POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 蜂鸣器输出控制 BUZEN BUSLE - - BCA1 BCA0 - - 蜂鸣器周期控制 BZP.7 BZP.6 BZP.5 BZP.4 BZP.3 BZP.2 BZP.1 BZP.0 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CRC 控制寄存器 CRC_GO CRCIF - CRCADDR4 CRCADDR3 CRCADDR2 CRCADDR1 DAT.0 CRC 结果低位寄存器 CRCD.7 CRCD.6 CRCD.5 CRCD.4 CRCD.3 CRCD.2 CRCD.1 CRCD.0 CRC 结果高位寄存器 CRCD.15 CRCD.14 CRCD.13 CRCD.12 CRCD.11 CRCD.10 CRCD.9 CRCD.8 13

14 Table 6.12 TK SFRs 符号地址名称 TKCON1 TKF0 TKU1 TKDIV01 TKDIV02 TKDIV03 TKDIV04 TKVREF TKST TKRANDOM TKW TKCOUNT TKWAIT A1H C1H C2H C3H C4H C5H C6H CEH CFH B6H B7H E6H A2H Table 6.13 LPD SFR 符号地址名称 LPDCON B3H POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TK 功能控制寄存器 TKCON - TKGO/D ---- Ō --- N ---- Ē --- SHARE MODE OVDD FSW1 FSW0 TK 中断标志位寄存器 IFERR IFGO IFAVE IFCOUNT IFTKOV - - TK 通道选择寄存器 TK8 TK7 TK6 TK5 TK4 TK3 TK2 TK1 TK 放大系数寄存器 DIV7 DIV6 DIV5 DIV4 DIV3 DIV2 DIV1 DIV0 TK 放大系数寄存器 DIV15 DIV14 DIV13 DIV12 DIV11 DIV10 DIV9 DIV8 TK 放大系数寄存器 DIV23 DIV22 DIV21 DIV20 DIV19 DIV18 DIV17 DIV16 TK 放大系数寄存器 DIV27 DIV26 DIV25 DIV24 基准电压源选择寄存器 VREF1 VREF0 CMPD1 CMPD0 VTK1 VTK0 TUNE1 TUNE0 触摸按键频率选择寄存器 ST.6 ST.5 ST.4 ST.3 ST.2 ST.1 ST.0 触摸按键频率选择寄存器 TKRADON TKOFFSET TKVDD TKOUT - - RANDOM1 RANDOM0 TK 通道错误显示寄存器 TW.2 TW.1 TW.0 触摸按键宽度选择寄存器 COUNT0.7 COUNT0.6 COUNT0.5 COUNT0.4 COUNT0.3 COUNT0.2 COUNT0.1 COUNT0.0 触摸按键等待宽度选择寄存器 TKWAIT.7 TKWAIT.6 TKWAIT.5 TKWAIT.4 TKWAIT.3 TKWAIT.2 TKWAIT.1 TKWAIT.0 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 低电压检测控制寄存器 LPDEN LPDF LPDOP LPDS1 LPDS0 14

15 Table 6.14 LED SFRs 符号地址名称 DISPCON SEG01 SEG02 DISPCLK LEDCOM DISCOM LIGHTCOM SHARECON D9H DAH DBH DCH DDH DEH DFH D7H Table 6.15 TWI SFRs 符号地址名称 TWICON TWISTA TWIADR TWIDAT F8H F9H FAH FDH POR/WDT/LVR /PIN SH79F3218 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 LED 功能选择寄存器 LEDON - MODSW LEDMODE0 LEDMODE1 - - SEG 功能选择寄存器 SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 SEG 功能选择寄存器 SEG14 SEG13 SEG12 SEG LED 时钟频率选择寄存器 DCK0.7 DCK0.6 DCK0.5 DCK0.4 DCK0.3 DCK0.2 DCK0.1 DCK0.0 COM 功能选择寄存器 COM7 COM6 COM5 COM4 COM3 COM2 COM1 LED COM 扫描宽度寄存器 DCOM.7 DCOM.6 DCOM.5 DCOM.4 DCOM.3 DCOM.2 DCOM.1 DCOM.0 LED COM 辉度选择寄存器 CC3 CC2 CC1 SHARE 控制寄存器 SHARE.2 SHARE.1 SHARE.0 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TWI 设置寄存器 TOUT ENTWI STA STO TWINT AA TFREE EFREE TWI 状态寄存器 TWISTA.7 TWISTA.6 TWISTA.5 TWISTA.4 TWISTA.3 CR.1 CR.0 ETOT TWI 数据地址寄存器 TWA.6 TWA.5 TWA.4 TWA.3 TWA.2 TWA.1 TWA.0 GC TWI 数据输入 / 输出寄存器 TWIDAT.7 TWIDAT.6 TWIDAT.5 TWIDAT.4 TWIDAT.3 TWIDAT.2 TWIDAT.1 TWIDAT.0 15

16 Table 6.16 PWM SFRs 符号地址名称 PWM1CON PWM2CON PWM1PH PWM1PL PWM2PH PWM2PL PWM1DH PWM1DL PWM2DH PWM2DL E8H Bank1 E9H Bank1 EAH Bank1 EBH Bank1 ECH Bank1 EDH Bank1 E4H Bank1 E5H Bank1 E6H Bank1 E7H Bank1 注意 :- : 保留位 POR/WDT/LVR /PIN 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1 功能选择寄存器 PWM1EN PWM1S PWM1CK1 PWM1CK0 - PWM1IE PWM1IF PWM1SS PWM2 功能选择寄存器 PWM2EN PWM2S PWM2CK1 PWM2CK0 - PWM2IE PWM2IF PWM2SS 12 位 PWM1 周期控制高位 PWM1P.11 PWM1P.10 PWM1P.9 PWM1P.8 12 位 PWM1 周期控制低位 PWM1P.7 PWM1P.6 PWM1P.5 PWM1P.4 PWM1P.3 PWM1P.2 PWM1P.1 PWM1P.0 12 位 PWM2 周期控制高位 PWM2P.11 PWM2P.10 PWM2P.9 PWM2P.8 12 位 PWM2 周期控制低位 PWM2P.7 PWM2P.6 PWM2P.5 PWM2P.4 PWM2P.3 PWM2P.2 PWM2P.1 PWM2P.0 12 位 PWM1 占空比控制高位 PWM1D.11 PWM1D.10 PWM1D.9 PWM1D.8 12 位 PWM1 占空比控制低位 PWM1D.7 PWM1D.6 PWM1D.5 PWM1D.4 PWM1D.3 PWM1D.2 PWM1D.1 PWM1D.0 12 位 PWM2 占空比控制高位 PWM2D.11 PWM2D.10 PWM2D.9 PWM2D.8 12 位 PWM2 占空比控制低位 PWM2D.7 PWM2D.6 PWM2D.5 PWM2D.4 PWM2D.3 PWM2D.2 PWM2D.1 PWM2D.0 16

17 SFR 映像图 可位寻址 不可位寻址 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F SH79F3218 F8H TWICON TWISTA TWIADR IB_OFFSET IB_DATA TWIDAT FFH F0H B AUXC IB_CON1 IB_CON2 IB_CON3 IB_CON4 IB_CON5 XPAGE F7H E8H EXF0 P0PCR P1PCR P2PCR P3PCR P1OS EFH E0H ACC P0CR P1CR P2CR P3CR TKCOUNT E7H D8H EXF1 DISPCON SEG01 SEG02 DISPCLK LEDCOM DISCOM LIGHTCOM DFH D0H PSW EXF3 SHARECON D7H C8H T2CON T2MOD RCAP2L RCAP2H TL2 TH2 TKVREF TKST CFH C0H HLVCON TKF0 TKU1 TKDIV01 TKDIV02 TKDIV03 TKDIV04 SBRTH C7H B8H IPL0 IPL1 IENC IENC1 IENC2 BUZCON SFINE SBRTL BFH B0H P3 RSTSTAT CLKCON LPDCON IPH0 IPH1 TKRANDOM TKW B7H A8H IEN0 IEN1 ISPLO ISPCON CRCCON CRCDL CRCDH BUZP AFH A0H P2 TKCON1 TKWAIT EXCON FLASHCON A7H 98H SCON SBUF SADDR SADEN P2SS 9FH 90H P1 97H 88H TCON TMOD TL0 TH0 TL1 TH1 SUSLO TCON1 8FH 80H P0 SP DPL DPH DPL1 DPH1 INSCON PCON 87H Bank1 F8H 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F 可位寻址 不可位寻址 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F F0H B AUXC XPAGE F7H E8H PWM1CON PWM2CON PWM1PH PWM1PL PWM2PH PWM2PL EFH E0H ACC PWM1DH PWM1DL PWM2DH PWM2DL E7H D8H D0H PSW D7H C8H T4CON TL4 TH4 CFH C0H T3CON TL3 TH3 C7H B8H IPL0 IPL1 BFH B0H IPH0 IPH1 B7H A8H IEN0 IEN1 AFH A0H 98H 90H P4 P4CR P4PCR 97H 88H SUSLO 8FH 80H SP DPL DPH DPL1 DPH1 INSCON PCON 87H 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F 注意 : 未使用的 SFR 地址禁止读写 FFH DFH A7H 9FH 17

18 7. 标准功能 7.1 CPU CPU 内核特殊功能寄存器 特性 CPU 内核寄存器 :ACC,B,PSW,SP,DPL,DPH 累加器 B 寄存器 累加器 ACC 是一个常用的专用寄存器, 指令系统中采用 A 作为累加器的助记符 在乘除法指令中, 会用到 B 寄存器 在其它指令中,B 寄存器可作为暂存器来使用 栈指针 (SP) 栈指针 SP 是一个 8 位专用寄存器, 在执行 PUSH 各种子程序调用 中断响应等指令时,SP 先加 1, 再将数据压栈 ; 执行 POP RET RETI 等指令时, 数据退出堆栈后 SP 再减 1 堆栈栈顶可以是片上内部 RAM(00H-FFH) 的任意地址, 系统复位后,SP 初始化为 07H, 使得堆栈事实上由 08H 地址开始 程序状态字 (PSW) 寄存器 程序状态字 (PSW) 寄存器包含了程序状态信息 数据指针 (DPTR) 数据指针 DPTR 是一个 16 位专用寄存器, 其高位字节寄存器用 DPH 表示, 低位字节寄存器用 DPL 表示 它们既可以作为一个 16 位寄存器 DPTR 来处理, 也可以作为 2 个独立的 8 位寄存器 DPH 和 DPL 来处理 Table 7.1 PSW 寄存器 D0H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PSW CY AC F0 RS1 RS0 OV F1 P 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 CY 6 AC 5 F0 4-3 RS[1:0] 2 OV 1 F1 0 P 进位标志位 0: 算术或逻辑运算中, 没有进位或借位发生 1: 算术或逻辑运算中, 有进位或借位发生 辅助进位标志位 0: 算数逻辑运算中, 没有辅助进位或借位发生 1: 算数逻辑运算中, 有辅助进位或借位发生 F0 标志位用户自定义标志位 R0-R7 寄存器页选择位 00: 页 0( 映射到 00H-07H) 01: 页 1( 映射到 08H-0FH) 10: 页 2( 映射到 10H-17H) 11: 页 3( 映射到 18H-1FH) 溢出标志位 0: 没有溢出发生 1: 有溢出发生 F1 标志位用户自定义标志位 奇偶校验位 0: 累加器 A 中值为 1 的位数为偶数 1: 累加器 A 中值为 1 的位数为奇数 18

19 7.1.2 CPU 增强内核特殊功能寄存器 扩展的 'MUL' 和 'DIV' 指令 :16 位 *8 位,16 位 /8 位 双数据指针 CPU 增强内核寄存器 :AUXC,DPL1,DPH1,INSCON SH79F3218 扩展了 'MUL' 和 'DIV' 的指令, 使用一个新寄存器 -AUXC 寄存器保存运算数据的高 8 位, 以实现 16 位运算 在 16 位乘除法指令中, 会用到 AUXC 寄存器 在其它指令中,AUXC 寄存器可作为暂存器来使用 CPU 在复位后进入标准模式,'MUL' 和 'DIV' 的指令操作和标准 8051 指令操作一致 当 INSCON 寄存器的相应位置 1 后,'MUL' 和 'DIV' 指令的 16 位操作功能被打开 MUL DIV 操作 结果 A B AUXC INSCON.2 = 0;8 位模式 (A)*(B) 低位字节高位字节 --- INSCON.2 = 1;16 位模式 (AUXC A)*(B) 低位字节中位字节高位字节 INSCON.3 = 0;8 位模式 (A)/(B) 商低位字节余数 --- INSCON.3 = 1;16 位模式 (AUXC A)/(B) 商低位字节余数商高位字节 双数据指针 使用双数据指针能加速数据存储移动 标准数据指针被命名为 DPTR 而新型数据指针命名为 DPTR1 数据指针 DPTR1 与 DPTR 类似, 是一个 16 位专用寄存器, 其高位字节寄存器用 DPH1 表示, 低位字节寄存器用 DPL1 表示 它们既可以作为一个 16 位寄存器 DPTR1 来处理, 也可以作为 2 个独立的 8 位寄存器 DPH1 和 DPL1 来处理 通过对 INSCON 寄存器中的 DPS 位置 1 或清 0 选择两个数据指针中的一个 所有读取或操作 DPTR 的相关指令将会选择最近一次选择的数据指针 寄存器 Table 7.2 数据指针选择寄存器 86H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 INSCON - BKS0 - - DIV MUL - DPS 读 / 写 - 读 / 写 - - 读 / 写读 / 写 - 读 / 写 BKS0 3 DIV 2 MUL 0 DPS 特殊功能寄存器页选择位 0: 选择特殊功能寄存器页 0 1: 选择特殊功能寄存器页 1 16 位 /8 位除法选择位 0:8 位除法 1:16 位除法 16 位 /8 位乘法选择位 0:8 位乘法 1:16 位乘法 数据指针选择位 0: 数据指针 1: 数据指针 1 19

20 7.2 随机数据存储器 (RAM) 特性 SH79F3218 为数据存储提供了内部 RAM 和外部 RAM 下列为存储器空间分配 : 低位 128 字节的 RAM( 地址从 00H 到 7FH) 可直接或间接寻址 高位 128 字节的 RAM( 地址从 80H 到 FFH) 只能间接寻址 特殊功能寄存器 (SFR, 地址从 80H 到 FFH) 只能直接寻址 外部 RAM 可通过 MOVX 指令间接访问 高位 128 字节的 RAM 占用的地址空间和 SFR 相同, 但在物理上与 SFR 的空间是分离的 当一个指令访问高于地址 7FH 的内部位置时,CPU 可以根据访问的指令类型来区分是访问高位 128 字节数据 RAM 还是访问 SFR SH79F3218 在外部数据空间额外提供了 1280 字节 RAM, 支持高级语言 SH79F3218 还配置了 28 字节的 LED RAM 和 16 字节的触摸按键 RAM 54BH 530H 50FH 500H 4FFH LED RAM TOUCH KEY DATA 0FFH Upper 128 bytes Internal Ram indirect accesses 0FFH SFR direct accesses 80H 80H 00H Extenal RAM 7FH 00H Lower 128 bytes Internal Ram direct or indirect accesses 0FFH 80H SFR Bank1 direct accesses 内部和外部 RAM 配置 SH79F3218 支持传统的访问外部 RAM 方法 使用 MOVX A,@Ri 或 MOVX@Ri,A; 来访问外部低 256 字节 RAM; 使用 MOVX A,@DPTR 或 MOVX@DPTR,A 来访问外部 1280 字节 RAM 用户也能用 XPAGE 寄存器来访问外部 RAM, 仅用 MOVXA,@Ri 或 MOVX@Ri,A 指令即可 用户能用 XPAGE 来表示高于 256 字节的 RAM 地址 在 Flash SSP 模式下,XPAGE 也能用作分段选择器 ( 详见 SSP 章节 ) 寄存器 Table 7.3 数据存储页寄存器 (XPAGE) F7H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 XPAGE - XPAGE.6 XPAGE.5 XPAGE.4 XPAGE.3 XPAGE.2 XPAGE.1 XPAGE.0 读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 XPAGE[6:0] RAM 页选择控制位 20

21 7.3 Flash 程序存储器 特性 Flash 存储器包括 32 X 1KByte, 总共 32KB 集成类 EEPROM 存储器 4 X 256B, 总共 1KB 在工作电压范围内都能进行编程和擦除操作 支持 4 种代码保护模式 在线编程 (ICP) 操作支持写入 读取和擦除操作 支持整体 / 扇区擦除和编程 编程 / 擦除次数 : 程序区 : 至少 10,000 次类 EEPROM 区 : 至少 100,000 次 数据保存年限 : 至少 10 年 低功耗 FFFFH Reserved 7FFFH 03FFH 0000H EEPROM Like Data Block 0000H Program Memory Block Information Block Program Memory Block SH79F3218 为存储程序代码内置 32K 可编程 Flash 程序存储区 (Program Memory Block), 支持在线编程 (ICP) 模式和扇区自编程 (SSP) 模式对 Flash 存储器操作 每个扇区 1024 字节 SH79F3218 还内置 1024 字节的类 EEPROM 存储区用于存放用户数据 每个扇区 256 字节, 总共 4 个扇区 Flash 操作定义 : 在线编程 (ICP) 模式 : 通过 Flash 编程器对 Flash 存储器进行擦 读 写操作 扇区自编程 (SSP) 模式 : 用户程序代码在 Flash 代码区中运行, 对 Flash 存储器 ( 包括 Flash 代码区和类 EEPROM 区 ) 进行擦 读 写操作, 但无法擦除代码自身所在的扇区 Flash 存储器支持以下操作 : (1) 代码保护控制模式编程 SH79F3218 的代码保护功能为用户代码提供了高性能的安全措施 共提供 4 种保护模式 代码保护模式 0: 对烧写器加密, 允许 / 禁止任何编程器的写入 / 读取操作 ( 不包括整体擦除 ), 以 4K(4 个扇区 ) 为单位, 可以分开保护 代码保护模式 1: 对 MOVC 指令加密, 允许 / 禁止在其它扇区中通过 MOVC 指令进行读取操作, 或通过 SSP 模式进行擦除 / 写入操作, 以 4K(4 个扇区 ) 为单位, 可以分开保护 代码保护模式 2:SSP 功能允许 / 禁止控制, 选中后, 芯片对 code 区域的 SSP 操作 ( 擦除或者写入, 不包括读取 ) 是禁止的, 但是不会禁止芯片对类 EEPROM 的操作 代码保护模式 3: 客户密码保护, 可由客户自设密码, 密码由 6 字节组成 如果将此功能开启, 表示在烧写器或仿真器工具对芯片做任何操作 ( 读出, 写入, 擦除或者仿真 ) 之前先输入这个密码, 如果这个密码正确, 则芯片允许烧写器或仿真器工具进行相应的操作, 反之则报错, 无法执行相应操作 用户必须使用下列方式才能完成代码保护控制模式的设定 : 1. Flash 编程器在 ICP 模式设置相应的保护位, 以进入所需的保护模式 2. SSP 模式不支持代码保护控制模式编程 21

22 (2) 整体擦除 无论代码保护控制模式的状态如何, 整体擦除操作都将会擦除所有程序, 代码选项, 代码保护位, 但是不会擦除类 EEPROM 存储区 用户必须使用下列方式才能完成整体擦除 : 1. Flash 编程器在 ICP 模式发出整体擦除指令, 进行整体擦除 2. SSP 模式不支持整体擦除 (3) 扇区擦除扇区擦除操作将会擦除所选扇区中内容 用户程序 (SSP) 和 Flash 编程器都能执行该操作 若需用户程序执行该操作, 必须禁止所选扇区的代码保护控制模式 1 和保护模式 2 若需编程器执行该操作, 必须禁止所选扇区的代码保护控制模式 0, 如果保护模式 3 使能, 必须输入正确密码 用户必须使用下列 2 种方式之一才能完成扇区擦除 : 1. Flash 编程器在 ICP 模式发出扇区擦除指令, 进行扇区擦除 2. 通过 SSP 功能发出扇区擦除指令, 进行扇区擦除 ( 详见在扇区自编程章节 ) (4) 类 EEPROM 存储区擦除类 EEPROM 存储区擦除操作将会擦除类 EEPROM 存储区中的内容 用户程序 (SSP) 和 Flash 编程器都能执行该操作 用户必须使用下列 2 种方式之一才能完成类 EEPROM 存储区擦除 : 1. Flash 编程器在 ICP 模式发出类 EEPROM 存储区擦除指令, 进行类 EEPROM 存储区擦除 2. 通过 SSP 功能发出类 EEPROM 存储区擦除指令, 进行类 EEPROM 存储区擦除 ( 详见在扇区自编程章节 ) (5) 写 / 读代码读 / 写代码操作可以将代码从 Flash 存储器中读出或写入 用户程序 (SSP) 和编程器都能执行该操作 若需用户程序执行读代码操作, 必须禁止所选扇区的代码保护控制模式 1 但不管保护位如何设置, 用户程序都能读程序自身所在扇区 (1K 为单位 ) 若需用户程序执行写代码操作, 必须禁止所选扇区的代码保护控制模式 1 和代码保护模式 2 注意 : 若只使能扇区的代码保护控制模式 1, 用户程序不能写其它扇区, 但能写程序自身所在扇区 (1K 为单位 ), 若需编程器执行该操作, 必须禁止所选扇区的代码保护控制模式 0 用户必须使用下列 2 种方式之一才能完成写 / 读代码 : 1. Flash 编程器在 ICP 模式发出写 / 读代码指令, 进行写 / 读代码 2. 通过 SSP 功能发出写代码指令, 进行写代码操作 ; 通过 MOVC 指令执行读代码操作 (6) 写 / 读类 EEPROM 存储区读 / 写类 EEPROM 存储区操作可以将数据从类 EEPROM 存储区中读出或写入 用户程序 (SSP) 和 Flash 编程器都能执行该操作 用户必须使用下列 2 种方式之一才能完成写 / 读类 EEPROM 存储区 : 1. Flash 编程器在 ICP 模式发出写 / 读类 EEPROM 存储区指令, 进行写 / 读类 EEPROM 存储区 2. 通过 SSP 功能发出写类 EEPROM 存储区指令, 进行写类 EEPROM 操作 ; 通过 MOVC 指令执行读类 EEPROM 操作 Flash 存储器操作汇总 操作 ICP SSP 代码保护 支持 不支持 扇区擦除 支持 ( 无安全位 ) 支持 ( 无安全位 ) 整体擦除 支持 不支持 类 EEPROM 存储区擦除 支持 支持 写 / 读代码 支持 ( 无安全位 ) 支持 ( 无安全位 ) 读 / 写类 EEPROM 存储区 支持 支持 22

23 7.3.2 ICP 模式下的 Flash 操作 单线仿真模式 : ICP 模式为通过 Flash 编程器对 MCU 进行编程, 可以在 MCU 焊在用户板上以后编程 ICP 模式下, 用户系统必须关机后 Flash 编程器才能通过 ICP 编程接口刷新 Flash 存储器 ICP 编程接口包括 3 个引脚 (V DD,GND,SWE) 编程器使用 1 个 JTAG 引脚 (SWE) 进入编程模式 只有将特定波形输入 1 个引脚后,CPU 才能进入编程模式 如需详细说明请参考 Flash 编程器用户指南 在 ICP 模式中, 通过 3 线接口编程器能完成所有 Flash 操作 因为编程信号非常敏感, 所以使用编程器编程时用户需要先用 3 个跳线将芯片的编程引脚 (V DD,GND,SWE) 从应用电路中分离出来, 如下图所示 MCU VDD SWE GND Flash Programmer To Application Circuit Jumper 当采用 ICP 模式进行操作时, 建议按照如下步骤进行操作 : (1) 在开始编程前断开跳线 (jumper), 从应用电路中分离编程引脚 ; (2) 将芯片编程引脚连接至 Flash 编程器编程接口, 开始编程 ; (3) 编程结束后断开 Flash 编程器接口, 连接跳线恢复应用电路 四线仿真模式 : ICP 模式为通过 Flash 编程器对 MCU 进行编程, 可以在 MCU 焊在用户板上以后编程 ICP 模式下, 用户系统必须关机后 Flash 编程器才能通过 ICP 编程接口刷新 Flash 存储器 ICP 编程接口包括 6 个引脚 (V DD,GND,TCK,TDI,TMS,TDO) 编程器使用 4 个 JTAG 引脚 (TDO,TDI,TCK,TMS) 进入编程模式 只有将特定波形输入 4 个引脚后,CPU 才能进入编程模式 如需详细说明请参考 Flash 编程器用户指南 在 ICP 模式中, 通过 6 线接口编程器能完成所有 Flash 操作 因为编程信号非常敏感, 所以使用编程器编程时用户需要先用 6 个跳线将芯片的编程引脚 (V DD,GND,TCK,TDI,TMS,TDO) 从应用电路中分离出来, 如下图所示 MCU Flash Programmer VDD TMS TCK TDI TDO GN D To Application Circuit Jumper 当采用 ICP 模式进行操作时, 建议按照如下步骤进行操作 : (1) 在开始编程前断开跳线 (jumper), 从应用电路中分离编程引脚 ; (2) 将芯片编程引脚连接至编程器编程接口, 开始编程 ; (3) 编程结束后断开编程器接口, 连接跳线恢复应用电路 23

24 7.4 SSP 功能 寄存器 (1) 擦除 / 编程用扇区选择和编程用地址偏移量寄存器 此寄存器用来选择待擦除或者待编程扇区的区号, 配合 IB_OFFSET 寄存器来表示待编程字节在扇区内的地址偏移量 对于程序存储区, 一个扇区为 1024 字节, 寄存器定义如下 : Table 7.4 擦除 / 编程用扇区选择和地址偏移寄存器 F7H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 XPAGE XPAGE.7 XPAGE.6 XPAGE.5 XPAGE.4 XPAGE.3 XPAGE.2 XPAGE.1 XPAGE.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 XPAGE[7:2] 被擦除 / 编程的存储单元扇区号 ( 也即存储单元的最高 4 位地址 ),0000 代表扇区 0, 依此类推 1-0 XPAGE[1:0] 被擦除 / 编程的存储单元次高 2 位地址 Table 7.5 编程用地址偏移寄存器 FBH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_OFFSET IB_OFF SET.7 IB_OFF SET.6 IB_OFF SET.5 IB_OFF SET.4 IB_OFF SET.3 IB_OFF SET.2 IB_OFF SET.1 IB_OFF SET.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 IB_OFFSET[7:0] 被编程的存储单元低 8 位地址 XPAGE[1:0] 和 IB_OFFSET[7:0] 共 10 位, 可以表示 1 个程序存储扇区内全部 1024 个字节的偏移量 类 EEPROM 存储区, 一个扇区为 256 字节, 共 8 个扇区, 寄存器定义如下 : Table 7.6 擦除 / 编程用扇区选择寄存器 F7H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 XPAGE XPAGE.7 XPAGE.6 XPAGE.5 XPAGE.4 XPAGE.3 XPAGE.2 XPAGE.1 XPAGE.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 XPAGE[7:3] 在擦除 / 编程扇区时无意义 2-0 XPAGE[2:0] 被擦除 / 编程的扇区选择位 000: 扇区 0 001: 扇区 1 111: 扇区 7 类 EEPROM 块区的访问可通过指令 MOVC A,@A+DPTR 或 MOVC A,@A+PC 实现 注意 : 需要将 FLASHCON 寄存器中的 FAC 位置 1 24

25 Table 7.7 编程用地址偏移寄存器 FBH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_OFFSET IB_OFF SET.7 IB_OFF SET.6 IB_OFF SET.5 IB_OFF SET.4 IB_OFF SET.3 IB_OFF SET.2 IB_OFF SET.1 IB_OFF SET.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 IB_OFFSET[7:0] 被擦除 / 编程的块单元地址 IB_OFFSET[7:0] 共 8 位, 可以表示 1 个块区内全部 256 个字节的偏移量 (2) 编程用数据寄存器 Table 7.8 编程用数据寄存器 FCH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_DATA IB_DATA.7 IB_DATA.6 IB_DATA.5 IB_DATA.4 IB_DATA.3 IB_DATA.2 IB_DATA.1 IB_DATA.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 IB_DATA[7:0] 待编程数据 (3) 操作模式选择寄存器 Table 7.9 SSP 操作模式选择寄存器 F2H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_CON1 IB_CON1.7 IB_CON1.6 IB_CON1.5 IB_CON1.4 IB_CON1.3 IB_CON1.2 IB_CON1.1 IB_CON1.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 IB_CON1[7:0] (4) SSP 流程控制寄存器 Table 7.10 SSP 流程控制寄存器 1 SSP 操作选择位 0xE6: 扇区擦除 0x6E: 存储单元编程 F3H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_CON IB_CON2.3 IB_CON2.2 IB_CON2.1 IB_CON2.0 读 / 写 读 / 写读 / 写读 / 写读 / 写 IB_CON2[3:0] 必须为 05H, 否则 Flash 编程将会终止 25

26 Table 7.11 SSP 流程控制寄存器 2 F4H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_CON IB_CON3.3 IB_CON3.2 IB_CON3.1 IB_CON3.0 读 / 写 读 / 写读 / 写读 / 写读 / 写 IB_CON3[3:0] 必须为 0AH, 否则 Flash 编程将会终止 Table 7.12 SSP 流程控制寄存器 3 F5H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_CON IB_CON4.3 IB_CON4.2 IB_CON4.1 IB_CON4.0 读 / 写 读 / 写读 / 写读 / 写读 / 写 IB_CON4[3:0] 必须为 09H, 否则 Flash 编程将会终止 Table 7.13 SSP 流程控制寄存器 4 F6H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_CON IB_CON5.3 IB_CON5.2 IB_CON5.1 IB_CON5.0 读 / 写 读 / 写读 / 写读 / 写读 / 写 IB_CON5[3:0] 必须为 06H, 否则 Flash 编程将会终止 26

27 7.4.2 Flash 控制流程图 S0 Set IB_OFFSET Set XPAGE Set IB_DATA Set IB_CON1 IB_CON2[3:0] 5H Set IB_CON2[3:0]=5H IB_CON2 5H S1 IB_CON3 AH IB_CON2 5H ELSE S2 Set IB_CON3=AH IB_CON3 AH Set IB_CON4=9H Reset IB_CON1-5 IB_CON4 9H S3 S4 Set IB_CON5=6H Sector Erase IB_CON1=E6H &IB_CON2[3:0]=5H &IB_CON3=AH &IB_CON4=9H &IB_CON5=6H IB_CON1=6EH &IB_CON2[3:0]=5H &IB_CON3=AH &IB_CON4=9H &IB_CON5=6H Programming 27

28 7.4.3 SSP 编程注意事项 为确保顺利完成 SSP 编程, 用户软件必须按以下步骤设置 : (1) 对主程序区烧写 :( 注 : 需关闭代码保护模式 1 和模式 2) 1. 关闭中断 ; 2. 按相应的待编程扇区号设置 XPAGE,IB_OFFSET; 3. 按编程需要, 设置 IB_DATA; 4. 按照顺序设置 IB_CON1-5; 5. 添加 4 个 NOP 指令 ; 6. 开始编程,CPU 将进入 IDLE 模式 ; 编程完成后自动退出 IDLE 模式 ; 7. 如需继续写入数据, 跳转至第 2 步 ; 8. XPAGE 寄存器清 0, 恢复中断设置 (2) 对主程序区扇区擦除 :( 注 : 需关闭代码保护模式 1 和模式 2) 1. 关闭中断 ; 2. 按相应的扇区设置 XPAGE; 3. 按照顺序设置 IB_CON1-5; 4. 添加 4 个 NOP 指令 ; 5. 开始擦除,CPU 将进入 IDLE 模式 ; 擦除完成后自动退出 IDLE 模式 ; 6. 更多扇区擦除操作跳转至第 2 步 ; 7. 清除 XPAGE, 恢复中断设置 (3) 读取 : 使用 MOVC A,@A+DPTR 或 MOVC A,@A+PC (4) 对类 EEPROM 区域擦除烧写动作 :( 注 : 此功能不受代码保护模式控制 ) 对于类 EEPROM 的操作类似于主程序区 Flash 的操作, 即类似上述 (1)/(2)/(3) 部分的描述 区别在于 : 1. 在对类 EEPROM 进行擦除 写或读之前, 应首先将 FLASHCON 寄存器的最低位 FAC 位置 1 2. 类 EEPROM 的扇区为 256 字节, 而不是 1024 字节 注意 : 当不需对类 EEPROM 操作时, 必须将 FAC 位清 可读识别码 SH79F3218 每颗芯片出厂后都固化有一个 40 位的可读识别码, 它的值为 0-0xffffffffff 的随机值, 它是无法擦除的, 可以由程序或编程工具读出 读识别码时, 首先, 设 FAC 位为 1, 然后给 DPTR 赋值 0127BH - 127FH, 将 A 清 0, 再使用 MOVC A,@A+DPTR 来读取 注意 : 读完识别码后必须将 FAC 位清 0, 否则会影响用户程序读代码区的指令执行 FLASHCON 寄存器的描述如下 : Table 7.14 访问控制寄存器 A7H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 FLASHCON FAC 读 / 写 读 / 写 位编号 位符号 说明 0 FAC 访问控制 0:MOVC 指令或者 SSP 功能访问主程序区域 1:MOVC 指令或者 SSP 功能访问类 EEPROM 区域 28

29 7.5 系统时钟和振荡器 特性 支持 4 种振荡器类型 : 晶体谐振器, 陶瓷谐振器和内部 16.6M/128K RC 振荡器,32.768kHz 晶体谐振器 2 个振荡器引脚 (XTAL1,XTAL2) 从 4 种振荡器类型中产生 1 种或者 2 种时钟 内建 16.6MHz RC 振荡器常温 (±1%)RC 振荡器, 全温度范围 (±2%) 内建系统时钟分频器 时钟定义 SH79F3218 几个内部时钟定义如下 : OSCCLK: 从 4 个可选振荡器类型中 ( 晶体谐振器和陶瓷谐振器以及内部 16.6M RC/128K 振荡器 ) 选中的那个振荡器的时钟 f OSC 定义为 OSCCLK 的频率 t OSC 定义为 OSCCLK 的周期 OSC1CLK: 从 3 个可选振荡器类型中 ( 从 XTALX 输入的晶体谐振器和陶瓷谐振器以及内部 16.6M RC 振荡器 ) 选中的那个振荡器的时钟 f OSC1 定义为 OSC1CLK 的频率 t OSC1 定义为 OSC1CLK 的周期 注意 : 当代码选项 OP_OSC 不是 0011,0110,1010 时 ( 128K 振荡器与 32.68K 晶体振荡器没有被选中, 详见代码选项章节 ), OSC1CLK 不存在 WDTCLK: 内部看门狗 RC 振荡器时钟 f WDT 定义为 WDTCLK 的频率 t WDT 定义为 WDTCLK 的周期 OSCSCLK: 系统时钟频率分频器的输入时钟 这个时钟可能为 OSCCLK 或者 OSC1CLK f OSCS 定义为 OSCSCLK 的频率 t OSCS 定义为 OSCSCLK 的周期 SYSCLK: 系统时钟, 系统频率分频器的输出时钟 这个时钟为 CPU 指令周期的时钟 f SYS 定义为 SYSCLK 的频率 t SYS 定义为 SYSCLK 的周期 概述 SH79F3218 支持 3 种振荡器类型 : 晶体谐振器 (2MHz-12MHz)(32.768KHZ), 陶瓷谐振器 (2MHz-12MHz) 和内部 RC 振荡器 (16.6MHz,128K) 振荡器类型的选择由代码选项 OP_OSC 决定 ( 详见代码选项章节 ) SH79F3218 有 2 个振荡器引脚 (XTAL1,XTAL2), 可以从 5 种振荡器类型中产生 1 种或者 2 种时钟 这些都是由代码选项 OP_OSC 决定 ( 详见代码选项章节 ) 由振荡器产生的基本时钟脉冲提供系统时钟支持 CPU 及片上外围设备 XTAL1 XTAL k crystal / 2M~12M crystal or ceramic OP_OSC[3:0] FS,OSC2ON CLKS[1:0] SCMIF cpu 16.6MHz RC HRCCLK m u x OSC1CLK OSC2CLK m u x OSCSCLK /1 /2 /4 /12 SYSCLK 128KHz RC LRCCLK peripheral device WDT RC WDTCLK WDT 29

30 7.5.4 寄存器 Table 7.15 系统时钟控制寄存器 B2H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CLKCON 32k_SPDUP CLKS1 CLKS0 SCMIF HFON FS - - 读 / 写读 / 写读 / 写读 / 写读读 / 写读 / 写 k_SPDUP 6-5 CLKS[1:0] 3 HFON 2 FS kHz 晶体谐振器加速模式控制位 0:32.768kHz 振荡器常规模式, 由软件清 0 1:32.768kHz 振荡器加速模式, 由软件或者硬件置 1 此位在系统发生任何形式的复位, 如上电复位, 看门狗复位等时, 自动由硬件设置 1, 用以加速 kHz 振荡器起振, 缩短 kHz 振荡器的起振时间 如果有需要, 本位也可以由软件置 1 或者清 0 比如进入掉电模式 (Power-down mode) 前, 可以将此位置 1, 掉电模式唤醒后再由软件清 0 应该注意的是关闭 kHz 加速模式 ( 此位清 0), 可以节省系统的耗电 只有代码选项 OP_OSC 为 1010 时 ( 选择 kHz 晶体振荡器, 详见代码选项章节 ), 此控制位才有效 系统时钟频率分频器 00:f SYS = f OSCS 01:f SYS = f OSCS /2 10:f SYS = f OSCS /4 11:f SYS = f OSCS /12 如果选择 32kHz crystal 振荡器为 OSCSCLK, 此控制位无效 OSC1CLK 开关控制寄存器 0: 关闭 OSC1CLK 1: 打开 OSC1CLK 只有代码选项 OP_OSC 为 0011,0110,1010 时 (128K 内部 RC 与 K 晶体振荡器, 详见代码选项章节 ), 此控制位才有效 频率选择位 0: 选择 128KHz 或 KHz 为 OSCSLK 1: 选择 OSC1CLK 为 OSCSCLK 只有代码选项 OP_OSC 为 0011,0110,1010 时 (128K 内部 RC 与 K 晶体振荡器, 详见代码选项章节 ), 此控制位才有效 注意 : (1) 当代码选项 OP_OSC 为 0000 时,OSC1CLK 为内建 16.6MHzRC; 当代码选项 OP_OSC 为 1110,1010 时,OSC1CLK 为从 XTALX 输入的晶体谐振器或陶瓷谐振器 (2) 当代码选项 OP_OSC 为 0011,0110,1010 时,HFON 和 FS 才有效 (3) 当 OSC1CLK 作为 OSCSCLK 时 ( 也就是说,HFON = 1 和 FS = 1), HFON 不能软件清 0 (4) 当 OSCSCLK 从 128K 或 K 切换到 OSC1CLK 时, 假如当时 OSC1CLK 为关闭状态, 则必须按以下步骤依次设置 : a. 设置 HFON = 1, 打开 OSC1CLK b. 至少等待振荡器预热时间 ( 详见振荡器预热章节 ) c. 设置 FS = 1, 选择 OSC1CLK 作为 OSCSCLK (5) 当 OSCSCLK 从 OSC1CLK 切回到 128K 或 K 时, 则必须按以下步骤依次设置 : a. FS 位清 0, 选择 128K 或 K 作为 OSCSCLK b. 添加 1 个 NOP 指令 c. HFON 位清 0( 降低功耗 ) 30

31 7.5.5 振荡器类型 (1) OP_OSC = 0000,0011: 内部 RC 振荡器,XTAL 引脚与 I/O 共用 XTAL1 XTAL2 (2) OP_OSC = 0110,1010,1110: 从 XTAL 输入 2M - 12M 或 K 晶体 / 陶瓷谐振器 C1 XTAL1 XTAL2 Crystal C 谐振器负载电容选择 陶瓷谐振器 频率 C1 C2 3.58MHz - - 4MHz - - 晶体谐振器 频率 C1 C2 4MHz 8-15pF 8-15pF 12MHz 8-15pF 8-15pF KHz 10-12pF 10-12pF 注意 : (1) 表中负载电容仅供参考! (2) 以上电容值可通过谐振器基本的起振和运行测试, 并非最优值 (3) 请注意印制板上的杂散电容, 用户应在超过应用电压和温度的条件下测试谐振器的性能 在应用陶瓷谐振器 / 晶体谐振器之前, 用户需向谐振器生产厂要求相关应用参数以获得最佳性能 请登陆 以取得更多的推荐谐振器生产厂 31

32 7.6 系统时钟监控 (SCM) 为了增强系统的可靠性,SH79F3218 含有一个系统时钟监控 (SCM) 模块 如果系统时钟出现故障 ( 例如 : 外部振荡器停振等 ), 内建 SCM 模块会将 OSCSCLK 自动切换到内部时钟 2M RC, 同时系统时钟监控标志位 (SCMIF) 被置 1 当 EA 和 ESCM 位均被置 1 时,SCM 模块将会产生中断 如果外部振荡器恢复工作,SCM 将会切换 OSCCLK 到外部振荡器, 然后 SCMIF 位自动清 0 注意 : SCMIF 为只读寄存器, 只能由硬件清 0 或者置 1 如果 SCMIF 清 0,SCM 将系统时钟自动切换到系统时钟出故障前的状态 如果代码选项选择内部 RC 振荡器 ( 详见代码选项章节 ) 作为 OSCCLK, 则系统时钟监控功能不可用 Table 7.16 系统时钟控制寄存器 B2H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CLKCON SCMIF 读 / 写 只读 SCMIF 系统时钟监控标志位 0: 表示系统时钟正常运行 1: 表示系统时钟故障 32

33 7.7 I/O 端口 特性 22 个双向 I/O 端口 I/O 端口可与其它功能共享 SH79F3218 提供 22 个位可编程双向 I/O 端口 端口数据在寄存器 Px 中 22 个双向 I/O 口均有内部上拉电阻 端口控制寄存器 (PxCRy) 控制端口是作为输入或者输出 当端口作为输入时, 有由 PxPCRy 控制的内部上拉电阻 (x = 0-3,y = 0-7) SH79F3218 的有些 I/O 引脚能与选择功能共享 当所有功能都允许时, 在 CPU 中存在优先权以避免功能冲突 ( 详见端口共享章节 ) 未使用的 I/O 需要设置输出 ( 保持低电平 ) 或者输入上拉 ( 保持高电平 ), 避免引脚浮动导致的漏电及干扰 SH79F3218 需要设置的引脚 :P3.3,P3.4,P3.6,P0.0(PxPCRy,x = 0-4,y = 0-7)(Px.y,x = 0-4,y = 0-7), 将以上引脚设置输出 ( 保持低电平 ) 或者输入上拉 ( 保持高电平 ), 避免引脚浮动导致的漏电及干扰 寄存器 Table 7.17 端口控制寄存器 E1H - E5H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 P0CR (E1H, ) P0CR.7 P0CR.6 P0CR.5 P0CR.4 P0CR.3 P0CR.2 P0CR.1 P0CR.0 P1CR (E2H, ) P1CR.7 * * * * P1CR.2 P1CR.1 P1CR.0 P2CR (E3H, ) P2CR.7 P2CR.6 P2CR.5 P2CR.4 P2CR.3 P2CR.2 P2CR.1 P2CR.0 P3CR (E4H, ) * P3CR.6 * * P3CR3 P3CR.2 P3CR.1 P3CR.0 P4CR (91H, Bank1) * * * * * * * * 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 PxCRy x = 0-4, y = 0-7 端口输入 / 输出控制寄存器 0: 输入模式 1: 输出模式 * 注意 : 寄存器表格空白处标记有 * 号标记的寄存器位, 需要将该 * 位置 1 Table 7.18 端口上拉电阻控制寄存器 E9H - ECH, 92H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 P0PCR (E9H, ) P0PCR.7 P0PCR.6 P0PCR.5 P0PCR.4 P0PCR.3 P0PCR.2 P0PCR.1 P0PCR.0 P1PCR (EAH, ) P1PCR.7 * * * * P1PCR.2 P1PCR.1 P1PCR.0 P2PCR (EBH, ) P2PCR.7 P2PCR.6 P2PCR.5 P2PCR.4 P2PCR.3 P2PCR.2 P2PCR.1 P2PCR.0 P3PCR (ECH, ) * P3PCR.6 * P3PCR.4 P3PCR.3 P3PCR.2 P3PCR.1 P3PCR.0 P4PCR (92H, Bank1) * * * * * * * * 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 PxPCRy x = 0-4, y = 0-7 输入端口内部上拉电阻控制 0: 内部上拉电阻关闭 1: 内部上拉电阻开启 * 注意 : 寄存器表格空白处标记有 * 号标记的寄存器位, 需要将该 * 位清 0 33

34 Table 7.19 端口数据寄存器 80H - B0H, 90H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 P0 (80H, ) P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P1 (90H, ) P1.7 * * * * P1.2 P1.1 P1.0 P2 (A0H, ) P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P3 (B0H, ) * P3.6 * P3.4 P3.3 P3.2 P3.1 P3.0 P4 (90H, Bank1) * * * * * * * * 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 Px.y 7-0 端口数据寄存器 x = 0-4, y = 0-7 * 注意 : 寄存器表格空白处标记有 * 号标记的寄存器位, 需要将该位清 0 Table 7.20 端口模式选择寄存器 EFH, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 P1OS P1OSCR.1 P1OSCR.0 P1OS.1 P1OS.0 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 P1OSCR.x x = 1-0 P1OS.x x = 1-0 N 沟道开漏输出模式选择上拉电阻 0: 开漏输出选择外部上拉电阻 1: 开漏输出选择内部 10K 上拉电阻 端口 0 输出模式选择 0: 引脚输出模式为 N 沟道开漏输出 1: 引脚输出模式为 CMOS 推挽输出 注意 :P0.7,P1.0 端口作为为 N- 通道的开漏 I/O, 但是此时端口电压不得超过 VCC_IN+0.3V (P1OS.0 为 P0.7,P1OS.1 为 P1.0 ) 34

35 7.7.3 端口模块图 SFEN PxPCRy Output Mode Input Mode PxCRy VDD VDD (Pull-up) 0 = ON 1 = OFF Write I/O Pad Data Bus Data Register Read Port Data Register Read Read Data Register/Pad Selection 0: From Pad 1: From data register 0 = OFF 1 = ON Second Function Read Port Pad 注意 : (1) 输入端口读操作直接读引脚电平 (2) 输出端口读操作的输入源有两种, 一种是从端口数据寄存器读取, 另一种是直接读引脚电平 (3) 用读取指令来区分 : 读 - 改 - 写指令是读寄存器, 而其它指令读引脚电平 不管端口是否共用为其他功能, 对端口写操作都是针对端口数据寄存器 35

36 7.7.4 端口共享 22 个双向 I/O 端口也能共享作为第二或第三种特殊功能 共享优先级按照外部最高内部最低的规则 : 在引脚配置图中引脚最外边标注功能享有最高优先级, 最里边标注功能享有最低优先级 这意味着一个引脚已经使用较高优先级功能 ( 如果被允许的话 ), 就不能用作较低优先级功能, 即使较低优先级功能被允许 只有较高优先级功能由硬件或软件关闭后, 相应的引脚才能用作较低优先级功能 上拉电阻也由相同规则控制 当允许端口复用为其它功能时, 用户可以修改 PxCR PxPCR(x = 0-5), 但在复用的其它功能被禁止前, 这些操作不会影响端口状态 当允许端口复用为其它功能时, 任何对端口的读写操作只会影响到数据寄存器的值, 端口引脚值保持不变, 直到复用的其它功能关闭 PORT0: - SEG14-15:LED SEG14-15 显示输出 (P0.5 - P0.6) - COM1:LED 双向 COM1(P0.7) - SDA:TWI 数据线输出 / 输入 (P0.7) - RXD:UART 数据输入 (P0.7) - INT30: 外部中断 3 输入 (P0.7) - BUZ1,2: 蜂鸣器输出 (P0.3,P0.6) Table 7.21 PORT0 共享列表 引脚编号优先级功能允许位 10 1 P0.1 I/O 11 1 P0.2 I/O 12 1 BUZ1 BUZCON 寄存器的 BZEN1 位置 1 2 P0.3 无上述情况 13 1 P0.4 无上述情况 14 1 SEG15 SEG02 中相应位置 1 2 P0.5 无上述情况 1 SEG14 SEG02 中相应位置 BUZ2 BUZCON 寄存器的 BZEN2 位置 1 3 P0.6 无上述情况 1 COM1 LEDCOM 中相应位置 1 2 SDA ENTWI = 1 时, 对寄存器 TWIDAT 进行操作 16 3 RXD SCON 寄存器的 REN 位置 1( 自动上拉 ) 4 INT30 IEN1 寄存器的 EX3 位和 I EXF1 寄存器的 EXS30 位置 1, 且 P0CR 相应位置 0 5 P0.7 无上述情况 36

37 PORT1: - INT31: 外部中断 3 输入 (P1.0) - TXD:UART 数据输出 (P1.1) - SCK:TWI 时钟线输出 / 输入 (P1.1) - COM2-4:LED 双向 COM 输入输出 (P1.0 - P1.2) - INT40,INT45,INT47: 外部中断输入 (P1.1 - P1.2,P1.7) - TCH0: 触摸按键通道 0(P1.7) - SEG7,SEG13:LED SEG7,SEG13 显示输出 (P1.2,P1.7) Table 7.22 PORT1 共享列表 引脚编号优先级功能允许位 COM2 LEDCOM 中相应位置 1 2 SCK ENTWI = 1 时, 对寄存器 TWIDAT 进行操作 3 TXD 对 SBUF 寄存器写操作 4 INT31 IEN1 寄存器的 EX3 位和 I EXF1 寄存器的 EXS31 位置 1, 且 P1CR 相应位置 0 5 P1.0 无上述情况 1 COM3 LEDCOM 中相应位置 1 2 INT47 IEN1 寄存器的 EX4 位和 I EXF1 寄存器的 EXS47-EXS40 位置 1, 且 P1CR 相应位置 0 3 P1.1 无上述情况 1 COM4 LEDCOM 中相应位置 1 2 SEG13 SEG02 中相应位置 1 3 INT40 IEN1 寄存器的 EX4 位和 I EXF1 寄存器的 EXS47-EXS40 位置 1, 且 P1CR 相应位置 0 4 P1.2 无上述情况 1 TCH0 P2SS 中相应位置 1 2 SEG7 SEG01 中相应位置 1 3 INT45 IEN1 寄存器的 EX4 位和 EXF1 寄存器的 EXS47-EXS40 位置 1, 且 P1CR 相应位置 0 4 P1.7 无上述情况 注意 : 当 P1OS = 00H 时, 引脚 15,16 配置为开漏极端口 37

38 PORT2: - INT46: 外部中断 4 输入 (P2.2) - PWM1 - PWM2:PWM 输出 (P2.0 - P2.1) - SEG0-6:LED 显示输出通道 (P2.0 - P2.7) - TCH1 - TCH7: 触摸按键输入通道 (P2.0 - P2.7) - C: 触摸按键电容引脚 (P2.7) Table 7.23 PORT2 共享列表 引脚编号优先级功能允许位 TCH1 P2SS 中相应位置 1 2 SEH6 SEG01 中相应位置 1 3 PWM2 PWMEN 寄存器的相应位位置 1 4 P2.0 无上述情况 1 TCH2 P2SS 中相应位置 1 2 SEG5 SEG01 中相应位置 1 3 PWM1 PWMEN 寄存器的相应位位置 1 4 P2.1 无上述情况 1 TCH3 P2SS 中相应位置 1 2 SEG7 SEG01 中相应位置 1 3 INT46 IEN1 寄存器的 EX4 位和 EXF1 寄存器的 EXS47-EXS40 位置 1, 且 P2CR 相应位置 0 4 P2.2 无上述情况 1 TCH4 - TCH7 P2SS 中相应位置 1 2 SEG0 - SEG3 SEG01 中相应位置 1 3 P 无上述情况 1 C TKCON1 寄存器中的 TKCON 位置 1 2 COM7 LEDCOM 中相应位置 1 3 P2.7 无上述情况 38

39 PORT3: - T3: 定时器 3 外部输入 (P3.1) - T4: 定时器 4 外部输入 (P3.0) - INT2: 外部中断 2 输入 (P3.0) - SEG11,12:LED 显示输出通道 (P3.0,P3.1) - COM7:LED 双向 COM 输入输出 (P3.1) - SEW: 单线仿真输入 / 输出引脚 (P3.2) Table 7.24 PORT3 共享列表 引脚编号优先级功能允许位 XTAL1 代码选项 2 COM6 LEDCOM 中相应位置 1 3 SEG12 SEG02 中相应位置 1 4 T4 5 P3.0 无上述情况 1 XTAL2 代码选项 2 COM5 LEDCOM 中相应位置 1 3 SEG11 SEG02 中相应位置 1 T4CON 寄存器的 TR4 和 T4CLKS 位置 1( 自动上拉 ) 或 T4CON 寄存器的 T4CLKS 位清 0 且 TC4 位置 1 或方式 2 下 TR4 位置 1 4 T3 T3CON 寄存器的 TR3 位置 1 且 T3CLKS[1:0] = 01( 自动上拉 ) 5 P3.1 无上述情况 1 SWE 单线仿真 2 INT2 IEN1 寄存器的 EX2 位置 1,P3.2 输入模式 3 P3.2 无上述情况 39

40 7.8 定时器 特性 SH79F3218 有 5 个定时器 ( 定时器 0,1,2,3,4) 定时器 2 是 16 位自动重载定时器 定时器 3 是 16 位自动重载定时器, 且可以工作在掉电模式 定时器 4 是 16 位自动重载定时器, 两个数据寄存器 TH4 和 TL4 可作为一个 16 位寄存器来访问 定时器 0 和定时器 1 每个定时器的两个数据寄存器 (THx & TLx(x = 0,1)) 可作为一个 16 位寄存器来访问 它们由寄存器 TCON 和 TMOD 控制 IEN0 寄存器的 ET0 和 ET1 位置 1 能允许定时器 0 和定时器 1 中断 ( 详见中断章节 ) 定时器 x 的方式 (x = 0,1) 通过定时器方式寄存器 (TMOD) 的方式选择位 Mx1-Mx0, 选择定时器工作方式 方式 0:13 位定时器 在方式 0 中, 定时器 x 为 13 位定时器 THx 寄存器存放 13 位定时器的高 8 位,TLx 存放低 5 位 (TLx.4-TLx.0) TLx 的高三位 (TLx.7-TLx.5) 是不确定的, 在读取时应该被忽略 当 13 位定时器寄存器递增, 溢出时, 系统置起定时器溢出标志 TFx 如果定时器 x 中断被允许, 将会产生一个中断 当作为定时器应用时, 可配置寄存器 TCON1 中的 TCLKSx(x = 0, 1) 位选择系统时钟或低频 128kHz 的 8 分频作为定时器 x (x = 0, 1) 的时钟源 可配置寄存器 TCON1 中的 TCLKPx(x = 0, 1) 位选择系统时钟或系统时钟的 1/12 作为定时器 x(x = 0, 1) 的时钟源 System Clock 1/12 128kHz RC Clock TCLKPx /8 TCLKSx TLx (5bits) THx (8bits) Overflow TFx Interrupt Request 0:Switch Off 1:Switch On Overflow Flag TRx The Block Diagram of mode0 of Timerx ( x=0,1 ) 40

41 方式 1:16 位定时器 除了使用 16 位定时器之外, 方式 1 的运行与方式 0 一致 打开和配置计数器 / 定时器也如同方式 0 System Clock 1/12 128kHz RC Clock TCLKPx /8 TCLKSx TLx (8bits) THx (8bits) TFx Interrupt Request 0:Switch Off 1:Switch On Overflow Flag TRx The Block Diagram of mode0 of Timerx ( x=0,1 ) 方式 2:8 位自动重载定时器 方式 2 中, 定时器 x 是 8 位自动重载定时器 TLx 存放计数值,THx 存放重载值 当在 TLx 中的计数器溢出至 0x00 时, 置起定时器溢出标志 TFx, 寄存器 THx 的值被重载入寄存器 TLx 中 如果定时器中断使能, 当 TFx 置 1 时将产生一个中断 而在 THx 中的重载值不会改变 在允许定时器正确计数开始之前,TLx 必须初始化为所需的值 除了自动重载功能外, 方式 2 中的定时器的使能和配置与方式 1 和 0 是一致的 当作为定时器应用时, 可配置寄存器 TCON1 中的 TCLKSx(x = 0, 1) 位选择系统时钟或 128kHz 的 8 分频作为定时器 x(x = 0, 1) 的时钟源 可配置寄存器 TCON1 中的 TCLKPx(x = 0, 1) 位选择系统时钟或系统时钟的 1/12 作为定时器 x(x = 0, 1) 的时钟源 System Clock 1/12 TH0 (8bits) Reload 128kHz RC Clock TCLKPx /8 TCLKSx TL0 (8bits) TFx Interrupt Request 0:Switch Off 1:Switch On Overflow Flag TRx The Block Diagram of mode2 of Timerx (x=0,1) 41

42 方式 3: 两个 8 位定时器 ( 只限于定时器 0) 在方式 3 中, 定时器 0 用作两个独立的 8 位定时器, 分别由 TL0 和 TH0 控制 TL0 使用定时器 0 的控制 ( 在 TCON 中 ) 和状态 ( 在 TMOD 中 ) 位 :TR0, TF0 TL0 能用系统时钟或 128kHz 的 8 分频或外部输入信号作为时钟源 TH0 只能用作定时器功能, 时钟源来自系统时钟 TH0 由定时器 1 的控制位 TR1 控制使能, 溢出时定时器 1 溢出标志 TF1 置 1, 控制定时器 1 中断 定时器 0 工作在方式 3 时, 定时器 1 可以工作在方式 0 1 或 2, 但是不能置 1 TF1 标志和产生中断 TH1 和 TL1 只能用作定时器功能, 时钟源来自系统时钟 定时器 1 由方式控制使能与否, 因为 TR1 被定时器 0 占用 定时器 1 在方式 0 1 或 2 时使能, 在方式 3 时被关闭 当作为定时器应用时, 可配置寄存器 TCON1 中的 TCLKSx(x = 0, 1) 位选择系统时钟或 128kHz 的 8 分频作为定时器 x(x = 0, 1) 的时钟源 可配置寄存器 TCON1 中的 TCLKPx(x = 0, 1) 位选择系统时钟或系统时钟的 1/12 作为定时器 x(x = 0, 1) 的时钟源 System Clock 1/12 128kHz RC Clock /8 TCLKP0 TCLKS0 TL0 (8bits) TF0 Interrupt Request 0:Switch Off 1:Switch On Overflow Flag TR0 System Clock 1/12 TH0 (8bits) TF1 Interrupt Request 128kHz RC Clock TCLKP0 /8 TR1 TCLKS0 0:Switch Off 1:Switch On Overflow Flag The Block Diagram of mode3 of Timer0 注意 : 此时定时器 1 溢出率不作为波特率发生器, 此功能仅作屏蔽, 芯片的可变波特率仅由寄存器 SBRTL/H 设置 42

43 寄存器 注意 : 定时器 0,1 寄存器未定义的空白位必须清 0 Table 7.25 定时器 x 控制寄存器 (x = 0,1) 88H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON TF1 TR1 TF0 TR 读 / 写读 / 写读 / 写读 / 写读 / 写 , 5 6, 4 TFx x = 0, 1 TRx x = 0, 1 Table 7.26 定时器 x 方式寄存器 (x = 0,1) 定时器 x 溢出标志位 0: 定时器 x 无溢出, 可由软件清 0 1: 定时器 x 溢出, 由硬件置 1; 若由软件置 1 将会引起定时器中断 定时器 x 启动, 停止控制位 0: 停止定时器 x 1: 启动定时器 x 89H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TMOD - - M11 M M01 M00 读 / 写 - - 读 / 写读 / 写 - - 读 / 写读 / 写 Mx[1:0] x = 0, 1 定时器 x 定时器方式选择位 00: 方式 0,13 位向上定时器, 忽略 TLx 的第 7-5 位 01: 方式 1,16 位向上定时器 10: 方式 2,8 位自动重载定时器 11: 方式 3( 只用于定时器 0), 两个 8 位定时器 43

44 注意 : 定时器 0,1 寄存器未定义的空白位必须清 0 Table 7.27 定时器 x 数据寄存器 (x = 0,1) 8AH-8DH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TL0(8AH) TL0.7 TL0.6 TL0.5 TL0.4 TL0.3 TL0.2 TL0.1 TL0.0 TH0(8BH) TH0.7 TH0.6 TH0.5 TH0.4 TH0.3 TH0.2 TH0.1 TH0.0 TL1(8CH) TL1.7 TL1.6 TL1.5 TL1.4 TL1.3 TL1.2 TL1.1 TL1.0 TH1(8DH) TH1.7 TH1.6 TH1.5 TH1.4 TH1.3 TH1.2 TH1.1 TH1.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TLx.y, THx.y x=0-1, y=0-7 Table 7.28 定时器 x 控制寄存器 1(x = 0,1) 定时器 x 低及高字节计数器 8FH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON1 - TCLK_S1 TCLK_S0 - TCLKP1 TCLKP0 - - 读 / 写 - 读 / 写读 / 写 - 读 / 写读 / 写 TCLK_Sx x = 0, 1 TCLKPx x = 0, 1 定时器 x 时钟源控制位 0: 系统时钟作为定时器 x 的时钟源 1: 选择 128kHz RC 时钟的 8 分频作为定时器 x 的时钟源 定时器 x 时钟源预分频控制位 0: 选择系统时钟的 1/12 作为定时器 x 的时钟源 1: 选择系统时钟作为定时器 x 的时钟源 44

45 7.8.3 定时器 2 两个数据寄存器 (TH2 和 TL2) 串联后可作为一个 16 位寄存器来访问, 由寄存器 T2CON 和 T2MOD 控制 设置 IEN0 寄存器中的 ET2 位能允许定时器 2 中断 ( 详见中断章节 ) 通过所选的引脚设置 TR2 允许定时器 2 数据寄存器计数 定时器 2 方式 方式 0:16 位自动重载定时器 在 16 位自动重载方式下, 定时器 2 可以被选为递增计数 定时器 2 递增到 0FFFFH, 在溢出后置起 TF2 位, 同时定时器自动将用户软件写好的寄存器 RCAP2H 和 RCAP2L 的 16 位值装入 TH2 和 TL2 寄存器 System clock 1/12 Increment Mode TCLKP2 TL2 TH2 TF2 TR2 0:Switch Off 1:Switch On Overflow Flag RCAP2L RCAP2H Interrupt Request The Block Diagram of Auto Relode Mode (Mode 1)of Timer2 (DCEN=0) 注意 : (1) 当事件发生时或其它任何时间都能由软件设置 TF2 为 1, 只有软件以及硬件复位才能使之清 0 (2) 当 EA = 1 且 ET2 = 1 时, 设置 TF2 为 1 能引起定时器 2 中断 45

46 寄存器 注意 : 定时器 2 寄存器未定义的空白位必须清 0 Table 7.29 定时器 2 控制寄存器 C8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 T2CON TF TR2 - - 读 / 写读 / 写 读 / 写 TF2 2 TR2 Table 7.30 定时器 2 模式控制寄存器 定时器 2 溢出标志位 0: 无溢出 ( 必须由软件清 0) 1: 溢出 ( 如果 RCLK = 0 和 TCLK = 0, 由硬件设 1) 定时器 2 开始 / 停止控制位 0: 停止定时器 2 1: 开始定时器 2 C9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 T2MOD TCLKP 读 / 写读 / 写 TCLKP2 Table 7.31 定时器 2 重载 / 捕获和数据寄存器 分频选择控制位 0: 选择系统时钟的 1/12 作为定时器 2 的时钟源 1: 选择系统时钟作为定时器 2 的时钟源 CAH-CDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 RCAP2L RCAP2H RCAP2L.7 RCAP2L.6 RCAP2L.5 RCAP2L.4 RCAP2L.3 RCAP2L.2 RCAP2L.1 RCAP2L.0 RCAP2H.7 RCAP2H.6 RCAP2H.5 RCAP2H.4 RCAP2H.3 RCAP2H.2 RCAP2H.1 RCAP2H.0 TL2 TL2.7 TL2.6 TL2.5 TL2.4 TL2.3 TL2.2 TL2.1 TL2.0 TH2 TH2.7 TH2.6 TH2.5 TH2.4 TH2.3 TH2.2 TH2.1 TH2.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 RCAP2L.x RCAP2H.x TL2.x TH2.x 定时器 2 重载 / 捕获数据低位高位,x = 0-7 定时器 2 低位 / 高位计数器,x =

47 7.8.4 定时器 3 定时器 3 是 16 位自动重载定时器, 通过两个数据寄存器 TH3 和 TL3 访问, 由 T3CON 寄存器控制 IEN1 寄存器的 ET3 位置 1 允许定时器 3 中断 ( 详见中断章节 ) 定时器 3 只有一个工作方式 :16 位自动重载计数器 / 定时器, 可以设置预分频比, 并可以工作在 CPU 掉电模式 定时器 3 有一个 16 位计数器 / 定时器寄存器 (TH3,TL3) 当 TH3 和 TL3 被写时, 用作定时器重载寄存器, 当被读时, 被用做计数寄存器 TR3 位置 1 使定时器 3 开始递增计数 定时器在 0xFFFF 到 0x0000 溢出并置 TF3 位为 1 溢出同时, 定时器重载寄存器的 16 位数据被重新载入计数寄存器中,TH3 写操作也导致重载寄存器的数据重新载入计数寄存器 TH3 和 TL3 读写操作遵循以下顺序 : 写操作 : 先低位后高位读操作 : 先高位后低位 T3 System Clock kHz Crystal/RC 128K T3CLKS[1:0] T3PS[1:0] Prescaler 1,8,64,256 Increment Mode 16-bit Counter TF3 Overflow Flag Interrupt Request TR3 0:Switch Off 1:Switch On TL3 TH3 The Block Diagram of Timer3 定时器 3 可以工作在掉电模式 当 OP_OSC[3:0]( 详见代码选项章节 ) 为 0000,1110 可以选为 00,01 当 OP_OSC[3:0] 为 0011,0110,1010 时,T3CLKS[1:0] 可以选为 00,01,10 如果 T3CLKS[1:0] 为 00, 定时器 3 不能工作在掉电模式下 如果 T3CLKS[1:0] 为 01,T3 端口输入外部时钟, 定时器 3 可以工作在普通模式或掉电模式 ( 在系统为高频时进入掉电模式 ) 当 T3CLKS[1:0] 为 10 并且 OP_OSC[2:0]011 时, 定时器 3 可以工作在普通模式或掉电模式 当 T3CLKS[1:0] 为 10 并且 OP_OSC[3:0] 为 0000,1110 时, 定时器 3 不工作 详见下表 : OP_OSC[3:0] T3CLKS[1:0] 工作在普通模式 工作在掉电模式 00 YES NO YES YES 10 NO NO YES NO YES YES YES YES 注意 : (1) 在读或写 TH3 和 TL3 时, 要确保 TR3 = 0 (2) 当定时器 3 用 T3 端口作为时钟源, 而且 TR3 由 0 变为 1 时, 定时器 3 忽略 T3 的第 1 个下降沿 47

48 寄存器 Table 7.32 定时器 3 控制寄存器 C0H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 T3CON TF3 - T3PS.1 T3PS.0 - TR3 T3CLKS.1 T3CLKS.0 读 / 写读 / 写 - 读 / 写读 / 写 - 读 / 写读 / 写读 / 写 TF3 5-4 T3PS[1:0] 2 TR3 1-0 T3CLKS[1:0] Table 7.33 定时器 3 重载 / 计数数据寄存器 定时器 3 溢出标志位 0: 无溢出 ( 硬件清 0) 1: 溢出 ( 硬件置 1) 定时器 3 预分频比选择位 00:1/1 01:1/8 10:1/64 11:1/256 定时器 3 允许控制位 0: 停止定时器 3 1: 开始定时器 3 定时器 3 定时器 / 计数器方式选定位 00: 系统时钟,T3 引脚用作 I/O 端口 01:T3 端口输入外部时钟, 自动上拉 10: 外部 kHz 晶体谐振器 11: 保留 C2H-C3H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TL3 (C2H) TL3.7 TL3.6 TL3.5 TL3.4 TL3.3 TL3.2 TL3.1 TL3.0 TH3 (C3H) TH3.7 TH3.6 TH3.5 TH3.4 TH3.3 TH3.2 TH3.1 TH3.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TL3.x TH3.x Table 7.34 定时器 3 重载 / 计数数据寄存器 定时器 3 低位高位计数器,x = 0-7 C1H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SWTHL TH3LCON 读 / 写 读 / 写 T3HLCON 0: 读 TH3 和 TL3 时, 返回值为 T3 计数器值 1: 读 TH3 和 TL3 时, 返回值为 T3 重载寄存器值 48

49 7.8.5 定时器 4 定时器 4 是 16 位自动重载定时器 两个数据寄存器 TH4 和 TL4 可作为一个 16 位寄存器来访问 由 T4CON 寄存器控制 IEN1 寄存器的 ET4 位置 1 允许定时器 4 中断 ( 详见中断章节 ) 当 TH4 和 TL4 被写时, 用作定时器重载寄存器, 当被读时, 被用做计数寄存器 TR4 位置 1 使定时器 4 开始递增计数 定时器在 0xFFFF 到 0x0000 溢出并置 TF4 位为 1 溢出同时, 定时器重载寄存器的 16 位数据重新载入计数寄存器中, 对 TH4 的写操作也导致重载寄存器的数据重新载入计数寄存器 TH4 和 TL4 读写操作遵循以下顺序 : 写操作 : 先低位后高位读操作 : 先高位后低位定时器 4 方式定时器 4 有两种工作方式 :16 位自动重载定时器, 有 T4 边沿触发的 16 位自动重载定时器 这些方式通过 T4CON 寄存器的 T4M[1:0] 设置 方式 0:16 位自动重载定时器定时器 4 在方式 0 为 16 位自动重载定时器 TH4 寄存器存放 16 位计数器 / 定时器高 8 位,TL4 存放低 8 位 当 16 位定时寄存器从 0xFFFF 到 0x0000 递增, 并溢出时, 系统置定时器溢出标志 TF4(T4CON.7) 为 1,16 位寄存器的值被重新载入计数器, 如果允许定时器 4 中断则产生中断 T4CON.0 寄存器的 T4CLKS 位选择时钟源 当 T4CLKS = 1 时, 定时器 4 的时钟源为外部时钟, 预分频后, 计数器数据寄存器增加 当 T4CLKS = 0, 定时器 4 的时钟源为系统时钟 T4CON.1 寄存器的 TR4 位置 1 允许定时器 4, 且不清定时器 4 的计数器 在允许定时器 4 之前, 将希望的初始值写入定时器重载寄存器中 在比较方式中,T4 端口自动被硬件设为输出 定时器 4 从 TH4 和 TL4 预设值开始向 0xFFFF 计数, 当计数器溢出时,T4 端口输出反转, 同时定时器 4 中断标志位被置起 在比较方式中, 定时器 4 必须工作在定时方式 (T4CLKS = 0) T4 System Clock TR4 =0 T4CLKS =1 0:Switch Off 1:Switch On T4PS[1:0] Prescaler 1,8,64,256 Increment Mode 16 bit Counter TL4 TH4 TF4 Overflow Flag T4CLKS=0 TC4=1 Interrupt Request T4 The Block Diagram of Mode 0 of Timer 4 49

50 方式 1: 带边沿触发的 16 位自动重载定时器 定时器 4 在方式 1 为 16 位自动重载定时器 T4CON.0 寄存器的 T4CLKS 位一直为 0, 定时器 4 只能选择系统时钟为时钟源, 其余设置与方式 0 一致 方式 2 中,T4CON.1 的 TR4 位置 1, 定时器 4 等待 T4 端口的触发信号 ( 由 T4M[1:0] 控制上升 / 下降沿 ) 开始计数, 一个触发信号使定时器 4 开始运行 当定时器 4 从 0xFFFF 到 0x0000 溢出时,TF4(T4CON.7) 会被置起, 如定时器 4 的中断使能, 将产生定时器 4 中断 T4CLKS 位始终为 0 定时器 4 的时钟为系统时钟 定时器重载寄存器的数据重载入 TH4 和 TL4 中, 保持到下一个触发信号 在定时器 4 工作时同时有一个触发信号时, 如果 TC4 = 0, 忽略此信号 ; 如果 TC4 = 1, 定时器 4 被触发 TR4 置 1 不清定时器 4 的计数器, 在允许定时器之前应该把希望的初始化值写入重载寄存器 T4 TC4 System Clock control M2_en T4PS[1:0] Prescaler 1,8,64,256 TR4 0:Switch Off 1:Switch On Increment Mode 16 bit Counter TF4 Overflow Flag Interrupt Request TL4 TH4 + The Block Diagram of Mode 2 of Timer 4 control : M2_en set to 1 when T4 edge trig, M2_en set to 0 when counter overflow 注意 : 当定时器 4 用作计数器时,T4 引脚的输入信号频率要小于系统时钟的一半 50

51 寄存器 Table 7.35 定时器 4 控制寄存器 C8H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 T4CON TF4 TC4 T4PS1 T4PS0 T4M1 T4M0 TR4 T4CLKS 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TF4 6 TC4 5-4 T4PS[1:0] 3-2 T4M[1:0] 1 TR4 0 T4CLKS Table 7.36 定时器 4 重载 / 计数数据寄存器 定时器 4 溢出标志位 0: 无溢出 ( 硬件清 0) 1: 溢出 ( 硬件置 1) 比较功能允许位当 T4M[1:0] = 00 0: 禁止定时器 4 比较功能 1: 允许定时器 4 比较功能当 T4M[1:0] = 10 或 11 0: 定时器 4 不能被再触发 1: 定时器 4 可以被再触发 定时器 4 预分频比选择位 00:1/1 01:1/8 10:1/64 11:1/256 定时器 4 方式选择位 00:Mode0,16 位自动重载定时器 01: 保留 10:Mode2,T4 端口上升沿触发 ( 只用系统时钟,T4CLKS 无效 ) 11:Mode2,T4 端口下降沿触发 ( 只用系统时钟,T4CLKS 无效 ) 定时器 4 允许控制位 0: 禁止定时器 4 1: 允许定时器 4 定时器 4 时钟源选择位 0: 系统时钟,T4 端口作为 I/O 口 1:T4 端口输入外部时钟, 自动上拉 CCH-CDH,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TL4 TL4.7 TL4.6 TL4.5 TL4.4 TL4.3 TL4.2 TL4.1 TL4.0 TH4 TH4.7 TH4.6 TH4.5 TH4.4 TH4.3 TH4.2 TH4.1 TH4.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TL4.x TH4.x 定时器 4 低位高位计数器,x =

52 7.9 中断 特性 14 个中断源 4 层中断优先级 SH79F3218 有 14 个中断源 :3 个外部中断 (INT2,INT3,INT4),5 个定时器中断 ( 定时器 0,1,2,3,4),1 个 EUART 中断,TWI 中断,TK 中断, 两个 PWM 中断,ESCM 中断 中断允许 任何一个中断源均可通过对寄存器 IEN0 和 IEN1 中相应的位置 1 或清 0, 实现单独使能或禁止 IEN0 寄存器中还包含了一个全局使能位 EA, 它是所有中断的总开关 一般在复位后, 所有中断允许位设置为 0, 所有中断被禁止 寄存器 Table 7.37 初级中断允许寄存器 A8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IEN0 EA - ET2 ES ET1 EPWM2 ET0 TKIE 读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 EA 5 ET2 4 ES 3 ET1 2 EPWM2 1 ET0 0 TKIE 所有中断允许位 0: 禁止所有中断 1: 允许所有中断 定时器 2 溢出中断允许位 0: 禁止定时器 2 溢出中断 1: 允许定时器 2 溢出中断 EUART 中断允许位 0: 禁止 EUART 中断 1: 允许 EUART 中断 定时器 1 中断允许位 0: 禁止定时器 1 溢出中断 1: 允许定时器 1 溢出中断 PWM2 中断允许位 0: 禁止 PWM2 中断 1: 允许 PWM2 中断 定时器 0 溢出中断允许位 0: 禁止定时器 0 溢出中断 1: 允许定时器 0 溢出中断 触摸按键中断允许位 0: 禁止触摸按键中断 1: 允许触摸按键中断 52

53 Table 7.38 次级中断允许寄存器 A9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IEN1 ESCM/ELPD EX3 EPWM1/ ECRC ET3 ETWI EX4 EX2 ET4 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 ESCM/ELPD 6 EX3 5 EPWM1/ECRC 4 ET3 3 ETWI 2 EX4 1 EX2 0 ET4 SCM/LPD 中断允许位 0: 禁止 SCM/LPD 中断 1: 允许 SCM/LPD 中断 外部中断 3 允许位 0: 禁止外部中断 3 中断 1: 允许外部中断 3 中断 PWM1/CRC 中断允许位 0: 禁止 PWM1 中断 /CRC 中断 1: 允许 PWM1 中断 /CRC 中断 定时器 3 溢出中断允许位 0: 禁止定时器 3 溢出中断 1: 允许定时器 3 溢出中断 TWI 中断允许位 0: 禁止 TWI 中断 1: 允许 TWI 中断 外部中断 4 允许位 0: 禁止外部中断 4 中断 1: 允许外部中断 4 中断 外部中断 2 允许位 0: 禁止外部中断 2 1: 允许外部中断 2 定时器 4 溢出中断允许位 0: 禁止定时器 4 溢出中断 1: 允许定时器 4 溢出中断 注意 : (1) 打开外部中断 0/1/2/3/4 时, 相应的端口必须设置为输入状态 (2) 打开 PWM 定时器中断,EPWM 位和 PWM 控制寄存器中的 PWMxIE(x = 1,2) 中断允许位必须同时置 1 Table 7.39 外部中断通道允许寄存器 BAH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IENC EXS47 EXS46 EXS EXS40 读 / 写读 / 写读 / 写读 / 写 读 / 写 , 0 EXS4x (x = 0, 5-7) 注意 : 寄存器未定义的空白位必须清 0 外部中断 4 通道选择位 (x = 0,5-7) 0: 禁止外部中断 4x 1: 允许外部中断 4x 53

54 Table 7.40 中断通道选择寄存器 BBH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IENC1 - - ECRC EPWM1 EPWM2 - ESCM1 ELPD 读 / 写 - - 读 / 写读 / 写读 / 写 - 读 / 写读 / 写 ECRC 4 EPWM1 3 EPWM2 1 ESCM1 0 ELPD Table 7.41 外部中断通道允许寄存器 CRC 中断允许位 0: 禁止 PWM2 中断 1: 允许 PWM2 中断 PWM1 中断允许位 0: 禁止 PWM1 中断 1: 允许 PWM1 中断 PWM2 中断允许位 0: 禁止 PWM2 中断 1: 允许 PWM2 中断 SCM 中断允许位 0: 禁止 SCM 中断 1: 允许 SCM 中断 LPD 中断允许位 0: 禁止 LPD 中断 1: 允许 LPD 中断 BCH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IENC EXS31 EXS30 读 / 写 读 / 写读 / 写 EXS3x (x = 0-1) 注意 : 寄存器未定义的空白位必须清 0 外部中断 3 通道选择位 (x = 0-1) 0: 禁止外部中断 3x 1: 允许外部中断 3x 54

55 7.9.4 中断标志 每个中断源都有自己的中断标志, 当产生中断时, 硬件会置起相应的标志位, 在中断摘要表中会列出中断标志位 外部中断源产生外部中断 INT2/3/4 时, 如果中断为边沿触发,CPU 在响应中断后, 各中断标志位 IEx(x =2-4) 被硬件清 0; 如果中断是低电平触发, 外部中断源引脚电平直接控制中断标志, 而不是由片上硬件控制 T2CON 寄存器的 TF2 标志位置 1 时, 产生定时器 2 产生中断,CPU 在响应中断后, 标志位都不会被硬件自动清 0 事实上, 中断服务程序必须决定是由 TF2 中断, 标志必须由软件清 0 定时器 3 的计数器溢出时,T3CON 寄存器的 TF3 中断标志位置 1, 产生定时器 3 中断,CPU 在响应中断后, 标志被硬件自动清 0 SCON 寄存器的标志 RI 或 TI 被置 1 时, 产生 EUART 产生中断,CPU 在响应中断后, 标志不会被硬件自动清 0 事实上, 中断服务程序必须判断是收中断还是发中断, 标志必须由软件清 0 Table 7.42 外部中断标志寄存器 E8H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 EXF0 IT4.1 IT4.0 IT3.1 IT3.0 IT2.1 IT2.0 IE3 IE2 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 IT4[1:0] 5-4 IT3[1:0] 3-2 IT2[1:0] 1 IE3 0 IE2 外部中断 4 触发模式位 00: 低电平触发 01: 下降沿触发 10: 上升沿触发 11: 双沿触发 IT4[1:0] 控制外部中断 4 各中断源采用同一触发方式 外部中断 3 触发模式位 00: 低电平触发 01: 下降沿触发 10: 上升沿触发 11: 双沿触发 外部中断 2 触发模式位 00: 低电平触发 01: 下降沿触发 10: 上升沿触发 11: 双沿触发 外部中断 3 请求标志位 0: 无中断挂起 1: 中断挂起 外部中断 2 请求标志位 0: 无中断挂起 1: 中断挂起 55

56 Table 7.43 定时器 / 计数器控制寄存器 (x = 0,1) 88H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON TF1 TR1 TF0 TR 读 / 写读 / 写读 / 写读 / 写读 / 写 , 5 6, 4 TFx (x = 0, 1) TRx (x = 0, 1) Table 7.44 外部中断 4 标志寄存器 定时器 x 溢出标志 0: 定时器 x 无溢出 1: 定时器 x 溢出 定时器 x 启动, 停止控制 0: 停止定时器 x 1: 启动定时器 x D8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 EXF1 IF47 IF46 IF IF40 读 / 写读 / 写读 / 写读 / 写 读 / 写 , 0 IF4x (x = 0, 5-7) 外部中断 4 请求标志 0: 无中断请求 1: 有中断请求 IF4x 要由软件清 0 Table 7.45 外部中断 3 标志寄存器 D1H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 EXF IF31 IF30 读 / 写 读 / 写读 / 写 IF3x (x = 0-1) 外部中断 3 请求标志 0: 无中断请求 1: 有中断请求 IF3x 要由软件清 0 注意 : 寄存器未定义的空白位必须清 0 56

57 7.9.5 中断向量 当一个中断产生时, 程序计数器内容被压栈, 相应的中断向量地址被载入程序计数器 中断向量的地址在中断汇总表中详细列出 中断优先级 每个中断源都可被单独设置为 4 个中断优先级之一, 分别通过清 0 或置 1 IPL0,IPH0,IPL1,IPH1 中相应位来实现 中断优先级服务程序描述如下 : 响应一个中断服务程序时, 可响应更高优先级的中断, 但不能响应同优先级或低优先级的另一个中断 响应最高级中断服务程序时, 不响应其它任何中断 如果不同中断优先级的中断源同时申请中断时, 响应较高优先级的中断申请 如果同优先级的中断源在指令周期开始时同时申请中断, 那么内部查询序列确定中断请求响应顺序 中断优先级 优先位 IPHx IPLx 中断优先级 0 0 等级 0( 最低优先级 ) 0 1 等级 等级 等级 3( 最高优先级 ) Table 7.46 中断优先级控制寄存器 B8H,B4H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 IPL0 - - PT2L PESL PT1L PW2L PT0L PTKL IPH0 - - PT2H PESH PT1H PW2H PT0H PTKH 读 / 写 - - 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 B9H,B5H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 IPL1 PSCL PX3L PW1L PT3L PTWL PX4L PX2L PT4L IPH1 PSCH PX3H PW1H PT3H PTWH PX4H PX2H PT4H 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 PxxxL/H 相应中断源 xxx 优先级选择 注意 : 寄存器未定义的空白位必须清 0 57

58 7.9.7 中断处理 中断标志在每个机器周期都会被采样获取 所有中断都在时钟的上升沿被采样 如果一个标志被置起, 那么 CPU 捕获到后中断系统调用一个长转移指令 (LCALL) 调用其中断服务程序, 但由硬件产生的 LCALL 会被下列任何条件阻止 : 同级或更高级的优先级中断在运行中 当前的周期不是执行中指令的最后一个周期 换言之, 正在执行的指令完成前, 任何中断请求都得不到响应 正在执行的是一条 RETI 或者访问专用寄存器 IEN0\1 或是 IPL\H 的指令 换言之, 在 RETI 或者读写 IEN0\1 或是 IPL\H 之后, 不会马上响应中断请求, 而至少在执行一条其它指令之后才会响应 注意 : 因为更改优先级通常需要 2 条指令, 在此期间, 建议关闭相应的中断以避免在修改优先级过程中产生中断 如果当模块状态改变而中断标志不再有效时, 将不会响应此中断 每一个轮询周期只查询有效的中断请求 轮询周期 /LCALL 次序如下图所示 : C1 C2 C3 C3~Cn Cn~Cn+7 Cn+8 Interrupt Polled Interrupt Signal Generated Interrupt Pending Long Call to Interrupt Vector Service Interrupt service Interrupt Latched 中断响应时间 由硬件产生的 LCALL 把程序计数器中的内容压入堆栈 ( 但不保存 PSW), 然后将相应中断源的向量地址 ( 参照中断向量表 ) 存入程序计数器 中断服务程序从指定地址开始, 到 RETI 指令结束 RETI 指令通知处理器中断服务程序结束, 然后把堆栈顶部两字节弹出, 重载入程序计数器中, 执行完中断服务程序后程序回到原来停止的地方 RET 指令也可以返回到原来地址继续执行, 但是中断优先级控制系统仍然认为一个同一优先级的中断被响应, 这种情况下, 当同一优先级或低优先级中断将不会被响应 中断响应时间如果检测出一个中断, 这个中断的请求标志位就会在被检测后的每个机器周期被置起 内部电路会保持这个值直到下一个机器周期,CPU 会在第三个机器周期产生中断 如果响应有效且条件允许, 在下一个指令执行的时候硬件 LCALL 指令将调用请求中断的服务程序, 否则中断被挂起 LCALL 指令调用程序需要 7 个机器周期 因而, 从外部中断请求到开始执行中断程序至少需要 3+7 个完整的机器周期 当请求因前述的的三个情况受阻时, 中断响应时间会加长 如果同级或更高优先级的中断正在执行, 额外的等待时间取决于正执行的中断服务程序的长度 如果正在执行的指令还没有进行到最后一个周期, 假如正在执行 RETI 指令, 则完成正在执行的 RETI 指令, 需要 8 个周期, 加上为完成下一条指令所需的最长时间 20 个机器周期 ( 如果该指令是 16 位操作数的 DIV,MUL 指令 ), 若系统中只有一个中断源, 再加上 LCALL 调用指令 7 个机器周期, 则最长的响应时间是 个机器周期 所以, 中断响应时间一般大于 10 个机器周期小于 37 个机器周期 58

59 7.9.9 外部中断输入 SH79F3218 有 3 个外部中断输入 外部中断 2 有一个独立的中断源, 外部中断 4 有 4 个中断源共享一个中断矢量地址, 外部中断 3 有 2 个中断源共享一个中断矢量地址 外部中断 2/3/4 可以通过设置 EXF0 寄存器的 ITx(x = 2,3,4), 选择是电平触发或是边沿触发或者为双沿触发 当 ITx = 00(x = 2,3,4) 时, 外部中断 INTx(x = 2,3,4) 引脚为低电平触发 ; 当 ITx(x = 2,3, 4)= 01,10, 外部中断 INTx(x = 3,4) 为下降沿触发, 在这个模式中, 一个采样周期内 INTx(x = 2,3,4) 引脚上连续采样为高电平, 而下个周期开始, 连续采样 SN 个周期为低电平 (SN 为 Sample Num),EXF0 寄存器的中断请求标志位置 1, 发出一个中断请求 由于外部中断引脚每个周期采样一次, 输入高或低电平应当保持至少 SN 个周期以确保能够被正确采样到 当 ITx (x = 2,3,4)= 11, 外部中断 INTx(x = 3,4) 为双沿触发, 任何高低电平的转换都会触发一个中断请求 如果外部中断为下降沿, 上升沿触发, 外部中断源应当将中断脚至少保持 SN 个周期高 ( 低 ) 电平, 然后至少保持 SN 个周期低 ( 高 ) 电平 这样就确保了边沿能够被检测到以使 IEx 置 1 当调用中断服务程序后,CPU 自动将 IEx 清 0 如果外部中断为低电平触发, 外部中断源必须一直保持请求有效, 直到产生所请求的中断为止, 此过程需要 2 倍 SN 个采样周期 如果中断服务完成后而外部中断仍旧维持, 则会产生下一次中断 当中断为电平触发时不必清除中断标志 IEx(x = 2,3, 4), 因为中断只与输入口电平有关 中断连续采样次数可以设置 EXCON 寄存器进行调节 当 SH79F3218 进入空闲或是掉电模式, 中断会唤醒处理器继续工作, 详见电源管理章节 IiP[1:0],i=0-2,4 System Clock Sampling Num 1,4,8,16 INTi PxCR x=0,2,3, Sampling 0 1 IEi Flag Interrupt Request ITi[1:0], i=2,4 ITi[1:0], i=0-1 The Block Diagram of INTi 注意 : 外部中断 0-2 的中断标志位在执行中断服务程序时被自动硬件清 0, 但外部中断 4 和外部中断 3 的标志位必须要软件清 0 SN Sampling Cyle (SN=1,4,8,16) High-Level Threshold Low-Level Threshold > SN Sampling Cycle (SN=1,4,8,16) Low-Level Threshold >2*SN Sampling Cycle (SN=1,4,8,16) 外部中断检测 59

60 Table 7.47 外部中断采样次数控制寄存器 A4H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 EXCON I1PS1 I1PS0 I1SN1 I1SN0 I0PS1 I0PS0 I0SN1 I0SN0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 I1PS[1:0] 5-4 I1SN[1:0] 3-2 I0PS[1:0] 1-0 I0SN[1:0] 外部中断 INT4 采样时钟预分频比选择位 00:1/1 01:1/16 10:1/64 11:1/128 外部中断 INT4 连续采样次数选择位 00:1 01:2 10:3 11:4 外部中断 INT2,3 采样时钟预分频比选择位 00:1/1 01:1/16 10:1/64 11:1/128 外部中断 INT2,3 连续采样次数选择位 00:1 01:2 10:3 11:4 注意 : 若 I0SN[1:0] = 11, 则外部中断 2,3( 下降沿触发 ), 连续采样 4 次低电平才会产生中断标志 60

61 中断汇总 中断源向量地址允许位标志位轮询优先级中断号 (C51) Reset 0000H - - 0( 最高级 ) - TK 0003H TKIE IFERR+IFGO +IFAVE+IFCOUNT +IFTKOV 1 0 Timer0 000BH ET0 TF0 2 1 PWM2 0013H EPWM2 PWM02IF 3 2 Timer1 001BH ET1 TF1 4 3 EUART 0023H ES RI+TI 5 4 Timer2 002BH ET2 TF2+EXF2 6 5 Timer4 003BH ET4 TF4 8 7 INT2 0043H EX2 IE2 9 8 INT4 004BH EX4+EXF1 IF TWI 0053H ETWI TWINT Timer3 005BH ET3 TF PWM1/CRC 0063H EPWM1/ECRC PWM01IF/CRCIF INT3 006BH EX3 IF31-IF SCM/LPD 0073H ESCM+ESCM1/ELPD SCMIF/LPDF

62 8. 增强功能 8.1 Touch Key 触摸按键功能 TKU1 Key0 Key1 VREF[0:1] OPInput VTK[0:1] Key2 Key3 Key4 Key5 Touch Key Logic Circuit D15-D0 Data Output Key6 Key7 C1 10nF~47nF 功能描述 系统框图 SH79F3218 内建触摸按键功能模块, 最大能连接 8 个按键 SH79F3218 内建触摸按键功能模块工作电路精简, 应用时仅需外接一个 C1 电容 C1 电容值选择 22Nf - 44nF 之间, 要求使用 10% 或以上精度的涤纶电容 X7R 材质电容或 NPO 材质贴片电容 C1 电容可根据实际电路板材质以及触摸按键介质调节合适的灵敏度, 电容值越小, 灵敏度越高, 电容值越大, 灵敏度越低 触摸按键模块最大能连接 8 个按键, 可通过寄存器 TKU1 来选择, 能够选择一轮扫描按键通道个数 如果不用做触摸按键功能, 可通过寄存器设置作为 I/O 端口或者 SEG 输出或者 COM 输出 详见 I/O 端口章节 开关电路由寄存器, 可通过寄存器 FSW1 位和 FSW0 位选择 建议工作频率选择 4M 或 4M 以下频率 触摸按键模块内建基准电压, 可通过寄存器 VREF1 位和 VREF0 位选择 触摸按键通过调整寄存器 TUNE1 位和 TUNE0 位来确保对应不同的 C1 和工作频率下数据寄存器值的稳定性, 按键采样次数根据实际应用, 可选择多次采样, 程序只要启动一次采样扫描, 硬件会自动执行多次采样的比较值进行平均 值后输出结果, 例如, 选择 6 次采样输出, 寄存器 TKGO/D ---- Ō --- N ---- Ē --- 位置 1, 启动按键扫描后, 硬件会采样 6 次按键值, 将会将 6 次的采样值进行比较, 去除一个最大值和一个最小值, 完成后将剩余四次中值累加的值除以 4 得到的结果, 输出到 16 位数据寄存器 28 位放大系数寄存器为按键控制器运算结果放大系数, 如果运算结果大于 16 位的数据, 即为运算结果高位溢出, 标志位 IFERR 位置 1, 如果中断允许将响应中断子程序, 此时, 用户需要将放大系数寄存器的数据值减小后重新启动下一次扫描 一般运算时 16 位数据寄存器的值不应大于 FFFFH 如果大于 FFFFH 应将被除数寄存器的数据值减小 触摸按键有五种情况会产生中断标志位, 其中前四种种情况中断都会产生, 第五种只有中断标志位, 但不响应中断, 需要判断中断标志位后执行中断子程序 : (1) 按键扫描结束后, 如运算结果高位溢出, 将中断标志位 IFERR 置 1, 如果是多次采样, 系统将停止当前采样状态等待下一次重新启动扫描, 而不执行后面未做完的采样 如果发生运算结果高位溢出中断, 用户应将 28 位放大系数寄存器值减小 (2) 按键扫描启动标志位 TKGO/D ---- Ō --- N ---- Ē 置 1, 系统自动检测比较输出状态是否正常, 如果异常会将标志位 IFGO 置 1, 此时为按键控制器启动错误, 用户应延时 10uS 后, 重新启动下一次扫描 (3) 按键扫描结束后, 如未发生异常, 将中断标志位 IFAVE 置 1 (4) 扫描按键计数过程中, 当计数寄存器溢出时, 将中断标志位 IFCOUNT 置 1, 用户需要减小电容或者将 28 位放大系数寄存器值减小 (5) 在与 LED 共用时, 设定 TKCOUNT( 触摸按键时间宽度 ), 启动触摸按键, 如果在 TKCOUNT 时间内, 触摸按键扫描尚未结束, 则标志位 IFTKOV 置 1, 但是扫描按键和 LED 会继续扫描而且不会有中断产生, 用户需要在发生中断的情况下来判断 IFTKOV 标志位, 调整 TKCOUNT 时间来确保触摸按键扫描有足够的时间 62

63 仅作触摸按键功能时的启动扫描步骤 : (1) 选择需要扫描的按键通道 ; (2) 寄存器 TKCON 位置 1, 允许触摸按键模块工作 ; (3) 设置开关频率 参考电压 V REF 和按键采样次数和扫描顺序 ; (4) 设置 28 位放大系数寄存器 ; (5) 软件延时 10uS; (6) 寄存器 TKGO/D ---- Ō --- N ---- Ē --- 位置 1, 启动按键扫描 ; (7) 中断产生,TKGO 硬件自动清 0; (8) 中断标志位判断 :IFERR,IFGO,IFAVE,IFCOUNT 如果 IFAVE = 1, 读数据寄存器 500H 50FH, 程序保存数据结果, 执行步骤 9; 如果 IFERR = 1, 数据寄存器运算溢出错误, 清 IFERR 和标志位, 重新设置放大系数寄存器值, 减小放大系数值, 返回步骤 5 重新启动扫描 ; 如果 IFGO = 1, 按键控制器启动错误, 清 IFGO 和标志位, 返回步骤 5 重新启动扫描 ; 如果 IFCOUNT = 1, 按键扫描计数溢出错误, 清 IFCOUNT 和标志位, 减小电容 C1 或者减少平均次数 返回步骤 5, 重新启动扫描 (9) 一组按键扫描完成 63

64 操作流程图 START TKCON = 1 CHOSE CHANNELS REGISTER: TKU1 FUNCTION REGISTER: VREF[0:1],VTK[0:1],CMPD[0:1],VTK[0:1],RANDOM [0:1],TKST[0:7],FSW[0:1],TKRANDOM[0:7] 28Bit AMPLIFICATION FACTOR REGISTER: TKDIV01~TKDIV04 DELAY 10uS TKGO=1 WATING FOR THE TOUCH-KEY INTERRUPT PRODUCE OR SCANNING TKIF. NO TOUCH KEY INTERRUPT YES IF IFERR=1 IF IFAVE=1 IF IFGO=1 IF IFCOUNT=1 YES YES YES YES IFERR=0 IFAVE=0 IFGO=0 IFGO=0 CHANGE 28Bit AMPLIFICATION FACTOR REGISTER READ 16 Bit DATA REGISTER MINISH Cx END 64

65 8.1.1 寄存器 Table 8.1 触摸按键功能控制寄存器 A1H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKCON1 TKCON - TKGO /D ---- Ō NĒ SHARE MODE OVDD FSW1 FSW0 读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TKCON 5 TKGO/D ---- Ō --- N ---- Ē SHARE 3 MODE 2 OVDD 触摸按键允许位 0: 禁止触摸按键工作 1: 允许触摸按键工作 启动触摸按键允许位 0: 未启动按键扫描或按键扫描结束 1: 启动按键扫描或正在执行按键扫描 触摸按键 LED 共享允许位 ( 详细描述见注 3) 0: 禁止共享 1: 启动触摸按键和 LED 显示共享 触摸按键模式选择位 0: 选择充电次数来作为数据参数 1: 选择充电时间来作为数据参数 OP 输出 V DD 允许位 0: 选择 OP 输出电压 1: 由 V DD 输出电压 1-0 FSW[1:0] 采样次数选择位 00: 按键采样 1 次输出数据,D15-D0 为 1 次采样的平均值 01: 按键采样 3 次输出数据,D15-D0 为 1 次采样的平均值 ( 去除最大值及最小值 ) 10: 按键采样 6 次输出数据,D15-D0 为 4 次采样的平均值 ( 去除最大值及最小值 ) 11: 按键采样 10 次输出数据,D15-D0 为 8 次采样的平均值 ( 去除最大值及最小值 ) 注意 :OVDD = 0: 由 VTK 来选择 OP 输出电压 OVDD = 1: 直接由 V DD 输出电压 Table 8.2 触摸按键功能频率控制寄存器 CFH, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKST - ST.6 ST.5 ST.4 ST.3 ST.2 ST.1 ST.0 读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 ST[6:0] 触摸按键功能频率控制位系统时钟 /TKST = 触摸按键功能开关频率 注意 : 触摸按键功能频率 = OSC/TKST:TKST 最大为 127 分频, 最小为 2, 当寄存器在小于等于 2 时, 则寄存器默认为系统时钟 /2 65

66 Table 8.3 触摸按键频率随机设置寄存器 B6H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKRANDOM TKRADON TKOFFSET TKVDD TKOUT - - RANDOM1 RANDOM0 读 / 写读 / 写读 / 写读 / 写读 / 写 - - 读 / 写读 / 写 TKRADON 6 TKOFFSET 5 TKV DD 4 TKOUT 1-0 RANDOM[1:0] 触摸按键随机频率使能位 0: 禁止触摸按键随机频率功能 1: 打开触摸按键随机频率功能 触摸按键补偿使能位 0: 禁止触摸按键补偿 1: 打开触摸按键补偿 触摸按键补偿波形电平选择位 0: 触摸按键补偿波形电平由 OP 输出 1: 触摸按键补偿波形电平由 V DD 输出 触摸按键补偿波形输出能力选择位 0: 触摸按键补偿波形弱输出 1: 触摸按键补偿波形强输出 随机抖动设置位 TKRADSEL = 0 00:TKST 随机抖动 ±1 01:TKST 随机抖动 ±1,±2 10:TKST 随机抖动 ±1,±2,±3 11:TKST 随机抖动 ±1,±2,±3,±4 注意 :Design spec: 随机抖动请在一段时间内保证数学累计为 0 (1) 当 TKST 为二分频时不能进行抖动时钟, 三分频时只能选择 00 有效, 四分频时有效选项为 00,01 两档 当 TKST 为六分频以上时,TKST 随即抖动四档全部有效 (2) 当触摸按键补偿位有效 在触摸按键扫描时, 除当前 TK 扫描按键通道外, 其他 TK 扫描按键通道输出补偿波形 当 TKV DD 有效时, 触摸按键补偿波形电平由 V DD 提供, 当 TKV DD 为零时, 由 OP 输出补偿波形电平 66

67 Table 8.4 触摸按键中断标志位寄存器 ( 该寄存器只能清 0) C1H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKF0 - IFERR IFGO IFAVE IFCOUNT IFTKOV - - 读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写 IFERR 5 IFGO 4 IFAVE 3 IFCOUNT 2 IFTKOV Table 8.5 放大系数数寄存器 运算结果溢出中断标志位 0: 运算结果高位未溢出 1: 运算结果高位溢出产出中断 启动信号错误中断标志位 0: 启动信号未错误 1: 启动信号错误产生中断 按键扫描结束中断标志位 0: 扫描未结束 1: 扫描结束产生中断 按键扫描计数溢出标志位 0: 按键扫描计数未溢出 1: 按键扫描计数溢出 SHARE 状态下 LED 扫描开始时 TK 尚未完成时错误信号中断标志位 0:TK 扫描在 LED 扫描前结束 1:TK 扫描在 LED 扫描前未结束产生中断 C3H-C6H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKDIV01 (C3H) DIV7 DIV6 DIV5 DIV4 DIV3 DIV2 DIV1 DIV0 TKDIV02 (C4H) DIV15 DIV14 DIV13 DIV12 DIV11 DIV10 DIV9 DIV8 TKDIV03 (C5H) DIV23 DIV22 DIV21 DIV20 DIV19 DIV18 DIV17 DIV16 TKDIV04 (C6H) DIV27 DIV26 DIV25 DIV24 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TKDIV0x x = 1-4, 触摸按键放大系数 DIV0 - DIV27: 填入一个 27 位数值作为触摸按键的放大系数, 该数值越大, 得到的值越大 67

68 Table 8.6 端口功能控制寄存器 9DH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 P2SS P2SS.7 P2SS.6 P2SS.5 P2SS.4 P2SS.3 P2SS.2 P2SS.1 P2SS.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PxSSy x = 0-5, y = 0-7 端口功能控制 0: 作为 I/O 1: 作为触摸按键信道 注意 :P2SS.1 - P2SS.7 对应触摸按键通道 TCH1 - TCH7(P2.0 - P2.6) P2SS.0 对应触摸按键通道 TCH0(P1.7) Table 8.7 触摸按键功能时间控制寄存器 E6H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKCOUNT COUNT0.7 COUNT0.6 COUNT0.5 COUNT0.4 COUNT0.3 COUNT0.2 COUNT0.1 COUNT0.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 COUNT0[7:0] Table 8.8 触摸按键等待时间控制寄存器 TK 时间宽度选择位 TK 时钟宽度 = LED 时钟频率 X TKCOUNT A2H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKWAIT TKWAIT.7 TKWAIT.6 TKWAIT.5 TKWAIT.4 TKWAIT.3 TKWAIT.2 TKWAIT.1 TKWAIT.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TKWAIT[7:0] TK 等待时间宽度选择位 TK 等待时钟宽度 = LED 时钟频率 X TKCOUNT 注意 :TKCOUNT TKWAIT 寄存器仅在 SHARE 模式下有效 68

69 在 SHARE 状态下,LED 帧频时间分为三部分, 即 T A 为触按键时间宽度,T B 为 LED 扫描时间宽度,T C 为触摸按键扫描等待时间宽度 下面公式中,T LED 为 LED 时钟宽度,T SYS 为系统时钟宽度 T LED = T SYS *8*DISPCLK T A = T LED *TKCOUNT [ 时间 A] T B = (T LED *DISCOM)*S [ 时间 B] S 为 LED 扫描的 COM 数量 : 扫描 4COM 即 S = 4, 扫描 5COM 即 S = 5, 以此类推 T C = T LED *TKWAIT [ 时间 C] 以 T A + T B + T C 扫描 64Hz 举例 : 在 SHARE 状态下, 当系统时钟为 RC = 16.6MHz, 且需要帧频为 64Hz, 扫描 COM 为 5COM: 那么,T SYS = 1/16.6M = 60.24ns 需要结果为 T A+ T B+ T C = 1/64s = ms 如果设置 DISPCLK 为 96H(DISPCLK 理论上越小越好, 但是也要保证 TKCOUNT,DISCOM,TKWAIT 不会溢出 ) T LED = T SYS *8*DISPCLK = 60.24ns*8*150 = 72288ns = us = ms 需得到 T A = 7ms 的触摸按键时间宽度 :( 触摸按键的时间宽度取值需要保证在这一段时间内, 所有触摸按键可以采集完成 ) TKCOUNT = T A /T LED = 7ms/ ms = 96 = 60H 需得到 T B = 6.625ms 的 LED 扫描时间宽度 :(LED 扫描时间宽度需要尽量的多扫描时间, 保证 LED 亮度 ) DISCOM = T B /S/T LED = 6.625ms/5/ ms = 18 = 12H 需得到 T C = 2ms 的触摸按键扫描等待时间宽度 :( 触摸按键扫描等待时间宽度在不影响触摸按键情况下, 需要尽量少的时间, 一般可以设置为 0) TKWAIT = T C /T LED = 2ms/ ms = 27 = 1BH 当时间 A,B,C 当有一段时间如果发生改变, 其他段时间如果没有改动的话, 帧频就会发生变化 在实际使用过程中, 触摸按键值会随环境温度湿度的变化而变化, 所以, 触摸按键时间宽度 T A 需要预留一部分的空闲时间来作为余量, 通常为所有触摸按键采集完成时间加上 10-15% TK A LED B WAIT C TK A LED B WAIT C COM1 T:7ms L:6.625ms W:2ms T:7ms L:6.625ms W:2ms COM2 ALL:15.625ms ALL:15.625ms COM3 SEG1 SEG2 TK & LED (SHARE) 69

70 Table 8.9 按键扫描出错寄存器 B7H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKW TW.2 TW.1 TW.0 读 / 写 读 / 写读 / 写读 / 写 TW[2:0] 按键扫描出错显示当 TKW[2:0] = 000b 时, 按键 1 当 TKW[2:0] = 001b 时, 按键 2 当 TKW[2:0] = 010b 时, 按键 3 当 TKW[2:0] = 011b 时, 按键 4 当 TKW[2:0] = 100b 时, 按键 5 当 TKW[2:0] = 101b 时, 按键 6 当 TKW[2:0] = 110b 时, 按键 7 当 TKW[2:0] = 111b 时, 按键 8 注意 : 当按键有错误标志位置起时, 除 IFTKOV 不会停止触摸按键的运行, 其他标志位都会停止触摸按键运行, 并将出错的通道的 BIT 位置起 该寄存器为只读寄存器 70

71 TK A LED B WAIT C TK A LED B WAIT C COM1 T:7ms L:6.625ms W:2ms T:7ms L:6.625ms W:2ms COM2 ALL:15.625ms ALL:15.625ms COM3 SEG1 SEG2 TK & LED (SHARE) 01 TK A LED B WAIT C TK A LED B WAIT C COM1 T:4ms L:5.625ms W:6ms T:4ms L:5.625ms W:6ms COM2 ALL:15.625ms ALL:15.625ms COM3 SEG1 SEG2 TK & LED (SHARE) 02 图中 SEG 输出触摸按键波形 : ALL 宽度为 LED 帧频宽度,T 宽度为触摸按键设置宽度,L 宽度为 LED 扫描宽度,C 宽度为 LED COM 宽度 W 宽度为触摸按键等待时间宽度 ALL(LED 帧频 )= L(LED 扫描宽度 )+T( 触摸按键时间宽度 )+W( 触摸按键等待时间宽度 ) 例 : 当 TK 宽度调整为 7ms,LED 宽度调整为 6.625ms, 触摸按键等待宽度调整为 2ms, 则显示帧频为 64Hz 当 TK 宽度调整为 4ms,LED 宽度调整为 5.625ms, 触摸按键等待宽度调整为 6ms, 则显示帧频为 64Hz 71

72 Table 8.10 基准电压选择寄存器 CEH, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TKVREF VREF1 VREF0 CMPD1 CMPD0 VTK1 VTK0 TUNE1 TUNE0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 VREF[1:0] 5-4 CMPD[1:0] 3-2 VTK[1:0] 1-0 TUNE[1:0] 内部基准电压选择位 00:V REF = 2.5V 01:V REF = 2V 10:V REF = 1.5V 11:V REF = 1V 去抖动时间选择位 00: 约 4*tsysclk 01: 约 8*tsysclk 10: 约 16*tsysclk 11: 约 32*tsysclk OP 输出电压选择位 00:VTK = 4V 01:VTK = 3.0V 10:VTK = 2.5V 11:VTK = 2V 放电时间调整选择位 00: 延时 128*tsysclk 01: 延时 256*tsysclk 10: 延时 384*tsysclk 11: 延时 512*tsysclk.... SW1 OP output fsw SW2 VTK[0:1] 00: 4V 01: 3V 10:2.5V 11:2V Vref CMP VREF[0:1] 00: 2.5V 01: 2V 10:1.5V 11:1V Output.... Cx1 Cx2 C1 OP 输出电压示意图 72

73 Table 8.11 按键扫描顺序寄存器 C2H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 TKU1 TK8 TK7 TK6 TK5 TK4 TK3 TK2 TK1 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 TK[8:1] 按键扫描顺序控制位 0: 跳过扫描该按键 1: 顺序扫描该按键 注意 : 当 TKU1 中的某位置 0 时, 则当扫描按键开始时, 会跳过该按键扫描信道, 扫描按键顺序为从 TKU1 的 TK1 到 TKU1 的 TK8, 分别代表扫描按键的 8 个信道 Table 位数据寄存器 ( 触摸按键数据 RAM 为只读寄存器 ) 地址第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 500H TK01L D7 D6 D5 D4 D3 D2 D1 D0 501H TK01H D15 D14 D13 D12 D11 D10 D9 D8 502H TK02L D7 D6 D5 D4 D3 D2 D1 D0 503H TK02H D15 D14 D13 D12 D11 D10 D9 D8 504H TK03L D7 D6 D5 D4 D3 D2 D1 D0 505H TK03H D15 D14 D13 D12 D11 D10 D9 D8 506H TK04L D7 D6 D5 D4 D3 D2 D1 D0 507H TK04H D15 D14 D13 D12 D11 D10 D9 D8 508H TK05L D7 D6 D5 D4 D3 D2 D1 D0 509H TK05H D15 D14 D13 D12 D11 D10 D9 D8 50AH TK06L D7 D6 D5 D4 D3 D2 D1 D0 50BH TK06H D15 D14 D13 D12 D11 D10 D9 D8 50CH TK07L D7 D6 D5 D4 D3 D2 D1 D0 50DH TK07H D15 D14 D13 D12 D11 D10 D9 D8 50EH TK08L D7 D6 D5 D4 D3 D2 D1 D0 50FH TK08H D15 D14 D13 D12 D11 D10 D9 D8 注意 : (1) OP 输出电压为触摸按键供电电压,V REF 为触摸按键参考电压源 (2) 触摸按键通过设置寄存器 TUNE1 和 TUNE0 位调节电容的放电时间, 以确保不同的 C1 和工作频率下, 数据寄存器值的稳定性 (3) 当 LED 与触摸按键共享开启时 :TK1 - TK8 作为按键用, 触摸按键功能扫描完成后退出触摸按键模块, 开启 LED 显示模块, 需要提前设置 COM 和 SEG 选项 扫描 COM1 - COM7 选中项,SEG0-15 内容需要预存, 扫描一次后结束 LED 功能重新开始触摸按键功能 73

74 8.2 LED 驱动器 LED 驱动器包含一个控制器,7 个 COM 输出引脚和 13 个 egment 输出引脚 支持 1/1~1/7 占空比电压驱动方式 通过 LEDCOM 寄存器对驱动模式进行选择 控制器由显示数据 RAM 存储区和一个占空比发生器组成 LED_SEG0-7,11-15 脚还可以当作 I/O 口使用 P0SS 和 P2SS 寄存器设置无效,SEG01,SEG02 寄存器分别用于控制 LED_SEG0-7,11-15,LEDCOM 寄存器用于控制 COM1-COM7 和 I/O 端口模式的选择 在上电复位 引脚复位 低电压复位或看门狗复位期间,LED 被关闭 LEDMODE 决定 LED 是共阴模式或者共阳模式, LEDMODE = 00 时 Common 为低电平,Segment 输出高电平导通 LED, 当 LEDMODE = 01 时 Common 输出高电平,Segment 都输出低电平导通 LED 在上电复位 引脚复位 低电压复位或看门狗复位期间,LED 被关闭 寄存器 Table 8.13 LED 控制寄存器 D9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 DISPCON - LEDON - LEDMODE1 LEDMODE0 MODSW 读 / 写 - 读 / 写 - 读 / 写读 / 写读 / 写 LEDON 3-2 LEDMODE[1:0] 0 MODSW LED 使能控制位 0: 禁止 LED 驱动器 1: 允许 LED 驱动器 LED 模式选择位 00: 共阳驱动模式 01: 共阴驱动模式 1X: 共阴 / 共阳同时驱动模式 LED 共享总选择位 0:SEG0x,LEDCOM 控制位有效 1: 所有 LED 共享端口设置为 IO 注意 : LED 显示模块提供三种模式选择, 当模式为共阴,LED RAM COMxL(x = 1-7) 有效, 其他无效 ; 当模式为共阳,LED RAM COMxH(x = 1-7) 有效, 其他无效 ; 当模式为共阴 / 共阳模式时,LED RAM 都有效,COMxL(x = 1-7) 为共阴 LED 的 RAM, COMxH(x = 1-7) 为共阳时候的 RAM 在 share 模式下, 与触摸按键同时进行的仅为共阴模式 MODSW 位控制了所有 LED 管脚的共享位 ; 如果 MODSW = 1; 则所有的 LED SEG/COM 口做为 IO; 如果 MODSW = 0; 则所有的 LED SEG/COM 口做为显示口, 继续刚才的 LED 扫描 这一位对于按键扫描非常有用 ; 程序可以先启动 LED 显示控制, 当需要扫描按键的时候, 设置 MODSW = 1, 用 IO 扫描按键, 在极短的时间内, 扫描按键完成后, 设置 MODSW = 0, 继续显示 LED 74

75 Table 8.14 SEG/COM 控制寄存器 D7H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SHARECON SHARE.2 SHARE.1 SHARE.0 读 / 写 读 / 写读 / 写读 / 写 SHARE.2 1 SHARE.1 0 SHARE.0 Table 8.15 LED 时钟控制寄存器 P1.2 Drive/sink 使能控制位 0:P1.2 使用 OP_SEG/IO 作为使能控制位 1:P1.2 使用 OP_COM/IO 作为使能控制位 P3.0 Drive/sink 使能控制位 0:P3.0 使用 OP_SEG/IO 作为使能控制位 1:P3.0 使用 OP_COM/IO 作为使能控制位 P3.1 Drive/sink 使能控制位 0:P3.1 使用 OP_SEG/IO 作为使能控制位 1:P3.1 使用 OP_COM/IO 作为使能控制位 DCH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 DISPCLK DCK0.7 DCK0.6 DCK0.5 DCK0.4 DCK0.3 DCK0.2 DCK0.1 DCK0.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 DCK0[7:0] Table 8.16 COM 扫描宽度控制寄存器 LED 时钟选择位 LED 时钟宽度 = 系统时钟宽度 *8*DISPCLK DEH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 DISCOM DCOM.7 DCOM.6 DCOM.5 DCOM.4 DCOM.3 DCOM.2 DCOM.1 DCOM.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 DCOM[7:0] LED 单 COM 扫描宽度选择位单 COM 扫描宽度 = LED 时钟宽度 *DISCOM 75

76 注意 : T LED 为 LED 时钟宽度,T SYS 为系统时钟宽度,T B 为 LED 扫描时间宽度 T LED = T SYS *8*DISPCLK T B = (T LED *DISCOM)*S S 为 LED 扫描的 COM 数量 : 扫描 4COM 即 S = 4, 扫描 5COM 即 S = 5, 以此类推 以需要显示的 LED 帧频 64Hz 为例, 当 LED 为 5COM 且系统时钟为 RC 16.6MHz 时 : 设置 LEDMODE = 01 时,LED 显示为共阴模式 ; 如果设置 DISPCLK 为 96H(DISPCLK 理论上越小越好, 但是也要保证 TKCOUNT,DISCOM,TKWAIT 不会溢出 ) T LED = T SYS *8*DISPCLK = 60.24ns*8*150 = 72288ns = us = ms 需要设置 T B = 1/64s = ms DISCOM = T B /s/t LED = ms/5/ = 43 = 2BH 以上举例 LEDMODE 皆为共阴模式, 其算法共阴模式和共阴 / 共阳模式都通用, 故不再举例再做叙述 TK & LED 触摸按键和 LED 能够达到 share 的效果, 效果如下 : C:3.125ms LEDB LEDB LEDB LEDB COM1 LED ALL:15.625ms LED ALL:15.625ms COM2 COM3 SEG1 SEG2 LED TKA C:1.525ms LEDB TKA LEDB COM1 TK ALL:8ms LED ALL:7.625ms COM2 ALL:15.625ms COM3 SEG1 SEG2 TK & LED (SHARE) 76

77 Table 8.17 SEG 模式选择寄存器 DAH-ABH 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 SEG01 (DAH) SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 SEG02 (DBH) SEG15 SEG14 SEG13 SEG12 SEG 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 SEG[15:0] SEG 口模式选择位 (x = 0-7) 0:P1.2,P1.7,P2.0-P2.7,P3.1 作为 I/O 1:P1.2,P1.7,P2.0-P2.7,P3.1 作为 Segment (LED_S0-LED_S7,LED_S11- LED_S15) 注意 :SH79F3218 的 VCC_IN 有最大流过电流限制 ( 详见电气参数章节 ), 使能 8 个以上 SEG, 请注意评估流过 V DD 的电流 Table 8.18 COM 模式选择寄存器 DDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 LEDCOM - COM7 COM6 COM5 COM4 COM3 COM2 COM1 读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 COM[7:1] COM 口模式选择位 (x = 0-7) 0:P0.7,P1.0-P1.4,P3.1 作为 I/O 1:P0.7,P1.0-P1.4,P3.1(LED_C1 - LED_C7) 注意 :SH79F3218 的 GND 有最大流过电流限制 ( 详见电气参数章节 ), 使能 4 个以上 COM, 请注意评估流过 GND 电流 LED 扫描不支持单 COM 模式 例如 : 当 LED 工作在共阳模式 SEG01 = 0xAA;SEG02 = 0x50;LEDCOM = 0x55; 则 SEG1,SEG3,SEG5,SEG7,SEG12,SEG14 做为 LED 显示中的 SEG 管脚 ;COM1,COM3,COM5,COM7 作为显示的 COM 管脚 ; 当 LED RAM COM1H,COM3H,COM5H,COM7H 中相应的 bit 为 1, 则相对应的 LED 点亮 ; 当 LED RAM COM1H,COM3H, COM5H,COM7H 中相应的 bit 为 0, 则相对应的 LED 熄灭 当 LED 工作在共阴模式 SEG01 = 0xAA;SEG02 = 0x50;LEDCOM = 0x55; 则 SEG1,SEG3,SEG5,SEG7,SEG12,SEG14 做为 LED 显示中的 SEG 管脚 ;COM1,COM3,COM5,COM7 作为显示的 COM 管脚 ; 当 LED RAM COM1L,COM3L,COM5L,COM7L 中相应的 bit 为 1, 则相对应的 LED 点亮 ; 当 LED RAM COM1L,COM3L, COM5L,COM7L 中相应的 bit 为 0, 则相对应的 LED 熄灭 当 LED 工作在共阴 / 共阳模式 SEG01 = 0xAA;SEG02 = 0x50;LEDCOM = 0x55; 则 SEG1,SEG3,SEG5,SEG7,SEG12,SEG14 做为 LED 显示中的 SEG 管脚 ;COM1,COM3,COM5,COM7 作为显示的 COM 管脚 ; 当 LED RAM COM1L,COM3L,COM5L,COM7L 中相应的 bit 为 1, 则相对应的共阴 LED 点亮 ; 当 LED RAM COM1L,COM3L, COM5L,COM7L 中相应的 bit 为 0, 则相对应的共阴 LED 熄灭 ; 当 LED RAM COM1H,COM3H,COM5H,COM7H 中相应的 bit 为 1, 则相对应的共阳 LED 点亮 ; 当 LED RAM COM1H, COM3H,COM5H,COM7H 中相应的 bit 为 0, 则相对应的共阳 LED 熄灭 77

78 Table 8.19 辉度选择寄存器 DFH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 LIGHTCOM CC3 CC2 CC1 读 / 写 读 / 写读 / 写读 / 写 CC[3:1] 辉度选择位 000:COM 宽度 100% 001:COM 宽度 87.5% 010:COM 宽度 75% 011:COM 宽度 62.5% 100:COM 宽度 50% 101:COM 宽度 37.5% 110:COM 宽度 25% 111:COM 宽度 12.5% 78

79 8.2.2 LED RAM 配置 LED 1/4 占空比 (LED_C1 - C4,LED_S1 - S8,LED_S11 - S15) 地址 H COM1L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 531H COM1L SEG15 SEG14 SEG13 SEG12 SEG H COM1H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 533H COM1H SEG15 SEG14 SEG13 SEG12 SEG H COM2L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 535H COM2L SEG15 SEG14 SEG13 SEG12 SEG H COM2H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 537H COM2H SEG15 SEG14 SEG13 SEG12 SEG H COM3L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 539H COM3L SEG15 SEG14 SEG13 SEG12 SEG AH COM3H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 53BH COM3H SEG15 SEG14 SEG13 SEG12 SEG CH COM4L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 53DH COM4L SEG15 SEG14 SEG13 SEG12 SEG EH COM4H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 53FH COM4H SEG15 SEG14 SEG13 SEG12 SEG H COM5L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 541H COM5L SEG15 SEG14 SEG13 SEG12 SEG H COM5H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 543H COM5H SEG15 SEG14 SEG13 SEG12 SEG H COM6L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 545H COM6L SEG15 SEG14 SEG13 SEG12 SEG H COM6H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 547H COM6H SEG15 SEG14 SEG13 SEG12 SEG H COM7L SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 549H COM7L SEG15 SEG14 SEG13 SEG12 SEG AH COM7H SEG7 SEG6 SEG5 SEG4 SEG3 SEG2 SEG1 SEG0 54BH COM7H SEG15 SEG14 SEG13 SEG12 SEG

80 LEDMODE = 00: t ol COM1 COM2 COM3 COM4 SSEG1 t ol SSEG2 LEDMODE = 01: tol COM1 COM2 COM3 COM4 SSEG1 tol SSEG2 80

81 LEDMODE = 1X: tol tol COM1 COM2 COM3 COM4 SSEG1 tol tol SSEG2 注意 :t OL 为 LED Common 信号间的重叠时间, 取值范围 :1 个 LED Clock 图中阴影部分为 COM 口 floating 状态 81

82 8.3 Touch Key 触摸按键功能与 LED 共享功能 START SETUP LED FREQUENCY AND LIGHTENESS AND DISPLAY PROPERTIES TKCON = 1 SHARE=1 LEDON=1 CHOSE CHANNELS REGISTER: TKU1 FUNCTION REGISTER: VREF[0:1],VTK[0:1],CMPD[0:1],VTK[0:1],RANDOM[0:1],TKST[0:7],FSW[0:1],TKRANDOM[0:7] 28Bit AMPLIFICATION FACTOR REGISTER: TKDIV01~TKDIV04 DELAY 10uS TKGO=1 WATING FOR THE TOUCH-KEY INTERRUPT PRODUCE OR SCANNING TKIF. NO TOUCH KEY INTERRUPT IF IFERR =1 IF IFAVE=1 IF IFGO =1 IF IFCOUNT =1 IF IFTKOV =1 IFERR= 0 IFAVE = 0 IFGO = 0 IFGO = 0 IFTKOV = 0 CHANGE 28Bit AMPLIFICATION FACTOR REGISTER READ 16 Bit DATA REGISTER MINISH C1 CHANGE TKCOUNT SCAN LED COM1~7 WAIT TKWAIT TKGO =1 NO YES 寄存器流程图 82

83 8.3.1 功能描述 SH79F3218 内建触摸按键功能模块, 最大能连接 8 个按键 当 LED SHARE 功能开启时, 触摸按键功能最大只能连接 8 个按键,COM1 - COM7 作为 LED 功能 COM 用 需要注意,SHARE 功能开启, 在触摸按键功能将数据存数完毕后, 将会切换到 LED 扫描功能, 扫描完 COM1 - COM7( 选中的 4 个 COM), 会有一段设置的 TKWAIT 时间, 如果 TKGO 在 TKWAIT 结束前被置 1, 会自动重新开启触摸按键功能, 开始重新一轮的扫描按键及 LED 触摸按键启动扫描步骤 : (1) LED 设置 :SEG01-02 = 0FFH,LEDCOM = 7FH, 设置 LED 显示 RAM (2) 设置 LED 扫描频率和 LED 显示辉度和占空比 (3) 寄存器 TKCON 位置 1, 允许触摸按键模块工作 (4) 设置开关频率, 参考电压 V REF,OP 输出电压, 按键采样次数, 需要扫描的按键顺序, 扫描按键时钟宽度, 开启 touch key & LED share 功能 :FSW[0:1],VREF[0:1],CMPD[0:1],VTK[0;1],TKU1-TKU3,SHARE = 1,LEDON = 1 (5) 设置 28 位放大系数寄存器 :DIV01-04 (6) 软件延时 10uS (7) 寄存器 TKGO/D ---- Ō --- N ---- Ē --- 位置 1, 启动按键扫描 ; 程序查询中断标志位,TKGO 硬件自动清 0 中断标志位判断 :IFERR,IFGO,IFAVE,IFLED,IFTKOV 如果 IFAVE = 1, 读数据寄存器 500H-527H, 程序保存数据结果, 执行步骤 9; 如果 IFERR = 1, 数据寄存器运算溢出错误, 清 IFERR 和标志位, 重新设置放大系数寄存器值, 减小放大系数值, 返回步骤 6 重新启动扫描 ; 如果 IFGO = 1, 按键控制器启动错误, 清 IFGO 和标志位, 返回步骤 7 重新启动扫描 ; 如果 IFCOUNT = 1, 按键扫描计数溢出错误, 清 IFCOUNT 和标志位, 减小电容 C1 或者减少平均次数 返回步骤 7, 重新启动扫描 中断产生 ( 如果 TKIE = 1), 或程序查询中断标志位,TKGO 硬件自动清 0 (8) 触摸按键功能模块 : 触摸按键功能扫描完毕,IFTKOV = 0, 在按键时钟宽度时间结束后, 执行步骤 9; 触摸按键功能扫描未完成,IFTKOV = 1, 在扫描按键结束后执行步骤 9 (9) LED 扫描模块开启 : 开始扫描 COM1-COM7( 选中的 4 个 COM) (10) LED 扫描完成后, 等待 TKWAIT 时间 (11) TKWAIT 时间完成前, 如果 TKGO/D ---- Ō --- N ---- Ē --- 位置 1, 在 TKWAIT 完成后, 自动重新触摸按键扫描, 如果 TKGO/D ---- Ō --- N ---- Ē --- 位为 0, 触摸按键不启动, 但是 LED 扫描和 TKWAIT 时间仍然循环, 直至 TKGO/D ---- Ō --- N ---- Ē --- 位置 1, 下个周期再次启动触摸按键 83

84 TOUCHKEY 的工作模式表 TOUCHKEY 和 LED 按照是否 SHARE, 可以分成三种工作模式, 如下表所示 : TKCON LED_ON SHARE 工作模式 TOUCHKEY 单独工作 TOUCHKEY 和 LED 各单独工作 TOUCHKEY 和 LED 的 SHARE 模式,LED 不工作 TOUCHKEY 和 LED 的 SHARE 模式,LED 工作 0 1 X LED 单独工作模式 0 0 X TOUCHKEY 和 LED 都不工作 SEG 口的 SHARE 列表如下表所示, 为 SEG 口的控制信号 TKCON LED_ON SHARE TK_STA 0: TK; 1: LED PXSS SEGX PX 1 X 0 X 0 0 普通 IO 口 1 X 0 X 0 1 LED 口 1 X 0 X 1 X TK 口 0 X X X 0 0 普通 IO 口 0 X X X 0 1 LED 口 0 X X X 1 X TK 口 1 X X 普通 IO 口 1 X X TK 口 1 X 1 1 X 0 普通 IO 口 1 X 1 1 X 1 LED 口 84

85 8.4 脉冲宽度调制 (PWM) 特性 两路 12 位精度 PWM 模块 提供每个 PWM 周期溢出中断 输出极性可选择 内建 2 路 12 位 PWM 模块 PWM 模块可以产生 2 路周期和占空比分别可以调整的脉宽调制波形 PWMxEN(x = 1-2) 位用于使能 2 路 PWM 模块 PWMxCON(x = 1-2) 控制 PWMx 模块的时钟源 输出极性 周期中断等 寄存器 PWMxPH/L(x = 1-2) 用于设置 PWMx 模块的周期, 寄存器 PWMxDH/L(x = 1-2) 用于设置 PWMx 模块的占空比 PWM 允许寄存器 Table 8.20 PWM[1:2] 定时器允许寄存器 E8H,E9H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1CON (E8H) PWM1EN PWM1S PWM1CK1 PWM1CK0 - PWM1IE PWM1IF PWM1SS PWM2CON (E9H) PWM2EN PWM2S PWM2CK1 PWM2CK0 - PWM2IE PWM2IF PWM2SS 读 / 写读 / 写读 / 写读 / 写读 / 写 - 读 / 写读 / 写读 / 写 PWMxEN 6 PWMxS PWMx 使能位 0: 禁止 PWMx 模块 1: 允许 PWMx 模块 PWMx 输出模式 0:PWMx 占空比期间输出高电平, 占空比溢出后输出低电平 1:PWMx 占空比期间输出低电平, 占空比溢出后输出高电平 5-4 PWMxCK[1:0] 2 PWMxIE 1 PWMxIF 0 PWMxSS PWMx 时钟选择位 00: 系统时钟 /1 01: 系统时钟 /2 10: 系统时钟 /4 11: 系统时钟 /8 PWMx 中断使能位 0: 禁止 PWMx 周期中断 1: 允许 PWMx 周期中断 PWMx 中断标志位 0:PWMx 周期计数器没有溢出 1:PWMx 周期计数器溢出, 由硬件置 1 PWMx 引脚输出控制位 0:PWMx 输出禁止, 用作 I/O 等功能 1:PWMx 输出允许 注意 : 当 PWMEN 清 0 后,PWM 输出立即关闭 85

86 Table 8.21 PWM1 周期寄存器 PWM1PH/L EAH,EBH,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1PH (EAH) PWM1P.11 PWM1P.10 PWM1P.9 PWM1P.8 PWM1PL (EBH) PWM1P.7 PWM1P.6 PWM1P.5 PWM1P.4 PWM1P.3 PWM1P.2 PWM1P.1 PWM1P.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PWM1P[11:0] PWM1 数据寄存器 注意 :PWM1 的计数器计满至 PWM1PH/L 中的值后归零, 若 PWM1PH/L 为 0 时, 如果 PWM1S 为 0, 则 PWM1 引脚输出低电平 ; 如果 PWM1S 为 1, 则 PWM1 引脚输出高电平 Table 8.22 PWM2 周期寄存器 PWM2PH/L ECH,EDH,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM2PH (ECH) PWM2P.11 PWM2P.10 PWM2P.9 PWM2P.8 PWM2PL (EDH) PWM2P.7 PWM2P.6 PWM2P.5 PWM2P.4 PWM2P.3 PWM2P.2 PWM2P.1 PWM2P.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PWM2P[11:0] PWM2 数据寄存器 注意 : PWM2 的计数器计满至 PWM2PH/L 中的值后归零, 若 PWM2PH/L 为 0 时, 如果 PWM2S 为 0, 则 PWM2 引脚输出低电平 ; 如果 PWM2S 为 1, 则 PWM2 引脚输出高电平 修改寄存器 PWMxPH 将使得 PWMx 的输出在下一个周期生效 用户需先修改 PWMxPL, 再修改 PWMxPH 以修改 PWM 周期 Table 8.23 PWM1 占空比寄存器 PWM1DH/L E4H,E5H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1DH (E4H) PWM1D.11 PWM1D.10 PWM1D.9 PWM1D.8 PWM1DL (E5H) PWM1D.7 PWM1D.6 PWM1D.5 PWM1D.4 PWM1D.3 PWM1D.2 PWM1D.1 PWM1D.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PWM1D[11:0] PWM1 占空比控制, 控制 PWM1 波形占空比的输出时间 1. 当 PWM1P PWM1D 时如果 PWM1S = 0, 则 PWM1 引脚输出高电平如果 PWM1S = 1, 则 PWM1 引脚输出低电平 2. 当 PWM1D = 00H 时如果 PWM1S = 0, 则 PWM1 引脚输出低电平如果 PWM1S = 1, 则 PWM1 引脚输出高电平 86

87 Table 8.24 PWM2 占空比寄存器 PWM2DH/L E6H,E7H,Bank1 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM2DH (E6H) PWM2D.11 PWM2D.10 PWM2D.9 PWM2D.8 PWM2DL (E7H) PWM2D.7 PWM2D.6 PWM2D.5 PWM2D.4 PWM2D.3 PWM2D.2 PWM2D.1 PWM2D.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PWM2D[11:0] PWM2 占空比控制, 控制 PWM2 波形占空比的输出时间 1. 当 PWM2P PWM2D 时如果 PWM2S = 0, 则 PWM2 引脚输出高电平如果 PWM2S = 1, 则 PWM2 引脚输出低电平 2. 当 PWM2D = 00H 时如果 PWM2S = 0, 则 PWM2 引脚输出低电平如果 PWM2S = 1, 则 PWM2 引脚输出高电平 注意 : 修改寄存器 PWMxDH 将使得 PWMx 的输出在下一个周期生效 用户需先修改 PWMxDL, 再修改 PWMxDH 以修改 PWM 占空比 注意事项 : (1) PWMxEN 位控制 PWMx 模块打开 (2) PWMxSS(x = 1-2) 位能选择端口是作为 I/O 端口还是 PWM 输出端口 (3) 在 IEN1 寄存器中的 EPWMx 位和 PWMxCON 寄存器中的 PWMxIE 位允许 / 禁止 PWMx 中断 (4) 如果 PWMENx 置 1,PWM 模块打开, 但 PWMxSS(x = 1-2)= 0,PWMx 输出关闭, 此时 PWMx 模块可以用作一个 12bit timer, 此时如果中断控制寄存器 IEN1 的 EPWMx 位置 1 且 PWMxIF = 1, 则 PWMx 中断照样发生 87

88 D 7E 7F 80 EF F PWM clock t PWM PWMx output (PWMxS=0) PWMx output (PWMxS=1) PWMxP = F0H PWMxD = 7FH PWM output duty cycle = 7FH X t PWM PWM output period cycle = F0H X t PWM PWM 输出范例 A 0B 0C 0D 0E 0F A 0B 0C 0D PWMx clock t PWM Write PWMxP = 0DH Write PWMxD = 07H PWMx output (PWMxS=0) Duty cycle = 06H X t PWM Duty cycle Duty cycle = 06H X t PWM = 07H X t PWM Period cycle = 0FH X t PWM Period cycle = 0DH X t PWM PWM 输出周期或者占空比改变范例 88

89 8.5 增强型通用异步收发器 (EUART) 特性 自带波特率发生器的 EUART 波特率发生器就是一个 15 位向上计数器 增强功能包括帧出错检测及自动地址识别 EUART 有四种工作方式 工作方式 EUART 有 4 种工作方式 在通信之前用户必须先初始化 SCON, 选择方式和波特率 在所有四种方式中, 任何将 SBUF 作为目标寄存器的写操作都会启动发送 在方式 0 中由条件 RI = 0 和 REN = 1 初始化接收 这会在 TXD 引脚上产生一个时钟信号, 然后在 RXD 引脚上移 8 位数据 在其它方式中由输入的起始位初始化接收 ( 如果 RI = 0 和 REN = 1) 外部发送器通信以发送起始位开始 EUART 工作方式列表 SM0 SM1 方式类型波特率帧长度起始位停止位第 9 位 同步 f SYS /(4 或 12) 8 位无无无 异步自带波特率发生器的溢出率 /16 10 位 1 1 无 异步 f SYS /(32 或 64) 11 位 1 1 0, 异步自带波特率发生器的溢出率 /16 11 位 1 1 0,1 方式 0: 同步, 半双工通讯 方式 0 支持与外部设备的同步通信 在 RXD 引脚上收发串行数据 TXD 引脚发送移位时钟 SH79F3218 提供 TXD 引脚上的移位时钟 因此这种方式是串行通信的半双工方式 在这个方式中, 每帧收发 8 位, 低位先接收或发送 通过置 SM2 位 (SCON.5) 为 0 或 1, 波特率固定为系统时钟的 1/12 或 1/4 当 SM2 位等于 0 时, 串行端口以系统时钟的 1/12 运行 当 SM2 位等于 1 时, 串行端口以系统时钟的 1/4 运行 与标准 8051 唯一不同的是,SH79F3218 在方式 0 中有可变波特率 功能块框图如下图所示 数据通过 RXD 引脚移入和移出串行端口 移位时钟由 TXD 引脚输出 Transmit Shift Register System Clock 12 4 Write to SBUF TX START Internal Data Bus TX SHIFT PARIN LOAD CLOCK SOUT RXD SM2 0 1 TX CLOCK SERIAL CONTROLLER TI RI Serial Port Interrupt RX CLOCK SHIFT CLOCK TXD RI REN RX START LOAD SBUF RX SHIFT Read SBUF CLOCK RXD SIN PAROUT SBUF SBUF Receive Shift Register 89

90 任何将 SBUF 作为目标寄存器的写操作都会启动发送 下一个系统时钟 TX 控制块开始发送 数据转换发生在移位时钟的下降沿, 移位寄存器的内容逐次从左往右移位, 空位置 0 当移位寄存器中的所有 8 位都发送后,TX 控制模块停止发送操作, 然后在下一个系统时钟的上升沿将 TI 置位 (SCON.1) Write to SBUF RxD TxD D0 D1 D2 D3 D4 D5 D6 D7 TI Send Timing of Mode 0 REN(SCON.4) 置 1 和 RI(SCON.0) 清 0 初始化接收 下一个系统时钟启动接收, 在移位时钟的上升沿锁存数据, 接收转换寄存器的内容逐次向左移位 当所有 8 位数据都移到移位寄存器中后,RX 控制块停止接收, 在下一个系统时钟的上升沿 RI 置位, 直到被软件清零才允许下一次接收 RxD D0 D1 D2 D3 D4 D5 D6 D7 TxD RI 方式 1:8 位 EUART, 可变波特率, 异步全双工 Receive Timing of Mode 0 方式 1 提供 10 位全双工异步通信,10 位由一个起始位 ( 逻辑 0),8 个数据位 ( 低位为第一位 ) 和一个停止位 ( 逻辑 1) 组成 在接收时, 这 8 个数据位存储在 SBUF 中而停止位储存在 RB8(SCON.2) 中 方式 1 中的波特率固定为自带波特率发生器溢出率的 1/16 功能块框图如下图所示 Transmit Shift Register STOP Baud rate Generator Write to SBUF Internal Data Bus PARIN START LOAD SOUT TXD overflow From 7FFF to 0000 TX START TX SHIFT CLOCK 16 TX CLOCK 16 SERIAL CONTROLLER TI RI Serial Port Interrupt RX CLOCK SAMPLE LOAD SBUF 1-TO-0 RX START RX SHIFT Read SBUF DETECTOR RXD BIT DETECTOR CLOCK SIN PAROUT D8 SBUF RB8 Internal Data Bus Receive Shift Register 90

91 任何将 SBUF 作为目标寄存器的写操作都会启动发送, 实际上发送是从 16 分频计数器中的下一次跳变之后的系统时钟开始的, 因此位时间与 16 分频计数器是同步的, 与对 SBUF 的写操作不同步 起始位首先在 TXD 引脚上移出, 然后是 8 位数据位 在发送移位寄存器中的所有 8 位数据都发送完后, 停止位在 TXD 引脚上移出, 在停止位发出的同时 TI 标志置位 Write to SBUF TxD Shift CLK Start D0 D1 D2 D3 D4 D5 D6 D7 Stop TI Send Timing of Mode 1 只有 REN 置位时才允许接收 当 RXD 引脚检测到下降沿时串行口开始接收串行数据 为此,CPU 对 RXD 不断采样, 采样速率为波特率的 16 倍 当检测下降沿时,16 分频计数器立即复位, 这有助于 16 分频计数器与 RXD 引脚上的串行数据位同步 16 分频计数器把每一位的时间分为 16 个状态, 在第 状态时, 位检测器对 RXD 端的电平进行采样 为抑制噪声, 在这 3 个状态采样中至少有 2 次采样值一致数据才被接收 如果所接收的第一位不是 0, 说明这位不是一帧数据的起始位, 该位被忽略, 接收电路被复位, 等待 RXD 引脚上另一个下降沿的到来 若起始位有效, 则移入移位寄存器, 并接着移入其它位到移位寄存器 8 个数据位和 1 个停止位移入之后, 移位寄存器的内容被分别装入 SBUF 和 RB8 中,RI 置位, 但必须满足下列条件 : (1) RI = 0 (2) SM2 = 0 或者接收的停止位 = 1 如果这些条件被满足, 那么停止位装入 RB8,8 个数据位装入 SBUF,RI 被置位 否则接收的帧会丢失 这时, 接收器将重新去探测 RXD 端是否另一个下降沿 用户必须用软件清零 RI, 然后才能再次接收 RxD Start D0 D1 D2 D3 D4 D5 D6 D7 Stop Bit Sample Shift CLK RI Receive Timing of Mode 1 91

92 方式 2:9 位 EUART, 固定波特率, 异步全双工 这个方式使用异步全双工通信中的 11 位 一帧由一个起始位 ( 逻辑 0),8 个数据位 ( 低位为第一位 ), 一个可编程的第 9 数据位和一个停止位 ( 逻辑 1) 组成 方式 2 支持多机通信和硬件地址识别 ( 详见多机通讯章节 ) 在数据传送时, 第 9 数据位 (SCON 中的 TB8) 可以写 0 或 1, 例如, 可写入 PSW 中的奇偶位 P, 或用作多机通信中的数据 / 地址标志位 当接收到数据时, 第 9 数据位移入 RB8 而停止位不保存 PCON 中的 SMOD 位选择波特率为系统工作频率的 1/32 或 1/64 功能块框图如下所示 Transmit Shift Register System Clock TB8 D8 STOP 2 Write to SBUF Internal Data Bus PARIN START LOAD SOUT TXD SMOD 0 1 TX START TX SHIFT CLOCK TX CLOCK SERIAL CONTROLLER TI RI Serial Port Interrupt SAMPLE RX CLOCK LOAD SBUF 1-TO-0 DETECTOR RX START RX SHIFT Read SBUF CLOCK PAROUT SBUF Internal Data Bus RXD BIT DETECTOR SIN D8 RB8 Receive Shift Register 任何将 SBUF 作为目标寄存器的写操作都会启动发送, 同时也将 TB8 载入到发送移位寄存器的第 9 位中 实际上发送是从 16 分频计数器中的下一次跳变之后的系统时钟开始的, 因此位时间与 16 分频计数器是同步的, 与对 SBUF 的写操作不同步 起始位首先在 TXD 引脚上移出, 然后是 9 位数据 在发送转换寄存器中的所有 9 位数据都发送完后, 停止位在 TXD 引脚上移出, 在停止位开始发送时 TI 标志置位 Write to SBUF TxD Start D0 D1 D2 D3 D4 D5 D6 D7 D8 Stop Shift CLK TI Send Timing of Mode 2 92

93 只有 REN 置位时才允许接收 当 RXD 引脚检测到下降沿时串行口开始接收串行数据 为此,CPU 对 RXD 不断采样, 采样速率为波特率的 16 倍 当检测下降沿时,16 分频计数器立即复位 这有助于 16 分频计数器与 RXD 引脚上的串行数据位同步 16 分频计数器把每一位的时间分为 16 个状态, 在第 状态时, 位检测器对 RXD 端的电平进行采样 为抑制噪声, 在这 3 个状态采样中至少有 2 次采样值一致数据才被接收 如果所接收的第一位不是 0, 说明这位不是一帧数据的起始位, 该位被忽略, 接收电路被复位, 等待 RXD 引脚上另一个下降沿的到来 若起始位有效, 则移入移位寄存器, 并接着移入其它位到移位寄存器 9 个数据位和 1 个停止位移入之后, 移位寄存器的内容被分别装入 SBUF 和 RB8 中,RI 置位, 但必须满足下列条件 : (1) RI = 0 (2) SM2 = 0 或者接收的第 9 位 = 1, 且接收的字节符合实际从机地址 如果这些条件被满足, 那么第 9 位移入 RB8,8 位数据移入 SBUF,RI 被置位 否则接收的数据帧会丢失 在停止位的当中, 接收器回到寻找 RXD 引脚上的另一个下降沿 用户必须用软件清除 RI, 然后才能再次接收 RxD Start D0 D1 D2 D3 D4 D5 D6 D7 D8 Stop Bit Sample Shift CLK RI Receive Timing of Mode 2 方式 3:9 位 EUART, 可变波特率, 异步全双工 方式 3 使用方式 2 的传输协议以及方式 1 的波特率产生方式 Transmit Shift Register STOP Baud rate Generator Write to SBUF Internal Data Bus PARIN START LOAD SOUT TXD overflow From 7FFF to 0000 TX START TX SHIFT CLOCK 16 TX CLOCK 16 SERIAL CONTROLLER TI RI Serial Port Interrupt RX CLOCK SAMPLE LOAD SBUF 1-TO-0 DETECTOR RX START RX SHIFT Read SBUF CLOCK PAROUT SBUF Internal Data Bus RXD BIT DETECTOR SIN D8 RB8 Receive Shift Register 93

94 8.5.3 可微调波特率 EUART 自带一个波特率发生器, 它实质上就是一个 15 位递增计数器 Fsys 15-bit timer Overflow From 7FFFH to 0000H To EUART SBRTEN=1 SBRTH[14:8],SBRTL7:0] Baudrate Generator for EUART 由图得到, 波特率发生器的溢出率为 SBRToverflowrate = Fsys, SBRT = [SBRTH, SBRTL] SBRT 因此,EUART 在各模式下的波特率计算公式如下 在方式 0 中, 波特率可编程为系统时钟的 1/12 或 1/4, 由 SM2 位决定 当 SM2 为 0 时, 串行端口在系统时钟的 1/12 下运行 当 SM2 为 1 时, 串行端口在系统时钟的 1/4 下运行 在方式 1 和方式 3 中, 波特率可微调, 精度为一个系统时钟, 公式如下 : BaudRate = 16 Fsys ( SBRT) + BFINE 例如 :Fsys = 8MHz, 需要得到 Hz 的波特率,SBRT 和 SFINE 值计算方法如下 : /16/ = 4.34 SBRT = = = /(16 X 4 + BFINE) BFINE = 此微调方式计算出的实际波特率为 , 误差为 0.64%; 以往方式计算出的波特率误差为 8.5% 在方式 2 中, 波特率固定为系统时钟的 1/32 或 1/64, 由 SMOD 位 (PCON.7) 中决定 当 SMOD 位为 0 时,EUART 以系统时钟的 1/64 运行 当 SMOD 位为 1 时,EUART 以系统时钟的 1/32 运行 SMOD f BaudRate = 2 ( SYS 64 ) 94

95 8.5.4 多机通讯 软件地址识别 方式 2 和方式 3 具有适用于多机通讯功能 在这两个方式下, 接收的是 9 位数据, 第 9 位移入 RB8 中, 之后是停止位 可以这样设定 EUART: 当接收到停止位, 且 RB8 = 1 时, 串行口中断有效 ( 请求标志 RI 置位 ) 此时置位 SCON 寄存器的 SM2,EUART 工作在多机通讯模式 在多机通讯系统中, 按如下所述来使用这一功能 当主机要发送一数据块给几个从机中的一个时, 先发送一地址字节, 以寻址目标从机 地址字节与数据字节可用第 9 数据位来区别, 地址字节的第 9 位为 1, 数据字节的第 9 位为 0 如果从机 SM2 为 1, 则不会响应数据字节中断 地址字节可以使所有从机产生中断, 每一个从机都检查所接收到的地址字节, 以判别本机是不是目标从机 被寻到的从机对 SM2 位执行清零操作, 并准备接收即将到来的数据字节 当接收完毕时, 从机再一次将 SM2 置位 没有被寻址的从机, 则保持 SM2 位为 1, 不响应数据字节 注意 : 在方式 0 中,SM2 用来 2 倍频波特率 在方式 1 中,SM2 用来检测停止位是否有效, 如果 SM2 = 1, 接收中断不会响应直到接收到一个有效的停止位 自动 ( 硬件 ) 地址识别 在方式 2 和方式 3 中,SM2 置位,EUART 运行状态如下 : 接收到停止位,RB8 的第 9 位为 1( 地址字节 ), 且接收到的数据字节符合 EUART 的从机地址,EUART 产生一个中断 从机将 SM2 清零, 接收后续数据字节 第 9 位为 1 表明该字节是地址而非数据 当主机要发送一组数据给几个从机中的一个时, 必须先发送目标从机地址 所有从机等待接收地址字节, 为了确保仅在接收地址字节时产生中断,SM2 位必须置位 自动地址识别的特点是只有地址匹配的从机才能产生中断, 硬件完成地址比较 中断产生后, 地址匹配的从机清零 SM2, 继续接收数据字节 地址不匹配的从机不受影响, 将继续等待接收和它匹配的地址字节 全部信息接收完毕后, 地址匹配的从机应该再次把 SM2 置位, 忽略所有传送的非地址字节, 直到接收到下一个地址字节 使用自动地址识别功能时, 主机可以通过调用给定的从机地址选择与一个或多个从机通信 主机使用广播地址可以寻址所有从机 有两个特殊功能寄存器, 从机地址 (SADDR) 和地址屏蔽 (SADEN) 从机地址是一个 8 位的字节, 存于 SADDR 寄存器中 SADEN 用于定义 SADDR 各位的有效与否, 如果 SADEN 中某一位为 0, 则 SADDR 中相应位被忽略, 如果 SADEN 中某一位置位, 则 SADDR 中相应位将用于产生约定地址 这可以使用户在不改变 SADDR 寄存器中的从机地址的情况下灵活地寻址多个从机 从机 1 从机 2 SADDR SADEN( 为 0 的位被忽略 ) 约定地址 10100x0x 10100xx1 广播地址 (SADDR 或 SADEN) x 从机 1 和从机 2 的约定地址最低位是不同的 从机 1 忽略了最低位, 而从机 2 的最低位是 1 因此只与从机 1 通讯时, 主机必须发送最低位为 0 的地址 ( ) 类似地, 从机 1 的第 1 位为 0, 从机 2 的第 1 位被忽略 因此, 只与从机 2 通讯时, 主机必须发送第 1 位为 1 的地址 ( ) 如果主机需要同时与两从机通讯, 则第 0 位为 1, 第 1 位为 0, 第 2 位被两从机都忽略, 两个不同的地址用于选定两个从机 ( 和 ) 主机可以通过广播地址与所有从机同时通讯 这个地址等于 SADDR 和 SADEN 的位或, 结果中的 0 表示该位被忽略 多数情况下, 广播地址为 0xFFh, 该地址可被所有从机应答 系统复位后,SADDR 和 SADEN 两个寄存器初始化为 0, 这两个结果设定了约定地址和广播地址为 XXXXXXXX( 所有位都被忽略 ) 这有效地去除了多从机通讯的特性, 禁止了自动寻址方式 这样的 EUART 将对任何地址都产生应答, 兼容了不支持自动地址识别的 8051 控制器 用户可以按照上面提到的方法实现软件地址识别的多机通讯 95

96 8.5.5 帧出错检测 当寄存器 PCON 中的 SSTAT 位为逻辑 1 时, 帧出错检测功能才有效 3 个错误标志位被置位后, 只能通过软件清零, 尽管后续接收的帧没有任何错误也不会自动清零 注意 :SSTAT 位必须为逻辑 1 是访问状态位 (FE,RXOV 和 TXCOL),SSTAT 位为逻辑 0 时是访问方式选择位 (SM0,SM1 和 SM2) 发送冲突 如果在一个发送正在进行时, 用户软件写数据到 SBUF 寄存器时, 发送冲突位 (SCON 寄存器中的 TXCOL 位 ) 置位 如果发生了冲突, 新数据会被忽略, 不能被写入发送缓冲器 接收溢出 如果在接收缓冲器中的数据未被读取之前,RI 清零, 又有新的数据存入接收缓冲器, 那么接收溢出位 (SCON 寄存器中的 RXOV 位 ) 置位 如果发生了接收溢出, 接收缓冲器中原来的数据将丢失 帧出错 如果检测到一个无效 ( 低 ) 停止位, 那么帧出错位 ( 寄存器 SCON 中的 FE) 置位 注意 : 在发送之前 TXD 引脚必须被设置为输出高电平 寄存器 Table 8.25 电源控制寄存器 87H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PCON SMOD SSTAT - - GF1 GF0 PD IDL 读 / 写读 / 写读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 SMOD 6 SSTAT 波特率加倍器 0: 在方式 2 中, 波特率为系统时钟的 1/64 1: 在方式 2 中, 波特率为系统时钟的 1/32 SCON[7:5] 功能选择 0:SCON[7:5] 工作方式作为 SM0,SM1,SM2 1:SCON[7:5] 工作方式作为 FE,RXOV,TXCOL 3-2 GF[1:0] 用于软件的通用标志位 1 PD 掉电模式控制位 0 IDL 空闲模式控制位 96

97 Table 8.26 EUART 控制及状态寄存器 98H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SCON SM0 /FE SM1 /RXOV SM2 /TXCOL REN TB8 RB8 TI RI 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SM[0:1] 7 FE 6 RXOV EUART 串行方式控制位,SSTAT = 0 00: 方式 0, 同步方式, 固定波特率 01: 方式 1,8 位异步方式, 可变波特率 10: 方式 2,9 位异步方式, 固定波特率 11: 方式 3,9 位异步方式, 可变波特率 EUART 帧出错标志位, 当 FE 位被读时,SSTAT 位必须被设置位 0: 无帧出错, 由软件清零 1: 帧出错, 由硬件置位 EUART 接收溢出标志位, 当 RXOV 位被读时,SSTAT 位必须被置位 0: 无接收溢出, 由软件清零 1: 接收溢出, 由硬件置位 5 SM2 5 TXCOL 4 REN EUART 多处理机通讯允许位 ( 第 9 位 1 校验器 ),SSTAT = 0 0: 在方式 0 下, 波特率是系统时钟的 1/12 在方式 1 下, 禁止停止位确认检验, 任何停止位都会置位 RI 在方式 2 和 3 下, 任何字节都会置位 RI 1: 在方式 0 下, 波特率是系统时钟的 1/4 在方式 1 下, 允许停止位确认检验, 只有有效的停止位 (1) 才能置位 RI 在方式 2 和 3 下, 只有地址字节 ( 第 9 位 = 1) 才能置位 RI EUART 发送冲突标志位, 当 TXCOL 位被读时,SSTAT 位必须被置位 0: 无发送冲突, 由软件清零 1: 发送冲突, 由硬件置位 EUART 接收器允许位 0: 接收禁止 1: 接收允许 3 TB8 在 EUART 的方式 2 和 3 下发送的第 9 位, 由软件置位或清零 2 RB8 1 TI 0 RI 在 EUART 的方式 1,2 和 3 下接收的第 9 位在方式 0 下, 不使用 RB8 在方式 1 下, 如果接收中断发生, 停止位移入 RB8 在方式 2 和 3 下, 由第 9 位接收 EUART 的传送中断标志位 0: 由软件清零 1: 由硬件置位 EUART 的接收中断标志位 0: 由软件清零 1: 由硬件置位 97

98 Table 8.27 EUART 数据缓冲器寄存器 99H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SBUF SBUF.7 SBUF.6 SBUF.5 SBUF.4 SBUF.3 SBUF.2 SBUF.1 SBUF.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SBUF[7:0] Table 8.28 EUART 从机地址及地址屏蔽寄存器 这个寄存器寻址两个寄存器 : 一个移位寄存器和一个接收锁存寄存器 SBUF 的写入将发送字节到移位寄存器中, 然后开始传输 SBUF 的读取返回接收锁存器中的内容 9AH-9BH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SADDR (9AH) SADDR.7 SADDR.6 SADDR.5 SADDR.4 SADDR.3 SADDR.2 SADDR.1 SADDR.0 SADEN (9BH) SADEN.7 SADEN.6 SADEN.5 SADEN.4 SADEN.3 SADEN.2 SADEN.1 SADEN.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SADDR[7:0] 寄存器 SADDR 定义了 EUART 的从机地址 7-0 SADEN[7:0] Table 8.29 EUART 波特率发生器寄存器 寄存器 SADEN 是一个位屏蔽寄存器, 决定 SADDR 的哪些位被检验 0:SADDR 中的相应位被忽略 1:SADDR 中的相应位对照接收到的地址被检验 C7H,BFH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SBRTH (C7H) SBRTEN SBRT.14 SBRT.13 SBRT.12 SBRT.11 SBRT.10 SBRT.9 SBRT.8 SBRTL (BFH) SBRT.7 SBRT.6 SBRT.5 SBRT.4 SBRT.3 SBRT.2 SBRT.1 SBRT.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SBRTEN EUART 波特率发生器使能控制位 0: 关闭 ( 默认 ) 1: 打开 6-0,7-0 SBRT[14:0] EUART 波特率发生器计数器高 7 位和低 8 位寄存器 Table 8.30 EUART 波特率发生器微调寄存器 BEH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SFINE SFINE.3 SFINE.2 SFINE.1 SFINE.0 读 / 写 读 / 写读 / 写读 / 写读 / 写 SFINE[3:0] EUART 波特率发生器微调数据寄存器 98

99 8.6 TWI 串行通讯接口 特性 两线模式, 简单快捷 支持主机模式 (Master) 和从机模式 (Slave) 允许发送数据 (Transmitter) 和接收数据 (Receiver) 支持多主机通讯的仲裁功能 具有低电平总线超时判断 (Timeout) 空闲模式下可唤醒系统 地址可编程 TWI 串行总线采用两根线 (SDA 和 SCL) 在总线和装置之间传递信息 SH79F3218 完全符合 TWI 总线规范, 自动对字节进行传输进行处理, 并对串行通讯进行跟踪 TWI 功能需要 16.6MHz 系统频率, 当前系统周期为 128KHz/32.768K 时,OSC2 16.6MRC 不能关闭, 否则 TWI 无法通讯 典型 TWI 通讯如下图所示, 最高支持 128 个不同的器件进行通讯 VDD= 5V VDD= 5V VDD= 5V VDD=5V VDD= 5V Master Device 1 Slave Device 1 Slave Device 2 Master Device 2 SDA SCL 数据传输格式 数据传输格式 数据传输中数据线上每一位的传输均需要时钟线上一个脉冲 在时钟高电平时数据线应保持稳定 但发送起始条件和终止条件时不需要遵守此规则 和 I2C 通讯协议相似,TWI 定义了两个特殊的波形 : 起始条件和终止条件 在时钟线为高电平时数据线的下降沿定义为起始条件 ; 在时钟线为高电平时数据线的上升沿定义为终止条件 起始条件和终止条件均由主机发出 主机可以发起和终结一次传输 当主机发送一个起始条件时开始一次传输, 发送一个终止条件时结束本次传输 在起始条件和终止条件之间, 总线定义为 忙碌 状态 其它主机不应该去试图发起传输 在 忙碌 状态下, 如果主机再次发送起始条件, 则定义为 重复起始条件, 表示主机希望不放弃总线的情况下开始一次新的传输 发送重复起始条件后, 总线仍处于 忙碌 状态, 一直到总线出现终止条件 鉴于重复起始条件和起始条件性质完全一致, 除非特别声明, 本文中将采用起始条件来代替两者 所有数据包 ( 包括地址包 ) 均有 9 位组成, 包括 1 个字节和一个应答位 主机负责发出时钟和起始及终止条件, 接收者负责给出应答信号 接收者通过在第九个时钟脉冲处将数据线拉低发出 应答 (ACK) 信号 ; 或维持第九个脉冲处维持高电平表示 不应答 (NACK) 信号 当接收方接收到最后一个字节, 或因某种原因无法继续接收数据时, 应回应 不应答 (NACK) 信号 TWI 采用从高到低逐位进行传输 一次传输通常包括一个起始条件, 地址 + 读 / 写, 一个或多个数据包和一个终止条件 仅包含起始条件和终止条件的数据格式是不合通讯规则的 值得注意的是 线与 结构给主机和从机之间的握手信号提供了方便 当主机相对太快或从机需要处理其它事务时, 从机可以通过拉低时钟线来拉长时钟线的低电平时间, 从而降低通讯频率 从机可以拉长时钟线低电平周期但不会影响到时钟线高电平的周期 99

100 SDA SCL START STOP START Repeated START STOP 在产生应答信号时,SH79F3218 拉低 SDA 信号线 中断标志位置起期间,SH79F3218 拉低 SCL 信号线, 释放 SDA 信号线 中断处理完毕后清除 TWINT 标志, 释放 SCL 信号线 SDA Addr MSB Addr MSB R/W ACK Data MSB Data LSB ACK SCL START SLA+R/W Data Byte STOP 时钟同步 当多个主机同时希望控制总线时, 总线将依据 线与 原则决定时钟线高低电平 对于所有参与传输的主机来说, 定义清楚每一个时钟脉冲的起始是相当重要的 时钟线电平的由高到低跳变将导致所有参与传输的器件开始低电平计时 每一个器件计时达到自己低电平要求时释放时钟线, 在时钟线变为高电平之前进入高电平等待期 ; 当所有器件均计满低电平周期时, 时钟线才变为高电平 之后所有器件开始对高电平进行计时, 第一个计满高电平周期的器件将拉低时钟线, 进入下一个时钟周期 TAlow TAhigh SCL from Master A SCL from Master B SCL bus Line TBlow TBhigh Masters Start Counting Low Period Masters Start Counting High Period 100

101 数据仲裁 主机只有在总线处于 空闲 状态时才能开始一次传输 两个或多个主机可能在最小保持时间 (t HOLD:STA ) 内同时发送起始条件, 从而在总线上只看到一个起始条件 由于发送起始条件的主机无法知道是否有其它主机在竞争总线, 只能靠时钟高电平时对数据线的仲裁判断哪个主机占用总线 当有主机传输低电平时, 传输高电平的主机将失去仲裁, 必须放弃总线 失去仲裁的主机将继续发送时钟, 直到当前传输字节发送完毕 当两个主机同时访问一个从机时, 可能会顺利通过地址阶段, 在传输数据时将继续进行仲裁 这种机制要求所有 TWI 器件在进行数据传输时可以检测数据线上的真实状态 如果该主机同时开启了从机模式, 在发送地址阶段失去仲裁后应检测线上的地址是否与自己相匹配 ; 如果是对自己的访问, 应立即切换到从机模式, 接收信息 每次传输中, 仍要检测线上的 重复起始条件, 当检测到并非自己发出的 重复起始条件 时, 应立即退出当前传输 仲裁不应发生在如下情况 : (1) 重复起始条件和数据 (2) 终止条件和数据 (3) 重复起始条件和终止条件 DATA 1 Transmitter 1 loses arbitration DATA 2 SDA SCL S 功能描述下图描述了 TWI 通讯模块的详细结构 SCL SDA Bus Interface Unit START/ STOP Control Timeout/ Bus Free Detection Address/Data Shift Register (TWIDAT) ACK Arbitration Detection Bit Rate Generator Bit Rate Register (TWISTA) Address Match Unit Address Register (TWIADR) Address Comparator Control Register (TWICON) Status Register (TWISTA) Control Unit Status Machine and Status Control 101

102 总线接口单元 总线接口单元包括数据和地址移位寄存器 (TWIDAT), 开始 / 终止条件控制器, 仲裁和总线超时检测单元 寄存器 TWIDAT 存储了即将发送的数据或地址和接收到的数据和地址 开始 / 终止条件控制器负责发送和检测总线上的开始条件, 重复开始条件和终止条件 如果 SH79F3218 已经作为主机开始一次传输, 仲裁单元将始终检测是否有仲裁发生 当失去仲裁时, 控制单元可以进行合适的动作, 并产生相应的状态码 SH79F3218 在传输数据 / 地址时, 必须在 SCL 由低跳高前维持数据稳定 SH79F3218 在传输 ACK/NACK 时, 在 SCL 由低跳高后产生 TWINT 中断, 并在 SCL 由高跳低时拉低 SCL, 在 TWINT 中断清零时释放 SCL SH79F3218 在传输 ACK/NACK 信号时, 若 TWINT 已被清零,SCL 仍为高电平时,SDA 产生跳变, 则重新产生 TWINT 中断, 状态为 00H SH79F3218 当前通讯终止, 该状态与普通 00H 状态处理一致 SH79F3218 在传输 ACK/NACK 信号时, 若 TWINT 未被清零,SCL 仍为高电平时,SDA 产生跳变, 则状态直接切换到 00H, 不会再次产生中断 SH79F3218 作为从机进入该状态, 则当前通讯终止, 可发生 STA 开始主机传输, 或重新接受 STA+ADR 对自己地址的访问 SH79F3218 作为主机进入该状态, 则当前通讯终止, 可发生 STA 开始主机传输, 或重新接受 STA+ADR 对自己的访问 SH79F3218 在当前通讯终止后, 不会再参与当前传输 SH79F3218 若作为主机存在, 请开启 EFREE 功能, 防止进入逻辑死区 SH79F3218 规定总线维持为高电平超过 50us 时为 空闲 状态, 释放总线 该功能仅适用于一个数据包传输过程中 (8+1 个位 ) SH79F3218 处于从机发送模式, 且所传输的第一个字节为低电平时适用该功能 起始条件 (STA RSTA) 不适用于该功能 SH79F3218 产生中断, 寄存器 TWICON 中的 TFREE 会被置位 ( 如果控制位 EFREE 已置位 ) 如果时钟线 SCL 被从机拉低时, 通讯会暂时中止 ; 而主机也没有办法将时钟线拉高 为解决此问题,TWI 协议规定参与传输的所有器件将时钟线低电平超过 25ms 时定义为 总线超时, 寄存器 TWICON 中的 TOUT 会被置位 ( 如果控制位 ETOT 已置位 ) 10ms 内 TWI 模块将复位, 释放总线 频率生成单元在主机模式下, 可通过寄存器 TWICON 的 CR[1:0] 来设定通讯频率 通讯频率共有四个 :4KHz 16KHz 64KHz 100KHz (4MHz 时钟源 ) 地址匹配单元地址匹配单元检验所收到的地址是否与寄存器 TWIADR 中的 7 位地址相匹配 如果通用地址使能位 GC 被置位, 也将检测是否与通用地址 00H 相匹配 当地址匹配时, 控制单元将产生合适的动作及相应的状态码 控制单元控制单元监视 TWI 总线, 并依据控制寄存器 TWICON 的设置进行相应的回应 当 TWI 总线有需要应用层注意的事件时,TWI 中断标志被置起, 标明当前事件的状态码会被写入状态寄存器 TWISTA 状态寄存器 TWISTA 只表示 TWI 通讯中断产生时的通讯状态信息 ; 其它情况下状态寄存器内是一个用于表示没有有效状态码的状态码 在中断清除之前, 时钟线将维持低电平 应用软件可在处理完任务后才允许 TWI 通讯继续 传输模式 TWI 通讯是以字节为基础和中断驱动的通讯总线 诸如接收到一个字节或发送一个开始条件的所有总线事件均会产生一个中断 所以在字节传输期间, 应用软件可以进行其它的操作 需注意的是, 控制寄存器 TWICON 中的 TWI 使能位 ENTWI 和中断控制寄存器 IEN0 中的所有中断控制位 EA 和 TWI 中断控制位 ETWI 将共同决定 TWI 中断标志 TWINT 被置位时是否会产生中断 如果 ETWI 或 EA 未置位, 应用软件必须对 TWINT 标志进行枚举检测才能知道是否有 TWI 事件发生 当 TWINT 位置起时, 表示一次 TWI 传输已完成, 等待应用软件的回应, 此时状态寄存器 TWISTA 包含了当前的状态 应用软件可通过寄存器 TWICON 和 TWISTA 决定 TWI 进行哪种通讯 下面将分别介绍 TWI 通讯的四种主要模式, 并对所有可能的状态码进行了描述 下图中有如下缩写 : S : 开始条件 Ā : 无应答位 Rs : 重复开始条件 DATA :8 位数据 R : 读控制位 P : 终止条件 W : 写控制位 SLA : 从机地址 A : 应答位圆形用于表示中断标志已被置起 其中的数字表示当前状态寄存器 TWISTA 中被掩去低三位的状态码 在 TWINT 被清除之前,TWI 通讯会暂停, 应用软件必须决定是继续通讯还是终止当前传输 对每一个状态码, 所需要的软件动作和随后的传输细节均有描述 102

103 主机发送模式 主机发送模式中, 主机发送一系列数据到从机 为进入主机发送模式, 一个开始条件, 随后一个从机地址 + 写控制字 (SLA+W) 地址包表示进入主机发送模式 (MT) 通过设置控制寄存器 TWICON 中的 ENTWI 和 STA, 清除 STO 和 TWINT,TWI 逻辑将检测 TWI 总线并在允许时发出一个开始条件 (STA) 当开始条件 (STA) 传输完毕, 通讯中断 (TWINT) 被置起, 状态寄存器 (TWISTA) 为 08H, 中断服务程序应将从机地址和写控制字 (SLA+W) 写入数据寄存器 TWIDAT 在开启下一个传输前清除 TWINT 标志 当从机地址和写控制字传输完毕并收到一个 应答 信息时, 中断 (TWINT) 被置起, 状态寄存器 TWISTA 中有几个可能的状态 : 对主机模式有 18H,20H 和 38H, 对从机模式有 68H,78H 和 B0H 主机发送模式状态码 状态码 TWI 总线和硬件接口状态 读 / 写数据寄存器 TWIDAT 操作 应用软件响应 控制位操作 STA STO TW INT AA TWI 执行的下一个动作 08H 已发送开始条件写入 SLA+W X 0 0 X 发送 SLA+W, 接收 ACK 已发送重复开始写入 SLA+W X 0 0 X 发送 SLA+W, 接收 ACK 10H 条件写入 SLA+R X 0 0 X 发送 SLA+R,TWI 将切换到主机接收模式写入数据字节 X 发送数据, 接收 ACK 18H 20H 28H 30H 38H 已发送 SLA+W; 已接收 ACK 已发送 SLA+W; 已接收 NACK 已发送 TWIDAT 中数据 ; 已接收 ACK 已发送 TWIDAT 中数据 ; 已接收 NACK 在 SLA+W 或数据传输中丢失仲裁位 X 发送重复开始条件 无 TWIDAT 动作 X 发送终止条件 ; 清除 STO 标志 X 发送终止条件, 之后发送起始条件 ;STO 被清除 写入数据字节 X 发送数据, 接收 ACK X 发送重复开始条件 无 TWIDAT 动作 X 发送终止条件 ; 清除 STO 标志 X 发送终止条件, 之后发送起始条件 ;STO 被清除 写入数据字节 X 发送数据, 接收 ACK X 发送重复开始条件 无 TWIDAT 动作 X 发送终止条件 ; 清除 STO 标志 X 发送终止条件, 之后发送起始条件 ;STO 被清除 写入数据字节 X 发送数据, 接收 ACK 无 TWIDAT 动作 无 TWIDAT 动作 X 发送重复开始条件 X 发送终止条件 ; 清除 STO 标志 X 发送终止条件, 之后发送起始条件 ;STO 被清除 X TWI 总线被释放 ; 进入非寻址从机模式 X 在总线空闲时发送开始条件 103

104 Master Transmitter Successfull transmission to a slave receiver S SLA+W Ack DATA Ack P 08H 18H 28H Next transfer started with a repeated start condition S SLA+W 10H SLA+R Not acknowledge received after the slave address Nack P Master Receiver 20H Not acknowledge received after a data byte Nack P 30H Arbitration lost in slave address or data byte Ack or Nack Ack or Nack 38H Other Master Continue 38H Other Master Continue Arbitration lost and addressed as slave Ack 68H/78H/B0H To Corresponding state in slave mode Other Device Actions SH79F3218 Actions 104

105 主机接收模式 主机接收模式中, 主机从从机接收一系列数据 为进入主机接收模式, 一个开始条件, 随后一个从机地址 + 读控制字 (SLA+R) 地址包表示进入主机发送模式 (MR) 通过设置控制寄存器 TWICON 中的 ENTWI 和 STA, 清除 STO 和 TWINT,TWI 逻辑将检测 TWI 总线并在允许时发出一个开始条件 (STA) 当开始条件 (STA) 传输完毕, 通讯中断 (TWINT) 被置起, 状态寄存器 (TWISTA) 为 08H, 中断服务程序应将从机地址和读控制字 (SLA+R) 写入数据寄存器 TWIDAT 在开启下一个传输前清除 TWINT 标志 当从机地址和写控制字传输完毕并收到一个 应答 信息时, 中断 (TWINT) 被置起, 状态寄存器 TWISTA 中有几个可能的状态 : 对主机模式有 40H,48H 和 38H, 对从机模式有 68H,78H 和 B0H 主机接收模式状态码 状态码 TWI 总线和硬件接口状态 读 / 写数据寄存器 TWIDAT 操作 应用软件响应 控制位操作 STA STO TW INT AA 08H 已发送开始条件写入 SLA+R X 0 0 X 发送 SLA+R, 接收 ACK 10H 38H 40H 48H 50H 58H TWI 执行的下一个动作 写入 SLA+R X 0 0 X 发送 SLA+R, 接收 ACK 已发送重复开始条件写入 SLA+W X 0 0 X 发送 SLA+W,TWI 将切换到主机发送模式 发送 SLA+R 或 NACK 时失去仲裁 已发送 SLA+R; 已接收 ACK 已发送 SLA+R; 已接收 NACK 数据已接收 ; 已回应 ACK 数据已接收 ; 已回应 NACK 无 TWIDAT 动作 无 TWIDAT 动作 无 TWIDAT 动作 读取数据 读取数据 X TWI 总线被释放 ; 进入非寻址从机模式 X 在总线空闲时发送开始条件 接收数据, 返回 NACK 接收数据, 返回 ACK X 发送重复开始条件 X 发送终止条件 ; 清除 STO 标志 X 发送终止条件, 之后发送起始条件 ;STO 被清除 接收数据, 返回 NACK 接收数据, 返回 ACK X 发送重复开始条件 X 发送终止条件 ; 清除 STO 标志 X 发送终止条件, 之后发送起始条件 ;STO 被清除 105

106 Master Receiver Successfull reception from a slave transmitter S SLA+R Ack DATA Ack DATA Nack P Next transfer started with a repeated start condition 08H 40H 50H 58H S SLA+R 10H SLA+W Not acknowledge received after a data byte Nack P Master Transmitter 48H Arbitration lost in slave address or not acknowledged Ack or Nack 38H Other Master Continue Ack 38H Other Master Continue Arbitration lost and addressed as slave Ack Other Device Actions 68H/78H/B0H To Corresponding state in slave mode SH79F3218 Actions 106

107 从机发送模式 从机发送模式中, 从机发送一系列数据到主机 为初始化从机发送模式, 必须对控制寄存器 TWICON 和地址寄存器 TWIADR 进行初始化 : 置位控制寄存器 TWICON 中的 ENTWI 和 AA, 清除 STA STO 和 TWINT; 地址寄存器 TWIADR 中高 7 位为 SH79F3218 准备相应的地址 如果 GC 置位,SH79F3218 也将响应通用地址 (00H); 否则将不响应通用地址 在 TWIADR 和 TWICON 初始化后,SH79F3218 将等待总线对自己地址或通用地址 ( 如果 GC 被置位 ) 的响应 如果方向标志位是 读, 则 TWI 进入从机发送模式, 否则将进入从机接收模式 在地址和读标志位接收完毕后, 中断标志 (TWINT) 置位, 状态寄存器 TWISTA 有效 在传输中, 如果将应答使能位 AA 清零,TWI 将传送最后一个字节, 并依据主机接收方发送的应答或不应答信息位进入 C0H 或 C8H 状态 总线将切换到非地址从机模式, 不在响应主机传输 从而主机接收方将接收到一串 1 最后一个字节发送完毕后, 如果主机仍需额外的数据 ( 传输 应答 信号 ), 则进入 C8H 状态 从机发送模式状态码 状态码 TWI 总线和硬件接口状态 A8H B0H B8H 读 / 写数据寄存器 TWIDAT 操作 已收到自己 SLA+R; 写入数据字节已经回应 ACK 作为主机发送 SLA+R/W 时失去仲裁, 收到主机 SLA+R; 已回应 ACK 写入数据字节 已发送 TWIDAT 数据 ; 写入数据字节已接收 ACK 回应 应用软件响应 控制位操作 STA STO TW INT AA TWI 执行的下一个动作 X 发送最后数据 ; 等待 ACK 回应 X 发送数据 ; 等待 ACK 回应 X 发送最后数据 ; 等待 ACK 回应 X 发送数据 ; 等待 ACK 回应 X 发送最后数据 ; 等待 ACK 回应 X 发送数据 ; 等待 ACK 回应 切换至非寻址从机模式 ; 不响应自己地址和通用地址 C0H 已发送 TWIDAT 数据 ; 已接收 NACK 回应 无 TWIDAT 动作 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 切换至非寻址从机模式 ; 不响应自己地址和通用地址 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 不响应自己地址和通用地址 C8H 已发送最后一个 TWIDAT 数据 (AA=0); 已接收 ACK 回应 无 TWIDAT 动作 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 切换至非寻址从机模式 ; 不响应自己地址和通用地址 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 ; 总线空闲时发送 开始条件 107

108 Reception of the own slave address and transmission of one or more data bytes S SLA+R Ack DATA Ack DATA Nack P or S A8H B8H C0H Arbitration lost as master and addressed as slave transmitter Ack Last data byte transmitted, Switched to not addressed slave (AA = 0) B0H Ack All '1' P or S C8H Other Device Actions SH79F3218 Actions 从机接收模式 从机接收模式中, 从机从主机接收一系列数据 为初始化从机接收模式, 必须对控制寄存器 TWICON 和地址寄存器 TWIADR 进行初始化 : 置位控制寄存器 TWICON 中的 ENTWI 和 STA, 清除 STO 和 TWINT; 地址寄存器 TWIADR 中高 7 位为 SH79F3218 准备相应的地址 如果 GC 置位,SH79F3218 也将响应通用地址 (00H); 否则将不响应通用地址 在 TWIADR 和 TWICON 初始化后,SH79F3218 将等待总线对自己地址或通用地址 ( 如果 GC 被置位 ) 的响应 如果方向标志位是 写, 则 TWI 进入从机接收模式, 否则将进入从机发送模式 在地址和写标志位接收完毕后, 中断标志 (TWINT) 置位, 状态寄存器 TWISTA 有效 在传输中, 如果将应答使能位 AA 清零,TWI 将接收最后一个字节并回应 不应答 信息 回应 不应答 可以表示当前从机无法接收更多字节 当 AA = 0 时,SH79F3218 无法回应对自己地址的访问 ; 但仍然监视总线状态, 并可以通过 AA = 1 恢复对自己地址的相应 可以通过 AA = 0 暂时将 SH79F3218 从总线隔离 SH79F3218 作为从机接收模式时, 最小接收频率为 4.5KHz, 小于 4.5KHz 时, 无法正常接收数据 从机接收模式状态码 状态码 TWI 总线和硬件接口状态 60H 68H 读 / 写数据寄存器 TWIDAT 操作 已收到自己 SLA+W; 无 TWIDAT 动作已回应 ACK 作为主机发送 SLA+R/W 时失去仲无 TWIDAT 动作裁, 收到主机 SLA+W; 已回应 ACK 应用软件响应 控制位操作 STA STO TW INT AA TWI 执行的下一个动作 X 接收数据 ; 发送 NACK 回应 X 接收数据 ; 发送 ACK 回应 X 接收数据 ; 发送 NACK 回应 X 接收数据 ; 发送 ACK 回应 70H 78H 收到主机发送通用地址 ; 已回应 ACK 无 TWIDAT 动作 作为主机发送 SLA+R/W 时失去仲无 TWIDAT 动作裁, 收到主机发送通用地址 ; 已回应 ACK X 接收数据 ; 发送 NACK 回应 X 接收数据 ; 发送 ACK 回应 X 接收数据 ; 发送 NACK 回应 X 接收数据 ; 发送 ACK 回应 108

109 续上表 80H 88H 90H 98H A0H 处于已寻址状态 ; 已收到数据 ; 已回应 ACK 处于已寻址状态 ; 已收到数据 ; 已回应 NACK 读取数据 读取数据 处于通用地址已寻址状态 ; 已收到数据 ; 读取数据已回应 ACK 处于通用地址已寻址状态 ; 已收到数据 ; 已回应 NACK 读取数据 作为从机时收到终止无 TWIDAT 动作条件或重复开始条件 X 接收数据 ; 发送 NACK 回应 X 接收数据 ; 发送 ACK 回应 切换至非寻址从机模式 ; 不响应自己地址和通用地址 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 切换至非寻址从机模式 ; 不响应自己地址和通用地址 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 ; 总线空闲时发送 开始条件 X 接收数据 ; 发送 NACK 回应 X 接收数据 ; 发送 ACK 回应 切换至非寻址从机模式 ; 不响应自己地址和通用地址 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 切换至非寻址从机模式 ; 不响应自己地址和通用地址 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 不响应自己地址和通用地址 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 切换至非寻址从机模式 ; 不响应自己地址和通用地址 ; 总线空闲时发送 开始条件 切换至非寻址从机模式 ; 响应自己地址, 是否响应通用地址依赖于寄存器 TWIADR 中 GC 的设置 ; 总线空闲时发送 开始条件 109

110 Reception of the own slave address and one or more data bytes, All are acknowledged Arbitration lost as master and addressed as slave receiver S SLA+W Ack DATA Ack DATA Ack P or S 60H 80H 80H A0H Ack Last data byte received is not acknowledged 68H Nack P or S 88H Reception of general call address and one or more data bytes, All are acknowledged Arbitration lost as master and addressed as slave receiver by general call General Call Ack DATA Ack DATA Ack P or S 70H 90H 90H A0H Ack 78H Last data byte received is not acknowledged Nack P or S 98H Other Device Actions SH79F3218 Actions 其它模式 除上述状态码外, 两个状态码没有明确的 TWI 状态 状态 0F8H 表示由于中断标志 TWINT 未置起, 没有相应的状态信息 当中断 TWINT 未置起, 即在清除一个状态后到一个新状态建立前均由 0F8H 进行填充 状态 00H 表示在 TWI 总线通讯中有错误发生, 即传输中有非法的开始条件或终止条件发生 例如在传输地址, 数据或回应 ACK 应答时有起始条件或终止条件发生 当总线扰乱了内部逻辑时也会产生 00H 状态 当非法状态出现时, 会置起中断标志位 TWINT 可通过置起 STO 并清除 TWINT 标志恢复到正常通讯,SH79F3218 将进入非寻址从机模式, 并自动清除 STO 标志 数据线和时钟线将被释放, 线上无终止条件传送 其它模式状态码 状态码 TWI 总线和硬件接口状态 F8H 没有有效状态码 ; TWINT=0 读 / 写数据寄存器 TWIDAT 操作 应用软件响应 控制位操作 STA STO TW INT AA 无 TWIDAT 动作无 TWICON 动作等待或处理当前传输 TWI 执行的下一个动作 00H 在主机或寻址从机模式下有非法开始条件或终止条件发送 ; 接口导致 TWI 内部逻辑混乱 无 TWIDAT 动作 x 只有内部硬件受影响 ; 释放总线 ; 切换到非寻址从机模式 ; 清除 STO 110

111 8.6.5 寄存器 Table 8.31 TWI 控制寄存器 F8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TWICON TOUT ENTWI STA STO TWINT AA TFREE EFREE 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 (POR/WDT/LVR) TOUT 6 ENTWI 5 STA 4 STO 3 TWINT 2 AA 1 TFREE 0 EFREE 总线超时标志位 0: 无超时发生 1: 当 TWI 总线低电平超过 25ms 时置位, 必须由软件清除 TWI 使能位 0: 关闭 TWI 功能 1: 开启 TWI 功能 起始位 0: 不会发送起始条件 1: 当总线空闲时发送起始条件 终止位 0: 不会发送终止条件 1: 作为主机时发送终止条件 ; 作为从机时不向总线发送终止条件, 但状态恢复到非寻址从机状态 硬件将自动清除该标志位 TWI 串行中断标志位 0: 没有 TWI 串行中断发生 1: 产生 TWI 通讯状态中除 0F8H 之外的状态时置位, 必须由软件清除 声明应答标志 0: 回复 不应答 信号 (SDA 高电平 ) 1: 回复 应答 信号 (SDA 低电平 ) SCL 高电平超时标志位 0: 无超时发生 1: 参与总线传输时如时钟线超过 50us 高电平时置位, 必须由软件清除 SCL 高电平超时使能位 0: 禁止 SCL 总线高电平超时判断 1: 允许 SCL 总线高电平超时判断 特别提示 :TOUT,TWINT,TFREE 均将触发 TWI 中断, 三者共享一个中断向量 111

112 Table 8.32 TWI 状态寄存器 F9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TWISTA TWISTA.7 TWISTA.6 TWISTA.5 TWISTA.4 TWISTA.3 CR.1 CR.0 ETOT 读 / 写读读读读读读 / 写读 / 写读 / 写 (POR/WDT/LVR) TWISTA[7:3] 2-1 CR[0:1] 0 ETOT Table 8.33 TWI 地址寄存器 TWI 串行通讯状态位参见相应的状态描述 TWI 发送频率控制位 00:f OSCS /4/ :f OSCS /4/256 10:f OSCS /4/64 11:f OSCS /4/42 当 SH79F3218 处于主机模式时,STA 和 STO 以及重复 STA 的保持时间与 CR[1:0] 选中的发送频率相关 总线超时使能位 0: 禁止总线超时判断 1: 使能总线超时判断 FAH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TWIADR TWA.6 TWA.5 TWA.4 TWA.3 TWA.2 TWA.1 TWA.0 GC 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 (POR/WDT/LVR) TWA[6:0] 0 GC Table 8.34 TWI 数据寄存器 TWI 地址配置位配置 SH79F3218 作为从机时的地址 通用地址使能位 0: 禁止响应通用地址 1: 允许响应通用地址 FDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TWIDAT TWIDAT.7 TWIDAT.6 TWIDAT.5 TWIDAT.4 TWIDAT.3 TWIDAT.2 TWIDAT.1 TWIDAT.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 (POR/WDT/LVR) TWIDAT[7:0] TWI 通讯数据寄存器 112

113 Table 8.35 系统时钟控制寄存器 B2H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CLKCON 32k_SPDUP CLKS1 CLKS0 SCMIF HFON FS - - 读 / 写读 / 写读 / 写读 / 写读读 / 写读 / 写 k_SPDUP 6-5 CLKS[1:0] 3 HFON 2 FS kHz 晶体谐振器加速模式控制位 0:32.768kHz 振荡器常规模式, 由软件清 0 1:32.768kHz 振荡器加速模式, 由软件或者硬件置 1 此位在系统发生任何形式的复位, 如上电复位, 看门狗复位等时, 自动由硬件设置 1, 用以加速 kHz 振荡器起振, 缩短 kHz 振荡器的起振时间 如果有需要, 本位也可以由软件置 1 或者清 0 比如进入掉电模式 (Power-down mode) 前, 可以将此位置 1, 掉电模式唤醒后再由软件清 0 应该注意的是关闭 kHz 加速模式 ( 此位清 0), 可以节省系统的耗电 只有代码选项 OP_OSC 为 011 时 ( 选择 kHz 晶体振荡器, 详见代码选项章节 ), 此控制位才有效 系统时钟频率分频器 00:f SYS = f OSCS 01:f SYS = f OSCS /2 10:f SYS = f OSCS /4 11:f SYS = f OSCS /12 如果选择 32kHz crystal 振荡器为 OSCSCLK, 此控制位无效 OSC1CLK 开关控制寄存器 0: 关闭 OSC1CLK 1: 打开 OSC1CLK 只有代码选项 OP_OSC 为 0011,0110,1010 时 (128K 内部 RC 与 K 晶体振荡器, 详见代码选项章节 ), 此控制位才有效 频率选择位 0: 选择 128KHz 或 KHz 为 OSCSLK 1: 选择 OSC1CLK 为 OSCSCLK 只有代码选项 OP_OSC 为 0011,0110,1010 时 (128K 内部 RC 与 K 晶体振荡器, 详见代码选项章节 ), 此控制位才有效 113

114 8.7 蜂鸣器 特性 为音频发生器输出方波信号 可输出可调周期的方波信号 寄存器 Table 8.36 蜂鸣器控制寄存器 BDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 BUZCON BUZEN BUSLE - - BCA1 BCA0 - - 读 / 写读 / 写读 / 写 - - 读 / 写读 / 写 BUZEN 6 BUSLE 3-2 BCA[2:0] Table 8.37 蜂鸣器周期控制寄存器 (BUZP) 蜂鸣器模块允许位 0: 关闭蜂鸣器模块 1: 开启蜂鸣器模块 蜂鸣器输出选择位 0: 选择 BUZ1 作为蜂鸣器输出 ( 非选口为 I/O) 1: 选择 BUZ2 作为蜂鸣器输出 ( 非选口为 I/O) 蜂鸣器时钟频率 : 00: 系统时钟 /256 01: 系统时钟 /64 10: 系统时钟 /16 11: 系统时钟 /4 AFH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 BUZP BZP.7 BZP.6 BZP.5 BZP.4 BZP.3 BZP.2 BZP.1 BZP.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 BZP[7:0] 蜂鸣器周期 8 位寄存器 Buzz 引脚输出方波频率计算公式 : Buzz Frequency= Fsys/BCA[2:0]/BUZP[7:0] 114

115 8.8 低电压检测 (LPD) 特性 低电压检测并产生中断 LPD 检测电源电压 低电压检测 (LPD) 功能用来监测电源电压, 如果电压低于指定值时产生内部标志 LPD 功能用来通知 CPU 电源是否被切断或电池是否用尽, 因此在电压低于最小工作电压之前, 软件可以采取一些保护措施 寄存器 Table 8.38 低电压检测控制寄存器 B3H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 LPDCON LPDEN LPDF* LPDS2 LPDS1 LPDS0 读 / 写读 / 写读 / 写 * 读 / 写读 / 写读 / 写 *:LPDF 软件只能够清 0, 不能置 LPDEN 6 LPDF LPD 允许位 0: 禁止低电压检测 1: 允许低电压检测 LPD 标志位 0: 无 LPD 发生, 由硬件或软件清 0, 即当前电压高于在 LPDS[1:0] 中设置的 LPD 电压 1:LPD 发生, 由硬件置 1, 即当前电压低于在 LPDS[1:0] 中设置的 LPD 电压 2-0 LPDS[2:0] LPD 电压设置位 000:2.8V 001:3.0V 010:3.2V 011:3.4V 100:3.6V 101:3.8V 110:4.0V 111:4.2V 115

116 8.9 低电压复位 (LVR) 特性 通过代码选项选择,LVR 设定电压 V LVR 可为 3.7V 和 3.1V, 或 2.8V LVR 去抖动时间 T LVR 为 30-60µs 当供电电压低于设定电压 V LVR 时, 将产生内部复位 低电压复位 (LVR) 功能是为了监测供电电压, 当供电电压低于设定电压 V LVR 时,MCU 将产生内部复位 LVR 去抖动时间 T LVR 大约为 30µs-60µs LVR 功能打开后, 具有以下特性 (T 1 表示电压低于设定电压 V LVR 的时间,T 2 表示电压高于设定电压 V LVR +V HYS 的时间 ): 当 V DD V LVR 且 T 1 T LVR 时产生系统复位 当 V DD > V LVR +V HYS 且 T 2 T LVR 时释放系统复位或 V DD < V LVR, 但 T 1 < T LVR 时不会产生系统复位 其中 V HYS 的范围是 0.09V V V DD T LVR T LVR V LVR V HYS LVR Reset T 1 T 2 这里,V DD 为电源电压,V LVR 为 LVR 检测电压,V HYS 为低电压复位迟滞电压 通过代码选项, 可以选择 LVR 功能的打开与关闭 在交流电或大容量电池应用中, 接通大负载后容易导致 MCU 供电暂时低于定义的工作电压 低电压复位可以应用于此, 保护系统在低于设定电压下产生有效复位 116

117 8.10 看门狗定时器 (WDT), 程序超范围溢出 (OVL) 复位及其它复位状态 特性 看门狗可以工作在掉电模式下 程序超范围溢出后硬件自动检测, 并产生 OVL 复位 看门狗溢出频率可选 程序超范围溢出复位 SH79F3218 为进一步增强 CPU 运行可靠性, 内建程序超范围溢出检测电路, 一旦检测到程序计数器的值超出 ROM 最大值, 或者发现指令操作码 ( 不检测操作数 ) 为 8051 指令集中不存在的 A5H, 便认为程序跑飞, 产生 CPU 复位信号, 同时将 WDOF 标志位置 1 为应用这个特性, 用户应该将未使用的 Flash ROM 用 0xA5 填满 看门狗 看门狗定时器 (WDT) 是一个递减计数器, 独立内建 RC 振荡器作为时钟源, 因此可以通过代码选项在掉电模式下仍会持续运行 当定时器溢出时, 将芯片复位 通过代码选项可以打开或关闭该功能 WDT 控制位 ( 第 2-0 位 ) 用来选择不同的溢出时间 定时器溢出后,WDT 溢出标志 (WDOF) 将由硬件自动置 1 通过读或写 RSTSTAT 寄存器, 看门狗定时器在溢出前重新开始计数 其它一些复位标志列举如下 : 寄存器 Table 8.39 复位状态寄存器 B1H, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 RSTSTAT WDOF - PORF LVRF - WDT.2 WDT.1 WDT.0 读 / 写读 / 写 - 读 / 写读 / 写 - 读 / 写读 / 写读 / 写 (POR) (WDT) 1 - u u (LVR) u - u (PIN) u - u u WDOF 5 PORF 4 LVRF 2-0 WDT[2:0] 看门狗溢出或程序超范围溢出标志位看门狗溢出时由硬件置 1, 可由软件或上电复位清 0 0: 未发生 WDT 溢出或程序超范围溢出 1: 发生 WDT 溢出或程序超范围溢出 上电复位标志位上电复位后硬件置 1, 只能由软件清 0 0: 没有发生上电复位 1: 发生过上电复位 低压复位标志位低压复位后置 1, 可由软件或上电复位清 0 0: 没有发生低压复位 1: 发生过低压复位 WDT 溢出周期控制位 000: 溢出周期最小值 = 4096ms 001: 溢出周期最小值 = 1024ms 010: 溢出周期最小值 = 256ms 011: 溢出周期最小值 = 128ms 100: 溢出周期最小值 = 64ms 101: 溢出周期最小值 = 16ms 110: 溢出周期最小值 = 4ms 111: 溢出周期最小值 = 1ms 注意 : 应用中如果看门狗打开, 程序清看门狗的最大间隔时间不能大于以上所列最小值 117

118 8.11 电源管理 特性 空闲模式和掉电模式两种省电模式 发生中断和复位可退出空闲 (Idle) 掉电 (Power-Down) 模式 为减少功耗,SH79F3218 提供两种低功耗省电模式 : 空闲 (Idle) 模式和掉电 (Power-Down) 模式, 这两种模式都由 PCON 和 SUSLO 两个寄存器控制 空闲模式 (Idle) 空闲模式能够降低系统功耗, 在此模式下, 程序中止运行,CPU 时钟停止, 但外部设备时钟继续运行 空闲模式下,CPU 在确定的状态下停止, 并在进入空闲模式前所有 CPU 的状态都被保存, 如 PC,PSW,SFR,RAM 等 两条连续指令 : 先设置 SUSLO 寄存器为 0x55, 随即将 PCON 寄存器中的 IDL 位置 1, 使 SH79F3218 进入空闲模式 如果不满足上述的两条连续指令,CPU 在下一个机器周期清 0 SUSLO 寄存器或 IDL 位,CPU 也不会进入空闲模式 IDL 位置 1 是 CPU 进入空闲模式之前执行的最后一条指令 两种方式可以退出空闲模式 : (1) 中断产生 恢复 CPU 时钟, 硬件清除 SUSLO 寄存器和 PCON 寄存器的 IDL 位 然后执行中断服务程序, 随后跳转到进入空闲模式指令之后的指令 (2) 复位信号产生后 ( 复位引脚上出现低电平,WDT 复位,LVR 复位 ) CPU 恢复时钟,SUSLO 寄存器和在 PCON 寄存器中的 IDL 位被硬件清 0, 最后 SH79F3218 复位, 程序从地址位 0000H 开始执行 此时,RAM 保持不变而 SFR 的值根据不同功能模块改变 掉电模式 (Power-Down) 掉电模式可以使 SH79F3218 进入功耗非常低的状态 掉电模式将停止 CPU 和外围设备的所有时钟信号 在掉电模式下, 如果通过代码选项使能 WDT,WDT 模块将继续工作 在进入掉电模式前所有 CPU 的状态都被保存, 如 PC,PSW,SFR,RAM 等 两条连续指令 : 先设置 SUSLO 寄存器为 0x55, 随即将 PCON 寄存器中的 PD 位置 1, 使 SH79F3218 进入掉电模式 如果不满足上述的两条连续指令 CPU 在下一个机器周期清除 SUSLO 寄存器或的 PD 位,CPU 也不会进入掉电模式 PD 位置 1 是 CPU 进入掉电模式之前执行的最后一条指令 注意 : 如果同时设置 IDL 位和 PD 位,SH79F3218 进入掉电模式 退出掉电模式后,CPU 也不会掉电进入空闲模式, 从掉电模式退出后硬件清 0 IDL 及 PD 位 有三种方式可以退出掉电模式 : (1) 有效外部中断 ( 如 INT0,INT1,INT2,INT3) 和 LPD 中断使 SH79F3218 退出掉电模式 在中断发生后振荡器启动, 在预热计时结束之后 CPU 时钟和外部设备时钟恢复,SUSLO 寄存器和 PCON 寄存器中的 PD 位会被硬件清除, 然后继续运行中断服务程序 在完成中断服务程序之后, 跳转到进入掉电模式之后的指令继续运行 (2) 复位信号 ( 复位引脚上出现低电平,WDT 复位如果被允许,LVR 复位如果被允许 ) 在预热计时之后会恢复 CPU 时钟, SUSLO 寄存器和 PCON 寄存器中的 PD 位会被硬件清除, 最后 SH79F3218 会被复位, 程序会从 0000H 地址位开始运行 RAM 将保持不变, 而根据不同功能模块 SFR 的值可能改变 (3) 定时器 3 可以在特定模式下工作在掉电模式 并且能够在掉电模式中产生中断并退出掉电模式 ( 详见定时器 3 章节 ) 注意 : 如要进入这两种低功耗模式, 必须在置位 PCON 中的 IDL/PD 位后增加 3 个空操作指令 (NOP) 118

119 寄存器 Table 8.40 电源控制寄存器 87H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PCON SMOD SSTAT - - GF1 GF0 PD IDL 读 / 写读 / 写读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 SMOD UART 波特率加倍器 6 SSTAT SCON[7:5] 功能选择位 3-2 GF[1:0] 用于软件的通用标志 1 PD 0 IDL Table 8.41 省电模式控制寄存器 掉电模式控制位 0: 当一个中断或复位产生时由硬件清 0 1: 由软件置 1 激活掉电模式 空闲模式控制位 0: 当一个中断或复位产生时由硬件清 0 1: 由软件置 1 激活空闲模式 8EH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SUSLO SUSLO.7 SUSLO.6 SUSLO.5 SUSLO.4 SUSLO.3 SUSLO.2 SUSLO.1 SUSLO.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 程序举例 : SUSLO[7:0] 此寄存器用来控制 CPU 进入省电模式 ( 空闲或掉电 ) 只有像下面的连续指令才能使 CPU 进入省电模式, 否则在下个周期中 SUSLO,IDL 或 PD 位将被硬件清 0 IDLE_MODE: MOV SUSLO, #55H ORL PCON, #01H NOP NOP NOP POWERDOWN_MODE: MOV SUSLO, #55H ORL PCON, #02H NOP NOP NOP 119

120 8.12 预热计数器 特性 内建电源预热计数器消除电源的上电的不稳定状态 内建振荡器预热计数器消除振荡器起振时的不稳定状态 SH79F3218 内建有电源上电预热计数器, 主要是用来消除上电电压建立时的不稳定态, 同时完成内部一些初始化序列, 如读取内部客户代码选项等 SH79F3218 还内建振荡器预热计数器, 它能消除振荡器在下列情况下起振时的不稳定状态 : 上电复位, 引脚复位, 从低功耗模式中唤醒, 看门狗复位和 LVR 复位 上电后,SH79F3218 会先经过电源上电预热计数过程, 等待溢出后再进行振荡器的预热计数过程过程, 溢出后开始运行程序 电源上电预热计数时间 上电复位 / 引脚复位 / 低电压复位 看门狗复位 ( 不包含掉电模式 ) 看门狗复位 ( 唤醒掉电模式 ) 掉电模式下中断唤醒 电源上电预热计数时间 振荡器上电预热计数时间 电源上电预热计数时间 振荡器上电预热计数时间 电源上电预热计数时间 振荡器上电预热计数时间 电源上电预热计数时间 振荡器上电预热计数时间 11ms 有 1ms 无 1ms 有 800us 有 振荡器上电预热计数时间 代码选项 : OP_WMT 振荡器类型 陶振 / 晶振 2 17 X Tosc 2 14 X Tosc 2 11 X Tosc 2 8 X Tosc 32kHz 晶振 内部 RC 2 13 X Tosc 2 7 X Tosc 120

121 8.13 循环冗余校验 CRC(Cyclic Redundancy Check) 特性 FLASH 内容 CRC 校验, 可设置校验 Flash ROM 范围和初始值 CRC 生成多项式采用 CRC-CCITT 标准 :X 16 +X 12 +X 5 +1, 高位优先 2 种模式 : 高速 CRC 模式和普通 CRC 模式 为提高系统可靠性,SH79F3218 内建 1 个 CRC 校验模块, 可用来实时生成 code 的 CRC 校验码, 采用的生成多项式采用 CRC-CCITT 标准 :X 16 +X 12 +X 5 +1 用户可利用此校验码和理论值比较, 监测 Flash 内容是否有变化 CRC 理论值可存放在所选 ROM 范围的最后两个 Byte( 不参与 CRC 校验 ), 或其他位置 ( 比如类 EEPROM 区, 序列号区, 用户识别码区等 ) 设置 CRCADR[3:0] 控制位可以选择校验空间大小, 设置 CRC_GO 位启动 CRC 模块, 校验完成后,CRC_GO 自动清 0, 并置起 CRCIF 标志, 如果中断允许位 ESCM_LPD_CRC 和 ECRC 都为 1, 则 CPU 产生 CRC 中断, 程序响应中断后此标志位被硬件自动清 0 普通 CRC 模式 : 在 CPU 运行程序指令过程中, 利用一些特殊指令的执行间隙, 进行 CRC 校验, 不会影响 CPU 的指令执行时间, 但校验时间较长, 且不可控 高速 CRC 模式 : 为提高 CRC 的校验时间, 可以打开 CRC 模块, 让 CPU 进入 IDLE 模式, 将执行高速 CRC 模式, 校验时间较短,CRC 中断可唤醒 IDLE 模式 注意 : 掉电 (Power-Down) 模式下, 且 CRC 模块处于运行状态, 会导致 CRC 校验结果不正确 ; 请确保 CRC 运行结束前, 系统不进掉电 (Power-Down) 模式 寄存器 Table 8.42 CRC 控制寄存器 ACH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CRCCON CRC_GO CRCIF - - CRCADR3 CRCADR2 CRCADR1 CRCADR0 读 / 写读 / 写读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 CRC_GO 6 CRCIF 3-0 CRCADR[3:0] CRC 启动控制位 0: 关闭 CRC 模块 1: 启动 CRC 模块,CRC 校验完成后自动清 0 CRC 完成中断请求标志位 0: 未启动或启动后未完成 1:CRC 校验完成, 向 CPU 请求中断, 如果中断允许位 ESCM_LPD_CRC 和 ECRC 都为 1, 则 CPU 响应中断, 程序响应中断后此标志位软件清 0 CRC 校验范围设置位 0000: 校验地址范围为 FDH(2K-2Byte) 0001: 校验地址范围为 FFDH(4K-2Byte) 1110: 校验地址范围为 FDH(30K-2Byte) 1111: 校验地址范围为 FFDH(32K-2Byte) 121

122 Table 8.42 CRC 结果寄存器低位 ( 注意低位地址在前, 高位地址在后 ) ADH,AEH, 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CRCDL (ADH) CRCD7 CRCD6 CRCD5 CRCD4 CRCD3 CRCD2 CRCD1 CRCD0 CRCDH (AEH) CRCD15 CRCD14 CRCD13 CRCD12 CRCD11 CRCD10 CRCD9 CRCD8 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 CRCD[15:0] 注意 : (1) CRC 启动之前, 需要对 CRC 结果寄存器赋初始值 CRC 校验结果寄存器启动 CRC 模块前, 此寄存器值作为 CRC 校验初值, 校验完成后, 校验结果存储于此寄存器中, 覆盖之前的数据 (2) CRC_GO 置为 1 启动 CRC 校验, 在校验过程中, 不允许对 CRCADR[3:0] 重新设置, 也不允许对 CRC 结果寄存器 CRCDL/CRCDH 有修改动作 (3) 所选择的 CRC 校验范围的最后 2 个 byte, 不参与 CRC 校验, 可以存放 CRC 理论值 122

123 8.14 代码选项 OP_WDT: 0: 允许看门狗复位 ( 默认 ) 1: 禁止看门狗复位 OP_WDTPD: 0: 掉电模式下禁止看门狗工作 ( 默认 ) 1: 掉电模式下允许看门狗工作 OP_LVREN: 0: 禁止低电压复位功能 ( 默认 ) 1: 允许低电压复位功能 OP_LVRLE: 00: 低电压复位设定电压为 3.7V( 默认 ) 01: 低电压复位设定电压为 3.1V 10: 低电压复位设定电压为 2.8V OP_OSC: 0000: 内部 16.6MHz RC 振荡器作为振荡器 1, 振荡器 2 关闭 ( 默认 ) 0011: 内部 128kHz RC 振荡器作为振荡器 1,16.6MHz 内部 RC 作为振荡器 : 内部 128kHz RC 振荡器作为振荡器 1,2M-12MHz 晶体 / 陶瓷谐振器作为振荡器 :32.768kHz 晶体振荡器作为振荡器 1,16.6MHz 内部 RC 作为振荡器 :2M-12MHz 晶体 / 陶瓷谐振器作为振荡器 1, 振荡器 2 关闭 OP_SEG/IO:( 该选项选择输出电流应用所有模式 ) 00:P0.5-P0.6,P1.2,P1.7,P2.0-P2.6,P3.0-P3.1,V DD -3V 时, 输出 40mA 电流 GND+3V, 输入 40mA 电流 ( 默认 ) 01:P0.5-P0.6,P1.2,P1.7,P2.0-P2.6,P3.0-P3.1,V DD -3V 时, 输出 30mA 电流 GND+3V, 输入 30mA 电流 10:P0.5-P0.6,P1.2,P1.7,P2.0-P2.6,P3.0-P3.1,V DD -3V 时, 输出 20mA 电流 GND+3V, 输入 20mA 电流 11:P0.5-P0.6,P1.2,P1.7,P2.0-P2.6,P3.0-P3.1,V DD -3V 时, 输出 10mA 电流 GND+3V, 输入 10mA 电流 OP_MODSW: 0: 当 MODSW = 1 时 LED 功能暂停记录当前扫描通道,MODSW = 0 时继续扫描顺序通道 ( 默认 ) 1: 当 MODSW = 1 时 LED 功能不暂停,MODSW = 0 时扫描 LED 当前通道 OP_WMT:( 不适用于内建 RC) 00: 最长预热时间 ( 默认 ) 01: 长预热时间 10: 短预热时间 11: 最短预热时间 OP_COM/IO:( 该选项选择输出电流应用所有模式 ) 0: 代码选项为 P0.7,P1.0-P1.2,P2.7,P3.0-P3.1,sink/drive 电流能力加大 1: 代码选项为 P0.7,P1.0-P1.2,P2.7,P3.0-P3.1, 普通输入 / 输出电流能力 ( 默认 ) OP_P0:( 该选项选择输出电流应用所有模式 ) 0: 代码选项为 P0.1-P0.4,, 普通输入电流能力 ( 默认 ) 1: 代码选项为 P0.1-P0.4, 输入电流能力加大 OP_SCM: 0: 在预热期间禁止时钟单元检测功能 ( 默认 ) 1: 在预热期间允许时钟单元检测功能 OP_OSCDRIVE1: 0: 当 OP_OSCDRIVER2 = 10:2M 陶振当 OP_OSCDRIVER2 = 11:4M 陶振 1: 当 OP_OSCDRIVER2 = 10:8M 陶振当 OP_OSCDRIVER2 = 11:12M 陶振当 OP_OSCDRIVER2 = 00:4M 晶振当 OP_OSCDRIVER2 = 01:8M-12M 晶振 ( 默认 ) 123

124 OP_OSCDRIVE2: 10: 当 OP_OSCDRIVE1 = 0:2M 陶振当 OP_OSCDRIVE1 = 1:8M 陶振 11: 当 OP_OSCDRIVE1 = 0:4M 陶振当 OP_OSCDRIVE1 = 1:12M 陶振 00: 当 OP_OSCDRIVE1 = 1:4M 晶振 01: 当 OP_OSCDRIVE1 = 1:8M-12M 晶振 ( 默认 ) 当使用外部陶振或者晶振时 (OP_OSC 为 0110 或者 1110) OP_OSCDRIVE2:00 OP_OSCDRIVE2:01 OP_OSCDRIVE2:10 OP_OSCDRIVE2:11 OP_OSCDRIVE1: M 陶振 4M 陶振 OP_OSCDRIVE1:1 4M 晶振 8M-12M 晶振 8M 陶振 12M 陶振 124

125 9. 指令集 算术操作指令 指令功能描述代码字节周期 ADD A, Rn 累加器加寄存器 0x28-0x2F 1 1 ADD A, direct 累加器加直接寻址字节 0x ADD 累加器加内部 RAM 0x26-0x ADD A, #data 累加器加立即数 0x ADDC A, Rn 累加器加寄存器和进位位 0x38-0x3F 1 1 ADDC A, direct 累加器加直接寻址字节和进位位 0x ADDC 累加器加内部 RAM 和进位位 0x36-0x ADDC A, #data 累加器加立即数和进位位 0x SUBB A, Rn 累加器减寄存器和借位位 0x98-0x9F 1 1 SUBB A, direct 累加器减直接寻址字节和借位位 0x SUBB 累加器减内部 RAM 和借位位 0x96-0x SUBB A, #data 累加器减立即数和借位位 0x INC A 累加器加 1 0x INC Rn 寄存器加 1 0x08-0x0F 1 2 INC direct 直接寻址字节加 1 0x 内部 RAM 加 1 0x06-0x DEC A 累加器减 1 0x DEC Rn 寄存器减 1 0x18-0x1F 1 2 DEC direct 直接寻址字节减 1 0x 内部 RAM 减 1 0x16-0x INC DPTR 数据指针加 1 0xA3 1 4 MUL AB 8 X 8 16 X 8 DIV AB 8 / 8 16 / 8 累加器乘寄存器 B 0xA4 1 累加器除以寄存器 B 0x84 1 DA A 十进制调整 0xD

126 逻辑操作指令 指令 功能描述 代码 字节 周期 ANL A, Rn 累加器与寄存器 0x58-0x5F 1 1 ANL A, direct 累加器与直接寻址字节 0x ANL 累加器与内部 RAM 0x56-0x ANL A, #data 累加器与立即数 0x ANL direct, A 直接寻址字节与累加器 0x ANL direct, #data 直接寻址字节与立即数 0x ORL A, Rn 累加器或寄存器 0x48-0x4F 1 1 ORL A, direct 累加器或直接寻址字节 0x ORL 累加器或内部 RAM 0x46-0x ORL A, #data 累加器或立即数 0x ORL direct, A 直接寻址字节或累加器 0x ORL direct, #data 直接寻址字节或立即数 0x XRL A, Rn 累加器异或寄存器 0x68-0x6F 1 1 XRL A, direct 累加器异或直接寻址字节 0x XRL 累加器异或内部 RAM 0x66-0x XRL A, #data 累加器异或立即数 0x XRL direct, A 直接寻址字节异或累加器 0x XRL direct, #data 直接寻址字节异或立即数 0x CLR A 累加器清零 0xE4 1 1 CPL A 累加器取反 0xF4 1 1 RL A 累加器左环移位 0x RLC A 累加器连进位标志左环移位 0x RR A 累加器右环移位 0x RRC A 累加器连进位标志右环移位 0x SWAP A 累加器高 4 位与低 4 位交换 0xC

127 数据传送指令 指令 功能描述 代码 字节 周期 MOV A, Rn 寄存器送累加器 0xE8-0xEF 1 1 MOV A, direct 直接寻址字节送累加器 0xE5 2 2 MOV 内部 RAM 送累加器 0xE6-0xE7 1 2 MOV A, #data 立即数送累加器 0x MOV Rn, A 累加器送寄存器 0xF8-0xFF 1 2 MOV Rn, direct 直接寻址字节送寄存器 0xA8-0xAF 2 3 MOV Rn, #data 立即数送寄存器 0x78-0x7F 2 2 MOV direct, A 累加器送直接寻址字节 0xF5 2 2 MOV direct, Rn 寄存器送直接寻址字节 0x88-0x8F 2 2 MOV direct1, direct2 直接寻址字节送直接寻址字节 0x MOV 内部 RAM 送直接寻址字节 0x86-0x MOV direct, #data 立即数送直接寻址字节 0x A 累加器送内部 RAM 0xF6-0xF7 1 2 direct 直接寻址字节送内部 RAM 0xA6-0xA7 2 3 #data 立即数送内部 RAM 0x76-0x MOV DPTR, #data16 16 位立即数送数据指针 0x MOVC 程序代码送累加器 ( 相对数据指针 ) 0x MOVC 程序代码送累加器 ( 相对程序计数器 ) 0x MOVX 外部 RAM 送累加器 (8 位地址 ) 0xE2-0xE3 1 5 MOVX 外部 RAM 送累加器 (16 位地址 ) 0xE0 1 6 A 累加器送外部 RAM(8 位地址 ) 0xF2-F3 1 4 A 累加器送外部 RAM(16 位地址 ) 0xF0 1 5 PUSH direct 直接寻址字节压入栈顶 0xC0 2 5 POP direct 栈顶弹至直接寻址字节 0xD0 2 4 XCH A, Rn 累加器与寄存器交换 0xC8-0xCF 1 3 XCH A, direct 累加器与直接寻址字节交换 0xC5 2 4 XCH 累加器与内部 RAM 交换 0xC6-0xC7 1 4 XCHD 累加器低 4 位与内部 RAM 低 4 位交换 0xD6-0xD

128 控制程序转移指令 指令功能描述代码字节周期 ACALL addr11 2KB 内绝对调用 0x11-0xF1 2 7 LCALL addr16 64KB 内长调用 0x RET 子程序返回 0x RETI 中断返回 0x AJMP addr11 2KB 内绝对转移 0x01-0xE1 2 4 LJMP addr16 64KB 内长转移 0x SJMP rel 相对短转移 0x 相对长转移 0x JZ rel ( 不发生转移 ) ( 发生转移 ) JNZ rel ( 不发生转移 ) ( 发生转移 ) JC rel ( 不发生转移 ) ( 发生转移 ) JNC rel ( 不发生转移 ) ( 发生转移 ) JB bit, rel ( 不发生转移 ) ( 发生转移 ) JNB bit, rel ( 不发生转移 ) ( 发生转移 ) JBC bit, rel ( 不发生转移 ) ( 发生转移 ) CJNE A, direct, rel ( 不发生转移 ) ( 发生转移 ) CJNE A, #data, rel ( 不发生转移 ) ( 发生转移 ) CJNE Rn, #data, rel ( 不发生转移 ) ( 发生转移 ) #data, rel ( 不发生转移 ) ( 发生转移 ) DJNZ Rn, rel ( 不发生转移 ) ( 发生转移 ) DJNZ direct, rel ( 不发生转移 ) ( 发生转移 ) 累加器为零转移 0x60 2 累加器为非零转移 0x70 2 C 置位转移 0x40 2 C 清零转移 0x50 2 直接寻址位置位转移 0x20 3 直接寻址位清零转移 0x30 3 直接寻址位置位转移并清该位 0x10 3 累加器与直接寻址字节不等转移 0xB5 3 累加器与立即数不等转移 0xB4 3 寄存器与立即数不等转移 0xB8-0xBF 3 内部 RAM 与立即数不等转移 0xB6-0xB7 3 寄存器减 1 不为零转移 0xD8-0xDF 2 直接寻址字节减 1 不为零转移 0xD5 3 NOP 空操作

129 位操作指令 指令 功能描述 代码 字节 周期 CLR C C 清零 0xC3 1 1 CLR bit 直接寻址位清零 0xC2 2 3 SETB C C 置位 0xD3 1 1 SETB bit 直接寻址位置位 0xD2 2 3 CPL C C 取反 0xB3 1 1 CPL bit 直接寻址位取反 0xB2 2 3 ANL C, bit C 逻辑与直接寻址位 0x ANL C, /bit C 逻辑与直接寻址位的反 0xB0 2 2 ORL C, bit C 逻辑或直接寻址位 0x ORL C, /bit C 逻辑或直接寻址位的反 0xA0 2 2 MOV C, bit 直接寻址位送 C 0xA2 2 2 MOV bit, C C 送直接寻址位 0x

130 10. 电气特性 极限参数 * 直流供电电压 V to +6.0V 输入 / 输出电压 GND-0.3V to V DD +0.3V 工作环境温度 C to +85 C 存储温度 C to +125 C * 注释 如果器件的工作条件超过左列 极限参数 的范围, 将造成器件永久性破坏 只有当器件工作在说明书所规定的范围内时功能才能得到保障 器件在极限参数列举的条件下工作将会影响到器件工作的可靠性 低压部分直流电气特性 (V DD = V,GND = 0V,T A = +25 C, 除非另有说明 ) 参数 符号 最小值典型值 最大值 单位 条件 工作电压 V DD V 400kHz f OSC 16.6MHz 工作电流 I OP ma f OSC = 16.6MHz,V DD = 5.0V 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 打开 ( 执行 NOP 指令 );WDT 打开, 关闭其它所有功能 f OSC = 128kHz,V DD = 5.0V I OP µa 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 打开 ( 执行 NOP 指令 );WDT 打开, 关闭其它所有功能 待机电流 ( 空闲模式 ) I SB1-3 5 ma f OSC = 16.6MHz,V DD = 5.0V 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 停止 ( 空闲模式 );WDT 关闭 ;LVR 打开 ; 关闭其它所有功能 f OSC = 128kHz,V DD = 5.0V I SB µa 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 停止 ( 空闲模式 );WDT 关闭 ;LVR 打开 ; 关闭其它所有功能 待机电流 ( 掉电模式 ) I SB µa 振荡器停止,V DD = 5.0V 所有输出引脚无负载 ;CPU 停止 ( 掉电模式 ); LVR 打开,WDT 关闭, 关闭其它所有功能 WDT 电流 I WDT µa V DD = 5.0V,WDT 打开 输入低电压 1 V IL1 GND X V DD V I/O 端口,V DD = V 输入高电压 1 V IH1 0.7 X V DD - V DD V I/O 端口,V DD = V 输入低电压 2 V IL2 GND X V DD V T0,T1,T2,T3,T4,INT2/3/4,SCK, RXD, V DD = V 输入高电压 2 V IH2 0.8 X V DD - V DD V T0,T1,T2,T3,T4,INT2/3/4,SCK, RXD, V DD = V 输入漏电流 I IL -1-1 µa 输入口,V DD = 5.0V,V IN = V DD 或者 GND 输出漏电流 I OL -1-1 µa V DD = 5.0V,V OUT = V DD 或者 GND 上拉电阻 R PH kω V DD = 5.0V,V IN = GND 输出高电压 1 V OH1 V DD - 3V - - V I/O 端口,I OH = 40mA,V DD = 5.0V( 需要 OP_SEG 选择输出 40mA 选项 ) 输出高电压 2 V OH2 V DD - 3V - - V I/O 端口,I OH = 30mA,V DD = 5.0V( 需要 OP_SEG 选择输出 30mA 选项 ) 输出高电压 3 V OH3 V DD - 3V - - V I/O 端口,I OH = 20mA,V DD = 5.0V( 需要 OP_SEG 选择输出 20mA 选项 ) 输出高电压 4 V OH4 V DD - 3V - - V I/O 端口,I OH = 10mA,V DD = 5.0V( 需要 OP_SEG 选择输出 10mA 选项 ) 130

131 续上表 参数符号最小值典型值 最大值单位条件 输出低电压 1 V OL1 - - GND + 3V V 输出低电压 2 V OL2 - - GND + 3V V 输出低电压 3 V OL3 - - GND + 3V V 输出低电压 4 V OL4 - - GND + 3V V 大驱动口灌电流能力 1 I OL ma 大驱动口输出电流能力 1 I OH ma 大驱动口灌电流能力 2 I OL ma 注意 : (1) 表示典型值下的数据是在 5.0V,25 C 下测得的, 除非另有说明 (2) 流过 V DD 的最大电流值须小于 200mA (3) 流过 GND 的最大电流值须小于 200mA 交流电气特性 (V DD = 2.7V - 5.5V,GND = 0V,T A = +25 C,f OSC = 16.6MHz, 除非另有说明 ) I/O 端口,I OL = 40mA,V DD = 5.0V( 需要 OP_SEG 选择输出 40mA 选项 ) I/O 端口,I OL = 30mA,V DD = 5.0V( 需要 OP_SEG 选择输出 30mA 选项 ) I/O 端口,I OL = 20mA,V DD = 5.0V( 需要 OP_SEG 选择输出 20mA 选项 ) I/O 端口,I OL = 10mA,V DD = 5.0V( 需要 OP_SEG 选择输出 10mA 选项 ) V DD = 5.0V,V OL = 1.0V(COM1 - COM7)( 需要 OP_COM 选择输出大电流选项 ) V DD = 5.0V,V OH =4.0V(COM1 - COM7)( 需要 OP_COM 选择输出大电流选项 ) V DD = 5.0V,V OL = 1.5V(P0.1-P0.4)( 需要 OP_P0 选择输出大电流选项 ) 参数符号最小值典型值最大值单位条件 RC 频率 F RC MHz V DD = 5V % RC 振荡器 : F-16.6MHz /16.6MHz (V DD = V,T A = +25 C) 频率稳定性 (RC) F / F % KHz V DD = 5V % RC 振荡器 : F-16.6MHz /16.6MHz (V DD = V,T A = -40 C~85 C) RC 振荡器 : F-128kHz /128kHz (V DD = V,T A = +25 C) % RC 振荡器 : F-128kHz /128kHz (V DD = V,T A = -40 C~85 C) 131

132 触摸按键电气特性 (V DD = 2.7V - 5.5V,GND = 0V,T A = +25 C, 除非另有说明 ) 参数符号最小值典型值最大值单位条件 工作电压 V DD V 输出电压 1 V DDR V V DD = V 输出电压 2 V DDR V IV DDR2 = 0-20mA,V DD = V 输出电压 3 V DDR V IV DDR3 = 0-20mA,V DD = V 输出电压 4 V DDR V IV DDR4 = 0-20mA,V DD = V 输出参考电压 1 V REF V V DD = V 输出参考电压 2 V REF V V DD = V 输出参考电压 3 V REF V V DD = V 输出参考电压 4 V REF V V DD = V 触摸按键比较器电气特性 (V DD = V,GND = 0V,T A = +25 C, 除非另有说明 ) 参数符号最小值典型值最大值单位条件 输入偏移电压 VIO mv T A = 25 C 输入电压随温度变化偏移电压 VI1-3 5 mv T A = -40 C~85 C 输入共模电压范围 VICM 0 - V DD -1V V 低电压复位电气特性 (V DD = 2.7V - 5.5V,GND = 0V,T A = +25 C, 除非另有说明 ) 参数 符号 最小值 典型值 最大值 单位 条件 LVR 电压设定电压 1 V LVR V LVR 使能 LVR 电压设定电压 2 V LVR V LVR 使能 LVR 电压设定电压 3 V LVR V LVR 使能 LVR 低电压复位宽度 T LVR µs 132

133 11. 订购信息 产品编号 SH79F3218M/024MU 封装 24 SOP 133

134 12. 封装信息 SOP24L Outline Dimensions unit: inches/mm Symbol Dimensions in inches Dimensions in mm Min Max Min Max A A A b c D E E e (BSC) (BSC) L θ

135 13. 规格更改记录 版本记录日期 1.0 初始版本 2016 年 11 月 135

136 目录 1. 特性 概述 方框图 引脚配置 引脚描述 SFR 映像 标准功能 CPU CPU 内核特殊功能寄存器 CPU 增强内核特殊功能寄存器 寄存器 随机数据存储器 (RAM) 特性 寄存器 FLASH 程序存储器 特性 ICP 模式下的 Flash 操作 SSP 功能 寄存器 Flash 控制流程图 SSP 编程注意事项 可读识别码 系统时钟和振荡器 特性 时钟定义 概述 寄存器 振荡器类型 谐振器负载电容选择 系统时钟监控 (SCM) I/O 端口 特性 寄存器 端口模块图 端口共享 定时器 特性 定时器 0 和定时器 定时器 定时器 定时器 中断 特性 中断允许 寄存器 中断标志 中断向量 中断优先级 中断处理 中断响应时间 外部中断输入 中断汇总 增强功能 TOUCH KEY 触摸按键功能

137 8.1.1 寄存器 LED 驱动器 寄存器 LED RAM 配置 TOUCH KEY 触摸按键功能与 LED 共享功能 功能描述 脉冲宽度调制 (PWM) 特性 PWM 允许寄存器 增强型通用异步收发器 (EUART) 特性 工作方式 可微调波特率 多机通讯 帧出错检测 寄存器 TWI 串行通讯接口 特性 数据传输格式 功能描述 传输模式 寄存器 蜂鸣器 特性 寄存器 低电压检测 (LPD) 特性 寄存器 低电压复位 (LVR) 特性 看门狗定时器 (WDT), 程序超范围溢出 (OVL) 复位及其它复位状态 特性 寄存器 电源管理 特性 空闲模式 (Idle) 掉电模式 (Power-Down) 寄存器 预热计数器 特性 循环冗余校验 CRC(CYCLIC REDUNDANCY CHECK) 特性 寄存器 代码选项 指令集 电气特性 订购信息 封装信息 规格更改记录

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L

2 Keil µ vision 2.1 1) Keil µ vision2 V2.34 µ vision3 2) Sino_Keil.exe   Keil c:\keil\ 3) JET51 USB PC C:\Keil\ USB PC 4) S-L 1 SH88F516 8051 64K FLASH 1024 EEPROM SH88F516 JET51 S-Lab Keil µ vision ISP51 Keil µ vision ISP51 ISP51 PC RS232 MCU SH88F516 SH88F516 1.1 SH88F516 1.1 SH88F516 SH88Fxx: QFP44, DIP40 RAM Flash E2 ADC

More information

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0

1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F B. 1(VCC/GND) SH79F6431 C. VDDIO SH79F6431 P4 P5 P0.6 P0.7 VDDIO VDDIO=5V D. 2 V 1.0 SH79F6431 1. SH79F6431 1T 8051 FLASH SH79F JET51 Keil µ vision JTAG 1.1. SH79F6431 LQFP64 1.2. (Target Board) SH79F6431 1 V 1.0 1-1 SH79F6431 A. 2( ) 9~15V ( 12V) U2 U3 3.3V SH79F6431 1 2 1 B. 1(VCC/GND)

More information

W77E58中文手册

W77E58中文手册 W77E58 77E58 8051 8051 8051 77E58 8051 1.5 3 COMS 32K EEPROM 1K SRAM 1 8 2 40M 4 3 8051 4 8051 5 4 8 I/O 6 4 I/O 44 PLCC QFP 7 16 / 8 12 9 10 11 1K 12 13 16 DPTR 14 15 DIP40 W77E58 25/40 PLCC44 W77E58P

More information

SH79F161B I/O 1. SH79F161B SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = IO PxCRy IO x=0-3 y=0-7

SH79F161B I/O 1. SH79F161B SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = IO PxCRy IO x=0-3 y=0-7 SH79F161B - 10 ADC 8051 V 1.0 SH79F161B I/O 1. SH79F161B 8051 8051 SH79F161B IO 30 I/O I/O 4 I/O SH79F161B 30 I/O Px I/O PxCRy I/O PxPCRy x = 0-3 y = 0-7 2. IO PxCRy IO x=0-3 y=0-7 PxPCRy IO x=0-3 y=0-7

More information

G80F915

G80F915 VER1.2 2014.5 选型指南 订购型号 FLASH ROM RAM I/O MAX TIMER INT LCD LED PWM EUART 其他温度范围封装 G80F915U 32K 1.5K 46 4*16 5 8*24/6*26 1*12 3~8*8 5*27/4*28 1*8 G80F915F 32K 1.5K 42 4*16 5 8*20/6*22 1*12 3~8*8 5*23/4*24

More information

DPJJX1.DOC

DPJJX1.DOC 8051 111 2K 1 2 3 ' ' 1 CPU RAM ROM / A/D D/A PC CPU 40 68 10 20 8 51 PIII 8051 2 MCS51 8051 8031 89C51 8051 8031 89C51? MCS51 INTEL INTEL 8031 8051 8751 8032 8052 8752 8051 8051 8051 MCS51 8031 8031

More information

79F161 V0.2

79F161 V0.2 集成 24 路触摸按键输入和 PWM 的增强型 8051 微控制器 1. 特性 基于 8051 指令流水线结构的 8 位单片机 Flash ROM:32K 字节 RAM: 内部 256 字节, 外部 1280 字节,LCD RAM28 字节 touchkey RAM 48 字节 类 EEPROM: 最大 4096 字节 ( 代码选项可选 ) 工作电压 : - f OSC = 32.768kHz -

More information

7688使用手冊V10.doc

7688使用手冊V10.doc TP-7688 . 2 2. 3 3. 5 4. 5 5. 6 6. 7 7. 8 8. 9 9.. 4. 7 2 2., 7x9 / 6x9 7x9.3() x 3.()mm 6x9 2.84() x 3.()mm 3 ASCII 7x9 95 ASCII 6x9 95 6x9 7 BIG5 6x9 3973 6x9 28 7x9 24 24 55 6x9 2 2 27 4.23mm (/6 inch)

More information

79F161 V0.2

79F161 V0.2 SH79F16 1611 11 集成 ADC 和 PWM 的增强型 8051 微控制器 1. 特性 基于 8051 指令流水线结构的 8 位单片机 集成单周期执行时间 16 X 16bit 硬件乘法器 集成 8 周期执行时间 32 / 16bit 硬件除法器 集成 1 周期 32bit 硬件移位单元 Flash ROM:16K 字节 RAM:1.5K 字节 工作电压 : f OSC = 400k -

More information

79F161 V0.2

79F161 V0.2 带 10 位 ADC 的增强型 8051 微控制器 1. 特性 基于 8051 指令流水线结构的 8 位单片机 Flash ROM:16K 字节 RAM: 内部 256 字节, 外部 512 字节 工作电压 : - f OSC = 400kHz - 16MHz,V DD = 3.6V - 5.5V 振荡器 ( 代码选项 ): - 晶体谐振器 :400kHz - 16MHz - 陶瓷谐振器 :400kHz

More information

79F161 V0.2

79F161 V0.2 SH88F2051 / 带 10 位 ADC 的 2051/4051 微控制器 1. 特性 基于 8051 兼容流水指令的 8 位单片机 Flash ROM:4K/8K 字节 RAM: 内部 256 字节, 外部 256 字节 片上 512 字节类 EEPROM 存储空间 工作电压 : fosc = 30kHz - 16.6MHz,VDD = 2.8V - 5.5V 振荡器 ( 代码选项 ): -

More information

Microsoft Word - 專題封面.doc

Microsoft Word - 專題封面.doc 逢 甲 大 學 資 訊 工 程 學 系 專 題 研 究 報 告 8051 小 遊 戲 -21 點 指 導 教 授 : 陳 德 生 學 生 : 許 博 益 中 華 民 國 九 十 六 年 六 月 I 目 錄 第 一 章 緒 論 1 1-1 研 究 背 景 1 1-2 研 究 動 機 2 1-3 研 究 目 的 3 1-3-1 21 點 源 起 3 1-3-2 21 點 規 則 3 第 二 章 微 電

More information

目 录

目 录 1 Quick51...1 1.1 SmartSOPC Quick51...1 1.2 Quick51...1 1.3 Quick51...2 2 Keil C51 Quick51...4 2.1 Keil C51...4 2.2 Keil C51...4 2.3 1 Keil C51...4 2.4 Flash Magic...9 2.5 ISP...9 2.6...10 2.7 Keil C51...12

More information

79F161 V0.2

79F161 V0.2 带增强型 8051 的电力线载波通信控制器 1. 特性 基于 8051 指令流水线结构的 8 位单片机 Flash ROM:16K 字节 类 EEPROM:2K 字节 RAM: 内部 256 字节, 外部 512 字节 工作电压 : V DD = 3.0V - 5.5V,AV DD = 3.0V - 3.6V 振荡器 : - 晶体谐振器 :8MHz - 16MHz 16 个 CMOS 双向 I/O

More information

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS

SST SPAC SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD / SoftICE SoftICE MCU SoftICE SS SST SoftICE SST89C5x/SST89x554RC /564RD /SST89x516/5xRD2 1...2 1.1...2 1.2...2 1.3 /...2 2 SoftICE...2 3 SoftICE MCU...2 4 SoftICE...3 4.1 SST BootLoader SOFTICE...3 4.2 SoftICE SST MCU...6 5 SoftICE...7

More information

1

1 W7E65 1. W7E65 ISP Flash EPROM ISP Flash EPROM 52 W7E65 64K Flash EPROM 4K Flash EPROM 4K Flash EPROM loader 64K ROM 1K RAM 4 I/O 4 I/O P4 3 16 / 2 W7E65 Flash EPROM W7E65 2 2 2. CMOS 12 64K ISP Flash

More information

5. P0.0 P0.7 P0 4 2 P0.3~P0.6 ADC P1.0 P P1.2(SCL) P1.3(SDA) P1.5 RST P1.5 2 XTAL1(P2.1) 1 XTAL0(P2.0) 2 XTAL1 I/O VDD VSS 6. H5815 4T 16K Flas

5. P0.0 P0.7 P0 4 2 P0.3~P0.6 ADC P1.0 P P1.2(SCL) P1.3(SDA) P1.5 RST P1.5 2 XTAL1(P2.1) 1 XTAL0(P2.0) 2 XTAL1 I/O VDD VSS 6. H5815 4T 16K Flas H5815 1. H5815 H5815 3 H5815 8052 16K Flash EPROM 256 NVM Flash EPROM 256 RAM 2 8 1 2 I/O 16-2 / 4 10 AD 4 10 PWM 1 I2C 1 UART 13 4 H5815 2. 4T 51 20MHZVDD=2.7V~ 16K Flash EPROM 256 RAM 256 NVM FLASH EPROM

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information

128K Flash EPROM 的程序?\(Bank=64K\) 切?

128K Flash EPROM 的程序?\(Bank=64K\) 切? 应用说明 华邦 8 位单片机 (8051 内核 ) 应用说明 华邦 8 位单片机 (8051 内核 ) ANSC-UC08-0007 目录 - 1. 应用说明 :...4 1.1...4 1.2 相关寄存器介绍...4 1.2.1 串行口控制寄存器 (SCON)... 4 1.2.2 串行数据缓冲寄存器 (SBUF)... 5 1.2.3 串行口控制 1 (SCON1)... 5 1.2.4 串行数据接收缓冲

More information

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File

1 Project New Project 1 2 Windows 1 3 N C test Windows uv2 KEIL uvision2 1 2 New Project Ateml AT89C AT89C51 3 KEIL Demo C C File 51 C 51 51 C C C C C C * 2003-3-30 [email protected] C C C C KEIL uvision2 MCS51 PLM C VC++ 51 KEIL51 KEIL51 KEIL51 KEIL 2K DEMO C KEIL KEIL51 P 1 1 1 1-1 - 1 Project New Project 1 2 Windows 1 3 N C test

More information

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit

6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C C C51 C51 ANSI C MCS-51 C51 ANSI C C C51 bit Byte bit sbit 6 C51 ANSI C Turbo C C51 Turbo C C51 C51 C51 C51 C51 C51 C51 C51 C51 6.1 C51 6.1.1 C51 C51 ANSI C MCS-51 C51 ANSI C C51 6.1 6.1 C51 bit Byte bit sbit 1 0 1 unsigned char 8 1 0 255 Signed char 8 11 128

More information

1 TPIS TPIS 2 2

1 TPIS TPIS 2 2 1 1 TPIS TPIS 2 2 1. 2. 3. 4. 3 3 4 5 4 TPIS TPIS 6 5 350 Mark Coil F3/F6 350 M 150 M 25 M 7.12M 8 M F3 F6 F4 F7 F8 8M AA 7 350 28V 5V IC HCPL2731 0.5mA 6 8 (TPIS) TPIS 9 7 IC AT89C2051 AT89C2051 CMOS8

More information

四位微控制器ML64168_ _.doc

四位微控制器ML64168_ _.doc SSSC /4168P 2005 8 4 4, (ADC), LCD Driver, (Buzzer), 1 3 CPU17 CPU 26 33 42 45 48 73 79 85 89 A/D 92 111 125 128 131 SSU4168P 133 143 A: / 153 B: 156 C: 158 D: 160 E: 161 F: 163 G: PAD 167 2 ,, 11 4 CMOS

More information

at89S52.doc

at89S52.doc 主要性能 与 MCS-51 单片机产品兼容 8K 字节在系统可编程 Flash 存储器 1000 次擦写周期 全静态操作 :0Hz~33Hz 三级加密程序存储器 32 个可编程 I/O 口线 三个 16 位定时器 / 计数器 八个中断源 全双工 UART 串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 8 位微控制器 8K 字节在系统可编程 Flash R 功能特性描述

More information

ICD ICD ICD ICD ICD

ICD ICD ICD ICD ICD MPLAB ICD2 MPLAB ICD2 PIC MPLAB-IDE V6.0 ICD2 usb PC RS232 MPLAB IDE PC PC 2.0 5.5V LED EEDATA MPLAB ICD2 Microchip MPLAB-IDE v6.0 Windows 95/98 Windows NT Windows 2000 www.elc-mcu.com 1 ICD2...4 1.1 ICD2...4

More information

µPSD3000 系列

µPSD3000 系列 8032 FLASH MCU µpsd3251f-40t6 µpsd3251 8032 FlashPSD Flash SRAM I/O I 2 C, ADC and PWM 8032, 16 / FlashPSD µpsd32 JTAG ISP 2K SRAM Flash - 64K Flash - 16K Flash - Flash 8032 12 I2C ADC 6 I/O 37 I/O 16

More information

2 PIC PIC 1 / CPU PIC MCU PIC RC

2 PIC PIC 1 / CPU PIC MCU PIC RC 2 PIC PIC 1 /... 2-2 2... 2-3 3... 2-4 4... 2-4 5... 2-4 6 CPU... 2-5 7 PIC MCU... 2-6 8 PIC16... 2-6 9... 2-7 10... 2-7 11 RC... 2-7 12... 2-8 13... 2-8 14 NOP... 2-9 15 PMD... 2-9 16... 2-10 17 WDTWDT...

More information

第5章:汇编语言程序设计

第5章:汇编语言程序设计 第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令

More information

USB解决方案.ppt

USB解决方案.ppt USB USB? RS232 USB USB HID U modem ADSL cable modem IrDA Silabs USB CP210x USB UART USB RS-232 USB MCU 15 USB 12 FLASH MCU 3 USB MCU USB MCU C8051F32x 10 ADC 1.5%, Vref CPU 25MIPS 8051 16KB Flash -AMUX

More information

12232A LED LED LED EL EL CCFL EL CCF

12232A LED LED LED EL EL CCFL EL CCF 12232A 0 50-20 +70-30 +85 LED LED LED EL EL CCFL EL CCF 122 x 32 1/32Duty 1/5Bias 6:00 STN( ), EL LED EL/100VAC 400HZ LED/4.2VDC 1 / VDD-VSS 0 6.5 V Ta=25 LCD VDD-V0 0 12.0 V V1 0 VDD V VDD-VSS - 4.75

More information

DATASHEET SEARCH SITE ==

DATASHEET SEARCH SITE == 1K 一次性编程, 10 位 ADC 型 4 位单片机 特性 基于 SH6610C, 10 位 ADC 型 4 位单片机 OTP ROM: 1K X 16 位 RAM: 124 X 4 位 - 28 系统控制寄存器 - 96 数据存储器 工作电压 : - fosc = 16MHz, VDD = 3.3V - 5.5V 6 个双向 I/O 端口 4 层堆栈 ( 包括中断 ) 一个 8 位自动重载定时

More information

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63>

<4D F736F F D20B5DAC8FDCBC4D5C2D7F7D2B5B4F0B0B82E646F63> 第三章 Q3 1 1. 省略了 I/O 操作的复杂逻辑, 易实现, 耗费低 ; 2. 可以利用丰富的内存寻址模式实现灵活的 I/O 操作 Q3 2 假设存储单元 ds1 处寄存器地址为 0x2000, 代码如下 #define ds1 0x2000 while ( *ds1 == 0 ) ; Q3 3 假设设备 (dev1) 中有两个寄存器 ds1 和 dd1,dev1 的地址为 0x1000,ds1

More information

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC

General Description: Preliminary TTP916 Consumer IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC General Description: IC VCD/DVD LCD Green mode Stand-by mode( 1W ) Features: 2.2V-5.5V LCD RAM read condition 2.6V-5.5V RC 15K 300pF 256KHZ default on 32 function key Built-in TT6221/TT6222 decoder Provide

More information

SPMC75F2413A_EVM_使用说明_V1.2.doc

SPMC75F2413A_EVM_使用说明_V1.2.doc SPMCFA EVM V. - Jan 0, 00 http://www.sunplusmcu.com ................ SPMCFA........... EEPROM.... I/O............ LED.... LED.... RS-........0............ EVM................ 0.....0..... SPMCFA EVM SPMCFA

More information

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi

SPHE8202R Design Guide Important Notice SUNPLUS TECHNOLOGY CO. reserves the right to change this documentation without prior notice. Information provi SPHE8202R Design Guide V2.0 JUN, 2007 19, Innovation First Road Science Park Hsin-Chu Taiwan 300 R.O.C. Tel: 886-3-578-6005 Fax: 886-3-578-4418 Web: www.sunplus.com SPHE8202R Design Guide Important Notice

More information

Microsoft Word - IRFWX-A124_A_SM59D03G2_SM59D04G2_PCA_ APN_SC_.doc

Microsoft Word - IRFWX-A124_A_SM59D03G2_SM59D04G2_PCA_ APN_SC_.doc 可程序计数数组 (PCA) 功能使用方法 1 适用产品 :SM59D04G2,SM59D03G2 2 应用说明 : PCA 共有五组, 每组皆可工作于以下七种模式 : 捕获模式 - 正缘捕获模式 (Positive edge capture mode) 捕获模式 - 负缘捕获模式 (Negative edge capture mode) 捕获模式 - 正缘及负缘捕获模式 (Both positive

More information

() () () () () () () () DDRAM () II

() () () () () () () () DDRAM () II 液晶模块说明书 SPEC NO YM2232A REV NO. 液晶显示模块产品说明书 产品类型 : 产品型号 : 产品描述 : 标准产品 YM2232A 22x32 图形点阵模块, 控制器 :SED52,LED 背光 客户名称 : 客户确认 : 编写 : Dexun Zou 审核 : HCC 批准 : Jingxi Yang 发行日期 : 22.8 大连佳显电子有限公司 地址 : 大连市沙河口区工华街

More information

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7

SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input HR7PPSC HR7PPSD SOP SOP6 +input input HR7PERB SSOP0 7 上海东软载波微电子有限公司 SMART www.essemi.com SMART 7P 0 HR7P OTPMCU A/D I/O OTP ROM RAM HR7P HR7P HR7PPMB MSOP0 7+input 06 6 6 HR7PPSC HR7PPSD SOP SOP6 +input 06 6 +input 06 6 6 6 HR7PERB SSOP0 7+input 06 6 6 HR7PESC

More information

Microsoft Word - SoftICE用户指南.doc

Microsoft Word - SoftICE用户指南.doc SST89E/V5xRD2 SST89E/V554RC SST89E/V564RD SST89E516RD2 单片机 SoftICE 用户指南 1 介绍 SoftICE 的英文是 Software In Circuit Emulator, 翻译成中文是 在电路上的软件模拟, 它是 SST 公司为方便 SST 用户使用 SST89E/V5xRD2 SST89E516RD2 SST89V516RD2 SST89E/V554RC

More information

Microsoft Word - ~ doc

Microsoft Word - ~ doc EEPROM 功能使用方法 1 适用产品 : 1.1 SM39R16A2/ SM39R12A2/ SM39R08A2 1.2 SM39R4051/ SM39R2051 1.3 SM39R04G1/ SM39R02G1 2 EEPROM 功能概述 : 2.1 使用 code flash 仿真为 Internal EEPROM, 在程序执行时, 可将 code flash 作为 data flash 储存数据使用

More information

CH559指令周期.doc

CH559指令周期.doc CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多

More information

System Design and Setup of a Robot to Pass over Steps Abstract In the research, one special type of robots that can pass over steps is designed and se

System Design and Setup of a Robot to Pass over Steps Abstract In the research, one special type of robots that can pass over steps is designed and se 8051 8051 System Design and Setup of a Robot to Pass over Steps Abstract In the research, one special type of robots that can pass over steps is designed and setup. This type of robot uses two kinds of

More information

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc

Microsoft Word - IRFWX_A051_C_SyncMOS_with_STC_APN_SC_.doc EEPROM 应用说明 1 适用产品 :SM59D03G2 SM59D04G2 series 2 应用范围 : 针对需使用 EEPORM 功能替换 STC 89C5X 的应用及汇编语言之范例程序 ( 使用内部扩充内存为暂存区 ) 3 功能说明 : 3.1 本公司上述产品 EEPORM 功能皆可替换 STC89C5X, 仅需对特殊功能缓存器定义 ( 详见表 1) 及 ISP 命令定义 ( 详见表 2)

More information

SH79F326应用指南

SH79F326应用指南 SH79F6442 用户指南 SH79F6442 用户指南 - 集成 4 路 UART 和 3 路 PWM 的增强型 8051 微控制器 1 V1.0 一 SH79F6442 I/O 应用指南 1. 概述 SH79F6442 是一种高速高效率 8051 可兼容单片机 在同样振荡频率下, 较之传统的 8051 芯 片它有着运行更快速的优越特性 SH79F6442 其 IO 特性为 : 61 个双向 I/O

More information

FM1935X智能非接触读写器芯片

FM1935X智能非接触读写器芯片 FM33A0xx MCU 2017. 05 2.0 1 (http://www.fmsh.com/) 2.0 2 ... 3 1... 4 1.1... 4 1.2... 4 1.3... 5 1.3.1... 5 1.3.2... 5 1.4... 8 1.4.1 LQFP100... 8 1.4.2 LQFP80... 9 1.4.3... 9 2... 15 2.1 LQFP100... 15

More information

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica

ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplica CP Chip Power ARM Cortex-M3 (STM32F) ARM Cortex-M3 (STM32F) STMicroelectronics ( ST) STM32F103 Core: ARM 32-bit Cortex -M3 CPU 72 MHz, 90 DMIPS with 1.25 DMIPS/MHz Single-cycle multiplication and hardware

More information

untitled

untitled XILINX Platform Cbale USB www.hseda.com ...... Platform Cable USB Compatible.................. impact.........1 platform Cable USB Compatible.........1...1...1...1...1...1 Platform Cable USB Compatible

More information

HC89F0431_0421_Datasheet_Ver1.07_cn

HC89F0431_0421_Datasheet_Ver1.07_cn HC89F0431 HC89F0421 数据手册 20/16 引脚 8 位 ADC 型 FLASH 单片机 外设功能引脚全映射 目录 1 产品简介... 5 1.1 功能特性... 5 1.2 系统框图... 7 1.3 引脚配置... 8 1.4 引脚描述... 9 1.5 外设功能引脚全映射模块 PTM... 14 2 CPU... 16 2.1 CPU 特性... 16 2.2 CPU 相关寄存器...

More information

PCM-3386用户手册.doc

PCM-3386用户手册.doc PCM-3386 BBPC-4x86 10/100M PC/104 (Lanry technology Co. Ltd. Zhuhai) 38 1012836 (Address: Room 1012,Linhai Building,No. 38,west of Shihua Road,Zhuhai City,Guangdong Province,China) (post code)519015 (phone)0756-3366659

More information

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32--

HD61202 HD HD61203 HD61202, HY HY HD61202 HD61202 HD61203 HD =4096 RAMRAM LCD 2HD HD HD /32-- HD61202 C-7 1 HD61202 HD61202 8 HD61203 HD61202, HY-12864 HY-19264 HD61202 HD61202 HD61203 HD61202 1 6464=4096 RAMRAM LCD 2HD61202 64 3HD61202 68 68 4HD61202 1/32--1/64 HD61202 HD61202 2 CS1,CS2,CS3 CS1

More information

单片机原理及应用实验指导书.doc

单片机原理及应用实验指导书.doc 1 2 3 4...2...4...9...9 AEDK598 MCS51...9 MCS51...10...10...10...10...10...10...11 P1...12...12...12....12...12...13 P3...14...14...14...14...14...14 I/O...15...15...15...15...15...16...17...17...17...17...17...18...19...19

More information

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC

,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC, LCD LC LCD PIC 单片机解决方案 集成 LCD 驱动器模块的 PIC 单片机 www.microchip.com/lcd ,Microchip Technology PIC LCD, PIC16F913/914/ 916/917/946 PIC18F6390/6490/8390/8490 PIC16F65J90/85J90 Microchip LCD LCD, Microchip 的优势 LCD PIC,

More information

Ps22Pdf

Ps22Pdf ( ) ( 150 ) 25 15 20 40 ( 25, 1, 25 ), 1. A. B. C. D. 2. A. B. C. D. 3., J = 1 H = 1 ( A B, J', J, H ) A. A = B = 1, J' =0 B. A = B = J' =1 C. A = J' =1, B =0 D. B = J' = 1, A = 0 4. AB + AB A. AB B. AB

More information

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1

TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT (f) 639 2A f B1 TSINGTEK DISPLAY CO.,LTD LCD CONTROLLER & DRIVER ST7920 OR EQUIVALENT 588 4 1 0571-85121224 85121742 85121304(f) 639 2A095 0571-88256346 89902095 f B1618 010-62051209 62000662 62568913 82036512 f http://www.tsingtek.com

More information

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集

XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 GHz 世界通用 ISM 频段, 它集 XNS104 产品说明书 AD 型 2.4G 高速无线收发单片机概述 2.4GHz 高速无线收发单片机 XNS104 是一个带 12 位 ADC, 以 OTP 为程序存储基础, 带 2.4G 高速无线收发芯片的单片机 无线收发单元工作在 2.400--2.483GHz 世界通用 ISM 频段, 它集成射频收发通路 频率发生器 晶体振荡器 调制解调器等功能模块, 并且支持一对多组网和带 ACK 的通信模式

More information

W79E825_824_823A_822A_SC6.PDF

W79E825_824_823A_822A_SC6.PDF 8- W79E825/824/823A/822A - 1.... 5 2.... 5 3.... 6 3.1 (RoHS)... 6 4.... 7 5.... 8 6.... 9 6.1 Flash EPROM... 9 6.2 I/O... 9 6.3 (UART)... 9 6.4... 9 6.5... 9 6.6... 10 6.7... 10 6.8 CPU... 10 6.8.1 ALU...10

More information

MPC89LE51_52_53_54_58_515

MPC89LE51_52_53_54_58_515 5 8 bit micro controller 1 特性...2 2 引脚...3 2.1 引脚图...3 2.1 引脚定义...4 3 方框图...6 4 特殊功能寄存器...7 辅助寄存器 AUXR 和 AUXR1...8 5 存储器...9 5.1 RAM...9 MPC89x54/58/515 RAM 空间 (00 7F 可直接或间接寻址 )...9 MPC89x51/5 2/53 RAM

More information

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg

Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15 LM361 LM361 Zlg 1 1 a. 0.5V 5V 1Hz 1MHz b. 0.1% 2 : a. 0.5V 5V 1Hz 1MHz b. 0.1% (3) a. 0.5V 5V 100 s b. 1% 4 1 10 5 1MHz 6 1 2 1 0.1Hz 10MHz 0.5V 5V 0.01% 10s 2 0.5V 5V 1Hz 1kHz 10% 90% 1% 3 1Hz 1MHz 1% EPM7128SLC84-15

More information

MPC82G516

MPC82G516 8051 内核 - 单片机 MPC82G516 規格书 北京菱电科技有限公司 TEL:010-82674978 版本 : A1.0 This document contains information on a new product under development by Megawin. Megawin reserves the right to change or discontinue this

More information

2005.book

2005.book ...4... 4... 7...10... 10... 10... 10... 10... 11... 11 PCC... 11 TB170... 12 /... 12...13... 13 BP150 / BP151 / BP152 / BP155... 14...15... 15... 15... 15... 15... 15... 15... 16 PS465 / PS477... 17 PS692

More information

SinOne SC92F7447B/7446B/7445B 超高速 1T 8051 内核 Flash MCU,1 Kbytes SRAM,16 Kbytes Flash,128 bytes 独立 EEPROM,12 位 ADC,1 个模拟比较器,LCD/LED Driver,12 位 PWM,3 个

SinOne SC92F7447B/7446B/7445B 超高速 1T 8051 内核 Flash MCU,1 Kbytes SRAM,16 Kbytes Flash,128 bytes 独立 EEPROM,12 位 ADC,1 个模拟比较器,LCD/LED Driver,12 位 PWM,3 个 ,1 Kbytes SRAM,16 Kbytes Flash,128 bytes 独立 EEPROM,12 位 ADC,1 个模拟比较器,LCD/LED Driver,12 位 PWM,3 个定时器, 乘除法器,UART,SSI,Check Sum 校验模块 1 总体描述 ( 以下简称 SC92F744XB) 系列是一颗增强型的超高速 1T 8051 内核工业级 Flash 微控制器, 指令系统完全兼容传统

More information

untitled

untitled 8086/8088 CIP /. 2004.8 ISBN 7-03-014239-X.... TP313 CIP 2004 086019 16 100717 http://www.sciencep.com * 2004 8 2004 8 1 5 500 787 1092 1/16 16 1/2 391 000 1 2 ii 1 2 CAI CAI 3 To the teacher To the student

More information

PowerPoint 簡報

PowerPoint 簡報 微算機原理與實驗 (UEE 2301/1071 ) Chap 5. MCS-51 Addressing Modes 宋開泰 Office:EE709 Phone:5731865( 校內分機 :31865) E-mail:[email protected] URL:http://isci.cn.nctu.edu.tw 1 Addressing Modes Addressing mode is

More information

中文手册

中文手册 PCC-3428 PC/104 1. PCC-3428 1.1 PCC-3428 90mm 96mm ST CPU STPC Atlas Atlas CPU 486 DX/DX2 CPU DX2 133MHz Atlas 2D LCD/CRT 100MHz SDRAM 64MBytes PCC-3428 10/100Mbps DOC EIDE USB PC/104 ST STPC Atlas STPC

More information

untitled

untitled EDM12864-GR 1 24 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3 4. -------------------------------------------------------6

More information

AT89C2051中文资料.doc

AT89C2051中文资料.doc 图形点阵液晶显示模块使用手册 TG12864C(L) 广州捷胜吉电子科技 地址 : 广州市天河区天河路 561# 新赛格电子城 B2226 电话 :(020)33550997 13829772038 网址 :WWW.GZJSJDZ.COM E-mail:[email protected] 目 录 ( 一 ) 概述 (1) ( 二 ) 外形尺寸图 (1) ( 三 ) 模块主要硬件构成说明 (2) ( 四 )

More information

Applications

Applications 概述 FM1905 是 24 点 内存映象和多功能的 LCD 驱动器,FM1905 的软件配置特性使它适用于多种 LCD 应用场合, 包括 LCD 模块和显示子系统 用于连接主控制器和 FM1905 的管脚只有 3 条,FM1905 还有一个节电命令用于降 低系统功耗 特点 工作电压 3.0 ~5.0V 内嵌 256KHz RC 振荡器 可外接 32KHz 晶片或 256KHz 频率源输入 可选 1/2

More information

Microsoft Word - FG12232A.doc

Microsoft Word - FG12232A.doc 图形点阵液晶显示模块使用手册 FG2232A 广州市方舟电子有限公司 公司网站 :www.arkteck.com 地址 : 广州市天河区东圃桃园路 33 号 5 楼电话 :2-82574878 82574677 8854485 传真 :82574878 82574677 分机 88 目 录 ( 一 ) 基本特性 () ( 二 ) 原理图 (2) ( 三 ) 限定参数 (2) ( 四 ) 直流特性 (2)

More information

untitled

untitled EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3

More information

33023A.book(31026A_cn.fm)

33023A.book(31026A_cn.fm) 26 第 26 章看门狗定时器与休眠模式 目录 看门狗定时器与休眠模式 本章包括下面一些主要内容 : 26.1 简介... 26-2 26.2 控制寄存器... 26-3 26.3 看门狗定时器 (WDT) 的操作... 26-4 26.4 休眠省电模式... 26-7 26.5 初始化... 26-9 26.6 设计技巧... 26-10 26.7 相关应用笔记... 26-11 26.8 版本历史...

More information

Microsoft Word - FM12232C.doc

Microsoft Word - FM12232C.doc SPEC NO YM2232C REV NO. : YM2232C : 22x32 SED52 LED : Dexun Zou HCC : Jingxi Yang : 22.8 目 录 ( 一 ) 基本特性 () ( 二 ) 限定参数 () ( 三 ) 直流特性 (2) ( 四 ) 交流特性 (2) ( 五 ) 机械尺寸图 (3) ( 六 ) 原理图 (3) ( 七 ) DDRAM 地址表 (4)

More information

Section1_16bit Arc.ppt

Section1_16bit Arc.ppt 16-bit Elite Program 2009 Summer Section-1 Microchip 16-bit 2005 Microchip Technology Incorporated. All Rights Reserved. Slide 1 MCU CPU (NOP),, (Data Memory), I/O CPU w. ALU/Working Reg. Data Mem. Data

More information

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor

(Load Project) (Save Project) (OffLine Mode) (Help) Intel Hex Motor 1 4.1.1.1 (Load) 14 1.1 1 4.1.1.2 (Save) 14 1.1.1 1 4.1.2 (Buffer) 16 1.1.2 1 4.1.3 (Device) 16 1.1.3 1 4.1.3.1 (Select Device) 16 2 4.1.3.2 (Device Info) 16 2.1 2 4.1.3.3 (Adapter) 17 2.1.1 CD-ROM 2 4.1.4

More information

untitled

untitled EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3

More information

S3F94C8/S3F94C4

S3F94C8/S3F94C4 Rev. 0.0, Jan.2009 S3F94C8/S3F94C4 8-BIT CMOS MICROCONTROLLERS Revision 1.00 May 2010 用 户 手 册 YYYY Samsung Electronics Co., Ltd. All rights reserved. Rev. 0.0, Jan.2009 Important Notice The information

More information