跟電師傅學單片機(18):單片機控制轉移指令編程案例講解

2021-01-03 電師傅

單片機程序案例:

要求把06H~09H,20個數據按順序放入內部數據存儲器RAM:10H~23H單元中。

案例要求示意圖

一:程序編程

MOV R0,#10H;將單片機內部RAM單元的首地址10H送到工作寄存器 R0中。

MOV R1,#14H;將十進位數20(20個數放入20個單元中)轉成16進位數14H送到工作寄存器R1中。

MOV A,#06H;;將第1個數06H送到單片機累加器A中。

LOOP:MOV @R0,A;把單片機累加器A中的內容送到工作寄存器R0裡面的內容所確定的地址單元中。

是間接尋址方式。LOOP:是標號,表示程序要循環的意思,指令需要重複執行時,可以使用標號LOOP循環來實現。

INC A;加1指令,數據加1,累加器A中的內容加1。例如:剛才是06H,現在加1就是07H。

INC R0;加1指令,地址加1,工作寄存器R0裡面的內容加1。例如:地址單元10H,現在加1就是11H。

DJNZ R1,LOOP;減1非零轉移指令,將工作寄存器R1裡面的內容減1,判斷為零嗎,不為零程序就跳到標號LOOP處執行。共要判斷19次,直到為零時程序才結束,此時20個數也放入要求的20個地址單元中了。

指令判斷轉移示意圖

SJMP $;讓單片機程序停在此處,也就是程序原地踏步。

二:十進位數轉十六進位數

將十進位數20數轉成16進位數,採用除16取餘法,餘數要除到小於16。

就是將十進位數20直接除以16,餘數除到小於16。從最後1個餘數倒著讀到第1個就是16進位數了。

十進位數轉十六進位數示意圖

