新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51單片機比較轉移指令CJNE簡介及舉例

        51單片機比較轉移指令CJNE簡介及舉例

        作者: 時間:2018-07-24 來源:網絡 收藏

        條件轉移指令是指在滿足一定條件時進行相對轉移。

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

        (1)比較轉移指令
        A,#data,rel
        A,direct,rel
        Rn,#data,rel
        CJNE @Ri,#data,rel
        第一條指令的功能是將A中的值和立即數data比較,如果兩者相等,就次序執行(執行本指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:CJNE A,#data,標號。這樣利用這條指令,我們就能判斷兩數是否相等,這在很多場合是非常有用的。但有時還想得知兩數比較之后哪個大,哪個小,本條指令也具有這樣的功能,如果兩數不相等,則CPU還會反映出哪個數大,哪個數小,這是用CY(進位位)來實現的。如果前面的數(A中的)大,則CY=0,不然CY=1,因此在程序轉移后再次利用CY就可判斷出A中的數比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

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



        關鍵詞: 51單片機 CJNE

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 岗巴县| 兴仁县| 玉山县| 墨竹工卡县| 皋兰县| 莆田市| 子洲县| 库车县| 岱山县| 古丈县| 延津县| 潜江市| 高台县| 淅川县| 光山县| 临沂市| 高青县| 河北省| 保定市| 阿坝| 阆中市| 安义县| 玛沁县| 九江市| 巧家县| 鄂伦春自治旗| 米泉市| 政和县| 略阳县| 洪洞县| 灵山县| 静海县| 镇赉县| 南岸区| 九寨沟县| 任丘市| 开原市| 卓资县| 隆化县| 乳源| 阜康市|