www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]源程序的編寫主要就是用這些基本的指令實現你的控制任務。但為了增加源程序的可讀性和可維護性,我們引入了偽指令的概念。偽指令本身不會產生可執(zhí)行的匯編指令,但它們可以

源程序的編寫主要就是用這些基本的指令實現你的控制任務。但為了增加源程序的可讀性和可維護性,我們引入了偽指令的概念。偽指令本身不會產生可執(zhí)行的匯編指令,但它們可以幫組“管理”你編寫的程序,其實用性和必要性絕不亞于 35 條正真的匯編指令。我們在此著重介紹最常用的幾種偽指令。

PIC單片機最常用的幾種指令介紹

#include 或 include

#include 偽指令的作用是把另外一個文件的內容全部包含復制到本偽指令所在的位置。被包含復制的文件可以是任何形式的文本文件,當然文件中的內容和語法結構必須是 MPASM 能夠識別的。最經常被“include”的是針對 PIC 單片機內部特殊功能寄存器定義的包 含 頭 文 件 , 在MPLAB安 裝 后 它 們 全 部 放 在 路 徑 “ C:\Program Files\MPLAB IDE\MCHIP_Tools”下,每一個型號的 PIC 單片機都有一個對應的預定義包含頭文件,擴展名是“.inc”。除了一些符號預定義文件,你也可以把現有的其它程序文件作為一個代碼模塊直接“包含”進來作為自己程序的一部分。見例 3-01。

#include 把預定義的 PIC16F877A 寄存器符號包含到此處

#include ”math.asm” 把現有的程序文件包含進來作為自己代碼的一部分

例 3-01

請注意被包含文件的引用方式。一種是《》尖括號引用,這種引用意味著讓編譯器去默認的路徑下尋找該文件,MPASM默認的寄存器預定義文件存放路徑即為上面提及的MPLAB 安裝后的目錄;另一種是””雙引號引用,這種引用方式的意思是指示編譯器從引號中指定的全程文件路徑下尋找該文件。例 3-01 中”math.asm”沒有指定路徑,即意味著在當前項目路徑下尋找 math.asm 文件。如果編譯器找不到被包含的文件,將會有錯誤信息告知。請在你的源程序中盡量用 MPLAB 標準頭文件定義的寄存器符號。一來這些被定義的寄存器符號和芯片數據手冊上的描述一一對應,理解起來即直觀又容易;二來如果用你自己定義符號就缺乏一個大家能一起交流的標準平臺,其他人要解讀你的代碼時將費時費力。故例3-01 中的首行#include 包含引用偽指令可以說是 PIC 單片機程序編寫時的標準必備。

list

list 偽指令可以設定程序編譯時的一些信息,例如所選單片機的型號,編譯時選擇的缺省數制等。例如:

list p=16f877a, r=DEC 單片機型號為 PIC16F877A,無特別指明的數字為十進制數

例 3-02

如果程序開發(fā)時使用項目管理的模式,則所有 list 偽指令可以描述的參數項都可以在項目的設定選項中通過對話框的形式設定并保存。在此只需對 list 偽指令稍作了解即可。

__config

此偽指令的重要作用是把芯片的配置字設定在源程序中,請參閱 2.5 節(jié)的詳細說明。建議大家盡量用此偽指令把芯片的配置字寫在程序中。

__idlocs

PIC 單片機中有一處非常特殊的標記單元。它獨立于任何其它存儲器,唯一的作用就是作為一個標記。此標記值無法用軟件讀到,讀取和寫入的方法只有通過編程器實現。此標記值沒有讀保護,你可以利用它存放程序的版本或日期等信息。如果需要,則可以用偽指令 __idloc 在程序中定義具體的值。

__idloc 0x1234

設定芯片的標記值為 0x1234,注意前面有兩個下劃線符

例 3-03

和__config 偽指令定義的配置字一樣,用__idloc 定義的芯片標記值在最后也會存放在HEX 文件中,這就要求編程器能夠解析它。

errorlevel

