单片机技术与C语言基础 课件 2.3 外部中断方式按键控制交通信号灯_第1页
单片机技术与C语言基础 课件 2.3 外部中断方式按键控制交通信号灯_第2页
单片机技术与C语言基础 课件 2.3 外部中断方式按键控制交通信号灯_第3页
单片机技术与C语言基础 课件 2.3 外部中断方式按键控制交通信号灯_第4页
单片机技术与C语言基础 课件 2.3 外部中断方式按键控制交通信号灯_第5页
已阅读5页,还剩89页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机与C语言技术应用第二单元

任务32.3外部中断方式按键控制交通信号灯学习目标01知识储备03任务工单

05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读08学习目标01掌握if-else条件语句的基本用法;掌握判断条件标志位进行逻辑控制;掌握单片机按键检测的基本原理;掌握按键控制相关端口寄存器设置方法;掌握查询方式按键处理的编程方法;掌握按键外部中断寄存器设置方法;掌握外部中断方式按键处理的编程方法。学习目标01能对CC2530单片机按键进行端口设置;能使用查询方法进行按键有效判断和按键处理;能对CC2530单片机外部中断寄存器进行设置;能使用外部中断方法进行按键有效判断和按键处理。学习目标01知识储备03任务工单

05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读082.3外部中断方式按键控制交通信号灯任务要求与任务分析02任务要求:①黑板通电后,D5绿色LED点亮(绿灯亮);②按一次SW1按键,D5绿色LED熄灭(绿灯灭);③再按一次SW1按键,D5绿色LED点亮(绿灯亮);④按键效果可循环。任务分析:中断方式SW1按键输入检测;每次按键操作,D5绿色LED由亮变灭或由灭变亮。学习目标01知识储备03任务工单

05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读082.3外部中断方式按键控制交通信号灯什么是中断中断源1234中断向量中断服务函数03知识储备

在生活中经常会遇到这样的情况:正在书房看书时,突然客厅的电话响了,人们往往会暂停看书,转而去接电话,接完电话后又回书房接着看书。这种暂停当前工作,转而去做其他事,做完后返回暂停处继续往下执行的现象称为中断。知识储备03知识储备03单片机也有类似的中断现象,当单片机正在执行main主程序时,突然出现一个中断请求;在中断请求允许的情况下,CPU会暂停正在执行的程序,对中断请求做出响应并执行中断服务程序;中断处理完毕后返回暂停处继续往下执行。这个暂停的地方称作断点。什么是中断中断源120334中断向量中断服务函数知识储备能发出中断请求且引起中断的装置或事件称为中断源。CC2530单片机共有18个不同类型的中断源,包括外部I/O口中断、定时器中断、串口发送和接收中断等。每个中断源都有一系列寄存器进行控制,且每个中断源对应一个中断,可以分别使能和控制。知识储备03什么是中断中断源120334中断向量中断服务函数33知识储备中断源发出的中断请求被CPU检测到之后,如果允许响应中断,则CPU会自动转移,执行某一个固定程序空间地址的指令。这个固定的地址称作中断入口地址,也称作中断向量。不同中断源有不同的中断入口地址,即不同的中断向量。CC2530单片机的18个中断源对应18个不同的中断向量,在头文件“ioCC2530.h”中已对这些中断向量进行宏定义,形成中断向量表。03知识储备

当开启某一类型的中断源时,必须编写中断服务函数,并为这中断服务函数指定中断向量,也就是告诉CPU这一类型的中断源触发时,将去执行哪一个中断服务函数。不同的中断源具有不同的中断服务函数。

本任务采用P1_2引脚连接SW1按键,对应P1端口中断源,其中断服务入口地址为0x7B,已在头文件“ioCC2530.h”中定义,具体如下:03知识储备#defineP1INT_VECTORVECT(15,0x7B)什么是中断中断源120334中断向量中断服务函数知识储备中断服务函数与一般自定义函数不同,有特定的书写格式,具体如下:03知识储备__interruptvoid<函数名称>(void){ /*开始编写代码*/}

