STC90C51RC/RD+单片机定时器初始化与中断服务程序

需积分: 50 45 下载量 94 浏览量 更新于2024-08-10 收藏 4.63MB PDF 举报
"这篇文档是关于STC90C51RC-RD+系列单片机的编程指南,特别关注了中断服务程序的编写。文档介绍了如何进行定时/计数器1的初始化设置以及中断服务程序的设计,适用于学习和开发基于STC90C51RC-RD+的嵌入式系统。" 在STC90C51RC-RD+系列单片机的编程中,定时/计数器的应用是一个重要的部分。例如,为了实现一个10ms的定时任务,当主频频率为12MHz时,选择定时/计数器1工作在方式1,并计算得到计数初值为TH1=0DCH,TL1=F0H。初始化程序通常在主程序中执行,包括设置堆栈指针、选择定时模式、设置计数初值以及开启中断功能。 初始化程序的步骤如下: 1. 设置堆栈指针SP,例如SP=#60H,以确保有足够的存储空间来保存中断期间的寄存器状态。 2. 使用TMOD寄存器选择定时器T1,并设定其工作在定时模式,方式1,即TMOD=#10H。 3. 分别设置定时器的高字节TH1和低字节TL1的计数初值,如TH1=#0DCH,TL1=#0F0H。 4. 开启全局中断EA,以及定时器1中断ET1,允许中断的发生。 当定时/计数器1的溢出中断发生时,会调用中断服务程序。中断服务程序的主要任务是重置计数初值并返回到主程序。示例中断服务程序如下: - 保存A寄存器、DPL和DPH的当前值到堆栈,以保留现场信息。 - 将TL1和TH1重新设置为初值,即TL1=#0F0H,TH1=#0DCH,以重新开始计数。 - 恢复堆栈中的A、DPL和DPH值,确保中断处理后的程序状态与中断前一致。 - 使用RETI指令返回到中断返回地址,继续执行主程序。 这个中断服务程序的结构保证了中断处理的原子性,防止在中断处理过程中被其他中断打断,同时在处理完中断后恢复了系统状态。 STC90C51RC-RD+系列单片机具有低功耗、高速度和高可靠性等特点,是89系列的升级版,抗干扰能力和复位效果更优。它们还支持在线编程(ISP),使得程序的更新和调试变得更加方便。STC90系列单片机的广泛应用和良好性能使其成为许多嵌入式系统开发者的首选。