errorlevel 的用途是控制編譯信息的輸出顯示。編譯器在編譯你的源程序時會提供很多信息,有些信息是你必須要處理的,例如錯誤信息(Error),只要有錯誤信息存在,你的程序將永遠無法完成編譯;有些可能只需要關注,例如警告信息(Warning);也有一些可能你根本就不感興趣,它們只是一些提示信息(Message)而已。注意出現警告和提示信息時將不會中止編譯器的編譯工作,你的程序將被編譯并最終產生 HEX 文件。圖 3-14 中顯示了一個程序編譯后的各種信息實例,其中既有錯誤信息,也有警告和提示信息。我們可以用errorlevel 偽指令來控制輸出信息的級別,或刻意關閉/打開一些提示信息。

編譯信息的輸出顯示級別有三種,分別是 0、1 和 2。級別 0 代表顯示所有信息,包括各種錯誤、警告和提示信息,如圖 3-14 所示;級別 1 代表顯示錯誤和警告信息,忽略提示信息;級別 3 代表只顯示錯誤信息而忽略警告和提示信息。在任何一個大的級別上還可以對某些信息單獨設定顯示或關閉。每個信息都有一個識別標號,見圖 3-14 中信息項“[]”中的數字,打開或關閉某類信息只需在 errorlevel 偽指令中引用信息識別標號,并在其前面用“+”或“-”號,即代表打開或關閉這一類信息,例如:

errorlevel 0, -302, -305 顯示所有信息,但不需要 302 和 305 這兩類提示信息

errorlevel 1, +305 顯示錯誤和警告信息,但同時還要關注 305 類的提示信息

#define / #undefine 例 3-04

#define 的作用是定義常數符號,即用一個符號變量替換另一個符號串或變量。被替換的可以是任意字母數字組成的符號但替換者本身不能是一個純數字。例如:

#define DELAY_TIME 1000 定義常數符號,即用 DELAY_TIME 符號代替 1000

#define KEY1 PORTB,7 用 KEY1 符號代替端口 PORTB 的第 7 引腳 例 3-05

用#define 偽指令定義符號后,可使程序中的變量或指令變得更具實際意義,也使程序變得更易維護。

指令“btfss PORTB,7”和“btfss KEY1”在事先用了例 3-05 中的#define 后編譯的結果是一樣的,但明顯地后者看起來更容易理解,一看就知道這是在測試編號為KEY1 的一個按鍵。

PIC指令功能分類表

類型 助記符 操作說明 命令說明

傳 送 類 MOVF F,dF→d 將F寄存器的內容傳送到F本身(d=1)或W(d=0)(影響狀態(tài)位)Z

MOVWF FW→F 將W寄存器的內容傳送到F,W內容不變-

MOVLW KK→W 將8位立即數傳送到W寄存器-

SWAPF F,dF半字節(jié)交換→dF寄存器的高4位和低4位交換位置后,結果存入F本身(d=1)或W(d=0)中-[!--empirenews.page--]

算 術 運 算 類 ADDWF F,dF+W→dW寄存器的內容和F寄存器的內容相加,結果存入F(d=1)或W(d=0)中C,DC,Z

ADDLW F,dK+W→WW寄存器的內容和8位立即數相加,結果存入WC,DC,Z

INCF F,dF+1→dF寄存器的內容加1后,結果存入W(d=0)或F(d=1)中Z

SUBWF F,dF-W→dF寄存器的內容減去W寄存器的內容,結果存入W(d=0)或F(d=1)中C,DC,Z

SUBLW KK-W→W8位立即數減掉W寄存器的內容,結果存入WC,DC,Z

DECF F,dF-1→dF寄存器的內容減1后,結果存入W(d=0)或F(d=1)中Z

邏 輯 運 算 類 ANDWF F,dF∧W→dW寄存器的內容和F寄存器的內容相與,結果存入F(d=1)或W(d=0)中Z

ANDLW KK∧W→WW寄存器的內容和8位立即數相與,結果存入WZ

IORWF F,dF∨W→dW寄存器的內容和F寄存器的內容相或,結果存入F(d=1)或W(d=0)中Z

IORLW KK∨W→WW寄存器的內容和8位立即數相或,結果存入WZ

XORWF F,dF⊕W→dW寄存器的內容和F寄存器的內容相異或,結果存入F(d=1)或W(d=0)中Z

XORLW KK⊕W→WW寄存器的內容和8位立即數相異或,結果存入WZ

