<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開(kāi)發(fā)網(wǎng)

      電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
      搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

      15課:單片機(jī)位操作指令

      作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2017-12-4

          前面那些流水燈的例程,我們已經(jīng)習(xí)慣了“位”一位就是一盞燈的亮和滅,而我們學(xué)的指令卻全都是用“字節(jié)”來(lái)介紹的:字節(jié)的移動(dòng)、加法、減法、邏輯運(yùn)算、移位等等。用字節(jié)來(lái)處理一些數(shù)學(xué)問(wèn)題,比如說(shuō):控制冰箱的溫度、電視的音量等等很直觀,能直接用數(shù)值來(lái)表在?墒侨绻盟鼇(lái)控制一些開(kāi)關(guān)的打開(kāi)和合上,燈的亮和滅,就有些不直接了,記得我們上次課上的流水燈的例程嗎?我們知道送往P1口的數(shù)值后并不能馬上知道哪個(gè)燈亮和來(lái)滅,而是要化成二進(jìn)制才知道。工業(yè)中有很多場(chǎng)合需要處理這類(lèi)開(kāi)關(guān)輸出,繼電器吸合,用字節(jié)來(lái)處理就顯示有些麻煩,所以在8031單片機(jī)中特意引入一個(gè)位處理機(jī)制。

      位尋址區(qū)

      在8031中,有一部份RAM和一部份SFR是具有位尋址功能的,也就是說(shuō)這些RAM的每一個(gè)位都有自已的地址,能直接用這個(gè)地址來(lái)對(duì)此進(jìn)行操作。

      內(nèi)部RAM的20H-2FH這16個(gè)字節(jié),就是8031的位尋址區(qū)?磮D1。可見(jiàn)這里面的每一個(gè)RAM中的每個(gè)位我們都可能直接用位地址來(lái)找到它們,而不必用字節(jié)地址,然后再用邏輯指令的方式。

      能位尋址的特殊功能寄存器

      8031中有一些SFR是能進(jìn)行位尋址的,這些SFR的特點(diǎn)是其字節(jié)地址均可被8整除,如A累加器,B寄存器、PSW、IP(中斷優(yōu)先級(jí)控制寄存器)、IE(中斷允許控制寄存器)、SCON(串行口控制寄存器)、TCON(定時(shí)器/計(jì)數(shù)器控制寄存器)、P0-P3(I/O端口鎖存器)。以上的一些SFR我們還不熟,等我們講解相關(guān)內(nèi)容時(shí)再作詳細(xì)解釋。

      位操作指令

      MCS-51單片機(jī)的硬件結(jié)構(gòu)中,有一個(gè)位處理器(又稱(chēng)布爾處理器),它有一套位變量處理的指令集。在進(jìn)行位處理時(shí),CY(就是我們前面講的進(jìn)位位)稱(chēng)“位累加器”。有自已的位RAM,也就是我們剛講的內(nèi)部RAM的20H-2FH這16個(gè)字節(jié)單元即128個(gè)位單元,還有自已的位I/O空間(即P0.0…..P0.7,P1.0…….P1.7,P2.0……..P2.7,P3.0……..P3.7)。當(dāng)然在物理實(shí)體上它們與原來(lái)的以字節(jié)尋址用的RAM,及端口是完全相同的,或者說(shuō)這些RAM及端口都能有兩種使用辦法。

      位傳送指令

      MOV C,BIT

      MOV BIT,C

      這組指令的功能是實(shí)現(xiàn)位累加器(CY)和其它位地址之間的數(shù)據(jù)傳遞。

      例:MOV P1.0,CY ;將CY中的狀態(tài)送到P1.0管腳上去(如果是做算術(shù)運(yùn)算,我們就能通過(guò)觀察知道現(xiàn)在CY是多少啦)。

      MOV P1.0,CY ;將P1.0的狀態(tài)送給CY。

      位修正指令

      位清0指令

      CLR C ;使CY=0

      CLR bit ;使指令的位地址等于0。例:CLR P1.0 ;即使P1.0變?yōu)?

      位置1指令

      SETB C ;使CY=1

      SETB bit ;使指定的位地址等于1。例:SETB P1.0 ;使P.0變?yōu)?

      位取反指令

      CPL C ;使CY等于原來(lái)的相反的值,由1變?yōu)?,由0變?yōu)?。

      CPL bit ;使指定的位的值等于原來(lái)相反的值,由0變?yōu)?,由1變?yōu)?。

      例:CPL P1.0

      以我們做過(guò)的實(shí)驗(yàn)為例,如果原來(lái)燈是亮的,則執(zhí)行本指令后燈滅,反之原來(lái)燈是滅的,執(zhí)行本指令后燈亮。

      位邏輯運(yùn)算指令

      位與指令

      ANL C,bit ;CY與指定的位地址的值相與,結(jié)果送回CY

      ANL C,/bit ;先將指定的位地址中的值取出后取反,再和CY相與,結(jié)果送回CY,但注意,指定的位地址中的值本身并不發(fā)生變化。

      例:ANL C,/P1.0

      設(shè)執(zhí)行本指令前,CY=1,P1.0等于1(燈滅),則執(zhí)行完本指令后CY=0,而P1.0也是等于1。

      可用下列程序驗(yàn)證:

      ORG 0000H

      AJMP START

      ORG 30H

      START: MOV SP,#5FH

      MOV P1,#0FFH

      SETB C

      ANL C,/P1.0

      MOV P1.1,C ;將做完的結(jié)果送P1.1,結(jié)果應(yīng)當(dāng)是P1.1上的燈亮,而P1.0上的燈還是不亮

      位或指令

      ORL C,bit

      ORL C,/bit

      這個(gè)的功能大家自行分析吧,然后對(duì)照上面的例程,編一個(gè)驗(yàn)證程序,看看你相得對(duì)嗎?

      位條件轉(zhuǎn)移指令

      判CY轉(zhuǎn)移指令

      JC rel

      JNC rel

      第一條指令的功能是如果CY等于1就轉(zhuǎn)移,如果不等于1就次序執(zhí)行。那么轉(zhuǎn)移到什么地方去呢?我們能這樣理解:JC 標(biāo)號(hào),如果等于1就轉(zhuǎn)到標(biāo)號(hào)處執(zhí)行。這條指令我們?cè)谏瞎?jié)課中已講到,不再重復(fù)。

      第二條指令則和第一條指令相反,即如果CY=0就轉(zhuǎn)移,不等于0就次序執(zhí)行,當(dāng)然,我們也同樣理解: JNC 標(biāo)號(hào)

      判位變量轉(zhuǎn)移指令

      JB bit,rel

      JNB bit,rel

      第一條指令是如果指定的bit位中的值是1,則轉(zhuǎn)移,不然次序執(zhí)行。同樣,我們能這樣理解這條指令:JB bit,標(biāo)號(hào)

      第二條指令請(qǐng)大家先自行分析

      下面我們舉個(gè)例程說(shuō)明:

      ORG 0000H

      LJMP START

      ORG 30H

      START:MOV SP,#5FH

      MOV P1,#0FFH

      MOV P3,#0FFH

      L1: JNB P3.2,L2 ;P3.2上接有一只按鈕,它按下時(shí),P3.2=0

      JNB P3.3,L3 ;P3.3上接有一只按鈕,它按下時(shí),P3.3=0

      LJM P L1

      L2: MOV P1,#00H

      LJMP L1

      L3: MOV P1,#0FFH

      LJMP L1

      END

      把上面的例程寫(xiě)入片子,看看有什么現(xiàn)象………

      按下接在P3.2上的按鈕,P1口的燈全亮了,松開(kāi)或再按,燈并不熄滅,然后按下接在P3.3上的按鈕,燈就全滅了。這像什么?這不就是工業(yè)現(xiàn)場(chǎng)經(jīng)常用到的“啟動(dòng)”、“停止”的功能嗎?

      怎么做到的呢?一開(kāi)始,將0FFH送入P3口,這樣,P3的所有引線都處于高電平,然后執(zhí)行L1,如果P3.2是高電平(鍵沒(méi)有按下),則次序執(zhí)行JNB P3.3,L3語(yǔ)句,同樣,如果P3.3是高電平(鍵沒(méi)有按下),則次序執(zhí)行LJMP L1語(yǔ)句。這樣就不停地檢測(cè)P3.2、P3.3,如果有一次P3.2上的按鈕按下去了,則轉(zhuǎn)移到L2,執(zhí)行MOV P1,#00H,使燈全亮,然后又轉(zhuǎn)去L1,再次循環(huán),直到檢測(cè)到P3.3為0,則轉(zhuǎn)L3,執(zhí)行MOV P1,#0FFH,例燈全滅,再轉(zhuǎn)去L1,如此循環(huán)不已。大家能否稍加改動(dòng),將本程序用JB指令改寫(xiě)?

      Tags:單片機(jī)教程,位操作指令  
      責(zé)任編輯:admin
      請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱(chēng):
      1分 2分 3分 4分 5分

      還可以輸入 200 個(gè)字
      [ 查看全部 ] 網(wǎng)友評(píng)論
      關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁(yè)面
      下到頁(yè)底
      晶體管查詢(xún)
      主站蜘蛛池模板: 区三区激情福利综合中文字幕在线一区亚洲视频1| 色综合天天综合网国产成人网| 亚洲国产成人久久综合一| 久久综合九色综合网站| 色噜噜狠狠色综合久| 99久久国产综合精品2020| 日韩字幕一中文在线综合| 人人狠狠综合久久88成人| 国产成人综合色视频精品| 亚洲综合一区二区精品久久| 久久久久久青草大香综合精品| 亚洲精品综合一二三区在线| 一本久到久久亚洲综合| 色综合久久久久网| 久久婷婷五月综合97色一本一本| 色综合小说久久综合图片| 色婷五月综激情亚洲综合 | 91丁香亚洲综合社区| 色偷偷亚洲第一综合网| 亚洲AV综合色区无码二区爱AV| 亚洲偷自拍拍综合网| 亚洲国产综合无码一区二区二三区| 亚洲av综合色区| 奇米综合四色77777久久| 伊人婷婷综合缴情亚洲五月| 国产精品亚洲综合一区| 一本久久a久久精品综合香蕉| 亚洲色偷偷综合亚洲av78| 国精产品自偷自偷综合下载| 色综合久久天天综合| 国产成人综合在线视频| 一本一道久久综合久久| 丁香婷婷亚洲六月综合色| 天天综合亚洲色在线精品| 色悠久久久久久久综合网伊人| 一本一道久久综合久久| 卡通动漫第一页综合专区| 久久综合久久鬼色| 久久一本色系列综合色| 色综合久久久久网| 五月婷婷久久综合|