200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 用 C学习51单片机——记录 4 中断系统 (1)外部中断

用 C学习51单片机——记录 4 中断系统 (1)外部中断

时间:2019-11-22 10:32:35

相关推荐

用 C学习51单片机——记录  4 中断系统 (1)外部中断

用 C学习51单片机——记录 4、中断系统

用 C 学习51单片机过程与自我拓展——记录(STC89C52芯片)

前言——其实51并不太难,多看 多写代码,多调试,就一定会有所感悟。

所以我在此留下一些代码以供自己重复记忆,也希望能够帮到你!

废话少说,来!🙂☞

四、中断系统

中断系统算是属于51的中级难度部分了,同时这也十分重要,所以大家一定学好一点!💪

简单认识:

1、中断系统包含三大类:外部中断、定时器中断和串口中断。

串口中断没有再分类,

外部中断和定时器中断又分为两小类(看下图):

2、中断系统具有优先级(看下图)

这次我们先来看看最简单的外部中断

(1)外部中断

外部中断0和外部中断1,它们除了中断优先性上有先后差别外,其使用上两者没有太多的差别。

下面我们先来看看外部中断0的使用:

程序说明:

1、我在里面列了3种不同的方式来触发外部中断0,请大家看清楚说明

2、注意中断函数里interrupt后面的数字,与上面列举的优先级后的数字相对应

#include <reg52.h>sbit s2 = P3^0;sbit flag = P3^2;sbit beep = P2^3;void delay (int z)//延时函数{int i,j;for(i=z;i>0;i--)for(j=114;j>0;j--);}void int0Init ()//中断0的初始化{EA = 1;//打开中断总开关EX0 = 1; //打开外部中断0开关IT0 = 0; //ITO为0,触发中断方式为P3^2为0//ITO为1,触发中断方式为下降沿触发}void main (){int0Init();//外部中断0初始化beep = 0; //按下S2前蜂鸣器一直鸣叫while(1){if (s2 == 0){delay(20); //消抖if(s2 == 0){/*方式一 、直接控制P3^2,触发中断*/flag = 0;flag = 1;/*方式二、直接P3控制^2产生下降沿触发中断*///flag = 1; //先置高P3^2// flag = 0; //置低P3^2产生下降沿//flag = 1; //拉高P3^2 结束中断(不能省略,否则只能中断一次)//注意:使用方式三前先把程序中的flag=P3^2改为 flag = P3^6 /*方式三、外部杜邦线P3^6连接P3^2使其为0触发中断*///flag = 0; //利用相连接,拉低P3^6来拉低P3^2 //flag = 0; //CPU运行速度快,要检测两次P3^2为0才行//flag = 1; //拉高P3^2 结束中断beep = 1;//关闭蜂鸣器,并不再响起while(!s2);//松手检测}}}}void int0 () interrupt 0 //外部中断0函数{P1 = ~P1; //通过打开流水灯显示中断的成功}

至于外部中断1的使用我就不多说了,

把上面的操作的IO口改为P3^3,把ET0改为ET1,IT0改为IT1,

程序最后一个中断程序的interrupt 0改为interrupt 1 就行了

希望这对大家有帮助!🤭

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。