COMF F,dF取反→dF寄存器的內容取反后,結果存入F(d=1)或W(d=0)中Z

CLRF F0→F,寄存器復位F寄存器的內容被清為全0Z

CLRW -0→W,寄存器復位W寄存器的內容被清為全0Z

RLF F,dF帶C循環(huán)左移→d將F寄存器帶C循環(huán)左移,結果存入F本身(d=1)或W(d=0)。C

RRF F,dF帶C循環(huán)右移→d將F寄存器帶C循環(huán)右移,結果存入F本身(d=1)或W(d=0)。C

BCF F,B將F中第B位清0將寄存器的第B位清為0-

BSF F,B將F中第B位置1將寄存器的第B位置1-

程 序 跳 轉 類 INCFSZ F,dF+1→d,結果若為0則跳一步F寄存器的內容加1后,結果存入F本身(d=1)或W(d=0)。如結果為0則跳過下一條指令,否則順序執(zhí)行-

DECFSZ F,dF-1→d,結果若為0則跳一步F寄存器的內容減1后,結果存入F本身(d=1)或W(d=0)。如結果為0則跳過下一條指令,否則順序執(zhí)行-

BTFSC F,BF中第B位為0,則跳一步測試F寄存器的第B位。若F(B)=0,則跳過下一條指令,否則順序執(zhí)行-

BTFSS F,BF中第B位為1,則跳一步測試F寄存器的第B位。若F(B)=1,則跳過下一條指令,否則順序執(zhí)行-

CALL K調用子程序首先將PC+1推入堆棧,然后將11位常數K送入PC(10~0),同時將PCLATH(4,3)→PC(12,11),從而使PC=子程序入口地址-

GOTO K 無條件跳轉將11位常數K送入PC(10~0),同時將PCLATH(4,3)→PC(12,11),從而使PC=新地址-

RETURN -從子程序返回將堆棧頂端單元的內容彈出并送入PC,從而返回主程序斷點處-

RETLW KW帶參數子程序返回將堆棧頂端單元的內容彈出并送入PC,同時8位常數K→W,從而帶著參數返回主程序斷點處-

RETFIE -從中斷服務子程序返回將堆棧頂端單元的內容彈出并送入PC,從而返回主程序斷點處,同時將全局中斷使能位GIE置1,從新開放中斷-

控 制 類SLEEP -進入睡眠方式該指令執(zhí)行后,單片機進入低功耗睡眠模式,時基電路停振TO,PD

CLRWDT -0→WDT將WDT寄存器和分配給它的預分頻器同時清為全0TO,PD

NOP -空操作空操作

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯系該專欄作者,如若文章內容侵犯您的權益,請及時聯系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或將催生出更大的獨角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數字化轉型技術解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關鍵字: AWS AN BSP 數字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術公司SODA.Auto推出其旗艦產品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關鍵字: 汽車 人工智能 智能驅動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務中斷的風險,如企業(yè)系統(tǒng)復雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務連續(xù)性,提升韌性,成...

關鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據媒體報道,騰訊和網易近期正在縮減他們對日本游戲市場的投資。

關鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數據產業(yè)博覽會開幕式在貴陽舉行,華為董事、質量流程IT總裁陶景文發(fā)表了演講。

關鍵字: 華為 12nm EDA 半導體

8月28日消息,在2024中國國際大數據產業(yè)博覽會上,華為常務董事、華為云CEO張平安發(fā)表演講稱,數字世界的話語權最終是由生態(tài)的繁榮決定的。

關鍵字: 華為 12nm 手機 衛(wèi)星通信

要點: 有效應對環(huán)境變化,經營業(yè)績穩(wěn)中有升 落實提質增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務引領增長 以科技創(chuàng)新為引領,提升企業(yè)核心競爭力 堅持高質量發(fā)展策略,塑強核心競爭優(yōu)勢...

關鍵字: 通信 BSP 電信運營商 數字經濟

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術學會聯合牽頭組建的NVI技術創(chuàng)新聯盟在BIRTV2024超高清全產業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現場 NVI技術創(chuàng)新聯...

關鍵字: VI 傳輸協議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯合招商會上,軟通動力信息技術(集團)股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關鍵字: BSP 信息技術
關閉
關閉