0

学校向けの小さなプログラムについてアドバイスが必要です。正しい方向に私を向けることができれば、本当に感謝しています。TWR-S12G128 プロセッサ モジュールのアセンブリ言語で CodeWarrior コーディングを使用しています。私の目標は、1 秒の遅延で LED をオン/オフすることです。私のコードは次のようになります。

                LDS     #$4000  ; Initializing SP
                LDAA    #$FF     
                STAA    DDRA    ; Defines Port A as output
Back            LDAA    #$FF     
                STAA    PORTA   ; Turning all LEDs ON
                JSR     Delay    
                LDAA    #$00     
                STAA    PORTA   ; Turning all LEDs OFF
                JSR     Delay    
                BSR     Back     
Delay           PSHX            ; 2-clock cycle
                PSHY            ; 2
                LDY     #20     ; 2-clock cycle
LOOP1           LDX     #$FFFF  ; 2
LOOP2           DEX             ; 1-clock cycle
                NOP             ; 1-clock cycle
                BNE     LOOP2   ; 3-clock cycles/last cycle is 1
                DEY             ; 1
                BNE     $FF     ; 3-clock cycles/last cycle is 1
                PULY    LOOP1   ; 3-clock cycle
                PULX            ; 3-clock cycle
                RTS             ; 5-clock cycle

私が得ているエラーがあります:

Error   : A2400: End of Line expected

main.asm line 58   
Project: Project_4.mcp, Target: Standard, Source File: main.asm

Error   : Compile failed
Project: Project_4.mcp, Target: Standard, Source File: main.asm
4

2 に答える 2

0

BNE ラインの $FF は適切ではありません。タイプミスだと思います。数時間前に教授と一緒にこれを解決しました。以下は、1 秒の遅延を与え、4 つの LED を連続的にオン/オフするコードです。

ABSENTRY Entry                 ; Application entry point
RAMStart    EQU  $2000
ROMStart    EQU  $C000  

    ORG RAMStart
; Insert here your data definition.

PTT         EQU   $240
DDRT        EQU   $242

; code section
            ORG   ROMStart
Entry:
_Startup:
           LDS    #$4000
Back       LDAA   #$FF
           STAA   DDRT
           LDAA   #$FF
           STAA   PTT
           JSR    Delay
           LDAA   #$00
           STAA   PTT 
           JSR    Delay
           BSR    Back

Delay        PSHX       ; 2-clock cycle
             PSHY       ; 2
             LDY    #20 ; 2-clock cycle
LOOP1        LDX    #$FFFF  ; 2
LOOP2        DEX        ; 1-clock cycle
             NOP        ; 1-clock cycle
             BNE    LOOP2   ; 3-clock cycles/last cycle is 1
             DEY        ; 1

           BNE    LOOP1 ; 3-clock cycles/last cycle is 1
           PULY     ; 3-clock cycle
           PULX     ; 3-clock cycle
           RTS      ; 5-clock cycle

           ORG   $FFFE
            DC.W  Entry           ; Reset Vector

誰かが私に数学を手伝ってくれるほど親切だったら. ループでは 65,535 * 20 が得られますが、6.25MHz のクロックでは、遅延の最終的な量として .209 秒が得られますが、それが 1 秒であることがわかっています。何が表示されないのですか?

于 2015-01-27T21:26:20.387 に答える