- 0
- 0
- 约2.57千字
- 约 33页
- 2026-02-02 发布于湖南
- 举报
《无线传感网技术与应用》;;【任务能力目标】;【任务描述】;【任务分析】;1中断概述;【知识储备】;CC2530共18个中断源
中断请求可以通过设置中断使能寄存器IEN0、IEN1或IEN2的中断使能位使能或禁止中断
当相应的中断源使能并发生时,中断标志位将自动置1,然后程序跳往中断服务程序的入口地址执行中断服务程序。待中断服务程序处理完毕后,由硬件清除中断标志位。;interruptenable中断使能;中断使能寄存器;中断使能寄存器;中断向量;1中断概述;外部中断:即从单片机的I/O口向单片机输入电平信号,当输入电平信号的改变符合设置的触发条件时,中断系统便会向CPU提出中断请求。;外部中断使能步骤;相关寄存器配置;相关寄存器配置;;;中断函数;/*S1中断处理函数*/
#pragmavector=P0INT_VECTOR
__interruptvoidP0_ISR(void)
{
DelayMS(10);//延时去抖
LED1=~LED1;//改变LED1状态
P0IFG=0;//清中断标志
P0IF=0;//清中断标志
};任务:按键中断控制LED;任务流程图;1创建工程
复制任务1工程,重命名为“项目三_task02”。
【小技巧】:创建新工程时,通常拷贝已经构建好的工程,这种方法可以省略工程的配置。复制工程以后,可以按照下面步骤修改工程文件名称。
第一步:修改工程名称。打开工程目录,将工程文件夹下后缀为“dep、ewd、ewp、eww”的四个文件重命名为目标名称,如图3-2-3所示。;第二步:修改工程内容。用编辑器(记事本或者写字板)打开“eww”后缀的文件,修改目的路径的“KEY.ewp”为目标名称,如图3-2-4所示。;(1)打开main.c文件,定义LED初始化函数,添加代码如下:
/*LED初始化函数*/
voidInitLed(){
P1SEL=~0x13;//P1.0和P1.1和P1.4设置为通用I/O
P1DIR|=0x13;//P1.0和P1.1和P1.4设置为输出
LED1=LED2=LED3=1;//初始状态LED1点亮(低电平点亮)
};/*按键初始化函数*/
voidInitKey()
{
P0SEL=~0X02;//设置SW1为普通IO口
P0DIR=~0X02;//设置SW1为输入引脚
/*按钮SW1(P0_1)配置成采用中断的方式进行控制,上拉输入模式,下降沿触发中断*/
P0INP=~0X02;//设置SW1为上下拉模式
P2INP=~0x20;//设??SW1所属端口为上拉
IEN1|=0X20;//使能SW1/P0端口组中断源
P0IEN|=0X02;//使能SW1端口外部中断
PICTL|=0X01;//下降沿触发;PICTL中断边缘寄存器
EA=1;//打开总中断
};************按键SW1(P0.1)中断服务子程序**************/
#pragmavector=P0INT_VECTOR//指定P0组的中断向量
__interruptvoidEXTI1_ISR()//定义中断服务函数
{
//检查端口0中断标志寄存器(P0IFG)的第2位,看按键SW1是否触发了中断
if(P0IFG0x02)
{
if(SW1==0)//确实是SW2按钮触发了外部中断(按键按下为低电平)
light_state++;
light_state%=2;//流水灯状态变量在0和1之间循环
}
//中断标志位清0
P0IFG=~(0X11);//清除端口0上第1位(P0_1)的中断标志,即SW1的中断标志
IRCON=~(0x15);//清P0端口组中断标志第5位为0代表端口0组中断标志位被清除
};/*main函数*/
voidmain(void)
{
InitLed();
InitKey();
while(1){
if(light_state==1){
/
原创力文档

文档评论(0)