EverydayThanks

PIC・arduinoなど電子工作の備忘録

広告

※このエリアは、60日間投稿が無い場合に表示されます。記事を投稿すると、表示されなくなります。

PICマイコンを利用した赤外線コントロール戦車(送信プログラム)

2014年07月12日 | PICマイコン

以下にアセンブラソースリストを示す。

3-1)赤外線送信プログラム

 

;*************************************
; 赤外線送信プログラム
;*************************************
;                   LED-SEND.ASM
                    LIST         P=PIC16F84;
                    INCLUDE  P16F84.INC;
   
MEM_1          EQU        0CH
MEM_2          EQU        0DH
MEM_3          EQU        0EH
MEM_4          EQU        0FH
MEM_5          EQU        010H
                    ORG        0
;*****************************
;メインルーチン
;*****************************
MAIN   
                    BSF         STATUS,RP0
                    CLRF        TRISA
                    MOVLW    07FH
                    MOVWF    TRISB
                    BCF         OPTION_REG,7
                    BCF         STATUS,RP0
LOOP
                    BTFSC      PORTB,1
                    GOTO       B0
                    BTFSS      PORTB,2
                    GOTO       Label1
B0
                    BTFSC      PORTB,1
                    GOTO       B1
                    BTFSS      PORTB,5
                    GOTO       Label0
B1
                    BTFSC      PORTB,2
                    GOTO       B2
                    BTFSS      PORTB,6
                    GOTO       Label5
B2
                    BTFSS      PORTB,1
                    GOTO       Label3
                    BTFSS      PORTB,2
                    GOTO       Label7
                    BTFSC      PORTB,6
                    GOTO       B3
                    BTFSS      PORTB,5
                    GOTO       Label2
B3
                    BTFSS      PORTB,6
                    GOTO       Label6
                    BTFSS      PORTB,5
                    GOTO       Label4
                    GOTO       LOOP

;*****************************
; 送信ビット列 1 01 0001 10101
;*****************************
Label0
                    CALL        Bit1
                    CALL        Bit0
                    CALL        Bit1
                    CALL        Bit0
                    CALL        Bit0
                    CALL        Bit0
                    CALL        Bit1
                    CALL        Bit1
                    CALL        Bit0
                    CALL        Bit1
                    CALL        Bit0
                    CALL        Bit1
                    CALL        TIM20
                    GOTO       LOOP

 

;*****************************
; 送信ビット列 1 01 0010 10101
;*****************************
Label1
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO      LOOP

;*****************************
; 送信ビット列 1 01 0011 10101
;*****************************
Label2
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit0
                CALL      Bit1
                CALL      Bit1
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO      LOOP

;*****************************
; 送信ビット列 1 01 0100 10101
;*****************************
Label3
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO      LOOP

;*****************************
; 送信ビット列 1 01 0101 10101
;*****************************
Label4
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO      LOOP

;*****************************
; 送信ビット列 1 01 0110 10101
;*****************************
Label5
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
               CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO     LOOP

;*****************************
; 送信ビット列 1 01 0111 10101
;*****************************
Label6
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit1
                CALL      Bit1
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO      LOOP

;*****************************
; 送信ビット列 1 01 1000 10101
;*****************************
Label7
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit1
                CALL      Bit0
                CALL      Bit0
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      Bit0
                CALL      Bit1
                CALL      TIM20
                GOTO     LOOP

;*****************************
; 0 ビット送信
;*****************************
Bit0
               MOVLW     0FH
               MOVWF     PORTA
               MOVLW     030H
               MOVWF     MEM_4
LOOP1          CALL         TIM011
               DECFSZ     MEM_4,F
               GOTO         LOOP1
               RETURN

;*****************************
; 1 ビット送信
;*****************************
Bit1
              MOVLW    017H
              MOVWF    MEM_5
LOOP2         CLRF        PORTA
                   CALL        TIM011
                   MOVLW    0FH
                   MOVWF    PORTA
                   CALL        TIM011
                   DECFSZ    MEM_5
                   GOTO       LOOP2
                   RETURN

;*****************************
;11μs (クロック周波数 10MHz)
;*****************************
TIM011
                   MOVLW    08H
                   MOVWF    MEM_1
                   NOP
TIMLP1        DECFSZ    MEM_1,F
                   GOTO        TIMLP1
                   RETURN

;*****************************
;0.4ms (クロック周波数 10MHz)
;*****************************
TIM04
                   MOVLW    0F9H
                   MOVWF    MEM_2
TIMLP2         NOP
                   DECFSZ    MEM_2,F
                   GOTO        TIMLP2
                   RETURN

;*****************************
;20ms (クロック周波数 10MHz)
;*****************************
TIM20
                    MOVLW    032H
                    MOVWF    MEM_3
TIMLP3          CALL        TIM04
                    DECFSZ    MEM_3,F
                    GOTO        TIMLP3
                    RETURN
       
END

 



 

『その他』 ジャンルのランキング
この記事についてブログを書く
この記事をはてなブックマークに追加
« PICマイコンを利用した赤外線コ... | トップ | PICマイコンを利用した赤外線コ... »
最近の画像もっと見る

あわせて読む