嵌入式系统中断实验c语言,中断的实验现象
1.卡顿的流水灯我们用一个实验现象来再一次理解中断函数。在主函数里我们使八盏灯不停地左右快速流水,此时若是被外部因素触发了中断函数的执行,我们就在中断函数里实现蜂鸣器响一下,看看此时主函数里的流水灯是什么现象。代码下载进去,我们随意按K4,观察流水灯。#include#include//详见第六章第8讲voidmain(){u8i,dir;IT1=1;//下降沿触发模式EX1=...
1.卡顿的流水灯
我们用一个实验现象来再一次理解中断函数。
在主函数里我们使八盏灯不停地左右快速流水,此时若是被外部因素触发了中断函数的执行,我们就在中断函数里实现蜂鸣器响一下,看看此时主函数里的流水灯是什么现象。
代码下载进去,我们随意按K4,观察流水灯。#include
#include //详见第六章第8讲
void main()
{
u8 i,dir;
IT1 = 1; //下降沿触发模式
EX1 = 1;
EA = 1;
LED_Init();//初始化LED硬件模块
KEY_Init();//初始化按键功能模块
while(1)
{
if(i<8)dir=0;//向左移
if(dir==0)P0=~(0x01<
if(i>=8)dir=1;//向右移
if(dir==1)P0=~( 0x80>>(i-7) );//当i大于等于8之后,(i-7)其实也还是在1~7之间变化
delay_ms(50);
i++;
if(i>=15)i=1;//让i一直在1~14之间变化
}
}
//请把P3.3和P2.3用杜邦线连接起来
void EXTI1_IRQHandler() interrupt 2
{
u16 i;
u8 x;
for(i=0;i<2000;i++)
{
BEEP=!BEEP;
for(x=0;x<75;x++);
}
}
可以看到流水灯在K4按下的时候触发了中断函数的执行,蜂鸣器响了一下,响的过程中流水灯停止了流水,说明在主函数里的CPU使用权被剥夺给了中断函数,导致了主函数的执行任务被暂停,蜂鸣器响完之后,也就是中断函数执行完了,CPU使用权给回了主函数,于是又接着执行流水灯的任务了,这些过程叫做保留现场和恢复现场。
2.中断的好处
我们再来领略一下中断的优势。
把下面的代码下载进去,蜂鸣器会一直响,然后随意按K4。#include
#include //详见第六章第8讲
void main()
{
u8 x;
IT1 = 1; //下降沿触发模式
EX1 = 1;
EA = 1;
LED_Init();//初始化LED硬件模块
KEY_Init();//初始化按键功能模块
LED2=0; //点亮LED2
while(1)
{
BEEP=!BEEP;
for(x=0;x<75;x++);
}
}
//请把P3.3和P2.3用杜邦线连接起来
void EXTI1_IRQHandler() interrupt 2
{
static u8 i=1;
P0=~(0x01<
i++;
if(i>=8)i=0;
}
试想,我们没学过中断函数,在前面几章的基础知识中只在主函数里实现蜂鸣器一直响,然后按键还可以切换小灯的跳转,这样的功能我们可以做得到吗,我想应该有点难度。所以在中断函数的帮助下有种任务并列执行的优势。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐

所有评论(0)