“__interrupt”关键字表示该函数是一个中断服务函数,“函数名称”可以自定义。但为了识别方便,“函数名称”通常与中断源相关联,如P1端口的中断服务函数名称叫“P1_ISR”、定时器1的中断服务函数名称叫“T1_ISR”、串口1的中断服务函数名称叫“UART1_ISR”。函数体不能带有参数,也不能有返回值。03知识储备

在每一个中断服务函数之前,都要加上下面这条宏指令用于指定该中断服务函数对应哪个中断向量,具体如下:

该语句有两种写法,可以直接将“中断向量”用具体数值表示,或者用“ioCC2530.h”文件中的数值宏定义代替。如P1端口中断服务函数前面的宏指令编写方法为:

1.#pragmavector=0x7B或1.#pragmavector=P1INT_VECTOR

0x7B是P1端口中断源的入口地址,在头文件“ioCC2530.h”中已将数值0x7B宏定义为P1INT_VECTOR,也就是P1INT_VECTOR等效于0x7B数值。03知识储备#pragmavector=<中断向量>“__”为两个下划线“_”,编写代码时要注意,不要弄错。03知识储备系统中断总开关通用I/O中断触发条件56知识储备0378通用I/O中断处理流程通用I/O中断服务函数

EA作为CC2530单片机中断的总开关,可以控制单片机是否响应所有中断。EA置1开启中断总开关,EA置0关闭中断总开关。只有中断总开关开启且中断源触发中断标志都满足的条件下,单片机才会暂停当下的主程序而去执行中断源对应的中断服务函数。配置代码举例:03知识储备1.EA=1; //使能总中断2.EA=0; //关闭总中断

EA置0后,全部中断都停止响应;当要屏蔽某一确定的中断源时,一定要专门屏蔽这一确定中断源的中断响应开关,而不是使用EA来屏蔽;只有需要关闭全部中断时才将EA置0。03知识储备系统中断总开关通用I/O中断触发条件560378通用I/O中断处理流程通用I/O中断服务函数知识储备

