新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 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比較,如果兩者相等,就次序執(zhí)行(執(zhí)行本指令的下一條指令),如果不相等,就轉移,同樣地,我們能將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后面的標號處執(zhí)行,如果CY=0則次序執(zhí)行(執(zhí)行它的下面一條指令)。
        分析一下上面的程序,如果(A)=10H,則次序執(zhí)行,即R1=0。如果(A)不等于10H,則轉到L1處繼續(xù)執(zhí)行,在L1處,再次進行判斷,如果(A)>10H,則CY=1,將次序執(zhí)行,即執(zhí)行MOV R1,#0AAH指令,而如果(A)10H,則將轉移到L2處指行,即執(zhí)行MOV R1,#0FFH指令。因此最終結果是:本程序執(zhí)行前,如果(R0)=10H,則(R1)=00H,如果(R0)>10H,則(R1)=0AAH,如果(R0)10H,則(R1)=0FFH。
        弄懂了這條指令,其它的幾條就類似了,第二條是把A當中的值和直接地址中的值比較,第三條則是將直接地址中的值和立即數比較,第四條是將間址尋址得到的數和立即數比較,這里就不詳談了,下面給出幾個對應的例程。
        CJNE A,10H ;把A中的值和10H中的值比較(注意和上題的區(qū)別)
        CJNE 10H,#35H ;把10H中的值和35H中的值比較
        CJNE @R0,#35H ;把R0中的值作為地址,從此地址中取數并和35H比較



        關鍵詞: 51單片機 CJNE

        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 喀喇沁旗| 岚皋县| 施秉县| 潢川县| 荣成市| 和顺县| 常德市| 岑巩县| 育儿| 南靖县| 聊城市| 康马县| 曲靖市| 内丘县| 闻喜县| 收藏| 灵台县| 南开区| 托克托县| 丹东市| 都兰县| 藁城市| 兴宁市| 安徽省| 满洲里市| 堆龙德庆县| 石河子市| 渑池县| 江城| 都昌县| 和政县| 东台市| 盐边县| 阿巴嘎旗| 台前县| 德钦县| 杂多县| 井陉县| 平乡县| 恭城| 阳泉市|