<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于LPC900單片機的射頻數傳模塊開(kāi)發(fā)

基于LPC900單片機的射頻數傳模塊開(kāi)發(fā)

作者: 時(shí)間:2011-08-04 來(lái)源:網(wǎng)絡(luò ) 收藏

  2.2.1 程序中的關(guān)鍵字

  在進(jìn)行程序設計時(shí)不能使用C51編譯器的關(guān)鍵字來(lái)定義變量名或者函數名。C51是區別大、小字母的,而關(guān)鍵字都是小寫(xiě)字母。

  一些函數定義從字面上看沒(méi)有問(wèn)題,但在編譯時(shí)均指示錯誤,查看C51關(guān)鍵字有關(guān)目錄,查出原因在于變量參數data為其關(guān)鍵字,造成了編譯時(shí)的錯誤。

  下面列出了一些常用的關(guān)鍵字,在程序設計時(shí)定義變量或函數名時(shí)應特別注意避免使用:

  _at_,alien,bdata,bit,code,data,idata,large,pdata,sbit,sfr,sfrl6,smal,task,using,xdata,priority。

  2.2.2 BIT和SBIT的區別和全局變量、局部變量的使用

  bit主要用位變量操作。sbit雖然也是用于位變量的操作,但其使用范圍較bit更廣泛。sbit不僅可以用于定義可位尋址寄存器的各個(gè)位,使我們可以對寄存器進(jìn)行位操作,sbit的另一個(gè)重要作用在于構建類(lèi)似于共用體數據類(lèi)型,這種數據類(lèi)型在LPC922與CC1000的串行/并行數據相互轉換中起著(zhù)重要的作用。例如:

  unsigned char bdata myDatas2;//定義一個(gè)可位尋址的全局變量

  //定義變量的各個(gè)位

  sbit cDatas0=myDatas2^O;

  sbit cDatasl=myDatas2^l;

  sbit cDatas2=myDatas2^2;

  sbit cDatas3=myDatas2^3;

  sbit eDatas4=myDatas2^4;

  sbit eDatas5=myDatas2^5;

  sbit cDatas6=myDatas2^6;

  sbit cDatas7=myDatas2^7;

  在這里myDatas2既可以作為一個(gè)8位的變量使用,同時(shí)各個(gè)位也可以單獨使用,這在串/并數據轉換的場(chǎng)合是很有用的。特別需要注意的是,myDatas2這個(gè)可位尋址變量必須以全局變量的形式予以定義,如果定義為局部變量,編譯器也將產(chǎn)生錯誤。

  2.2.3 UART通訊和函數調用

  在進(jìn)行硬件仿真時(shí),需要進(jìn)行LPC922與PC機之間的UART串行通信,這樣可以把有關(guān)調試信息直觀(guān)地顯示在超級終端上。初期一直存在無(wú)法通信問(wèn)題,為此調試了有關(guān)串口讀寫(xiě)的底層代碼。

  原來(lái)的單片機與PC機串口通訊寫(xiě)程序如下:

  原來(lái)的UART寫(xiě)字符串函數writeln是通過(guò)調用putchar函數來(lái)進(jìn)行的,但在硬件仿真時(shí)一直出錯,當把這部分程序單獨分離出來(lái)進(jìn)行仿真時(shí),卻未出現問(wèn)題。后來(lái)分析考慮推想可能原因是:C51由于內部堆??臻g的限制,在函數調用時(shí),提供的是一種壓縮棧,每個(gè)過(guò)程被給定一個(gè)空間用于存放局部變量,過(guò)程中的每個(gè)變量都存放在這個(gè)空間的固定位置,當多重調用或者遞歸調用這個(gè)過(guò)程時(shí),會(huì )導致變量被覆蓋而出錯。此時(shí)應把該函數定義為可重入函數,但是再入函數因為要做一些特殊的處理,一般運行起來(lái)都比較慢。在這個(gè)程序中寫(xiě)UART操作對函數putchar調用時(shí),程序的其他部分也在調用該函數,覆蓋了傳遞給putchar函數的參數,導致程序運行出錯。于是對程序做了修改如下:

  修改過(guò)的程序與原來(lái)程序差別在于不再進(jìn)行putchar函數調用,而直接進(jìn)行有關(guān)操作。修改后再進(jìn)行硬件仿真,問(wèn)題得到了很好的解決。由此可以看到,由于內部堆棧資源有限,在程序設計時(shí)當發(fā)現程序運行異常時(shí),應特別注意函數調用帶來(lái)的問(wèn)題。當然出現這個(gè)問(wèn)題還可能會(huì )有其他方面的原因。

  2.2.4 看門(mén)狗

  當系統處于一些比較惡劣環(huán)境(工控、底層采集等),如果系統的抗干擾沒(méi)有做好,則容易出現"死機"現象,這時(shí)硬件電路并沒(méi)有損壞,只是內部程序運行出現錯誤,必須復位才能恢復,這時(shí)可用"看門(mén)狗"來(lái)解決問(wèn)題??撮T(mén)狗定時(shí)器子系統可通過(guò)復位使系統從錯誤的操作中恢復。但是任何事情都有其兩面性,當軟件沒(méi)能在定時(shí)器溢出之前將其清零或者重新賦值,看門(mén)狗定時(shí)器就會(huì )導致系統產(chǎn)生一次復位,從而產(chǎn)生錯誤。

  仿真開(kāi)發(fā)板上采用的是LPC922,因此對其復位時(shí)的有關(guān)看門(mén)狗的寄存器進(jìn)行了具體分析,最后發(fā)現問(wèn)題是由于沒(méi)有在一定的時(shí)間內及時(shí)對看門(mén)狗進(jìn)行重新的配置參數造成的。通過(guò)對WDCON,WDL,WFEED1,WFEED2這4個(gè)與看門(mén)狗有關(guān)的寄存器進(jìn)行合理配置,很好地解決了程序復位問(wèn)題。

  2.2.5 LPC900讀操作和CC1000寄存器讀寫(xiě)

  LPC900系列單片機通常也具有51單片機的一些特點(diǎn),在使用時(shí)也應注意。當其I/O口作為輸入口使用時(shí),有2種工作方式,即讀端口和讀引腳。讀端口實(shí)際上并不從外部讀入數據,而只是把端口鎖存器的內容讀到內部總線(xiàn),經(jīng)過(guò)某種運算或者變換后,再寫(xiě)回到端口鎖存器。

  讀引腳時(shí)才真正地把外部的數據讀入到內部總線(xiàn)。這時(shí)要先通過(guò)指令,把端口鎖存器置1,然后再進(jìn)行讀引腳操作,否則就可能讀錯。在LPC922讀寫(xiě)CC1000寄存器過(guò)程中涉及到有關(guān)讀引腳操作問(wèn)題,應區別這2種工作方式。

  3 結語(yǔ)

  在本文介紹的開(kāi)發(fā)平臺上利用LPC900系列單片機實(shí)現了根據不同的應用需要對射頻模塊上CC1000寄存器進(jìn)行有效的參數讀寫(xiě)配置控制,初步達到了設計要求。對軟件開(kāi)發(fā)中所遇到問(wèn)題的分析討論,在LPC900系列單片機的應用開(kāi)發(fā)中也具有較廣泛的實(shí)際意義。

  


上一頁(yè) 1 2 下一頁(yè)

關(guān)鍵詞: LPC900單片機 射頻數傳模塊

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>