⑴ 單片機匯編指令的介紹
單片機匯編指令:為解決某些特定的問題代碼中必須嵌入匯編語言以代替C語言完成的單片機的編程,匯編語言對於程序調試是不可或缺的。它包括:算術操作類指令,布爾變數操作類指令,邏輯操作數指令,控制轉移類指令。
⑵ 單片機匯編指令的 幫幫我呀.
沒有錯啊!是不是硬體有點問題呢?再找找看
好明顯是硬體上的錯了.
每個LED都接上一個限流電阻吧.470歐的就可以了.不要亂接啊.....
⑶ 單片機匯編語言中比較指令
剛好也有這么個困惑,已經解決了,拿出來分享下
比較轉移指令
CJNZ
CJNE
A,#data,rel
CJNE
A,direct,rel
CJNE
Rn,#data,rel
CJNE
@Ri,#data,rel
第一條指令的功能是將A中的值和立即數data比較,如果兩者相等,就次序執行(執行本
指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:CJNEA,
#data,標號。這樣利用這條指令,我們就能判斷兩數是否相等,這在很多場合是非常有用的。
但有時還想得知兩數比較之後哪個大,哪個小,本條指令也具有這樣的功能,如果兩數不相等,則CPU還會反映出哪個數大,哪個數小,這是用CY(進位位)來實現的。如果前面的
數(A中的)大,則CY=0,不然CY=1,因此在程序轉移後再次利用CY就可判斷出A中的數
比data大還是小了。
例:
MOV
A,R0
CJNE
A,#10H,L1
MOV
R1,#0FFH
AJMP
L3
L1:
JC
L2
MOV
R1,#0AAH
AJMP
L3
L2:
MOV
R1,#0FFH
L3:
SJMP
L3
JC是判CY是0,還是1進行轉移,如果CY=1,則轉移到JC後面的標號處
執行,如果CY=0則次序執行(執行它的下面一條指令)。
分析一下上面的程序,如果(A)=10H,則次序執行,即R1=0。如果(A)不等於10H,則轉
到L1處繼續執行,在L1處,再次進行判斷,如果(A)>10H,則CY=1,將次序執行,即執
行MOV
R1,#0AAH指令,而如果(A)<10H,則將轉移到L2處指行,即執行MOV
R1,#0FFH
指令。因此最終結果是:本程序執行前,如果(R0)=10H,則(R1)=00H,如果(R0)>10H,
則(R1)=0AAH,如果(R0)<10H,則(R1)=0FFH。
弄懂了這條指令,其它的幾條就類似了,第二條是把A當中的值和直接地址中的值比較,第
三條則是將直接地址中的值和立即數比較,第四條是將間址定址得到的數和立即數比較,這
里就不詳談了,下面給出幾個對應的常式。
CJNE
A,10H
;把A中的值和10H中的值比較(注意和上題的區別)
CJNE
10H,#35H
;把10H中的值和35H中的值比較
CJNE
@R0,#35H
;把R0中的值作為地址,從此地址中取數並和35H比較
⑷ 如何迅速掌握單片機匯編語言的指令
我認為還是要自己多做幾個小實驗,如果匯編指令記得對的話,那麼可以加深一下印象,如果記錯了的話,那麼改正過來,這樣你除了可以迅速掌握匯編指令,而且也提高了自身的動手能力。
⑸ 單片機匯編指令的簡介
現在單片機的編程大多 是C語言完成
但有時代碼中必須嵌入匯編語言解決某些特定的問題
對於程序調試 匯編語言更是不可或缺。
直接使用匯編指令編寫單片機程序,對硬體的控制更加直接,可以直接操作物理地址,寄存器,埠等;其它更高級的語言(如:C語言)對硬體的控制是依賴於類庫來實現的。並且,對於一些對程序大小和運行速度有非常嚴苛要求的項目而言,都必須使用匯編指令。C語言只是為了方便編寫,與機器打交道的其實都是2進製得代碼,匯編語言就是這些代碼好記憶的名稱和規則,只是比C語言難理解些。
⑹ 單片機匯編指令
DPTR數據指針,是16位的,分為兩個位元組,DPH,DPL
這組指令把DPTR的數據提出來,處理後放回去,下面一般會用於對處理後的外部數據地址進行操作
⑺ 單片機匯編語言
DATA1 BIT P1.0;DATA不能作為符號名定義,改為DATA1 BIT表示P1.0定義為DATA1
SCK BIT P1.1
noACK EQU 0;noACK 定義為0
ACK EQU 1
⑻ 51單片機匯編指令
你在網上搜下「單片機小精靈」,然後下載下來,匯編、C都有。
⑼ 單片機匯編指令的組成
單片機要自動完成計算,它應該具有哪些最重要的部分呢?
我們以打算盤為例計算一道算術題。例:36+163×156-166÷34。現在要進行運算,首先需要一把算盤,其次是紙和筆。我們把要計算的問題記錄下來,然後第一步先算163×156,把它與36相加的結果記在紙上,然後計算166÷34,再把它從上一次結果中減去,就得到最後的結果。
現在,我們用單片機來完成上述過程,顯然,它首先要有代替算盤進行運算的部件,這就是「運算器」;其次,要有能起到紙和筆作用的器件,即能記憶原始題目、原始數據和中間結果,還要記住使單片機能自動進行運算而編制的各種命令。這類器件就稱為「存貯器」。此外,還需要有能代替人作用的控制器,它能根據事先給定的命令發出各種控制信號,使整個計算過程能一步步地進行。但是光有這三部分還不夠,原始的數據與命令要輸入,計算的結果要輸出,都需要按先後順序進行,有時還需等待。
如上例中,當在計算163×156時,數字36就不能同時進入運算器。因此就需要在單片機上設置按控制器的命令進行動作的「門」,當運算器需要時,就讓新數據進入。或者,當運算器得到最後結果時,再將此結果輸出,而中間結果不能隨便「溜出」單片機。這種對輸入、輸出數據進行一定管理的「門」電路在單片機中稱為「口」(Port)。在單片機中,基本上有三類信息在流動,一類是數據,即各種原始數據(如上例中的36、163等)、中間結果(如166÷34所得的商4、余數30等)、程序(命令的集合)等。這樣要由外部設備通過「口」進入單片機,再存放在存貯器中,在運算處理過程中,數據從存貯器讀入運算器進行運算,運算的中間結果要存入存貯器中,或最後由運算器經「出入口」輸出。
用戶要單片機執行的各種命令(程序)也以數據的形式由存貯器送入控制器,由控制器解讀(解碼)後變為各種控制信號,以便執行如加、減、乘、除等功能的各種命令。所以,這一類信息就稱為控制命令,即由控制器去控制運算器一步步地進行運算和處理,又控制存貯器的讀(取出數據)和寫(存入數據)等。第三類信息是地址信息,其作用是告訴運算器和控制器在何處去取命令取數據,將結果存放到什麼地方,通過哪個口輸入和輸出信息等。
存貯器又分為只讀存貯器和讀寫存貯器兩種,前者存放調試好的固定程序和常數,後者存放一些隨時有可能變動的數據。顧名思義,只讀存貯器一旦將數據存入,就只能讀出,不能更改(EPROM、E2PROM等類型的ROM可通過一定的方法來更改、寫入數據——編者注)。而讀寫存貯器可隨時存入或讀出數據。
實際上,人們往往把運算器和控制器合並稱為中央處理單元——CPU。單片機除了進行運算外,還要完成控制功能。所以離不開計數和定時。因此,在單片機中就設置有定時器兼計數器,其基本結構與本連載之(二)中的舉例類似。到這里為止,我們已經知道了單片機的基本組成,即單片機是由中央處理器(即CPU中的運算器和控制器)、只讀存貯器(通常表示為ROM)、讀寫存貯器(又稱隨機存貯器通常表示為RAM)、輸入/輸出口(又分為並行口和串列口,表示為I/O口)等等組成。實際上單片機裡面還有一個時鍾電路,使單片機在進行運算和控制時,都能有節奏地進行。另外,還有所謂的「中斷系統」,這個系統有「傳達室」的作用,當單片機控制對象的參數到達某個需要加以干預的狀態時,就可經此「傳達室」通報給CPU,使CPU根據外部事態的輕重緩急來採取適當的應付措施。
現在,我們已經知道了單片機的組成,餘下的問題是如何將它們的各部分連接成相互關聯的整體呢?實際上,單片機內部有一條將它們連接起來的「紐帶」,即所謂的「內部匯流排」。此匯流排有如大城市的「幹道」,而CPU、ROM、RAM、I/O口、中斷系統等就分布在此「匯流排」的兩旁,並和它連通。從而,一切指令、數據都可經內部匯流排傳送,有如大城市內各種物品的傳送都經過幹道進行。
⑽ 單片機匯編指令 ACALL 怎麼用
格式:ACALL add11 功能:絕對調用子程序
說明:
addr11:11 位目標地址,在下條指令的2K 范圍內轉移或調用