日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
51單片機入門 第五章 指令系統(tǒng)
51單片機入門 第五章 指令系統(tǒng)
 更新時間:2008-7-26 19:56:39  點擊數(shù):2
【字體: 字體顏色

在講指令系統(tǒng)前我們先來復(fù)習(xí)一下數(shù)制的概念。
1.十進制(Decimal)
基數(shù)是10,它有10個數(shù)字符號,即0,l,2,3,4,5,6,7,8,9。其中最大數(shù)碼是基數(shù)減1,即9,最小數(shù)碼是0。
2.二進制(Binary)
基數(shù)是2,它只有兩個數(shù)字符號,即0和1。這就是說,如果在給定的數(shù)中,除0和1外還有其它數(shù),例如 1012,它就決不會是一個二進制數(shù)。
3、十六進制(Hexadecilnal)
基數(shù)是16,它有16個數(shù)字符號,除了十進制中的10個數(shù)可用外,還使用了6個英文字母。它的16個數(shù)字依次是0,l,2,3,4,5,6,7,8,9,A,B,C,D,E,F(xiàn)。其中A至F分別代表十進制數(shù)的10至15,最大的數(shù)字也是基數(shù)減1。
4、二進制數(shù)與十六進制數(shù)的相互轉(zhuǎn)換。
(1)、二進制轉(zhuǎn)換為十六進制:
整數(shù)部分,從低位開始,小數(shù)部分,從高位開始,每四位一組(不夠四位的補0),轉(zhuǎn)換為對應(yīng)的十六進制數(shù)。
例:(1 0001 0011.1100 0111)2=(113.C7)H
(2)、十六進制轉(zhuǎn)換為二進制:
將十六進制數(shù)的每一位分別轉(zhuǎn)換為對應(yīng)的四位二進制數(shù)。
例:(3E9D)H=(11 1110 1001 1101)B
例:( 2ABE)H= 0010 1010 1011 1110B
以后我們在單片機編程方面采用十六進制,這個請大家注意了!
MCS-51系列單片機的指令系統(tǒng)共有111條指令,其中49條是單字節(jié)指令,45條是雙字節(jié)指令,17條是三字節(jié)指令。
MCS-51的指令系統(tǒng)共有33個功能,用匯編編程時只需要42個助記符就能指明這33個功能操作。
1、 指令格式:MCS-51匯編語言指令格式與其他微機的指令格式一樣,均由以下幾部分組成:[標(biāo)號:]操作碼 [操作數(shù)][,操作數(shù)][;注釋]
標(biāo)號:又稱為指令地址符號,地址的符號化,一般由1到6個字符組成,以字母開頭的字母數(shù)字串,與操作碼之間用冒號分開。
操作碼:是由助記符表示的字符串,它規(guī)定了指令的操作功能。
操作數(shù):是指參加操作的數(shù)據(jù)和數(shù)據(jù)的地址。
注釋:是為該條指令作說明,以便于閱讀。
注意:[ ]中表示為可選項。操作數(shù)可以為1、2、3個,也可以沒有。
不同功能的指令,操作數(shù)作用不同,如:傳送指令多數(shù)有兩個操作數(shù),寫在左面的是目的操作數(shù)(表示操作結(jié)果存放的單元地址),寫在右面的稱為源操作數(shù)(指出操作數(shù)的來源)。操作碼和操作數(shù)之間必須用空格分隔,操作數(shù)與操作數(shù)之間必須用逗號“,”分隔。帶方括號項可有可無,稱為可選項。操作碼是指令的核心不可缺少。
2、 指令分類
MCS-51的111條指令分為下面5類:
(1) 數(shù)據(jù)傳送類指令29條,分為片內(nèi)RAM,片外RAM、程序存儲器的傳送指令,交換及堆棧操作指令。
(2) 算術(shù)運算類24條,分為加,帶進位加,減,乘,除,加1,減1指令。
(3) 邏輯運算類24條,分為邏輯與、或、異或、移位指令。
(4) 控制程序轉(zhuǎn)移類17條,分為無條件轉(zhuǎn)移與調(diào)用,條件轉(zhuǎn)移,空操作指令。
(5) 布爾變量操作類17條,分為數(shù)據(jù)傳送、位與、位或,位轉(zhuǎn)移指令。
3. 指令代碼:
(1) 數(shù)據(jù)傳送類
MOV 傳送數(shù)據(jù)
指令格式:MOV A,#DATA;將立即數(shù)DATA送到累加器A中。
例:
MOV P1,#11111110B;把立即數(shù)11111110B傳送到P1口。

MOVX 片外數(shù)據(jù)存儲器傳送數(shù)據(jù)
指令格式:MOVX A,@DPTR;將DPTR指向的地址單元中的內(nèi)容傳送至A中。
例:MOV DPTR,#1000H;將地址1000H傳送到數(shù)據(jù)指針DPTR中。
MOVX A,@DPTR;將DPTR指向的地址單元(1110H)中的內(nèi)容傳送至A中。
MOVC 程序存儲器傳送數(shù)據(jù)
指令格式: MOVC A,@A+DPTR;
例:MOV A,#00H
MOV DPTR,#1000H;將地址1000H傳送到數(shù)據(jù)指針DPTR中。
MOVC A,@A+DPTR;把累加器A的值和DPTR的值相加得到值作為地址,把這個程序存儲器的地址單元中的內(nèi)容傳送到A中。
(2) 算術(shù)運算指令
ADD 不帶進位的加法類指令
指令格式:ADD A,#DATA;把立即數(shù)DATA和累加器A的內(nèi)容相加得到的值存放到累加器A中。A+DATA→A
例:
SETB C;讓累加器C置1
MOV A,#01H;A=01H
ADD A,#01H;A=02H

