您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 房地产 > Zigbee技术基础实验四
Zigbee技术基础实验搭建实验四外部中断实验一、实验目的1.掌握CC2531外部中断的使用方法。2.了解CC2531中断寄存器的配置。二、实验设备lZigBee模块lJTAG仿真器l电源适配器lIAR集成开发环境三、实验内容使用两个按键K1和K2产生中断信号,翻转LED灯的状态。这里两个按键不是做键盘用,而是产生中断触发信号。Zigbee技术基础实验搭建四、实验原理1.中断:CPU有18个中断源。每个中断源都有它自己的位于一系列SFR寄存器中的中断请求标志。相应标志位请求的每个中断可以分别使能或禁用。中断分别组合为不同的、可以选择的优先级别。有关中断的详细内容,请参考阅读CC253x数据手册第2.5节。2.硬件原理:(如图4-所示)按键SB2连接CC2531的管脚P1_1。不按下按键SB2时,管脚P1_1为高电平3.3V,即逻辑1。按下按键SB2时,管脚P1_1由高电平3.3V变为低电平0V,即由逻辑1变为逻辑0。CC2531有21个可编程的I/O口引脚,P0、P1口是完全的8位口,P2口只有5个可使用的位(P2_4,P2_3,P2_2,P2_1,P2_0),全部21个数字I/O口引脚都具有响应外部中断的能力。如果需要响应外部设备,可对I/O口引脚产生中断,同时外部中断事件也能被用来唤醒休眠模式。Zigbee技术基础实验搭建Zigbee技术基础实验搭建图4-1按键原理图把P1_1配置为输入,并且使能P1_1的外部中断功能,将中断设置为下降沿触发,则按下按键时触发P1_1的外部中断。SB3的工作原理同SB2。Zigbee技术基础实验搭建图4-LED原理图图4-2为LED原理图,LED灯HL7的阴极连接管脚P0_5,当P0_5为0时,LED灯HL7亮,当P0_5为1时,LED灯HL7灭。Zigbee技术基础实验搭建3.实验相关寄存器:实验中操作了的寄存器有P0,P2(实验一),P1SEL(实验二),P0DIR(实验一),P1DIR(实验三),P1INP(实验二),P1IEN,PICTL,P1IFG,IEN0,IEN2,等寄存器。3.1P1IEN(P1口中断使能寄存器):P1IEN寄存器使能或禁止P1口对应位的中断功能。向对应位写入0,则禁止其中断功能,向对应位写入1,则使能其中断功能。复位值为0x00,即默认为禁止所有位的中断功能。PICTL(中断控制寄存器):本实验使用的端口为P1,因此只需设置PICTL的第1位P1ICON为1,即下降沿触发。1.P1IFG(P1口中断标志寄存器):1.IEN2(中断使能寄存器2):本实验使用的端口为P1,因此只需设置IEN2的第4位P1IE为1,即使能P1口中断。4.中断的使用方法为了使能任一中断功能,应当采取下列步骤:l清除中断标志。l如果有,则设置SFR寄存器中对应的各中断使能位为1。l设置寄存器IEN0、IEN1和IEN2中对应的中断使能位为1。l设置IEN0中的EA位为1使能全局中断。l在该中断对应的向量地址上,运行该中断的服务程序。5.实验相关函数:#includeioCC2530.h#defineYLEDP2_0//定义LED1为P2_0口控制#defineRLEDP0_5//定义LED2为P0_5口控制#defineucharunsignedchar#defineuintunsignedint/*****************************************//函数声明*****************************************/voidDelay(uintn);/*****************************************//io及LED初始化*****************************************/voidInit_IO_AND_LED(void){P2DIR|=0x01;P0DIR|=0x20;RLED=1;YLED=0;//黄灯亮表示系统开始工作P1IEN=0X03;//开P1_0,P1_1中断掩码PICTL=0X02;//P1下降沿触发EA=1;//开总中断IEN2|=0X10;//P1IE=1;P1IFG|=0x00;//中断标志初始化位0};函数功能:将I/0P0_5设置为输出,去控制红色LED灯,使能P1_0和P1_1中断,且配置为下降沿触发。/*****************************************//主函数*****************************************/voidmain(void){Init_IO_AND_LED();while(1){};}main()函数功能是实现了使用两个按键来翻转红色LED灯的状态。/*****************************************//延时*****************************************/voidDelay(uintn){uintii;for(ii=0;iin;ii++);for(ii=0;iin;ii++);for(ii=0;iin;ii++);for(ii=0;iin;ii++);for(ii=0;iin;ii++);}#pragmavector=P1INT_VECTOR__interruptvoidP1_ISR(void){if(P1IFG0)//按键中断{P1IFG=0;RLED=!RLED;//按键控制红色LED灯的亮灭}P1IF=0;//清中断标志}函数功能:在P1_0,P1_1触发中断的时候将红色LED灯的状态翻转。五、实验步骤1.按要求连接好硬件,如实验一所示。2.打开IAR集成开发环境,建立工程和文件,写好代码后,编译、下载、运行3.观察实验现象。按下按键K1和K2,观察是否能够翻转LED灯HL6的亮灭状态。六、拓展思考1.CC2531有哪些中断源?2.本实验中的中断属于哪一类中断源?在IAR编译器里用关键字来__interrupt来定义一个中断函数。用#pragmavector来提供中断函数的入口地址。常规中断服务函数定义:#pragmavector=T3_VECTOR//定时器T3__interruptvoidT3_ISR(void)
本文标题:Zigbee技术基础实验四
链接地址:https://www.777doc.com/doc-3093730 .html