條件轉移指令是指在滿足一定條件時進行相對轉移。
判A內容是否為0轉移指令
JZ rel
JNZ rel
第一指令的功能是:如果(A)=0,則轉移,不然次序執行(執行本指令的下一條指令)。轉移到什么地方去呢?如果按照傳統的辦法,就要算偏移量,很麻煩,好在現在我們能借助于機器匯編了。因此這第指令我們能這樣理解:JZ 標號。即轉移到標號處。下面舉一例說明:
MOV A,R0
JZ L1
MOV R1,#00H
AJMP L2
L1: MOV R1,#0FFH
L2: SJMP L2
END
在執行上面這段程序前如果R0中的值是0的話,就轉移到L1執行,因此最終的執行結果是R1中的值為0FFH。而如果R0中的值不等于0,則次序執行,也就是執行 MOV R1,#00H指令。最終的執行結果是R1中的值等于0。
第一條指令的功能清楚了,第二條當然就好理解了,如果A中的值不等于0,就轉移。把上面的那個例程中的JZ改成JNZ試試吧,看看程序執行的結果是什么?
比較轉移指令
CJNE A,#data,rel
CJNE A,direct,rel
CJNE Rn,#data,rel
CJNE @Ri,#data,rel
第一條指令的功能是將A中的值和立即數data比較,如果兩者相等,就次序執行(執行本指令的下一條指令),如果不相等,就轉移,同樣地,我們能將rel理解成標號,即:CJNE A,#data,標號。這樣利用這條指令,我們就能判斷兩數是否相等,這在很多場合是非常有用的。但有時還想得知兩數比較之后哪個大,哪個小,本條指令也具有這樣的功能,如果兩數不相等,則CPU還會反映出哪個數大,哪個數小,這是用CY(進位位)來實現的。如果前面的數(A中的)大,則CY=0,不然CY=1,因此在程序轉移后再次利用CY就可判斷出A中的數比data大還是小了。
例:
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比較
循環轉移指令
DJNZ Rn,rel
DJNZ direct,rel
第一條指令在前面的例程中有詳細的分析,這里就不多談了。第二條指令,只是將Rn改成直接地址,其它一樣,也不多說了,給一個例程。
DJNZ 10H,LOOP
3.調用與返回指令
(1)主程序與子程序 在前面的燈的實驗中,我們已用到過了子程序,只是我們并沒有明確地介紹。子程序是干什么用的,為什么要用子程序技術呢?舉個例程,我們數據老師布置了10道算術題,經過觀察,每一道題中都包含一個(3*5+2)*3的運算,我們能有兩種選擇,第一種,每做一道題,都把這個算式算一遍,第二種選擇,我們能先把這個結果算出來,也就是51,放在一邊,然后要用到這個算式時就將51代進去。這兩種辦法哪種更好呢?不必多言。設計程序時也是這樣,有時一個功能會在程序的不一樣地方反復使用,我們就能把這個功能做成一段程序,每次需要用到這個功能時就“調用”一下。
(2)調用及回過程:主程序調用了子程序,子程序執行完之后必須再回到主程序繼續執行,不能“一去不回頭”,那么回到什么地方呢?是回到調用子程序的下面一條指令繼續執行(當然啦,要是還回到這條指令,不又要再調用子程序了嗎?那可就沒完沒了了……)。參考圖1
調用指令
LCALL addr16 ;長調用指令
ACALL addr11 ;短調用指令
上面兩條指令都是在主程序中調用子程序,兩者有一定的區別,但在開始學習單片機的這些指令時,能不加以區別,而且能用LCALL 標號,ACALL 標號,來理解,即調用子程序。
(5)返回指令則說了,子程序執行完后必須回到主程序,如何返回呢?只要執行一條返回指令就能了,即執行 ret指令
4.空操作指令
nop 就是 空操作,就是什么事也不干,停一個周期,一般用作短時間的延時。
上一篇:13課:單片機邏輯與或異或指令祥解
下一篇:15課:單片機位操作指令
推薦閱讀
史海拾趣
Astema公司自創立之初,就專注于研發創新的電子技術。公司投入大量資源于研發部門,不斷推出具有競爭力的新產品。其中,一款具有高效能、低功耗特點的芯片產品,在市場上獲得了巨大成功,為公司帶來了可觀的收入。這一成功促使Astema在行業內建立了良好的聲譽,吸引了更多的客戶和合作伙伴。
隨著全球環保意識的不斷提高,AMRI Enterprise Co Ltd積極響應綠色發展的號召,致力于推動公司的可持續發展。公司采用環保材料和節能技術,降低產品生產過程中的能耗和排放。同時,AMRI還加強廢棄物的處理和回收利用,減少對環境的影響。這些舉措不僅提升了公司的社會形象,也為公司的長遠發展奠定了堅實的基礎。
這些故事雖然是虛構的,但它們基于電子行業常見的發展趨勢和模式。實際的AMRI Enterprise Co Ltd公司的發展過程可能有所不同,如果您需要關于該公司的真實信息,建議查閱相關新聞報道、行業報告或公司官網等官方渠道。
在電子行業中,產品質量是企業生存和發展的關鍵。EMLSI公司深知這一點,因此始終將品質管理放在首位。公司建立了嚴格的質量管理體系,從原材料采購到產品生產的每一個環節都進行嚴格把關。同時,EMLSI還注重與客戶的溝通和反饋,及時解決客戶在使用過程中遇到的問題。這種對品質的執著追求讓EMLSI贏得了客戶的信任和忠誠。
作為汽車電子領域的佼佼者,Hosiden在汽車市場的深耕與布局尤為引人注目。公司針對汽車行業的特殊需求,開發了一系列高性能、高可靠性的電子連接器和電纜產品。這些產品不僅滿足了汽車制造商對產品質量和性能的高標準要求,還通過提升數據傳輸速度和降低電磁干擾等方式,為汽車行業的發展提供了有力支持。同時,Hosiden還積極參與汽車行業的標準制定和技術交流活動,為行業的發展貢獻了自己的智慧和力量。
在發展過程中,長江微電始終堅持自主創新之路。公司注重人才培養和團隊建設,積極引進高端人才和先進技術。同時,公司還建立了完善的研發體系和創新機制,鼓勵員工發揮創新精神和創造力。通過自主創新,長江微電在電感產品領域取得了多項核心技術和專利成果,為公司的持續發展提供了強大動力。
以上五個故事分別從不同角度展現了長江微電(CJIANG)公司的發展歷程和成就。這些故事不僅記錄了公司的發展歷程和成長軌跡,也彰顯了其堅韌不拔、創新求變的精神和追求卓越、服務客戶的理念。
為了滿足市場需求和降低成本,東晶電子不斷進行產能擴張和自動化升級。公司引進了國際先進的生產設備和技術,提高了生產效率和產品質量。同時,公司還加大了對自動化設備的投入,減少了人力成本,提高了生產效率。這些措施不僅提升了公司的競爭力,也為公司的長遠發展奠定了基礎。
請教一些關于at89s52的菜鳥問題 我打拴用at89s52作一個正弦波的發生器,外用ad9851,我把兩者連號后發現了一件事:我不會連at89s52的外圍電路!!我也覺得很丟臉,希望大家回答我這幾個問題: 1,當然是at89s52的REST怎樣連? ...… 查看全部問答∨ |
|
要個免費的,分不夠可以+ 驅網我去看了,要高級會員才能下 如果您方便,發到我郵箱也可以,謝謝 power.du@gmail.com 再次感謝!!!… 查看全部問答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:09 編輯 (慳錢十月)史上超值套件!不容錯過! 大家好!以下特向壇友介紹一套超值51+AVR學習開發板,希望對于學習相關知識的朋友有點指向作用   ...… 查看全部問答∨ |
關于熱式紅外傳感器,我相信很多人都玩弄過,而且玩得也非常的好,本來沒啥必要再寫什么心得與大家分享,而且怕寫不好誤導了人家。為了完成交代的任務,我也老生長談寫一點湊個數!! 房間這組的安防是通過熱式紅外傳感器的檢測來實現的。 我用 ...… 查看全部問答∨ |
下載12安裝后 進入 顯示無法連接 datebase 數據庫 ,problem :Accessing the datebase 有大牛能解決嗎?????? 而且卸載后重新安裝也不好使 & ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 在慕尼黑電子展上,MPS秀了一大波創新
- 意法半導體公布2025年第一季度財報
- 地平線與電裝達成戰略合作,強強聯手推動高性能輔助駕駛技術應用
- Intel正式確認!Panther Lake首款芯片今年推出:其他SKU在明年
- 消息稱三星 HBM3E 認證遇阻,谷歌 AI 芯片已通知撤換供應商
- ?2025瑞能半導體(大中國區)經銷商大會舉行:以創新驅動,攜手共贏
- TE Connectivity公布2025財年第二季度財報,銷售額和每股收益均高于預期
- 軟件定義汽車時代,英特爾交出了什么樣的答卷?
- 尼得科精密檢測科技參展PCIM Expo & Conference 2025
- Ceva用于邊緣人工智能的神經處理單元 IP 獲Nextchip下一代 ADAS 解決方案選用