CC2530单片机的P0、P1和P2端口中的每个引脚都具有外部中断输入功能,在使用之前,需要完成以下设置:(1)将通用I/O引脚设置为输入上拉模式通过对PxSEL、PxDIR、PxINP寄存器进行配置,将对应的I/O引脚设置为输入上拉模式。(2)选择I/O引脚中断的触发方式通过对PICTL寄存器进行配置,分组选择I/O引脚为上升沿或下降沿中断触发。03知识储备PICTL中断控制寄存器:03知识储备位位名称复位值操作描述7PADSC0RO控制I/O引脚在输出模式下的驱动能力,选择输出驱动能力来补偿引脚DVDD的低I/O电压(为了确保在较低电压下的驱动能力和较高电压下的驱动能力相同)设置为0:最小驱动能力增强,DVDD1/2等于或大于2.6V;设置为1:最大驱动能力增强,DVDD1/2小于2.6V。6:4—000RO保留03知识储备位位名称复位值操作描述3P2ICON0R/W端口2的P2_4~P2_0输入模式下的中断配置,该位为端口2的输入P2_4~P2_0选择中断请求条件设置0:输入的上升沿引起中断;设置1:输入的下降沿引起中断。2P1ICONH0R/W端口1的P1_7~P1_4输入模式下的中断配置,同上设置0:输入的上升沿引起中断;设置1:输入的下降沿引起中断。03知识储备位位名称复位值操作描述1P1ICONL0R/W端口1的P1_3~P1_0输入模式下的中断配置,同上设置0:输入的上升沿引起中断;设置1:输入的下降沿引起中断。0P0ICON0R/W端口0的P0_7~P0_0输入模式下的中断配置,同上设置0:输入的上升沿引起中断;设置1:输入的下降沿引起中断。PICTL寄存器的复位值为0x00,即复位后P0、P1、P2端口的所有引脚默认为上升沿中断触发。配置代码举例:(3)I/O引脚的中断使能通过对PxIEN寄存器进行配置,将端口对应的I/O引脚中断使能。03知识储备PICTL|=0x02; //设置P1端口的P1_3~P1_0引脚为下降沿中断触发PxIEN寄存器:03知识储备位位名称复位值操作描述7PxIEN[7]0R/W设置为0:Px_7中断禁止设置为1:Px_7中断使能6PxIEN[6]0R/W设置为0:Px_6中断禁止设置为1:Px_6中断使能5PxIEN[5]0R/W设置为0:Px_5中断禁止设置为1:Px_5中断使能4PxIEN[4]0R/W设置为0:Px_4中断禁止设置为1:Px_4中断使能03知识储备位位名称复位值操作描述3PxIEN[3]0R/W设置为0:Px_3中断禁止设置为1:Px_3中断使能2PxIEN[2]0R/W设置为0:Px_2中断禁止设置为1:Px_2中断使能1PxIEN[1]0R/W设置为0:Px_1中断禁止设置为1:Px_1中断使能0PxIEN[0]0R/W设置为0:Px_0中断禁止设置为1:Px_0中断使能表中的“x”是指要使用的端口组编号,例如要设置P1_2引脚中断使能,则选择P1IEN寄存器。PxIEN寄存器的复位值为0x00,即复位后各端口组内所有引脚中断禁止。配置代码举例:(4)I/O引脚对应的端口中断使能涉及P0端口引脚输入触发中断时,需要将P0端口中断使能,即将寄存器IEN1的P0IE置1;涉及P1端口引脚输入触发中断时,需要将P1端口中断使能,即将寄存器IEN2的P1IE置1;涉及P2端口引脚输入触发中断时,需要将P2端口中断使能,即将寄存器IEN2的P2IE置1。03知识储备P1IEN|=0x04; //使能P1_2引脚中断IEN1寄存器:03知识储备位位名称复位值操作描述7:6-00R0不使用,读出来为05P0IE0R/W端口0中断使能0:中断禁止1:中断使能4T4IE0R/W定时器4中断使能0:中断禁止1:中断使能3T3IE0R/W定时器3中断使能0:中断禁止1:中断使能IEN1寄存器:03知识储备位位名称复位值操作描述2T2IE0R/W定时器2中断使能0:中断禁止1:中断使能1T1IE0R/W定时器1中断使能0:中断禁止1:中断使能0DMAIE0R/WDMA传输中断使能0:中断禁止1:中断使能IEN1寄存器的复位值为0x00,即复位后P0端口中断禁止。配置代码举例:03知识储备IEN1|=0x20; //设置P0端口中断使能IEN2中断使能寄存器:03知识储备位位名称复位值操作描述7:6—00RO保留5WDTIE0R/W看门狗定时器中断使能设置为0:禁止

设置为1:使能4P1IE0R/WP1端口中断使能设置为0:禁止

设置为1:使能3UTX1IE0R/W串口1发送中断使能设置为0:禁止

设置为1:使能03知识储备位位名称复位值操作描述2UTX0IE0R/W串口0发送中断使能设置为0:禁止

设置为1:使能1P2IE0R/W端口2中断使能设置为0:禁止

设置为1:使能0RFIE0R/WRF一般中断使能设置为0:禁止

