婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av

電子開發網

電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 嵌入式系統 >> PIC單片機 >> 正文

PIC單片機的應用設計技巧

作者:佚名    文章來源:網絡    點擊數:    更新時間:2008/11/3
    美國微芯公司(Microchip Technology Inc.)開發的CMOS工藝PIC系列8位單片機(RISC微控制器),特別是采用內置第二代Flash存儲器(40年存儲壽命)的微控制器在快速應用方面具有獨到之處。由于其易用性和高可靠性,該系列微控制器穩居8位單片機全球出貨量之首。PIC系列單片機具有指令集簡潔、簡單易學、速度高、功能強、功耗低、價格低廉、體積小巧、適用性好及抗干擾能力強等特點,大量應用于汽車電氣控制、電機控制、工業控制儀表和儀表、通信、家電、玩具、低功耗的測控應用等領域,在國內越來越受到廣大設計者的歡迎,微芯公司的單片機已經成為目前單片機世界的主流產品。
    PIC 8位單片機內已經包含運算器、存儲器、A/D、PWM、輸入和輸出I/O(灌電流可達25 mA)、通信等常用接口,自由靈活的定義功能可以適應不同的控制要求,而不必增加額外的IC芯片。這樣電路結構很簡單,開發周期將大為縮短。
    PIC16系列單片機屬于PIC 8位單片機的中級型產品,采用14位的RISC指令系統。筆者使用PIC16F716單片機設計了一個電動機保護器,在設計過程中遇到很多問題,通過多方查找資料以及向Microchip公司技術人員尋求支持,問題一一得到解決。現將部分問題記錄如下,與大家一起探討。

1 ICD2作為程序燒寫的使用
1.1 ICD2簡介
    MPLAB ICD2在線調試器是一款低價位的PIC開發工具。它利用Flash工藝芯片的程序區自讀寫功能來實現仿真器調試功能;使用的軟件平臺是Microchip的MPLAB IDE(集成開發環境軟件包),兼容Windows NT、Windows 2000和Windows XP等操作系統。其通信接口方式可以是USB(最高可達2 Mb/s)或RS-232串行接口方式;工作電壓范圍為2.0~5.5 V,可支持最低2.0 V 的低壓調試.
    MPLAB ICD2可以支持大部分Flash工藝的芯片。它不僅可以用作調試器,同時還可以作為開發型的燒寫器使用。

1.2 ICD2作為燒寫器時的配置
    燒寫芯片的方式有兩種:普通燒寫和在線燒寫。在線燒寫是適合大批量生產方式的燒寫辦法。使用在線燒寫時通常用戶都已經把芯片焊到了板上,此時就要求用戶板上有預留的燒寫接口。用戶板上的接口是通過一條6芯的扁平電纜與ICD2主機上同樣的接口一一對應連接的。圖1顯示了MPLAB ICD2與目標板上模塊連接插座的互連狀況。
MPLAB ICD2與目標板的連接  
    ICD連接插座有6個引腳,但只使用了其中的5個引腳,分別是VDD(電源)、Vss(地)、Vpp(編程電壓)、PGC(同步時鐘)和PGD(數據)。

1.3 ICD2作為燒寫器時容易出現的問題及解決方法
     盡管MPLAB ICD2與目標板的互連非常簡單,但是一不小心就會出現問題,基本上每一個PIC的入門者都會碰到類似的問題。下面就一些常見問題作簡要敘述。
    如圖1所示,在Vpp與VDD之間通常要串接一個上拉電阻(通常約為10 kΩ),這樣Vpp線可置為低電平來手動復位PICmicro單片機。但是對一般設計者來說,都是采用上電自動復位。如果在這里采用集成器件DMP809,那么就會導致連接不上,程序沒有辦法燒入。
    對于PGC、PGD兩根線,由于在ICD2內部已經進行了上拉,所以在外圍設計中,不要再進行上拉,否則會造成分壓。對于PGC、PGD和Vpp三根線,不要對地接電容,因為電容會阻礙在數據和時鐘線上電平的快速轉換,從而影響ICD2與目標板的連接。同樣對于PGC、PGD,由于數據或時鐘都是雙向傳輸的,這時如果在中間串一個二極管,則會影響ICD2與單片機的雙向通信。
    但是,對PGC和PGD來說,在單片機上同時復用為普通I/O 口,而有些使用上必須要接對地電容或者是串接二極管。對于這種情況,唯一的處理方式就是在燒寫時從芯片的PGC和PGD端口直接跳線到程序燒寫口。

