導航:首頁 > 操作系統 > pic單片機w寄存器

pic單片機w寄存器

發布時間:2023-11-02 14:44:51

1. pic 單片機 參考文獻

PIC8位單片機的基本組成

PIC系列8位單片機為適應各種不同的用途,有多種型號可供選用。但是,盡管PIC單片機有不同的檔次和型號,但其最基本的組成則大同小異。因此,在這里先從型號PIC16F84的單片機入手,討論其基本組成。PIC16F84是雙列直插式(DIP)塑料封裝,最大時鍾頻率可達4MHz。現為Microchip公司的獨家產品,關於其具體技術指標,可查閱該公司的產品手冊,或在網址www.microchip.com上查找。
PIC16F84單片機的引腳排列可參閱本期本版的16F8X系列簡介一文。本文的附圖是該器件的主要組成部分。PIC16F84雖然體積不大,但仍然是一個完整的計算機,它有一個中央處理器(CPU)、程序存儲器(ROM)、數據寄存器(RAM)和兩個輸入/輸出口(I/O口)。
和其它品種的單片機一樣,CPU是此單片機的「首腦」,它從程序存儲器中讀取和執行指令。在取指和執行時,還可同時對數據寄存器進行取數(前已介紹PIC16F84採用哈佛結構)。由附圖可明顯看出,程序存儲器和數據存儲器各有一條匯流排與CPU相連。有些CPU將CPU內部的寄存器與其外部的RAM是分開管理的,但PIC單片機不是這樣,它的通用數據RAM也歸為寄存器,稱為File寄存器。在PC16F84中,有68個位元組的通用RAM,其地址為0CH~4FH。
除了通用數據寄存器外,還有一些專用寄存器,其中最常用的工作寄存器為「W寄存器」。CPU將工作數據存放在W寄存器中。寄存器W的作用與其它單片機中的「累加器A」相似。此外,還有幾個專用寄存器,它們分別以某種方式控制PIC的運作。
PIC16F84的程序存儲器是由Flash(閃速)EPROM構成,它可用電來記錄和擦除,而在斷電時,仍可保留其內容。PIC單片機有些型號的程序存儲器用的是EPROM,需要用紫外線來擦除;還有一些型號是一次性可編程(OTP)的產品(一經編程便不能再擦除)。
PIC16F84有兩個輸入/輸出口,即A口和B口。每個口的每個引腳可單獨設定為輸入或輸出。各個口的位是從0開始編號的。當A口為輸出方式時,其第4位(即RA4)為開路集電極(或開路漏極)輸出,而B口及A口其它各位為常規的全CMOS驅動電路。這些功能必須注意,否則會在編程時出錯。CPU對每個埠都按一個位元組8位來處理,但A口只有5位引腳。
PIC輸入與COMS兼容,所以PIC輸出可驅動TTL或CMOS邏輯晶元。每個輸出引腳可以流出或吸入20mA電流,即使一次只用了一個引腳亦是如此。

摘 要:在介紹空調室內機控制器功能的基礎上,從軟體的規劃著手,詳細介紹了室內機軟體的總體設計過程、詳細設計過程以及編碼的實現,並在此基礎上重點給出了空調室內機運行模式的特點和結合這些特點如何用MPLAB集成開發環境去實現各運行模式。
關鍵詞:空調;控制器;單片機;軟體設計
單片機軟體實現是單片機系統應用的重點,他是在硬體設計基礎上實現程序設計的重要環節。單片機程序設計一般包括以下幾個步驟:軟體規劃、流程圖編制、代碼編寫。由於單片機系統具有軟硬體緊密結合的特點,因此在基於某種單片機系統的軟體開發時,應充分了解該系統實現的硬體環境,同時也應該在系統設計與硬體設計階段,對軟體設計有一個大體的規劃。因此,本文在介紹室內機控制器功能的基礎上,重點討論如何用軟體實現該室內機的功能。

一:PIC16C71的問題和對策

問題1:在晶元進入低功耗睡眠模式 (SLEEP MODE)後,其振盪腳將處於浮態,這將使晶元的睡眠功耗上升,比原手冊中的指標高了10μA以上。

對策:在振盪腳OSC1和地 (GND)之間加一10MΩ電阻可防止OSC1進入浮態,且不會影響正常振盪。

問題2:RA口方向寄存器TRISA目前只是一個4位寄存器,對應於RA0~RA3,並非手冊中所言是8位寄存器,對應於RA0~RA4,即RA4並沒有相應的輸入/輸出方向控制位,它是一個具有開極輸出,施密特輸入I/O腳。

對策:避免使用對RA口進行讀-修改-寫指令(如BCF RA, BSF RA),以免非意願地改變RA4的輸入/輸出狀態。對於RA口的操作應採用寄存器的操作方式(MOVWF RA)。

問題3:當CPU 正在執行一條對INTCON寄存器進行讀-修改-寫指令時,如果發生中斷請求,則讀中斷常式會被執行二次。這是因為當中斷請求發生後INTCON寄存器中的GIE位會被硬體自動清零(屏蔽所有中斷),並且程序轉入中斷常式入口(0004H)。當GIE位被清零後,如果這時正好CPU在執行一條對 INTCON的讀-修改-寫指令(如BSF INTCON等),則 GIE位還會被寫回操作重新置1,這樣會造成CPU二次進入中斷常式。