设置为1:使能IEN2寄存器的复位值为0x00,即复位后P1端口、P2端口中断禁止。配置代码举例:(5)系统中断总开关使能前面4个条件配置完成后,最后还需要将系统中断总开关使能,即将EA置1。03知识储备IEN2|=0x10; //设置P1端口中断使能系统中断总开关通用I/O中断触发条件560338通用I/O中断处理流程通用I/O中断服务函数37知识储备I/O引脚触发中断时,引脚中断状态标志以及引脚所对应的端口中断标志位将由硬件自动置1。当P0端口某个引脚触发中断时,P0IFG寄存器中对应的引脚中断状态位和IRCON寄存器中的P0端口中断标志位P0IF将被硬件自动置1;当P1端口某个引脚触发中断时,P1IFG寄存器中对应的引脚中断状态位和IRCON2寄存器中的P1端口中断标志位P1IF将被硬件自动置1;当P2端口某个引脚触发中断时,P2IFG寄存器中对应的引脚中断状态位和IRCON2寄存器中的P2端口中断标志位P2IF将被硬件自动置1。单片机检测到P0IF、P1IF、P2IF中的其中某一个或多个同时为1,将会调用通用I/O中断服务函数。知识储备03PxIFG寄存器:知识储备03位位名称复位值操作描述7PxIF[7]0R/WPx_7引脚中断状态标志读取为0:未发生中断读取为1:发生中断6PxIF[6]0R/WPx_6引脚中断状态标志读取为0:未发生中断读取为1:发生中断PxIFG寄存器:知识储备03位位名称复位值操作描述5PxIF[5]0R/WPx_5引脚中断状态标志读取为0:未发生中断读取为1:发生中断4PxIF[4]0R/WPx_4引脚中断状态标志读取为0:未发生中断读取为1:发生中断知识储备03位位名称复位值操作描述3PxIF[3]0R/WPx_3引脚中断状态标志读取为0:未发生中断读取为1:发生中断2PxIF[2]0R/WPx_2引脚中断状态标志读取为0:未发生中断读取为1:发生中断知识储备03位位名称复位值操作描述1PxIF[1]0R/WPx_1引脚中断状态标志读取为0:未发生中断读取为1:发生中断0PxIF[0]0R/WPx_0引脚中断状态标志读取为0:未发生中断读取为1:发生中断表中的“x”是指要使用的端口组编号,例如要确认是不是P1_2引脚触发中断,则读取P1IFG寄存器的值。PXIFG寄存器的复位值为0x00,即复位后各端口内所有引脚未发生中断。配置代码举例:知识储备031.P1IFG&=~(1<<2); //清除P1_2引脚中断状态标志位

IRCON寄存器:知识储备03位位名称复位值操作描述7STIF0R/W睡眠定时器中断标志0:无中断未决

1:中断未决6-0R/W必须写为0,写入1总是使能中断源5P0IF0R/W端口0中断标志0:无中断未决

1:中断未决4T4IF0R/W定时器4中断标志。当定时器4中断发生CPU指向中断向量服务例程时清除0:无中断未决

1:中断未决知识储备03位位名称复位值操作描述3T3IF0R/W定时器3中断标志。当定时器3中断发生时设为1并且CPU指向中断向量服务例程时清除0:无中断未决

1:中断未决2T2IF0R/W定时器2中断标志。当定时器2中断发生时设为1并且CPU指向中断向量服务例程时清除0:无中断未决

1:中断未决知识储备03位位名称复位值操作描述1T1IF0R/W定时器1中断标志。当定时器1中断发生时设为1并且CPU指向中断向量服务例程时清除0:无中断未决

1:中断未决0DMAIF0R/WDMA完成中断标志0:无中断未决

1:中断未决IRCON寄存器的复位值为0x00,即复位后P0端口无中断未决。配置代码举例:知识储备031.IRCON&=~(5<<1); //清除P0端口中断标志2.IRCON&=~(1<<1); //清除定时器1中断标志3.P0IF=0; //直接位操作清除P0端口中断标志4.T1IF=0; //直接位操作清除定时器1中断标志IRCON2寄存器:知识储备03位位名称复位值操作描述7:5-000R/W不使用,读出来为04WDTIF0R/W看门狗定时器中断标志0:无中断未决

1:中断未决3P1IF0R/W端口1中断标志0:无中断未决

1:中断未决IRCON2寄存器:知识储备03位位名称复位值操作描述2UTX1IF0R/WUXART1TX中断标志0:无中断未决

1:中断未决1UTX0IF0R/WUXART0TX中断标志0:无中断未决

1:中断未决0P2IF0R/W端口2中断标志0:无中断未决

