-1

PIC18Fxx2のデータシート

私が使っている7セグ関連のデータシートはこちらから入手できます

編集(2013/15/4): 以下のコードは PORTD の命令語です

ldig    SET b'00001000' ;for rght digit
rdig    SET b'00000100' ;for left digit

コードが最初に実行されるときの TRISB、TRISD、PORTB、および PORTD の命令語

CLRF    TRISB   ;port B as output
CLRF    TRISD   ;port D as output
CLRF    PORTD   ;clear port D not to select any digit
SETF    PORTB   ;set port B to off all segments

アセンブリを使用して、2 つの 7 セグ LED ディスプレイに異なる 2 つの数字を表示させたいと考えています。以下にリストされているコードを試してみましたが、うまくいきません。注: rdig = 右パネル、ldig = 左パネル、disp1 は 1 など。

loop    MOVFF   disp1, PORTB
        MOVLW   rdig    ;select only the left display
        MOVWF   PORTD   ;unit to be on

        MOVFF   disp8, PORTB
        MOVLW   ldig    ;select only the left display
        MOVWF   PORTD   ;unit to be on

        bra     loop

出力は 81 (7 セグメント ディスプレイ上) であるはずですが、数字は何も表示されません。各パネルには、ある種の薄暗い光だけが現れます。ただし、コードは、7 セグメント ディスプレイの両側に 1 つの数字のみを表示しようとしている場合に機能します。

loop        MOVFF   disp8, PORTB
            MOVLW   ldig    ;select only the left display
            MOVWF   PORTD   ;unit to be on

            bra     loop

編集: 以下のように、TMR0N (b'00000000' 命令語、tmrL = FF、tmrH = FB) を使用して小さな遅延 (2 マイクロ秒) を各数値表示要求に追加しようとしましたが、右側のパネルに数値 1 のみが表示されます。

loop    MOVFF   disp1, PORTB
    MOVLW   rdig    ;select only the left display
    MOVWF   PORTD   ;unit to be on
    call    delay

    MOVFF   disp8, PORTB
    MOVLW   ldig    ;select only the left display
    MOVWF   PORTD   ;unit to be on
    call    delay

    bra     loop

TMR0Nの命令設定

initwrd SET 0x00
tmrH    SET 0xFF
tmrL    SET 0xFB
4

1 に答える 1