娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年12月26日(星期四)

正在發(fā)生

2019年12月26日 | PIC單片機的特點及在設(shè)計應(yīng)用中的注意事項

發(fā)布者:RadiantJourney 來源: elecfans關(guān)鍵字:PIC單片機  注意事項  運算器  存儲器 手機看文章 掃描二維碼
隨時隨地手機看文章

美國微芯公司(Microch{p Technology Inc.)開發(fā)的CM0S工藝PIC系列8位單片機(RISC微控制器),特別是采用內(nèi)置第二代Flash存儲器(40年存儲壽命)的微控制器在快速應(yīng)用方面具有獨到之處。由于其易用性和高可靠性,該系列微控制器穩(wěn)居8位單片機全球出貨量之首。PIC系列單片機具有指令集簡潔、簡單易學(xué)、速度高、功能強、功耗低、價格低廉、體積小巧、適用性好及抗干擾能力強等特點,大量應(yīng)用于汽車電氣控制、電機控制、工業(yè)控制儀表和儀表、通信、家電、玩具、低功耗的測控應(yīng)用等領(lǐng)域,在國內(nèi)越來越受到廣大設(shè)計者的歡迎,微芯公司的單片機已經(jīng)成為目前單片機世界的主流產(chǎn)品。


PIC 8位單片機內(nèi)已經(jīng)包含運算器、存儲器、A/D、PWM、輸入和輸出I/O(灌電流可達25mA)、通信等常用接口,自由靈活的定義功能可以適應(yīng)不同的控制要求。而不必增加額外的IC芯片。這樣電路結(jié)構(gòu)很簡單,開發(fā)周期將大為縮短。


PICl6系列單片機屬于PIC8位單片機的中級型產(chǎn)品,采用14位的RISC指令系統(tǒng)。筆者使用PICl6F716單片機設(shè)計了一個電動機保護器,在設(shè)計過程中遇到很多問題,通過多方查找資料以及向Microchip公司技術(shù)人員尋求支持,問題一一得到解決?,F(xiàn)將部分問題記錄如下,與大家一起探討。


1 ICD2作為程序燒寫的使用

1.1 ICD2簡介

MPLAB ICD2在線調(diào)試器是一款低價位的PIC開發(fā)工具。它利用Flash工藝芯片的程序區(qū)自讀寫功能來實現(xiàn)仿真器調(diào)試功能;使用的軟件平臺是Microchip的MPLAB IDE(集成開發(fā)環(huán)境軟件包),兼容Windows NT、Windows 2000和Windlows XP等操作系統(tǒng)。其通信接口方式可以是USB(最高可達2Mb/s)或RS-232串行接口方式;工作電壓范圍為2.O~5.5V,可支持最低2.0V的低壓調(diào)試。


MPLABICD2可以支持大部分Flash工藝的芯片。它不僅可以用作調(diào)試器,同時還可以作為開發(fā)型的燒寫器使用。


1.2 ICD2作為燒寫器時的配置

燒寫芯片的方式有兩種:普通燒寫和在線燒寫。在線燒寫是適合大批量生產(chǎn)方式的燒寫辦法。使用在線燒寫時通常用戶都已經(jīng)把芯片焊到了板上,此時就要求用戶板上有預(yù)留的燒寫接口。用戶板上的接口是通過一條6芯的扁平電纜與ICD2主機上同樣的接口一一對應(yīng)連接的。圖1顯示了MPLAB ICD2與目標板上模塊連接插座的互連狀況。


ICD連接插座有6個引腳,但只使用了其中的5個引腳,分別是VDD(電源)、VSS(地)、VPP(編程電壓)、PGC(同步時鐘)和PGD(數(shù)據(jù))。


1.3 ICD2作為燒寫器時容易出現(xiàn)的問題及解決方法

盡管MPLAG ICD2與目標板的互連非常簡單,但是一不小心就會出現(xiàn)問題,基本上每一個PIC的入門者都會碰到類似的問題。下面就一些常見問題作簡要敘述。


如圖l所示,在VPP與VDD之間通常要串接一個上拉電阻(通常約為lOkΩ),這樣VPP線可置為低電平來手動復(fù)位PICmicro單片機。但是對一般設(shè)計者來說,都是采用上電自動復(fù)位。如果在這里采用集成器件DMP809,那么就會導(dǎo)致連接不上,程序沒有辦法燒入。

PIC單片機的特點及在設(shè)計應(yīng)用中的注意事項

對于PGC、PGD兩根線,由于在ICD2內(nèi)部已經(jīng)進行了上拉,所以在外圍設(shè)計中,不要冉進行上拉,否則會造成分壓。對于PGC、PGD和VPP三根線,不要對地接電容.因為電容會阻礙在數(shù)據(jù)和時鐘線上電平的快速轉(zhuǎn)換,從而影響ICD2與目標板的連接。同樣對于PGC、PGD,由于數(shù)據(jù)或時鐘都是雙向傳輸?shù)?,這時如果在中間串一個二極管,則會影響ICD2與單片機的雙向通信。