1:中断未决IRCON2寄存器复位值为0x00,即复位后P0端口、P2端口无中断未决。配置代码举例:知识储备031.IRCON2&=~(1); //清除P2端口中断标志2.IRCON2&=~(<<1); //清除P1端口中断标志3.P2IF=0; //直接位操作清除P2端口中断标志4.P1IF=0; //直接位操作清除P1端口中断标志系统中断总开关通用I/O中断触发条件56知识储备0378通用I/O中断处理流程通用I/O中断服务函数P0端口的I/O引脚触发中断时,P0端口中断标志P0IF置1,单片机执行P0端口中断服务函数;P1端口的I/O引脚触发中断时,P1端口中断标志P1IF置1,单片机执行P1端口中断服务函数;P2端口的I/O引脚触发中断时,P2端口中断标志P0IF置1,单片机执行P2端口中断服务函数。因此,针对不同端口需要构建不同的端口中断服务函数,并在端口中断服务函数之前通过宏指令指向不同的中断向量。知识储备03P0以及P1端口中断服务函数配置代码举例:知识储备031.#pragmavector=P0INT_VECTOR //指向P0端口中断向量2.__interruptvoidP0INT_ISR(void) //定义P0端口中断服务函数3.{4.……5.}1.#pragmavector=P1INT_VECTOR //指向P1端口中断向量2.__interruptvoidP1INT_ISR(void) //定义P1端口中断服务函数3.{4.……5.}P2端口中断服务函数配置代码举例:同一端口的不同引脚触发中断时,单片机都会执行该端口中断服务函数。因此在端口中断服务函数里,需要对端口中已配置为具有中断触发功能的I/O引脚进行逐一判断、清除及执行相应的中断处理。端口中断服务函数处理流程如下:知识储备031.#pragmavector=P2INT_VECTOR //指向P2端口中断向量2.__interruptvoidP2INT_ISR(void) //定义P2端口中断服务函数3.{4.……5.}(1)读取中断状态标志寄存器PxIFG,判断端口中哪个引脚触发中断;(2)清除PxIFG寄存器中对应引脚的中断状态标志位,并根据对应引脚执行不同的中断处理;(3)需要对端口中已配置为具有中断触发功能的I/O引脚按照步骤(1)和(2)进行逐一判断、清除及执行相应的中断处理(4)清除端口中断标志PxIF;(5)中断返回。知识储备03假设P1端口中P1_0~P1_7都设置为中断触发功能,其端口中断服务函数配置代码如下:知识储备031.#pragmavector=P0INT_VECTOR //指向P0端口中断向量2.__interruptvoidP0INT_ISR(void) //定义P0端口中断服务函数3.{4.if((P1IFG&0x01)==0x01) //判断是否为P1_0引脚产生中断5.{6.P1IFG&=~0x01; //清除P1_0引脚中断状态标志位7.//执行P1_0引脚对应的中断处理8.}9.if((P1IFG&0x02)==0x02) //判断是否为P1_1引脚产生中断10.{11.P1IFG&=~0x02; //清除P1_1引脚中断状态标志位12.//执行P1_1引脚对应的中断处理13.}知识储备0314.if((P1IFG&0x04)==0x04) //判断是否为P1_2引脚产生中断15.{16.P1IFG&=~0x04 //清除P1_2引脚中断状态标志位17.//执行P1_2引脚对应的中断处理18.}19.if((P1IFG&0x04)==0x04) //判断是否为P1_3引脚产生中断20.{21.P1IFG&=~0x04; //清除P1_3引脚中断状态标志位22.//执行P1_3引脚对应的中断处理23.}24.if((P1IFG&0x10==0x10) //判断是否为P1_4引脚产生中断25.{26.P1IFG&=~0x10 //清除P1_4引脚中断状态标志位27.//执行P1_4引脚对应的中断处理28.}29.知识储备0329.if((P1IFG&0x20==0x20) //判断是否为P1_5引脚产生中断30.{31.P1IFG&=~0x20 //清除P1_5引脚中断状态标志位32.//执行P1_5引脚对应的中断处理33.}34.if((P1IFG&0x40==0x40) //判断是否为P1_6引脚产生中断35.{36.P1IFG&=~0x40 //清除P1_6引脚中断状态标志位37.//执行P1_6引脚对应的中断处理38.}39.if((P1IFG&0x80==0x80) //判断是否为P1_7引脚产生中断40.{41.P1IFG&=~0x80 //清除P1_7引脚中断状态标志位42.//执行P1_7引脚对应的中断处理43.}44.P1IF=0; //清除P1端口中断标志位45.}在P1端口的中断服务函数里,当P1端口的某些引脚没有中断触发功能时,则对应的引脚判断、清除及中断处理可以删除掉。本任务中,P1_2引脚连接SW1按键,当SW1按键按下时触发中断执行动作,因此本任务中只需保留P1_2引脚的判断、清除及中断处理。知识储备03学习目标01知识储备03任务工单