2 A/D轉換通道切換問題
    筆者所設計的電動機保護器需要進行很多A/D轉換,比如三相電流轉換、零序電流轉換以及各種定位器等。但是筆者所采用的PIC16F716單片機只有5路A/D轉換通道,因此附加了一個多位選擇開關對一個A/D通道進行復用。而在調試中發現這樣一個問題,就是A/D轉換值不準確,甚至有點亂,但從程序流程以及代碼角度均查不出任何問題。后查明PIC16F716單片機進行A/D轉換通道切換時,需要一定的延時,延時時間是毫秒級。解決辦法是:在通道間切換時,當第一個通道轉換完成后,先轉到另一個通道;然后延時1 ms左右,再進行A/D轉換。而對同一個通道信號切換時,要在第一個信號轉換完成后,禁止信號輸入,延時1 ms左右;然后輸入信號,再進行A/D轉換。
    這種做法比較麻煩,也很占用時間,并且從調試結果來看,問題并沒有解決。在反復進行調試中,最后得到的優化解決辦法是:對于通道間轉換以及同一通道信號轉換,要對每一個信號至少進行兩次A/D轉換;第一次的轉換結果,舍棄不予處理,只取第二次A/D轉換的結果。從調試結果來看,很好地解決了這一問題。

3 軟件開發小技巧
    PIC單片機采用精簡指令集,例如對于PIC16F716單片機,只有35條單字節指令。要用這么少的指令實現復雜的控制或計算,顯然要在軟件設計上多下功夫,并且PIC的指令系統與51系列單片機有很大不同,這讓PIC初學者很不適應。下面筆者就自己的體會,談一些軟件設計需要注意的問題。

3.1 指令的大小寫問題
    編寫PIC單片機的源程序,除了源程序的開始處需要嚴格的列表指令外,還須注意源程序中字母符號的大小寫規則,否則在PC機上匯編程序時不會成功。在源程序中都會使用偽指令INCLUDE。這條指令將列表中指定的單片機文件(在MPLAB中)讀入源程序作為源程序的一部分,所以凡是MPLAB中有關該單片機已有的寄存器在源程序中無需再用賦值指令(EQU)賦值,這就使所建立的源程序大為簡化。
    此外,由于有了偽指令INCLUDE,所以根據MPLAB軟件中的格式,在源程序中的操作數凡是涉及MPLAB已規定的寄存器名稱的,其字母一律只能大寫,不能小寫。其余操作碼、符號字母可任意大小寫,但0x中的X應小寫,否則匯編不會成功。鑒于上述原因,為了書寫方便,在使用MPLAB軟件時,PIC單片機的源程序均用大寫字母為宜(0x例外)。

3.2 振蕩器的配置以及時序的計算
    PIC系列單片機可以工作于以下4種不同的振蕩器方式:LP(低功耗晶體振蕩器)、XT(晶體諧振器)、HS(高速晶體諧振器)和RC(阻容振蕩器)。用戶可以根據其系統設計的需要,通過對配置位(FOSC1和FOSC2)編程,選擇其中一種工作模式。
    而一旦振蕩器配置完成,那么根據用戶的配置,可以輕松地計算出程序運行的時間以及A/D轉換所占用的時間,這樣就會很輕松地安排好單片機的時序。例如,如果采用4 MHz的HS振蕩模式,那么單片機的時鐘頻率為Fosc/4,也就是說執行一條指令需要1us;對于需要兩個指令周期的指令,需要2us。而對于A/D轉換,如果A/D轉換時鐘位選擇為Fosc/8,那么A/D轉換模塊轉換一個位的時間Tad就為2us。對一個8位的轉換來說,需要的時間為9.5Tad,也就是完成一次A/D轉換的時間為19us。這樣只需要查看源程序的行數并作簡要分析,就可以計算出程序運行的時間。