但是,對PGC和PGD來說,在單片機上同時復(fù)用為普通I/O口,而有些使用上必須要接對地電容或者是串接二極管。對于這種情況,唯一的處理方式就是在燒寫時從芯片的PGC和PGD端口直接跳線到程序燒寫口。


2 A/D轉(zhuǎn)換通道切換問題

筆者所設(shè)計的電動機保護器需要進行很多A/D轉(zhuǎn)換,比如三相電流轉(zhuǎn)換、零序電流轉(zhuǎn)換以及各種*等。但是筆者所采用的PIC16F716單片機只有5路A/D轉(zhuǎn)換通道,因此附加了一個多位選擇開關(guān)對一個A/D通道進行復(fù)用。而在調(diào)試中發(fā)現(xiàn)這樣一個問題,就是A/D轉(zhuǎn)換值不準確,甚至有點亂,但從程序流程以及代碼角度均查不出任何問題。后查明PICl6F716單片機進行A/D轉(zhuǎn)換通道切換時,需要一定的延時,延時時間是毫秒級。解決辦法是:在通道問切換時,當(dāng)?shù)谝粋€通道轉(zhuǎn)換完成后,先轉(zhuǎn)到另一個通道;然后延時1ms左右,再進行A/D轉(zhuǎn)換。而對同一個通道信號切換時,要在第一個信號轉(zhuǎn)換完成后,禁止信號輸入,延時1ms左右;然后輸人信號,再進行A/D轉(zhuǎn)換。


這種做法比較麻煩,也很占用時間,并且從調(diào)試結(jié)果來看,問題并沒有解決。在反復(fù)進行調(diào)試中,最后得到的優(yōu)化解決辦法是:對于通道間轉(zhuǎn)換以及同一通道信號轉(zhuǎn)換,要對每一個信號至少進行兩次A/D轉(zhuǎn)換;第一次的轉(zhuǎn)換結(jié)果,舍棄不予處理,只取第二次A/D轉(zhuǎn)換的結(jié)果。從調(diào)試結(jié)果來看,很好地解決了這一問題。


3 軟件開發(fā)小技巧

PIC單片機采用精簡指令集,例如對于PICl6F716單片機,只有35條單字節(jié)指令。要用這么少的指令實現(xiàn)復(fù)雜的控制或計算,顯然要在軟件設(shè)計上多下功夫,并且PIC的指令系統(tǒng)與51系列單片機有很大不同,這讓PIC初學(xué)者很不適應(yīng)。下面筆者就自己的體會,談一些軟件設(shè)計需要注意的問題。


3.1 指令的大小寫問題

編寫PIC單片機的源程序,除了源程序的開始處需要嚴格的列表指令外,還須注意源程序中字母符號的大小寫規(guī)則,否則在PC機上匯編程序時不會成功。在源程序中都會使用偽指令I(lǐng)NCLUDE。這條指令將列表中指定的單片機文件(在MPLAB中)讀入源程序作為源程序的一部分,所以凡是MPLAB中有關(guān)該單片機已有的寄存器在源程序中無需再用賦值指令(EQU)賦值,這就使所建立的源程序大為簡化。


此外,由于有了偽指令I(lǐng)NCLUDE,所以根據(jù)MPLAB軟件中的格式,在源程序中的操作數(shù)凡是涉及MPLAB已規(guī)定的寄存器名稱的,其字母一律只能大寫,不能小寫。其余操作碼、符號字母可任意大小寫,但0x中的x應(yīng)小寫。否則匯編不會成功。鑒于上述原因,為了書寫方便,在使用MPLAB軟件時,PIC單片機的源程序均用大寫字母為宜(0x例外)。