相關焦點

  • 跟電師傅學單片機(17):單片機控制轉移指令圖文講解2
    上節介紹了單片機無條件轉移指令(4條),本節繼續講解單片機控制轉移類指令。下面介紹有條件轉移指令(8條):指令先判斷後轉移有條件轉移指令,也稱為條件轉移指令:是指令要滿足一定條件才轉移。滿足條件時,程序轉移到程序計數器PC當前值和指令給出的相對地址 rel偏移量相加後得到新的PC地址處執行;當條件不滿足時,程序就順序執行下一條指令。
  • 跟電師傅學單片機(15):單片機邏輯運算指令圖文講解
    累加器A清0和取反指令表累加器A清0指令CLR A;單片機軟體指令功能是將累加器A中的內容清0。影響單片機標誌寄存器PSW中的奇偶標誌位P。累加器A取反指令CPL A;單片機軟體指令功能是將累加器A中的內容全部取反,結果送回A中。影響單片機標誌寄存器PSW中的奇偶標誌位P。常用於單片機某個存儲器單元或某個存儲器區域中帶符號數的求補。二:循環移位指令(共4條)
  • 跟電師傅學單片機(20):單片機位操作指令圖文講解(一)
    位操作指令:指令中的操作數不是字節,而是字節中的某一位,每位取值只能是0或1;指令中的操作對象是單片機內部RAM的位尋址區:20H~2FH單元中的128個位和SFR中的11個可以位尋址的特殊功能寄存器。
  • 跟電師傅學單片機(14):輕鬆學習單片機邏輯運算類指令
    單片機邏輯運算類指令:24條對2個8位二進位數進行與、或、非和異或等單片機邏輯運算,對單片機數據進行邏輯處理,適合於傳送、存儲和輸出等。一:邏輯與指令(共6條)單片機邏輯與指令表特點:是相乘的關係,又稱邏輯乘指令;和0相與,不管原來是什麼,都為0;和1相與,原來是什麼,現在仍然是什麼。
  • 51單片機彙編語言:控制轉移指令有哪些?
    跳轉指令短跳指令 AJMP addr11 PC←addr11,跳轉範圍2k長跳指令 LJMP addr16 PC←addr16,跳轉範圍64k間接跳轉指令 JMP @A+DPTR
  • 51單片機指令快速記憶方法總結
    記住指令的助記符,掌握不同尋址方式的指令操作數的表示方法,為我們記憶彙編指 令打下了基礎。MCS-51指令雖多,但按功能可分為五類, 其中數據傳送類28條,算術運算類24條,邏輯操作類25條,控制轉移類17條,布爾位操作 類17條。在每類指令裡,根據其功能,抓住其源、 目的操作數的不同組合,再輔之以下方法,是完全能記住的。
  • 單片機C語言編程實現對舵機控制
    在智能小車編程過程中,舵機是實現小車避障、循跡的基礎。單片機通過控制舵機實現小車的轉向。本文主要介紹如何使用51單片機實現對舵機進行偏轉角度控制。所使用舵機型號為MG996R,使用晶片為STC89C52。
  • 51單片機難學嗎?其實只要掌握這幾項技能就很容易
    很多人覺得學51單片機很難,那麼真的很難嗎?單片機控制輸出控制信號,基本上都是高低電平,代表1和0,而數位訊號的變化,比如控制如三極體等開關工作,並實現各種通信接口指令與數據的交互。如果連基本概念都不清楚,就更不可能理解單片機控制的方式了。所以要學好模擬電路數字電路,掌握三極體,MOS管的開關作用,常見的器件,運放的使用方法等。
  • 單片機各大分類與詳解
    C語言知識並不難,沒有任何編程基礎的人都可以學,在我看來,初中生、高中生、中專生、大學生都能學會。當然,數學基礎好、邏輯思維好的人學起來相對輕鬆一些。C語言需要掌握的知識就那麼3個條件判斷語句、3個循環語句、3個跳轉語句和1個開關語句。別小看這10個語句,用他們組合形成的邏輯要多複雜有多複雜。
  • 51單片機、STM32單片機、PIC單片機性能對比
    51單片機 應用最廣泛的8位單片機當然也是初學者們最容易上手學習的單片機,最早由Intel推出,由於其典型的結構和完善的總線專用寄存器的集中管理,眾多的邏輯位操作功能及面向控制的豐富的指令系統,堪稱為一代「經典」,為以後的其它單片機的發展奠定了基礎。
  • 我學的仿佛是個「假的」單片機
    機器周期和指令周期。 指令周期;它是指CPU完成一條操作所需的全部時間。每條指令執行時間都是由一個或幾個機器周期組成。MCS-51系統中,有單周期指令、雙周期指令和四周期指令。
  • MCS-51單片機指令系統概述 2
    電子製作 HPOOMCS-51控制轉移指令電子製作 HPOO控制轉移指令用於控制程序的流向,所控制的範圍即為程序存儲器區間,MCS-51系列單片機的控制轉移指令相對豐富,有可對64kB程序空間地址單元進行訪問的長調用、長轉移指令
  • 單片機簡介
    單片機編程是針對某個特定的電路進行的單片機編程是針對某個特定的電路進行的, 這一點和普通的編程不一樣。 編程時很可能要經常參照電路圖。與單片機直接相關的電路大都是數字電路。 數字電路各部分的功能十分明確, 因此相對比較容易掌握。簡單地說,數字電路就是只有「0」和「1」兩種信號的電路。
  • 製作機器人常用的單片機性能特點及使用經驗
    我剛開始學單片機時走了不少彎路,很多朋友和我都有相似的經歷,剛開始接觸單片機,面對琳琅滿目的圖書教材,不知選擇哪本;想實踐時不知到哪買單片機;不知如何編程下載程序……A 對於初學者仔細看本文就是學習單片機的捷徑之一。B 到圖書館或者書店在數十本單片機書中選一本你能看懂,而且覺得案例有趣的「實在、生動、活潑」的單片機書做為你的入門讀物。
  • 單片機編程用C語言還是彙編?
    單片機是一種可編程器件,單片機的出現使硬體設計變得更為簡單,產品的功能也更強大,而程序就是單片機的靈魂。目前功能稍微複雜一點的電子產品,都是以單片機為核心,再加以不通的外設電路實現不通的功能需求。單片機的編程可以通過彙編語言和C語言來實現。
  • 學習單片機1-單片機-電子工程世界網
    另外這種晶片的生產量很大,技術也很成熟,51系列的單片機已經做了十幾年,所以價格就低了。既然如此,單片機的功能肯定不強,幹嗎要學它呢?話不能這樣說,實際工作中並不是任何需要計算機的場合都要求計算機有很高的性能,一個控制電冰箱溫度的計算機難道要用PIII?應用的關鍵是看是否夠用,是否有很好的性能價格比。所以8051出來十多年,依然沒有被淘汰,還在不斷的發展中。
  • 51單片機比較轉移指令CJNE簡介及舉例
    條件轉移指令是指在滿足一定條件時進行相對轉移。A中的值和立即數data比較,如果兩者相等,就次序執行(執行本指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:CJNE A,#data,標號。
  • PIC單片機C語言編程教程(1)
    寫單片機的 C 程序最關鍵的一點是單片機內的資源非常有限,控制的實時性要求又很高,因此,如果沒有對單片機體系結構和硬體資源作詳盡的了解,以筆者的愚見認為是無法寫出高質量實用的 C 語言程序。這就是為什麼前面所有章節中的的示範代碼全部用基礎的彙編指令實現的原因,希望籍此能使讀者對 PIC 單片機的指令體系和硬體資源有深入了解,在這基礎之上再來討論 C 語言編程,就有水到渠成的感覺。
  • 為什麼C語言是最適合單片機編程的高級語言!
    為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不是不能,而是不合適。
  • 最適合單片機編程的高級語言,除了C語言,別無選擇!
    單片機為什麼還在用C語言編程?答案是:C語言是最適合單片機編程的高級語言。 這個問題的意思應該是:現在有很多很好用的高級語言,如java,python,VC等等,為什麼這些語言不能用來編寫單片機程序呢?那麼這個問題的答案就是:不能不能,而是不合適。