79F161 V0.2
|
|
|
- 苑拒 俞
- 7 years ago
- Views:
Transcription
1 带 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 - 16MHz - 内部 RC 振荡器 :12.3MHz 30 个 CMOS 双向 I/O 管脚 4 个可选择的开漏极 I/O 口 8 个灌电流强驱动 I/O 口 I/O 内建上拉电阻 中断源 : - Timer0,Timer1,Timer2 - 外部中断 外部中断 4:8 输入 - ADC,EUART,SPI,PWM 增强型 UART 3 个 16 位定时器 / 计数器 T0,T1 和 T2 一个 12 位 PWM 定时器 两个 8 位 PWM 定时器 SPI 接口 ( 主 / 从模式 ) 8 通道 10 位模数转换器 (ADC), 内建数字比较功能 内建蜂鸣器 内建的低电压复位功能 ( 代码选项 ) - LVR 电压 1:4.1V - LVR 电压 2:3.7V CPU 机器周期 : 一个振荡周期 看门狗定时器 (WDT) 预热计数器 低功耗工作模式 : - 空闲模式 - 掉电模式 Flash 型 封装 :32 引脚 LQFP 封装 2. 概述 SH79F 是一种高速高效率 8051 兼容单片机 在同样振荡频率下, 较之传统的 8051 芯片它具有运行更快速, 性能更优越的特性 SH79F 保留了标准 8051 芯片的大部分特性, 包括内置 256 字节 RAM 和 2 个 16 位定时器 / 计数器,1 个 EUART 等 此外, SH79F 还包括外置 512 字节 RAM, 集成了可兼容 8052 芯片的 16 位定时器 / 计数器 (Timer2) 和用于存储程序和数据的 16K 字节 Flash SH79F 不仅集成了如 EUART,SPI 等标准通讯模块, 还集成了具有比较功能的 ADC, 带 6 路输出的 PWM 等模块 此外, SH79F 集成了看门狗定时器, 具有低电压复位功能, 提供了 2 种低功耗省电模式 1 V1.0
2 3. 方框图 VDD Power Pipelined 8051 architecture Reset circuit RST Watch Dog 16K Bytes Flash ROM Internal 256 Bytes External 512 Bytes Data RAM Port 0 Configuration I/O Port 1 Configuration I/O P0.0 ~ P0.7 P1.0 ~ P1.7 Timer0 (16bit) Timer1 (16bit) Timer2 (16bit) Port 2 Configuration I/O P2.0 ~ P2.7 External Interrupt Port 3 Configuration I/O P3.0~ P bit PWM SPI 8-bit PWM EUART 8-bit PWM 10-bit ADC XTAL1 Internal Oscillator Oscillator JTAG ports (for debug) XTAL2 buzzer 2
3 4. 引脚配置 32 脚 LQFP 封装 P2.4/PWM0 INT3/P0.1 P2.3/PWM2 INT2/P0.0 INT 47 /P1.0 INT 44 /P1.1 TDO /INT 43 /AN4/P1.2 TMS /INT42 /AN5/P1.3 TDI /INT 41 /AN6/P1.4 P2.2/MOSI/RXD P2.1/MISO/TXD P2.0/SCK/BZ P3.5 P3.0/SS/FLT P3.1/INT0/T2 T0/P1.6 XTAL2/P3.3 XTAL1/P3.4 P0.3/AN1 P0.4/AN2 P0.5/AN3 P0.6/T1 P2.5/PWM AN0/P SH79F TCK /INT40 /AN7/P1.5 RST/P1.7 VDD VSS T2EX/P3.2 P0.7/INT1/PWM21 P2.7/INT 46 /PWM11 P2.6/INT 45/PWM01 3
4 Table 4.1 引脚功能 引脚编号 (32 LQFP) 引脚命名默认功能 28 INT47/P1.0 P INT44/P1.1 P TDO/INT43/AN4/P1.2 P TMS/INT42/AN5/P1.3 P TDI/INT41/AN6/P1.4 P1.4 1 TCK/INT40/AN7/P1.5 P1.5 2 T0/P1.6 P1.6 3 RST /P1.7 复位引脚或是 P1.7 口 ( 代码选项控制 ) 6 V DD V SS XTAL1/P3.4 P3.4 口或是振荡器输入引脚 ( 代码选项控制 ) 4 XTAL2/P3.3 P3.3 口或是振荡器输出引脚 ( 代码选项控制 ) 8 T2EX/P3.2 P3.2 9 T2/INT0/P3.1 P FLT/ SS /P3.0 P P3.5 P BZ/SCK/P2.0 P TXD/MISO/P2.1 P RXD/MOSI/P2.2 P PWM2/P2.3 P PWM0/P2.4 P PWM1/P2.5 P PWM01/INT45/P2.6 P PWM11/INT46/P2.7 P PWM21/INT1/P0.7 P T1/P0.6 P0.6 *22 AN3/P0.5 P0.5 *23 AN2/P0.4 P0.4 *24 AN1/P0.3 P0.3 *25 AN0/P0.2 P INT3/P0.1 P INT2/P0.0 P0.0 SH79F16 注意 : (1) 带 * 引脚可以配置为 N 沟道的开漏輸出, 但是引脚电压不得高于 V DD (2) 引脚命名中, 写在最外侧的功能具有最高优先级, 最内侧的功能具有最低优先级 ( 参见引脚配置图, 例如 T2/INT0/P3.1, P3.1 优先级最低,INT0 次之,T2 最高 ) 当一个引脚被高优先级的功能占用时, 即使低优先级功能被允许, 也不能作为低优先级功能的引脚 只有当软件禁止引脚的高优先级功能, 相应引脚才能被释放作为低优先级端口使用 4
5 5. 引脚描述 I/O 端口 定时器 EUART SPI ADC 引脚命名类型说明 P0.0 - P0.7 I/O 8 位双向 I/O 端口 P1.0 - P1.7 I/O 8 位双向 I/O 端口 P2.0 - P2.7 I/O 8 位双向 I/O 端口 P3.0 - P3.5 I/O 6 位双向 I/O 端口 T0 I/O Timer0 外部输入或比较输出 T1 I/O Timer1 外部输入或比较输出 T2 I/O Timer2 外部输入 / 波特率时钟输出 T2EX I Timer2 重载 / 捕捉 / 方向控制 PWM0 O 12 位 PWM 定时器输出引脚 PWM1 O 8 位 PWM 定时器输出引脚 PWM2 O 8 位 PWM 定时器输出引脚 PWM01 O 与 PWM0 有固定相位关系的 12 位 PWM 定时器输出引脚 PWM11 O 与 PWM1 有固定相位关系的 8 位 PWM 定时器输出引脚 PWM21 O 与 PWM2 有固定相位关系的 8 位 PWM 定时器输出引脚 FLT I PWM 故障输入引脚 RXD I/O EUART 数据输入 TXD O EUART 数据输出 MOSI I/O SPI 主输出从输入引脚 MISO I/O SPI 主输入从输出引脚 SCK I/O SPI 串行时钟引脚 SS I SPI 从设备选择引脚 AN0 - AN7 I ADC 输入通道 中断 & 复位 & 时钟 & 电源 蜂鸣器 INT0 - INT3 I 外部中断 0-3 INT40 - INT47 I 外部中断 RST XTAL1 I 谐振器输入 XTAL2 O 谐振器输出 V SS P 接地 I V DD P 电源 ( V) BUZCON O 蜂鸣器 该引脚上保持 10µs 以上的低电平,CPU 将复位 由于有内建 100kΩ 上拉电阻连接到 V DD, 所以仅接一个外部电容即可实现上电复位 5
6 续上表 编程器 引脚命名类型说明 TDO (P1.2) O 调试接口 : 测试数据输出 TMS (P1.3) I 调试接口 : 测试模式选择 TDI (P1.4) I 调试接口 : 测试数据输入 TCK (P1.5) I 调试接口 : 测试时钟输入 注意 : 当 P 作为调试接口时,P 的原有功能被禁止 6
7 6. SFR 映像 SH79F16 SH79F 内置 256 字节的直接寻址寄存器, 包括通用数据存储器和特殊功能寄存器 (SFR),SH79F 的 SFR 有以下几种 : CPU 内核寄存器 : ACC,B,PSW,SP,DPL,DPH CPU 内核增强寄存器 :AUXC,DPL1,DPH1,INSCON,XPAGE 电源时钟控制寄存器 :PCON,SUSLO Flash 寄存器 : 数据存储页寄存器 : IB_OFFSET,IB_DATA,IB_CON1,IB_CON2,IB_CON3,IB_CON4,IB_CON5 XPAGE 看门狗定时器寄存器 :RSTSTAT 系统时钟控制寄存器 :CLKCON 中断寄存器 : I/O 口寄存器 : Timer 寄存器 : EUART 寄存器 : SPI 寄存器 : ADC 寄存器 : BUZZER 寄存器 : IEN0,IEN1,IENC,IPH0,IPL0,IPH1,IPL1,EXF0,EXF1 P0,P1,P2,P3,P0CR,P1CR,P2CR,P3CR,P0PCR,P1PCR,P2PCR,P3PCR, P0OS TCON,TMOD,TH0,TH1,TL0,TL1,T2CON,T2MOD,TH2,TL2,RCAP2L,RCAP2H, TCON1 SCON,SBUF,SADEN,SADDR,PCON SPCON,SPSTA,SPDAT ADCON,ADT,ADCH,ADDL,ADDH BUZCON PWM 寄存器 : PWMEN, PWMLO, PWM0C, PWM0PL, PWM0PH, PWM0DL, PWM0DH, PWM1C, PWM1P,PWM1D,PWM2C,PWM2P,PWM2D,PWM0DT,PWM1DT,PWM2DT 7
8 Table 6.1 C51 核 SFRs 符号地址名称 Table 6.2 电源时钟控制 SFRs Table 6.3 Flash 控制 SFRs POR/WDT/LVR /PIN SH79F16 第 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 数据指针选择 DIV MUL - DPS 符号地址名称 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 符号地址名称 IB_OFF SET POR/WDT/LVR /PIN FBH 可编程 flash 低位字节偏移 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IB_OFF SET.7 IB_OFF SET.6 IB_DATA FCH 可编程 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 IB_CON1 F2H 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 IB_CON2 F3H flash 控制寄存器 IB_CON2.3 IB_CON2.2 IB_CON2.1 IB_CON2.0 IB_CON3 F4H flash 控制寄存器 IB_CON3.3 IB_CON3.2 IB_CON3.1 IB_CON3.0 IB_CON4 F5H flash 控制寄存器 IB_CON4.3 IB_CON4.2 IB_CON4.1 IB_CON4.0 IB_CON5 F6H flash 控制寄存器 IB_CON5.3 IB_CON5.2 IB_CON5.1 IB_CON5.0 XPAGE F7H flash 页寄存器 XPAGE.7 XPAGE.6 XPAGE.5 XPAGE.4 XPAGE.3 XPAGE.2 XPAGE.1 XPAGE.0 IB_OFF SET.5 IB_OFF SET.4 IB_OFF SET.3 IB_OFF SET.2 IB_OFF SET.1 IB_OFF SET.0 8
9 Table 6.4 WDT SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 RSTSTAT B1H 看门狗定时器控制寄存器 *-***000 WDOF - PORF LVRF CLRF WDT.2 WDT.1 WDT.0 注意 :* 表示不同情况的复位决定 RSTSTAT 寄存器中的, 详见 WDT 章节 Table 6.5 时钟控制 SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 CLKCON B2H 系统时钟选择 CLKS1 CLKS Table 6.6 中断 SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 IEN0 A8H 中断允许控制 EA EADC ET2 ES ET1 EX1 ET0 EX0 IEN1 A9H 中断允许控制 EPWM - EX4 EX3 EX2 ESPI IENC BAH 外部中断 4 通道允许控制 EXS47 EXS46 EXS45 EXS44 EXS43 EXS42 EXS41 EXS40 IPH0 B4H 中断优先权控制高位 PADCH PT2H PSH PT1H PX1H PT0H PX0H IPL0 B8H 中断优先权控制低位 PADCL PT2L PSL PT1L PX1L PT0L PX0L IPH1 B5H 中断优先权控制高位 PPWMH - PX4H PX3H PX2H PSPIH IPL1 B9H 中断优先权控制低位 PPWML - PX4L PX3L PX2L PSPIL EXF0 E8H 外部中断寄存器 IT4.1 IT4.0 IT3.1 IT3.0 IT2.1 IT2.0 IE3 IE2 EXF1 D8H 外部中断寄存器 IF47 IF46 IF45 IF44 IF43 IF42 IF41 IF40 9
10 Table 6.7 端口 SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 P0 80H 8 位端口 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 P1 90H 8 位端口 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2 A0H 8 位端口 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P3 B0H 6 位端口 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 P0CR E1H 端口 0 输入 / 输出方向控制 P0CR.7 P0CR.6 P0CR.5 P0CR.4 P0CR.3 P0CR.2 P0CR.1 P0CR.0 P1CR E2H 端口 1 输入 / 输出方向控制 P1CR.7 P1CR.6 P1CR.5 P1CR.4 P1CR.3 P1CR.2 P1CR.1 P1CR.0 P2CR E3H 端口 2 输入 / 输出方向控制 P2CR.7 P2CR.6 P2CR.5 P2CR.4 P2CR.3 P2CR.2 P2CR.1 P2CR.0 P3CR E4H 端口 3 输入 / 输出方向控制 P3CR.5 P3CR.4 P3CR.3 P3CR.2 P3CR.1 P3CR.0 P0PCR E9H 端口 0 内部上拉允许 P0PCR.7 P0PCR.6 P0PCR.5 P0PCR.4 P0PCR.3 P0PCR.2 P0PCR.1 P0PCR.0 P1PCR EAH 端口 1 内部上拉允许 P1PCR.7 P1PCR.6 P1PCR.5 P1PCR.4 P1PCR.3 P1PCR.2 P1PCR.1 P1PCR.0 P2PCR EBH 端口 2 内部上拉允许 P2PCR.7 P2PCR.6 P2PCR.5 P2PCR.4 P2PCR.3 P2PCR.2 P2PCR.1 P2PCR.0 P3PCR ECH 端口 3 内部上拉允许 P3PCR.5 P3PCR.4 P3PCR.3 P3PCR.2 P3PCR.1 P3PCR.0 P0OS EFH 输出模式选择 P05OS P04OS P03OS P02OS
11 Table 6.8 定时器 SFRs 符号地址名称 Table 6.9 EUART SFRs POR/WDT/LVR /PIN SH79F16 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON 88H 定时器 / 计数器 0 和 1 控制寄存器 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TMOD 89H 定时器 / 计数器 0 和 1 模式寄存器 GATE1 C/ T1 M11 M10 GATE0 C/ T0 TL0 8AH 定时器 / 计数器 0 低位字节 TL0.7 TL0.6 TL0.5 TL0.4 TL0.3 TL0.2 TL0.1 TL0.0 TH0 8CH 定时器 / 计数器 0 高位字节 TH0.7 TH0.6 TH0.5 TH0.4 TH0.3 TH0.2 TH0.1 TH0.0 TL1 8BH 定时器 / 计数器 1 低位字节 TL1.7 TL1.6 TL1.5 TL1.4 TL1.3 TL1.2 TL1.1 TL1.1 TH1 8DH 定时器 / 计数器 1 高位字节 TH1.7 TH1.6 TH1.5 TH1.4 TH1.3 TH1.2 TH1.1 TH1.1 T2CON C8H 定时器 / 计数器 2 控制寄存器 TF2 EXF2 RCLK TCLK EXEN2 TR2 C/ T2 T2MOD C9H 定时器 / 计数器 2 模式寄存器 TCLKP T2OE DCEN RCAP2L CAH 定时器 / 计数器 2 重载 / 截获低位字节 RCAP2L.7 RCAP2L.6 RCAP2L.5 RCAP2L.4 RCAP2L.3 RCAP2L.2 RCAP2L.1 RCAP2L.0 RCAP2H CBH 定时器 / 计数器 2 重载 / 截获高位字节 RCAP2H.7 RCAP2H.6 RCAP2H.5 RCAP2H.4 RCAP2H.3 RCAP2H.2 RCAP2H.1 RCAP2H.0 TL2 CCH 定时器 / 计数器 2 低位字节 TL2.7 TL2.6 TL2.5 TL2.4 TL2.3 TL2.2 TL2.1 TL2.0 TH2 CDH 定时器 / 计数器 2 高位字节 TH2.7 TH2.6 TH2.5 TH2.4 TH2.3 TH2.2 TH2.1 TH2.0 TCON1 CEH 定时器 0/1 比较功能允许 TCLKP1 TCLKP0 TC1 TC0 符号地址名称 POR/WDT/LVR /PIN M01 M00 CP/RL2 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SCON 98H 串行控制 SM0/FE SM1/RXOV SM2/TXCOL REN TB8 RB8 TI RI SBUF 99H 串行数据缓冲器 SBUF.7 SBUF.6 SBUF.5 SBUF.4 SBUF.3 SBUF.2 SBUF.1 SBUF.0 SADEN 9BH 从属地址掩码 SADEN.7 SADEN.6 SADEN.5 SADEN.4 SADEN.3 SADEN.2 SADEN.1 SADEN.0 SADDR 9AH 从属地址 SADDR.7 SADDR.6 SADDR.5 SADDR.4 SADDR.3 SADDR.2 SADDR.1 SADDR.0 PCON 87H 电源和串行控制 SMOD SSTAT - - GF1 GF0 PD IDL 11
12 Table 6.10 SPI SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 SPCON A2H SPI 控制寄存器 DIR MSTR CPHA CPOL SSDIS SPR2 SPR1 SPR0 SPSTA F8H SPI 状态寄存器 SPEN SPIF MODF WCOL RXOV SPDAT A3H SPI 数据寄存器 SPD.7 SPD.6 SPD.5 SPD.4 SPD.3 SPD.2 SPD.1 SPD.0 Table 6.11 ADC SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 ADCON 93H ADC 控制 ADON ADCIF EC - SCH2 SCH1 SCH0 GO/ DONE ADT 94H ADC 时间配置 TADC2 TADC1 TADC0 - TS3 TS2 TS1 TS0 ADCH 95H ADC 通道配置 CH7 CH6 CH5 CH4 CH3 CH2 CH1 CH0 ADDL 96H ADC 数据低位字节 A1 A0 ADDH 97H ADC 数据高位字节 A9 A8 A7 A6 A5 A4 A3 A2 Table 6.12 Buzzer SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 BUZCON BDH 蜂鸣器输出控制 BCA3 BCA2 BCA1 BCA0 BZEN 12
13 Table 6.13 PWM SFRs 符号 地址 名称 POR/WDT/LVR /PIN 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 PWMEN 0CFH PWM 定时器允许 EFLT EPWM21 EPWM11 EPWM01 EPWM2 EPWM1 EPWM0 PWMLO 0E7H PWM 锁定 PWMLO.7 PWMLO.6 PWMLO.5 PWMLO.4 PWMLO.3 PWMLO.2 PWMLO.1 PWMLO.0 PWM0C 0D2H 12 位 PWM 控制 PWM0IE PWM0IF - FLTS FLTC PWM0S TnCLK01 TnCLK00 PWM0PL 0D3H 12 位 PWM 周期控制低位 PP0.7 PP0.6 PP0.5 PP.4 PP0.3 PP0.2 PP0.1 PP0.0 PWM0PH 0D4H 12 位 PWM 周期控制高位 PP0.11 PP0.10 PP0.9 PP0.8 PWM0DL 0D5H 12 位 PWM 占空比控制低位 PD0.7 PD0.6 PD0.5 PD0.4 PD0.3 PD0.2 PD0.1 PD0.0 PWM0DH 0D6H 12 位 PWM 占空比控制高位 PD0.11 PD0.10 PD0.9 PD0.8 PWM1C 0D9H 8 位 PWM1 控制寄存器 PWM1IE PWM1IF PWM1S TnCLK11 TnCLK10 PWM1P 0DAH 8 位 PWM1 周期控制 PP1.7 PP1.6 PP1.5 PP1.4 PP1.3 PP1.2 PP1.1 PP1.0 PWM1D 0DBH 8 位 PWM1 占空比控制 PD1.7 PD1.6 PD1.5 PD1.4 PD1.3 PD1.2 PD1.1 PD1.0 PWM2C 0DDH 8 位 PWM2 控制寄存器 PWM2IE PWM2IF PWM2S TnCLK21 TnCLK20 PWM2P 0DEH 8 位 PWM2 周期控制 PP2.7 PP2.6 PP2.5 PP2.4 PP2.3 PP2.2 PP2.1 PP2.0 PWM2D 0DFH 8 位 PWM2 占空比控制 PD2.7 PD2.6 PD2.5 PD2.4 PD2.3 PD2.2 PD2.1 PD2.0 PWM0DT 0D1H PWM01 死区时间控制 DT0.7 DT0.6 DT0.5 DT0.4 DT0.3 DT0.2 DT0.1 DT0.0 PWM1DT 0D7H PWM11 死区时间控制 DT1.7 DT1.6 DT1.5 DT1.4 DT1.3 DT1.2 DT1.1 DT1.0 PWM2DT 0DCH PWM21 死区时间控制 DT2.7 DT2.6 DT2.5 DT2.4 DT2.3 DT2.2 DT2.1 DT2.0 注意 :- : 保留位 13
14 SFR 映像图 可位寻址 不可位寻址 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F F8H SPSTA IB_OFFSET IB_DATA FFH F0H B AUXC IB_CON1 IB_CON2 IB_CON3 IB_CON4 IB_CON5 XPAGE F7H E8H EXF0 P0PCR P1PCR P2PCR P3PCR P0OS EFH E0H ACC P0CR P1CR P2CR P3CR PWMLO E7H D8H EXF1 PWM1C PWM1P PWM1D PWM2DT PWM2C PWM2P PWM2D DFH D0H PSW PWM0DT PWM0C PWM0PL PWM0PH PWM0DL PWM0DH PWM1DT D7H C8H T2CON T2MOD RCAP2L RCAP2H TL2 TH2 TCON1 PWMEN CFH C0H C7H B8H IPL0 IPL1 IENC BUZCON BFH B0H P3 RSTSTAT CLKCON IPH0 IPH1 B7H A8H IEN0 IEN1 AFH A0H P2 SPCON SPDAT A7H 98H SCON SBUF SADDR SADEN 9FH 90H P1 ADCON ADT ADCH ADDL ADDH 97H 88H TCON TMOD TL0 TL1 TH0 TH1 SUSLO 8FH 80H P0 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 地址禁止读写 14
15 7. 标准功能 7.1 CPU CPU 内核特殊功能寄存器特性 CPU 内核寄存器 :ACC,B,PSW,SP,DPL,DPH 累加器累加器 ACC 是一个常用的专用寄存器, 指令系统中采用 A 作为累加器的助记符 B 寄存器在乘除法指令中, 会用到 B 寄存器 在其它指令中,B 寄存器可作为暂存器来使用 SH79F16 栈指针 (SP SP) 栈指针 SP 是一个 8 位专用寄存器, 在执行 PUSH 各种子程序调用 中断响应等指令时,SP 先加 1, 再将数据压栈 ; 执行 POP RET RETI 等指令时, 数据退出堆栈后 SP 再减 1 堆栈栈顶可以是片上内部 RAM(00H-FFH) 的任意地址, 系统复位后,SP 初始化为 07H, 使得堆栈事实上由 08H 地址开始 程序状态字 (PSW PSW) 寄存器程序状态字 (PSW) 寄存器包含了程序状态信息 Table 7.1 PSW 寄存器 D0H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PSW C AC F0 RS1 RS0 OV F1 P 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 C 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 的位数为奇数 数据指针 (DPTR DPTR) 数据指针 DPTR 是一个 16 位专用寄存器, 其高位字节寄存器用 DPH 表示, 低位字节寄存器用 DPL 表示 它们既可以作为一个 16 位寄存器 DPTR 来处理, 也可以作为 2 个独立的 8 位寄存器 DPH 和 DPL 来处理 15
16 7.1.2 CPU 增强内核特殊功能寄存器 扩展的 'MUL' 和 'DIV' 指令 :16 位 *8 位,16 位 /8 位 双数据指针 CPU 增强内核寄存器 :AUXC,DPL1,DPH1,INSCON SH79F16 SH79F 扩展了 '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 DIV MUL - DPS 读 / 写 读 / 写读 / 写 - 读 / 写 DIV 2 MUL 0 DPS 16 位 /8 位除法选择位 0:8 位除法 1:16 位除法 16 位 /8 位乘法选择位 0:8 位乘法 1:16 位乘法 数据指针选择位 0: 数据指针 1: 数据指针 1 16
17 7.2 RAM 为了提高系统数据变量的处理能力, 支持高级语言,SH79F 提供了额外的 RAM 空间 SH79F 除内部 RAM 256 字节外, 还扩展了外部 512 字节的 RAM, 分为以下四个独立的空间 : 低位 128 字节的 RAM ( 地址从 00H 到 7FH) 可直接或间接寻址 高位 128 字节的 RAM ( 地址从 80H 到 FFH) 只能间接寻址 特殊功能寄存器 (SFR, 地址从 80H 到 FFH) 只能直接寻址 外部 RAM 可通过 MOVX 指令间接访问 SH79F16 高位 128 字节的 RAM 占用的地址空间和 SFR 相同, 但在物理上与 SFR 的空间是分离的 当一个指令访问高于地址 7FH 的内部位置时,CPU 可以根据访问的指令类型来区分是访问高位 128 字节数据 RAM 还是访问 SFR 注意 : 未使用的 SFR 地址禁止读写 内部和外部 RAM 配置如下 : 1FFH Extenal RAM 0FFH 80H Upper 128 bytes Internal Ram indirect accesses 0FFH 80H Special Function Register direct accesses 7FH Lower 128 bytes Internal Ram direct or indirect accesses RAM 地址 SH79F 支持传统的访问外部 RAM 方法 可以使用 MOVXA,@Ri 或 MOVX@Ri,A; 来访问外部低 256 字节 RAM; 使用 MOVX A,@DPTR 或 MOVX@DPTR,A 来访问外部 512 字节 RAM 用户也能用 XPAGE 寄存器来访问外部 RAM, 仅用 MOVX A,@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.7 XPAGE.6 XPAGE.5 XPAGE.4 XPAGE.3 XPAGE.2 XPAGE.1 XPAGE.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 XPAGE[7:0] RAM 页选择器 17
18 7.3 Flash 程序存储器 特性 Flash 存储器包括 16 X 1KB 区块, 总共 16KB 在工作电压范围内都能进行编程和擦除操作 在线编程 (ICP) 操作支持写入 读取和擦除操作 扇区自编程 (SSP) 操作支持扇区擦除和编程 程序存储区编程 / 擦除次数 : 至少 1000 次 数据保存年限 : 至少 10 年 低功耗 FFFFH Reserved (no use) 4000H (16K) Program Memory Block 0000H Program Memory Block SH79F 为存储程序代码内置 16K 可编程 Flash 程序存储区 (Program Memory Block), 支持在线编程 (ICP) 和扇区自编程 (SSP) 对 Flash 存储器操作 Flash 操作定义 : 在线编程 (ICP) 操作 : 通过 Flash 编程器对 Flash 存储器进行擦 读 写操作 扇区自编程 (SSP) 操作 : 用户程序代码运行在 Program Memory 中, 对 Flash 存储器进行擦 读 写操作 18
19 Flash 存储器支持以下操作 : SH79F16 (1) 代码保护控制模式编程 SH79F 的代码保护功能为用户代码提供了高性能的安全措施 每个分区有两种模式可用 代码保护模式 0: 允许 / 禁止任何编程器的写入 / 读取操作 ( 不包括整体擦除 ) 代码保护模式 1: 允许 / 禁止在其他扇区中通过 MOVC 指令进行读取操作, 或通过 SSP 模式进行擦除 / 写入操作 用户必须使用下列方式才能完成代码保护控制模式的设定 : Flash 编程器在 ICP 模式设置相应的保护位, 以进入所需的保护模式 SSP 模式不支持代码保护控制模式编程 (2) 整体擦除无论代码保护控制模式的状态如何, 整体擦除操作都将会擦除所有程序, 代码选项和代码保护位 用户必须使用下列方式才能完成整体擦除 : Flash 编程器在 ICP 模式发出整体擦除指令, 进行整体擦除 SSP 模式不支持整体擦除 (3) 扇区擦除扇区擦除操作将会擦除所选扇区中内容 用户程式 (SSP) 和 Flash 编程器都能执行该操作 若需用户程式执行该操作, 必须禁止所选扇区的代码保护控制模式 1 若需 Flash 编程器执行该操作, 必须禁止所选扇区的代码保护控制模式 0 用户必须使用下列 2 种方式之一才能完成扇区擦除 : 1. Flash 编程器在 ICP 模式发出扇区擦除指令, 进行扇区擦除 2. 通过 SSP 功能发出扇区擦除指令, 进行扇区擦除 ( 详见扇区自编程章节 ) (4) 写 / 读代码读 / 写代码操作可以将代码从 Flash 存储器中读出或写入 用户程式 (SSP) 和 Flash 编程器都能执行该操作 若需用户程式执行该操作, 必须禁止所选扇区的代码保护控制模式 1 不管安全位设置与否, 用户程序都能读 / 写程式自身所在扇区 若需编程器执行该操作, 必须禁止所选扇区的代码保护控制模式 0 用户必须使用下列 2 种方式之一才能完成写 / 读代码 : 1. Flash 编程器在 ICP 模式发出写 / 读代码指令, 进行写 / 读代码 2. 通过 SSP 功能发出写 / 读代码指令, 进行写 / 读代码 Flash 存储器操作汇总 操作 SSP ICP 代码保护不支持支持 扇区擦除支持 ( 无安全位 ) 支持 ( 无安全位 ) 整体擦除不支持支持 写 / 读代码支持 ( 无安全位 ) 支持 ( 无安全位 ) 19
20 7.3.2 ICP 模式下的 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 VDD TMS TCK TDI TDO GND Flash Programmer To Application Circuit Jumper 当采用 ICP 模式进行操作时, 建议按照如下步骤进行操作 : (1) 在开始编程前断开跳线 (jumper), 从应用电路中分离编程引脚 ; (2) 将芯片编程引脚连接至 Flash 编程器编程接口, 开始编程 ; (3) 编程结束后断开 Flash 编程器接口, 连接跳线恢复应用电路 20
21 7.4 扇区自编程 (SSP SSP) 功能 SH79F16 SH79F 支持 SSP 操作 如果所选扇区未被加密, 利用 SSP 操作, 用户代码可以对程序存储区进行擦除 编程操作 一旦某扇区被编程, 则在该扇区或块区被擦除之前不能被再次编程 SH79F 内建一个复杂控制流程以避免误入 SSP 操作导致代码被修改 为执行 SSP 操作,IB_CON2-5 设置必须满足特定条件 寄存器 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 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 Flash 程序存储区, 一个扇区为 1024 字节, 该寄存器定义如下 : Table 7.5 编程地址偏移寄存器 对 Flash 程序存储区, 一个扇区为 1024 字节, 该寄存器定义如下 : Table 7.6 编程用数据寄存器 Table 7.7 SSP 操作类型选择寄存器 XPAGE[7:2] 被编程的存储单元扇区号, 代表扇区 0, 以此类推 1-0 XPAGE[1:0] 被编程的存储单元高 2 位地址 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 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 /PIN POR/WDT/LVR IB_OFFSET[7:0] 被编程的存储单元低 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 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 /PIN POR/WDT/LVR IB_DATA[7:0] 待编程数据 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 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 /PIN POR/WDT/LVR IB_CON1[7:0] SSP 操作类型选择 E6H: 扇区擦除 ( 擦除时间 < 3ms) 6EH: 编程存储单元 ( 编程时间 < 30us) 21
22 Table 7.8 SSP 流程控制寄存器 1 F3H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 IB_CON IB_CON2.3 IB_CON2.2 IB_CON2.1 IB_CON2.0 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 /PIN POR/WDT/LVR 位编号 位符号 说明 3-0 IB_CON2[3:0] 必须为 05H, 否则 Flash 编程将会终止 Table 7.9 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 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 /PIN POR/WDT/LVR 位编号 位符号 说明 3-0 IB_CON3[3:0] 必须为 0AH, 否则 Flash 编程将会终止 Table 7.10 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 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 /PIN POR/WDT/LVR 位编号 位符号 说明 3-0 IB_CON4[3:0] 必须为 09H, 否则 Flash 编程将会终止 Table 7.11 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 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 /PIN POR/WDT/LVR 位编号 位符号 说明 3-0 IB_CON5[3:0] 必须为 06H, 否则 Flash 编程将会终止 22
23 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 IB_CON3 AH S1 IB_CON2 5H ELSE S2 Set IB_CON3=AH IB_CON3 AH Set IB_CON4=9H Reset IB_CON5-1 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 23
24 7.4.3 SSP 编程注意事项为确保顺利完成 SSP 编程, 用户软件应该遵循以下步骤设置 : (1) 用于代码 / 数据编程 : 1. 关闭中断 ; 2. 按相应的待编程扇区号或块区号设置 XPAGE IB_OFFSET; 3. 按编程需要, 设置 IB_DATA; 4. 按照顺序设置 IB_CON1-5; 5. 添加 4 个 NOP 指令 ; 6. 开始编程,CPU 将进入 IDLE 模式 ; 编程完成后自动退出 IDLE 模式 ; 7. 如需需要继续写入数据, 跳转至第 3 步 ; 8. XPAGE 寄存器和寄存器 (A7H) 写零 ; 恢复中断设置 (2) 用于扇区擦除 : 1. 关闭中断 ; 2. 按相应的扇区或块区设置 XPAGE; 3. 按照顺序设置 IB_CON1-5; 4. 添加 4 个 NOP 指令 ; 5. 开始擦除,CPU 将进入 IDLE 模式 ; 擦除完成后自动退出 IDLE 模式 ; 6. 如果需要继续擦除扇区或块区, 跳转至第 3 步 ; 7. XPAGE 寄存器和寄存器 (A7H) 写零 ; 恢复中断设置 (3) 读取 : 使用 MOVC A,@A+DPTR or MOVC A,@A+PC 指令 注意 : 执行 SSP 编程前, 请将寄存器 (A7H) 写零 24
25 7.5 系统时钟和振荡器 特性 支持 3 种振荡器类型 : 晶体谐振器 陶瓷谐振器和内部 RC 振荡器 内建 12.3MHz RC 振荡器 内建系统时钟分频器 时钟定义 SH79F 几个内部时钟定义如下 : SH79F16 OSCCLK: 从 3 个可选振荡器类型中 ( 从 XTAL1 输入的陶瓷谐振器, 晶体谐振器和内部 12.3MHz RC 振荡器 ) 选中的那个振荡器的时钟 f OSC 定义为 OSCCLK 的频率 t OSC 定义为 OSCCLK 的周期 WDTCLK: 内部的 32kHz 看门狗 RC 振荡器时钟 f WDT 定义为 WDTCLK 的频率 t WDT 定义为 WDTCLK 的周期 SYSCLK: 系统时钟, 系统频率分频器的输出时钟 这个时钟为 CPU 指令周期的时钟 f SYS 定义为 SYSCLK 的频率 t SYS 定义为 SYSCLK 的周期 SH79F 支持三种振荡器类型 : 晶体谐振器, 陶瓷谐振器和内建 RC 振荡器, 通过代码选项选择何种振荡器为系统提供时钟 振荡器产生的基本时钟脉冲作为系统时钟提供给 CPU 和片上外围模块 Table 7.12 系统时钟控制寄存器 B2H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 CLKCON - CLKS1 CLKS 读 / 写 - 读 / 写读 / 写 CLKS[1:0] 系统时钟频率分频器 00:f SYS = f OSC 01:f SYS = f OSC /2 10:f SYS = f OSC /4 11:f SYS = f OSC /12 25
26 7.5.3 振荡器类型 (1) 晶体谐振器 :400kHz - 16MHz XTAL1 C1 Crystal XTAL2 C2 (2) 陶瓷谐振器 :400kHz - 16MHz XTAL1 C1 Ceramic XTAL2 C2 (3) 内建 RC 振荡器 :12.3MHz XTAL1 XTAL 谐振器负载电容选择 频率 - 已经内建有负载电容 注意 : 陶瓷谐振器 C1 晶体谐振器 C2 频率 C1 4MHz 15pF 15pF 4MHz 8-15pF 8-15pF 8MHz - - 8MHz 8-15pF 8-15pF 16MHz MHz 8-15pF 8-15pF (1) 表中负载电容为设计参考数据! (2) 以上电容值已通过谐振器基本的起振和运行测试, 但并非最优值 (3) 请注意印制板上的杂散电容, 用户应在超过应用电压和温度的条件下测试谐振器的性能 在应用陶瓷谐振器和晶体谐振器之前, 用户需向谐振器生产厂索求相关应用参数以获得最佳性能 请登陆 以取得推荐的谐振器生产厂 C2 26
27 7.6 I/O 端口 特性 30 个双向 I/O 端口 I/O 端口可与其他功能共用 SH79F16 SH79F 提供 30 位位可编程双向 I/O 端口 端口数据在寄存器 Px 中 端口控制寄存器 (PxCRy) 控制端口是作为输入或者输出 当端口作为输入时, 每个 I/O 端口带有由 PxPCRy 控制的内部上拉电阻 (x = 0-3, y = 0-7) SH79F 的有些 I/O 引脚能与选择功能共用 当所有功能都允许时, 在 CPU 中存在优先权以避免功能冲突 ( 详见端口共用章节 ) 寄存器 Table 7.13 端口控制寄存器 E1H - E4H 第 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.6 P1CR.5 P1CR.4 P1CR.3 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.5 P3CR.4 P3CR.3 P3CR.2 P3CR.1 P3CR.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 Table 7.14 端口上拉电阻控制寄存器 PxCRy x = 0-3, y = 0-7 端口输入 / 输出控制寄存器 0: 输入模式 1: 输出模式 E9H - ECH 第 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.6 P1PCR.5 P1PCR.4 P1PCR.3 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.5 P3PCR.4 P3PCR.3 P3PCR.2 P3PCR.1 P3PCR.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 /PIN PxPCRy x = 0-3, y = 0-7 输入端口内部上拉电阻控制 0: 内部上拉电阻关闭 1: 内部上拉电阻开启 27
28 Table 7.15 端口数据寄存器 注意 : 带 * 端口可以配置为 N- 通道的开漏 I/O, 但是此时端口电压不得超过 V DD + 0.3V Table 7.16 端口模式选择寄存器 SH79F16 80H, 90H, A0H, B0H 第 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.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 P2 (A0H) P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P3 (B0H) - - P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 Px.y x = 0-3, y = 0-7 端口数据寄存器 EFH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 P0OS - - P05OS P04OS P03OS P02OS - - 读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 P0xOS x = 2-5 端口 0 输出模式选择 0: 引脚输出模式为 N 沟道开漏输出 ( 默认 ) 1: 引脚输出模式为 CMOS 挽推输出 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) 输入 / 输出端口写操作都是针对端口数据寄存器 28
29 7.6.3 端口共用 30 个双向 I/O 端口也能共用作为第二或第三种特殊功能 共用优先级按照外部最高内部最低的规则 : SH79F16 在引脚配置图中引脚最外边标注功能享有最高优先级, 最里边标注功能享有最低优先级 这意味着一个引脚已经使用较高优先级功能 ( 如果被允许的话 ), 就不能用作较低优先级功能, 即使较低优先级功能被允许 只有较高优先级功能由硬件或软件关闭后, 相应的引脚才能用作较低优先级功能 上拉电阻也由相同规则控制 当允许端口复用为其它功能时, 用户可以修改 PxCR PxPCR(x = 0-3), 但在复用的其它功能被禁止前, 这些操作不会影响端口状态 当允许端口复用为其它功能时, 任何对端口的读写操作只会影响到数据寄存器的值, 端口引脚值保持不变, 直到复用的其它功能关闭 P0 口 : - INT3-2(P0.1-P0.0): 外部中断 3/2 输入引脚 - AN3-AN0(P0.5-P0.2):ADC 模拟输入通道 3- 通道 0 - T1(P0.6):Timer1 外部输入引脚 - INT1(P0.7): 外部中断 1 输入引脚 - PWM21(P0.7):PWM21 输出引脚 Table 7.17 Port0 共用列表 引脚编号 (LQFP32) 优先级功能允许位 INT2 IEN1 寄存器的 EX2 位置 1, 并且 Port0.0 置为输入模式 ( 上拉由软件设置 ) 2 P0.0 始终作为 I/O 1 INT3 IEN1 寄存器的 EX3 位置 1, 并且 Port0.1 置为输入模式 ( 上拉由软件设置 ) 2 P0.1 始终作为 I/O 1 AN0 ADCH 寄存器的 CH0 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P0.2 ADCH 寄存器的 CH0 位清 0 1 AN1 ADCH 寄存器的 CH1 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P0.3 ADCH 寄存器的 CH1 位清 0 1 AN2 ADCH 寄存器的 CH2 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P0.4 ADCH 寄存器的 CH2 位清 0 1 AN3 ADCH 寄存器的 CH3 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P0.5 ADCH 寄存器的 CH3 位清 0 1 T1 TCON 寄存器的 TR1 位和 TMOD 寄存器中的 C/T1位都置 1( 自动上拉 ) 2 P0.6 无上述情况 1 PWM21 PWMEN 寄存器的 EPWM21 位置 1 2 INT1 IEN0 寄存器的 EX1 位置 1, 并且 Port0.7 置为输入模式 ( 上拉由软件设置 ) 3 P0.7 PWMEN 寄存器的 EPWM21 位清 0 注意 : 当 P0xOS = 0 时, 引脚 配置为开漏极端口 29
30 P1 口 : - AN7-4(P1.5-P1.2): ADC 模拟输入通道 7- 通道 4 - RST (P1.7): 系统复位引脚 - INT40-INT44,INT47(P1.5-P1.1,P1.0): 外部中断输入 - T0(P1.6): Timer0 外部输入 Table 7.18 Port1 共用列表 引脚编号 (LQFP32) 优先级功能允许位 INT47 2 P1.0 始终作为 I/O 1 INT44 2 P1.1 始终作为 I/O 1 INT43 SH79F16 IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS47 位都置 1, 并且 Port1.0 置为输入模式 ( 上拉由软件设置 ) IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS44 位都置 1, 并且 Port1.1 置为输入模式 ( 上拉由软件设置 ) IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS43 位都置 1, 并且 Port1.2 置为输入模式 ( 上拉由软件设置 ) 2 AN4 ADCH 寄存器的 CH4 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P1.2 ADCH 寄存器的 CH4 位清 0 1 INT42 IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS42 位都置 1, 并且 Port1.3 置为输入模式 ( 上拉由软件设置 ) 2 AN5 ADCH 寄存器的 CH5 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P1.3 ADCH 寄存器的 CH5 位清 0 1 INT41 IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS41 位都置 1, 并且 Port1.4 置为输入模式 ( 上拉由软件设置 ) 2 AN6 ADCH 寄存器的 CH6 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P1.4 ADCH 寄存器的 CH6 位清 0 1 INT40 IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS40 位都置 1, 并且 Port1.5 置为输入模式 ( 上拉由软件设置 ) 2 AN7 ADCH 寄存器的 CH7 位和 ADCON 寄存器的 ADON 位都置 1, 并且 SCH[2:0] = P1.5 ADCH 寄存器的 CH7 位清 0 1 T0 TCON 寄存器的 TR0 位和 TMOD 寄存器的 C/T0位都置 1( 自动上拉 ) 2 P1.6 无上述情况 - RST 代码选项控制 - P1.7 代码选项控制 30
31 P2 口 : - INT46/45(P2.7/P2.6): 外部中断输入引脚 - PWM11/01(P2.7/P2.6): PWM11/01 输出引脚 - PWM1/2(P2.5/P2.3): 8 位 PWM 时钟输出引脚 - PWM0(P2.4): 12 位 PWM 输出引脚 - TXD/MISO(P2.1): EUART 数据输出引脚或 SPI 的 MISO 引脚 - RXD/MOSI(P2.2): EUART 数据输入引脚或 SPI 的 MOSI 引脚 - BZ(P2.0): 蜂鸣器输出引脚 - SCK(P2.0): SPI 时钟端口 Table 7.19 Port2 共用列表 引脚编号 (LQFP32) 优先级功能允许位 PWM11 PWMEN 寄存器的 EPWM11 位置 1 2 INT46 SH79F16 IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS46 位都置 1, 并且 Port2.7 置为输入模式 ( 上拉由软件设置 ) 3 P2.7 PWMEN 寄存器的 EPWM11 位清 0 1 PWM01 PWMEN 寄存器的 EPWM01 位置 1 2 INT45 IEN1 寄存器的 EX4 位和 IENC 寄存器的 EXS45 位都置 1, 并且 Port2.6 置为输入模式 ( 上拉由软件设置 ) 3 P2.6 PWMEN 寄存器的 EPWM01 位清 0 1 PWM1 PWMEN 寄存器的 EPWM1 位置 1 2 P2.5 PWMEN 寄存器的 EPWM1 位清 0 1 PWM0 PWMEN 寄存器的 EPWM0 位置 1 2 P2.4 PWMEN 寄存器的 EPWM0 位清 0 1 PWM2 PWMEN 寄存器的 EPWM2 位置 1 2 P2.3 PWMEN 寄存器的 EPWM2 位清 0 1 RXD SCON 寄存器的 REN 位置 1( 自动上拉 ) 2 MOSI 在从属模式下将 SPSTA 寄存器的 SPEN 位置 1 ( 当 SPEN, CPHA, SSDIS 位在从属模式下都置为 1 时, 自动上拉 ) 3 P2.2 SPSTA 寄存器的 SPEN 位和 SCON 寄存器的 REN 位都清 0 1 TXD 对 SBUF 寄存器写操作 2 MISO 3 P2.1 无上述情况 将 SPSTA 寄存器的 SPEN 位置 1 ( 在主模式下将 SPSTA 寄存器的 SPEN 位置 1 时, 自动上拉 ) 1 BZ BUZCON 寄存器的 BZEN 位置 1 2 SCK SPSTA 寄存器的 SPEN 位置 1 ( 当 SPEN, CPHA, SSDIS 位在从属模式下都置 1 时, 自动上拉 ) 3 P2.0 SPSTA 寄存器的 SPEN 位和 BUZCON 寄存器的 BZEN 位都清 0 31
32 P3 口 : - XTAL2(P3.3): 外部振荡器引脚 - XTAL1(P3.4): 外部振荡器引脚 - T2EX(P3.2): 定时器捕获外部时钟 - T2(P3.1): 定时器 2 外部输入 - INT0(P3.1): 外部中断 0 输入引脚 - FLT/SS (P3.0): 故障输入引脚或 SPI 从设备选择引脚 Table 7.20 Port3 共用列表 引脚编号 (LQFP32) 优先级功能允许位 5, XTAL1/2 代码选项控制 - P3.4-P3.3 代码选项控制 1 T2EX 2 P3.2 无上述情况 SH79F16 方式 0, 1(DCEN = 0), 2 和 3 下 T2CON 寄存器的 EXEN2 位置 1, 或者方式 1 下 TR2 位和 DCEN 位都置 1 1 T2 T2CON 寄存器的 TR2 位和 C/T2位都置 1, 或者 C/T2位清 0 同时 TR2 位和 T2OE 位置 1 2 INT0 IEN0 寄存器的 EX0 位置 1, 并且 Port3.1 置为输入模式 ( 上拉由软件设置 ) 3 P3.1 无上述情况 1 FLT PWMEN 寄存器的 EFLT 位置 1 2 SS 3 P3.0 无上述情况 11 - P3.5 始终作为 I/O 当 SPEN = 1 时, 在 SPI 主模式下将 SPCON 寄存器的 SSDIS 位清 0, 或者在 SPI 从模式下当 CPHA = 1 时将 SPCON 寄存器的 SSDIS 位清 0, 或者在 SPI 从模式下将 SPCON 寄存器的 CPHA 位清 0 ( 当 SPEN = 1 & Master = 1 & SSDIS = 0 时, 或当 SPEN = 1 & Master = 0 时, 自动上拉 ) 32
33 7.7 定时器 特性 SH79F 有 3 个定时器 ( 定时器 0,1,2) 定时器 0 兼容标准的 8051 定时器 1 兼容标准的 8051 定时器 2 兼容标准的 8052, 且有递增递减计数和可编程输出功能 定时器 0/1 增加了比较输出功能 定时器 0/1/2 增加了时钟源分频功能 SH79F 定时器 0 & 1 每个定时器的两个数据寄存器 (THx & TL x(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 中断被允许, 将会产生一个中断 C/Tx位选择计数器 / 定时器的时钟源 如果 C/Tx = 1, 定时器 x 输入引脚 (Tx) 的电平从高到低跳变, 使定时器 x 数据寄存器加 1 如果 C/Tx = 0, 选择系统时钟为定时器 x 的时钟源 当 GATEx = 0 或 GATEx = 1 且输入信号 INTx有效时,TRx 置 1 打开定时器 GATEx 置 1 允许定时器由外部输入信号 INTx控制, 便于测量 INTx的正脉冲宽度 TRx 位置 1 不强行复位定时器, 这意味着如果 TRx 置 1, 定时器寄存器将从上次 TRx 清 0 时的值开始计数 所以在允许定时器之前, 应该设定定时器寄存器的初始值 可配置寄存器 TCON1 中的 TCLKPx(x = 0, 1) 位选择系统时钟或系统时钟的 1/12 作为定时器 x(x = 0, 1) 的时钟源 当作为定时器应用时, 可配置寄存器 TCON1 中的 TC0/1 位使定时器 0/1 溢出时 T0/T1 脚自动翻转 如果 TC0/1 被置 1,T0/T1 引脚自动设置为输出 System Clock 1/12 Tx INTx TCLKPx GATEx TRx =0 C/Tx =1 + & TLx (5bits) 0:Switch Off 1:Switch On THx (8bits) Overflow C/Tx=0 and TCx=1 TFx Overflow Flag The Block Diagram of mode0 of Timerx ( x=0,1 ) Interrupt Request Tx 33
34 方式 1:16 16 位计数器 / 定时器除了使用 16 位定时器 / 计数器之外, 方式 1 的运行与方式 0 一致 打开和配置计数器 / 定时器也如同方式 0 SH79F16 System Clock 1/12 Tx INTx GATEx TCLKPx =0 C/Tx =1 + TLx (8bits) 0:Switch Off 1:Switch On THx (8bits) Overflow C/Tx=0 and TCx=1 TFx Overflow Flag Interrupt Request Tx TRx & The Block Diagram of mode1 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 中的 TCLKPx(x = 0, 1) 位选择系统时钟或系统时钟的 1/12 作为定时器 x(x = 0, 1) 的时钟源 当作为定时器应用时, 可配置寄存器 TCON1 中的 TC0/1 位使定时器 0/1 溢出时 T0/T1 脚自动翻转 如果 TC0/1 被置 1,T0/T1 引脚自动设置为输出 System Clock TH0 (8bits) 1/12 Reload TCLKPx Tx INTx GATEx TRx =0 C/Tx =1 + & TL0 (8bits) 0:Switch Off 1:Switch On overflow C/Tx=0 and TCx=1 TFx Overflow Flag The Block Diagram of mode2 of Timerx (x=0,1) Interrupt Request Tx 34
35 方式 3: 两个 8 位计数器 / 定时器 ( 只限于定时器 0) 在方式 3 中, 定时器 0 用作两个独立的 8 位计数器 / 定时器, 分别由 TL0 和 TH0 控制 TL0 使用定时器 0 的控制 ( 在 TCON 中 ) 和 状态 ( 在 TMOD 中 ) 位 :TR0,C/T0,GATE0 和 TF0 TL0 能用系统时钟或外部输入信号作为时钟源 TH0 只能用作定时器功能, 时钟源来自系统时钟 TH0 由定时器 1 的控制位 TR1 控制使能, 溢出时定时器 1 溢出标志 TF1 置 1, 控制定时器 1 中断 定时器 0 工作在方式 3 时, 定时器 1 可以工作在方式 0 1 或 2, 但是不能置 1 TF1 标志和产生中断, 可以用来产生串口的波特率 TH1 和 TL1 只能用作定时器功能, 时钟源来自系统时钟,GATE1 位无效 T1 输入脚的上拉电阻也无效 定时器 1 由方式控制使能与否, 因为 TR1 被定时器 0 占用 定时器 1 在方式 0 1 或 2 时使能, 在方式 3 时被关闭 可配置寄存器 TCON1 中的 TCLKP0 位选择系统时钟或系统时钟的 1/12 作为定时器 0 的时钟源 当作为定时器应用时, 可配置寄存器 TCON1 中的 TC0 位使定时器 0 溢出时 T0 脚自动翻转 如果 TC0 被置 1,T0 引脚自动设置为输出 System Clock T0 INT0 TCLKP0 GATE0 TR0 1/12 =0 C/T0 =1 + & TL0 (8bits) 0:Switch Off 1:Switch On Overflow C/T0=0 and TC0=1 TF0 Overflow Flag Interrupt Request T0 System Clock 1/12 TH0 (8bits) Overflow TF1 Interrupt Request TR1 TCLKP0 0:Switch Off 1:Switch On Overflow Flag The Block Diagram of mode3 of Timer0 --- 注意 : 当定时器 0/1 用于计数器模式时, 所有输入信号需与系统时钟同步, 因此 T0/T1 输入频率必须低于系统时钟频率的 1/2, INTx必须低于系统时钟频率的 1/4 当定时器 1 作为波特率发生器时, 读取或写入 TH1/TL1 会影响波特率的准确性, 因此也会引起通信出错 寄存器 Table 7.21 定时器 / 计数器 x 控制寄存器 (x = 0, 1) 88H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 , 5 6, 4 3, 1 2, 0 TFx x = 0, 1 TRx x = 0, 1 IEx x = 0, 1 ITx x = 0, 1 定时器 x 溢出标志位 0: 定时器 x 无溢出, 可由软件清 0 1: 定时器 x 溢出, 由硬件置 1; 若由软件置 1 将会引起定时器中断 定时器 x 启动, 停止控制位 0: 停止定时器 x 1: 启动定时器 x 外部中断 x 请求标志位 外部中断 x 触发方式选择位 35
36 Table 7.22 定时器 / 计数器 x 模式寄存器 (x = 0, 1) Table 7.23 定时器 / 计数器 x 数据寄存器 (x = 0, 1) Table 7.24 定时器 / 计数器 x 控制寄存器 1 (x = 0, 1) SH79F16 89H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TMOD GATE1 C/T1 M11 M10 GATE0 C/T0 M01 M00 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 , 3 GATEx x = 0, 1 6, 2 C/Tx x = 0, Mx[1:0] x = 0, 1 定时器 x 门控位 0:TRx 置 1, 定时器 x 即被允许 1: 只有 INTx在高电平期间 TRx 置 1, 定时器 x 才被允许 定时器 / 计数器方式选择位 0: 定时器模式,T0 和 T1 引脚用作普通 I/O 1: 计数器模式 定时器 x 定时器方式选择位 00: 方式 0,13 位向上计数计数器 / 定时器, 忽略 TLx 的第 7-5 位 01: 方式 1,16 位向上计数计数器 / 定时器 10: 方式 2,8 位自动重载向上计数计数器 / 定时器 11: 方式 3( 只用于定时器 0), 两个 8 位向上计数定时器 8AH-8DH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TL0 (8AH 8AH) TL0.7 TL0.6 TL0.5 TL0.4 TL0.3 TL0.2 TL0.1 TL0.0 TH0 (8CH 8CH) TH0.7 TH0.6 TH0.5 TH0.4 TH0.3 TH0.2 TH0.1 TH0.0 TL1 (8BH 8BH) TL1.7 TL1.6 TL1.5 TL1.4 TL1.3 TL1.2 TL1.1 TL1.0 TH1 (8DH 8DH) TH1.7 TH1.6 TH1.5 TH1.4 TH1.3 TH1.2 TH1.1 TH1.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 TLx.y, THx.y 7-0 定时器 x 低及高字节计数器 x = 0-1, y = 0-7 CEH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON TCLKP1 TCLKP0 TC1 TC0 读 / 写 读 / 写读 / 写读 / 写读 / 写 TCLKPx x = 0, 1 TCx x = 0, 1 定时器 x 时钟源预分频控制位 0: 选择系统时钟作为定时器 x 的时钟源 1: 选择系统时钟的 1/12 作为定时器 x 的时钟源 比较输出功能允许位 0: 禁止定时器 x 比较输出功能 1: 允许定时器 x 比较输出功能 36
37 7.7.3 定时器 2 两个数据寄存器 (TH2 和 TL2) 串联后可作为一个 16 位寄存器来访问, 由寄存器 T2CON 和 T2MOD 控制 设置 IEN0 寄存器中的 ET2 位能允许定时器 2 中断 ( 详见中断章节 ) 定时器 2 的工作方式与定时器 0 和定时器 1 相似 C/T2选择系统时钟 ( 定时器 ) 或外部引脚 T2( 计数器 ) 作为定时器时钟输入 通过所选的引脚设置 TR2 允许定时器 2/ 计数器 2 数据寄存器计数 定时器 2 方式定时器 2 有 4 种工作方式 : 捕获 / 重载, 带递增或递减计数器的自动重载方式, 波特率发生器和可编程时钟输出 RCLK,TCLK 和 CP/RL2 的组合能选择这些方式 Table 7.25 定时器 2 方式选择 C/T2 T2OE DCEN TR2 CP/RL2 RCLK 方式 0:16 位捕获在捕获方式中,T2CON 的 EXEN2 位有两个选项 TCLK X 0 X 位捕获 X 位自动重载定时器 X X X 0 X 1 X 2 波特率发生器 X 只用于可编程时钟 0 1 X 1 X 1 X 3 带波特率发生器的可编程时钟输出 X 1 X X X 0 X X X X 定时器 2 停止,T2EX 通路仍旧允许 如果 EXEN2 = 0, 定时器 2 作为 16 位定时器或计数器, 如果 ET2 被允许的话, 定时器 2 能设置 TF2 溢出产生一个中断 如果 EXEN2 = 1, 定时器 2 执行相同操作, 但是在外部输入 T2EX 上的下降沿也能引起在 TH2 和 TL2 中的当前值分别被捕获到 RCAP2H 和 RCAP2L 中, 此外, 在 T2EX 上的下降沿也能引起在 T2CON 中的 EXF2 被设置 如果 ET2 被允许,EXF2 位也像 TF2 一样也产生一个中断 可配置寄存器 T2MOD 中的 TCLKP2 位选择系统时钟或系统时钟的 1/12 作为定时器 2 的时钟源 方式 System Clock 1/12 T2 TR2 TCLKP2 =0 C/T2 =1 0:Switch Off 1:Switch On Increment Mode TL2 TH2 TF2 Overflow flag CP / RL2 & + Interrupt Request T2EX EXEN2 0:Switch Off 1:Switch On RCAP2L RCAP2H EXF2 Block Diagram of 16 bit Capcture mode (Mode 0) of Timer2 External falling edge flag 37
38 方式 1:16 16 位自动重载定时器在 16 位自动重载方式下, 定時器 2 可以被选为递增计数或递减计数 这个功能通过 T2MOD 中的 DCEN 位 ( 递减计数允许 ) 选择 系统复位后,DCEN 位为 0, 定时器 2 默认递增计数 当设置 DCEN 时, 定时器 2 递增计数或递减计数取决于 T2EX 引脚上的电平 当 DCEN = 0, 通过在 T2CON 中的 EXEN2 位选择两个选项 如果 EXEN2 = 0, 定时器 2 递增到 0FFFFH, 在溢出后置起 TF2 位, 同时定时器自动将用户软件写好的寄存器 RCAP2H 和 RCAP2L 的 16 位值装入 TH2 和 TL2 寄存器 如果 EXEN2 = 1, 溢出或在外部输入 T2EX 上的下降沿都能触发一个 16 位重载, 置起 EXF2 位 如果 ET2 被使能,TF2 和 EXF2 位都能产生一个中断 可配置寄存器 T2MOD 中的 TCLKP2 位选择系统时钟或系统时钟的 1/12 作为定时器 2 的时钟源 T2 System Clock TR2 TCLKP2 1/12 C/T2 =0 =1 0:Switch Off 1:Switch On TL2 Increment Mode TH2 TF2 Overflow Flag RCAP2L RCAP2H + Interrupt Request T2EX EXEN2 0:Switch Off 1:Switch On + External Falling Edge flag EXF2 The Block Diagram of Auto Relode Mode (Mode 1)of Timer2 (DCEN=0) 设置 DCEN 位允许定时器 2 递增计数或递减计数 当 DCEN = 1 时,T2EX 引脚控制计数的方向, 而 EXEN2 控制无效 T2EX 置 1 可使定时器 2 递增计数 定时器向 0FFFFH 溢出, 然后设置 TF2 位 溢出也能分别引起 RCAP2H 和 RCAP2L 上的 16 位值重载入定时器寄存器 T2EX 清 0 可使定时器 2 递减计数 当 TH2 和 TL2 的值等于 RCAP2H 和 RCAP2L 的值时, 定时器溢出 置起 TF2 位, 同时 0FFFFH 重载入定时器寄存器 无论定时器 2 溢出,EXF2 位都被用作结果的第 17 位 在此工作方式下,EXF2 不作为中断标志 可配置寄存器 T2MOD 中的 TCLKP2 位选择系统时钟或系统时钟的 1/12 作为定时器 2 的时钟源 System Clock 1/12 FFH FFH T2 TR2 TCLKP2 C/T2 =0 =1 0:Switch Off 1:Switch On TL2 TH2 TF2 Overflow Flag Interrupt Request T2EX 1.T2EX=1, Timer2 is up counter 2.T2EX=0, Timer2 is down counter RCAP2L RCAP2H Toggle EXF2 The Block Diagram of Auto-Reload Mode ( Mode 1) of Timer2 (DCEN=1) 38
39 方式 2: 波特率发生器通过设置 T2CON 寄存器中的 TCLK 和 / 或 RCLK 选择定时器 2 作为波特率发生器 接收器和发送器的波特率可以不同, 如果定时器 2 作为接收器或发送器则定时器 1 相应的作为另一种的波特率发生器 设置 RCLK 和 / 或 TCLK 使定时器 2 进入波特率发生器方式, 该方式与自动重载入方式相似 定时器 2 的溢出会使 RCAP2H 和 RCAP2L 寄存器中的值重载入定时器 2 计数器, 但不会产生中断 如果 EXEN2 被置 1, 在 T2EX 脚上的下降沿会置起 EXF2, 但不会引起重载 因此当定时器 2 作为波特率发生器时,T2EX 可作为一个额外的外部中断 可配置寄存器 T2MOD 中的 TCLKP2 位选择系统时钟或系统时钟的 1/12 作为定时器 2 的时钟源 在 EUART 方式 1 和 3 中的波特率由定时器 2 的溢出率根据下列方程式决定 BaudRate = 1 X f SYS 2X [RCAP2H, RCAP2L] ; C/T2 = 0, TCLKP2 = 0 BaudRate = 1 X 2X16X12 f SYS [RCAP2H, RCAP2L] f T2 1 BaudRate = X [RCAP2H, RCAP2L] ; C/T2 = 1 ; C/T2 = 0, TCKKP2 = 1 System Clock 1/12 /2 Timer1 overflow /2 SMOD =0 =1 T2 TCLKP2 TR2 =0 C/ T2 =1 0:Switch Off 1:Switch On TL2 TH2 RCLK =1 =0 TCLK =1 =0 /16 Receiver CLK RCAP2L RCAP2H /16 Transiver CLK EXEN2 T2EX 0:Switch Off 1:Switch On EXF2 Timer2 Interrupt Request The Block Diagram of Baud-Rate Generator ( Mode 2 ) of Timer2 39
40 方式 3: 可编程时钟输出 P3.1 可以编程输出 50% 的占空比时钟周期 清 C/T2位和置 T2OE 位, 使定时器 2 作为时钟发生器 TR2 位启动和中止定时器 可配置寄存器 T2MOD 中的 TCLKP2 位选择系统时钟或系统时钟的 1/12 作为定时器 2 的时钟源 在这种方式中,T2 输出占空比为 50% 的时钟 : Clock Clock Out Out Frequency = Frequency = 1 X 2X X 2X2X f SYS ; TCLKP2 = 0 [RCAP2H,RCAP2L] f SYS [ RCAP2H, RCAP2L] ; TCKLP2 = 1 定时器 2 溢出不产生中断, 所以定时器 2 可以同时以相同频率用作波特率发生器和时钟输出 System Clock 1/12 /2 TCLKP2 C/ T2 =0 =1 TL2 TH2 TR2 0:Switch Off 1:Switch On C/ T2 RCAP2L RCAP2H T2 /2 T2OE 0:Switch Off 1:Switch On EXEN2 T2EX 0:Switch Off 1:Switch On EXF2 Timer2 Interrupt Request The Block Diagram of Programmable Clock output (Mode 3) of Timer2 注意 : (1) TF2 和 EXF2 都能引起定时器 2 的中断请求, 两者有相同的向量地址 (2) 当事件发生时或其他任何时间都能由软件设置 TF2 和 EXF2 为 1, 只有软件以及硬件复位才能使之清 0 (3) 当 EA = 1 且 ET2 = 1 时, 设置 TF2 或 EXF2 为 1 能引起定时器 2 中断 (4) 当定时器 2 作为波特率发生器时, 读取或写入 TH2/TL2, 写入 RCAPH2/RCAPL2 会影响波特率的准确性, 因此也会引起通信出错 40
41 寄存器 Table 7.26 定时器 2 控制寄存器 SH79F16 C8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 T2CON TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 POR/WDT/LVR TF2 6 EXF2 5 RCLK 4 TCLK 3 EXEN2 2 TR2 1 C/T2 0 CP/RL2 定时器 2 溢出标志位 0: 无溢出 ( 必须由软件清 0) 1: 溢出 ( 如果 RCLK = 0 和 TCLK = 0, 由硬件设 1) T2EX 引脚外部事件输入 ( 下降沿 ) 被检测到的标志位 0: 无外部事件输入 ( 必须由软件清 0) 1: 检测到外部输入 ( 如果 EXEN2 = 1, 由硬件设 1) EUART0 接收时钟控制位 0: 定时器 1 产生接收波特率 1: 定时器 2 产生接收波特率 EUART0 发送时钟控制位 0: 定时器 1 产生发送波特率 1: 定时器 2 产生发送波特率 T2EX 引脚上的外部事件输入 ( 下降沿 ) 用作重载 / 捕获触发器允许 / 禁止控制位 0: 忽略 T2EX 引脚上的事件 1: 当定时器 2 不做为 EUART 时钟 (T2EX 始终包括上拉电阻 ) 时, 检测到 T2EX 引脚上一个下降沿, 产生一个捕获或重载 定时器 2 开始 / 停止控制位 0: 停止定时器 2 1: 开始定时器 2 定时器 2 定时器 / 计数器方式选定位 0: 定时器方式,T2 引脚用作 I/O 端口 1: 计数器方式, 内部上拉电阻被打开 捕获 / 重载方式选定位 0:16 位带重载功能的定时器 / 计数器 1:16 位带捕获功能的定时器 / 计数器 41
42 Table 7.27 定时器 2 模式控制寄存器 Table 7.28 定时器 2 重载 / 捕获和数据寄存器 Table 7.29 Timer2 高位低位计数器寄存器 SH79F16 C9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 T2MOD TCLKP T2OE DCEN 读 / 写读 / 写 读 / 写读 / 写 POR/WDT/LVR TCLKP2 1 T2OE 0 DCEN 定时器 2 时钟源预分频控制位 0: 选择系统时钟作为定时器 2 的时钟源 1: 选择系统时钟的 1/12 作为定时器 2 的时钟源 定时器 2 输出允许位 0: 设置 P3.1/T2 作为时钟输入或 I/O 端口 1: 设置 P3.1/T2 作为时钟输出 ( 波特率发生器方式 ) 递减计数允许位 0: 禁止定时器 2 作为递增 / 递减计数器, 定时器 2 仅作为递增计数器 1: 允许定时器 2 作为递增 / 递减计数器 CAH-CBH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 RCAP2L RCAP2L.7 RCAP2L.6 RCAP2L.5 RCAP2L.4 RCAP2L.3 RCAP2L.2 RCAP2L.1 RCAP2L.0 RCAP2H RCAP2H.7 RCAP2H.6 RCAP2H.5 RCAP2H.4 RCAP2H.3 RCAP2H.2 RCAP2H.1 RCAP2H.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 POR/WDT/LVR RCAP2L.x RCAP2H.x 定时器 2 重载 / 捕获数据,x = 0-7 CCH-CDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 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 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 POR/WDT/LVR TL2.x TH2.x 定时器 2 高位低位计数器,x =
43 7.8 中断 特性 13 个中断源 4 层中断优先级 程序超范围中断 SH79F16 SH79F 有 13 个中断源 :1 个 OVL NMI 中断,5 个外部中断 (INT0,INT1,INT2, INT3,INT4),INT4 共 8 个中断源 (INT40-47 共用一个向量地址 ),3 个定时器中断 (Timer0,1 和 2),1 个 EUART 中断,ADC 中断,SPI 中断和 PWM 中断 (3 个 PWM 中断源共用一个中断向量地址 ) 程序超范围中断 (OVL OVL) SH79F 有一个不可屏蔽中断 (NMI) 源 程序超范围中断 (OVL), 其向量定位在 007BH 中, 不可屏蔽中断用以防止 CPU 超出有效程序范围 为应用这个特性, 用户应该用常量 0xA5 填满未使用的 Flash ROM, 如果 PC 超过了用户的有效程序范围, 则运算代码为不存在 8051 指令集中的 0xA5,CPU 因此获知 PC 已经超出了有效的程序范围, 同时 OVL 中断发生 如果 PC 超过 16K Flash ROM 范围, 不可屏蔽中断 OVL 同样会发生 不可屏蔽中断 OVL 享有最高优先级 ( 除复位外 ), 不会被其它中断源中断 同样不可屏蔽中断 OVL 能自身嵌套, 但堆栈不会因此增加 当 OVL 中断发生后, 其它中断仍旧被允许, 如果满足设定的条件, 其它中断的标志将置 1 由于 OVL 中断是不可屏蔽中断并且具有最高中断优先级, 当产生 OVL 中断时, 其它任何中断都被屏蔽掉, 不能响应, 所以用户必须处理 OVL 中断以保护系统免受不必要的影响 用户可以用 OVL 中断服务程序末端的 RETI 指令来修改压入栈顶的地址 ( 因为进入 OVL 中断时, 压入堆栈顶端的地址是无用的 ), 这样跳出中断服务程序后, 程序可以跳转到用户指定的代码, 诸如复位入口或保护程序入口 OVL_NMI_SERVICE: MOV DPTR, #Start_or_Initial_address POP A POP A PUSH DPL PUSH DPH RETI 特别提示 : 由于 OVL 中断是不可屏蔽中断并且具有最高中断优先级, 当产生 OVL 中断时, 其它任何中断都被屏蔽掉, 不能响应, 所以用户必须处理 OVL 中断以保护系统免受不必要的影响 注意 : 为了使能 OVL 中断, 客户代码选项必须选择 OVL 产生 OVL 中断 (OP_OVL 置 1, 详见代码选项章节 ) 为了提高程序运行的可靠性和便利性, 推荐代码选择选择为 OVL 产生 OVL 复位, 即 OP_OVL 清 0 43
44 7.8.3 中断允许 SH79F16 任何一个中断源均可通过对寄存器 IEN0 和 IEN1 中相应的位置 1 或清 0, 实现单独使能或禁止 IEN0 寄存器中还包含了一个全局使能位 EA, 它可以使能所有的中断 一般在复位后, 所有中断允许位设置为 0, 所有中断被禁止 Table 7.30 初级中断允许寄存器 A8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IEN0 EA EADC ET2 ES0 ET1 EX1 ET0 EX0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 /PIN POR/WDT/LVR EA 6 EADC 5 ET2 4 ES0 3 ET1 2 EX1 1 ET0 0 EX0 所有中断允许位 0: 禁止所有中断 1: 允许所有中断 ADC 中断允许位 0: 禁止 ADC 中断 1: 允许 ADC 中断 定时器 2 溢出中断允许位 0: 禁止定时器 2 溢出中断 1: 允许定时器 2 溢出中断 EUART 中断允许位 0: 禁止 EUART 中断 1: 允许 EUART 中断 定时器 1 溢出中断允许位 0: 禁止定时器 1 溢出中断 1: 允许定时器 1 溢出中断 外部中断 1 允许位 0: 禁止外部中断 1 1: 允许外部中断 1 定时器 0 溢出中断允许位 0: 禁止定时器 0 溢出中断 1: 允许定时器 0 溢出中断 外部中断 0 允许位 0: 禁止外部中断 0 1: 允许外部中断 0 44
45 Table 7.31 次级中断允许寄存器 注意 : (1) 打开外部中断 0/1/2/3/4 时, 相应的端口必须设置为输入状态 (2) 打开 PWM 定时器中断,EPWM 位和 PWM 控制寄存器中的 PWMxIE (x = 0, 1, 2) 中断允许位必须同时置 1 Table 7.32 中断通道允许寄存器 SH79F16 A9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IEN1 - - EPWM - EX4 EX3 EX2 ESPI 读 / 写 - - 读 / 写 - 读 / 写读 / 写读 / 写读 / 写 EPWM 3 EX4 2 EX3 1 EX2 0 ESPI PWM 中断允许位 0: 禁止 PWM 中断 1: 允许 PWM 中断 外部中断 4 允许位 0: 禁止外部中断 4 中断 1: 允许外部中断 4 中断 外部中断 3 允许位 0: 禁止外部中断 3 中断 1: 允许外部中断 3 中断 外部中断 2 允许位 0: 禁止外部中断 2 1: 允许外部中断 2 SPI 中断允许位 0: 禁止 SPI 中断 1: 允许 SPI 中断 BAH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IENC EXS47 EXS46 EXS45 EXS44 EXS43 EXS42 EXS41 EXS40 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 EXS4x (x = ) 外部中断 4 选择寄存器 (x = ) 0: 禁止外部中断 4x 1: 允许外部中断 4x 45
46 7.8.4 中断标志每个中断源都有自己的中断标志, 当产生中断时, 硬件会置起相应的标志位, 在中断摘要表中会列出中断标志位 外部中断源产生外部中断 INT0/1/2/3 时, 如果中断为边沿触发,CPU 在响应中断后, 标志 IEx(x = 0-3) 被硬件清 0; 如果中断是电平触发, 外部中断源直接控制中断标志, 而不是由片上硬件控制 外部中断 INT4 产生中断时,EXF1 寄存器中的 IF4x 标志位 (x = 0-7) 置 1, 由于 INT4x 共用一个中断向量地址, 所以标志位需要用户软件清除 但是如果 INT4 为电平触发时, 标志位不能被用户软件清 0, 只受 INT4x 中断源引脚所接信号电平直接控制 注意尽管外部中断被禁止, 但是中断标志位受外部中断源输入状态变化的影响而改变, 除非该输入引脚配置为其它功能 当 TCON 寄存器的 TFx(x = 0,1) 中断标志位被置 1 时, 定时器 0/1 产生中断,CPU 在响应中断后, 标志被硬件自动清 0 当 T2CON 寄存器的 TF2 或 EXF2 标志位被置 1 时, 定时器 2 产生中断,CPU 在响应中断后, 两个标志位都不会被硬件自动清 0 事实上, 中断服务程序必须决定是由 TF2 或是 EXF2 产生中断, 标志必须由软件清 0 当 SCON 寄存器的标志 RI 或 TI 被置 1 时,EUART 产生中断,CPU 在响应中断后, 两个标志位都不会被硬件自动清 0 事实上, 中断服务程序必须决定是接收中断或是发送中断, 标志必须由软件清 0 当 ADCON 寄存器的 ADCIF 标志位被置 1 时,ADC 产生中断 如果中断产生,ADDH/ADDL 中的结果是有效的 如果 ADC 模块的连续比较功能被打开, 那么每次转换时,ADCIF 标志位都不会被置位 只有当转换后的数据大于或者等于预设值时才会将标志位置位 中断标志必须由软件清 0 当 SPSTA 寄存器的 SPIF 位或 MODF 位 ( 当 SSDIS 清 0) 置 1 时,SPI 产生中断 标志必须由软件清 0 当 PWMC 寄存器的 PWMIF0-2 标志位被置 1 时,PWM 产生中断 标志必须由软件清 0 Table 7.33 外部中断标志寄存器 88H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 , 5 TFx (x = 0, 1) 定时器 x 溢出标志位 6, 4 TRx (x = 0, 1) 定时器 x 启动, 停止控制位 3, 1 2, 0 IEx (x = 0, 1) ITx (x = 0, 1) 外部中断 x 请求标志位 0: 无中断挂起 1: 中断挂起 外部中断 x 触发方式选择位 0: 低电平触发 1: 下降沿触发 46
47 Table 7.34 外部中断 2,3 & 4 标志寄存器 Table 7.35 外部中断 4 标志寄存器 SH79F16 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: 中断挂起 D8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 EXF1 IF47 IF46 IF45 IF44 IF43 IF42 IF41 IF40 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 IF4x (x = ) 外部中断 4 请求标志,IF4x 须被软件清 0 0: 无中断请求 1: 有中断请求 47
48 7.8.5 中断向量当一个中断产生时, 程序计数器内容被压栈, 相应的中断向量地址被载入程序计数器 中断向量的地址在中断摘要表中详细列出 中断优先级每个中断源都可被单独设置为 4 个中断优先级之一, 分别通过清 0 或置 1 IPL0,IPH0,IPL1,IPH1 中相应位来实现 但 OVL 不可屏蔽中断无需 IPH/IPL 控制, 在所有中断源中享有最高优先级 ( 除复位外 ) 中断优先级服务程序描述如下: 响应一个中断服务程序时, 可响应更高优先级的中断, 但不能响应同优先级或低优先级的另一个中断 响应最高级中断服务程序时, 不响应其它任何中断 如果不同中断优先级的中断源同时申请中断时, 响应较高优先级的中断申请 如果同优先级的中断源在指令周期开始时同时申请中断, 那么内部查询序列确定中断请求响应顺序 IPHx 优先位 IPLx Table 7.36 中断优先级控制寄存器 中断优先级 中断优先级 0 0 等级 0( 最低优先级 ) 0 1 等级 等级 等级 3( 最高优先级 ) B8H, B4H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IPL0 - PADCL PT2L PSL PT1L PX1L PT0L PX0L IPH0 - PADCH PT2H PSH PT1H PX1H PT0H PX0H 读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 B9H, B5H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 IPL1 - - PPWML - PX4L PX3L PX2L PSPIL IPH1 - - PPWMH - PX4H PX3H PX2H PSPIH 读 / 写 - - 读 / 写 - 读 / 写读 / 写读 / 写读 / 写 PxxxL/H 相应中断源 xxx 优先级选择 48
49 7.8.7 中断处理中断标志在每个机器周期都会被采样获取 所有中断都在时钟的上升沿被采样 如果一个标志被置位, 那么 CPU 会发现而且中断系统会产生一个 LCALL 调用其中断服务程序, 但由硬件产生的 LCALL 会被下列任何条件阻止 : 同级或更高级的优先级中断在运行中 当前的周期不是执行中指令的最后一个周期 换言之, 正在执行的指令完成前, 任何中断请求都得不到响应 正在执行的是一条 RETI 或者访问专用寄存器 IEN0\1 或是 IPL\H 的指令 换言之, 在 RETI 或者读写 IEN0\1 或是 IPL\H 之后, 不会马上响应中断请求, 而至少在执行一条其它指令之后才会响应, 这段时间保证 CPU 能观察到中断状态的变化 注意 : 因为更改优先级通常需要 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 把程序计数器 (PC) 中的内容压入堆栈,( 但不保存 PSW) 然后将相应中断源的向量地址存入程序计数器 (PC) 中断服务程序从指定地址开始, 到 RETI 指令结束 RETI 指令通知处理器中断结束, 然后把堆栈顶部两字节弹出, 重载入程序计数器 (PC) 中, 返回到进入中断服务程序之前程序点继续执行 特别注意的是 RETI 指令非常重要, 它会通知处理器该优先级中断服务结束 RET 指令也可以返回到原来地址继续执行, 但是中断优先级控制系统仍然认为一个同一优先级的中断被响应, 这种情况下, 当同一优先级或低优先级中断将不会被响应 中断响应时间如果检测出一个中断, 这个中断的请求标志位就会在被检测后的每个机器周期被置起 内部电路会保持这个值直到下一个机器周期,CPU 会在第三个机器周期产生中断 如果响应有效, 条件允许, 在下一个指令执行的时候硬件 LCALL 指令将调用请求中断的服务程序, 否则中断被挂起 LCALL 指令调用程序需要 7 个机器周期 因而, 从外部中断请求到开始执行中断程序中的第一条指令至少需要 3+7 个完整的机器周期 当请求因前述的的三个情况受阻时, 中断响应时间会加长 如果同级或更高优先级的中断正在执行, 额外的等待时间取决于正执行的中断服务程序的长度 如果正在执行的指令还没有进行到最后一个周期, 假如正在执行 RETI 指令, 则完成正在执行的 RETI 指令, 需要 8 个周期, 加上为完成下一条指令所需的最长时间 20 个机器周期 ( 如果该指令是 16 位操作数的 DIV,MUL 指令 ), 若系统中只有一个中断源, 再加上 LCALL 调用指令 7 个机器周期, 则最长的响应时间是 个机器周期 所以, 中断响应时间一般大于 10 个机器周期小于 37 个机器周期 49
50 7.8.9 外部中断输入 SH79F 有 5 个外部中断输入 外部中断 0-3 各自有一个中断向量地址, 外部中断 4 有 8 个中断源共用一个中断向量地址 这些外部中断可以通过设置 TCON 寄存器的 IT1,IT0 位,EXF0 寄存器的 IT2,IT3 位来选择是电平触发或是边沿触发 当 ITx = 0 (x = 0, 1) 时,INTx(x = 0, 1) 脚为低电平, 外部中断 x 触发 当 ITx(x = 0, 1)= 1, 外部中断 x 为沿触发 在这个模式中, 一个周期内 INTx 脚上连续采样为高电平而下个周期为低电平,TCON 寄存器的中断请求标志被置起, 发出一个中断请求 由于外部中断输入脚每个机器周期被采样一次, 输入高或低电平应当保持至少 1 个机器周期以确保能够被正确采样到 如果外部中断为边沿触发, 外部中断源应当将中断输入脚至少保持 1 个机器周期高电平, 然后再至少保持 1 个机器周期低电平, 这样才能确保边沿能够被检测到, 使 IEx 置位 当调用中断服务程序后,CPU 自动将 IEx(x = 0-3) 清 0, 而 IF4x(x = 0-7) 须软件清 0 外部中断 2-4 的操作与前述相似, 只需设置不同的寄存器, 选择不同的触发方式 如果外部中断为下降沿触发, 外部中断源应当将中断脚至少保持 1 个机器周期高电平, 然后至少保持 1 个机器周期低电平 这样就确保了边沿能够被检测到以使 IEx 置 1 当调用中断服务程序后,CPU 自动将 IEx 清 0 如果外部中断为低电平触发, 外部中断源必须一直保持请求有效, 直到产生所请求的中断为止, 此过程需要 2 个系统时钟周期 如果中断服务完成后而外部中断仍旧维持, 则会产生下一次中断 当中断为电平触发时不必清除中断标志 IEx(x = 0, 1, 2, 3, 4), 因为中断只与输入口电平有关 外部中断 2-4 除了具有更多的中断触发方式外, 与外部中断 0,1 操作类似 当 SH79F 进入空闲或是掉电模式, 中断会唤醒处理器继续工作, 详见电源管理章节 >1 System Clock High-Level Threshold Low-Level Threshold > 1 System Clock Low-Level Threshold > 2 System Clock 外部中断检测 中断汇总中断源 向量地址 允许位 标志位 轮询优先级 中断号 (C51 C51) Reset 0000h - - 0( 最高级 ) - INT0 0003h EX0 IE0 2 0 Timer0 000Bh ET0 TF0 3 1 INT1 0013h EX1 IE1 4 2 Timer1 001Bh ET1 TF1 5 3 EUART 0023h ES0 RI+TI 6 4 Timer2 002Bh ET2 TF2+EXF2 7 5 ADC 0033h EADC ADCIF 8 6 SPI 003Bh ESPI SPIF 9 7 INT2 0043h EX2 IE INT3 004Bh EX3 IE INT4 0053h EX4+IENC IF PWM 0063h EPWM+PWM0/1/2IE PWM0/1/2IF 13( 最低级 ) 12 OVL NMI 007Bh
51 8. 增强功能 8.1 脉冲宽度调制 (PWM PWM) 特性 SH79F16 6 路带死区控制的互补输出 提供每个 PWM 周期溢出中断和占空比溢出中断 输出极性可选择 提供出错侦测功能可紧急关闭 PWM 输出 提供保护寄存器可使重要寄存器免受干扰出错 SH79F 集成了一个 12 位 PWM 模块和两个 8 位 PWM 模块 通过控制各自相应的寄存器,PWM 模块可以产生周期和占空比分别可调整的脉宽调制波形 此外,PWM 模块还提供了三路与 PWM0/1/2 有固定相位关系的 PWM 输出 如果 EFLT 置位,PWM 输出能由 FLT 引脚的输入信号变化自动关闭 PWM 定时器也为 PWM0/1/2 提供 3 个中断源, 在每个 PWM 周期都会产生中断 它们有不同的控制位和标志位, 共用一个中断向量地址 这样用户可以实现每个 PWM 周期中更改下一次循环的周期或占空比 Table 8.1 PWM 定时器允许寄存器 CFH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWMEN - EFLT EPWM21 EPWM11 EPWM01 EPWM2 EPWM1 EPWM0 读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 EFLT 5 EPWM21 4 EPWM11 3 EPWM01 2 EPWM2 1 EPWM1 0 EPWM0 FLT 引脚配置位 0: 普通 I/O 端口或 SS引脚 1:PWM 故障检测输入引脚 PWM21 输出控制位 0:PWM21 输出禁止, 用作 I/O 功能 1:PWM21 输出允许 PWM11 输出使能位 0:PWM11 输出禁止, 用作 I/O 功能 1:PWM11 输出允许 PWM01 输出使能位 0:PWM01 输出禁止, 用作 I/O 功能 1:PWM01 输出允许 8 位 PWM2 输出使能位 0:PWM2 输出禁止, 用作 I/O 功能 1:PWM2 输出允许 8 位 PWM1 输出使能位 0:PWM1 输出禁止, 用作 I/O 功能 1:PWM1 输出允许 12 位 PWM0 输出使能位 0:PWM0 输出禁止, 用作 I/O 功能 1:PWM0 输出允许 当 PWMEN 清 0 后,PWM 输出立即关闭 FLT 端口主要用于检测异常信号, 快速关闭 PWM 输出 FLT 探测到故障后, 由硬件执行使 PWM 输出关闭, 所以当故障发生后, 它可以快速响应, 使得 PWM 输出无效以保护连接 PWM 的大功率器件 FLT 引脚没有内建上拉电阻 如果 EFLT 位清 0, 则表示 FLT 端口对 PWM 定时器输出控制无效 51
52 PWM 保护寄存器 PWM 保护寄存器用来控制对 PWM 允许寄存器 PWM 控制寄存器 PWM 周期寄存器 PWM 占空比寄存器和 PWM 死区时间控制寄存器的更改 只有当保护寄存器中的数据为 55h 时, 才允许修改这些寄存器内容, 否则不能修改 这个寄存器能增强 SH79F 的抗干扰能力 Table 8.2 PWM 保护寄存器 E7H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWMLO PWMLO.7 PWMLO.6 PWMLO.5 PWMLO.4 PWMLO.3 PWMLO.2 PWMLO.1 PWMLO.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 位 PWM 定时器 SH79F 包含一个 12 位 PWM 模块 PWM 模块可以产生周期和占空比分别可调整的脉宽调制波形 PWMC 寄存器用于控制 PWM 模块的时钟,PWMPH/L 寄存器用于控制 PWM 输出波形的周期,PWMDH/L 寄存器用于控制 PWM 模块输出波形的占空比 在 PWM 输出允许期间可以修改这三个寄存器, 但在下一个 PWM 周期修改才会起作用 Table 位 PWM 控制寄存器 PWMLO[7:0] PWM 锁定位只有当 PWMLO = 0x55, 才能允许修改其他 PWM 寄存器 D2H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM0C PWM0IE PWM0IF - FLTS FLTC PWM0S TnCK01 TnCK00 读 / 写读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写 PWM0IE 6 PWM0IF 4 FLTS 3 FLTC 2 PWM0S 1-0 TnCK0[1:0] PWM0 中断允许位 ( 当 IEN1 寄存器中的 EPWM 位置 1) 0: 禁止 PWM0 中断 1: 允许 PWM0 中断 PWM0 中断标志位 0: 软件清 0 1: 硬件置 1,PWM0 周期计数器溢出 FLT 状态位 0:PWM 正常状态, 软件清 0 1:PWM 输出关闭, 硬件置 1 FLT 引脚配置位 0:FLT 为低电平时,PWM 输出关闭 1:FLT 为高电平时,PWM 输出关闭 12 位 PWM 占空比的输出模式选择位 0: 高有效 1: 低有效 12 位 PWM 时钟源选择位 00: 振荡器时钟 /2 01: 振荡器时钟 /4 10: 振荡器时钟 /8 11: 振荡器时钟 /16 52
53 注意 : (1) PWM0C 寄存器中的 FLTS 和 FLTC 位控制所有 PWM 定时器, 而寄存器中的 PWM0S,TnCK0[1:0] 只能影响 12 位 PWM0 定时器 (2) PWM 输出关闭时,PWM0/1/2 和 PWM01/11/21 输出固定低电平 (PWMxS = 0) 或高电平 (PWMxS = 1) (3) 一旦检测到 FLT 引脚输入有效电平,PWM 输出会立即关闭, 但 PWM 内部计数器仍在继续运行 (4) 在 FLT 输入信号有效期间,FLTS 位无法清除 只有当 FLT 输入信号消失后, 才能软件清除 FLTS 状态位, 此时 PWM 恢复正常输出 Table 8.4 PWM 周期控制寄存器低位 (PWM0PL) D3H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM0PL PP0.7 PP0.6 PP0.5 PP0.4 PP0.3 PP0.2 PP0.1 PP0.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 Table 8.5 PWM 周期控制寄存器高位 (PWM0PH) PWM 输出周期 = [PP0.11,PP0.0] X PWM 时钟当 [PP0.11,PP0.0] = 000H, 如果 PWM0S = 0, 不管 PWM 占空比为多少,PWM0 输出低电平 当 [PP0.11,PP0.0] = 000H, 如果 PWM0S = 1, 不管 PWM 占空比为多少,PWM0 输出高电平 Table 8.6 PWM 占空比控制寄存器低位 (PWM0DL) PP0[7:0] 12 位 PWM 周期低 8 位寄存器 D4H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM0PH PP0.11 PP0.10 PP0.9 PP0.8 读 / 写 读 / 写读 / 写读 / 写读 / 写 PP0[11:8] 12 位 PWM 周期高 4 位寄存器 D5H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM0DL PD0.7 PD0.6 PD0.5 PD0.4 PD0.3 PD0.2 PD0.1 PD0.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PD0[7:0] 12 位 PWM 占空比低 8 位寄存器 53
54 Table 8.7 PWM 占空比控制寄存器高位 (PWM0DH) PWM 输出占空比 = [PD0.11,PD0.0] X PWM 时钟当 [PP0.11,PP0.0] [PD0.11,PD0.0], 如果 PWM0S = 0,PWM0 输出高电平 当 [PP0.11,PP0.0] [PD0.11,PD0.0], 如果 PWM0S = 1,PWM0 输出低电平 编程注意事项 : SH79F16 D6H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM0DH PD0.11 PD0.10 PD0.9 PD0.8 读 / 写 读 / 写读 / 写读 / 写读 / 写 PD0[11:8] 12 位 PWM 占空比高 4 位寄存器 (1) 设置 PWMLO 寄存器内容为 0x55; 选择 PWM 模块时钟源 (2) 通过写适当的值到 PWM 周期控制寄存器 (PWMP) 或 PWM 占空比寄存器 (PWMD) 设置 PWM 周期 / 占空比, 先设置低位, 再设置高位 注意, 即使高位数值不变, 也要重写一次, 否则, 低位的修改无效 (3) 通过设置 PWM 控制寄存器 (PWMC) 的 PWMxS 位选择 PWM 输出模式 ( 高电平有效或低电平有效 ) (4) 通过设置 PWM 控制寄存器 (PWMC) 中的 EPWMx 或 EPWMx1 位为 1 来允许 PWM 上桥或下桥输出 (5) 如果 PWM 周期或者占空比需要改变, 操作流程如同步骤 2 或者步骤 3 说明 修改后的重载计数器的值在下一个周期开始有效 (6) 为避免干扰, 设置 PWMLO 寄存器中的数据不等于 0x A 0B 0C0D0E 0F A 0B 0C0D PWMn clock t PWM Write [PPn.11, PPn.0] = 0DH Write [PDn.11, PDn.0] = 07H PWMn output (PWMnS = 0) n = 0 or 1 Duty cycle = 06H x t PWM Duty cycle = 06H x t PWM Duty cycle = 07H x t PWM Period cycle = 0FH x t PWM Period cycle = 0DH x t PWM PWM 输出周期或占空比更改示例 54
55 位 PWM 定时器 SH79F 包含两个 8 位 PWM 模块 PWM 模块可以产生周期和占空比分别可调整的脉宽调制波形 PWM1/2C 寄存器用于控制 PWM1/2 模块的时钟,PWMP1/2 寄存器用于控制 PWM1/2 模块输出波形的周期,PWMD1/2 寄存器用于控制 PWM1/2 模块输出波形的占空比 Table 位 PWM1 控制寄存器 (PWM1C) D9H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1C PWM1IE PWM1IF PWM1S TnCK11 TnCK10 读 / 写读 / 写读 / 写 读 / 写读 / 写读 / 写 PWM1IE 6 PWM1IF 2 PWM1S 1-0 TnCK1[1:0] PWM1 中断允许位 ( 当 IEN1 寄存器中的 EPWM 位置 1) 0: 禁止 PWM1 中断 1: 允许 PWM1 中断 PWM1 中断标志位 0: 无溢出中断 1:PWM1 周期计数器溢出 8 位 PWM1 占空比的输出模式选择位 0: 高有效 1: 低有效 8 位 PWM1 时钟选择位 00: 振荡器时钟 /2 01: 振荡器时钟 /4 10: 振荡器时钟 /8 11: 振荡器时钟 /16 55
56 Table 位 PWM2 控制寄存器 (PWM2C) Table 位 PWM1 周期寄存器 (PWM1P) Table 位 PWM2 周期寄存器 (PWM2P) PWM 输出周期 = [PPx.7,PPx.0] X PWM 时钟,x = 1,2 当 [PPx.7,PPx.0] = 000H, 如果 PWMxS = 0, 不管 PWM 占空比为多少,PWM1/2 输出低电平 当 [PPx.7,PPx.0] = 000H, 如果 PWMxS = 1, 不管 PWM 占空比为多少,PWM1/2 输出高电平 SH79F16 DDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM2C PWM2IE PWM2IF PWM2S TnCK21 TnCK20 读 / 写读 / 写读 / 写 读 / 写读 / 写读 / 写 PWM2IE 6 PWM2IF 2 PWM2S 1-0 TnCK2[1:0] PWM2 中断允许位 ( 当 IEN1 寄存器中的 EPWM 位置 1) 0: 禁止 PWM2 中断 1: 允许 PWM2 中断 PWM2 中断标志位 0: 无溢出 1:PWM2 周期计数器溢出. 8 位 PWM2 输出模式选择位 0: 高有效 1: 低有效 8 位 PWM2 时钟选择位 00: 振荡器时钟 /2 01: 振荡器时钟 /4 10: 振荡器时钟 /8 11: 振荡器时钟 /16 DAH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1P PP1.7 PP1.6 PP1.5 PP1.4 PP1.3 PP1.2 PP1.1 PP1.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PP1[7:0] 8 位 PWM1 周期寄存器 DEH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM2P PP2.7 PP2.6 PP2.5 PP2.4 PP2.3 PP2.2 PP2.1 PP2.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PP2[7:0] 8 位 PWM2 周期寄存器 56
57 Table 位 PWM1 占空比寄存器 (PWM1D) Table 位 PWM2 占空比寄存器 (PWM2D) PWM 输出占空比 = [PDx.7,PDx.0] X PWM 时钟,x = 1,2 当 [PPx.7,PPx.0] [PDx.7,PDx.0], 如果 PWMxS = 0,PWM1/2 输出高电平 当 [PPx.7,PPx.0] [PDx.7,PDx.0], 如果 PWMxS = 1,PWM1/2 输出低电平 编程注意事项 : SH79F16 DBH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM1D PD1.7 PD1.6 PD1.5 PD1.4 PD1.3 PD1.2 PD1.1 PD1.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PD1[7:0] 8 位 PWM1 占空比寄存器 DFH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PWM2D PD2.7 PD2.6 PD2.5 PD2.4 PD2.3 PD2.2 PD2.1 PD2.0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 PD2[7:0] 8 位 PWM2 占空比寄存器 (1) 设置 PWMLO 寄存器内容为 0x55, 选择 PWM 模块时钟 (2) 通过写适当的值到 PWM 周期控制寄存器 (PWMP) 和 PWM 占空比寄存器 (PWMD) 设置 PWM 周期 / 占空比 (3) 通过设置 PWM 控制寄存器 (PWMC) 的 PWMxS 位选择 PWM 输出模式 ( 高电平有效或低电平有效 ) (4) 通过设置 PWM 控制寄存器 (PWMC) 中的 EPWMx 或 EPWMx1 位为 1 来允许 PWM 上桥或下桥输出 (5) 如果 PWM 周期或者占空比需要改变, 操作流程如同步骤 2 或者步骤 3 说明 修改后的重载计数器的值在下一个周期开始有效 (6) 为避免干扰, 设置 PWMLO 寄存器中的数据不等于 0x A 0B 0C 0D0E 0F A 0B 0C0D PWMn clock t PWM PWMn output (PWMnS = 0) Write [PP.7, PP.0] = 0DH Duty cycle = 06H x t PWM Write [PD.7, PD.0] = 07H Duty cycle = 06H x t PWM Duty cycle = 07H x t PWM Period cycle = 0FH x t PWM Period cycle = 0DH x t PWM PWM 输出周期或占空比更改示例 57
58 8.1.4 PWM01/11/21 如下图所示, 一般的, 当没有插入死区时间时,PWM01/11/21 输出波形与 PWM0/1/2 输出波形互补 当 PWM 控制寄存器中 EPWM01/11/21 位置 1 时,PWM01/11/21 的输出波形硬件自动产生 PWMn output (PWMnS = 0) n = 0,1 or 2 PWMn1 output (PWMnS = 0) n =0,1 or 2 PWMn 和 PWMn1 引脚输出波形 注意 : (1) 尽管 PWM0/1/2 被禁止, 但是如果 PWM01/11/21 被允许, 则它们仍然会有输出信号 (2) 如果 EFLT 置位, 当 FLT 端口有效时,PWM01/11/21 和 PWM0/1/2 都输出低 (PWMnS = 0) 或者都输出高 (PWMnS = 1) 死区时间 SH79F PWM 提供死区时间控制功能 当 PWMnS = 0(n = 0, 1, 2) 时, 死区时间产生如下图所示 p e rio d PW M int PW M int P W M n S = 0 d u ty c y c le P W M n P W M n 1 d e a d tim e d e a d tim e d e a d tim e PW M Enable R e lo a d R e lo a d 当 PWMnS = 1(n = 0, 1, 2) 时, 死区时间产生如下图所示 p e rio d PW M int PW M int P W M n S = 1 d u ty c y c le P W M n P W M n 1 d e a d tim e d e a d tim e d e a d tim e PW M Enable R e lo a d R e lo a d 通过写 PWM01/11/21 死区时间控制寄存器, 在 PWM0/1/2 和 PWM01/11/21 之间产生死区时间 PWM01/11/21 与 PWM0/1/2 周期相同 注意 : (1) 死区时间 0/1/2 必须在 PWM 输出允许前置位, 否则, 死区时间不会改变 所以为了修改死区时间, 先禁止 PWM 输出 (PWMLO = #55h), 然后改变死区时间, 允许 PWM 输出 最后, 为保证 PWM 相关寄存器不受干扰影响而改变, 修改 PWMLO 寄存器内容不等于 55h (2) 为了产生死区时间, 请确保 (PWMx 周期 - PWMx 占空比 )> 2*PWMx1 的死区时间 (x = 0,1,2) 否则,PWM01/11/21 当 PWMxS = 1 时输出高电平, 当 PWMxS = 0 时输出低电平 (3) PWMDT 寄存器用于控制死区时间, 它的时基为振荡器时钟, 而周期和占空比的时基由 TnCKx1-0(x = 0,1,2) 控制, 最小为 2 个振荡器时钟 58
59 Table 8.14 PWM0 死区时间控制寄存器 D1H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 PWM0DT DT0.7 DT0.6 DT0.5 DT0.4 DT0.3 DT0.2 DT0.1 DT0.0 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 位编号 位符号 说明 7-0 DT0[7:0] 12 位 PWM0 死区时间控制死区时间为 (DT0.7 - DT0.0) X t OSC Table 8.15 PWM1 死区时间控制寄存器 D7H 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 PWM1DT DT1.7 DT1.6 DT1.5 DT1.4 DT1.3 DT1.2 DT1.1 DT1.0 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 位编号 位符号 说明 7-0 DT1[7:0] 8 位 PWM1 死区时间控制死区时间为 (DT1.7 - DT1.0) X t OSC Table 8.16 PWM2 死区时间控制寄存器 DCH 第 7 位 第 6 位 第 5 位 第 4 位 第 3 位 第 2 位 第 1 位 第 0 位 PWM2DT DT2.7 DT2.6 DT2.5 DT2.4 DT2.3 DT2.2 DT2.1 DT2.0 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 读 / 写 位编号 位符号 说明 7-0 DT2[7:0] 8 位 PWM2 死区时间控制死区时间为 (DT2.7 - DT2.0) X t OSC 59
60 8.2 串行外部设备接口 (SPI SPI) 特性 全双工, 三线同步传输 主从机操作 6 个可编程主时钟频率 极性相位可编程的串行时钟 带 MCU 中断的主模式故障出错标志 写入冲突标志保护 可选择 LSB 或 MSB 传输 SH79F16 串行外部设备接口 ( 简称 SPI) 是一种高速串行通信接口, 允许 MCU 与外围设备 ( 包括其它 MCU) 进行全双工, 同步串行通讯 下图所示即为典型的由一个主设备和若干从属外部设备组成的 SPI 总线网络, 主设备通过 3 条线连接所有从设备, 主设备控 制连接从属设备 SS引脚的 4 个并行端口来选中其中一个从属设备进行通讯 V DD Master MISO MOSI SCK SS Port0.0 Port0.1 Port0.2 Port0.3 MISO MOSI SCK SS MISO MOSI SCK SS MISO MOSI SCK SS MISO MOSI SCK SS Slave Slave Slave Slave 信号描述 主输出从输入 (MOSI MOSI) 该路信号连接主设备和一个从设备 数据通过 MOSI 从主设备串行传送到从设备, 主设备输出, 从设备输入 主输入从输出 (MISO MISO) 该路信号连接从设备和主设备 数据通过 MISO 从从设备串行传送到主设备, 从设备输出, 主设备输入 当 SPI 配置为从设 备并未被选中 (SS引脚为高电平), 从设备的 MISO 引脚处于高阻状态 SPI 串行时钟 (SCK SCK) SCK 信号用作控制 MOSI 和 MISO 线上输入输出数据的同步移动 每 8 时钟周期线上传送一个字节 如果从设备未被选中 (SS引脚为高电平),SCK 信号被此从设备忽略 ) 从设备选择引脚 (SS 每个从属外围设备由一个从选择引脚 (SS引脚) 选择, 当引脚信号为低电平时, 表明该从设备被选中 主设备可以通过软 件控制连接于从设备 SS引脚的端口电平选择每个从设备, 很明显, 只有一个主设备可以驱动通讯网络 为了防止 MISO 总线冲突, 同一时间只允许一个从设备与主设备通讯 在主设备模式中,SS引脚状态关联 SPI 状态寄存器 SPSTA 中 MODF 标志位以防止多个主设备驱动 MOSI 和 SCK 下列情况,SS引脚可以作为普通端口或其它功能使用: (1) 设备作为主设备,SPI 控制寄存器 SPCON 寄存器的 SSDIS 位置 1 这种配置仅仅存在于通讯网络中只有一个主设备的情况, 因此,SPI 状态寄存器 SPSTA 中 MODF 标志位不会被置 1 (2) 设备配置为从设备,SPI 控制寄存器 SPCON 的 CPHA 位和 SSDIS 位置 1 这种配置情况存在于只有一个主设备一个从设 备的通讯网络中, 因此, 设备总是被选中的, 主设备也不需要控制从设备的 SS引脚选择其作为通讯目标 注意 : 当 CPHA = 0 时,SS 引脚电平被拉低表示启动发送 60
61 8.2.3 波特率在主模式下,SPI 的波特率有六种可选择的频率, 分别是内部时钟的 4,8,16,32,64 或 128 分频, 可以通过设定 SPCON 寄存器的 SPR[2:0] 位进行选择 功能描述下图所示是 SPI 模块的详细结构 Internal Bus FCLK PERIPH SPDAT Clock Divider /4 /8 /16 /32 /64 /128 Transmit Register Recieve Register Pin Control Logic MOSI MISO Clock Select Clock Logic M S SCK SS DIR MSTR CPHA CPOL SSDIS SPR2 SPR1 SPR0 Recieve Data Register SPI Interrupt Request SPI Control 8-bit Bus 1-bit Signal SPSTA SPEN SPIF MODF WCOL RXOV SPI 模块框图 61
62 8.2.5 工作模式 SPI 可配置为主模式或从属模式中的一种 SPI 模块的配置和初始化通过设置 SPCON 寄存器 ( 串行外围设备控制寄存器 ) 和 SPSTA( 串行外围设备状态寄存器 ) 来完成 配置完成后, 通过设置 SPCON,SPSTA,SPDAT( 串行外围设备数据寄存器 ) 来完成数据传送 在 SPI 通讯期间, 数据同步地被串行的移进移出 串行时钟线 (SCK) 使两条串行数据线 (MOSI 和 MISO) 上数据的移动和采样保持同步 从设备选择线 (SS ) 可以独立地选择 SPI 从属设备 ; 如果从设备没有被选中, 则不能参与 SPI 总线上的活动 当 SPI 主设备通过 MOSI 线传送数据到从设备时, 从设备通过 MISO 线发送数据到主设备作为响应, 这就实现了在同一时钟下数据发送和接收的同步全双工传输 发送移位寄存器和接收移位寄存器使用相同的特殊功能器地址, 对 SPI 数据寄存器 SPDAT 进行写操作将写入发送移位寄存器, 对 SPDAT 寄存器进行读操作将获得接收移位寄存器的数据 8-bit Shift Register MISO MISO 8-bit Shift Register MOSI MOSI SPI Clock Generator SCK SS V DD SCK SS Master MCU V SS Slave MCU 主模式 全双工主从互联图 (1) 模式启动 SPI 主设备控制 SPI 总线上所有数据传送的启动 当 SPCON 寄存器中的 MSTR 位置 1 时,SPI 在主模式下运行, 只有一个主设备可以启动传送 (2) 发送在 SPI 主模式下, 写一个字节数据到 SPI 数据寄存器 SPDAT, 数据将会写入发送移位缓冲器 如果发送移位寄存器已经存在一个数据, 那么主 SPI 产生一个 WCOL 信号以表明写入太快 但是在发送移位寄存器中的数据不会受到影响, 发送也不会中断 另外如果发送移位寄存器为空, 那么主设备立即按照 SCK 上的 SPI 时钟频率串行地移出发送移位寄存器中的数据到 MOSI 线上 当传送完毕,SPSTA 寄存器中的 SPIF 位被置 1 如果 SPI 中断被允许, 当 SPI F 位置 1 时, 也会产生一个中断 (3) 接收当主设备通过 MOSI 线传送数据给从设备时, 相对应的从设备同时也通过 MISO 线将其发送移位寄存器的内容传送给主设备的接收移位寄存器, 实现全双工操作 因此,SPIF 标志位置 1 即表示传送完成也表示接收数据完毕 从设备接收的数据按照 MSB 或 LSB 优先的传送方向存入主设备的接收移位寄存器 当一个字节的数据完全被移入接收寄存器时, 处理器可以通过读 SPDAT 寄存器获得该数据 如果发生超限 (SPIF 标志未被清 0, 就试图开始下一次传送 ),RXOV 位置 1, 表示发生数据超限, 此时接收移位寄存器保持原有数据并且 SPIF 位置 1, 这样直到 SPIF 位被清 0,SPI 主设备将不会接收任何数据 从模式 (1) 模式启动 当 SPCON 寄存器中的 MSTR 位清 0,SPI 在从模式下运行 在数据传送之前, 从设备的 SS引脚必须被置低, 而且必须保持低电平直到一个字节数据传送完毕 (2) 发送与接收从属模式下, 按照主设备控制的 SCK 信号, 数据通过 MOSI 引脚移入,MISO 引脚移出 一个位计数器记录 SCK 的边沿数, 当接收移位寄存器移入 8 位数据 ( 一个字节 ) 同时发送移位寄存器移出 8 位数据 ( 一个字节 ),SPIF 标志位被置 1 数据可以通过读取 SPDAT 寄存器获得 如果 SPI 中断被允许, 当 SPIF 置 1 时, 也会产生一个中断 为防止超限,SPI 从设备在向接收移位寄存器移入数据之前也必须软件清零 SPIF 标志位, 否则 RXOV 位置 1, 表示发生数据超限 此时接收移位寄存器保持原有数据并且 SPIF 位置 1, 这样 SPI 从设备将不会接收任何数据直到 SPIF 清 0 SPI 从设备不能启动数据传送, 所以 SPI 从设备必须在主设备开始一次新的数据传送之前将要传送的数据写入发送移位寄存器 如果在开始发送之前未写入数据, 从设备将传送 0x00 字节给主设备 如果写 SPDAT 操作发生在传送过程中, 那么 SPI 从设备的 WCOL 标志位置 1, 即如果传送移位寄存器已经含有数据,SPI 从设备的 WCOL 位置 1, 表示写 SPDAT 冲突 但是移位寄存器的数据不受影响, 传送也不会被中断 62
63 8.2.6 传送形式通过软件设置 SPCON 寄存器的 CPOL 位和 CPHA 位, 用户可以选择 SPI 时钟极性和相位的四种组合方式 CPOL 位定义时钟的极性, 即空闲时的电平状态, 它对 SPI 传输格式影响不大 CPHA 位定义时钟的相位, 即定义允许数据采样移位的时钟边沿 在主从通讯的两个设备中, 时钟极性相位的设置应一致 SCK Cycle Number SPEN (Internal) SCK (CPOL=0) SCK (CPOL=1) MOSI (from Master) MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB MISO (from Slave) MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB SS (to Slave) Capture Point 数据传送形式 (CPHA = 0) 如果 CPHA = 0,SCK 的第一个沿捕获数据, 从设备必须在 SCK 的第一个沿之前将数据准备好, 因此,SS 引脚的下降沿从 设备开始发送数据 SS引脚在每次传送完一个字节之后必须被拉高, 在发送下一个字节之前重新设置为低电平, 因此当 CPHA = 0,SSDIS 不起作用 SCK Cycle Number SPEN (Internal) SCK (CPOL=0) SCK (CPOL=1) MOSI (from Master) MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB MISO (from Slave) MSB bit6 bit5 bit4 bit3 bit2 bit1 LSB SS (to Slave) Capture Point 数据发送形式 (CPHA = 1) 如果 CPHA = 1, 主设备在 SCK 的第一个沿将数据输出到 MOSI 线上, 从设备把 SCK 的第一个沿作为开始发送信号 用户必 须在第一个 SCK 的两个沿内完成写 SPDAT 的操作 SS引脚在每个字节数据的传送过程始终保持低电平 这种数据传输形式是一个主设备一个从设备之间通信的首选形式 MISO/MOSI Byte1 Byte2 Byte3 Master SS Slave SS (CPHA = 0) Slave SS (CPHA = 1) CPHA/SS 时序 注意 : 当 SPI 用作从设备模式, 且 SPCON 寄存器的 CPOL 位清 0,P2.0/SCK 端口必须设置为输入模式, 并在 SPEN 位置 1 前打开上拉电阻 63
64 8.2.7 出错检测 SPSTA 寄存器中的标志位表示在 SPI 通讯中的出错情况 : (1) 模式故障 (MODF MODF) SH79F16 SPI 主模式下的模式故障出错表明 SS引脚上的电平状态与实际的设备模式不一致 SPSTA 寄存器中 MODF 位置 1 后, 表明系统控制存在多主设备冲突的问题 这种情况下,SPI 系统受到如下影响 : 产生 SPI 接收 / 错误 CPU 中断请求 ; SPSTA 寄存器的 SPEN 位清 0,SPI 被禁止 ; SPCON 寄存器的 MSTR 位清 0 当 SPCON 寄存器的 SS引脚禁止位 (SSDIS) 清 0,SS引脚信号为低时,MODF 标志位置 1 然而, 对于只有一个主设备的 系统来说, 主设备的 SS引脚被拉低, 那决不是另外一个主设备试图驱动网络 这种情况下, 为防止 MODF 置 1, 可使 SPCON 寄 存器中的 SSDIS 位置 1,SS引脚作为普通 I/O 口或是其它功能引脚 重新启动串行通信时, 用户必须将 MODF 位软件清 0, 将 SPCON 寄存器中的 MSTR 位和 SPSTA 寄存器的 SPEN 位置 1, 重新启动主模式 (2) 写冲突 (WCOL WCOL) 在发送数据序列期间写入 SPDAT 寄存器会引起的写冲突,SPSTA 寄存器中的 WCOL 位置 1 WCOL 位置 1 不会引起中断, 发送也不会中止 WCOL 位需由软件清 0 (3) 超限情况 (RXOV RXOV) 主设备或从设备尚未清除 SPIF 位, 主或从设备又试图发送几个数据字节时, 超限情况发生 在这种情况下, 接收移位寄存器保持原有数据,SPIF 置 1, 同样 SPI 设备直到 SPIF 被清除后才会再接收数据 在 SPIF 位被清除之前继续调用中断, 发送也不会中止 RXOV 位置 1 不会引起中断,RXOV 位需由软件清 中断两种 SPI 状态标志 SPIF & MODF 能产生一个 CPU 中断请求 串行外围设备数据发送标志,SPIF: 完成一个字节发送后由硬件置 1 模式故障标志,MODF: 该位被置 1 表示 SS引脚上的电平与 SPI 模式不一致的 SSDIS 位为 0 并且 MODF 置 1 将产生 SPI 接收器 / 出错 CPU 中断请求 当 SSDIS 置 1 时, 无 MODF 中断请求产生 SPIF SPI Transmitter CPU Interrupt Request SPI CPU Interrupt Request MODF SSDIS SPI Receiver/Error CPU Interrupt Request SPI 中断请求的产生 64
65 8.2.9 寄存器 Table 8.17 SPI 控制寄存器 SH79F16 A2H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SPCON DIR MSTR CPHA CPOL SSDIS SPR2 SPR1 SPR0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 DIR 6 MSTR 5 CPHA 4 CPOL 传送方向选择位 0:MSB 优先发送 1:LSB 优先发送 SP 设备选择位 0: 配置 SPI 作为从属设备 1: 配置 SPI 作为主设备 时钟相位控制位 0:SCK 周期的第一沿采集数据 1:SCK 周期的第二沿采集数据 时钟极性控制位 0: 在 Idle 状态下 SCK 处于低电平 1: 在 Idle 状态下 SCK 处于高电平 3 SSDIS 2-0 SPR[2:0] SS引脚控制位 0: 在主和从属模式下, 打开 SS引脚 1: 在主和从属模式下, 关闭 SS引脚如果 SSDIS 置 1, 不产生 MODF 中断请求 在从属模式下, 如果 CPHA = 0, 该位不起作用 串行外部设备时钟速率选择位 000:f SYS /4 001:f SYS /8 010:f SYS /16 011:f SYS /32 100:f SYS /64 其他 :f SYS /128 65
66 Table 8.18 SPI 状态寄存器 Table 8.19 SPI 数据寄存器 注意 : 当关闭 SPI 功能后, 读取 SPI 数据寄存器 SPDAT 的数据无效 SH79F16 F8H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SPSTA SPEN SPIF MODF WCOL RXOV 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SPEN 6 SPIF 5 MODF 4 WCOL 3 RXOV SPI 控制位 0: 关闭 SPI 1: 打开 SPI 接口 串行外部设备数据传送标志位 0: 由软件清 0 1: 表明已完成数据传输, 由硬件置 1 模式故障位 0: 由软件清 0 1: 表明 SS引脚电平与 SPI 模式不一致, 由硬件置 1 写入冲突标志位 0: 由软件清 0, 表明已处理写入冲突 1: 由硬件置 1, 表明检测到一个冲突 接收超限位 0: 表明已处理接收超限, 由软件清 0 1: 表明已检测到接收超限, 由硬件置 1 A3H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SPDAT SPDAT7 SPDAT6 SPDAT5 SPDAT4 SPDAT3 SPDAT2 SPDAT1 SPDAT0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SPDAT AT[7:0] 写入 SPDAT 的数据被放置到发送移位寄存器中 读取 SPDAT 时将获得接收移位寄存器的数据 66
67 8.3 增强型通用异步收发器 (EUART EUART) 特性 内建 1 个 EUART, 兼容传统 8051 波特率可选择为系统时钟分频或定时器 1/2 的溢出率 增强功能包括帧出错检测及自动地址识别 EUART 有四种工作方式 SH79F EUART 工作方式 EUART 有 4 种工作方式 在通信之前用户必须先初始化 SCON, 选择方式和波特率 如果使用方式 1 或方式 3 应先初始化定时器 1 或定时器 2 在所有四种方式中, 任何将 SBUF 作为目标寄存器的写操作都会启动发送 在方式 0 中由条件 RI = 0 和 REN = 1 初始化接收 这会在 TxD 引脚上产生一个时钟信号, 然后在 RxD 引脚上移 8 位数据 在其他方式中由输入的起始位初始化接收 ( 如果 REN = 1) 通过发送起始位, 外部发送器开始通信 EUART 方式列表 SM0 SM1 方式类型波特率帧长度起始位停止位第 9 位 同步 SYSCLK/(4 或 12) 8 位无无无 异步定时器 1 或 2 的溢出率 /(16 或 32) 10 位 1 1 无 异步 SYSCLK/(32 或 64) 11 位 1 1 0, 异步定时器 1 或 2 的溢出率 /(16 或 32) 11 位 1 1 0, 1 方式 0: 同步, 半双工通讯 方式 0 支持与外部设备的同步通信 在 RXD 引脚上收发串行数据 TXD 引脚用作发送移位时钟 SH79F 提供 TxD 引脚上的移位时钟 因此这个方式是串行通信的半双工方式 在这个方式中, 每帧收发 8 位, 低位先接收或发送 通过置 SM2 位 (SCON.5) 为 0 或 1, 波特率固定为系统时钟的 1/12 或 1/4 当 SM2 位为 0 时, 串行端口以系统时钟的 1/12 运行 当置 1 时, 串行端口以系统时钟的 1/4 运行 与标准 8051 唯一不同的是,SH79F 在方式 0 中有可变波特率 功能块框图如下图所示 数据通过 RxD 引脚进入和移出串行端口 移位时钟由 TxD 引脚输出, 用来移位进出 SH79F 的数据 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 67
68 任何将 SBUF 作为目标寄存器的写操作都会启动发送 下一个系统时钟 Tx 控制块开始发送 数据转换发生在移位时钟的下降沿, 移位寄存器的内容逐次从左往右移位, 空位置 0 当移位寄存器中的所有 8 位都发送后,Tx 控制模块停止发送操作, 然后在下一个系统时钟的上升沿将 TI 置 1(SCON.1), 并且 RxD 引脚保持高电平 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 置 1, 直到被软件清 0 才允许接收 RxD TxD D0 D1 D2 D3 D4 D5 D6 D7 RI 方式 1:8 位 EUART, 可变波特率, 异步全双工 Receive Timing of Mode 0 方式 1 提供 10 位全双工异步通信,10 位由一个起始位 ( 逻辑 0),8 个数据位 ( 低位为第一位 ), 和一个停止位 ( 逻辑 1) 组成 在接收时, 这 8 个数据位存储在 SBUF 中而停止位储存在 RB8(SCON.2) 中 方式 1 中的波特率是可变的, 串行收发波特率可被设置为定时器 1 溢出率的 1/16 或 1/32, 或是定时器 2 溢出率的 1/16( 详见波特率章节 ) 功能块框图如下图所示 : Timer 1 Overflow Timer 2 Overflow Transmit Shift Register STOP SMOD Write to SBUF Internal Data Bus PARIN START LOAD CLOCK SOUT TXD TCLK 0 1 TX START TX SHIFT RCLK 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 68
69 任何将 SBUF 作为目标寄存器的写操作都会启动发送, 实际上发送是从 16 分频计数器中的下一次跳变之后的系统时钟开始的, 因此位时间与 16 分频计数器是同步的, 与对 SBUF 的写操作不同步 起始位首先在 TxD 引脚上移出, 然后是 8 位数据位 在发送移位寄存器中的所有 8 位数据都发送完后, 停止位在 TxD 引脚上移出, 在停止位发出的同时 Tl 标志置 1 Write to SBUF TxD Shift CLK Start D0 D1 D2 D3 D4 D5 D6 D7 Stop TI Send Timing of Mode 1 只有 REN 位置 1 时才允许接收 当 RxD 引脚检测到下降沿时串行口开始接收串行数据 为此,CPU 对 RxD 不断采样, 采样速率为波特率的 16 倍 当检测下降沿时,16 分频计数器立即复位, 这有助于 16 分频计数器与 RxD 引脚上的串行数据位同步 16 分频计数器把每一位的时间分为 16 个状态, 在第 状态时, 位检测器对 RXD 端的电平进行采样 为抑制噪声, 在这 3 个状态采样中至少有 2 次采样值一致数据才被接收 如果所接收的第一位不是 0, 说明这位不是一帧数据的起始位, 该位被忽略, 接收电路被复位, 等待 RxD 引脚上另一个下降沿的到来 若起始位有效, 则移入移位寄存器, 并接着移入其它位到移位寄存器 8 个数据位和 1 个停止位移入之后, 移位寄存器的内容被分别装入 SBUF 和 RB8 中,RI 置 1, 但必须满足下列条件 : 1. RI = 0 2. SM2 = 0 或者接收的停止位 = 1 如果这些条件被满足, 那么停止位装入 RB8,8 个数据位装入 SBUF,RI 被置 1 否则接收的帧会丢失 这时, 接收器将重新去探测 RxD 端是否另一个下降沿 用户必须用软件清除 RI, 然后才能再次接收 RxD Start D0 D1 D2 D3 D4 D5 D6 D7 Stop Bit Sample Shift CLK RI Receive Timing of Mode 1 69
70 方式 2:9 位 EUART, 固定波特率, 异步全双工 SH79F16 这个方式使用异步全双工通信中的 11 位 一帧由一个起始位 ( 逻辑 0),8 个数据位 ( 低位为第一位 ), 一个可编程的第 9 数据位和一个停止位 ( 逻辑 1) 组成 方式 2 支持多机通信和硬件地址识别 ( 详见多机通信章节 ) 在数据传送时, 第 9 数据位 (SCON 中的 TB8) 可以写 0 或 1, 例如, 可写入 PSW 中的奇偶位 P, 或用作多机通信中的数据 / 地址标志位 当接收到数据时, 第 9 数据位进入 RB8 而停止位不保存 PCON 中的 SMOD 位选择波特率为系统工作频率的 1/32 或 1/64 功能块框图如下所示 : SMOD System Clock Write to SBUF TX START Internal Data Bus TX SHIFT TB8 Transmit Shift Register D8 STOP PARIN START LOAD CLOCK SOUT TXD 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 引脚上移出, 在停止位发送后 Tl 标志置 1 Write to SBUF TxD Start D0 D1 D2 D3 D4 D5 D6 D7 D8 Stop Shift CLK TI Send Timing of Mode 2 70
71 只有 REN 位置 1 时才允许接收 当 RxD 引脚检测到下降沿时串行口开始接收串行数据 为此,CPU 对 RxD 不断采样, 采样速率为波特率的 16 倍 当检测下降沿时,16 分频计数器立即复位 这有助于 16 分频计数器与 RxD 引脚上的串行数据位同步 16 分频计数器把每一位的时间分为 16 个状态, 在第 状态时, 位检测器对 RXD 端的电平进行采样 为抑制噪声, 在这 3 个状态采样中至少有 2 次采样值一致数据才被接收 如果所接收的第一位不是 0, 说明这位不是一帧数据的起始位, 该位被忽略, 接收电路被复位, 等待 RxD 引脚上另一个下降沿的到来 若起始位有效, 则移入移位寄存器, 并接着移入其它位到移位寄存器 9 个数据位和 1 个停止位移入之后, 移位寄存器的内容被分别装入 SBUF 和 RB8 中,RI 置 1, 但必须满足下列条件 : 1. RI = 0 2. SM2 = 0 或者接收的第 9 位 = 1, 且接收的字节符合实际从机地址如果这些条件被满足, 那么第 9 位移入 RB8,8 位数据移入 SBUF,RI 被置 1 否则接收的数据帧会丢失 在停止位的当中, 接收器回到寻找 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 的波特率产生方式 Timer 1 Overflow Timer 2 Overflow Transmit Shift Register STOP SMOD TB8 D8 2 Internal PARIN Data Bus SOUT TXD Write to SBUF START LOAD 0 1 CLOCK TCLK 0 1 TX START TX SHIFT RCLK 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 71
72 8.3.3 波特率在方式 0 中, 波特率可编程为系统时钟的 1/12 或 1/4, 由 SM2 位决定 当 SM2 为 0 时, 串行端口在系统时钟的 1/12 下运行 当 SM2 为 1 时, 串行端口在系统时钟的 1/4 下运行 在方式 1 和方式 3 中, 波特率可选择来至定时器 1 或定时器 2 的溢出率 分别置 TCLK(T2CON.4) 和 RCLK(T2CON.5) 位为 1 来选择定时器 2 作为 TX 和 RX 的波特时钟源 ( 详见定时器章节 ) 无论 TCLK 还是 RCLK 为逻辑 1, 定时器 2 都为波特率发生器方式 如果 TCLK 和 RCLK 为逻辑 0, 定时器 1 作为 Tx 和 Rx 的波特时钟源 方式 1 和方式 3 波特率公式如下所示, 其中 TH1 是定时器 1 的 8 位自动重载寄存器,SMOD 为 EUART 的波特率二倍频器 (PCON.7),[RCAP2H, RCAP2L] 是定时器 2 的 16 位重载入寄存器 T1CLK 是定时器 1 的时钟源,T2CLK 是定时器 2 的时钟源 SMOD 2 ft1 BaudRate =, 用定时器 1 作为波特率发生器, 定时器 1 工作在方式 TH1 1 f SYS BaudRate =, 用定时器 2 作为波特率发生器, 定时器 2 时钟源为系统时钟 [ RCAP2H, RCAP2L] 1 f SYS /12 BaudRate =, 用定时器 2 作为波特率发生器, 定时器 2 时钟源为系统时钟 / [ RCAP2H, RCAP 2L] 1 ft 2 BaudRate =, 用定时器 2 作为波特率发生器, 定时器 2 时钟源为 T2 引脚输入时钟 [ RCAP2H, RCAP2L] 在方式 2 中, 波特率固定为系统时钟的 1/32 或 1/64, 由 SMOD 位 (PCON.7) 决定 当 SMOD 位为 0 时,EUART 以系统时钟的 1/64 运行 当 SMOD 位为 1 时,EUART 以系统时钟的 1/32 运行 SMOD f SYS BaudRate = 2 ( ) 多机通讯 软件地址识别 方式 2 和方式 3 有一个专门的适用于多机通讯的功能 在这两个方式下, 接收的是 9 位数据, 第 9 位移入 RB8 中, 然后再来一位停止位 EUART 可以这样来设定 : 当接收到停止位时, 只有在 RB8 = 1 的条件下, 串行口中断才会有效 ( 请求标志 RI 置 1) 可以通过将 SCON 寄存器的 SM2 位置 1 使 EUART 具有这个功能 在多机通讯系统中, 以如下所述来利用这一功能 当主机要发送一数据块给几个从机中的一个时, 它先送出一地址字节, 以辨认目标从机 地址字节与数据字节可用第 9 数据位来区别, 地址字节的第 9 位为 1, 数据字节的第 9 位为 0 如果从机 SM2 为 1, 则不会响应数据字节中断 地址字节可以中断所有从机, 这样, 每一个从机都检查所接收到的地址字节, 以判别自己是不是目标从机 被寻到的从机清 0 SM2 位, 并准备接收即将到来的数据字节, 当接收完毕时, 从机再一次将 SM2 置 1 没有被寻址的从机, 则维持它们的 SM2 位为 1, 忽略到来的数据字节, 继续做自己的事情 注意 : 在方式 0 中,SM2 用来选择波特率加倍 在方式 1 中,SM2 用来检测停止位是否有效, 如果 SM2 = 1, 接收中断不会响应直到接收到一个有效的停止位 72
73 自动 ( 硬件 ) 地址识别在方式 2 和方式 3 中,SM2 置 1 将使 EUART 在如下状态下运行 : 当 1 个停止位被接收时, 如果载入 RB8 的第 9 数据位为 1( 地址字节 ) 并且接收到的数据字节符合 EUART 的从机地址,EUART 产生一个中断 接着, 从机应该将 SM2 清零, 以接收后续的数据字节 在 9 位方式下要求第 9 位为 1 以表明该字节是地址而非数据 当主机要发送一组数据给几个从机中的一个时, 必须先发送目标从机的地址 所有从机在等待接收地址字节时, 为了确保仅在接收地址字节时产生中断,SM2 位必须置 1 自动地址识别的特点是只有地址匹配的从机才能产生中断, 地址比较通过硬件完成而不是软件 中断产生后, 地址相匹配的从机清零 SM2, 继续接收数据字节 地址不匹配的从机不受影响, 将继续等待接收和它匹配的地址字节 一旦全部信息接收完毕, 地址匹配的从机应该再次把 SM2 置 1, 忽略所有传送的非地址字节, 直到接收到下一个地址字节 使用自动地址识别功能时, 主机可以通过调用给定的从机地址选择与一个或多个从机通信 使用广播地址可以联系所有的从机 有两个特殊功能寄存器用来定义从机地址 (SADDR) 和地址屏蔽 (SADEN) 从机地址是一个 8 位的字节, 存于 SADDR 寄存器中 SADEN 用于定义 SADDR 内位的有效与否, 如果 SADEN 中某一位为 0, 则 SADDR 中相应位被忽略, 如果 SADEN 中某一位置 1, 则 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 控制器 用户可以按照上面提到的方法实现软件识别地址的多机通讯 帧出错检测当寄存器 PCON 中的 SSTAT 位为逻辑 1 时, 帧出错检测功能才有效 3 个错误标志位被置 1 后, 只能通过软件清零, 尽管后续接收的帧没有任何错误也不会自动清零 注意 :SSTAT 位必须为逻辑 1 是访问状态位 (FE0, RXOV0 和 TXCOL0),SSTAT 位为逻辑 0 时是访问方式选择位 (SM0, SM1 和 SM2) 发送冲突如果在一个发送正在进行时, 用户软件写数据到 SBUF 寄存器时, 发送冲突位 (SCON 寄存器中的 TXCOL 位 ) 置 1 如果发生了冲突, 新数据会被忽略, 不能被写入发送缓冲器 接收溢出如果在接收缓冲器中的数据未被读取之前,RI 清 0 又有新的数据存入接收缓冲器, 那么接收溢出位 ( SCON 寄存器中的 RXOV 位 ) 置 1 如果发生了接收溢出, 接收缓冲器中原来的数据将丢失 帧出错如果检测到一个无效 ( 低 ) 停止位, 那么帧出错位 ( 寄存器 SCON 中的 FE) 置 1 暂停检测当连续检测到 11 个位都为低电平位时, 则认为检测到一个暂停 由于暂停条件同样满足帧错误条件, 因此检测到暂停时也会报告帧错误 一旦检测到暂停条件,UART 将进入空闲状态并一直保持, 直至接收到有效停止位 (RxD 引脚上出现上升沿 ) 73
74 8.3.6 寄存器 Table 8.20 EUART 控制及状态寄存器 SH79F16 98H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SCON SM0 /FE SM1 /RXOV SM2 /TXCOL REN TB8 RB8 TI RI 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SM[0:1 0:1] 7 FE 6 RXOV 5 SM2 5 TXCOL 4 REN 3 TB8 2 RB8 1 TI 0 RI EUART 串行方式控制位,SST SSTAT = 0 00: 方式 0, 同步方式, 固定波特率 01: 方式 1,8 位异步方式, 可变波特率 10: 方式 2,9 位异步方式, 固定波特率 11: 方式 3,9 位异步方式, 可变波特率 EUART 帧出错标志位, 当 FE 位被读时,SSTAT 位必须被设置为 1 0: 无帧出错, 由软件清除 1: 发生帧出错, 由硬件置 1 EUART 接收溢出标志位, 当 RXOV 位被读时,SSTAT 位必须被设置为 1 0: 无接收超限, 由软件清除 1: 有接收超限, 由硬件置 1 EUART 多处理机通讯允许位 ( 第 9 位 1 校验器 ),SSTAT = 0 0: 在方式 0 下, 波特率是系统时钟的 1/12 在方式 1 下, 禁止停止位确认检验, 停止位将置 RI 为 1 产生中断在方式 2 和 3 下, 任何字节都会置 RI 为 1 产生中断 1: 在方式 0 下, 波特率是系统时钟的 1/4 在方式 1 下, 允许停止位确认检验, 只有有效的停止位 (1) 才能置 RI 为 1 产生中断在方式 2 和 3 下, 只有寻址字节 ( 第 9 位 = 1) 能置 RI 为 1 产生中断 EUART 发送冲突标志位, 当 TXCOL 位被读时,SSTAT 位必须被设置为 1 0: 无发送冲突, 由软件清 0 1: 有发送冲突, 由硬件置 1 EUART 接收器允许位 0: 禁止接收 1: 允许接收 发送器,EUART 的第 8 位第 9 位在 EUART 的方式 2 和 3 下发送, 由软件置 1 或清 0 接收器,EUART 的第 8 位在方式 0 下,RB8 保留在方式 1 下,RB8 接收停止位在方式 2 和 3 下,RB8 接收第 9 位 EUART 的发送中断标志位 0: 由软件清 0 1: 由硬件置 1, 在方式 0 下的第 8 位最后, 或在其他方式下的停止位开始 EUART 的接收中断标志位 0: 由软件清 0 1: 由硬件置 1, 在方式 0 下的第 8 位最后, 或在其他方式下的停止位开始 74
75 Table 8.21 EUART 数据寄存器 Table 8.22 电源控制寄存器 Table 8.23 EUART 从属地址及地址掩码寄存器 SH79F16 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] SBUF 包括两个寄存器 : 一个发送移位寄存器和一个接收锁存器写入 SBUF 的数据将送至发送移位寄存器, 并启动发送过程读 SBUF 将返回接收锁存器中的内容 87H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PCON SMOD SSTAT - - GF1 GF0 PD IDL 读 / 写读 / 写读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 SMOD 6 SSTAT 3-2 GF[1:0] 1 PD 0 IDL 波特率加倍位在模式 1 和 3 中,SMOD = 1, 当定时器 1 为波特率发生器时, 波特率加倍在模式 2 中,SMOD = 1, 波特率加倍 SCON[7:5] 功能选择位 0:SCON[7:5] 作为 SM0,SM1,SM2 使用 1:SCON[7:5] 作为 FE,RXOV,TXCOL 使用 用户通用标志位 掉电模式控制位 空闲模式控制位 9AH-9BH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 SADDR SADD7 SADD6 SADD5 SADD4 SADD3 SADD2 SADDR1 SADD0 SADEN SADEN7 SADEN6 SADEN5 SADEN4 SADEN SADEN2 SADEN1 SADEN0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 SADDR SADEN.7-0 EUART 从机地址定义 EUART 从机地址 从机地址位屏蔽寄存器 0:SADDR 中的相应位被忽略 1:SADDR 中的相应位被检验 75
76 8.4 模 / 数转换器 (ADC ADC) 特性 10 位分辨率 内建基准电压 8 模拟通道输入 SH79F16 SH79F 包含一个单端型 10 位逐次逼近型模 / 数转换器 (ADC), 基准电压 V REF 直接与 V DD 相连,8 个 ADC 通道都可以 输入独立的模拟信号, 但是每次只能使用一个通道 GO/DONE信号控制开始转换, 提示转换结束 当转换完成时, 更新 ADC 数据寄存器, 设置 ADCON 寄存器中的 ADCIF 位, 并产生一个中断 ( 如果 ADC 中断被允许 ) ADC 模块整合数字比较功能可以比较 ADC 中的模拟输入的值与数字值 如果允许数字比较功能 ( 在 ADCON 寄存器中的 EC 位置 1), 并且 ADC 模块使能 ( 在 ADCON 寄存器中的 ADON 位置 1), 只有当相应的模拟输入的数字值大于或等于寄存器中的 比较值 (ADDH/L) 时, 才会产生 ADC 中断 当 GO/DONE置 1 时, 数字比较功能会持续工作, 直到 GO/DONE清 0 这一点与模数转换工作方式不同 带数字比较功能的 ADC 模块能在 Idle 模式下工作, 并且 ADC 中断能够唤醒 Idle 模式 但是, 在掉电模式下,ADC 模块被禁止 ADC 模块图 SCH2~SCH0 CH7~CH0 10 bit SAR ADC Input voltage AN0 AN1 AN2 AN3 AN4 AN5 AN6 AN7 AD 转换器模块图 76
77 8.4.3 寄存器 Table 8.24 ADC 控制寄存器 SH79F16 93H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 ADCON ADON ADCIF EC - SCH2 SCH1 SCH0 GO/DONE 读 / 写读 / 写读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写 ADON 6 ADCIF 5 EC 3-1 SCH[2:0] GO/DONE ADC 允许位 0: 禁止 ADC 模块 1: 允许 ADC 模块 ADC 中断标志位 0: 无 ADC 中断 1: 由硬件置 1 表示已完成 AD 转换, 或者模拟输入大于或等于 ADDH/ADDL( 如果允许数字比较模块 ) 比较功能允许位 0: 禁止数字比较功能 1: 允许数字比较功能 ADC 通道选择位 000:ADC 通道 AN0 001:ADC 通道 AN1 010:ADC 通道 AN2 011:ADC 通道 AN3 100:ADC 通道 AN4 101:ADC 通道 AN5 110:ADC 通道 AN6 111:ADC 通道 AN7 ADC 状态标志位 0: 当完成 AD 转换时, 由硬件自动清 0 在转换期间清 0 这个位会中止 AD 转换 如果允许数字比较功能, 该位不会由硬件清 0 只能由软件清 0 1: 置 1 开始 AD 转换或者启动数字比较功能 77
78 Table 8.25 ADC 转换时间寄存器 注意 : (1) 请确保 t AD 1µs; (2) 即使 TS[3:0] = 0000, 最小采样时间为 2t AD ; (3) 即使 TS[3:0] = 1111, 最大采样时间为 15t AD ; (4) 在设置 TS[3:0] 前, 请估算连接到 ADC 输入引脚的串联电阻 ; (5) 选择 2*t AD 为采样时间时, 请确保连接到 ADC 输入引脚的串联电阻小于 10kΩ; (6) 总共转换时间 = 12t AD + 采样时间 举例说明 : SH79F16 94H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 ADT TADC2 TADC1 TADC0 - TS3 TS2 TS1 TS0 读 / 写读 / 写读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写 TADC[2:0] 3-0 TS[3:0] 系统时钟 (SYSCLK SYSCLK) 4MHz 12MHz 16MHz ADC 时钟周期选择位 000:ADC 时钟周期 t AD = 2 t SYS 001:ADC 时钟周期 t AD = 4 t SYS 010:ADC 时钟周期 t AD = 6 t SYS 011:ADC 时钟周期 t AD = 8 t SYS 100:ADC 时钟周期 t AD = 12 t SYS 101:ADC 时钟周期 t AD = 16 t SYS 110:ADC 时钟周期 t AD = 24 t SYS 111:ADC 时钟周期 t AD = 32 t SYS 采样时间选择位 2 t AD 采样时间 = (TS [3:0]+1) * t AD 15 t AD TADC[2:0] t AD TS[3:0] 采样时间 转换时间 *2=0.5µs - - (t AD <1µs, 不推荐 ) *4=1µs *1=2µs 12*1+2=14µs *4=1µs *1=8µs 12*1+8=20µs *4=1µs *1=15µs 12*1+15=27µs *32=8µs *8=16µs 12*8+16=112µs *32=8µs *8=64µs 12*8+64=160µs *32=8µs *8=120µs 12*8+120=216µs *2=0.166µs - - (t AD <1µs, 不推荐 ) *12=1µs *1=2µs 12*1+2=14µs *12=1µs *1=8µs 12*1+8=20µs *12=1µs *1=15µs 12*1+15=27µs *32=2.7µs *2.7=5.4µs 12* =37.8µs *32=2.7µs *2.7=21.6µs 12* =54µs *32=2.7µs *2.7=40.5µs 12* =72.9µs *2=0.125µs - - (t AD <1µs, 不推荐 ) *24=1.5µs *1.5=3.0µs 12* =21µs *24=1.5µs *1.5=12µs 12*1.5+12=30µs *24=1.5µs *1.5=22.5µs 12* =40.5µs *32=2.0µs *2.0=4.0µs 12* =28µs *32=2.0µs *2.0=16µs 12*2.0+16=40µs *32=2.0µs *2.0=30µs 12*2.0+30=54µs 78
79 Table 8.26 ADC 通道设置寄存器 Table 8.27 ADC 数据寄存器 启动 ADC 转换步骤 : 1. 选择模拟输入通道 2. 使能 ADC 模块 3.GO/DONE置 1 开始 ADC 转换 4. 等待 GO/DONE = 0 或者 ADCIF = 1, 如果 ADC 中断使能, 则 ADC 中断将会产生, 用户需要软件清 0 ADCIF 5. 从 ADDH/ADDL 获得转换数据 6. 重复步骤 3-5 开始另一次转换 启动数字比较功能步骤 : 1. 选择模拟输入通道 2. 写入 ADDH/ADDL, 设置比较值 3.EC 置 1 使能数字比较功能 4. 使能 ADC 模块 SH79F16 95H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 ADCH CH7 CH6 CH5 CH4 CH3 CH2 CH1 CH0 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 5.GO/DONE置 1 开始数字比较功能 6. 如果模拟输入值大于等于比较值,ADCIF 会被置 1 如果 ADC 中断使能, 则 ADC 中断将会产生, 用户需要软件清 0 ADCIF 7. 数字比较功能会持续工作, 直到 GO/DONE被软件清 CH[7:0] 通道配置 0:P0.2-P0.5,P1.2-P1.5 作为 I/O 端口 1:P0.2-P0.5,P1.2-P1.5 作为 ADC 输入口 96H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 ADDL A1 A0 读 / 写 读 / 写读 / 写 H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 ADDH A9 A8 A7 A6 A5 A4 A3 A2 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 A9-A0 ADC 数据寄存器采样模拟电压的数字值 当完成转换后, 这个值会更新 如果 ADC 数字比较功能使能 (EC = 1), 这个值将与模拟输入进行比较 79
80 8.5 蜂鸣器 特性 为音频发生器输出方波信号 有 10 种频率可供选择输出或者禁止输出 寄存器 Table 8.28 蜂鸣器控制寄存器 SH79F16 BDH 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 BUZCON BCA3 BCA2 BCA1 BCA0 BZEN 读 / 写 读 / 写读 / 写读 / 写读 / 写读 / 写 BCA[3:0] 0 BZEN 蜂鸣器输出载波频率控制位 0000: 系统时钟 / : 系统时钟 / : 系统时钟 / : 系统时钟 / : 系统时钟 / : 系统时钟 / : 系统时钟 / : 系统时钟 /8 1000: 系统时钟 / : 系统时钟 /32768 其它 : 系统时钟 /8192 蜂鸣器输出使能控制位 0:P2.0 作为 I/O 口 1:P2.0 作为蜂鸣器输出口 80
81 8.6 低电压复位 (LVR LVR) 特性 通过代码选项选择,LVR 设定电压 V LVR 可为 4.1V 或 3.7V LVR 去抖动时间 T LVR 为 30-60µs 当供电电压低于设定电压 V LVR 时, 将产生内部复位 低电压复位 (LVR) 功能是为了监测供电电压, 当供电电压低于设定电压 V LVR 时,MCU 将产生内部复位 LVR 去抖动时间 T LVR 大约为 30µs-60µs LVR 功能打开后, 具有以下特性 (t 表示电压低于设定电压 V LVR 的时间 ): 当 V DD V LVR 且 t T LVR 时产生系统复位 当 V DD > V LVR 或 V DD < V LVR, 但 t < T LVR 时不会产生系统复位 通过代码选项, 可以选择 LVR 功能的打开与关闭 在交流电或大容量电池应用中, 接通大负载后容易导致 MCU 供电暂时低于定义的工作电压 低电压复位可以应用于此, 保护系统在低于设定电压下产生有效复位 81
82 8.7 看门狗定时器 (WDT WDT), 程序超范围溢出 (OVL OVL) 复位及其他复位状态 特性 看门狗 看门狗可以工作在掉电模式下 看门狗溢出频率可选 硬件自动检测程序超范围溢出, 并产生 OVL 复位 看门狗定时器 (WDT) 是一个递减计数器, 独立内建 RC 振荡器作为时钟源, 因此在掉电模式下仍会持续运行 当 WDT 溢出时, 设备将自动复位 通过代码选项可以允许或禁止该功能 WDT 控制位 (WDT.2-0) 用来选择不同的溢出时间 WDT 溢出后,WDT 溢出标志 (WDOF) 将由硬件自动置 1 读或者写 RSTSTAT 寄存器,WDT 会重新开始计数 程序超范围溢出复位 SH79F 为进一步增强 CPU 运行可靠性, 内建程序超范围溢出检测电路, 一旦检测到程序计数器的值超出 ROM 最大值, 或者发现指令操作码 ( 不检测操作数 ) 为 8051 指令集中不存在的 A5H, 便认为程序跑飞, 产生 CPU 复位信号, 同时将 WDOF 标志位置 1 为应用这个特性, 用户应该将未使用的 Flash ROM 用 0xA5 填满 注意 : 为了使能程序超范围溢出复位, 客户代码选项必须选择 OVL 产生 OVL 复位 (OP_OVL 清 0, 详见代码选项章节 ) 复位状态寄存器还包含其他一些复位标志位, 如下表所示 : 82
83 8.7.2 寄存器 Table 8.29 复位状态寄存器 SH79F16 B1H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 RSTSTAT WDOF - PORF LVRF CLRF WDT.2 WDT.1 WDT.0 读 / 写读 / 写 - 读 / 写读 / 写读 / 写读 / 写读 / 写读 / 写 (POR POR) (WDT WDT) 1 - u u u (LVR LVR) u - u 1 u (PIN PIN) u - u u WDOF 看门狗溢出或程式超范围溢出标志位由硬件置 1, 可由软件或上电复位清 0 0: 未发生 WDT 溢出或程式超范围溢出 1: 发生 WDT 溢出或程式超范围溢出 5 PORF 4 LVRF 3 CLRF 2-0 WDT[2:0] 上电复位标志位上电复位后硬件置 1, 只能由软件清 0 0: 没有发生上电复位 1: 发生过上电复位 低压复位标志位低压复位后置 1, 可由软件或上电复位清 0 0: 没有发生低压复位 1: 发生过低压复位 Reset 引脚复位标志位引脚复位后置 1, 由软件或上电复位清 0 0: 没有发生引脚复位 1: 发生过引脚复位 WDT 溢出周期控制位 000: 溢出周期最小值 = ms 001: 溢出周期最小值 = 682.6ms 010: 溢出周期最小值 = 170.6ms 011: 溢出周期最小值 = 85.3ms 100: 溢出周期最小值 = 42.6ms 101: 溢出周期最小值 = 10.6ms 110: 溢出周期最小值 = 2.6ms 111: 溢出周期最小值 = 0.6ms 注意 : 应用中如果看门狗打开, 程式清看门狗的最大间隔时间不能大于以上所列最小值 83
84 8.8 电源管理 特性 SH79F16 空闲模式和掉电模式两种省电模式 发生中断和复位可退出空闲 (Idle) 掉电 (Power-Down) 模式为减少功耗,SH79F 提供两种低功耗省电模式 : 空闲 (Idle) 模式和掉电 (Power-Down) 模式, 这两种模式都由 PCON 和 SUSLO 两个寄存器控制 空闲模式 (Idle Idle) 空闲模式能够降低系统功耗, 在此模式下, 程序中止运行,CPU 时钟停止, 但外部设备时钟继续运行 空闲模式下,CPU 在确定的状态下停止, 并在进入空闲模式前所有 CPU 的状态都被保存, 如 PC,PSW,SFR,RAM 等 两条连续指令 : 先设置 SUSLO 寄存器为 0x55, 随即将 PCON 寄存器中的 IDL 位置 1, 使 SH79F 进入空闲模式 如果不满足上述的两条连续指令,CPU 在下一个机器周期清 0 SUSLO 寄存器或 IDL 位,CPU 也不会进入空闲模式 IDL 位置 1 是 CPU 进入空闲模式之前执行的最后一条指令 两种方式可以退出空闲模式 : (1) 中断产生 恢复 CPU 时钟, 硬件清除 SUSLO 寄存器和 PCON 寄存器的 IDL 位 然后执行中断服务程序, 随后跳转到进入空闲模式指令之后的指令 (2) 复位信号产生后 ( 复位引脚上出现低电平,WDT 复位,LVR 复位 ) 在预热定时结束后,CPU 恢复时钟,SUSLO 寄存器和在 PCON 寄存器中的 IDL 位被硬件清 0, 最后 SH79F 复位, 程序从地址位 0000H 开始执行 此时,RAM 保持不变而 SFR 的值根据不同功能模块改变 掉电模式 (Power-Down Power-Down) 掉电模式可以使 SH79F 进入功耗非常低的状态 掉电模式将停止 CPU 和外围设备的所有时钟信号 如果 WDT 使能, WDT 模块将继续工作 在进入掉电模式前所有 CPU 的状态都被保存, 如 PC,PSW,SFR,RAM 等 两条连续指令 : 先设置 SUSLO 寄存器为 0x55, 随即将 PCON 寄存器中的 PD 位置 1, 使 SH79F 进入掉电模式 如果不满足上述的两条连续指令 CPU 在下一个机器周期清除 SUSLO 寄存器或的 PD 位,CPU 也不会进入掉电模式 PD 位置 1 是 CPU 进入掉电模式之前执行的最后一条指令 注意 : 如果同时设置 IDL 位和 PD 位,SH79F 进入掉电模式 退出掉电模式后,CPU 也不会进入空闲模式, 从掉电模式退出后硬件清 0 IDL 及 PD 位 有两种方式可以退出掉电模式 : (1) 有效外部中断使 SH79F 退出掉电模式 在中断发生后振荡器启动, 在预热计时结束之后 CPU 时钟和外部设备时钟恢复,SUSLO 寄存器和 PCON 寄存器中的 PD 位会被硬件清除, 然后程序运行中断服务程序 在完成中断服务程序之后, 跳转到进入掉电模式之后的指令继续运行 (2) 复位信号 ( 复位引脚上出现低电平,WDT 复位如果被允许,LVR 复位如果被允许 ) 在预热计时之后会恢复 CPU 时钟, SUSLO 寄存器和 PCON 寄存器中的 PD 位会被硬件清除, 最后 SH79F 会被复位, 程序会从 0000H 地址位开始运行 RAM 将保持不变, 而根据不同功能模块 SFR 的值可能改变 注意 : 如要进入这两种低功耗模式, 必须在置位 PCON 中的 IDL/PD 位后增加 3 个空操作指令 (NOP) 84
85 8.8.4 寄存器 Table 8.30 电源控制寄存器 Table 8.31 省电模式控制寄存器 SH79F16 87H 第 7 位第 6 位第 5 位第 4 位第 3 位第 2 位第 1 位第 0 位 PCON SMOD SSTAT - - GF1 GF0 PD IDL 读 / 写读 / 写读 / 写 - - 读 / 写读 / 写读 / 写读 / 写 SMOD 6 SSTAT 3-2 GF[1:0] 1 PD 0 IDL EUART 波特率加倍器 SCON[7:5] 功能选择位 用于软件的通用标志 掉电模式控制位 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 注意 : 在空闲模式, 只有 CPU 的系统时钟被中止, 外围模块如定时器,ADC 等的时钟不受影响 ( 尽管它们的时钟源也是系统时钟 ), 所以可以利用定时器,ADC 等的中断唤醒空闲模式 但是在掉电模式下, 所以时钟都将被切断 85
86 8.9 预热计数器 特性 内建电源预热计数器消除电源的上电的不稳定状态 内建振荡器预热计数器消除振荡器起振时的不稳定状态 SH79F 内建预热计数器, 它能消除振荡器在下列情况下起振时的不稳定状态, 同时完成内部一些初始化序列, 如读取内部客户代码选项等 SH79F 内建振荡器预热计数器, 它能消除振荡器在下列情况下起振时的不稳定状态 : 上电复位, 引脚复位, 从低功耗模式中唤醒, 看门狗复位和 LVR 复位 上电后,SH79F 会先经过电源上电预热计数过程, 等待溢出后再进行振荡器的预热计数过程, 溢出后开始运行程序 电源上电预热计数时间 上电复位 / 引脚复位 / 低电压复位 看门狗复位 ( 不包含掉电模式 ) 看门狗复位 ( 唤醒掉电模式 ) 掉电模式下中断唤醒 电源上电预热计数时间 * 振荡器上电预热计数 ** 电源上电预热计数时间 * 振荡器上电预热计数 ** 电源上电预热计数时间 * 振荡器上电预热计数 ** 电源上电预热计数时间 * 振荡器上电预热计数 ** 11ms 有 1000CKs 无 1000CKs 有 64CKs 有 注意 : * 该计数时钟为内部 2MHz RC 振荡器 ** 振荡器上电预热计数时间请参照下表 振荡器上电预热计数时间 代码选项 :OP_WMT 振荡器类型 晶振 / 陶振 2 17 X Tosc 2 14 X Tosc 2 11 X Tosc 2 8 X Tosc 内部 RC 2 7 X Tosc 86
87 8.10 代码选项 OP_OSC: 0000: 内部 RC 振荡器 ( 默认 ) 1110: 晶体谐振器或陶瓷谐振器其它 : 内部 RC 振荡器 OP_CRMC: 0: 振荡器频率为 2M-16M( 默认 ) 1: 振荡器频率为 400K-2M OP_RST: 0:P1.7 用作复位引脚 ( 默认 ) 1:P1.7 用作 I/O 口 OP_LVREN: 0: 禁止低电压复位功能 ( 默认 ) 1: 允许低电压复位功能 OP_LVRLE LE: 0: 低电压复位设定电压为 4.1V( 默认 ) 1: 低电压复位设定电压为 3.7V OP_WDT: 0: 禁止 WDT 功能 ( 默认 ) 1: 允许 WDT 功能 OP_WDTPD: 0: 掉电模式下禁止看门狗工作 ( 默认 ) 1: 掉电模式下允许看门狗工作注意 : 此代码选项仅当 OP_WDT = 时有效 OP_WMT:( 不适用于内建 RC) 00: 最长预热时间 ( 默认 ) 01: 长预热时间 10: 短预热时间 11: 最短预热时间 OP_OVL: 0:OVL 产生 OVL 复位 1:OVL 产生 OVL 中断 ( 默认 ) 87
88 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
89 逻辑操作指令 指令 功能描述 代码 字节 周期 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
90 数据传送指令 指令 功能描述 代码 字节 周期 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
91 控制程序转移指令 指令功能描述代码字节周期 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 空操作
92 位操作指令 指令 功能描述 代码 字节 周期 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
93 10. 电气特性 极限参数 * 直流供电电压 V to +6.0V 输入 / 输出电压 GND-0.3V to V DD +0.3V 工作环境温度 C to +85 C Flash 烧写温度 C to +85 C 存储温度 C to +125 C * 注释 直流电气特性 (V DD = V, GND = 0V, T A = +25 C, 除非另有说明 ) SH79F16 如果器件的工作条件超过左列 极限参数 的范围, 将造成器件永久性破坏 只有当器件工作在说明书所规定的范围内时功能才能得到保障 器件在极限参数列举的条件下工作将会影响到器件工作的可靠性 参数符号最小值典型值 最大值单位条件 工作电压 V DD V 400kHz f OSC 16MHz 工作电流 待机电流 ( 空闲模式 ) I OP1-5 8 ma I OP ma I SB1-3 5 ma I SB ma 待机电流 ( 掉电模式 ) I SB µa f OSC = 12MHz, V DD = 5.0V 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 打开 ( 执行 NOP 指令 ); WDT 打开 ; 关闭其他所有功能 f OSC = 16MHz, V DD = 5.0V 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 打开 ( 执行 NOP 指令 ); WDT 打开 ; 关闭其他所有功能 f OSC = 12MHz, V DD = 5.0V 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 停止 ( 空闲模式 ); WDT 关闭 ; LVR 打开 ; 关闭其他所有功能 f OSC = 16MHz, V DD = 5.0V 所有输出引脚无负载 ( 所有数字输入引脚不浮动 ); CPU 停止 ( 空闲模式 ); WDT 关闭 ; LVR 打开 ; 关闭其他所有功能 振荡器停止, V DD = 5.0V 所有输出引脚无负载 ; CPU 停止 ( 掉电模式 ); 看门狗关闭 ; LVR 打开 ; 关闭其他所有功能 WDT 电流 I WDT µa V DD = 5.0V, 看门狗打开 输入低电压 1 V IL1 GND X V DD V I/O 端口 输入高电压 1 V IH1 0.7 X V DD - V DD V I/O 端口 输入低电压 2 V IL2 GND X V DD V 输入高电压 2 V IH2 0.8 X V DD - V DD V RESET, T0, T1, T2, INT0/1/2/3/4, SCK, T2EX, RXD, SS ( 内建施密特触发 ), FLT, MISO, MOSI RESET, T0, T1, T2, INT0/1/2/3/4, SCK, T2EX, RXD, SS ( 内建施密特触发 ), FLT, MISO, MOSI 输入漏电流 I IL -1-1 µa 输入口, 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 V 输出高电压 2 V OH2 V DD V I/O 端口 (P0, P1, P2.4-P2.7, P3.3-P3.4), I OH = -20mA, V DD = 5.0V I/O 端口 (P3.0-P3.2, P3.5, P2.0-P2.3), I OH = -10mA, V DD = 5.0V 93
94 续上表 参数符号最小值典型值 最大值单位条件 输出低电压 V OL1 - - GND V 注意 :(1) 表示典型值下的数据是在 5.0V,25 C 下测得的, 除非另有说明 (2) 流过 V DD 的最大电流值在 5.0V,25 C 下须小于 150mA (3) 流过 GND 的最大电流值在 5.0V,25 C 下须小于 200mA 5V 模 / 数转换器电气特性 注意 :(1) 表示 ADC 输入电阻就是直流条件下 ADC 自身的输入电阻 (2) 建议与 ADC 连接的信号源内阻小于 10kΩ 交流电气特性 (V DD = 3.6V - 5.5V, GND = 0V, T A = +25 C, f OSC = 12.3MHz, 除非另有说明 ) 低电压复位电气特性 (V DD = 3.6V - 5.5V, GND = 0V, T A = +25 C, 除非另有说明 ) I/O 端口 (P0, P1, P2.4-P2.7, P3.3-P3.4), I OL = 15mA, V DD = 5.0V 大驱动口灌电流能力 I OL ma I/O 端口 (P3.0-P3.2, P3.5, P2.0-P2.3) V DD = 5.0V,V OL = 1.5V 参数符号最小值典型值最大值单位条件 供电电压 V AD V 精度 N R bit GND V AIN V REF A/D 输入电压 V AIN GND - V REF V A/D 输入电阻 * R AIN MΩ V IN = 5.0V 模拟电压源推荐阻抗 Z AIN kω A/D 转换电流 I AD ma ADC 模块打开, V DD = 5.0V A/D 输入电流 I ADIN µa V DD = 5.0V 微分非线性误差 D LE - - ±1 LSB V DD = 5.0V 积分非线性误差 I LE - - ±2 LSB V DD = 5.0V 满刻度误差 E F - ±1 ±3 LSB V DD = 5.0V 偏移量误差 E Z - ±0.5 ±2 LSB V DD = 5.0V 总绝对误差 E AD - - ±3 LSB V DD = 5.0V 总转换时间 ** T CON µs 10 bit 精度, V DD = 5.0V 参数符号最小值典型值最大值单位条件 复位脉冲宽度 t RESET µs 低电平有效 复位引脚内部上拉电阻 R RPH kω V DD = 5.0V, V IN = GND RC 频率 F RC MHz V DD = 5V 频率稳定性 (RC) F /F % RC 振荡器 : F-12.3MHz /12.3MHz (V DD = V, T A =+25 C) % RC 振荡器 : F-12.3MHz /12.3MHz (V DD = V, T A = -40 C~85 C) 参数符号最小值典型值最大值单位条件 LVR 电压设定电压 1 V LVR V LVR 使能, V DD = 3.6V - 5.5V LVR 电压设定电压 2 V LVR V LVR 使能, V DD = 3.6V - 5.5V LVR 低电压复位宽度 T LVR µs 94
95 11. 订购信息 产品编号 SH79FP/032PR 封装 32 LQFP 95
96 12. 封装信息 LQFP32 封装尺寸 单位 : 英寸 / 毫米 Symbol Min(mm) Nom(mm) Max(mm) A A A A b b c D D E E E e L L R R θ θ Y Z
97 13. 规格更改记录版本 记录 日期 1.0 初始版本 2012 年 4 月 97
98 目录 SH79F16 1. 特性 概述 方框图 引脚配置 引脚描述 SFR 映像 标准功能 CPU CPU 内核特殊功能寄存器 CPU 增强内核特殊功能寄存器 RAM FLASH 程序存储器 特性 ICP 模式下的 Flash 操作 扇区自编程 (SSP) 功能 寄存器 Flash 控制流程图 SSP 编程注意事项 系统时钟和振荡器 特性 时钟定义 振荡器类型 谐振器负载电容选择 I/O 端口 特性 寄存器 端口共用 定时器 特性 定时器 0 & 定时器 中断 特性 程序超范围中断 (OVL) 中断允许 中断标志 中断向量 中断优先级 中断处理 中断响应时间 外部中断输入 中断汇总 增强功能 脉冲宽度调制 (PWM) 特性 位 PWM 定时器 位 PWM 定时器 PWM01/11/ 死区时间
99 8.2 串行外部设备接口 (SPI) 特性 信号描述 波特率 功能描述 工作模式 传送形式 出错检测 中断 寄存器 增强型通用异步收发器 (EUART) 特性 EUART 工作方式 波特率 多机通讯 帧出错检测 寄存器 模 / 数转换器 (ADC) 特性 ADC 模块图 寄存器 蜂鸣器 特性 寄存器 低电压复位 (LVR) 特性 看门狗定时器 (WDT), 程序超范围溢出 (OVL) 复位及其他复位状态 特性 寄存器 电源管理 特性 空闲模式 (Idle) 掉电模式 (Power-Down) 寄存器 预热计数器 特性 代码选项 指令集 电气特性...93 极限参数 *...93 直流电气特性 (V DD = V, GND = 0V, T A = +25 C, 除非另有说明 ) V 模 / 数转换器电气特性...94 交流电气特性 (V DD = 3.6V - 5.5V, GND = 0V, T A = +25 C, F OSC = 12.3MHZ, 除非另有说明 )...94 低电压复位电气特性 (V DD = 3.6V - 5.5V, GND = 0V, T A = +25 C, 除非另有说明 ) 订购信息 封装信息 规格更改记录
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
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
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)
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
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
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
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 振荡器 ( 代码选项 ): -
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 -
79F161 V0.2
集成 8 路触摸按键,12 位 PWM 的增强型 8051 微控制器 1. 特性 基于 8051 指令流水线结构的 8 位单片机 Flash ROM:32K 字节 ( 烧写次数 1 万次 ) RAM: 内部 256 字节, 外部 1280 字节,LED RAM 28 字节, 触摸按键 RAM 16 字节 类 EEPROM:1024 字节 ( 烧写次数 10 万次 ) 工作电压 : - f OSC =
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 第 二 章 微 電
目 录
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
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)
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 -
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
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 串行数据接收缓冲
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
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
at89S52.doc
主要性能 与 MCS-51 单片机产品兼容 8K 字节在系统可编程 Flash 存储器 1000 次擦写周期 全静态操作 :0Hz~33Hz 三级加密程序存储器 32 个可编程 I/O 口线 三个 16 位定时器 / 计数器 八个中断源 全双工 UART 串行通道 低功耗空闲和掉电模式 掉电后中断可唤醒 看门狗定时器 双数据指针 掉电标识符 8 位微控制器 8K 字节在系统可编程 Flash R 功能特性描述
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
四位微控制器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
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
µ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
<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
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 位自动重载定时
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
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
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
第5章:汇编语言程序设计
第 5 章 : 汇编语言程序设计 程 汇编语言指令格式 系统伪指令 存储器选择方式 常用子程序 1 汇编语言程序设计 PIC 指令系统 语言系统 指 CPU 编 器语言 器语言 器语言 设计 用 语言 设计 语言 汇编语言 2 汇编语言指令格式 汇编语言指令格式 ( 指令 ) label opcode operand comment 指令 用 存 指令 指令语 3 汇编语言指令格式 1 指令 用 指令
untitled
XZL024 http://item.taobao.com/item.htm?id=6321822194 1 1 1.1 1.2 1.3 1.4 2 2.1 2.2 2.3 3 USBee Suite 3.1 3.2 3.3 3.4 4 RS232 RS485 RS422 CAN http://item.taobao.com/item.htm?id=6321822194 2 1 XZL024 PC
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...
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
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
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
CH559指令周期.doc
CH55X 汇编指令周期表 CH55X 汇编指令概述 : 型号包含 : a. 指令单周期型号 :CH557 CH558 CH559; b. 指令 4 周期型号 :CH551 CH552 CH553 CH554; c. 非跳转指令的指令周期数与指令字节数相同 ; d. 跳转指令含 MOVC/RET/CALL 通常比字节数多若干个周期 ; e.movc 指令多 4 或 5 个周期 ( 下条指令地址为奇数时多
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
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
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 的通信模式
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
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
单片机原理及应用实验指导书.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
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)
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
1.1 ML_ONOFF = 1 Q 3 Q 8 C 0.3V M 2 L 1 ML_ONOFF = 0 Q 3 Q 8 C 1. + R31 VCC R21 10K ML_ONOFF R15 0:off 1:on 1K Green Light VCC=5V L1 Q VDD=12V C
AUTOMATIC TROLLEY H K Hwang K K Chen J-S Lin S-C Wang M-L Li C-C Lin W-B Lin Dept. Of Electrical Engineering Far East College ABSTRACT This paper proposes an automatic trolley which can move automatically
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
() () () () () () () () DDRAM () II
液晶模块说明书 SPEC NO YM2232A REV NO. 液晶显示模块产品说明书 产品类型 : 产品型号 : 产品描述 : 标准产品 YM2232A 22x32 图形点阵模块, 控制器 :SED52,LED 背光 客户名称 : 客户确认 : 编写 : Dexun Zou 审核 : HCC 批准 : Jingxi Yang 发行日期 : 22.8 大连佳显电子有限公司 地址 : 大连市沙河口区工华街
untitled
EDM12832-08 : 25-1 : 116600 : (0411)7612956 7632020 7631122 : (0411)7612958 Model No.: Editor: LCD 1. ----------------------------------------------------3 2. ----------------------------------------------------3
中文手册
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
微處理機期末專題
微 處 理 機 期 末 專 題 自 動 鋼 琴 組 員 :b92611004 羅 鈞 瑋 b92611008 吳 妍 儂 b92611038 吳 韋 靜 b92611042 林 佳 穎 一 簡 介 本 組 的 主 題 是 自 動 鋼 琴 在 播 放 音 樂 的 同 時, 鋼 琴 會 自 動 按 下 琴 鍵, 被 按 下 的 琴 鍵 所 對 應 到 的 音 階, 就 是 正 在 撥 放 的 樂 曲 的
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
AT89C2051中文资料.doc
图形点阵液晶显示模块使用手册 TG12864C(L) 广州捷胜吉电子科技 地址 : 广州市天河区天河路 561# 新赛格电子城 B2226 电话 :(020)33550997 13829772038 网址 :WWW.GZJSJDZ.COM E-mail:[email protected] 目 录 ( 一 ) 概述 (1) ( 二 ) 外形尺寸图 (1) ( 三 ) 模块主要硬件构成说明 (2) ( 四 )
Microsoft Word - ISSFA-0134_A_AP_User-definedDownload_SC_.doc
自定义下载应用说明 一 适用产品 :SM59XX 系列 SM59D XX 系列 SM59R XX 系列二 应用方式 : 可以让使用者自定义 command 作为进入 ISP 刻录的通关指令, 透过 UART 连接 ISAP 软件做联机更新三 操作说明 ( 使用 SM59D04G2 为例 ): 1. ISAP 操作方式 : 1.1 先将主程序及 ISP 服务程序烧进 MCU 中 1.2 将 MCU 放至系统版上,
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 储存数据使用
MSP430x11x1 T A -40 ~ SOWB 20 TSSOP (DW) (PW) MSP430F110IDW MSP430F110IPW MSP430F112IDW MSP430F112IPW + F11x 30kΩ
MSP430F11x 1.8-3.6V 1.6uA@4KHz 200uA@1MHz 2.2V 5 ( 0.8uA RAM 0.1uA) 6us 16 RISC 125nS 32KHz / 16 A/D MSP430F110 1KB+128B 128B RAM MSP430F112 4KB+256B 256B RAM 20 (SOWB) 20 (TSSOP) MSP430 16 RISC CPU 16
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 相关寄存器...
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
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
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
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
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 微控制器, 指令系统完全兼容传统
MSP430单片机简介
. September 14, 2012 . 1 简介 MSP430 单片机特点超低功耗 2 MSP430 时钟系统 3 MSP430 的端口 4 定时器看门狗定时器定时器 A 5 示例 MSP430 单片机特点. 简介 MSP430 单片机是美国德州仪器 (TI) 公司 1996 年开始推向市场的一种 16 位超低功耗 具有精简指令集的混合信号处理器 它将多个不同功能的模拟电路 数字电路模块和微处理器集成在了一个芯片上
Microsoft Word - ~ doc
1 适用产品 : 1.1 SM59R16A5/ SM59R09A5/ SM59R05A5/ SM59R16A3/ SM59R09A3/ SM59R05A3 1.2 SM59R16G6/ SM59R09G6/ SM59R05G6 1.3 SM59R04A2/ SM59R04A1/ SM59R03A1/ SM59R02A1 1.4 SM59R16A2/ SM59R08A2 2 UART 差异如下说明 :
untitled
EDM16080-01 Model No.: Editor: 1. ----------------------------------------------------3 2. ----------------------------------------------------3 3. ----------------------------------------------------3
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
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 版本历史...
User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2
Terminal Mode No User User ID 150 Password - User ID 150 Password Mon- Cam-- Invalid Terminal Mode No User Terminal Mode No User Mon- Cam-- 2 Mon1 Cam-- Mon- Cam-- Prohibited M04 Mon1 Cam03 Mon1 Cam03
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
,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,
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
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
控制器 EtherCAT EtherCAT EtherCAT 接下一个电机驱动模块 (X4) 接下一个电机驱动模块 (X5) X11 IN X4 IN X3 OUT X5 IN X6 OUT X2 X1 X4 IN X3 OUT X5 IN X6 OUT X2 X1 SYS STA DC BUS D
控制器 thert thert thert 接下一个电机驱动模块 () 接下一个电机驱动模块 () 电机驱动模块 电机驱动模块 电源模块 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () 接下一个电机驱动模块 () X 0 X 0 4 /RK /RK 注 注 制动电阻阻值 Ω Φ 80: 适用电机驱动模块型号 8-M-XXXX--XX Φ : 适用电机驱动模块型号
MG103_DS_CN_V101
数据手册 版本 1.01 QP-7300-03D 1/60 目录 01. 概述... 74 12. 功能... 75 23. 引脚... 86 3.1. 封装...86 43.2. 引脚定义...87 54. 方框图...8 65. 特殊功能寄存器 SFR... 89 75.1. SFR 映射表...89 85.2. SFR 位分配...810 96. 8051 CPU 功能描述... 811 16.1.