3.2 振蕩器的配置以及時序的計算

PIC系列單片機可以工作于以下4種不同的振蕩器方式:LP(低功耗晶體振蕩器)、XT(晶體諧振器)、HS(高速晶體諧振器)和RC(阻容振蕩器)。用戶可以根據(jù)其系統(tǒng)設(shè)計的需要,通過對配置位(FOSC1和F0SC2)編程,選擇其中一種工作模式。


而一旦振蕩器配置完成,那么根據(jù)用戶的配置,可以輕松地計算出程序運行的時間以及A/D轉(zhuǎn)換所占用的時間,這樣就會很輕松地安排好單片機的時序。例如,如果采用4 MHz的HS振蕩模式,那么單片機的時鐘頻率為FOSC/4,也就是說執(zhí)行一條指令需要1μs;對于需要兩個指令周期的指令,需要2μs。而對于A/D轉(zhuǎn)換,如果A/D轉(zhuǎn)換時鐘位選擇為FOSC/8,那么A/D轉(zhuǎn)換模塊轉(zhuǎn)換一個位的時間Tad就為2μs。對一個8位的轉(zhuǎn)換來說,需要的時間為9.5Tad,也就是完成一次A/D轉(zhuǎn)換的時間為19μs。這樣只需要查看源程序的行數(shù)并作簡要分析,就可以計算出程序運行的時間。


3.3 存儲體的選擇

PIC單片機的數(shù)據(jù)存儲器通常分為兩個存儲體,即存儲體O(Bank0)和存儲體1(Bankl)。每個存儲體都是由專用寄存器和通用寄存器兩部分組成的。兩個存儲體中的一氈寄存器單元實際上是同一個寄存器單元,卻又具有不同的地址。


不同型號的PIC單片機,其數(shù)據(jù)存儲器的組成(即功能)是不完全相同的,所以設(shè)計人員一旦選用了某個PIC單片機的型號后,就要查找該單片機的數(shù)據(jù)存儲器資料,以便編程使用。

筆者所采用的PICl6F716單片機的存儲區(qū),是通過STATUS寄存器的RPl位和RP0位來選擇的。當(dāng)配置為00時,表示選擇存儲區(qū)0;當(dāng)配置為01時,表示選擇存儲區(qū)1。因為存儲區(qū)的改變只須改變RP0位,所以通常在程序編寫時,只改變RP0位來選擇存儲區(qū)。但是這樣容易造成程序的混亂,因此,筆者建議在每次更換存儲區(qū)時,要分別對RPO和RPl進行置位。在程序初始化時,最好將寄存器的初始化分為兩部分:第一部分為存儲區(qū)O;第二部分為存儲區(qū)1。然后將每個需要初始化的寄存器分別在對應(yīng)的存儲區(qū)進行初始化即可。


3.4 GOTO和CALL指令的不同使用

在PIC的匯編程序中,CALL與GOT0指令使用的場臺不同。CALL是用來調(diào)用子程序的,在調(diào)用完子程序后返回到調(diào)用前的程序;而GOTO是無條件轉(zhuǎn)移,即由此狀態(tài)進入另外一個狀態(tài)而不需要返回。


為了使程序更加具有可讀性,使流程更加清晰、合理,通常程序都采用模塊化程序設(shè)計,即將程序按照功能分成不同的子程序,而主程序則相當(dāng)簡潔,只須采用CALL指令對子程序進行調(diào)用。


由于PIC單片機的堆棧有限,在程序中不能無止境地使用GOTO指令,否則會使堆棧溢出,程序無法正常運行。但是在有些時候,例如當(dāng)程序出現(xiàn)分支時,則不得不使用GOTO指令。對于PICl6F7x系列單片機,程序出現(xiàn)分支時只能通過STATUS寄存器的Z位或C位進行判斷。這時在兩種情況的前一種情況下,必須使用GOTO指令進行轉(zhuǎn)移;否則在執(zhí)行完第一種情況后,緊接著又執(zhí)行第二種情況。程序如下:

BTFSS STATUS,Z

GOTO A

GOTO B

在跳轉(zhuǎn)到A時,必須使用GOTO指令;否則執(zhí)行完這條語句以后,緊接著執(zhí)行GOTO B。這樣無論Z為何值,程序都將跳轉(zhuǎn)到B。而對于GOT0 B,則可以不必使用GOTO指令。


