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

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機比較轉(zhuǎn)移指令CJNE簡介及舉例

    51單片機比較轉(zhuǎn)移指令CJNE簡介及舉例

    作者: 時間:2018-07-24 來源:網(wǎng)絡(luò) 收藏

    條件轉(zhuǎn)移指令是指在滿足一定條件時進行相對轉(zhuǎn)移。

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

    (1)比較轉(zhuǎn)移指令
    A,#data,rel
    A,direct,rel
    Rn,#data,rel
    CJNE @Ri,#data,rel
    第一條指令的功能是將A中的值和立即數(shù)data比較,如果兩者相等,就次序執(zhí)行(執(zhí)行本指令的下一條指令),如果不相等,就轉(zhuǎn)移,同樣地,我們能將rel理解成標(biāo)號,即:CJNE A,#data,標(biāo)號。這樣利用這條指令,我們就能判斷兩數(shù)是否相等,這在很多場合是非常有用的。但有時還想得知兩數(shù)比較之后哪個大,哪個小,本條指令也具有這樣的功能,如果兩數(shù)不相等,則CPU還會反映出哪個數(shù)大,哪個數(shù)小,這是用CY(進位位)來實現(xiàn)的。如果前面的數(shù)(A中的)大,則CY=0,不然CY=1,因此在程序轉(zhuǎn)移后再次利用CY就可判斷出A中的數(shù)比data大還是小了。
    (2)舉例:
    MOV A,R0
    CJNE A,#10H,L1
    MOV R1,#0FFH
    AJMP L3
    L1: JC L2
    MOV R1,#0AAH
    AJMP L3
    L2: MOV R1,#0FFH
    L3: SJMP L3

    上面的程序中有一條單片機指令我們還沒學(xué)過,即JC,這條指令的原型是JC rel,作用和上面的JZ類似,但是它是判CY是0,還是1進行轉(zhuǎn)移,如果CY=1,則轉(zhuǎn)移到JC后面的標(biāo)號處執(zhí)行,如果CY=0則次序執(zhí)行(執(zhí)行它的下面一條指令)。
    分析一下上面的程序,如果(A)=10H,則次序執(zhí)行,即R1=0。如果(A)不等于10H,則轉(zhuǎn)到L1處繼續(xù)執(zhí)行,在L1處,再次進行判斷,如果(A)>10H,則CY=1,將次序執(zhí)行,即執(zhí)行MOV R1,#0AAH指令,而如果(A)10H,則將轉(zhuǎn)移到L2處指行,即執(zhí)行MOV R1,#0FFH指令。因此最終結(jié)果是:本程序執(zhí)行前,如果(R0)=10H,則(R1)=00H,如果(R0)>10H,則(R1)=0AAH,如果(R0)10H,則(R1)=0FFH。
    弄懂了這條指令,其它的幾條就類似了,第二條是把A當(dāng)中的值和直接地址中的值比較,第三條則是將直接地址中的值和立即數(shù)比較,第四條是將間址尋址得到的數(shù)和立即數(shù)比較,這里就不詳談了,下面給出幾個對應(yīng)的例程。
    CJNE A,10H ;把A中的值和10H中的值比較(注意和上題的區(qū)別)
    CJNE 10H,#35H ;把10H中的值和35H中的值比較
    CJNE @R0,#35H ;把R0中的值作為地址,從此地址中取數(shù)并和35H比較



    關(guān)鍵詞: 51單片機 CJNE

    評論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 长治市| 旅游| 独山县| 嘉鱼县| 崇文区| 民权县| 吴江市| 武清区| 桐梓县| 迁安市| 鹤壁市| 孟连| 昌吉市| 德江县| 资中县| 延安市| 陆河县| 高要市| 万安县| 维西| 泰顺县| 清水县| 南和县| 内乡县| 金沙县| 高淳县| 临澧县| 塘沽区| 双辽市| 瑞金市| 古田县| 平乡县| 隆子县| 财经| 永安市| 哈巴河县| 台江县| 儋州市| 昭苏县| 财经| 海林市|