Re: [問題] Microchip PIC18 ASM 疑問

看板ASM (組合語言)作者 (dada)時間8年前 (2016/06/09 02:16), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串6/7 (看更多)
※ 引述《kikiqqp (喵食罐頭)》之銘言: 謝謝 你的回文 : ※ 引述《wasidada (dada)》之銘言: : : list p= 18f67j50 : : #include "p18F67J50.inc" : 先假設你用的是這個 : ;===================================================================== : ; MPASM PIC18F67J50 processor include : ; : ; (c) Copyright 1999-2007 Microchip Technology, All rights reserved : ;===================================================================== : : VAL_US equ .147 : : VAL_MS equ .100 : : COUNT equ 0x20 : : COUNT_ms equ 0x21 : : VAL_US equ .147 : 縮排,排版爛的工程師肯定不會寫出好程式 : : MAIN_PROG CODE : : Initial : : CLRF PORTD : : CLRF LATD : : CLRF TRISD : : MOVLW 0x05 : : MOVWF C : C是什麼? 其實 我不知道C是什麼 因為我不知道怎新增變數 就使用 A,B,C,D 後來我try到E 程式就出錯了~ : INC中是C EQU H'0000'呦 : : MOVLW 0x0A : : MOVWF D : D是什麼? : INC中是D EQU H'0005'呦 : : start : : Call Action : : GOTO start : 這邊是一個LOOP : : Action: : : MOVLW 0x07 : : CPFSGT C : 你在使用CPFSGT有沒有注意到手冊上 f和 a各代表什麼意思呢? : 還有C是REG嗎? 我是把C當成一般變數在做使用 = = : : call Action_1 : : call Action_2 : :你知道執行Action_1後會接著執行Action_2嗎? 是 要緊接著執行Action_2 : : MOVLW 0x0B : : CPFSGT D //後來我發現 給一個變數就可以正常運作了 : CPFSGT是W和F(REG)比較,你改變了W當然結果會變動呀 : 至於是不是你要的結果根本不知道 : : call Action_3 : : call Action_4 : 你知道執行Action_3後會接著執行Action_4嗎? : 你知道執行Action_4後會接著執行Action_1嗎?之後回到GOTO start 忘記放return 感謝指導 : : Action_1: : : BSF LATD,5 : : return //return 是跳出這個函式 執行完Action_1吧 : : Action_2: : : BSF LATD,6 : : return : : Action_3: : : BCF LATD,5 : : return : : Action_4: : : BCF LATD,6 : : return : 以下DELAY略過 : : DELAY_100ms: : : MOVLW VAL_MS : : MOVWF COUNT_ms : : LOOP_ms: : : CALL DELAY_1ms : : DECFSZ COUNT_ms,f : : GOTO LOOP_ms : : RETURN : : DELAY_1ms: : : MOVLW VAL_US : : MOVWF COUNT : : DEC_LOOP : : CALL D_SHORT : : DECFSZ COUNT,f : : GOTO DEC_LOOP : : RETURN : : D_SHORT : : CALL D_RET : : CALL D_RET : : nop : : nop : : D_RET : : RETURN : : END : : 我比較擔心的問題是,我的觀念是錯的結果程式跑起來是正確的 : : 結果沒發現 orz : 除非有特殊必要性,不然我會建議PIC18F先用C來實作想要的部份 : 並利用編譯器來看組語 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.222.1 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1465409786.A.C21.html
文章代碼(AID): #1NM63wmX (ASM)
文章代碼(AID): #1NM63wmX (ASM)