DATASHEET SEARCH SITE | WWW.ALLDATASHEET.COM
Document overview
- Manufacturer or author: Provided By ALLDATASHEET.COM(FREE DATASHEET DOWNLOAD SITE)
- PDF pages: 66
Technical content
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 1 页 共 66 页 一. 产品概述 1.1 功能描述 存储器 OTP ROM 空间:1K * 16 位。 RAM 空间:48 字节。 4 层堆栈缓存器。 I/O 引脚配置 单向输入引脚:P1.1。 可编程的漏极开路引脚:P1.0。 具有唤醒功能的端口: P0、P1 电平变化触发。 外部中断引脚:P0.0,由寄存器 PEDGE 控制, 其触发方式为上升沿或下降沿。 3 级低电压检测系统(LVD) 可监控系统电源(若低于设定LVD 选项则发生复位) 。 强大的指令系统 单周期指令系统(1T)。 大部分指令仅需一个周期。 跳转指令 JMP 可在整个ROM 区执行。 子程序调用指令 CALL 可在整个ROM 区执行。 查表指令 MOVC 可寻址整个 ROM 区。 3 个中断源 2 个内部中断源:T0,TC0。 1 个外部中断源:INT0。 两个 8 位定时/计数器 T0:基本定时器 /计数器,具有 0.5sec 实时时钟功能(RTC)。 TC0:自动装载定时器/计数器/蜂鸣器(Buzzer)输出。 内置看门狗定时器,其时钟源由内部低速 RC 振荡器提供(16KHz @3V;32KHz @5V) 双时钟系统 外部高速时钟:RC 模式高达 10MHz。 外部高速时钟:晶振模式高达 16MHz。 内部高速时钟:16MHz RC(Fcpu 仅支持Fosc/4~Fosc/16)。 工作模式 普通模式:高、低速时钟同时工作。 低速模式:只有低速时钟工作。 睡眠模式:高、低速时钟都停止工作。 绿色模式:由 T0 周期性的唤醒。 封装形式 DIP 14/8 pins。 SOP 14 /8pins。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 2 页 共 66 页 特性选择列表 单片机型 号 RAM 堆 栈 定时器 LVD 层数 IH RC I/O 绿色 模式 低速 模式 PW M Buzz er 唤醒功能 引脚数目 封装形式 T0 TC0 2501 48 4 V V 3 V 12 V V V 5 DIP14/8、SOP14/8 1.2 系统结构框图
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 3 页 共 66 页 1.3 引脚配置 1 2 3 4 5 6 A B C D 654321 D C B A Title Num ber Rev isionSize B Date : 11-Sep-201 2 Shee t of File: C:\\Doc uments and Settings\\Adm inistrator\\ 桌面\\待做的规格书\\2501 \\TC2501 .ddbDra wn By : 7 8 14P2.2 P2.1 P2.0 VDD P1.3/XIN P1.2/XOUT P1.1/RST/VPP P5.4/BZ0/PWM0 P1.0 P0.0/INT0 VSS P2.5 P2.4 P2.3 4 5 8VDD P1.3 P1.2 P1.1 P1.0 P0.0 VSS P5.4 引脚说明 引脚 类型 功能说明 VDD, VSS P 电源输入端。 P1.1/RST/VPP I, P P1.1:禁止外部复位时为单向输入引脚,施密特触发,无内置上拉电阻。 作普通 I/O 口使用时,用户需在 P1.1 外面串接一个 100 欧姆的电阻(如 右图所示,电阻要尽可能的靠近单片机) ,具有唤醒功能。 RST:系统复位输入引脚,施密特触发,低电平有效,通常保持高电平。 VPP:OTP 烧录引脚。 P1.3/XIN I/O P1.3:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。 XIN:使能外部振荡器(晶振或 RC)时为振荡信号输入引脚。 P1.2/XOUT I/O P1.2:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。 XOUT:使能外部晶振模式时为振荡信号输出引脚。 P0.0/INT0 I/O P0.0:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻,具有唤醒功能。 INT0:外部中断触发引脚(施密特触发) ; TC0 事件计数器的信号输入引脚。 P1.0 I/O 双向输入/输出引脚,漏极开路引脚,输入模式时为施密特触发,内置上拉电阻。 P2 [5:0] I/O 双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。 P5.4/BZ0.PWM0 I/O P5.4:双向输入/输出引脚,输入模式时为施密特触发,内置上拉电阻。 Buzzer 输出引脚 / PWM 输出引脚。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 4 页 共 66 页 1.4 引脚电路结构图 P0,2,5; P1.0; P1.2、1.3; P1.1;
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 5 页 共 66 页 2. 中央处理器(CPU) 2.1 存储器 2.1.1 程序存储器(ROM) TC2501 的程序存储器为 OTP ROM(一次性可编程) ,存储器容量为 1K*16 位,可由 10 位程序计数器 PC 对 程序存储器进行寻址,或由系统寄存器(R,X,Y 和 Z)对 ROM 内的数据进行查表访问。 复位向量(0000H) 具有一个字长的系统复位向量(0000H)。 上电复位(NT0=1,NPD=0); 看门狗复位(NT0=0,NPD=0); 外部复位(NT0=1,NPD=1)。 发生上述任一种复位后,程序将从 0000H 处重新开始执行,系统寄存器也都将恢复为默认值。根据 PFLAG 寄存器中的 NT0 和 NPD 标志位的内容可以判断系统复位方式。下面一段程序演示了如何定义 ROM 中的复位 向量。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 6 页 共 66 页 中断向量(0008H) 中断向量地址为 0008H。一旦有中断响应,程序计数器 PC 的当前值就会存入堆栈缓存器并跳转到 0008H 开始执行中断服务程序。0008H 处的第一条指令必须是“JMP”或“NOP”。下面的示例程序说明了如何编写中断服务 程序。 注:“PUSH”,“POP”指令用于存储和恢复 ACC/PFLAG,NT0、NTD 不受影响。PUSH/POP 缓 存器是唯一的, 且仅有一层。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 7 页 共 66 页 注:从上面的程序中容易得出 SONiX 的编程规则,有以下几点: 1、 地址 0000H 的“JMP”指令使程序从头开始执行; 2、 地址 0008H 是中断向量; 3、 用户的程序应该是一个循环。 查表 在单片机中,对 ROM 区中的数据进行查找,寄存器 Y 指向所找数据地址的中间字节(bit8~bit15) ,寄存器 Z 指向所找数据地址的低字节(bit0~bit7) 。执行完 MOVC 指令后,所查找数据低字节内容被存入 ACC 中,而数据 高字节内容被存入 R 寄存器。 注:当寄存器 Z 溢出(从 0FFH 变为 00H)时,寄存器 Y 并不会自动加 1。因此, Z 溢出时,Y 必须由程序 加 1,下面的宏 INC_YZ 能够对 Y 和 Z 寄存器自动处理。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 8 页 共 66 页 下面的程序通过累加器对 Y,Z 寄存器进行处理来实现查表功能,但需要特别注意进位时的处理。 跳转表 跳转表能够实现多地址跳转功能。由于 PCL 和 ACC 的值相加即可得到新的 PCL,因此,可以通过对 PCL 加上不同的 ACC 值来实现多地址跳转。ACC 值若为 n,PCL+ACC 即表示当前地址加 n,执行完当前指令后 PCL 值还会自加 1, 可参考以下范例。 如果 PCL+ACC 后发生溢出,PCH 则自动加 1。 由此得到的新的 PC 值 再指向跳转指令列表中新的地址。这样,用户就可以通过修改 ACC 的值轻松实现多地址的跳转。 注:PCH 只支持 PC 增量运算,而不支持 PC 减量运算。当 PCL+ACC 后如有进位,PCH 的值会自动加 1。 PCL-ACC 后若有借位,PCH 的值将保持不变,用户在设计应用时要加以注意
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 9 页 共 66 页 单片机提供一个宏以保证可靠执行跳转表功能,它会自动检测 ROM 边界并将跳转表移至适当的位置。但采用 该宏程序会占用部分 ROM 空间。 注:“VAL”为跳转表列表中列表个数。 如果跳转表恰好位于 BOM BANK 边界处(00FFH~0100H),宏指令“@JMP-A”将调整跳转表到恰当的位置 (0100H).
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 10 页 共 66 页 CHECKSUM 计算 ROM 的末端位置的几个字限制使用,进行Checksum 计算时,用户应避免对该单元的访问。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 11 页 共 66 页 2.1.2. 编译选项表 编译选项 配置项目 功能说明 Noise_Filter Enable 开启杂讯滤波功能,Fcpu = Fosc/4~Fosc/16。 Disable 关闭杂讯滤波功能,Fcpu = Fosc/1~Fosc/16。 Fcpu Fhosc/1 指令周期 = 1 个时钟周期,必须关闭杂讯滤波功能; IHRC_16M 和 IHRC_RTC 模式下,不支持 Fosc/1。 Fhosc/2 指令周期 = 2 个时钟周期,必须关闭杂讯滤波功能; IHRC_16M 和 IHRC_RTC 模式下,不支持 Fosc/2 Fhosc/4 指令周期 = 4 个时钟周期。 Fhosc/8 指令周期 = 8 个时钟周期。 Fhosc/16 指令周期 = 16 个时钟周期。 High Clk IHRC_16M 高速时钟采用内部 16MHz RC 振荡电路,XIN/XOUT(P1.3/P1.2)作为普通的 I/O 引脚;IHRC_16M 模式下,Fcpu 取值在 Fosc/4~Fosc/16 之间。 IHRC_RTC 高速时钟采用内部 16MHz RC 振荡电路,具有 RTC 功能(0.5sec),XIN/XOUT (P1.3/P1.2)外接 32768Hz 晶振作为 RTC 的时钟源;IHRC_RTC 模式下,Fcpu 取值在 Fosc/4~Fosc/16 之间。 RC 外部高速时钟振荡器采用廉价的RC 振荡电路,XOUT(P1.2)为普通的 I/O 引脚。 32K X’tal 外部高速时钟振荡器采用低频、省电晶体/陶瓷振荡器(如 32.768KHz)。 12M X’tal 外部高速时钟振荡器采用高频晶体/陶瓷振荡器(如 10MHz~12MHz)。 4M X’tal 外部高速时钟振荡器采用标准晶体/陶瓷振荡器(如 1M~10MHz)。 Watch_Dog Always_On 始终开启看门狗定时器,即使在睡眠模式和绿色模式下也处于开启状态。 Enable 开启看门狗定时器,但在睡眠模式和绿色模式下关闭。 Disable 关闭看门狗定时器。 Reset_Pin Reset 使能外部复位引脚。 P11 P1.1 为单向输入引脚,无上拉电阻。 LVD LVD_L VDD 低于 2.0V 时,LVD 复位系统。 LVD_M VDD 低于 2.0V 时,LVD 复位系统; PFLAG 寄存器的 LVD24 位作为2.4V 低电压监测器。 LVD_H VDD 低于 2.4V 时,LVD 复位系统; PFLAG 寄存器的 LVD36 位作为3.6V 低电压监测器。 Security Enable ROM 代码加密。 Disable ROM 代码不加密。 1、 在干扰严重的情况下,建议开启杂讯滤波功能,此时 Fcpu = Fosc/4 ~ Fosc/16 ,并将 Watch_Dog 设置为 “Always_On”; 2、 如果用户设置看门狗为“Always_On”,编译器将自动开启看门狗定时器; 3、 编译选项 Fcpu 仅针对高速时钟,在低速模式下 Fcpu = FILRC/4; 4、 在 IHRC_16M 和 IHRC_RTC 模式下,Fcpu = Fosc/4 ~ Fosc/16。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 12 页 共 66 页 2.1.3. 数据存储器(RAM) TC2501 单片机的片内 RAM 共有 256 个存储单元,地址范围为 000H~0FFH。片内寄存器可分为通用数据存储区 和系统存储器两大部分。通用数据存储区可作为用户自定义的变量,临时数据,中间数据存放地,而系统寄存器则用 来控制片内外设或表示外设的状态。 2.1.4 系统寄存器 系统寄存器表 0 1 2 3 4 5 6 7 8 9 A B C D E F 9 - - - - - - - A - - - - - - -- B POM - - - - - - PEDGE C P1W P1M P2M P5M INTRQ INTEN OSCM - WDTR TC0R PCL PCH D P0 P1 P2 - - P5 - - TOM TOC TC0M - - - - STKP E P0UR P1U R - P5UR - @YZ - P1OC - - - - - F - - - - - - - - STK3L STK3H STK2L STK2H STK1L STK1H STK0L STK0H 系统寄存器说明 PFLAG = ROM 页及特殊标志寄存器 R = 工作寄存器和 ROM 查表数据缓存器 P1W = P1 唤醒功能寄存器 Y , Z = 专用寄存器,@YZ 间接寻址寄存器,ROM 寻址寄存器 PEDGE = P0.0 触发方向寄存器 @YZ = 间接寻址寄存器 PnM = Pn 模式控制寄存器 Pn = Pn 数据缓存器 P1OC = P1 漏极开路控制寄存器 PnUR = Pn 上拉电阻控制寄存器 INTRQ = 中断请求寄存器 INTEN = 中断使能寄存器 OSCM = 振荡器模式寄存器 PCH, PCL = 程序计数器 T0M = T0 模式寄存器 T0C = T0 计数寄存器 TC0M = TC0 模式寄存器 TC0C = TC0 计数寄存器 TC0R = TC0 自动装载数据缓存器 WDTR = 看门狗定时器清零寄存器
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 13 页 共 66 页 STKP = 堆栈指针 STK0~STK3 = 堆栈缓存器 系统寄存器的位定义 地址 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 R/W 备注 082H RBIT7 RBIT6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0 R/W R 083H ZBIT7 ZBIT6 ZBIT5 ZBIT4 ZBIT3 ZBIT2 ZBIT1 ZBIT0 R/W Z 084H YBIT7 YBIT6 YBIT5 YBIT4 YBIT3 YBIT2 YBIT1 YBIT0 R/W Y 086H NTO NPD LVD36 LVD24 - C DC Z R/W PFLAG 0B8H - - - - - - - P00M R/W POM 0BFH - - - P00G1 P00G0 - - R/W PEDGE 0C0H - - - - P13W P12W P11W P10W W P1W 唤 醒寄存 器 0C1H - - - P14M P13M P12M - P10M R/W P1MI/O 0C2H - - P25M P24M P23M P22M P21M P20M R/W P2MI/O 0C5H - - - P54M - - - - R/W P5MI/O 0C8H - - TC0IRQ T0IRQ - - - P00IRQ R/W INTRQ 0C9H - - TC0IEN T0IEN - - - P00IEN R/W INTEN 0CAH - - - CPUM1 CPUM0 CLKMD STPHX - R/W OSCM 0CCH WDTR7 WDTR6 WDTR5 WDTR4 WDTR3 WDTR2 WDTR1 WDTR0 W WDTR 0CDH TCOR7 TCOR6 TCOR5 TCOR4 TCOR3 TCOR2 TCOR1 TCOR0 W TCOR 0CEH PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0 R/W PCL 0CFH - - - - - - PC9 PC8 R/W PCH 0D0H - - - - - - - P00 R/W P0 数据 寄存器 0D1H - - - - P13 P12 P11 P10 R/W P1 数据 寄存器 0D2H - - P25 P24 P23 P22 P21 P20 R/W P2 数据 寄存器 0D5H - - - P54 - - - - R/W P5 数据 寄存器 0D8H T0ENB T0rate2 T0rate1 T0rate0 - - - T0TB R/W T0M 0D9H T0C7 T0C6 T0C5 T0C4 T0C3 T0C2 T0C1 T0C0 R/W T0C 0DAH TCOENB TC0rate2 TC0rate1 TC0rate0 TC0CKS ALOAD0 TC0OUT PWM0OUT R/W TC0M 0DBH TC0C7 TC0C6 TC0C5 TC0C4 TC0C3 TC0C2 TC0C1 TC0C0 R/W TC0C 0DFH GIE - - - - - STKPB1 STKPB0 R/W STKP 堆栈指 针 0E0H - - - - - - - P00R W P0 上拉 电阻 0E1H - - - - P13R P12R - P10R W P1 上拉 电阻
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 14 页 共 66 页 0E2H - - P25R P24R P23R P22R P21R P20R W P2 上拉 电阻 0E5H - - - P54R - - - - W P5 上拉 电阻 0E7H @YZ7 @YZ6 @YZ5 @YZ4 @YZ3 @YZ2 @YZ1 @YZ0 R/W @YZ 0E9H - - - - - - - P10OC W P1OC 漏极开 路 0F8H S3PC7 S3PC6 S3PC5 S3PC4 S3PC3 S3PC2 S3PC1 S3PC0 R/W STK3L 0F9H - - - - - - S3PC9 S3PC8 R/W STK3H 0FAH S2PC7 S2PC6 S2PC5 S2PC4 S2PC3 S2PC2 S2PC1 S2PC0 R/W STK2L 0FBH - - - - - - S2PC9 S2PC8 R/W STK2H 0FCH S1PC7 S1PC6 S1PC5 S1PC4 S1PC3 S1PC2 S1PC1 S1PC0 R/W STK1L 0FDH - - - - - - S1PC9 S1PC8 R/W STK1H 0FEH S0PC7 S0PC6 S0PC5 S0PC4 S0PC3 S0PC2 S0PC1 S0PC0 R/W STK0L 0FFH - - - - - - S0PC9 S0PC8 R/W STK0H 1、 为了避免系统错误,在初始化时,请将上表所有寄存器的位都按照设计要求设置为确定的“1”或“0”; 2、 所有寄存器名都已在SN8ASM 编译器中做了宣告。 3、 在编译器中,对寄存器的位进行操作,必须以“F”开头(如:B0BCLR FT01EN) 5、 详细的内容请参阅“系统寄存器参照列表”。 累加器 8 位数据寄存器 ACC 用来执行 ALU 与数据存储器之间数据的传送操作。如果操作结果为零(Z)或有进位产生 (C 或 DC) ,程序状态寄存器 PFLAG 中相应位会发生变化。 ACC 并不在RAM 中,因此在立即寻址模式中不能用“B0MOV”指令对其进行读写。 系统执行中断操作时,ACC 和 PFLAG 中的数据不会自动存储, 用户需通过程序将中断入口处的 ACC 和 PFLAG 中的数据送入存储器进行保存。可通过“PUSH”和“POP”指令对ACC 和 PFLAG 等系统寄存器进行存储及恢复。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 15 页 共 66 页 程序状态寄存器 PFLAG 寄存器 PFLAG 中包含 ALU 运算状态信息、系统复位状态信息和 LVD 检测信息,其中,位NT0 和 NPD 显示 系统复位状态信息,包括上电复位、LVD 复位、外部复位和看门狗复位;位 C、DC 和 Z 显示 ALU 的运算信息。位 LVD24 和LVD36 显示了单片机供电电压状况。 086H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PFLAG NT0 NPD LVD36 LVD24 - C DC Z 读/写 R/W R/W R R - R/W R/W R/W 复位后 X X 0 0 - 0 0 0 Bit [7:6] NT0, NPD :复位状态标志。 NT0 NPD 复位状态 0 0 看门狗复位 0 1 保留 1 0 LVD 复位 1 1 外部复位 Bit 5 LVD36 :3.6V LVD 工作电压标志, LVD 编译选项为 LVD_H 时有效。 0 =系统工作电压 VDD 超过 3.6V,低电压检测器没有工作; 1 =系统工作电压 VDD 低于 3.6V,说明此时低电压检测器已处于监控状态。 Bit 4 LVD24 :2.4V LVD 工作电压标志,LVD 编译选项为 LVD_M 时有效。 0 =系统工作电压 VDD 超过 2.4V,低电压检测器没有工作; 1 =系统工作电压 VDD 低于 2.4V,说明此时低电压检测器已处于监控状态。 Bit 2 C :进位标志。 1 = 加法运算后有进位、减法运算没有借位发生或移位后移出逻辑“1”或比较运算的结果≥0; 0 = 加法运算后没有进位、减法运算有借位发生或移位后移出逻辑“0”或比较运算的结果<0。 Bit 1 DC :辅助进位标志。 1 = 加法运算时低四位有进位,或减法运算后没有向高四位借位;
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 16 页 共 66 页 0 = 加法运算时低四位没有进位,或减法运算后有向高四位借位。 Bit 0 Z :零标志。 1 = 算术/逻辑/分支运算的结果为零; 0 = 算术/逻辑/分支运算的结果非零。 * 注:关于标志位 C、DC 和 Z 的更多信息请参阅指令集相关内容。 程序计数器 程序计数器 PC 是一个10 位二进制程序地址寄存器,分高2 位和低 8 位。专门用来存放下一条需要执行指令的内存 地址。通常,程序计数器会随程序中指令的执行自动增加。 若程序执行CALL 和 JMP 指令时,PC 指向特定的地址。 Bit Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit PC - - - - - - PC9 PC8 PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC 复位 后 - - - - - - 0 0 0 0 0 0 0 0 0 0 PCH PCL 单地址跳转 在单片机里面,有9 条指令(CMPRS、INCS、INCMS、DECS、DECMS、BTS0、BTS1、B0BTS0 和B0BTS1) 可完成单地址跳转功能。如果这些指令执行结果为真,那么 PC 值加2 以跳过下一条指令。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 17 页 共 66 页 多地址跳转 执行JMP 或 ADD M,A(M=PCL)指令可实现多地址跳转。执行 ADD M, A、ADC M, A或 B0ADD M, A后,若 PCL 溢出,PCH 会自动进位。对于跳转表及其它应用,用户可以通过上述 3 条指令计算 PC 的值而不需要担心 PCL 溢出 的问题。 *注:PCH 仅支持 PC 的递增运算而不支持递减运算。当 PCL+ACC 执行完 PCL 有进位时,PCH 会自动加 1;但 执行 PCL-ACC 有借位发生,PCH 的值会保持不变。 Y,Z 寄存器 寄存器Y 和Z 都是 8 位缓存器,主要用途如下: 普通工作寄存器;
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 18 页 共 66 页 RAM 数据寻址指针@YZ; 配合指令 MOVC 对 ROM 数据进行查表。 084H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Y YBIT7 YBIT 6 YBIT5 YBIT4 YBIT3 YBIT2 YBIT1 YBIT0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 X X X X X X X X 083H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 Z ZBIT7 ZBIT 6 ZBIT5 ZBIT4 ZBIT3 ZBIT2 ZBIT1 ZBIT0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 X X X X X X X X R 寄存器 8 位缓存器R 主要有以下两个功能: 作为工作寄存器使用; 存储执行查表指令后的高字节数据。 (执行 MOVC 指令,指定 ROM 单元的高字节数据会被存入 R 寄存器而低 字节数据则存入 ACC。) 082H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 R RBIT7 RBIT 6 RBIT5 RBIT4 RBIT3 RBIT2 RBIT1 RBIT0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 X X X X X X X X 2.2 寻址模式 立即寻址 将立即数送入ACC 货指定的RAM 单元
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 19 页 共 66 页 *注:立即数寻址时,指定的RAM 单元必须是80H~87H 的工作寄存器 直接寻址 通过ACC 对RAM 单元数据进行操作 间接寻址 通过指针寻址器(Y/Z)访问RAM 数据 2.3 堆栈 概述 TC2501 的堆栈缓存器共有4 层, 程序进入中断或执行CALL 指令时, 用来存储程序计数器PC 的值。 寄存器STKP 为堆栈指针,指向堆栈缓存器顶层,STKnH 和STKnL 分别是各堆栈缓存器高、低字节。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 20 页 共 66 页 堆栈寄存器 堆栈指针STKP 是一个2 位寄存器,存放被访问的堆栈单元地址,10 位数据存储器STKnH 和STKnL 用于暂存堆 栈数据。以上寄存器都位于 bank 0。 堆栈操作遵循后进先出(LIFO)的原则,入栈时堆栈指针 STKP 的值减 1,出栈时 STKP 的值加 1,这样,STKP 总是指向堆栈缓存器顶层单元。 系统进入中断或执行CALL 指令之前,程序计数器 PC 的值被存入堆栈缓存器中进行入栈保护。 ODFH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 STKP GIE - - - - - STKPB1 STKPB0 读/写 R/W - - - - - R/W R/W Bit[2:0] STKPBn: 堆栈指针(n=0~2) Bit7 GIE: 全局中断制位 0=禁止; 1=使能。 0F0H~0F8H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 STKnH - - - - - - SnPC9 SnPC8 读/写 - - - - - - R/W R/W 0F0H~0F8H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 STKnL SnPC7 SnPC6 SnPC5 SnPC4 SnPC3 SnPC2 SnPC1 SnPC0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 0 0 0 0 0 0 0 0
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 21 页 共 66 页 STKn = STKnH,STKnL(n = 3 ~ 0)。 堆栈操作实例 执行程序调用指令CALL 和响应中断服务时,堆栈指针 STKP 的值减 1,指针指向下一个堆栈缓存器。同时,对 程序计数器 PC 的内容进行入栈保存。 堆栈层数 STKP 堆栈缓存器 备注 STKPB1 STKPB0 高字节 低字节 0 1 1 Free Free - 1 1 0 STK0H STK0L - 2 0 1 STK1H STK1L - 3 0 0 STK2H STK2L - 4 1 1 STK3H STK3L - ﹥4 1 0 - - 溢出出错 对应每个入栈操作,都有一个出栈操作来恢复程序计数器 PC 的值。RETI 指令用于中断服务程序中,RET 用于子程 序调用。出栈时,STKP 加 1 并指向下一个空闲堆栈缓冲器。堆栈恢复操作如下表所示: 堆栈层数 STKP 堆栈缓存器 备注 STKPB1 STKPB0 高字节 低字节 4 1 1 STK3H STK3L - 3 0 0 STK2H STK2L - 2 0 1 STK1H STK1L - 1 1 0 STK0H STK0L - 0 1 1 - - - 3 复位 3.1 概述
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 22 页 共 66 页 TC2501 有以下几种复位方式: 上电复位; 看门狗复位; 掉电复位; 外部复位(仅在外部复位引脚处于使能状态) 。 上述任一种复位发生时,所有的系统寄存器恢复默认状态,程序停止运行,同时程序计数器PC 清零。复位结束后, 系统从向量 0000H 处重新开始运行,PFLAG 寄存器的 NTO 和 NPD 两个标志位能够给出系统复位状态的信息。用户 可以编程控制NTO 盒 NPD,从而控制系统的运行路径。 086H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PFLAG NT0 NPD LVD36 LVD24 - C DC Z 读/写 R/W R/W R R - R/W R/W R/W 复位后 X X 0 0 - 0 0 0 Bit [7:6] NT0, NPD :复位状态标志。 NTO NPD 复位情况 说明 0 0 看门狗复位 看门狗溢出 0 1 保留 - 1 0 上电及LVD 复位 电源电压低于LVD 检测值 1 1 外部复位 外部复位引脚检测到低电平 任何一种复位情况都需要一定的响应时间,系统提供完善的复位流程以保证复位动作的顺利进行。对于不同类型的 振荡器,完成复位所需要的时间也不同。因此,VDD 的上升速度和不同晶振的起振时间都不固定。RC 振荡器的起振 时间最短,晶体振荡器的起振时间则较长。在用户终端使用的过程中,应注意考虑主机对上电复位时间的要求。 3.2 上电复位 上电复位与 LVD 操作密切相关。系统上电的过程呈逐渐上升的曲线形式,需要一定时间才能达到正常电平值。下
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 23 页 共 66 页 面给出上电复位的正常时序: 上电:系统检测到电源电压上升并等待其稳定; 外部复位(仅限于外部复位引脚使能状态) :系统检测外部复位引脚状态。如果不为高电平,系统保持复位状态直 到外部复位引脚释放; 系统初始化:所有的系统寄存器被置为初始值; 振荡器开始工作:振荡器开始提供系统时钟; 执行程序:上电结束,程序开始运行。 3.3 看门狗复位 看门狗复位是系统的一种保护设置。在正常状态下,由程序将看门狗定时器清零。若出错,系统处于未知状态,看 门狗定时器溢出,此时系统复位。看门狗复位后,系统重启进入正常状态。看门狗复位的时序如下: 看门狗定时器状态:系统检测看门狗定时器是否溢出,若溢出,则系统复位; 系统初始化:所有的系统寄存器被置为默认状态; 振荡器开始工作:振荡器开始提供系统时钟; 执行程序:上电结束,程序开始运行。 看门狗定时器应用注意事项: 对看门狗清零之前,检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性; 不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况; 程序中应该只在主程序中有一次清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护功能。 *注:关于看门狗定时器的详细内容,请参阅 3.4 掉电复位 概述 掉电复位针对外部因素引起的系统电压跌落情形(例如,干扰或外部负载的变化) ,掉电复位可能会引起系统工作 状不正常或程序执行错误。 电压跌落可能会进入系统死区。系统死区意味着电源不能满足系统的最小工作电压要求。上图是一个典型的掉电 复位示意图。图中,VDD 受到严重的干扰,电压值降的非常低。虚线以上区域系统正常工作,在虚线以下的区域内, 系统进入未知的工作状态,这个区域称作死区。当 VDD 跌至V1 时,系统仍处于正常状态;当 VDD 跌至 V2 和 V3 时,系统进入死区,则容易导致出错。以下情况系统可能进入死区:
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 24 页 共 66 页 DC 运用中: DC 运用中一般都采用电池供电,当电池电压过低或单片机驱动负载时,系统电压可能跌落兵进入死亡。这是,电源 不会进一步下降到LVD 检测电压,因此系统维持在死亡。 AC 运用中: 系统采用 AC 供电时,DC 电压值受 AC 电源中的噪声影响。当外部负载过高,如驱动马达时,负载动作产生的干 扰也影响到 DC 电源。VDD 若由于受到干扰而跌落至最低工作电压以下时,则系统将有可能进入不稳定工作状态。 在 AC 运用中,系统上、下电时间都较长。其中,上电时序保护使得系统正常上电,但下电过程却和 DC 运用中 情形类似,AC 电源关断后,VDD 电压在缓慢下降的过程中易进入死区。 系统工作电压 为了改善系统掉电复位的性能, 首先必须明确系统具有的最低工作电压值。 系统最低工作电压与系统执行速度有关, 不同的执行速度下最低工作电压值也不同。 如上图所示,系统正常工作电压区域一般高于系统复位电压,同时复位电压由低电压检测(LVD)电平决定。当系 统执行速度提高时,系统最低工作电压也相应提高,但由于系统复位电压是固定的,因此在系统最低工作电压与系统 复位电压之间就会出现一个电压区域,系统不能正常工作,也不会复位,这个区域即为死区。 掉电复位性能改进: 如何改善系统掉电复位性能,有以下几点建议: LVD 复位; 看门狗复位; 降低系统工作速度; 采用外部复位电路(稳压二极管复位电路,电压偏移复位电路,外部IC 复位)。 LVD 复位:
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 25 页 共 66 页 低电压检测(LVD)是 8 位单片机内置的掉电复位保护装置,当 VDD 跌落并低于 LVD 检测电压值时,LVD 被触发,系统复位。不同的单片机有不同的 LVD 检测电平,LVD 检测电平值仅为一个电压点,并不能覆盖所有死区 范围。 因此采用 LVD 依赖于系统要求和环境状况。 电源变化较大时,LVD 能够起到保护作用, 如果电源变化触发 LVD, 系统工作仍出错,则 LVD 就不能起到保护作用,就需要采用其它复位方法。 LVD 设计为三层结构(2.0V/2.4V/3.6V) ,由 LVD 编译选项控制。对于上电复位和掉电复位,2.0V LVD 始终处于 使能状态;2.4V LVD 具有 LVD 复位功能,并能通过标志位显示VDD 状态;3.6V LVD 具有标记功能,可显示 VDD 的工作状态。LVD 标志功能只是一个低电压检测装置,标志位 LVD24 和LVD36 给出VDD 的电压情况。对于低电压 检测应用,只需查看 LVD24 和LVD36 的状态即可检测电池状况。 086H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PFLAG NT0 NPD LVD36 LVD24 - C DC Z 读/写 R/W R/W R R - R/W R/W R/W 复位后 X X 0 0 - 0 0 0 Bit 5 LVD36 :3.6V LVD 工作电压标志, LVD 编译选项为 LVD_H 时有效。 0 =系统工作电压 VDD 超过 3.6V,低电压检测器没有工作; 1 =系统工作电压 VDD 低于 3.6V,说明此时低电压检测器已处于监控状态。 Bit 4 LVD24 :2.4V LVD 工作电压标志,LVD 编译选项为 LVD_M 时有效。 0 =系统工作电压 VDD 超过 2.4V,低电压检测器没有工作; 1 =系统工作电压 VDD 低于 2.4V,说明此时低电压检测器已处于监控状态。 LVD LVD 编译选项 LVD-L LVD-M LVD-H 2.0V 复位 有效 有效 有效 2.4V 标志 - 有效 - 2.4V 复位 - - 有效 3.6V 标志 - - 有效
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 26 页 共 66 页 LVD_L 如果 VDD < 2.0V,系统复位; LVD24 和 LVD36 标志位无意义。 LVD_M 如果 VDD < 2.0V,系统复位; LVD24:如果 VDD > 2.4V,LVD24 =0;如果 VDD <= 2.4V,LVD24=1; LVD36 标志位无意义。 LVD_H 如果 VDD < 2.4V,系统复位; LVD36:如果 VDD > 3.6V,LVD36=0;如果 VDD <= 3.6V,LVD36=1; LVD24 标志位无意义。 *注: a)LVD 复位结束后,LVD24 和 LVD36 都将被清零; b)LVD 2.4V 和 LVD3.6V 检测电平值仅作为设计参考,不能用作芯片工作电压值的精确检测。 看门狗复位: 看门狗定时器用于保证系统正常工作。通常,会在主程序中将看门狗定时器清零,但不要在多个分支程序中清看门 狗。若程序正常运行,看门狗不会复位。当系统进入死区或程序运行出错的时候,看门狗定时器继续计数直至溢出, 系统复位。 如果看门狗复位后电源仍处于死区,则系统复位失败,保持复位状态,直到系统工作状态恢复到正常值。 降低系统工作速度: 系统工作速度越快最低工作电压值越高,从而加大工作死区的范围,因此降低系统工作速度不失为降低系统进入死 区的有效措施。所以,可选择合适的工作速度以避免系统进入死区,这个方法需要调整整个程序使其满足系统要求。 附加外部复位电路: 外部复位也能够完全改善掉电复位性能。有三种外部复位方式可改善掉电复位性能:稳压二极管复位电路,电压偏 移复位电路和外部 IC 复位。它们都采用外部复位信号控制单片机可靠复位。 3.5 外部复位 外部复位功能由编译选项“Reset_Pin”控制。将该编译选项置为“Reset”,可使能外部复位功能。外部复位引脚为施 密特触发结构,低电平有效。复位引脚处于高电平时,系统正常运行。当复位引脚输入低电平信号时,系统复位。外 部复位操作在上电和正常工作模式时有效。需要注意的是,在系统上电完成后,外部复位引脚必须输入高电平,否则 系统将一直保持在复位状态。外部复位的时序如下: 外部复位(当且仅当外部复位引脚为使能状态) :系统检测复位引脚的状态,如果复位引脚不为高电平,则系统会 一直保持在复位状态,直到外部复位结束; 系统初始化:初始化所有的系统寄存器; 振荡器开始工作:振荡器开始提供系统时钟; 执行程序:上电结束,程序开始运行。 外部复位可以在上电过程中使系统复位。良好的外部复位电路可以保护系统以免进入未知的工作状态,如 AC 应用 中的掉电复位等。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 27 页 共 66 页 3.6 外部复位电路 IRC 复位电路 上图为一个由电阻 R1 和电容 C1 组成的基本 RC 复位电路,它在系统上电的过程中能够为复位 引脚提供一个缓慢上升的复位信号。这个复位信号的上升速度低于 VDD 的上电速度,为系统提供合理 的复位时序,当复位引脚检测到高电平时,系统复位结束,进入正常工作状态。 *注:此 RC 复位电路不能解决非正常上电和掉电复位问题。 二极管及 RC 复位电路 上图中,R1 和 C1 同样是为复位引脚提供输入信号。 对于电源异常情况, 二极管正向导通使C1 快速放电并与 VDD 保持一致,避免复位引脚持续高电平、系统无法正常复位。 注:“基本 RC 复位电路”和“二极管及 RC 复位电路”中的电阻 R2 都是必不可少的限流电阻,以避免复位引脚 ESD (Electrostatic Discharge)或EOS(Electrical Over-stress)击穿 。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 28 页 共 66 页 稳压二极管复位电路 稳压二极管复位电路是一种简单的LVD 电路,基本上可以安全解决掉电复位问题。如上图电路中,利用稳压管的击 穿电压作为电路复位检测值,当 VDD 高于“Vz+0.7V”时,三极管集电极输出高电平,单片机正常工作;当 VDD 低于 “Vz+0.7V”时,三极管集电极输出低电平,单片机复位。稳压管规格不同则电路复位检测值不同,根据地阿奴的要求选 择合适的二极管。 电压偏置复位电路 电压偏置复位电路是一种简单的 LVD 电路,基术上可以安全解决掉电复位问题。与稳压二极管复位电路相比,这 种复位电路的检测电压值的精确度有所降低。电路中,R1 和R2 构成分压电路,当VDD 高于和等于分压值“0.7V x (R1 + R2) / R1”时,三极管集电极C 输出高电平,单片机正常工作;VDD 低于“0.7V x (R1 + R2) / R1”时,集电极C 输出 低电平,单片机复位。 对于不同应用需求,选择适当的分压电阻。单片机复位引脚上电压的变化与VDD 电压变化之间的差值为0.7V。如 果 VDD 跌落并低于复位引脚复位检测值,那么系统将被复位。如果希望提升电路复位电平,可将分压电阻设置为R2 ﹥R1,并选择VDD 与集电极之间的结电压高于0.7V。分压电阻R1 和R2 在电路中要耗电,此处的功耗必须计入整个 系统的功耗中。 *注:在电源不稳定或掉电复位的情况下,“稳压二极管复位电路”和“偏压复位电路”能够保护电路在电压跌落时避免系 统出错。当电压跌落至低于复位检测值时,系统将被复位。从而保证系统正常工作。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 29 页 共 66 页 外部 IC 复位 外部复位也可以选用 IC 进行外部复位,但是这样一来系统成本将会增加,针对不用的应用要求选择适当的复位IC。 如上图所示外部IC 复位电路,能够有效的降低电源变压对系统的影响。 4. 系统时钟 4.1 概述 TC2501 内带双时钟系统:高速时钟和低速时钟。高速时钟的时钟源由外部晶振货内部16MHz RC 振荡电路(IHRC 16MHz)提供。低速时钟的时钟源则由内部低速RC 振荡电路(ILRC 16KHz@3V)提供。两种时钟都可作为系统时钟 源 Fosc,系统在低速模式下工作时,Fosc 4 分频后作为一个指令周期。 普通模式 (高速时钟):Fcpu = Fhosc / N,N = 1 ~ 16,Fcpu 的编译选项决定 N 的值。 低速模式 (低速时钟):Fcpu = Flosc/4。 *注:IHRC-16M 和 IHRC-RTC 模式下,Fcpu=Fosc/4~Fosc/16. 4.2 时钟框图
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 30 页 共 66 页 HOSC:High_Clk 编译选项。 Fhosc:外部高速时钟频率。 Fosc:系统时钟频率。 Fcpu:指令执行频率。
4.3 OSCM 寄存器
寄存器OSCM 控制振荡器的状态和系统的工作模式。 0CAH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 OSCM 0 0 0 CPUM1 CPUM0 CLKMD STPHX 0 读/写 - - - R/W R/W R/W R/W - 复位后 - - - 0 0 0 0 - Bit 1 STPHX :高速振荡器控制位。 0 = 运行; 1 = 停止,内部低速RC 振荡器仍然运行。 Bit 2 CLKMD :系统时钟模式控制位。 0 = 普通(双时钟)模式,高速时钟作为系统时钟; 1 = 低速模式,低速时钟作为系统时钟。 Bit[4:3] CPUM[1:0] :CPU 工作模式控制位。 00 = 普通模式; 01 = 睡眠模式; 10 = 绿色模式; 11 = 系统保留。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 31 页 共 66 页 4.4 系统高速时钟 内部 16MHZ RC 振荡器和外部振荡器都可作为系统高速时钟源,由编译选项“High_Clk”控制。 High_Clk 说明 IHRC_16M 内部 16MHz RC 振荡器作为系统时钟源,XIN 和 XOUT 引脚为通用 I/O 口。 此时 Fcpu 的范围为 Fosc/4~Fosc/16。 IHRC_RTC 内部 16MHz RC 振荡器作为系统高速时钟, XIN 和 XOUT 引脚与 32768HZ 石英晶体相 此时 Fcpu 的范围为 Fosc/4~Fosc/16。 RC 外部 RC 振荡器为系统高速时钟, XOUT 引脚为通用I/O 口。 32K 外部 32768Hz 低速振荡器作为系统高速时钟。 12M 外部高速振荡器作为系统高速时钟,典型频率为 12MHz。 4M 外部振荡器作为系统高速时钟,典型频率为 4MHz。 内部高速 RC 振荡器 内置 16MHz RC 振荡器作为系统时钟源,XIN 和 XOUT 引脚作为通用 I/O 口。若选择“IHRC_RTC”,则系统时钟来 自内置 16MHz RC 振荡器,同时 XIN 和 XOUT 引脚与实时时钟源(RTC)327688HZ 石英晶体相连。 IHRC:系统高速时钟来自内置 16MHz RC 振荡器,XIN/XOUT 引脚作为普通的 I/O 引脚。 IHRC_RTC: 内置 16MHZ RC 振荡器作为系统高速时钟, 同时 XIN 和 XOUT 引脚与实时时钟源 (RTC)32768Hz 石英晶体相连。 RTC 的周期为 0.5 s,RTC 的定时器为 T0。 *注:IHRC_16M 和 IHRC_RTC 模式下,Fcpu=Fosc/4~Fosc/16。 外部高速时钟 外部高速时钟共三种模式:石英/陶瓷振荡器,RC 及外部时钟源,由编译选项High-Clk 控制具体模式的选择。石 英/陶瓷振荡器和RC 振荡器的上升时间各不相同。RC 振荡器的上升时间相对较短。 振荡器上升时间与复位时间的长短 密切相关。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 32 页 共 66 页 石英/陶瓷振荡器 石英/陶瓷振荡器由 XIN/XOUT 口驱动,对于高速、普通和低速三种不同工作模式,振荡器的驱动电流也不同,不 同的工作模式下,编译选项High-Clk 支持不同的频率条件:12MHz、4MHz 以及32KHz 工作频率。 *注:上图中,XIN/XOUT/VSS 引脚与石英/陶瓷振荡器以及电容C 之间的距离越近越好。 RC 振荡器 通过编译选项High-Clk 的设置可控制RC 振荡器的选择,RC 振荡器输出频率最高可达10MHz。改变R 可改变输 出频率的大小,电容C 的最佳容量为50P~100P,引脚XOUT 为通用I/O 口,如下图所示:
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 33 页 共 66 页 *注:电容C 和电阻R 应尽可能的接近单片机的VDD。 外部时钟源 单片机可选择外部时钟信号作为系统时钟,由编译选项High-Clk 控制,从XIN 脚送入。 *注:外部振荡电路中的GND 必须尽可能的接近单片机的VSS 端口。 4.5 系统低速时钟 系统低速时钟源即内置的低速振荡器,采用 RC 振荡电路。低速时钟的输出频率受系统电压和环境温度的影响,通 常为 5V 时输出32KHZ,3V 时输出16KHZ。输出频率与工作电压之间的关系如下图所示。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 34 页 共 66 页 低速时钟可作为看门狗定时器的时钟源。由 CLKMD 控制系统低速工作模式。 Flosc = 内部低速 RC 振荡器(16KHz @3V、32KHz @5V)。 低速模式 Fcpu = Flosc / 4。 系统工作在睡眠模式下,可以停止低速RC 振荡器。 * 注:不可以单独停止内部低速时钟;由寄存器 OSCM 的位 CPUM0 和 CPUM1 的设置决定内部低速时钟的状态。 系统时钟测试 在设计过程中,用户可通过软件指令周期 Fcpu 对系统时钟速度进行测试。 *注:不能直接从 XIN 引脚测试 RC 振荡频率,因为探针的连接会影响测试的准确性。 5 系统工作模式 5.1 概述 TC2501 可在如下四种工作模式之间进行切换 高速模式; 低速模式; 睡眠模式; 绿色模式
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 35 页 共 66 页 工作模式说明 模式 普通 低速 绿色 睡眠 注释 EHOSC 运行 STPHX STPHX 停止 IHRC 运行 STPHX STPHX 停止 ILRC 运行 运行 运行 停止 EHOSC,带有 RTC 功能 运行 STPHX 运行 停止 IHRC,带有RTC 功能 运行 STPHX 停止 停止 ILRC,带有RTC 功能 运行 运行 停止 停止 CPU 指令 执行 执行 停止 停止 T0 定时器 *有效 *有效 *有效 无效 * T0ENB=1 有效 TC0 定时器 *有效 *有效 无效 无效 * TC0ENB=1 有 效 看门狗定时器 由 Watch_Dog 编译选项控制 由 Watch_Dog 编译选项控制 由 Watch_Dog 编译选项控制 由 Watch_Dog 编译选项控制 参考编译选项说 明 内部中断 都有效 都有效 T0 全部无效 外部中断 都有效 都有效 都有效 全部无效 唤醒源 - - P0,P1,T0,复 位 P0, P1, 复位 EHOSC:外部高速时钟。 IHRC:内部高速时钟(16M RC 振荡器) 。 ILRC:内部低速时钟(3V 时 16K,5V 时 32K)。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 36 页 共 66 页 5.2 模式切换举例 *注:睡眠模式下,只有具有唤醒功能的引脚及复位操作才能将系统唤醒进入普通模式。 如果外部高速时钟停止且程序需要返回至普通模式就必须延迟至少10ms 以等待外部时钟稳定。 *注:绿色模式下如果禁止 T0 的唤醒功能,则只有具有唤醒功能的引脚和复位引脚可以将系统唤醒(具有唤醒功能的 引脚将系统返回到上一个工作模式,复位引脚将系统返回到普通模式) 。 *注:在绿色模式下,T0 具有唤醒功能,系统唤醒后返回到上一个工作模式。T0 的唤醒时间由过程控制。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 37 页 共 66 页 5.3 唤醒时间 概述 在绿色模式和睡眠模式下,系统并不执行程序指令,唤醒触发信号能够将系统唤醒到普通模式或低速模式。这里 的唤醒触发信号包括外部触发信号(P0、P1 引脚的电平变化)和内部触发信号(T0 溢出信号) ,具体为: 从睡眠模式唤醒后只能进入普通模式,且将其唤醒的触发只能是外部触发信号(P0、P1 电平变化) ; 由绿色模式唤醒回到系统前一工作模式(普通模式或低速模式)可以用外部触发或者内部触发。 唤醒时间 系统进入睡眠模式后,高速时钟停止运行。把系统从睡眠模式下唤醒时,单片机需要等待2048 个外部高速振荡器 时钟周期以使振荡电路进入稳定工作状态,等待的这一段时间就称为唤醒时间。唤醒时间结束后,系统才进入到普通 模式。 * 注:将系统从绿色模式中唤醒是不需要唤醒时间的,因为在绿色模式下高速时钟仍然正常工作。 唤醒时间的计算如下: 唤醒时间 = 1/Fosc * 2048(sec)+ 高速时钟启动时间 * 注:高速时钟的启动时间与VDD 和振荡器类型有关。 P1W 唤醒控制寄存器 在绿色模式和睡眠模式下,有唤醒功能的 I/O 口能够将系统唤醒到普通模式。P0 和 P1 都有唤醒功能,二者的区别 在于,P0 的唤醒功能始终有效,而 P1 由寄存器 P1W 控制。 0C0H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P1W - - - - P13W P12W P11W P10W 读/写 - - - - W W W W 复位后 - - - - 0 0 0 0 Bit[3:0] P10W~P13W : Port 1 唤醒功能控制位。 0 = 禁止 P1n 唤醒功能; 1 = 开放 P1n 唤醒功能。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 38 页 共 66 页 6 中断 6.1 概述 TC2501 提供 3 个中断源:2 个内部中断(T0/TC0)和 1 个外部中断(INT0) 。系统从睡眠模式进入高速普通 模 式时,外部中断能够将单片机唤醒。一旦程序进入中断,寄存器 STKP 的位 GIE 将被硬件自动清零以避免再次响应其 它中断。系统退出中断后,硬件自动将 GIE 置“1”,以响应下一个中断。中断请求存放在寄存器 INTRQ 中。 *注:程序响应中断时,位 GIE 必须处于有效状态。 6.2 中断请求使能寄存器 INTEN 中断请求控制寄存器 INTEN 包括2 个内部中断和 1 个外部中断, 当有效位被置为 1 后, 系统进入该中断服务程序, 程序器入栈,程序转至 0008H 即中断程序。程序运行到指令 RETI 时,中断结束,系统退出中断服务。 0C9H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 INTEN - - TC0IEN T0IEN - - - P00IEN 读/写 - - R/W R/W - - - R/W Bit 0 P00IEN :P0.0 外部中断(INT0)控制位。 0 = 禁止; 1 = 使能。 Bit 4 T0IEN :T0 中断控制位。 0 = 禁止; 1 = 使能。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 39 页 共 66 页 Bit 5 TC0IEN :TC0 中断控制位。 0 = 禁止; 1 = 使能。 6.3 中断请求寄存器 INTRQ 中断请求寄存器 INTRQ 中存放各中断请求标志。一旦有中断请求发生,则 INTRQ 中对应位将被置“1”,该请 求被响应后,程序应将该标志位清零。根据 INTRQ 的状态,程序判断是否有中断发生,并执行相应的中断服务。 0C8H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 INTRQ - - TC0IRQ T0IRQ - - - P00IRQ 读/写 - - R/W R/W - - - R/W Bit 0 P00IRQ :P0.0 中断(INT0)请求标志。 0 = INT0 无中断请求; 1 = INT0 有中断请求。 Bit 4 T0IRQ :T0 中断请求标志。 0 = T0 无中断请求; 1 = T0 有中断请求。 Bit 5 TC0IRQ :TC0 中断请求标志。 0 = TC0 无中断请求; 1 = TC0 有中断请求。
6.4 GIE 全局中断
只有当全局中断控制位 GIE 置 1 的时候程序才能响应中断请求。 0CFH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 STKP GIE - - - - - STKPB1 STKPB0 读/写 R/W - - - - - R/W R/W Bit 7 GIE :全局中断控制位。 0 = 禁止全局中断; 1 = 使能全局中断。 * 注:在所有中断中,GIE 都必须处于使能状态。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 40 页 共 66 页
6.5 PUSH, POP 处理
有中断请求发生并被响应后,程序转至 0008H 执行中断子程序。响应中断之前,必须保存 ACC、PFLAG 的内 容。芯片提供 PUSH 和 POP 指令进行入栈保存和出栈恢复,从而避免中断结束后可能的程序运行错误。 *注:“PUSH”、“POP”指令仅对 ACC 和 PFLAG 作中断保护,而不包括 NT0 和 NPD。PUSH/POP 缓存器是唯一 的且仅有一层。 6.6 INT0(P0.0)中断 NT0 被触发,则无论 P00IEN 处于何种状态,P00IRQ 都会被置“1”。如果 P00IRQ=1 且 P00IEN=1,系统响 应该中断;如果 P00IRQ=1 而 P00IEN=0,系统并不会执行中断服务。在处理多中断时尤其需要注意。 *注:P0.0 的中断触发方式由PEDGE 控制。 0BFH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 PEDGE - - - P00G1 P00G0 - - - 读/写 - - - R/W R/W - - - Bit[4:3] P00G[1:0] :P0.0 中断触发控制位。 00 = 保留; 01 = 上升沿触发; 10 = 下降沿触发;
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 41 页 共 66 页 11 = 上升/下降沿触发(电平触发) 。
6.7 T0 中断
T0C 计数器溢出时,不管 T0IEN 是否开启,T0IRQ 会被置“1”,此时若 T0IEN=1,则系统响应T0 中断;若此 时 T0IEN=0,则系统并不会响应 T0 中断。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 42 页 共 66 页 *注: 1. 在 RTC 模式下,必须延迟 1/2 RTC 时钟源(32768Hz)之后再对 T0IRQ 作清零动作,否则 RTC 间隔时间可能 出错。即从程序响应 T0 中断开始到 T0IRQ 再次被清零大约需要 16us。 2. RTC 模式下,中断服务程序中不能对 T0C 进行清零。 3. 编译选项 High_Clk 选择 IHRC_RTC,且 T0TB=1 的模式下,T0 定时器会出现 T0IRQ 时钟丢失现象,故用户必 须使用主循环,建议参考“T0 定时器 RTC 功能操作流程”章节。
6.8 TC0 中断
C0C 溢出时,无论TC0IEN 处于何种状态,TC0IRQ 都会置“1”。若 TC0IEN 和 TC0IRQ 都置“1”,系统就会 响应 TC0 的中断;若 TC0IEN = 0,则无论 TC0IRQ 是否置“1”,系统都不会响应TC0 中断。尤其需要注意多种中断 下的情形。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 43 页 共 66 页 6.9 多中断操作举例 在同一时刻,系统中可能出现多个中断请求。此时,用户必须根据系统的要求对各中断进行优先权的设置。中断 请求标志 IRQ 由中断事件触发, 当 IRQ 处于有效值“1”时, 系统并不一定会响应该中断。 各中断触发事件如下表所示: 中断 有效触发 P00IRQ 由PEDGE 控制 T0IRQ T0C 溢出 TC0IRQ TC0C 溢出 多个中断同时发生时,需要注意的是:首先,必须预先设定好各中断的优先权;其次,利用 IEN 和 IRQ 控制系 统是否响应该中断。在程序中,必须对中断控制位和中断请求标志进行检测。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 44 页 共 66 页
7 I/O 口
7.1 I/O 模式
寄存器 PnM 控制 I/O 口的工作模式。 0B8H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 0C1H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P1M - - - - P13M P12M - P10M 读/写 - - - - R/W R/W - R/W 0C2H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P2M - - P25M P24M P23M P22M P21M P20M 读/写 - - R/W R/W R/W R/W R/W R/W 复位后 - - 0 0 0 0 0 0 0C5H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 45 页 共 66 页 Bit[7:0] PnM[7:0] :Pn 模式控制位(n = 0~5)。 0 = 输入模式; 1 = 输出模式。 * 注: 1、用户可通过位操作指令(B0BSET、B0BCLR)对 I/O 口进行控制。 2、P1.1 只能作为输入引脚,寄存器 P1M.1 的值保持为“1”。
7.2 I/O 口上拉电阻
0E0H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 0E1H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P1UR - - - - P13R P12R - P10R 读/写 - - - - W W - W 0E2H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P2UR - - P25R P24R P23R P22R P21R P20R 读/写 - - W W W W W W 复位后 - - 0 0 0 0 0 0 0E5H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 *注:P1.1 是单向输入引脚,无上拉电阻,P1UR.1 保持为“1”。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 46 页 共 66 页
7.3 I/O 漏极开路寄存器
P1.0 内置漏极开路功能,当使能该功能时,P1.0 必须被置为输出模式。漏极开路的外部电路如下,图中的上拉 电阻必不可少,漏极开路的输出高电平由上拉电阻驱动。 0E9H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P1OC - - - - - - - P10OC Biit 0 P10OC :P1.0 漏极开路控制位。 0 = 禁止漏极开路功能; 1 = 使能漏极开路功能。 * 注:P10OC 是只写寄存器,只能通过指令“MOV”设置 P10OC。 *注:禁止 P1.0 的漏极开路功能后,P1.0 恢复到之前的 I/O 模式。
7.4 I/O 口数据寄存器
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 47 页 共 66 页 0D0H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 0D1H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P1 - - - - P13 P12 P11 P10 读/写 - - - - R/W R/W R R/W 复位后 - - - - 0 0 0 0 0D2H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 P2 - - P25 P24 P23 P22 P21 P20 读/写 - - R/W R/W R/W R/W R/W R/W 复位后 - - 0 0 0 0 0 0 0D5H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 8 定时器 8.1 看门狗定时器
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 48 页 共 66 页 看门狗定时器 WDT 是一个 4 位二进制计数器,用于监控程序的正常执行。如果由于干扰,程序进入了未知状态, 看门狗定时器溢出,系统复位。看门狗的工作模式由编译选项控制,其时钟源由内部低速RC 振荡器(16KHz @3V, 32KHz@5V)提供。 看门狗溢出时间 = 8192 /内部低速振荡器周期(sec) VDD 内部低速 RC Freq. 看门狗溢出时间 3V 16KHz 512ms 5V 32KHz 256ms *注:如果看门狗被置为“Always_On”模式,那么看门狗在睡眠模式和绿色模式下仍然运行。 看门狗清零的方法是对看门狗计数器清零寄存器WDTR 写入清零控制字 5AH。 0CCH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 WDTR WDTR7 WDTR6 WDTR5 WDTR4 WDTR3 WDTR2 WDTR1 WDTR0 读/写 W W W W W W W W 复位后 0 0 0 0 0 0 0 0 看门狗定时器应用注意事项如下: 对看门狗清零之前,检查 I/O 口的状态和 RAM 的内容可增强程序的可靠性; 不能在中断中对看门狗清零,否则无法侦测到主程序跑飞的状况; 程序中应该只在主程序中有一次清看门狗的动作,这种架构能够最大限度的发挥看门狗的保护功能。 8.2 定时器 T0
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 49 页 共 66 页 概述 二进制定时器 T0 溢出 (从 0FFH 到 00H) 时,T0 继续计数并给出一个溢出信号触发T0 中断请求。 定时器 T0 的 主要用途如下: 8 位可编程定时器:根据选定的时钟频率定时产生中断请求; RTC 定时器:根据选定的时钟信号产生中断请求,RTC 功能仅限于编译选项为 High_Clk = IHRC_RTC; 绿色模式唤醒功能:T0ENB = 1 时,T0 溢出将系统从绿色模式中唤醒。 *注: 1、在 RTC 模式下,进入中断之后必须经过 1/2 RTC(32768HZ) ,即16us 的延时后才能对 T0IRQ 清零; 2、在 RTC 模式下,T0 间隔时间固定为 0.5s,T0C 计数范围也固定为 256。 3、编译选项 High_Clk 选择 IHRC_RTC,且 T0TB=1 的模式下,T0 定时器会出现 T0IRQ 时钟丢失现象,故用户必 须使用主循环,建议参考“T0 定时器 RTC 功能操作流程”章节。 4、“T0 定时器的 RTC 功能操作流程”章节说明:主循环结构 polling T0C 的值溢出,以升级 RTC 时间,一个循环周 期内,主循环的间隔时间不能超过 200ms。 模式寄存器 T0M 0D8H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 T0M T0ENB T0rate2 T0rate1 T0rate0 T0TB 读/写 R/W R/W R/W R/W R/W 复位后 0 0 0 0 0 Bit 0 T0TB :RTC 时钟控制位。 0 = 禁止RTC; 1 = RTC 模式。 Bit [6:4] T0RATE[2:0] :T0 分频选择位。 000 = fcpu/256; 001 = fcpu/128; 110 = fcpu/4; 111 = fcpu/2。 Bit 7 T0ENB :T0 启动控制位。 0 = 禁止T0; 1 = 开启T0。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 50 页 共 66 页 *注:在 RTC 模式下,T0RATE 的设置是无效的。 计数寄存器 T0C 8 位计数寄存器T0C 用于控制T0 的间隔时间。 0D9H Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 T0C T0C7 T0C6 T0C5 T0C4 T0C3 T0C2 T0C1 T0C0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 0 0 0 0 0 0 0 0 T0C 初始值计算公式如下: T0C 初始值= 256 -(T0 间隔时间 * 输入时 TC0RATE T0 时钟 高速模式(Fcpu = 4MHz / 4) 低速模式(Fcpu = 32768Hz / 4) 最大溢出间隔max 单 步 计 数 时 间 = max/256 最大溢出间隔max 单 步 计 数 时 间 = max/256
000 Fcpu/25
65.536 ms 256 us 8000 ms 31250 us
001 Fcpu/12
32.768 ms 128 us 4000 ms 15625 us 010 Fcpu/64 16.384 ms 64 us 2000 ms 7812.5 us 011 Fcpu/32 8.192 ms 32 us 1000 ms 3906.25 us 100 Fcpu/16 4.096 ms 16 us 500 ms 1953.125 us 101 Fcpu/8 2.048 ms 8 us 250 ms 976.563 us 110 Fcpu/4 1.024 ms 4 us 125 ms 488.281 us 111 Fcpu/2 0.512 ms 2 us 62.5 ms 244.141 us 注:在RTC 模式下,T0C 的计数范围为256,请不要随意改动。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 51 页 共 66 页 操作时序(High_Clk = IHRC/12M/4M/32K X’tal) T0 操作时序如下: 带 RTC 功能T0 操作时序(IHRC_Clk = IHRC_RTC, T0TB = 1) T0 定时器带RTC 功能时的操作时序(High_Clk = IHRC_RTC 和 T0TB = 1)如下:
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 52 页 共 66 页
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 53 页 共 66 页 8.3 定时/计数器 TC0 概述 定时/计数器 TC0 具有双时钟源,可根据实际需要选择内部时钟或外部时钟作为计时标准。其中,内部时钟来自 Fcpu,外部时钟 INT0 由 P0.0 引脚(下降沿触发)输入。寄存器 TC0M 控制时钟源的选择。当 TC0 从 0FFH 溢 出到 00H 时,TC0 在继续计数的同时产生一个溢出信号,触发TC0 中断请求。 TC0 的主要作用如下: 8 位可编程定时器:根据选定的时钟频率在特定时间产生中断信号; 外部事件计数: 对外部事件计数; 蜂鸣器输出; PWM 输出。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 54 页 共 66 页 TC0M 模式寄存器 0DAH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC0M TC0ENB TC0rate2 T0rate1 T0rate0 TC0CKS ALOAD0 TC0OUT PWM0OUT 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 0 0 0 0 0 0 0 0 Bit 0 PWM0OUT :PWM 输出控制。 0 = 禁止 PWM 输出; 1 = 使能 PWM 输出,PWM 输出占空比由 TC0OUT 和 ALOAD0 控制。 Bit 1 TC0OUT :TC0 超时输出信号控制。仅当 PWM0OUT = 0 时有效。 0 = 禁止,P5.4 作为输入/输出口; 1 = 使能,P5.4 输出TC0OUT 信号。 Bit 2 ALOAD0 :自动装载控制。仅当 PWM0OUT = 0 时有效。 0 = 禁止TC0 自动装载; 1 = 使能TC0 自动装载。 Bit 3 TC0CKS :TC0 时钟信号控制位。 0 = 内部时钟(Fcpu 或 Fosc); 1 = 外部时钟,由 P0.0/INT0 输入。 Bit [6:4] TC0RATE[2:0] :TC0 分频选择位。 000 = fcpu/256; 001 = fcpu/128; … ; 110 = fcpu/4;
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 55 页 共 66 页 111 = fcpu/2。 Bit 7 TC0ENB :TC0 启动控制位。 0 = 禁止TC0 定时器; 1 = 开启TC0 定时器。 *注: 若 TC0CKS=1,则 TC0 用作外部事件计数器, 此时不需要考虑 TC0RATE 的设置,P0.0 口无中断信号 (P00IRQ =0)。 TC0C 计数寄存器 TC0C 控制 TC0 的时间间隔。 0DBH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC0C TC0C7 TC0C6 TC0C5 TC0C4 TC0C3 TC0C2 TC0C1 TC0C0 读/写 R/W R/W R/W R/W R/W R/W R/W R/W 复位后 0 0 0 0 0 0 0 0 TC0C 初始值的计算公式如下: TC0C 初始值 = N -(TC0 中断间隔时间 * 输入时钟) N 为 TC0 二进制计数范围。各模式下参数的设定如下表所示: TC0CK S PWM0 ALOAD0 TC0OUT N TC0C 范围 TC0C 二进制计数范围 注释 0 0 X X 256 00H~0FFH 00000000b~11111111b 每计数256 次溢出 1 0 0 256 00H~0FFH 00000000b~11111111b 每计数256 次溢出 1 0 1 64 00H~3FH xx000000b~xx111111b 每计数64 次溢出 1 1 0 32 00H~1FH xxx00000b~xxx11111b 每计数32 次溢出 1 1 1 16 00H~0FH xxxx0000b~xxxx1111b 每计数16 次溢出 1 - - - 256 00H~0FFH 00000000b~11111111b 每计数256 次溢出 TC0 中断时间对应表 TC0RATE TC0CLOC K 高速模式(Fcpu = 4MHz / 4) 低速模式(Fcpu = 32768Hz / 4) 最大溢出间隔时间 单 步 间 隔 时 间 = max/256 最大溢出间隔时间 单 步 间 隔 时 间 = max/256 000 Fcpu/256 65.536 ms 256 us 8000 ms 31250 us 001 Fcpu/128 32.768 ms 128 us 4000 ms 15625 us 010 Fcpu/64 16.384 ms 64 us 2000 ms 7812.5 us 011 Fcpu/32 8.192 ms 32 us 1000 ms 3906.25 us 100 Fcpu/16 4.096 ms 16 us 500 ms 1953.125 us 101 Fcpu/8 2.048 ms 8 us 250 ms 976.563 us
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 56 页 共 66 页 110 Fcpu/4 1.024 ms 4 us 125 ms 488.281 us 111 Fcpu/2 0.512 ms 2 us 62.5 ms 244.141 us TC0R 自动装载寄存器 TC0 的自动装载功能由 TC0M 的 ALOAD0 位控制。当TC0C 溢出时,TC0R 的值自动装入 TC0C 中。这样, 用户在使用的过程中就不需要在中断中重新赋值。 TC0 为双重缓存器结构。若程序对 TC0R 进行了修改,那么修改后的 TC0R 值先被暂存在 TC0R 的第一个缓存 器中,直到当前 TC0 溢出后,才被真正存入 TC0R 缓存器中,从而避免 TC0 中断时间出错以及 PWM 和蜂鸣器误 动作。 *注:在 PWM 模式下,系统自动开启自动装载功能。位寄存器 ALOAD0 用于控制溢出范围。 0CDH Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0 TC0R TC0R7 TC0R6 TC0R5 TC0R4 TC0R3 TC0R2 TC0R1 TC0R0 读/写 W W W W W W W W 复位后 0 0 0 0 0 0 0 0 TC0R 初始值计算公式如下: TC0R 初始值 = N -(TC0 中断间隔时间 * 输入时钟) 上式中,N 为 TC0 的最大计数范围。TC0 的溢出时间有如下六种可能情况: TC0CKS PWM0 ALOAD0 TC0OUT N TC0C 范围 TC0C 二进制计数范围 注释 0 0 X X 256 00H~0FFH 00000000b~11111111b 每计数256 次溢出 1 0 0 256 00H~0FFH 00000000b~11111111b 每计数256 次溢出 1 0 1 64 00H~3FH xx000000b~xx111111b 每计数64 次溢出 1 1 0 32 00H~1FH xxx00000b~xxx11111b 每计数32 次溢出 1 1 1 16 00H~0FH xxxx0000b~xxxx1111b 每计数16 次溢出 1 - - - 256 00H~0FFH 00000000b~11111111b 每计数256 次溢出 TC0 时钟频率输出(蜂鸣器输出) 对 TC0 时钟频率进行适当设置可得到特定频率的蜂鸣器输出(TC0OUT) ,并通过引脚 P5.4 输出。单片机内部 设置 TC0 的溢出频率经过2 分频后作为 TC0OUT 的频率,即 TC0 每溢出 2 次 TC0OUT 输出一个完整的脉冲,此 时,P5.4 的 I/O 功能自动被禁止。TC0OUT 输出波形如下:
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 57 页 共 66 页 若外部高速时钟选择4MHz, 系统时钟源采用外部时钟 Fosc/4, 程序中设置 TC0RATE2~TC0RATE1 = 110, TC0C = TC0R = 131,则TC0 的溢出频率为 2KHz,TC0OUT 的输出频率为 1KHz。下面给出范例程序。 *注:蜂鸣器的输出有效时,“PWM0OUT”必须被置为 0。 TC0 操作举例 TC0 定时器可用于定时器中断、事件计数、TC0OUT 和 PWM。下面分别举例说明。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 58 页 共 66 页
8.4 PWM0
概述 PWM 信号输出到 PWM0OUT(P5.4 引脚) ,TC0OUT 和 ALOAD0 标志位控制 PWM 输出的阶数(256、64、 和 16)。8 位计数器 TC0C 计数过程中不断与 TC0R 相比较,当 TC0C 计数到两者相等时,PWM 输出低电平,当 TC0C 再次从零开始计数时,PWM 被强制输出高电平。PWM0 输出占空比 = TC0R/计数量程(计数量程 = 256、64、32 或 16)。 参考寄存器保持输入00H 可使 PWM 的输出长时间维持在低电平,通过修改 TC0R 可改变 PWM 输出占空比。 *注:TC0 为双重缓存器结构,调整 TC0R 的值可以改变 PWM 的输出占空比。用户可随时改变 TC0R 的值,但是 只有在 TC0 溢出后,这一修改值才真正被写入 TC0R 中。 ALOAD0 TC0OUT PWM 占空比范 围 TC0C 有效值 TC0R 有效值 MAX.PWM 输出频 率(Fcpu = 4MHz) 注释 0 0 0/256~255/256 00H~0FFH 00H~0FFH 7.8125K 每计数256 次溢出 0 1 0/64~63/64 00H~3FH 00H~3FH 31.25K 每计数64 次溢出 1 0 0/32~31/32 00H~1FH 00H~1FH 62.5K 每计数32 次溢出
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 59 页 共 66 页 1 1 0/16~15/16 00H~0FH 00H~0FH 125K 每计数16 次溢出 PWM 输出占空比随TC0R 的变化而变化:0/256~255/256。 TC0IRQ 和 PWM 输出占空比 在 PWM 模式下,TC0IRQ 的频率与 PWM 的占空比有关,具体情况如下图所示:
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 60 页 共 66 页 PWM 输出占空比与 TC0R 的变化 在 PWM 模式下,系统随时比较 TC0C 和 TC0R 的异同。若TC0C<TC0R,PWM 输出高电平,反之则输出低电 平。当 TC0C 发生改变的时候,PWM 将在下一周期改变输出占空比。如果 TC0R 保持恒定,那么 PWM 输出波形 也保持稳定。
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 61 页 共 66 页 上图所示是 TC0R 恒定时的波形。每当TC0C 溢出时,PWM 都输出高电平,TC0C≧TC0R 时,PWM 即输出低 电平。下面所示是 TC0R 发生变化时对应的波形图: 在 period 2 和 period 4 中,显示新的占空比(TC0R) ,但 PWM 在 period 2 和 period 4 的占空比要在下一个 period 才会改变。这样,可以避免 PWM 不随设定改变或在同一个周期内改变两次,从而避免系统发生不可预知的误动作。 PWM 编程举例
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 62 页 共 66 页 *注:TC0R 为只写寄存器,不能用 INCMS 和 DECMS 指令对其进行操作。 9 指令表 Field 指令格式 描述 C DC Z 周期 M O V E MOV A,M A←M - - √ 1 MOV A,M M←A - - 1 B0MOV A,M A←M (bank 0) - - √ 1 B0MOV M,A M (bank 0) ←A - - - 1 MOV A,I A←I - - - 1 B0MOV M,I M←I。(M 仅适用地址是0x80~0x87 的系统寄存器,如R、Y、Z…,I 不能是E6h、E7h。) - - - 1 XCH A,M A←→M - - - 1+N B0XCH A,M M←→A(bank 0) (M 不使用地址是0x80~0x87 的系统寄存器) - - - 1+N MOVC R, A← ROM [Y ,Z] - - - 2 A R I T H M E T I ADC A,M A ← A + M + C,如果产生进位则C = 1,否则 C = 0。 √ √ √ 1 ADC M,A M← A + M + C,如果产生进位则C = 1,否则 C = 0。 √ √ √ 1+N ADD A,M A ← A + M,如果产生进位则 C = 1,否则 C = 0。 √ √ √ 1 ADD M,A M← A + M,如果产生进位则 C = 1,否则 C = 0。 √ √ √ 1+N B0ADD M,A M (bank 0) ← M (bank 0) + A,如果产生进位则 C = 1,否则 C = 0。 √ √ √ 1+N ADD A,I A← A + I,如果产生进位则C = 1,否则 C = 0。 √ √ √ 1 SBC A,M A ← A - M - /C,如果产生借位则 C=0,否则C=1。 √ √ √ 1 SBC M,A M← A - M - /C,如果产生借位则 C=0,否则C=1。 √ √ √ 1+N SUB A,M A← A – M,如果产生借位则 C=0,否则 C=1。 √ √ √ 1 SUB M,A M← A – M,如果产生借位则 C=0,否则 C=1。 √ √ √ 1+N
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 63 页 共 66 页 C SUB A,I A← A – I,如果产生借位则C=0,否则 C=1。 √ √ √ 1 L O G I C AND A,M A← A 与 M。 - - √ 1 AND M,A M← A 与 M。 - - √ 1+N AND A.I A← A 与 I。 - - √ 1 OR A,M A← A 或 M。 - - √ 1 OR M,A M ← A 或 M。 - - √ 1+N OR A.I A ← A 或 I。 - - √ 1 XOR A,M A ← A 异或 M。 - - √ 1 XOR M,A M ← A 异或 M。 - - √ 1+N XOR A.I A ← A 异或 I。 - - √ 1 P R O C E S S SWAP M A (b3~b0, b7~b4) ← M(b7~b4, b3~b0)。 - - - 1 SWAPM M M(b3~b0, b7~b4) ← M(b7~b4, b3~b0)。 - - - 1+N RRC M A ← M 带进位右移。 √ - - 1 RRCM M M ← M 带进位右移。 √ - - 1+N RLC M A ← M 带进位左移。 √ - - 1 RLCM M M ← M 带进位左移。 √ - - 1+N CLR M M ← 0。 - - - 1 BCLR M.b M.b← 0。 - - - 1+N BSET M.b M.b ← 1。 - - - 1+N BOBCLR M.b M(bank 0).b ← 0。 - - - 1+N BOBSET M.b M(bank 0).b ← 1。 - - - 1+N B R A N C H CMPRS A.I 比较,如果相等则跳过下一条指令,C 与ZF 标志位可能受影响。 √ - √ 1+S CMPRS A,M 比较,如果相等则跳过下一条指令,C 与ZF 标志位可能受影响。 √ - √ 1+S INCS M A← M + 1,如果A = 0,则跳过下一条指令。 - - - 1+S INCMS M M ← M + 1,如果M = 0,则跳过下一条指令。 - - - 1+N+ S DECS M A ← M - 1,如果A = 0,则跳过下一条指令。 - - - 1+S DECMS M M ← M - 1,如果M = 0,则跳过下一条指令。 - - - 1+N+ S BTS0 M.b 如果 M.b = 0,则跳过下一条指令。 - - - 1+S BTS1 M.b 如果 M.b = 1,则跳过下一条指令。 - - - 1+S BOBTS0 M.b 如果 M(bank 0).b = 0,则跳过下一条指令。 - - - 1+S BOBTS1 M.b 如果 M(bank 0).b = 1,则跳过下一条指令。 - - - 1+S JMP d 跳转指令,PC15/14 ← RomPages1/0,PC13~PC0 ← d。 - - - 2 CALL d 子程序调用指令,Stack ← PC15~PC0,PC15/14← RomPages1/0, PC13~PC0 d 。 - - - 2 M I RET 子程序跳出指令,PC← Stack。 - - - 2 RET1 中断处理程序跳出指令,PC ← Stack,并使能全局中断控制位。 - - - 2 PUSH 保存ACC 和PFLAG(NT0,NPD 除外)
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 64 页 共 66 页 S POP 恢复ACC 和PFLAG(NT0,NPD 除外) 。 - NOP 空指令,无特别意义。 - - - 1 10 电气特性 10.1 极限参数 6.0V 0.2V Operating ambient temperature (Topr) C 10.2 电气特性 (All of voltages refer to Vss, Vdd = 5.0V, fosc = 4MHz,F cpu=1MHZ, ambient temperature is 25 ℃unless otherwise note.) PARAMETER SYM. DESCRIPTION MIN. TYP. MAX. UNIT Operating voltage Vdd Normal mode, Vpp = Vdd,25 ℃ 2.4 5.0 5.5 V Normal mode, Vpp = Vdd, -40 C~85 ℃ 2.5 5.0 5.5 V RAM Data Retention voltage Vdr 1.5 - - V Vdd rise rate Vpor Vdd rise rate to ensure internal power -on reset 0.05 - - V/ms Input Low Voltage ViL1 All input ports VSS - 0.3 Vdd V ViL2 Reset pin VSS - 0.2 Vdd V Input High Voltage ViH1 All input ports 0.7Vdd - Vdd V ViH2 Reset pin 0.9 Vdd - Vdd V Reset pin leakage current Ilekg Vin = Vdd, 25℃ - - 2 µA Vin = Vdd, -40 ℃~85 ℃ - - 5 µA I/O port pull-up resistor Rup Vin = Vss , Vdd = 3V 100 200 300 KΩ in = Vss , Vdd = 5V 520 100 180 I/O port input leakage current lekg Pull-up resistor disable, Vin = Vdd - - 2 µA I/O output source current sink current IoH Vop = Vdd – 0.5V 8 12 - mA IoL Vop = Vss + 0.5V 8 15 - cycle INTn trigger pulse width Tint0 INT0 interrupt request pulse width 2/fcpu - - mA Idd1 Run Mode (No loading, Fcpu = Fosc/4) Vdd= 5V, 4Mhz - 2.5 5 µA Vdd= 3V, 4Mhz - 1 2 µA
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 65 页 共 66 页 Supply Current Idd2 Slow Mode (Internal low RC, Stop high clock) Vdd=5V, ILRC 32Khz - 20 40 µA Vdd=3V, ILRC 16Khz - 5 10 µA Idd3 Sleep Mode Vdd= 5V, 25 ℃ - 0.8 1.6 µA Vdd= 3V, 25 ℃ - 0.7 1.4 µA Vdd= 5V , -40℃~85 ℃ - 10 21 µA Vdd= 3V, -40 ℃~85 ℃ - 10 21 µA Idd4 Green Mode (No loading, Fcpu = Fosc/4, Watchdog Disable) Vdd= 5V, 4Mhz - 0.6 1.2 µA Vdd=3V, 4Mhz - 0.25 0.5 µA Vdd=5V, ILRC 32Khz - 15 30 µA Vdd=3V, ILRC 16Khz - 3 6 µA Internal High Oscillator Freq. Fihrc Internal Hihg RC (IHRC)
25 C,Vdd=5V
Fcpu = 1MHz 15.58 16 16.32 Mhz -40 C~85 C, Vdd= 2.4V~5.5V, Fcpu = 1MHz~4 MHz 14 16 18 Mhz LVD Voltage Vdet Low voltage reset level. 1.6 2.0 2.3 V Vdet Low voltage reset level. Fcpu = 1 MHz. Low voltage indicator level. Fcpu = 1 MHz. 1.8 2.4 3 V Vdet Low voltage indicator level. Fcpu = 1 MHz 2.5 3.6 4.5 V 注*:这些电气特性参数都是理论值,并没有通过测试。 10.3 电气特性曲线图 本章所列的各曲线图仅作设计参考,其中给出的部分数据可能超出了芯片指定的工作范围,为保证芯片的正常工 作,请严格参照电气特性说明
深圳市富满电子有限公司 SHENZHEN FUMAN ELECTRONICS CO., LTD. TC2501 (文件编号:S&CIC1005) 八位单片机 第 66 页 共 66 页 (VDD=5V, Fcpu=Fhosc/16)