ZigBee协议栈开发(二)

1、掌握ZigBee无线模块基本工作电路(官方):

在实际做东西的时候要加一些其他的东西,让我们更好地应用这个基本电路。

复位电路:20脚如下接(1us低电平)

程序下载电路(五根线):

2、随心所欲的控制io的输入输出

40脚,但芯片背面有额外的一个接地脚。

共有21个通用io口,分为三组,p0,p1,p2。其中P0\P1组各八个IO,P2只有五个。这些口都可以作为普通io口,有些口有片上外设的功能,其中P1_0、P1_1有20mA的输出驱动能力,其余只有4mA。

输出配置:

1需要让P1_0处于普通io口模式,非片上外设模式P0SEL,P1SEL,PP2SEL寄存器决定)P1SEL的第0位为0即可 P1SEL &=0xFE;强行清零第零位

2)让P1_0处于输出状态,非输入状态(P0DIR,P1DIR,P2DIRP1DIR的第0位为1即可

P1DIR |= 0x01强行置1第零位

(3)输出高低电平(P1_0=1

注:默认P1SEL都是0,有时作为普通io时不写这个寄存器

输入配置:

(1)需要让P1_0处于普通io口模式,非片上外设模式P0SEL,P1SEL,PP2SEL寄存器决定)P1SEL的第0位为0即可 P1SEL &=0xFE;强行清零第零位

(2)P1_0处于输入状态,非输出状态

(3)P1_0处于上拉,下拉,或三态中的一种状态(PxINP寄存器决定)P1INP的第0位置1就可以把P1_0设置成三态。置0则是上下拉,P2INP高三位决定三组是上拉还是下拉,0表示上拉,1表示下拉。

注:ADC采集时一定要用三态,默认寄存器都是零,所以默认io口为普通上拉输入io口,需要根据实际需要更改。

代码编写位置:在使用 io 之前都要先设置一下。任何地方。


外部中断初始化配置:

设置io口工作方式

开组中断:P0组:P0IE=1P1组:IEN2|=0x10P2组:IEN2|=0x02

开脚中断:P0IEN|=0x01,P1IEN|=0x01,P2IEN|=0x01;某位设置为1代表开启此位中断

设置中断方式(上升沿、下降沿):PICTL|=0x01P0组设置成下降沿触发,PICTL |=0x02P1组前四位设置为下降沿触发,PICTL |=0x04P1组后四位设置为下降沿触发,PICTL |=0x08P2五位设置为下降沿触发。

开总中断:EA=1

中断函数的编写:

固定格式:

#pragmavector=PxINT_VECTOR

__interrupt  void fn()

{

If(PxIFG & 0x20)//中断标志与0010 0000相与

{//Px第五位发生中断

中断发生处理函数;

}

PxIFG=0;  // 中断标志清零

PxIF=0;     //中断标志位清零

}

一般写到需要中断的相关函数下面。 ZigBee 里一般写到传感器文件中。