1樓:匿名使用者
1、不能刪除mov a,p1。前面兩句「mov a,#0ffh
mov p1,a ;」是把p1全部引腳置1,而mov a,p1是掃描置1後的p1變化(有沒有按鍵按下去,按下了的相應位為0)。mov p1,a是輸出,mov a,p1是輸入。
2、here: sjmp here是原地跳轉。
2樓:匿名使用者
這程式基本沒用,分析程式,就是先初始化埠,再讀取埠暫存器,再把值送led顯示看是否變化。之所以說這程式沒用,是因為 mov a,p1 基本沒用,理論上是有用的,但是外部開關態變化總不是理想的,比如按鍵總會抖動,總會有脈衝。
mov p1,a 和mov a,p1 不是p1=a=0ffh,執行mov p1,a 後如果沒有外部變化改變p1狀態,可以說p1=a=0ffh;但如果有外部變化,比如最高位被拉低,執行mov a,p1後就成了 a=p1=0efh。
here: sjmp here 意思是本句迴圈執行,等價於 sjmp $
ajmp,sjmp,ljmp都是無條件跳轉指令,跳轉範圍不同,ljmp跳轉範圍最大,貌似是64k範圍內都可以,ajmp跳轉範圍2k,sjmp最小。
3樓:
你抄程式都抄錯了。從註釋來看,第一句應當是mov a, #0fh。
微控制器簡單問題
先回答第一個問題 cy稱作溢位標誌,他是在運算時發生溢位時產生的標誌,主要是在算術運算中使用,加法時是進位置1,減法時是借位時置1 剩下問題 都指的是最高位,兩次運算之間對cy的結果沒有影響 注意的是,cy是設計加法電路產生的,而加法電路的設計主要是利用數字邏輯電路設計,因此,兩次加法對cy的作用不...
簡單的C51微控制器組合語言程式分析
羅門大佬 樓上說的有理,但是即使刪去ljmp main也不行,因為在中斷時它把ea關了,也就不會中斷了。其實不用關ea,你把clr ea也刪去就可以執行。只要你的手沒有中斷服務程式快就會有中斷。每次按都有。你試一下在開發板上執行,應該可以的。原因是當你外中斷置低電平時,就會進入中斷程式。執行完就會自...
微控制器組合語言的幾個疑問
靈若伊雪 1 r1 20h 不是一條指令,而只是一種說明,表明r1暫存器中的內容是20h。這個20h是地址還是資料,與這個說明無關。2 在指令 mov r1,40h 中,r1 是間接定址方式,表明r1中的內容是地址,指令的功能表明是將立即數40h傳送到r1指定的地址中。3 在指令中容易混淆的是立即數...