3.3 存儲體的選擇
    PIC單片機的數據存儲器通常分為兩個存儲體,即存儲體O(Bank0)和存儲體1(Bank1)。每個存儲體都是由專用寄存器和通用寄存器兩部分組成的。兩個存儲體中的一些寄存器單元實際上是同一個寄存器單元,卻又具有不同的地址。
    不同型號的PIC單片機,其數據存儲器的組成(即功能)是不完全相同的,所以設計人員一旦選用了某個PIC單片機的型號后,就要查找該單片機的數據存儲器資料,以便編程使用。
    筆者所采用的PIC16F716單片機的存儲區,是通過STATUS寄存器的RP1位和RP0位來選擇的。當配置為00時,表示選擇存儲區0;當配置為01時,表示選擇存儲區1。因為存儲區的改變只須改變RP0位,所以通常在程序編寫時,只改變RP0位來選擇存儲區。但是這樣容易造成程序的混亂,因此,筆者建議在每次更換存儲區時,要分別對RP0和RP1進行置位。在程序初始化時,最好將寄存器的初始化分為兩部分:第一部分為存儲區0;第二部分為存儲區1。然后將每個需要初始化的寄存器分別在對應的存儲區進行初始化即可。

3.4 GOTO和CALL指令的不同使用
    在PIC的匯編程序中,CALL與GOTO 指令使用的場合不同。CALL是用來調用子程序的,在調用完子程序后返回到調用前的程序;而GOTO是無條件轉移,即由此狀態進入另外一個狀態而不需要返回。
    為了使程序更加具有可讀性,使流程更加清晰、合理,通常程序都采用模塊化程序設計,即將程序按照功能分成不同的子程序,而主程序則相當簡潔,只須采用CALL 指令對子程序進行調用。
    由于PIC單片機的堆棧有限,在程序中不能無止境地使用GOTO指令,否則會使堆棧溢出,程序無法正常運行。但是在有些時候,例如當程序出現分支時,則不得不使用GOTO指令。對于PIC16F7x系列單片機,程序出現分支時只能通過STATUS寄存器的Z位或C位進行判斷。這時在兩種情況.的前一種情況下,必須使用GOTO指令進行轉移;否則在執行完第一種情況后,緊接著又執行第二種情況。程序如下:
BTFSS STATUS,Z
GOTO A
GOTO B
    在跳轉到A時,必須使用GOTO指令;否則執行完這條語句以后,緊接著執行GOTO B。這樣無論Z為何值,程序都將跳轉到B。而對于GOTO B,則可以不必使用GOTO指令。
    在上面這種情況下,由于GOTO只在子程序內部進行跳轉,小程序內部循環占用堆棧的級數不多,因此使用GOTO指令是可行的。但是在大的程序中使用GOTO指令,將有可能無法返回到調用前的下一條指令。
    因此,筆者建議,在使用匯編語言進行程序設計時,應該將程序分解成一級級的子程序;然后在程序之間進行調用,盡量將GOTO指令跳轉的范圍縮小。

3.5 對芯片的重復燒寫
    對沒有硬件仿真器的設計者來說,總是選用帶有EPROM 的芯片來調試程序,通過反復的修改來觀看運行結果,以便對程序進行調試。每更改一次程序,都是將原來的內容先擦除,再編程,浪費了相當多的時間,又縮短了芯片的使用壽命。如果后一次編程較前一次,僅是對應的機器碼字節的相同位由1變為0,那么就可在前一次編程芯片上再次寫入數據,而不必擦除原片內容。
    在程序調試過程中,經常遇到常數的調整。如果常數的改變能保證對應位由1變0,則都可在原片內容的基礎上繼續編程。另外,由于指令NOP對應的機器碼為00,調試過程中指令的刪除,可先用NOP指令替代,編譯后也可在原片內容上繼續編程。

