pic微控制器怎麼使用者組合語言實現位取反?

時間 2023-05-27 10:15:04

1樓:歸秋梵悌

這個程式對於初學者來說綜合性比較高。由於程式比較長,就不一一寫出了。首先你可以定義三個8位暫存器如r2,r3,r4作為計數的分,秒,百分之一秒為、十分之一秒位。

程式初始化設定相應的定時器模式和外部中斷方式,開啟相應的中斷。用定時器產生乙個10ms的中斷開始計數。用外部中斷控制計時,你可以設定乙個標誌位,沒按下一次按鍵,標誌位取反,就能控制計數的繼續和暫停。

至於時間清零,就很簡單了,判斷某一管腳為1或0時,上面三個8位暫存器如r2,r3,r4全部清零就行了。

2樓:柑隙缺脭

1、pic微控制器的組合語言中,目前還沒有直接能對位取反的指令,只有對暫存器取反的指令,比如: comf f,d ; 這條語句中「f」是暫存器的名稱,當「d=1」時,結果存入「f」,當「d=0」時,結果存入「w」。這個「w」書面解釋是工作暫存器。

可理解為過渡暫存器或臨時暫存器,做中轉資料用。 2、在組合語言中要實現位取反,可通過位狀態檢測判斷來對位進行「置1」或「清零」,詳見以下程式。 目的:

將暫存器 protb,3 取反;**btfss portb,3 ; 檢測portb,3位,為1跳轉qingling。 goto zhiyi ; 為0跳轉到 ; 清零程式段,這是網路標號,可理解為一段程式的名稱。

bcf portb,3 ; 判斷之前portb,3位為1,這句作用是將 portb,3 清零 。 goto work ; 跳轉到 work 程式段繼續執行。zhiyi ; 置1程式段, 這是網路標號,可理解為一段程式的名稱。

bsf portb,3 ; 判斷之前portb,3位為0,這句作用是將 portb,3 置1。 goto work ; 跳轉到 work 程式段繼續執行。work ..

注意注意,程式設計時,指令必須用tab鍵空出一格,網路標號必須頂格;**pic微控制器怎麼使用者組合語言實現位取反?

3樓:l清燉鯊魚

1、pic微控制器的組合語言中,目前還沒有直接能對位取反的指令,只有對暫存器取反的指令,比如:

comf f,d ;

這條語句中「f」是暫存器的名稱,當「d=1」時,結果存入「f」,當「d=0」時,結果存入「w」。這個「w」書面解釋是工作暫存器。可理解為過渡暫存器或臨時暫存器,做中轉資料用。

2、在組合語言中要實現位取反,可通過位狀態檢測判斷來對位進行「置1」或「清零」,詳見以下程式。

目的:將暫存器 protb,3 取反。

btfss portb,3 ; 檢測portb,3位,為1跳轉qingling。

goto zhiyi ; 為0跳轉到zhiyi。

qingling ; 清零程式段,這是網路標號,可理解為一段程式的名稱。

bcf portb,3 ; 判斷之前portb,3位為1,這句作用是將 portb,3 清零 。

goto work ; 跳轉到 work 程式段繼續執行。

zhiyi ; 置1程式段, 這是網路標號,可理解為一段程式的名稱。

bsf portb,3 ; 判斷之前portb,3位為0,這句作用是將 portb,3 置1。

goto work ; 跳轉到 work 程式段繼續執行。work

注意注意,程式設計時,指令必須用tab鍵空出一格,網路標號必須頂格。

4樓:匿名使用者

用comf指令。

例如對於乙個自定義的變數temp

pic10、pic12、pic16系列微控制器用 comf temp,1

pic18系列微控制器用 comf temp,1,0pic24、dspic系列微控制器用 com temp (注意這兩個系列的微控制器用的彙編的不是comf,而是com)

另外pic32系列微控制器沒用過其彙編,所以沒法說是怎麼寫。

5樓:飛魚的自由飛翔

一般微控制器都有按位異或指令,比如對二進位制數10101010b的bit2和bit3進行取反10101010b^00001100b=10100110b即與其異或的常熟相應位為0,則原數的相應位不變;若常熟相應位為1,則原數的相應位取反。

6樓:匿名使用者

最簡單的辦法就是:xorlw b'00001000',例子就是將第三位取反。

按照邏輯異或的法則,任何數和1異或,結果為其反碼。故此指令可以把任意位資料反轉。

7樓:愛芯工作室

你要哪位,拿去與「1」異或一下。

比如ram1位1

movlw b'00000010'

xorwf ram1,f

這個很方便。

8樓:網友

暫存器內容取反指令。

指令格式:comf f,d

說明:其中d=1時,操作(f)→f;

d=0時,操作(f)→w。

功能:暫存器f內容取反後送入w(d=0)或f自身(d=1).

例項: org 0x1ff

goto main

org 0delay 。。

main movlw 0;主程式開始。

trts 5;設定ra口為輸出。

bcf 5,0;設定ra口為輸出。

loop call delay;閃動延時comf 5 ;ra口求反(亮-滅-亮。。。控制)goto loop;迴圈。

說明:上述指令是一種pic16c54led發光控制實驗部分程式。其中延時子程式delay未列出,但不影響本條指令的識讀。

程式中的主程式開始的三條指令,均已介紹過,緊跟著的call指令是呼叫執行子程式,其入口位址為標號delay。子程式執行結束後,又執行comf 5的led發光亮-滅。。。亮-滅。。。

控制指令。後面一條goto loop指令是達到led迴圈點亮的目的。

微控制器組合語言問題,微控制器,組合語言問題,懂彙編麻煩指教下。

看這個簡單的程式 org 0000h ljmp st org 0100h st mov p2,00h p2口控制數碼管,讓所有的數碼管都有效。mov p0,0a4h p0口控制輸出字 sjmp 原地踏步 end在這裡,sjmp是死迴圈,但是我們發現如果沒有sjmp,無論我們設計的控制字是多少,數碼管...

微控制器的用組合語言程式設計,微控制器的用組合語言程式設計

k1 equ p1.0 k2 equ p1.1 k3 equ p1.2 org 0000h ljmp main org 000bh ljmp t0isr org 0030h main mov tmod,11h mov th0,high 65536 50000 mov tl0,low 65536 50...

微控制器彙編問題,微控制器組合語言的問題

改好了,可以編譯。但是,程式設計的思路,可能還有錯。org 0000h ljmp main org 0003h ljmp pint0 org 0200h main mov ie,81h cpu開放中斷,int0允許中斷setb it0 外部中斷為邊沿觸發方式mov sp,30h 指標入口位址。set...

如何學習微控制器的組合語言,想學習微控制器組合語言,怎樣學入門比較快呢

我也學習微控制器定址有很多方式 舉幾個例子給你吧 1.暫存器定址 暫存器定址就是運算元存放在暫存器中,指令中指定的暫存器的內容就是運算元。2.直接定址 直接定址方式就是在指令中直接給出運算元所在儲存單元的位址。此時,指令中運算元部分是運算元所在位址。3.立即數定址 立即數定址就是運算元在指令中直接給...

微機原理裡的組合語言與微控制器裡的組合語言有什麼不同

我很負責的告訴樓上 8086是16位機 區別 你這叫人怎麼說,都屬於組合語言,是低階語言,各個語法及方式都有不同之處。難道你能問拼音和英語音標有什麼區別麼?有點像,但是你能具體說出哪個不一樣麼?微機原理講80x86 cpu的組合語言,微控制器講某種微控制器 通常是8051 的組合語言,兩種cpu的體...