- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Zigbee术基础实验四
Zigbee技术基础实验搭建;Zigbee技术基础实验搭建;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技术基础实验搭建;Zigbee技术基础实验搭建;P1IEN寄存器使能或禁止P1口对应位的中断功能。向对应位写入0,则禁止其中断功能,向对应位写入1,则使能其中断功能。复位值为0x00,即默认为禁止所有位的中断功能。
PICTL(中断控制寄存器):;本实验使用的端口为P1,因此只需设置PICTL的第1位P1ICON为1,即下降沿触发。;P1IFG(P1口中断标志寄存器):; 本实验使用的端口为P1,因此只需设置IEN2的第4位P1IE为1,即使能P1口中断。;4. 中断的使用方法
为了使能任一中断功能,应当采取下列步骤:
l 清除中断标志。
l 如果有,则设置SFR 寄存器中对应的各中断使能位为1。
l 设置寄存器IEN0、IEN1 和IEN2 中对应的中断使能位为1。
l 设置IEN0 中的EA 位为1 使能全局中断。
l 在该中断对应的向量地址上,运行该中断的服务程序。;5. 实验相关函数:;/*****************************************
//io及LED初始化
*****************************************/
void Init_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
};;/*****************************************
//主函数
*****************************************/
void main(void)
{
Init_IO_AND_LED();
while(1)
{
};
};/*****************************************
//延时
*****************************************/
void Delay(uint n)
{
uint ii;
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++);
};#pragma vector = P1INT_VECTOR
__interrupt void P1_ISR(void)
{
if(P1IFG0) //按键中断
{
P1IFG = 0;
RLED = !RLED; //按键控制红色LED灯的亮灭
}
P1IF = 0; //清中断标志
};五、 实验步骤
1. 按要求连接好硬件,如实验一所示。
2. 打开IAR集成开发环境,建立工程和文件,写好代码后,编译、下载、运行
3. 观察实验现象。按下按键K1和K2,观察是否能够翻转LED灯HL6的亮灭状态。
六、 拓展思考
1. CC2531有哪些中断源?
2. 本实验中的中断属于哪一类中断源?;?在IAR编译器里用关键字来__interrupt来定义一个中断函数。用#pragma vector来提供中断函数的入口地址。
常规中断服务函数定义:
#pragma vector = T3_VECTOR????? //定时器 T3
__interrupt
文档评论(0)