RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

51單片機的數(shù)制和指令系統(tǒng)的講解及制作一個單片機最小系統(tǒng)的概述

Wildesbeast ? 來源:未知 ? 2019-09-08 11:01 ? 次閱讀

在講指令系統(tǒng)前我們先來復習一下數(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ù)的相互轉換。

(1)、二進制轉換為十六進制:

整數(shù)部分,從低位開始,小數(shù)部分,從高位開始,每四位一組(不夠四位的補0),轉換為對應的十六進制數(shù)。

例:(1 0001 0011.1100 0111)2=(113.C7)H

(2)、十六進制轉換為二進制:

將十六進制數(shù)的每一位分別轉換為對應的四位二進制數(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匯編語言指令格式與其他微機的指令格式一樣,均由以下幾部分組成:[標號:]操作碼 [操作數(shù)][,操作數(shù)][;注釋]

標號:又稱為指令地址符號,地址的符號化,一般由1到6個字符組成,以字母開頭的字母數(shù)字串,與操作碼之間用冒號分開。

操作碼:是由助記符表示的字符串,它規(guī)定了指令的操作功能。

操作數(shù):是指參加操作的數(shù)據(jù)和數(shù)據(jù)的地址。

注釋:是為該條指令作說明,以便于閱讀。

注意:[ ]中表示為可選項。操作數(shù)可以為1、2、3個,也可以沒有。

不同功能的指令,操作數(shù)作用不同,如:傳送指令多數(shù)有兩個操作數(shù),寫在左面的是目的操作數(shù)(表示操作結果存放的單元地址),寫在右面的稱為源操作數(shù)(指出操作數(shù)的來源)。操作碼和操作數(shù)之間必須用空格分隔,操作數(shù)與操作數(shù)之間必須用逗號“,”分隔。帶方括號項可有可無,稱為可選項。操作碼是指令的核心不可缺少。

2、 指令分類

MCS-51的111條指令分為下面5類:

(1) 數(shù)據(jù)傳送類指令29條,分為片內(nèi)RAM,片外RAM、程序存儲器的傳送指令,交換及堆棧操作指令。

(2) 算術運算類24條,分為加,帶進位加,減,乘,除,加1,減1指令。

(3) 邏輯運算類24條,分為邏輯與、或、異或、移位指令。

(4) 控制程序轉移類17條,分為無條件轉移與調(diào)用,條件轉移,空操作指令。

(5) 布爾變量操作類17條,分為數(shù)據(jù)傳送、位與、位或,位轉移指令。

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) 算術運算指令

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)容相加,再加上進位標志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再減去進位標志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) 控制及轉移指令

LJMP 長跳轉指令

指令格式: LJMP 標號;程序將跳轉到標號處執(zhí)行。

LCALL長調(diào)用子程序指令,常與RET配合使用。

指令格式: LCALL 標號;調(diào)用為標號的子程序去執(zhí)行。

RET子程序返回指令。

DJNZ 條件轉移類指令(自減一指令)

指令格式: LOOP:DJNZ R7,LOOP

執(zhí)行分兩步:

(1) 將R7的內(nèi)容減一后再送到R7中。

(2) 判斷R7是不是等于0

如果是等于0,順序執(zhí)行下面的程序。

如果不等于0,跳轉到標號為LOOP的地方去執(zhí)行。

例:

MOV R7,#3;送循環(huán)次數(shù)。

CLR A;對A清零。

LOOP:INC A;對A加1。

DJNZ R7,LOOP;先讓R7自減1,后判斷是否等于0。

;不等于0跳轉,等于零往下執(zhí)行。

END

運行上面的程序后累加器A的值是多少?

答案:A=03H

學完了指令系統(tǒng)現(xiàn)在我們來實戰(zhàn)一下,一個單片機最小系統(tǒng)的制作

單片機最小系統(tǒng)制作

一、確定任務

開發(fā)單片機最小系統(tǒng)

二、任務分析:

該系統(tǒng)具有的功能:

(1)具有2位LED數(shù)碼管顯示功能。

(2)具有八路發(fā)光二極管顯示各種流水燈。

(3)可以完成各種奏樂,報警等發(fā)聲音類實驗。

(4)具有復位功能。

三、功能分析

(1)兩位LED數(shù)碼管顯示功能,我們可以利用單片機的P0口接兩個數(shù)碼管來現(xiàn)這個功能;

(2)八路發(fā)光二極管顯示可以利用P1口接八個發(fā)光二極管實現(xiàn)這個功能;

(3)各種奏樂、報警等發(fā)聲功能可以采用P2.0這個引腳接一蜂鳴器來實現(xiàn)。

