PIC单片及定时器溢出中断的设计思路及程序设计
发布时间:2008/11/25 0:00:00 访问次数:1189
1.设计思路
pic16f87系列单片机的定时/计数器0是一个8位的简单增量溢出计数器。时钟源可以是内部系统时钟(fosc/4),也可以是外部时钟。为了扩大定时或计数范围,在定时/计数器0中设计了一个可编程预分频器。当tmr0内部计数器计数从ffh跳到ooh时,发生计数溢出,置位toif(intcon的d2),向cpu申请中断。
rb0/int引脚上的外部中断由边沿触发,既可以是上升沿,也可以是下降沿,当寄存器option_reg的intedg位为1时,选择上升沿触发;为0时选择下降沿触发。一旦检测到引脚上出现有效边沿,就将intf位intcon的d1置1。
本例中同时允许定时器0中断和外部int中断。在程序执行过程中,不定时地在rb0/int引脚上加入脉冲,产生中断请求。中断服务程序查询tgif和intf标志以决定响应哪一个中断,中断响应优先级由中断查询次序决定。
2.程序设计
主程序流程如图1所示,中断子程序流程如图2所示。
图1 主程序流程
图2 中断子程序流程
(1)包含必要的头文件及定义全局变量。
(2)中断服务子程序,通过判断定时器0的中断对端口c进行操作,使其输出方波。
(3)主函数,初始化定时器0及端口a,然后进入中断等待状态。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
1.设计思路
pic16f87系列单片机的定时/计数器0是一个8位的简单增量溢出计数器。时钟源可以是内部系统时钟(fosc/4),也可以是外部时钟。为了扩大定时或计数范围,在定时/计数器0中设计了一个可编程预分频器。当tmr0内部计数器计数从ffh跳到ooh时,发生计数溢出,置位toif(intcon的d2),向cpu申请中断。
rb0/int引脚上的外部中断由边沿触发,既可以是上升沿,也可以是下降沿,当寄存器option_reg的intedg位为1时,选择上升沿触发;为0时选择下降沿触发。一旦检测到引脚上出现有效边沿,就将intf位intcon的d1置1。
本例中同时允许定时器0中断和外部int中断。在程序执行过程中,不定时地在rb0/int引脚上加入脉冲,产生中断请求。中断服务程序查询tgif和intf标志以决定响应哪一个中断,中断响应优先级由中断查询次序决定。
2.程序设计
主程序流程如图1所示,中断子程序流程如图2所示。
图1 主程序流程
图2 中断子程序流程
(1)包含必要的头文件及定义全局变量。
(2)中断服务子程序,通过判断定时器0的中断对端口c进行操作,使其输出方波。
(3)主函数,初始化定时器0及端口a,然后进入中断等待状态。
欢迎转载,信息来源维库电子市场网(www.dzsc.com)
上一篇:PIC单片机中断模块