ADDC 帶進位的加法類指令
指令格式:ADDC A,#DATA;把立即數(shù)DATA和累加器A的內(nèi)容相加,再加上進位標(biāo)志C得到的值存放到累加器A中。A+DATA+C→A
例:
SETB C; 把累加器C置1
MOV A,#01H ; A=01H
ADDC A,#01H; A+DATA+C→A ,A=03H

SUBB帶借位的減法類指令
指令格式:SUBB A,#DATA;把累加器A的內(nèi)容減去立即數(shù)DATA再減去進位標(biāo)志C得到的值存放到累加器A中。A-DATA-C→A

例:
SETB C; 讓累加器C置1
MOV A,#03H; A=03H
SUBB A,#01H; A=01H

INC加一指令
指令格式:INC A ;把A的內(nèi)容加1再存儲到A中。
例:
MOV A,#01H;A=01H
INC A ;A=02H
DEC 減1指令
指令格式:DEC A ;把A的內(nèi)容減1再存儲到A中。
例:
MOV A,#03H ;A=03H
DEC A ;A=02H
(3) 邏輯運算指令
CLR 清零指令
指令格式:CLR A ;把A的內(nèi)容清零再存儲到A中,A=00H。

MOV A,#00000001B;A=00000001B
CLR A ;A=00000000B
CPL 按位取反
指令格式:CPL A ;把A的內(nèi)容按位取反后再存儲到A中。
例:
MOV A,#00000001B;A=00000001B
CPL A ;A=11111110B
ANL 按位取與
指令格式:ANL A ;把A的內(nèi)容按位取與后再存儲到A中。
例:
MOV A,#01000001B ; A=00000001B
ANL A,#01001111B ; A=01000001B
ORL 按位取或
指令格式:ORL A ;把A的內(nèi)容按位取或后再存儲到A中。
例:
MOV A,#00000001B ;A=00000001B
ORL A,#10001111B ;A=10001111B
XRL 按位取異或,相同為0,不同為1。
指令格式:XRL A ;把A的內(nèi)容按位取異或后再存儲到A中。
例:
MOV A,#00000001B;A=00000001B
XRL A,#00001111B ;A=00001110B
RL左移位指令
指令格式:RL A ;把A的內(nèi)容按位左移后再存儲到A中。
例:
MOV A,#00000001B;A=00000001B
RL A ;A=00000010B
RL A ;A=00000100B
RL A;A=00001000B
RR右移位指令
指令格式:RR A ;把A的內(nèi)容按位右移后再存儲到A中。
例:
MOV A,#00000001B ;A=10000000B
RR A ;A=01000000B
RR A ;A=00100000B
RR A ;A=00010000B
(4) 位操作指令
SETB 置1指令,只能對位操作,不可以對字節(jié)操作。
指令格式:SETB BIT ;對位BIT置1。
例:
SETB P1.0 ;P1.0=1
CLR 清零指令,可對位操作,也可對字節(jié)操作。
指令格式:CLR BIT ;對位BIT置0。

SETB C
MOV A,#11110000B
CLR C
CLR A
CPL 取反,可對位操作,也可對字節(jié)操作。
指令格式:CPL BIT ;對位BIT取反。
SETB C
MOV A,#11110000B
CPL C
CPL A

(5) 控制及轉(zhuǎn)移指令
LJMP 長跳轉(zhuǎn)指令
指令格式: LJMP 標(biāo)號;程序?qū)⑻D(zhuǎn)到標(biāo)號處執(zhí)行。
LCALL長調(diào)用子程序指令,常與RET配合使用。
指令格式: LCALL 標(biāo)號;調(diào)用為標(biāo)號的子程序去執(zhí)行。
RET子程序返回指令。
DJNZ 條件轉(zhuǎn)移類指令(自減一指令)
指令格式: LOOP:DJNZ R7,LOOP
執(zhí)行分兩步:
(1) 將R7的內(nèi)容減一后再送到R7中。
(2) 判斷R7是不是等于0
如果是等于0,順序執(zhí)行下面的程序。
如果不等于0,跳轉(zhuǎn)到標(biāo)號為LOOP的地方去執(zhí)行。
例:
MOV R7,#3;送循環(huán)次數(shù)。
CLR A;對A清零。
LOOP:INC A;對A加1。
DJNZ R7,LOOP;先讓R7自減1,后判斷是否等于0。
       ;不等于0跳轉(zhuǎn),等于零往下執(zhí)行。
END
運行上面的程序后累加器A的值是多少?
答案:A=03H

<!-- InstanceEndEditable -->
  • 上一篇: MCS-51單片機定時系統(tǒng)
  • 下一篇: 51單片機入門 第四章 單片機的工作條件
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1