<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機的指令系統(tǒng)及試驗

          51單片機的指令系統(tǒng)及試驗

          作者: 時間:2013-04-03 來源:網(wǎng)絡(luò) 收藏

          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) 控制及轉(zhuǎn)移指令
          LJMP 長跳轉(zhuǎn)指令
          指令格式: LJMP 標號;程序?qū)⑻D(zhuǎn)到標號處執(zhí)行。
          LCALL長調(diào)用子程序指令,常與RET配合使用。
          指令格式: LCALL 標號;調(diào)用為標號的子程序去執(zhí)行。
          RET子程序返回指令。
          DJNZ 條件轉(zhuǎn)移類指令(自減一指令)
          指令格式: LOOP:DJNZ R7,LOOP
          執(zhí)行分兩步:
          (1) 將R7的內(nèi)容減一后再送到R7中。
          (2) 判斷R7是不是等于0
          如果是等于0,順序執(zhí)行下面的程序。
          如果不等于0,跳轉(zhuǎn)到標號為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

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

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

          一、確定任務(wù)
          開發(fā)單片機最小系統(tǒng)
          二、任務(wù)分析:
          該系統(tǒng)具有的功能:
          (1)具有2位LED顯示功能。
          (2)具有八路發(fā)光二極管顯示各種流水燈。
          (3)可以完成各種奏樂,報警等發(fā)聲音類實驗。
          (4)具有復位功能。
          三、功能分析
          (1)兩位LED顯示功能,我們可以利用單片機的P0口接兩個來現(xiàn)這個功能;
          (2)八路發(fā)光二極管顯示可以利用P1口接八個發(fā)光二極管實現(xiàn)這個功能;
          (3)各種奏樂、報警等發(fā)聲功能可以采用P2.0這個引腳接一蜂鳴器來實現(xiàn)。
          (4)利用單片機的第9腳可以設(shè)計成復位系統(tǒng),我們采用按鍵復位;利用單片機的18、19腳可以設(shè)計成時鐘電路,我們利用單片機的內(nèi)部振蕩方式設(shè)計的。

          蜂鳴器相關(guān)文章:蜂鳴器原理


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();