對策:如果在程序中需對INTCON的某一中斷允許位進行修改,則應事先置GIE=0

,修改完成後再恢復GIE=1。

…………..

BCF INTCON, GIE

BSF INTCON, ×××

BSF INTCON, GIE

…………..

圖1

問題4:當晶元電壓VDD加電上升時間大於100μs時,電源上電復位電路POR和電源上電延時器PWRT可能不能起正常的作用,而使晶元的復位出現不正常(即PC≠復位地址)。一般在這種情況下建議不要採用PWRT。

對策:如果VDD上升時間很長,此晶元一般需較長的電源上電延時,可靠的電源上電延時方法如圖1所示,在MCLR端外接復位電路。

問題5:如果在A/D轉換中用RA3作為參考電壓輸入,則最大滿量程誤差(NFS)要大於手冊中的指標。實際情況如表1所示。

表1 A/D滿量程誤差表

VREF源
(5.12V) 滿量程誤差
(NFS)
VDD <±1 LSb
RA3 <±2.5 LSb

二:PIC16C84的問題和對策

問題1:PIC16C84的內部的E2PROM數據存儲器的E/W周期偶爾會超出最大值(10ms)。

對策:在程序中應該用EECON1寄存器中的WR位來判斷寫周期的完成,或是啟用「寫周期完成中斷」功能,這兩種方法可保證寫入完成。

問題2:VDD和振盪頻率的關系如表2所示。

VDD 振盪方式 最高頻率
2V-3V RC, LP 2MHZ,200MHZ
3V-6V RC,XT,LP 4MHZ,200MHZ
4.5V-5.5V HS 10MHZ

2. 最近剛學PIC單片機,有個程序看不懂,請高手幫下,越詳細越好:

INDF 和 FSR兩個寄存器構成了一個間接定址的作用。
FSR有點像C語言中的指針,INDF是一個虛擬的寄存器,對它操作其實是對FSR鎖指向的內存單元操作。
簡單的說,當20h這個數賦給了FSR,那麼就是FSR作為指針指向了內存中地址為20h的這個單元(以下就用<20h>來表示這個單元,以區別十六進制的20h這個數值),此時INDF就被映射到<20h>。
從頭說起:
1:W被賦值20h這個數;2:FSR被賦值和W寄存器相同的數20H,此時FSR指向了<20h>;3:此時W寄存器因為沒被改變過,所以其數值依然是十六進制的20h那麼MOVWF 20H其實就是把W里的數據賦值給<20h>這個內存單元 也就是 <20h> = 20H ;
4:重點來了 INCF INDF,讓INDF自加1。前面說了對INDF操作其實就是對FSR所指向的單元操作,也就等同於 INCF <20h>(真正程序里不能這么寫的,因為<20h>這楊寫法是錯誤的) 類似C與語言中的<20h>++
5:FSR自加1,FSR內部的值等於21h所以FSR指向了<21h>這個內存單元。
6:<20h>單元的數值高4位和低4位轉換一下數據。所以 <20h> = 02h
7:把<20h>的內容賦值給W寄存器,所以w = 02h
8:FSR此時 等於21h ,把21h和W的02h做與運算,結構 0 賦值給FSR。

3. pic單片機怎麼用戶匯編語言實現位取反

用COMF指令。
例如對於一個自定義的變數TEMP
PIC10、PIC12、PIC16系列單片機用 COMF TEMP,1
PIC18系列單片機用 COMF TEMP,1,0
PIC24、dsPIC系列單片機用 COM TEMP (注意這兩個系列的單片機用的匯編的不是COMF,而是COM)
另外PIC32系列單片機沒用過其匯編,所以沒法說是怎麼寫。

4. pic單片機中ADDWF PCL,F 中f是指的什麼意思呢,請高手指點啊!!!!好像沒這個寄存器吧

ADDWF PCL,F,這條指令的意思表示W寄存器和PCL的值相加,結果存回到PCL寄存器,工作寄存器W的值不變,ADDWF PCL,W表示結果存回工作寄存器W,PCL的值不變

閱讀全文

與pic單片機w寄存器相關的資料

熱點內容
如何給app重命名 瀏覽:603
怎麼幽默調侃程序員 瀏覽:285
忘記密碼解壓視頻 瀏覽:911
運城機場春運加密 瀏覽:287
安卓手機如何關閉app後台 瀏覽:154
安卓數字密碼忘記怎麼破解 瀏覽:252
pythonzmq模式 瀏覽:180
linux運行php網站 瀏覽:865
實驗室無油壓縮機 瀏覽:805
哪裡可以免費看動畫app 瀏覽:53
文本加密咋解 瀏覽:485
tomcat做伺服器怎麼設置 瀏覽:252
非對稱加密會增大網路包嗎 瀏覽:703
為什麼不能編譯c 瀏覽:261
數據伺服器不能啟動是什麼意思 瀏覽:556
java以什麼開頭 瀏覽:820
蘋果手機相冊文件夾如何清理 瀏覽:405
伺服器雲電腦搭建教程 瀏覽:410
eco怎麼搭建伺服器 瀏覽:468
周轉材料核演算法 瀏覽:358