PIC单片机振荡电路中怎样选择晶体?

2020-02-08来源: eefocus关键字:PIC  单片机  振荡电路  选择晶体

什么是中断程序呢?


形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。


中断事件


什么是中断事件,就是引起中断的事件。对于单片机来说这些事件是多种多样的。比如 说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。


讲到中断不得不讲讲和中断相对的 查询。其实不管是按键按下 还是 时间到,还是数据发送完毕,这些事实上都可以用查询的方式办到。比如 你是经理 如果你想知道属下任务完成了没有 一种方式就是去询问属下,任务完成没有。早上没完成,下午在问。下午没完成第二天再问。。。。一直到完成为止 这种方式就相当于查询的方式,另一种就是然属下完成任务好直接汇报,在下属执行任务的期间你无需去打挠下属,当下属任务完成后就第一时间向你汇报,这种方式就好像中断。


查询方式:缺点就是可能会大量浪费CPU的时间,不断去查询。如果事情不多还好,可是一旦事情多了会明显感到运行速度变慢。


中断方式:可以用在对时间和响应速度有要求的场合。


具体有哪些事件会引起中断 可以看


1,中断控制寄存器INTCON


2,外设中断允许寄存器 PIEX 注 : X可以是1 2 3 4.。。。不同型号的单片机数目不同


3,外设中断标志寄存器 PIRX 注: X可以是1 2 3 4.。。。不同型号的单片机数目不同


INTCON 中断控制寄存器讲解:


1开启或关闭 全体的中断功能(GIE)


2开启或关闭全体外设的中断功能(PEIE)外设就是在外设中断允许/标志寄存器里面所写的设备。


3开启一些中断事件。


PIEX 与 PIRX 是相互对应的如:当把PIE1的TMR1IE设置为1 定时器timr1将开启中断。等到TMR1定时器溢出后,则会在PIR1的TMRIF将为1,并且执行中断程序。


实例讲解:


我们把上一讲的《PIC单片机之定时器》中的实例修改成中断方式 实现 每隔 50MS亮起LED,每隔50MS灭掉LED。


/*开发环境MPLAB X IDE 芯片型号PIC16LF1823*/


#include


__CONFIG(FOSC_INTOSC&WDTE_OFF&PWRTE_ON&MCLRE_OFF&CP_ON&CPD_OFF&BOREN_ON


&CLKOUTEN_OFF&IESO_ON&FCMEN_ON);//这个要放到上一行去


__CONFIG(PLLEN_OFF&LVP_OFF) ;


#define LED LATA5


void init_fosc(void)


{


OSCCON= 0x68;


}


void init_gpio(void)


{


PORTA = 0;


LATA = 0;


ANSELA = 0;


TRISAbits.TRISA5=0;


}


void init_timer0(void)


{


OPTION_REG=0x87;


}


void interrupt isr(void)//中断程序,interrupt是个关键字说明该函数,是中断函数。


{


LED = ~LED;//改变LED的状态


INTCONbits.TMR0IF=0;//清零中断标志位 如果在离开中断程序前没有清零,程序将不停的中断。


TMR0=61;//给TMR0付初始值61 ,开始下一个50ms计时做准备。


//中断函数结束 返回主函数。哪里来回 回那里去,也就是回到主函数的while(1);处


}


int main(int argc, char** argv)


{


init_fosc();


init_gpio();


init_timer0();


INTCONbits.GIE=1; //开启总中断


INTCONbits.TMR0IF=0;//清零TMR0溢出中断标志位


INTCONbits.TMR0IE=1;//开启TMR0溢出中断


TMR0=61;


while(1);//主函数 在此什么都没做一直在死循环。但等到50ms时间到了TMR0将会溢出,程序就会跳到void interrupt isr(void)处执行。


}


我帮大家理清下中断初始设置大致的步骤


1 ,开启总中断,开启外设中断。INTCONbits.GIE=1; INTCONbits.PEIE=1;其实即使没用到外设开启也无妨。


2 ,清楚相应中断的标志位。如INTCONbits.TMR0IF=0;


3 ,开启相应中断。如INTCONbits.TMR0IE=1;


