2019-07-15 23:43发布
ベ箬☆絕 发表于 2013-7-15 09:07 看不懂的就是为什么要那样写 只有死啃了我
dongyumin 发表于 2013-7-15 10:33 死啃也是学习的过程,能力提高了会形成自己的思路的。不要着急。
最多设置5个标签!
看不懂代码,只要你懂C语言语法,看不懂代码是不应该的,不懂的只是程序逻辑。我的方法,硬着头皮看,一便有一遍的收获,然后试着理解后自己敲一遍。
你好,我来用自己的话给你理一理,希望可以帮到你!
1.中断的理解
中断(interrupt),从字面上理解就是被中断,被打断的意思。比如,你正在写作业,突然有人敲门,你就要停止做作业,把作业的位置做个标记,然后去给开门,之后你根据做好的标记,继续写作业。程序也是这样,正常情况下,cpu顺序执行main函数里面的代码,从第一条代码到执行到最后一条代码,然后又返回到第一条代码往下执行,这样一直循环。突然cup接到中断请求(有人敲门),cpu就暂停当前执行的代码(停止做作业),做现场保护(把作业做标记),然后去执行中断代码(开门),执行完中断代码后,返回继续从被中断处往下执行正常代码(开完门继续做作业)。
2.单片机的中断源
中断源就是可以打断cup正常做事的东西。单片机有5个中断源,外部中断0(INT0),定时器0(Timer0),外部中断1(INT1),定时器1(Timer1),串口中断。
外部中断(INT0和INT1):简单理解就是通过外部输入来触发中断。
定时器中断(TImer0和Timer0):简单理解就是通过定时器,定时触发中断。
串口中断 :简单理解就是当接收到外部数据时触发中断。
3.怎样使用中断(以外部中断0为例)。
单片机有两个外部中断引脚,P3.2(对应INT0)和P3.3(对应INT1)。当这两个引脚出现低电平,或者下降沿时,就可以就触发单片机外部中断。
第一步,中断配置
/************************************************************
函数名 : INT0_Config
功能 :配置单片机与中断相关的硬件,让单片机能够正常检测中断和执行中断代码。
输入参数:
输出参数 :
************************************************************/
void INT0_Config(void)
{
IT0=1;//中断触发方式,IT0=0,低电平触发,INT0=1下降沿触发(下降沿就是由高电平向低电平的跳变);
EX0=1;//外部中断0的中断开关,每个中断源都有自己的中断开关。
EA=1;//打开总中断,如果总中断不打开,就是其他中断开关被打开,单片机也不能执行中断。
}
第二步,中断服务,也就是cpu被中断后所要做的事。
/************************************************************
函数名 : Isr_INT0
功能 :中断服务
输入参数:
输出参数 :
************************************************************/
void Isr_INT0() interrupt 0 //这里的interrupt表明这个函数是中断函数,后面的标号表示是哪一个中断源产生的中断。(INT0)为0,
//Timer0为1,INT1为2,Timer3,串口中断为4。
{
// Add your code here
}
第三部 主函数
/************************************************************
函数名 : main
功能 :主函数
输入参数:
输出参数 :
************************************************************/
void main()
{
INT0_Config();//调用这个函数来配置外部中断
while(1)
{
//Add your code here
//CPU一直在这里循环的执行代码,一旦发生中断,就停下来去执行中断函数Isr_INT0() interrupt 0,执行完成后,返回从断点处继续往下执行原
来的 代码。
}
}
死啃也是学习的过程,能力提高了会形成自己的思路的。不要着急。
也许是我心急了 嘿嘿
一周热门 更多>