結語
    在采用PIC單片機進行設計過程中,注意到PIC單片機自身的特點,可盡量少走彎路,從而縮短開發周期。同樣在軟件設計上采用合適的方法,可以使整個程序運行穩定,而且程序空間的使用也將有所減少,避免了調試中的Bug。以上只是筆者在實際設計過程中一些小小的體會。希望與大家一起探討,并在共同學習中為PIC單片機的普及和推廣做出貢獻。

Tags:PIC單片機,應用技巧,設計技巧  
責任編輯:admin
  • 上一篇文章: 沒有了
  • 下一篇文章:
  • 相關文章列表
    沒有相關文章
    請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個字
    [ 查看全部 ] 網友評論
    關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁面
    下到頁底
    晶體管查詢
    婷婷亚洲天堂影院-国产精品豆花视频www-伊人影院在线观看-日本少妇浓毛bbwbbwbbw-av网站观看-亚州欧美在线-91精品国产乱码久-任我爽精品视频在线播放-日本视频不卡-亚洲国产精品va在线观看香蕉-国产毛片乡下农村妇女-国产成人免费ā片在线观看老同学-欧美日韩免费在线-成人无码视频免费播放-色综合美女-免费毛片av
    <button id="4i884"></button>
  • <abbr id="4i884"><source id="4i884"></source></abbr>
  • <code id="4i884"><tr id="4i884"></tr></code>
  • <rt id="4i884"></rt>
    <li id="4i884"></li>
  • <rt id="4i884"><tr id="4i884"></tr></rt>
  • 草草草在线视频| 日本高清xxxx| 日韩在线不卡一区| 九色porny自拍| 国产又黄又爽免费视频| 日韩第一页在线观看| 香蕉视频免费版| 色综合久久久久无码专区| 国产成人无码精品久久久性色| 欧美xxxxx在线视频| 男女视频在线看| 日韩免费在线观看av| 免费在线激情视频| 91精产国品一二三产区别沈先生| 国产免费xxx| 成人黄色片视频| 在线无限看免费粉色视频| 国产 日韩 亚洲 欧美| 性生活免费在线观看| 国产精品igao激情视频| 少妇高清精品毛片在线视频| 亚洲精品mv在线观看| 六月丁香婷婷激情| 欧美aaa在线观看| 久久综合久久色| 在线观看17c| 亚洲一区精品视频在线观看| 日本在线xxx| 三年中文高清在线观看第6集| 国产毛片视频网站| 交换做爰国语对白| 国产精品一区二区羞羞答答| 女人被男人躁得好爽免费视频| 北条麻妃av高潮尖叫在线观看| 欧美xxxx吸乳| 久久6免费视频| 国产xxxxx视频| 日韩xxxx视频| 激情视频小说图片| 国产高清999| 欧洲熟妇精品视频| 国产日产欧美视频| 精品无码国产一区二区三区av| 日韩视频在线观看一区二区三区| 白嫩少妇丰满一区二区| 欧美视频在线免费播放| 乱熟女高潮一区二区在线| 99999精品| 久久这里只精品| 国产wwwxx| 国产成人手机视频| 日韩欧美精品在线观看视频| 99er在线视频| 日韩一级性生活片| 日韩小视频网站| 欧美午夜性视频| 欧美成人精品免费| 精品少妇人欧美激情在线观看| 黄色一级视频播放| 免费看污污视频| 二级片在线观看| 日韩精品第1页| 91精品国产吴梦梦| 日韩日韩日韩日韩日韩| 日本欧美视频在线观看| 给我免费播放片在线观看| 欧美又粗又长又爽做受| 缅甸午夜性猛交xxxx| 国产l精品国产亚洲区久久| 久在线观看视频| 欧洲av无码放荡人妇网站| 国产中文字幕在线免费观看| 国产美女三级视频| 女性隐私黄www网站视频| 欧美性猛交久久久乱大交小说| 狠狠热免费视频| 91香蕉视频免费看| 欧美日韩午夜爽爽| 免费黄色福利视频| 国产三级国产精品国产专区50| 国产高清999| 高清无码视频直接看| 黄色影院一级片| 久久精品免费网站| 久久久久久综合网| 国产xxxx振车| 亚洲精品乱码久久久久久自慰 | 成人在线观看你懂的| www.中文字幕在线| 91av视频免费观看| 欧美精品久久久久久久久久久| 国产超级av在线| 超碰在线免费av| 自拍日韩亚洲一区在线| 手机视频在线观看| 成人免费观看在线| 亚洲精品手机在线观看| av久久久久久| 国产天堂在线播放| 91成人综合网| 亚洲综合av在线播放| 日韩人妻无码精品久久久不卡| 久久综合伊人77777麻豆最新章节| 国产日韩欧美久久| 欧美日韩视频免费| 老司机午夜av| 欧美 亚洲 视频| www.com黄色片| 国产一级爱c视频| 91网址在线观看精品| 免费观看成人网| 高清无码一区二区在线观看吞精| 中文字幕第21页| 99色这里只有精品| 爱爱爱视频网站| 亚洲娇小娇小娇小| 日日摸日日碰夜夜爽av| 337p亚洲精品色噜噜狠狠p| 高清一区在线观看| 熟女性饥渴一区二区三区| 乱熟女高潮一区二区在线| 国产精品自在自线| 91色国产在线| 鲁一鲁一鲁一鲁一澡| 亚洲 欧美 综合 另类 中字| 欧美xxxxxbbbbb| 一区二区免费av| 国产三级三级看三级| 天天碰免费视频| 狠狠热免费视频| 999精品网站| 国产中文字幕免费观看| 国产精品久久..4399| 久久久久亚洲av无码专区喷水| 男生操女生视频在线观看| 日韩肉感妇bbwbbwbbw| 丁香啪啪综合成人亚洲| 国产裸体舞一区二区三区| 黄色影院一级片| 成人av一级片| 精品人妻一区二区三区四区在线| 欧美综合在线播放| 欧美性久久久久| 久久久国产欧美| 三级在线免费看| 亚洲va在线va天堂va偷拍| 日本国产一级片| 成人高清在线观看视频| 中国一级黄色录像 | 欧美黄色免费网址| 日韩在线视频在线| 日韩欧美不卡在线| 免费裸体美女网站| 日韩中文字幕a| 国产av不卡一区二区| 轻点好疼好大好爽视频| av免费观看网| 午夜激情福利在线| 国内av免费观看| 日韩免费一级视频| 亚洲一级片网站| 精品视频在线观看一区二区| 人妻熟妇乱又伦精品视频| 日韩中文字幕免费在线| 亚洲黄色片免费看| 久草视频这里只有精品| 手机看片福利盒子久久| 亚洲成人手机在线观看| 国自产拍偷拍精品啪啪一区二区| 国产精品无码av无码| 欧美与动交zoz0z| 成人免费毛片网| 天堂av.com| 国产精品无码一区二区在线| 亚洲 欧美 另类人妖| 日本天堂免费a| 国产91色在线观看| 99在线免费视频观看| 爱情岛论坛亚洲首页入口章节| 久久视频免费在线| 福利在线一区二区三区| 丁香婷婷综合激情| 三区视频在线观看| 日韩精品―中文字幕| 天天干天天色天天爽| 欧美 日韩 国产一区| japanese在线播放| 538任你躁在线精品免费| 夜夜添无码一区二区三区| 国产欧美激情视频| 人妻丰满熟妇av无码区app| 国产又粗又猛又爽又黄的网站| 性生活免费在线观看| 国产精品无码av在线播放| 少妇高潮流白浆| 精品国产乱码久久久久久1区二区| 久久精品.com| 国产青青在线视频| 久操手机在线视频| 无码毛片aaa在线|