• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機教程:單片機尋址方式與指令系統

    51單片機教程:單片機尋址方式與指令系統

    作者: 時間:2012-06-11 來源:網絡 收藏

    通過前面的學習,我們已經了解了內部的結構,并且也已經知道,要控制,讓它為我們干學,要用,我們已學了幾條,但很零散,從現在開始,我們將要地學習8051部份。

    本文引用地址:http://www.czjhyjcfj.com/article/171313.htm

    一、概述

    1、指令的格式

    我們已知,要讓計算機做事,就得給計算機以指令,并且我們已知,計算機很“笨”,只能懂得數字,如前面我們寫進機器的75H,90H,00H等等,所以指令的第一種格式就是機器碼格式,也說是數字的形式。但這種形式實在是為難我們人了,太難記了,于是有另一種格式,助記符格式,如MOV P1,#0FFH,這樣就好記了。 這兩種格式之間的關系呢,我們不難理解,本質上它們完全等價,只是形式不一樣而已。

    2、匯編

    我們寫指令使用匯編格式,而計算機和單片機只懂機器碼格式,所以要將我們寫的匯編格式的指令轉換為機器碼格式,這種轉換有兩種辦法:手工匯編和機器匯編。手工匯編實際上就是查表,因為這兩種格式純粹是格式不一樣,所以是一一對應的,查一張表格就行了。不過手工查表總是嫌麻煩,所以就有了計算機軟件,用計算機軟件來替代手工查表,這就是機器匯編。

    二、單片機的

    讓我們先來復習一下我們學過的一些指令:MOV P1,#0FFH,MOV R7,#0FFH這些指令都是將一些數據送到對應的位置中去,為什么要送數據呢?第一個因為送入的數能讓燈全滅掉,第二個是為了要實現延時,從這里我們能看出來,在用單片機的編程語言編程時,經常要用到數據的傳遞,事實上數據傳遞是單片機編程時的一項重要工作,一共有28條指令(單片機共111條指令)。下面我們就從數據傳遞類指令開始吧。

    分析一下MOV P1,#0FFH這條指令,我們不難得出結論,第一個詞MOV是命令動詞,也就是決定做什么事情的,MOV是MOVE少寫了一個E,所以就是“傳遞”,這就是指令,規定做什么事情,后面還有一些參數,分析一下,數據傳遞必須要有一個“源”也就是你要送什么數,必須要有一個“目的”,也就是你這個數要送到什么地方去,顯然在上面那條單片機指令中,要送的數(源)就是0FFH,而要送達的地方(目的地)就是P1這個寄存器。在數據傳遞類指令中,均將目的地寫在指令的后面,而將源寫在最后。

    這條指令中,送給P1是這個數本身,換言之,做完這條指令后,我們能明確地知道,P1中的值是0FFH,但是并不是任何時候都能直接給出數本身的。例如,在我們前面給出的單片機延時程序例是這樣寫的:

    MAIN: SETB P1.0     ;(1)

    LCALL DELAY ;(2)

    CLR P1.0      ;(3)

    LCALL DELAY   ;(4)

    AJMP MAIN    ;(5)

    ;以下子程序

    DELAY: MOV R7,#250   ;(6)

    D1: MOV R6,#250   ;(7)

    D2: DJNZ R6,D2    ;(8)

    DJNZ R7,D1   ;(9)

    RET        ;(10)

    END        ;(11)

    表1


    上一頁 1 2 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 南召县| 周至县| 荥阳市| 白城市| 高青县| 定结县| 临高县| 黄梅县| 湖南省| 东丽区| 施甸县| 五指山市| 密云县| 博乐市| 新疆| 芮城县| 南郑县| 泸定县| 昆山市| 浦东新区| 吴桥县| 汶川县| 铜陵市| 岗巴县| 青浦区| 成武县| 洛扎县| 西乌| 溧水县| 沙河市| 漠河县| 安阳县| 老河口市| 全州县| 天门市| 辽阳县| 娄烦县| 水富县| 湟源县| 阜城县| 太湖县|