(4)利用單片機的第9腳可以設計成復位系統(tǒng),我們采用按鍵復位;利用單片機的18、19腳可以設計成時鐘電路,我們利用單片機的內(nèi)部振蕩方式設計的。

四、設計框圖

五、硬件電路設計

根據(jù)本系統(tǒng)的功能,和單片機的工作條件,我們設計出下面的電路圖。

六、元件清單的確定:

數(shù)碼管:共陰極2只(分立)

電解電容:10UF的一只

30PF的電容2只

220歐的電阻9只

4.7K的電阻一只

1.2K的電阻一只

4.7K的排阻一只,

12MHZ的晶振一只

有源5V蜂名器一只

AT89S51單片機一片

常開按鈕開關1只

緊鎖座一只(方便芯取下來的,綠色的)

發(fā)光二極管(5MM紅色)8只

萬能板電路版15*17CM

S8550三極管一只

4.5V電池盒一只,導線若干。

七、硬件電路的焊接

按照原理圖把上面的元件焊接好,詳細步驟省略。

八、相關程序編寫

針對上面的電路原理圖,設計出本系統(tǒng)的詳細功能:

(1)、第一個發(fā)光二極管點亮,同時數(shù)碼管顯示“1”。

(2)、第二個發(fā)光二極管點亮,同時數(shù)碼管顯示“2”。

(3)、依次類推到第八個發(fā)光二極管點亮,同時數(shù)碼管顯示“8”。

以上出現(xiàn)的是流水燈的效果

(4)、所有的發(fā)光二極管滅了,同時數(shù)碼管現(xiàn)實“0”。

(5)、數(shù)碼管顯示“1”。

(6)、數(shù)碼管顯示“2、……”直到“9、A、B、C、D、E、F、Y”。

(7)、蜂鳴器發(fā)出九聲報警聲后重復上面所有步驟。

(8)程序如下:

ORG 0000H;偽指令,定義下面的程序代碼(機器代碼)從地址為0000H的單元存放。

LJMP START;跳轉到標號為START的地方去執(zhí)行。

ORG 0030H;偽指令,定義下面的程序代碼(機器代碼)從地址為0030H的單元存放。

START:MOV P1,#0FEH ;點亮第一個發(fā)光二極管。

CLR P2.7 ;送低電平到第一個數(shù)碼管,開啟數(shù)碼管。

CLR P2.6 ;送低電平到第二個數(shù)碼管,開啟數(shù)碼管。

MOV P0,#06H;讓數(shù)碼管顯示“1” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#0FDH;點亮第二個發(fā)光二極管。

MOV P0,#5bH;讓數(shù)碼管顯示“2” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#0FBH;點亮第三個發(fā)光二極管。

MOV P0,#4fH;讓數(shù)碼管顯示“3” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#0F7H;點亮第四個發(fā)光二極管。

MOV P0,#66H;讓數(shù)碼管顯示“4” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#0EFH;點亮第五個發(fā)光二極管。

MOV P0,#6dH;讓數(shù)碼管顯示“5” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#0DFH;點亮第六個發(fā)光二極管。

MOV P0,#7dH;讓數(shù)碼管顯示“6” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#0BFH;點亮第七個發(fā)光二極管。

MOV P0,#07H;讓數(shù)碼管顯示“7” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#7FH;點亮第八個發(fā)光二極管。

MOV P0,#7fH;讓數(shù)碼管顯示“8” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P1,#00H;滅了所有的發(fā)光二極管。

MOV P0,#3FH;讓數(shù)碼管顯示“0” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#06H;讓數(shù)碼管顯示“1” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#5bH;讓數(shù)碼管顯示“2” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#4fH;讓數(shù)碼管顯示“3” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#66H;讓數(shù)碼管顯示“4” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#6dH;讓數(shù)碼管顯示“5” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7dH;讓數(shù)碼管顯示“6” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#07H;讓數(shù)碼管顯示“7” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“8” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#6fH;讓數(shù)碼管顯示“9” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“A” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“b” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“C” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“d” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“E” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“F” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV P0,#7fH;讓數(shù)碼管顯示“Y” 。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

MOV R4,#9;送蜂鳴器的報警次數(shù)。

LOOP:SETB P2.0;不發(fā)聲

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

CLR P2.0;發(fā)聲。

LCALL DELAY;調(diào)用延時子程序,起到延時的目的。

DJNZ R4,LOOP;發(fā)聲九次后向下執(zhí)行。

SETB P2.0;關閉發(fā)聲

LJMP START;跳轉到標號為START處執(zhí)行,循環(huán)本程序。

DELAY:MOV R7,#200;這是延時子程序。

D1:MOV R6,#200

D2:MOV R5,#200

D3:DJNZ R5,D3

DJNZ R6,D2

DJNZ R7,D1

