看到這篇文章的朋友,想必大家對 pic 單片機均具備一定興趣,或對 pic 單片機具備一定使用需求。前文中,小編曾對 pic 單片機匯編語言進行過部分講解。本文中,將對 pic 單片機的清零等指令加以講解,以幫助大家更好掌握 pic 單片機編程。
一、清零指令
1. 寄存器清零指令
實例:CLRW;寄存器 W 被清零
說明:該條指令很簡單,其中 W 為 PIC 單片機的工作寄存器,相當于 MCS-51 系列單片機中的累加器 A,CLR 是英語 Clear 的縮寫字母。
2. 看門狗定時器清零指令。
實例:CLRWDT;看門狗定時器清零(若已賦值,同時清預分頻器)
說明:WDT 是英語 Watchdog Timer 的縮寫字母。CLR 見上述說明。注意該兩條指令無操作數。
3. 寄存器 f 清零指令。指令格式:CLRF f
實例:CLRF TMRO;對 TMRO 清零
說明:在 PIC 系列 8 位單片機中,常用符號 F(或 f)代表片內的各種寄程器和 F 的序號地址。F 取值按 PIC 系列不同型號而不同,一般為 Ox00~Ox1F/7F/FF。TMRO 代表定時器 / 計數器 TMRO,所以 CLRF 對寄程器清零,采用了直接尋址方式直接給出要訪問的寄存器 TMRO。
4. 位清零指令。指令格式 BCF f,b
實例:BCF REG1,2;把寄存器 REG1 的 D2 位清零
說明:BCF 是英語 Bit Clear F 的縮寫。指令格式中的 F,同上說明;符號 b 是表示 PIC 片內某個 8 位數據寄存器 F 的位號(或位地址),所以 b 的取值為 0~7 或 D0~D7。實例中 REG 是 Register 的縮寫。實例中的 2 代表指令格式中的 b=2 即寄存器 REG1 的 D2 位。
通過上述四條清零指令格式和實例,可以說明,學習 PIC 系列 8 位單片機的指令時應首先了解指令的助記符意義(功能),再有就是它的表達方式。初學者沒有必要死記指令,重要是理解和實踐。
二、面向字節、常數與控制操作的指令
1. 傳送立即數至工作寄存器 W 指令
指令格式:MOVLW k;k 表示常數、立即數和標號
說明:MOVLW 是 Move Literal to w 的縮寫
實例:MOVL 0x1E;常數 30 送 W
2.I/O 口控制寄存器 TRIS 設置指令
指令格式;TRIS f
說明;TRIS f 是 Load TRIS Register 的縮寫。其功能是把工作寄存器 W 的內容送入 I/O 口控制寄存器 f。當 W=0 時,置對應 I/O 口為輸出;W=1,置 I/O 口為輸入。
實例:MOVLW 0x00 ;把 00H 送入 W
TRIS RA ;置 PIC RA 口為輸出
MOVLW 0xFF ;把 FFH 送入 W
TRIS RB ;置 PIC RB 口為輸入
說明:這是 PIC 匯編語言中常用的幾條指令,即設置某個 I/O 口(這里是 RA 口和 RB 口)為輸入或輸出的語句。可見,識讀指令時,一應充分理解語句格式的功能,二應前后聯系閱讀。
3.W 寄存器內容送寄存器 f(W 內容保持不變)指令
指令格式:MOVWF f
說明:MOVWF 是 Move W to f 的縮寫
實例:MOVLW 0x0B;送 0BH 送 W
MOVWF 6 ;送 W 內容到 RB 口
說明:第一條指令 0x0B(常數 11)送工作寄存器 W,第二條指令,把 W 內容常數 11 送到寄存器 F6 中,查表 F6 即為 RB 口,所以 PORT_B(B 口)=0BH=D11
4. 寄存器 f 傳送指令
指令格式:MOVF f,d
說明:MOVF 是 Move f 的縮寫。F 代表 PIC 中的某個寄存器。指令中的 d 規定:d=0 時,f 內容送 W;d=1 時,f 內容送寄存器。
實例:MOVF 6,0 ;RB 口內容送 W
MOVWF 8 ;RB 口內容送 f8
說明:第一條指令中的 6 代表寄存器 f=6,查寄存器表 f=6 為 RB 口;0 代表 d=0,代表選擇的目標為寄存器 W。第二條指令中的 8 代表寄存器 f=8。所以兩條指令結果是把 RB 口的內容送 f8。至于 f8 內容是多少?還應在匯編語言開始時附加指令,這里從略。
5. 空操作指令
指令格式:NOP
說明:NOP 是英語 No OperaTIon 的縮寫。NOP 無操作數,所以稱為空操作。執行 NOP 指令只使程序計數器 PC 加 1,所以占用一個機器周期。
實例:MOVLW 0xOF;送 OFH 到 W
MOVWF PORT_B ;W 內容寫入 B 口
NOP ;空操作
MOVF PORT_B,W ;讀操作
說明:該三條指令是一種對 I/O 口的 B 口連續操作的實例,其目的達到寫入 B 口的內容要讀出時,應保證寫、讀之間有個穩定時間,因此加入了空操作指令 NOP。
6. 無條件跳轉指令
指令格式:GOTO k
說明:執行該條指令時,將指令轉移到指定的地址(跳轉)。指令中的 k,常與程序中的標號聯系起來。
實例:見第 9 條指令中
7. 寄存器內容減 1,結果為零的間跳指令
指令格式:DECFSZ f,d
說明:DECFSZ 是英語 Decrement f,Skip of not 0 的縮寫。符號 f,d 代表的意義,前述已作說明。該條指令是指寄存器的內容減 1 存入 W(d=0)或 f(d=1)中。若指令執行結果減 1 不為零,指令順序執行;為零時,就間跳下一條指令后再執行(等效順序執行一條空指令 NOP),實際指令中,當 d=1 時,該項常被略去。
8. 寄存器內容加 1,結果為零間跳指令
指令格式:INCFSZ f,d
說明:INCFSZ 是英語 Increment f,Skip of 0 的縮寫。該條指令與上一條(7)指令差別僅在于“1”上,即執行這條指令時,寄存器 f 內容加 1,若結果不為零,則指令順序執行;為零則指令間跳執行。執行這條指令的其它邏輯關系與上條相同。
9. 子程序返回指令
指令格式:RETLW k
說明:RETLW 是 Return Literal to W 的縮寫。該指令代表子程序返回,返回前先把 8 位立即數送 W。
上一篇:pic單片機匯編語言講解(上)
下一篇:基于PIC單片機的步進電機自適應控制技術研究
推薦閱讀
史海拾趣
隨著電子行業的快速發展,APM意識到只有不斷創新才能在市場中立足。于是,公司加大了對研發的投入,積極引進高端人才,并與多所高校和研究機構建立了合作關系。經過幾年的努力,APM成功研發出了一款具有自主知識產權的高性能模擬芯片,填補了國內市場的空白。這款芯片在信號處理、通信等領域具有廣泛應用前景,為APM帶來了可觀的收益。
在當今社會,綠色環保和可持續發展已成為企業發展的重要趨勢。Excelitas公司積極響應這一趨勢,致力于研發和生產綠色環保的產品。通過采用環保材料和生產工藝,公司成功降低了產品的能耗和排放。同時,公司還積極參與環保公益活動,倡導綠色生活方式。這些舉措不僅提升了公司的品牌形象,還為社會的可持續發展做出了積極貢獻。
請注意,以上故事僅為基于假設和一般行業趨勢構建的框架性描述,并不代表Excelitas公司的實際發展歷程。如有需要,建議您查閱相關官方資料或新聞報道以獲取更準確的信息。
ATP深知,優質的產品需要優質的服務來支撐。因此,公司一直致力于提升客戶服務水平,為客戶提供最優質的產品、最具競爭力的價格和最優質的服務。ATP通過建立完善的售后服務體系,及時解決客戶在使用過程中遇到的問題,贏得了客戶的信任和好評。同時,公司還積極開展市場調研,了解客戶需求,不斷優化產品和服務,以滿足市場的不斷變化。
這五個故事展示了ATP Electronics在電子行業中的發展歷程和取得的成就。通過技術創新、推出工業級產品、踐行環保理念、實施全球化戰略以及提升優質服務,ATP成功地在激烈的市場競爭中脫穎而出,成為了閃存卡市場的領軍企業。
面對工業應用領域的特殊需求,ATP敏銳地捕捉到了市場機遇。公司成功推出了業界首款工業級SLC e.MMC產品E800Pi,這款產品以其高達6萬次的單元擦寫耐久性和出色的耐高溫、交叉溫度能力,受到了工業領域的廣泛認可。E800Pi的推出,不僅拓寬了ATP的產品線,也進一步提升了公司在工業存儲解決方案領域的市場地位。
為了進一步提高競爭力,AOTC開始尋求與上下游企業的合作。通過與原材料供應商、生產設備制造商以及銷售渠道商建立緊密的合作關系,公司成功實現了產業鏈的整合,降低了生產成本,提高了生產效率。此外,公司還與其他科技公司開展戰略合作,共同研發新產品,拓展新市場。
隨著全球對可持續發展的關注度不斷提高,AVG也積極響應這一趨勢,將可持續發展理念融入公司的戰略和運營中。公司注重環保和節能減排,采用環保材料和生產工藝,減少對環境的影響;同時,AVG還積極參與社會公益事業,為社會做出貢獻。這些舉措不僅提升了AVG的社會形象,也為公司的長遠發展奠定了堅實的基礎。
這些故事只是AVG Semiconductors(HITEK)在電子行業發展中眾多精彩瞬間的一部分。通過技術創新、市場擴張、合作伙伴關系的建立以及應對挑戰和危機的能力,AVG不斷壯大自身實力,為電子行業的發展做出了重要貢獻。未來,AVG將繼續秉持創新精神和社會責任感,在電子行業中書寫更加輝煌的篇章。
在壇子閑逛,看到了一個老早前的帖子,覺得不錯,來分享下: 自從INTEL公司于1971年生產第一顆MCU INTEL4004開始,就標志著計算機正式形成了通用計算機系統和嵌入式計算機系統兩大分支。這么多年來,嵌入式系統中的嵌入式芯片已經取得了長足的發展 ...… 查看全部問答∨ |
|
我個人有點健忘。所以有好些時候好些東西剛放下,一回頭就找不到了。你象手機[有電時還好說,用另一個手機打]充電器等等。我有一個想法各位幫忙看行不行的通。先弄一個總的發設裝置上面有數字鍵。再弄一些小的接收器,上面有對應的號碼,123456。。 ...… 查看全部問答∨ |
兼職MCU,DSP,ARM,FPGA,CPLD芯片程序的破解 本人擅長于MCU,DSP,ARM,FPGA,CPLD程序的破解和電路板的抄板,原理圖和PCB的繪制,破解的成功率非常高。同時還承擔單片機系統以及中央空調等方面的開發。如有需要請聯系我。sale.jiemi@gmail.com … 查看全部問答∨ |
這是大致的電路圖。由P1.4和P1.5控制電機的正反轉。通過P1.7(A7口)采樣信號,經過A/D轉換從P1.2口輸出PWM波,也就是利用滑動變阻器改變電機轉速。我想知道如何進行A/D采樣?采樣的結果是如何通過P1.2口輸出?我這個思路正確嗎?希望能給出相關代 ...… 查看全部問答∨ |