中断函数/程序 中要注意的就是 清零相应的中断标志位 如INTCONbits.TMR0IF=0; 否则单片机会认为中断未被执行 则一直中断。

关键字:PIC  单片机  振荡电路  选择晶体 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic487569.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:PIC单片机程序设计需要注意的一些问题及看法
下一篇:PIC16F690 时钟初始化实例

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

pic之I2C设置
在pic中设置i2c:初始化的时候不能把引脚设置为开漏输出,否则在模块使能的时候,两个引脚的电平会一直拉低的。在寄存器I2CxION直接把bit<15> 设置为1,设置波特率,后面的参考资料;
发表于 2020-03-09
PIC16位单片机——彻底弄懂时钟
一直以来写程序都是看参考资料和书,这次的16位单片劫dsPIC33EP32GP502没有一点资料。因此趁机也好好深入学习一下!首先看振荡器的选择吧。首先看一下时钟框图: 我们使用的是外部晶振,所以配置为HS,FCY是CPU时钟,FP是外设时钟,FCY=FP(除打盹模式外)。FCY=Fosc/2。也就是cpu时钟是晶振频率的1/2。下面还有分频。DOZE<2:0>:011 = FCY 被 8 分频 (默认)处理器时钟分频比选择位。因此实际的FCY=0.5MHz(使用8M的外部晶振,并八分频8/2/8=0.5MHz)。 看一下振荡器选择配置位的说明:  这里我们需要看的是FOSCSEL配置位 第
发表于 2020-03-09
PIC16位单片机——彻底弄懂时钟
PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
1.七大汇编指令1.1 #INCLUDE语法:  #include “文件名.*” 或<文件名.*> 或无括号 或 引号示例:   #INCLUDE p12f675.inc1.2 #DEFINE用于定义变量和分配初始值;用户友好的名字被分配给常数,寄存器 ,管脚名等. 使程序易读;例:   #DEFINE MYCONSTANT H’5A’1.3 _ _CONFIG设置配置位1.4 ORG语法: ORG   <address>例: ORG 0x0000描述:  定义起始地址(0x0000).1.5 EQU语法:  &nbs
发表于 2020-03-09
PIC单片机入门_MPLAB 集成开发环境和 MPASM编译器
PIC单片机的第一个例程
今天白天在网上找软件找了好久,在官网下了MPLAB,和PICC还要注册比较麻烦。今天用的软件Protues仿真的。 第一个程序点亮一盏灯,电路很简单。下面贴出程序。 #include <pic.h>//包含头文件int main(void){    TRISB=0x00;//PortB方向寄存器,PortB为输出         while(1)    {         
发表于 2020-03-09
PIC18Fxx单片机IO设置注意事项
通用IO结构注意事项:模拟选择寄存器(ANSELx):复位后,ANSELx位默认为模拟模式。 要将任何引脚用作数字通用或外设输入,必须通过用户软件将相应的ANSEL位初始化为0。开漏控制寄存器(ODCONx):使用I2C引脚时,必须设置漏极开路控制。
发表于 2020-03-09
PIC18Fxx单片机IO设置注意事项
PIC单片机存储器拓展
生活中感应水龙头越发的常见了,公共场所使用也更加的频繁,感应水龙头,顾名思义,就是通过红外线感应出水。那么感应水龙头的功能是通过什么实现的呢?感应水龙头,是通过红外线反射原理,当人体的手放在水龙头的红外线区域内,红外线发射管发出的红外线由于人体手的摭挡反射到红外线接收管,通过集成线路内的微电脑处理后的信号发送给脉冲电磁阀,电磁阀接受信号后按指定的指令打开阀芯来控制水龙头出水;当人体的手离开红外线感应范围,电磁阀没有接受到信号,电磁阀阀芯则通过内部的弹簧进行复位来控制水龙头的关水。感应水龙头供电检测的功能实现主要通过英锐恩开发芯片PIC16F684。就是通过芯片程序检测感应水龙头供电情况。当芯片检测电池没有正常供电时,芯片会选
发表于 2020-03-08
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD.com.cn, Inc. All rights reserved