RET;延時子程序返回指令。

END;結束偽指令。

九、利用KEIL C51 軟件對上面的程序進行調(diào)試和編譯,產(chǎn)生*.HEX文件,以便用編程器寫入單片機芯片中。

十、編程器的使用:用編程器把電腦里生成的*.HEX文件寫到芯片中。

十一、產(chǎn)品調(diào)試:通上4.5V(三節(jié)電池)的電源,可以調(diào)試本系統(tǒng),如果沒有錯誤就可以正常工作了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 存儲器
    +關注

    關注

    38

    文章

    7484

    瀏覽量

    163762
  • 51單片機
    +關注

    關注

    274

    文章

    5702

    瀏覽量

    123490
  • 指令系統(tǒng)

    關注

    1

    文章

    81

    瀏覽量

    15642
收藏 人收藏

    評論

    相關推薦

    單片機最小系統(tǒng)原理圖講解

    單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指能夠維持單片機正常工作的最小工作單元。對
    的頭像 發(fā)表于 11-22 14:13 ?1.5w次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>原理圖<b class='flag-5'>講解</b>

    單片機最小系統(tǒng)的相關知識

    單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。對
    發(fā)表于 11-29 15:57 ?1908次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>的相關知識

    單片機最小系統(tǒng)設計介紹

    單片機最小系統(tǒng)設計》 介紹單片機最小系統(tǒng),及單片機知識講解
    發(fā)表于 11-19 10:23 ?29次下載

    MCS-51單片機指令系統(tǒng)講解

    MCS-51單片機指令系統(tǒng)是學習單片機是的難點,所以值得好好學
    發(fā)表于 06-08 16:46 ?4次下載

    51單片機最小系統(tǒng)制作

    51單片機最小系統(tǒng)制作包含電路圖,制作材料等資料
    發(fā)表于 06-29 15:04 ?5次下載

    51單片機最小系統(tǒng)

    單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),AT89S51單片機
    發(fā)表于 12-06 13:39 ?9374次閱讀
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>

    什么是單片機最小系統(tǒng)

    單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。 對
    的頭像 發(fā)表于 03-05 09:14 ?7.7w次閱讀
    什么是<b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>

    51單片機最小系統(tǒng)是什么?51單片機最小系統(tǒng)的電路介紹

    單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng)。 對
    發(fā)表于 08-12 17:33 ?44次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>是什么?<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>的電路介紹

    單片機最小系統(tǒng)的調(diào)試方法_單片機最小系統(tǒng)設計制作及開發(fā)流程

    本文主要介紹了單片機最小系統(tǒng)的調(diào)試方法及單片機最小系統(tǒng)設計制作及開發(fā)流程。
    的頭像 發(fā)表于 04-24 09:35 ?1.3w次閱讀
    <b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>的調(diào)試方法_<b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>設計<b class='flag-5'>制作</b>及開發(fā)流程

    51單片機最小系統(tǒng)講解和應用的資料總結

    單片機最小系統(tǒng), 或者稱為最小應用系統(tǒng), 是指用最少的元件組成的單片機可以工作的系統(tǒng)。對
    發(fā)表于 11-05 14:53 ?22次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>的<b class='flag-5'>講解</b>和應用的資料總結

    設計并制作單片機最小系統(tǒng)

    設計并制作單片機最小系統(tǒng)方法。
    發(fā)表于 03-25 09:47 ?37次下載
    設計并<b class='flag-5'>制作</b><b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>

    單片機最小系統(tǒng)的設計與制作講解

    單片機最小系統(tǒng)的設計與制作講解說明。
    發(fā)表于 04-19 15:19 ?17次下載

    理解51單片機最小系統(tǒng)的工作原理

    51單片機最小應用系統(tǒng)概述要想使用單片機,第一個要搭
    發(fā)表于 11-10 19:05 ?36次下載
    理解<b class='flag-5'>51</b><b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>的工作原理

    單片機最小系統(tǒng)詳解

    單片機最小系統(tǒng),或者稱為最小應用系統(tǒng),是指用最少的元件組成的單片機可以工作的系統(tǒng).對
    發(fā)表于 11-17 09:36 ?14次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>詳解

    單片機最小系統(tǒng)

    、復位電路,如圖 2-1 所示:這張最小系統(tǒng)的電路圖節(jié)選自我們的 KST-51 開發(fā)板原理圖,下面我們就照這張電路圖來具體分析最小系統(tǒng)的三要素。電源這個很好理解,電子設備都需要供電,就連我們的家用電器(手電筒_)也不例外。目前主
    發(fā)表于 12-29 19:36 ?69次下載
    <b class='flag-5'>單片機</b><b class='flag-5'>最小系統(tǒng)</b>
    RM新时代网站-首页