1. 程式人生 > >ZigBee協議棧開發(二)

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|=0x01

P0組設定成下降沿觸發,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 裡一般寫到感測器檔案中。