在上面這種情況下,由于GOTO只在子程序內(nèi)部進行跳轉(zhuǎn),小程序內(nèi)部循環(huán)占用堆棧的級數(shù)不多,因此使用GOTO指令是可行的。但是在大的程序中使用GOTO指令,將有可能無法返回到調(diào)用前的下一條指令。


因此,筆者建議,在使用匯編語言進行程序設(shè)計時,應(yīng)該將程序分解成一級級的子程序;然后在程序之間進行調(diào)用,盡量將GOTO指令跳轉(zhuǎn)的范圍縮小。


3.5 對芯片的重復(fù)燒寫

對沒有硬件仿真器的設(shè)計者來說,總是選用帶有EPROM的芯片來調(diào)試程序,通過反復(fù)的修改來觀看運行結(jié)果,以便對程序進行調(diào)試。每更改一次程序.都是將原來的內(nèi)容先擦除,再編程,浪費了相當(dāng)多的時間,又縮短了芯片的使用壽命。如果后一次編程較前一次,僅是對應(yīng)的機器碼字節(jié)的相同位由1變?yōu)?,那么就可在前一次編程芯片上再次寫入數(shù)據(jù),而不必擦除原片內(nèi)容。


在程序調(diào)試

過程中,經(jīng)常遇到常數(shù)的調(diào)整。如果常數(shù)的改變能保證對應(yīng)位由1變0,則都可在原片內(nèi)容的基礎(chǔ)上繼續(xù)編程。另外,由于指令NOP對應(yīng)的機器碼為00,調(diào)試過程中指令的刪除,可先用NOP指令替代,編譯后也可在原片內(nèi)容上繼續(xù)編程。


結(jié)語

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

關(guān)鍵字:PIC單片機  注意事項  運算器  存儲器 引用地址:PIC單片機的特點及在設(shè)計應(yīng)用中的注意事項

上一篇:PIC單片機選用存儲體0或1的方法
下一篇:基于PIC18單片機的RS-485/CAN智能轉(zhuǎn)換器的設(shè)計策

推薦閱讀

如今,汽車產(chǎn)業(yè)正迎來加速變革,向著新能源與自動駕駛兩大技術(shù)方向邁步挺進。相對于新能源技術(shù)的相對成熟,自動駕駛?cè)蕴幱诎l(fā)展階段,距離規(guī)?;占耙踩杂泻荛L一段路要走。不過,業(yè)內(nèi)玩家對于自動駕駛汽車的熱情卻依然十分高昂。據(jù)最新報告預(yù)測,2018年全球自動駕駛汽車市場規(guī)模將達到49億美元,到2022年,預(yù)計市場規(guī)模將進一步增長至85億美元。更為樂觀的...
主要亮點:1.數(shù)碼管使用74HC595作為段選驅(qū)動,為初學(xué)者提供了新的思路次要亮點:1.使用小巧的STC15F104W單片機DS18B20的通信要點在于時序的嚴格對應(yīng),相比之下DHT11這一類的單總線通信時序要求更加寬松。因為DS18B20算是極為常用的學(xué)習(xí)器件,故不做過多講解,本次作品不涉及搜索BOM、精度調(diào)節(jié)等操作,只是單器件讀取溫度值,數(shù)據(jù)處理將可以顯示的溫度值設(shè)...
Covid-19疫情大流行加速了技術(shù)進步,預(yù)計2021年全球半導(dǎo)體市場增長將加速。 盡管在Covid-19停工和旅行限制中最初的供應(yīng)鏈中斷,但美國投資銀行研究公司(AmInvestment Bank Research)表示,該行業(yè)已反彈至新高。 它在最近的一份報告中說:“疫情加速了向遠程工作和遠程學(xué)習(xí)的技術(shù)變革,對大數(shù)據(jù),自動化和物聯(lián)網(wǎng)等工業(yè)4.0技術(shù)的需求,以建立更具彈性的...
12月26日消息 MacRumors援引巴西網(wǎng)站Blog do iPhone消息,iPhone 15 Pro機型可能不提供實體SIM卡插槽。  目前的iPhone機型提供一個物理的nano-SIM卡插槽和一個數(shù)字eSIM。報告聲稱,預(yù)計2023年發(fā)布的iPhone 15 Pro機型將有兩個eSIMs,以確保雙卡雙待功能。  去除SIM卡插槽可以進一步提高防水性。還有傳言說蘋果將來會發(fā)布一款沒有充電...