05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读082.3外部中断方式按键控制交通信号灯任务实施04●任务实施前必须先准备好以下设备和资源:序号设备/资源名称数量是否准备到位(√)1计算机(已安装好IAR软件)1台

2NEWLab实训平台1套

3CC-Debugger仿真器1套

4黑板1块

12任务实施04打开工程编写代码3编译工程4下载代码打开本书配套源代码文件夹中的“中断方式按键控制交通信号灯.ewp”工程。04任务实施12打开工程编写代码3编译工程4下载代码任务实施●步骤1:头文件包含04任务实施#include<ioCC2530.h>●步骤2:I/O引脚宏定义04任务实施1.#defineLed_Green P1_3 //P1_3引脚宏定义2.#defineSW1 P1_2 //P1_2引脚宏定义

本任务选择SW1按键作为输入,D5绿色LED作为输出,其中SW1按键连接P1_2引脚,D5绿色LED连接P1_3引脚,两个引脚宏定义的参考代码如下:步骤3:编写I/O引脚初始化函数本任务的I/O引脚初始化函数主要完成将P1_2和P1_3引脚设置为通用I/O口,将P1_2引脚设置为输入上拉引脚,将P1_3设置为输出引脚,具体实现代码如下:voidInitIO(void){P1SEL&=~0x0C;//设置P1_2和P1_3引脚为通用I/O引脚P1DIR|=0x08;//设置P1_4为输出引脚P1DIR&=~0x04;//设置P1_2为输入引脚P1INP&=~0x04;//设置P1_2引脚使用上拉或下拉P2INP|=0x40;//设置P1_2引脚为上拉模式}04任务实施步骤4:编写延时函数该延时函数的输入参数为n,对应的延时时长为n毫秒。1.voidDelay(unsignedintn)2.{3.unsignedinti,j;4.for(i=0;i<n;i++)5.{6.for(j=0;j<600;j++);7.}8.}04任务实施步骤5:编写按键中断初始化函数1)使能P1端口中断;2)使能P1_2引脚中断;3)设置P1_2引脚下降沿触发中断;4)使能总中断。1.VoidInitKeyINT(void) //按键中断初始化函数2.{3.IEN2|=0x10; //使能P1端口中断源4.P1IEN|=0x04; //使能P1_2引脚中断5.PICTL|=0x02; //设置P1_2引脚为下降沿中断触发6.EA=1; //使能总中断7.}04任务实施步骤6:编写按键中断处理函数04任务实施1.#pragmavector=P1INT_VECTOR //只要是P1端口外部中断都会进入此程序2.__interruptvoidP1_ISR(void)3.{4.

if((P1IFG&0x04)==0x04) //判断是否为P1_2引脚产生中断5.

{6.

Delay(10); //延时10毫秒软件去抖7.

if(SW1==0) //再次检测SW1按键是否按下8.

{9.Led_Green=~Led_Green;//D5绿色LED状态翻转10.

while(SW1==0); //等待按键松开11.

}、12.

P1IFG&=~(1<<2); //清除P1_2中断标志位13.

}14.

P1IF=0; //清除P1端口中断标志位15.}1.#pragmavector=P1INT_VECTOR //只要是P1端口外部中断都会进入此程序2.__interruptvoidP1_ISR(void)3.{4.

if((P1IFG&0x04)==0x04) //判断是否为P1_2引脚产生中断5.

{6.

Delay(10); //延时10毫秒软件去抖7.

if(SW1==0) //再次检测SW1按键是否按下8.

{9.Led_Green=~Led_Green;//D5绿色LED状态翻转10.

while(SW1==0); //等待按键松开11.

}、12.

P1IFG&=~(1<<2); //清除P1_2中断标志位13.

}14.

P1IF=0; //清除P1端口中断标志位15.}04任务实施1)通过宏指令“#pragmavector=P1INT_VECTOR”指定P1端口中断服务入口地址,该指令之后开始编写P1端口中断服务函数;2)用关键字“__interrupt”定义一个P1端口中断处理函数“voidP1_ISR(void)”,无输入参数和返回值;3)将寄存器P1IFG与0x04相与,相与的结果为0x04表示按键SW1触发中断,反之则不是。4)确认按键SW1按下触发中断后,软件延时消抖,再次读取SW1对应的电平值,判断是否为0;电平值为0表示当前按键按下有效,D5绿色LED状态翻转,等待按键松开;反之则表示按键动作无效;5)最后清除P1IFG寄存器中的P1_2引脚触发中断标志位P1IFG.PxIF[2]和P1端口中断标志位P1IF,中断返回。04任务实施本任务为了实现与本单元任务1相似的功能在中断服务函数里加入软件延时去抖,而实际工程应用则要求中断处理过程要要快进快出,通常CPU内部会集成硬件去抖功能,而不用在中断处理过程中通过软件延时去抖。04任务实施步骤7:编写main主函数1)调用I/O引脚初始化函数,完成I/O引脚输入输出以及上拉配置;2)调用按键中断初始化函数,设置P1_2引脚下降沿触发中断、P1_2引脚中断使能、P1端口中断使能、总中断使能;3)点亮D5绿色LED;4)进入无限循环,等待按键触发中断。04任务实施1.voidmain(void)2.{3.

InitIO(); //调用I/O口初始化函数4.

InitKeyINT(); //调用中断配置函数5.

Led_Green=1; //点亮D5绿色LED6.

while(1); //进入循环工作7.}1.voidmain(void)2.{3.

InitIO(); //调用I/O口初始化函数4.

InitKeyINT(); //调用中断配置函数5.

Led_Green=1; //点亮D5绿色LED6.

while(1); //进入循环工作7.}04任务实施12打开工程编写代码3编译工程4下载代码04任务实施对工程进行编译,观察是否提示编译成功。如果出现错误或警告,需要认真检查修改,重新编译链接,直到没有错误和警告为止。04任务实施12打开工程编写代码3编译工程4下载代码04任务实施(1)用CC-Debugger仿真器的下载线连接黑板;(2)完成代码下载;(3)SW1按键松开时,观察D5绿色LED状态是否翻转,即亮变灭或灭变亮。04任务实施学习目标01知识储备03任务工单

05任务要求与任务分析02任务实施04任务小结06知识与技能提升07延伸阅读082.3外部中断方式按键控制交通信号灯05任务工单本次任务关键知识引导:1.停止当前工作,转而去做其他工作,做

完后又返回原来暂停处继续执行的现象称为(

)。2.单片机正在执行主程序时,突然出现中断请求,需要停止当前正在执行的程序,转而去执行(

),行业内把暂停的位置叫做(

)。3.要让单片机的CPU暂停当下的程序转而去执行中断服务,需要向CPU发出(

),能发出中断请求、引起中断的装置或事件称为(

)。4.“ioCC2530.h”文件中定义了(

),用来指定中断服务程序的入口地址。5.将P1_2引脚配置为输入上拉模式,需要对(

)、(

)、(

)、(

)四个寄存器进行配置。6.I/O引脚的中断触发方式包括(

)和(

),(

)寄存器用来配置I/O引脚的中断触发方式,(

)寄存器用来配置P1_2引脚的中断使能,(

)寄存器用来配置P1端口的中断使能。7.P1端口某个引脚触发中断时,(

)寄存器对应引脚的中断标志位和P1端口中断标志位(

)都会被置(

),在中断服务程序里,都需要通过软件将它们置(

)。8.EA置(

)后,全部中断都停止响应。任务工单05各组选派代表分析本组任务实施经验;01添加标题请参照评价标准完成自评;02完成对其他小组的评价。03互评经验分享自评评价方式可采用自评、互评、老师评价等方式说明主要评价学生在项目学习过程中的操作技能、理论知识、学习态度、课堂表现、学习能力等。序号评价内容评价标准分值得分1知识运用(20%)掌握相关理论知识,完成本次任务关键知识的作答准确率(20分)20分

2专业技能(40%)工程编译通过,SW1按键按下时,D5绿色LED状态翻转正常。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论