作者wasidada (dada)
看板ASM
標題Re: [問題] Microchip PIC18 ASM 疑問
時間Thu Jun 9 02:16:25 2016
※ 引述《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://webptt.com/m.aspx?n=bbs/ASM/M.1465409786.A.C21.html