PIC单片机CCP1中断是什么意思

PIC单片机CCP1中断是什么意思,第1张

CCP模块包含了捕捉,比较,PWM三个功能

CCP1IF是捕捉与比较器功能中用到的中断,PWM模块是没有这个中断的

在捕捉模式下,可配置中断产生时机为:

每个下降沿

每个上升沿

每4个上升沿

每16个上升沿

在比较模式下, CCPR1的16位值不断与TMR1的值作对比,当两者匹配时,CCP1脚会被驱动,至于驱动成什么状态,取决于CCP1M的值,同时将CCP1IF中断标志位置位

中断服务程序:处理器处理“急件”,可理解为是一种服务,是通过执行事先编好的某个特定的程序来完成的,这种处理“急件”的程序被称为——中断服务程序。

当中央处理器正在处理内部数据时,外界发生了紧急情况,要求CPU暂停当前的工作转去处理这个紧急事件。处理完毕后,再回到原来被中断的地址,继续原来的工作,这样的过程称为中断。实现这一功能的部件称为中断系统,申请CPU中断的请求源称为中断源,单片机的中断系统一般允许多个中断源,当多个中断源同时向CPU请求中断时,就存在一个中断优先权的问题。通常根据中断源的优先级别,优先处理最紧急事件的中断请求源,即最先响应级别最高的中断请求。

你这个是PIC那个芯片啊,各个PIC芯片型号不同,寄存器也不同。

猜想一下,RB0为中断引脚,那可能是PIC16f88x系列的单片机。

那要好好看看这芯片的数据手册了,这个个PORTB0口还对应了一个AD输入端,如果不对ANSELH(模拟选择器高字节寄存器)这个寄存器进行 *** 作,默认是AD输入。所以你读到的数值就不对了。所以,前头配置时候需要ANSELH = 0; (如果不是F88x系列,那看一下对应的单片机的数据手册)

况且,并不需要那样写中断程序,也不能这样写。 因为PIC单片机没有中断向量入口地址选择。所以它一遇到中断信号便进入中断子函数,如果你的程序还有其他中断的话,就可能出错(或者单片机因干扰,产生内部某个外设模块的中断,也会调用你写的外部中断程序)

所以,首先中断子函数开始就需要判断外部中断标志位INTF是否被置位:

if(INTF)

{

//这个大括号内写你的中断 *** 作

}

根据我做的经验,PIC单片机的中断内部最好不要写延时函数,甚至不要调用其他函数,因为在调用中断子函数时候,需要中断的现场保护。在中断里调用其他函数,会影响现场保护时候的堆栈 *** 作,而引起出错甚至程序跑飞。

所以当中断产生的时候,直接给a++即可,既:

void interrupt INT()

{ GIE = 0;

if(INTF)

{

INTF = 0;

a++;

}

GIE = 1;

}

如果是像按键判断的话,可以改一下硬件电路,在RB0输入前串上一个施密特触发器74HC14,这样可以在硬件上进行消抖。如果非要软件消抖,可以把延时放在主程序里,即进入中断后把一个变量置位,然后退出中断程序,在主程序里延时并判断是否还为1

你在主函数中先把RCIF标志位清零,你做的应该是SCI串行通信吧,一上电,就表示程序开始执行了,你程序一开始执行就是要进行SCI串行通信,当然一开始就进入中断了,如果你不想这样,你可以连一个按钮,当此按钮按下后就进入中断执行SCI通信

其实就是少了一句:

unsigned char i;

即主函数中的 i 没定义,其他没问题,我把单片机型号设置为PIC16F887

但是,需要告诉你的是,现在只是没有语法错误而已。实际有否错你要根据硬件图和你想做的什么事来调试!

我是在PICC98的版本,MPLAB IDE是在863的版本下编译的,就是在函数上加上那一句就没有语法错误了!!!

以上就是关于PIC单片机CCP1中断是什么意思全部的内容,包括:PIC单片机CCP1中断是什么意思、什么是C语言的中断程序 有什么用啊、跪求pic 单片机 外部中断函数解析等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10126461.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存