史海拾趣

問答坊 | AI 解惑

使用過濾口罩常見問題(2)

問題5:市面上販售的棉布口罩有那些優(yōu)缺點?   解答:棉布口罩的優(yōu)點主要為可重復(fù)清洗使用,缺點為:(1)口罩內(nèi)面接觸口鼻的部分會留有唾液,若沒有勤于清洗,容易滋生細菌,不符合衛(wèi)生之要求。(2)棉布口罩的纖維一般都很粗,無法有效過濾較 ...…

查看全部問答∨

用51單片機學(xué)習(xí)SHT21,原理圖\PCB圖大家檢查一下

呵呵,大家來檢查一下錯誤吧。   這個板子的思路: 1、用51單片機 2、加一個DS1302 3、一個TFT液晶 4、3個按鍵   實現(xiàn)液晶顯示:帶溫濕度的數(shù)字時鐘   7.21更新的原理圖和PCB圖,大家?guī)兔Σ榭聪?AD版PDF版的PCB:原理圖:…

查看全部問答∨

想用三極管做個開關(guān)電路請教

我想用單片機3.3v控制三極管開關(guān)電源電路 直流電源9v,電流25ma,高電平時閉合,低電平斷開,給推薦個型號,和電路圖接法 謝謝了…

查看全部問答∨

尋開發(fā)視頻信號控制系統(tǒng)

運行環(huán)境:安防監(jiān)控系統(tǒng)(視頻信號控制) 主要設(shè)備:電腦(采集卡)+攝象機 傳輸方式:視頻信號線纜(75-5)同軸線 要求:1 對前端設(shè)備進行視頻信號控制(可以接收信號控制單片機) 2主控系統(tǒng) 是電腦作為信號命令主機(可以利用485   ...…

查看全部問答∨

三相電異常現(xiàn)象

今天上午遇到的怪現(xiàn)象,電源為三相四線制,用萬用表量得三相電壓380V平衡,三相對地電壓220V正常;且設(shè)備運轉(zhuǎn)正常。但是用電筆量的話三相中有一相氖泡不亮,但是當(dāng)測量零線是氖泡是亮的。請教高手這是怎么回事…

查看全部問答∨

方波產(chǎn)生電路

本帖最后由 paulhyde 于 2014-9-15 09:29 編輯 各位大俠,如何產(chǎn)生1-1Mhz的方波???有什么好的方案沒?  …

查看全部問答∨

C6747連接問題,求指教

我用的是CCS3.3,仿真器是seed-xds560plus; 我用的是一個c6747的開發(fā)板;我用仿真器連不上板子,出現(xiàn)下面的錯誤: ------------------------------------------------------------------------------------ Error connecting to the target: Err ...…

查看全部問答∨

關(guān)于SensorTag創(chuàng)意活動

網(wǎng)站SensorTag創(chuàng)意活動的鏈接:http://www.nncyjs.com/huodong/201310_TI_SensorTag/ 頂部圖片中有“跑回童年”,是不是關(guān)于兒童使用方面是重點有優(yōu)先? 首先允不允許改變SensorTag本身的軟硬件?如果不改變SensorTag軟件或者硬件,是不是無 ...…

查看全部問答∨

微弱直流信號,如何調(diào)制以提高信噪比

傳感器輸出微弱直流信號(<1mV),考慮到噪聲影響,不能直接放大,所以想提高信噪比。網(wǎng)上查到有人采用平衡橋+低頻正弦信號進行調(diào)制,不知道原理,請大家?guī)兔忉?。謝謝…

查看全部問答∨

單車LED信號/信息顯示系統(tǒng)

單車LED信號/信息顯示系統(tǒng)…

查看全部問答∨
小廣播
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 盐源县| 麻城市| 临猗县| 沧州市| 五台县| 凤翔县| 隆子县| 富蕴县| 光山县| 永新县| 平乡县| 温泉县| 海南省| 平潭县| 天水市| 神木县| 马公市| 延津县| 新和县| 洛浦县| 梅河口市| 淳安县| 千阳县| 绥宁县| 武乡县| 西乡县| 闻喜县| 安康市| 政和县| 马公市| 新干县| 富裕县| 房产| 和硕县| 阳曲县| 焉耆| 安陆市| 绥中县| 荔浦县| 赤水市| 化德县|