历史上的今天
返回首页

历史上的今天

今天是:2025年02月15日(星期六)

2020年02月15日 | PIC单片及定时器溢出中断的设计思路及程序设计

2020-02-15 来源:eefocus

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,然后进入中断等待状态。

推荐阅读

史海拾趣

ERNI公司的发展小趣事

20世纪70年代,ERNI开始实施全球化战略。他们意识到,只有不断扩大市场份额,才能确保公司的长期稳定发展。因此,ERNI开始在欧洲、北美和亚洲等地设立销售处和生产基地,为全球客户提供创新且高品质的产品。这一战略的实施,不仅使ERNI的销售额大幅增长,还进一步巩固了其在全球连接器市场的领先地位。

Fong Ya Enterprise Co Ltd公司的发展小趣事

1947年,瑞士工程师Ernst Rudolf Erni和他的妻子Elsa在瑞士那提空(Nänikon)共同创立了“ERNI & CO.”公司。他们的首个订单是为苏黎世克洛腾机场开发地雷探测器和机场导航灯。这个起点虽小,但为ERNI日后在电子行业的辉煌奠定了基础。随着订单的增多,公司逐渐扩大了生产规模,并开始涉足继电器、电气设备等领域。

亿宝科技(CNIBAO)公司的发展小趣事

品质是亿宝科技的生命线。公司始终坚持严格的质量管理体系,从原材料采购到生产流程,再到成品检验,每一个环节都严格把控。在一次客户反馈中,亿宝科技发现某批次产品存在细微的质量问题。公司立即启动紧急预案,召回所有相关产品并进行全面检查。经过一系列的改进措施,亿宝科技成功解决了问题,并赢得了客户的信任和好评。

Analog Modules Inc公司的发展小趣事

随着环保意识的不断提高,亿宝科技积极响应国家绿色发展的号召。公司引进先进的环保设备和技术,减少生产过程中的污染物排放。同时,亿宝科技还注重产品的环保性能设计,推出了一系列绿色电子产品。这些产品不仅符合国家的环保标准,还赢得了消费者的青睐和认可。在绿色发展的道路上,亿宝科技展现了企业的责任和担当。

Hi-Light Electronic Co Ltd公司的发展小趣事

亿宝科技深知人才是企业发展的关键因素。因此,公司高度重视人才引进和培养工作。通过校园招聘、社会招聘等方式,亿宝科技吸引了一批具有丰富经验和专业技能的人才加入公司。同时,公司还建立了完善的培训体系,为员工提供持续的技能提升和职业发展机会。在人才的共同努力下,亿宝科技不断取得新的突破和成就。

對餘科技(DIOFIT)公司的发展小趣事

在市场竞争日益激烈的情况下,DIOFIT公司凭借敏锐的市场洞察力和灵活的营销策略,不断拓展市场份额。他们针对不同地区、不同行业的需求,制定个性化的产品推广方案,通过线上线下相结合的方式,加强品牌推广和渠道建设。同时,DIOFIT公司还积极参与各类展会和论坛,与业界同仁交流合作,拓展国际视野,为公司的发展注入新的活力。

问答坊 | AI 解惑

任意整数分频,占空比为50%(VHDL)

--希望能对大家有帮助 --**************************************-- --程序名:任意整数分频,占空比为50% --**************************************-- library ieee; use ieee.std_logic_1164.all; entity clk_div is generic(n:integer:= ...…

查看全部问答>

关于串口驱动

个人理解 微软显示串口驱动的MDD层 自己要实现PDD层 今天在PB5.0下看到这个 D:\\WINCE500\\PUBLIC\\COMMON\\OAK\\DRIVERS\\SERIAL中有一个SERPDDCM文件夹 看名字好像是串口驱动的PDD 想问下这是个什么东西 如果是PDD 那写串口驱动还需要做些什么 ...…

查看全部问答>

如何在编译模块的时候引用Glib库

我写了一个模块,已经编译通过,运行没有问题 可是我希望进一步再模块中使用Glib库的API的时候,加入 #include 编译模块的时候怎么样都找不到glib.h 我知道模块编译的时候是在系统空间编译的, 我在用户空间引用glib.h就没有问题, 那么怎 ...…

查看全部问答>

我修改 power button 驱动,注释掉了PowerOffSystem(); 可仍然有效果,很奇怪

我修改 power button 驱动,注释掉了PowerOffSystem(); 可仍然有效果,很奇怪 // Soft reset and standard suspend-resume both start with suspend for now.                  &nbs ...…

查看全部问答>

uCOS 在STM32移植的问题!

  uCOS-II在STM32的移植,我做了N天了,可是uCOS就是在我的板子上运行不起来,实在让我很纠结!在此发帖,希望有人帮帮我。   前几天开始uCOS在STM32的移植,刚开始移植编译老是不通过,找了五天,看了官方的移植例子,实在看不懂,又去 ...…

查看全部问答>

LPC9221 io口设置与使用

我有个nxp p89lpc9221芯片,用来控制7段数码管显示,用ICP口编程。 我现在设置p0.0,p0.1,p0.2为开漏输出;P0M1 |= 0x07;   P0M2 |= 0x07; 三个脚都上拉到3.3v; 然后设置三个脚输出为0: sbit p00 = P0 ^ 0; sbit p01 = P0 ^ 1; sbit ...…

查看全部问答>

基于stm32F103+enc28j60+路由+家庭宽带的物联网全套资料

      基于stm32F103+enc28j60+路由+家庭宽带的物联网是参照野火大神的例程以及自己以前建网站经验,主要在STM32内编写一个很小的网页服务器,只有一页,在网页中可以实现LED控制,以及温度、湿度在网页上显示。     ...…

查看全部问答>

Unable to handle kernel paging request at virtual address的产生原因

问题: 我在移植linux-2.6.14 到s3c2410时也出现了类似错误,先移植好网卡后,在移植LCD,出错 s3c2410_bwscon value 22111910 s3c2410_bankcon2 value 7ffc ax88796 extIRQ = 12, IRQtype= 4 Unable to handle kernel paging request at virt ...…

查看全部问答>

关于ADC 采样的时钟问题?

本帖最后由 s364147694 于 2014-4-7 14:15 编辑 一次ADC采样转换时间是 采样时间+转换时间,公式是= (4 x ADC12CLK x N) + ( 13 xADC12CLK/Fadc12clk)) 但是采样的时钟和转换始终是一个吗??公式里的ADCLK是指分频后的时钟还是没分频的?? 最 ...…

查看全部问答>

Altium designe 教程大集合(非常不错的资源)

本帖最后由 a523248304 于 2014-11-7 11:56 编辑 别人发给我的,分享给大家,混个脸熟。。。 另外工程师需要PCB封装、原理图元件库、典型应用电路可以去“搜芯网”找,找不到就向他们发布需求,他们工程师会提供给你。。。网址就不发在论坛 ...…

查看全部问答>