アセンブリ言語で書いた電光掲示板

概要

今回の記事は,高校生の時に作った電光掲示板のコードの紹介です.

PICのアセンブリ言語で書かれています.

作ったもの

あらかじめ書き込んでおいた文字列がスクロールしながら表示される電光掲示板です.

裏側にボタンがついていて,そのボタンに割り当てられた文字列が表示されます.

PIC電光掲示板

PIC電光掲示板

PIC電光掲示板

PIC電光掲示板

PIC電光掲示板

PIC電光掲示板

回路図

高校の時に作ったものなのでかなり雑です.

PICはPIC16F887です.
Dotは適当な8x8のドットマトリックスLED2つです.

回路図

回路図

ソースコード

;**** SCROLL ORIGINAL 8x16x4LINE ***************************************************************
;2012.7.7 作成
;7x16ドットマトリクス使用
;配線は、RA0~6が横カソードで、RB0~7,RC0~7が縦アノード
;スクロールを速度は、一番下のWAITの数字によって可変
;***********************************************************************************************

    LIST    P=PIC16F887
    INCLUDE"P16F887.INC"
    __CONFIG _CONFIG1,_CP_OFF & _LVP_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSCIO
    __CONFIG _CONFIG2,_WRT_OFF & _BOR21V

TIM1    EQU 020H
TIM2    EQU 021H
LOOP1   EQU 022H
YOKO    EQU 023H
TATE    EQU 024H
CONT    EQU 025H

    ORG 0
    GOTO    START

START
        BSF STATUS,RP0
        MOVLW   070H        ;8MHz
        MOVWF   OSCCON
        CLRF    TRISA
        CLRF    TRISB
        CLRF    TRISC
        CLRF    TRISE
        MOVLW   B'11111111'
        MOVWF   TRISD
        BCF STATUS,RP0
        CLRF    PORTB   
        CLRF    PORTC
        CLRF    PORTE

MAIN
        BTFSC   PORTD,0
        GOTO    MAINX
        GOTO    MAIN_A

MAINX       BTFSC   PORTD,1
        GOTO    MAINY
        BSF PCLATH,3
        BCF PCLATH,4
        GOTO    MAIN_B

MAINY       BTFSC   PORTD,2
        GOTO    MAINZ
        BCF PCLATH,3
        BSF PCLATH,4
        GOTO    MAIN_C

MAINZ       BTFSC   PORTD,3
        GOTO    MAIN
        BSF PCLATH,3
        BSF PCLATH,4
        GOTO    MAIN_D


;**************************************************************************************************************

MAIN_A
        MOVLW   0H
        MOVWF   CONT

MA_1A       INCF    CONT
        MOVLW   60H     ;ここの数で速さを調節
        MOVWF   LOOP1
LOOPA       MOVF    CONT,W
        MOVWF   YOKO
        MOVLW   0H
        MOVWF   TATE
MA_2A       MOVF    YOKO,W  
        CALL    DAT_1A
        MOVWF   PORTA
        MOVF    TATE,W
        CALL    DAT_2A
        MOVWF   PORTB
        MOVF    TATE,W
        CALL    DAT_3A
        MOVWF   PORTC
        CALL    WAITA
        INCF    YOKO
        INCF    TATE
        CLRF    PORTB
        CLRF    PORTC
        MOVF    TATE,W
        SUBLW   10H
        BTFSS   STATUS,Z
        GOTO    MA_2A
        
        DECFSZ  LOOP1,F
        GOTO    LOOPA

        MOVF    CONT,W
        SUBLW   080H        ;ここの数を変える
        BTFSS   STATUS,Z
        GOTO    MA_1A
        GOTO    MAIN_A


DAT_1A
        ADDWF   PCL     
        RETLW   B'11111111' ;0  
        RETLW   B'11111111' ;1  
        RETLW   B'11111111' ;2  
        RETLW   B'11111111' ;3  
        RETLW   B'11111111' ;4  
        RETLW   B'11111111' ;5  
        RETLW   B'11111111' ;6  
        RETLW   B'11111111' ;7  
        RETLW   B'11111111' ;8  
        RETLW   B'11111111' ;9  
        RETLW   B'11111111' ;A  
        RETLW   B'11111111' ;B  
        RETLW   B'11111111' ;C  
        RETLW   B'11111111' ;D  
        RETLW   B'11111111' ;E  
        RETLW   B'11111111' ;F  
        RETLW   B'11111111' ;10 
        RETLW   B'00000001' ;11 ここからプログラム開始
        RETLW   B'01111111' ;12 
        RETLW   B'01111111' ;13 
        RETLW   B'01111111' ;14 
        RETLW   B'01111111' ;15 
        RETLW   B'11111111' ;16 
        RETLW   B'00000001' ;17 
        RETLW   B'01101101' ;18 
        RETLW   B'01101101' ;19 
        RETLW   B'01101101' ;1A 
        RETLW   B'01101101' ;1B 
        RETLW   B'11111111' ;1C 
        RETLW   B'11111101' ;1D 
        RETLW   B'11111101' ;1E 
        RETLW   B'00000001' ;1F 
        RETLW   B'11111101' ;20 
        RETLW   B'11111101' ;21 
        RETLW   B'11111111' ;22 
        RETLW   B'11111101' ;23 
        RETLW   B'11110001' ;24
        RETLW   B'11111111' ;25
        RETLW   B'10110011' ;26 
        RETLW   B'01101101' ;27 
        RETLW   B'01101101' ;28 
        RETLW   B'01101101' ;29 
        RETLW   B'10011011' ;2A 
        RETLW   B'11111111' ;2B 
        RETLW   B'11111111' ;2C 
        RETLW   B'11111111' ;2D 
        RETLW   B'11111101' ;1D 
        RETLW   B'11111101' ;1E 
        RETLW   B'00000001' ;1F 
        RETLW   B'11111101' ;20 
        RETLW   B'11111101' ;21 
        RETLW   B'11111111' ;33 
        RETLW   B'00000001' ;34 
        RETLW   B'11101101' ;35 
        RETLW   B'11001101' ;36 
        RETLW   B'10101101' ;37 
        RETLW   B'01110011' ;38 
        RETLW   B'11111111' ;39 
        RETLW   B'11111001' ;3A 
        RETLW   B'11110111' ;3B 
        RETLW   B'00001111' ;3C 
        RETLW   B'11110111' ;3D 
        RETLW   B'11111001' ;3E 
        RETLW   B'11111111' ;3F 
        RETLW   B'11111111' ;40 
        RETLW   B'11111111' ;41 
        RETLW   B'00000001' ;42 
        RETLW   B'11101101' ;43 
        RETLW   B'11101101' ;44 
        RETLW   B'11101101' ;45 
        RETLW   B'11110011' ;46 
        RETLW   B'11111111' ;47 
        RETLW   B'00000001' ;34 
        RETLW   B'11101101' ;35 
        RETLW   B'11001101' ;36 
        RETLW   B'10101101' ;37 
        RETLW   B'01110011' ;38 
        RETLW   B'11111111' ;4D 
        RETLW   B'10000011' ;4E 
        RETLW   B'01111101' ;4F 
        RETLW   B'01111101' ;50 
        RETLW   B'01111101' ;51 
        RETLW   B'10000011' ;52 
        RETLW   B'11111111' ;53 
        RETLW   B'10000011' ;54 
        RETLW   B'01111101' ;55 
        RETLW   B'01101101' ;56 
        RETLW   B'01101101' ;57 
        RETLW   B'10001011' ;58 
        RETLW   B'11111111' ;59 
        RETLW   B'00000001' ;34 
        RETLW   B'11101101' ;35 
        RETLW   B'11001101' ;36 
        RETLW   B'10101101' ;37 
        RETLW   B'01110011' ;38 
        RETLW   B'11111111' ;5F 
        RETLW   B'00000011' ;4E 
        RETLW   B'11101101' ;4F 
        RETLW   B'11101101' ;50 
        RETLW   B'11101101' ;51 
        RETLW   B'00000011' ;52 
        RETLW   B'11111111' ;65 
        RETLW   B'00000001' ;66 
        RETLW   B'11111011' ;67 
        RETLW   B'11110111' ;68 
        RETLW   B'11111011' ;69 
        RETLW   B'00000001' ;6A 
        RETLW   B'11111111' ;6B 
        RETLW   B'01111101' ;6C 
        RETLW   B'00000001' ;6D 
        RETLW   B'01111101' ;6E 
        RETLW   B'11111111' ;6F 
        RETLW   B'00000001' ;70 
        RETLW   B'11110111' ;71 
        RETLW   B'11101111' ;72 
        RETLW   B'11011111' ;73 
        RETLW   B'00000001' ;74 
        RETLW   B'11111111' ;75 
        RETLW   B'10000011' ;54 
        RETLW   B'01111101' ;55 
        RETLW   B'01101101' ;56 
        RETLW   B'01101101' ;57 
        RETLW   B'10001011' ;58 
        RETLW   B'11111111' ;7B 
        RETLW   B'01000001' ;7C 
        RETLW   B'11111111' ;7D 
        RETLW   B'01000001' ;7E 
        RETLW   B'11111111' ;7F 
        RETLW   B'01000001' ;80 
        RETLW   B'11111111' ;81 
        RETLW   B'11111111' ;82 
        RETLW   B'11111111' ;83 
        RETLW   B'11111111' ;84 
        RETLW   B'11111111' ;85 
        RETLW   B'11111111' ;86 
        RETLW   B'11111111' ;87 
        RETLW   B'11111111' ;88 
        RETLW   B'11111111' ;89 
        RETLW   B'11111111' ;90 
        RETLW   B'11111111' ;91 
        RETLW   B'11111111' ;92 
        RETLW   B'11111111' ;93 
        RETLW   B'11111111' ;94 
        RETLW   B'11111111' ;95 
        RETLW   B'11111111' ;96 
        RETLW   B'11111111' ;97 
        RETLW   B'11111111' ;98 
        RETLW   B'11111111' ;99 
        RETLW   B'11111111' ;9A 
        RETLW   B'11111111' ;9B 
        RETLW   B'11111111' ;9C 
        RETLW   B'11111111' ;9D 
        RETLW   B'11111111' ;9E 
        RETLW   B'11111111' ;9F 




DAT_2A
        ADDWF   PCL
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   1H
        RETLW   2H
        RETLW   4H
        RETLW   8H
        RETLW   10H
        RETLW   20H
        RETLW   40H
        RETLW   80H

DAT_3A
        ADDWF   PCL
        RETLW   1H
        RETLW   2H
        RETLW   4H
        RETLW   8H
        RETLW   10H
        RETLW   20H
        RETLW   40H
        RETLW   80H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H


WAITA
        MOVLW   5H
        MOVWF   TIM1
    WA1A    MOVLW   5H
        MOVWF   TIM2
    WA2A    NOP
        DECFSZ  TIM2,F
        GOTO    WA2A
        DECFSZ  TIM1,F
        GOTO    WA1A
        RETURN

;*******************************************************************************************************

        ORG 800H

MAIN_B
        MOVLW   0H
        MOVWF   CONT

MA_1B       INCF    CONT
        MOVLW   60H     ;ここの数で速さを調節
        MOVWF   LOOP1
LOOPB       MOVF    CONT,W
        MOVWF   YOKO
        MOVLW   0H
        MOVWF   TATE
MA_2B       MOVF    YOKO,W  
        CALL    DAT_1B
        MOVWF   PORTA
        MOVF    TATE,W
        CALL    DAT_2B
        MOVWF   PORTB
        MOVF    TATE,W
        CALL    DAT_3B
        MOVWF   PORTC
        CALL    WAITB
        INCF    YOKO
        INCF    TATE
        CLRF    PORTB
        CLRF    PORTC
        MOVF    TATE,W
        SUBLW   10H
        BTFSS   STATUS,Z
        GOTO    MA_2B
        
        DECFSZ  LOOP1,F
        GOTO    LOOPB

        MOVF    CONT,W
        SUBLW   07FH        ;ここの数を変える
        BTFSS   STATUS,Z
        GOTO    MA_1B
        GOTO    MAIN_B

DAT_1B
        ADDWF   PCL     
        RETLW   B'11111111' ;0  
        RETLW   B'11111111' ;1  
        RETLW   B'11111111' ;2  
        RETLW   B'11111111' ;3  
        RETLW   B'11111111' ;4  
        RETLW   B'11111111' ;5  
        RETLW   B'11111111' ;6  
        RETLW   B'11111111' ;7  
        RETLW   B'11111111' ;8  
        RETLW   B'11111111' ;9  
        RETLW   B'11111111' ;A  
        RETLW   B'11111111' ;B  
        RETLW   B'11111111' ;C  
        RETLW   B'11111111' ;D  
        RETLW   B'11111111' ;E  
        RETLW   B'11111111' ;F  
        RETLW   B'11111111' ;10 
        RETLW   B'00000001' ;11 ここからプログラム開始
        RETLW   B'11101111' ;12 
        RETLW   B'11101111' ;13 
        RETLW   B'11101111' ;14 
        RETLW   B'00000001' ;15 
        RETLW   B'11111111' ;16 
        RETLW   B'00000011' ;17 
        RETLW   B'11101101' ;18 
        RETLW   B'11101101' ;19 
        RETLW   B'11101101' ;1A 
        RETLW   B'00000011' ;1B 
        RETLW   B'11111111' ;1C 
        RETLW   B'00000001' ;1D 
        RETLW   B'11101101' ;1E 
        RETLW   B'11101101' ;1F 
        RETLW   B'11101101' ;20 
        RETLW   B'11110011' ;21 
        RETLW   B'11111111' ;22 
        RETLW   B'00000001' ;23 
        RETLW   B'11101101' ;24 
        RETLW   B'11101101' ;25 
        RETLW   B'11101101' ;26 
        RETLW   B'11110011' ;27 
        RETLW   B'11111111' ;28 
        RETLW   B'11111001' ;29 
        RETLW   B'11110111' ;2A 
        RETLW   B'00001111' ;2B 
        RETLW   B'11110111' ;2C 
        RETLW   B'11111001' ;2D 
        RETLW   B'11111111' ;2E 
        RETLW   B'11111111' ;2F 
        RETLW   B'11111111' ;30 
        RETLW   B'00000001' ;31 
        RETLW   B'01101101' ;32 
        RETLW   B'01101101' ;33 
        RETLW   B'01101101' ;34 
        RETLW   B'10010011' ;35 
        RETLW   B'11111111' ;36 
        RETLW   B'01111101' ;37 
        RETLW   B'00000001' ;38 
        RETLW   B'01111101' ;39 
        RETLW   B'11111111' ;3A 
        RETLW   B'00000001' ;3B 
        RETLW   B'11101101' ;3C 
        RETLW   B'11001101' ;3D 
        RETLW   B'10101101' ;3E 
        RETLW   B'01110011' ;3F 
        RETLW   B'11111111' ;40 
        RETLW   B'11111101' ;41 
        RETLW   B'11111101' ;42 
        RETLW   B'00000001' ;43 
        RETLW   B'11111101' ;44 
        RETLW   B'11111101' ;45 
        RETLW   B'11111111' ;46 
        RETLW   B'00000001' ;47 
        RETLW   B'11101111' ;48 
        RETLW   B'11101111' ;49 
        RETLW   B'11101111' ;4A 
        RETLW   B'00000001' ;4B 
        RETLW   B'11111111' ;4C 
        RETLW   B'00000001' ;4D 
        RETLW   B'01111101' ;4E 
        RETLW   B'01111101' ;4F 
        RETLW   B'01111101' ;50 
        RETLW   B'10000011' ;51 
        RETLW   B'11111111' ;52 
        RETLW   B'00000011' ;53 
        RETLW   B'11101101' ;54 
        RETLW   B'11101101' ;55 
        RETLW   B'11101101' ;56 
        RETLW   B'00000011' ;57 
        RETLW   B'11111111' ;58 
        RETLW   B'11111001' ;59 
        RETLW   B'11110111' ;5A 
        RETLW   B'00001111' ;5B 
        RETLW   B'11110111' ;5C 
        RETLW   B'11111001' ;5D 
        RETLW   B'11111111' ;5E 
        RETLW   B'11111111' ;5F 
        RETLW   B'11111111' ;60 
        RETLW   B'11111101' ;61 
        RETLW   B'11111101' ;62 
        RETLW   B'00000001' ;63 
        RETLW   B'11111101' ;64 
        RETLW   B'11111101' ;65 
        RETLW   B'11111111' ;66 
        RETLW   B'10000011' ;67 
        RETLW   B'01111101' ;68 
        RETLW   B'01111101' ;69 
        RETLW   B'01111101' ;6A 
        RETLW   B'10000011' ;6B 
        RETLW   B'11111111' ;6C 
        RETLW   B'11111111' ;6D 
        RETLW   B'11111111' ;6E 
        RETLW   B'11111001' ;6F 
        RETLW   B'11110111' ;70 
        RETLW   B'00001111' ;71 
        RETLW   B'11110111' ;72 
        RETLW   B'11111001' ;73 
        RETLW   B'11111111' ;74 
        RETLW   B'10000011' ;75 
        RETLW   B'01111101' ;76 
        RETLW   B'01111101' ;77 
        RETLW   B'01111101' ;78 
        RETLW   B'10000011' ;79 
        RETLW   B'11111111' ;7A 
        RETLW   B'10000001' ;7B 
        RETLW   B'01111111' ;7C 
        RETLW   B'01111111' ;7D 
        RETLW   B'01111111' ;7E 
        RETLW   B'10000001' ;7F 
        RETLW   B'11111111' ;80 
        RETLW   B'11111111' ;81 
        RETLW   B'11111111' ;82 
        RETLW   B'11111111' ;83 
        RETLW   B'11111111' ;84 
        RETLW   B'11111111' ;85 
        RETLW   B'11111111' ;86 
        RETLW   B'11111111' ;87 
        RETLW   B'11111111' ;88 
        RETLW   B'11111111' ;89 
        RETLW   B'11111111' ;90 
        RETLW   B'11111111' ;91 
        RETLW   B'11111111' ;92 
        RETLW   B'11111111' ;93 
        RETLW   B'11111111' ;94 
        RETLW   B'11111111' ;95 
        RETLW   B'11111111' ;96 
        RETLW   B'11111111' ;97 
        RETLW   B'11111111' ;98 
        RETLW   B'11111111' ;99 
        RETLW   B'11111111' ;9A 
        RETLW   B'11111111' ;9B 
        RETLW   B'11111111' ;9C 
        RETLW   B'11111111' ;9D 
        RETLW   B'11111111' ;9E 
        RETLW   B'11111111' ;9F 
        RETLW   B'11111111' ;A0 
        RETLW   B'11111111' ;A1 
        RETLW   B'11111111' ;A2 
        RETLW   B'11111111' ;A3 
        RETLW   B'11111111' ;A4 
        RETLW   B'11111111' ;A5 
        RETLW   B'11111111' ;A6 
        RETLW   B'11111111' ;A7 
        RETLW   B'11111111' ;A8 
        RETLW   B'11111111' ;A9 
        RETLW   B'11111111' ;AA 
        RETLW   B'11111111' ;AB 
        RETLW   B'11111111' ;AC 
        RETLW   B'11111111' ;AD 
        RETLW   B'11111111' ;AE 
        RETLW   B'11111111' ;AF 
        RETLW   B'11111111' ;B0 
        RETLW   B'11111111' ;B1 
        RETLW   B'11111111' ;B2 
        RETLW   B'11111111' ;B3 
        RETLW   B'11111111' ;B4 
        RETLW   B'11111111' ;B5 
        RETLW   B'11111111' ;B6 
        RETLW   B'11111111' ;B7 





DAT_2B
        ADDWF   PCL
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   1H
        RETLW   2H
        RETLW   4H
        RETLW   8H
        RETLW   10H
        RETLW   20H
        RETLW   40H
        RETLW   80H

DAT_3B
        ADDWF   PCL
        RETLW   1H
        RETLW   2H
        RETLW   4H
        RETLW   8H
        RETLW   10H
        RETLW   20H
        RETLW   40H
        RETLW   80H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H


WAITB
        MOVLW   5H
        MOVWF   TIM1
    WA1B    MOVLW   5H
        MOVWF   TIM2
    WA2B    NOP
        DECFSZ  TIM2,F
        GOTO    WA2B
        DECFSZ  TIM1,F
        GOTO    WA1B
        RETURN

;********************************************************************************************************

        ORG 1000H

MAIN_C
        MOVLW   0H
        MOVWF   CONT

MA_1C       INCF    CONT
        MOVLW   60H     ;ここの数で速さを調節
        MOVWF   LOOP1
LOOPC       MOVF    CONT,W
        MOVWF   YOKO
        MOVLW   0H
        MOVWF   TATE
MA_2C       MOVF    YOKO,W  
        CALL    DAT_1C
        MOVWF   PORTA
        MOVF    TATE,W
        CALL    DAT_2C
        MOVWF   PORTB
        MOVF    TATE,W
        CALL    DAT_3C
        MOVWF   PORTC
        CALL    WAITC
        INCF    YOKO
        INCF    TATE
        CLRF    PORTB
        CLRF    PORTC
        MOVF    TATE,W
        SUBLW   10H
        BTFSS   STATUS,Z
        GOTO    MA_2C
        
        DECFSZ  LOOP1,F
        GOTO    LOOPC

        MOVF    CONT,W
        SUBLW   0A8H        ;ここの数を変える
        BTFSS   STATUS,Z
        GOTO    MA_1C
        GOTO    MAIN_C

DAT_1C
        ADDWF   PCL 
        RETLW   B'11111111' ;0
        RETLW   B'11111111' ;1
        RETLW   B'11111111' ;2
        RETLW   B'11111111' ;3
        RETLW   B'11111111' ;4
        RETLW   B'11111111' ;5
        RETLW   B'11111111' ;6
        RETLW   B'11111111' ;7
        RETLW   B'11111111' ;8
        RETLW   B'11111111' ;9
        RETLW   B'11111111' ;A
        RETLW   B'11111111' ;B
        RETLW   B'11111111' ;C
        RETLW   B'11111111' ;D
        RETLW   B'11111111' ;E
        RETLW   B'11111111' ;F
        RETLW   B'11111111' ;10
        RETLW   B'00000001' ;11
        RETLW   B'11101111' ;12
        RETLW   B'11101111' ;13
        RETLW   B'11101111' ;14
        RETLW   B'00000001' ;15
        RETLW   B'11111111' ;16
        RETLW   B'00000001' ;17
        RETLW   B'01101101' ;18
        RETLW   B'01101101' ;19
        RETLW   B'01101101' ;1A
        RETLW   B'01101101' ;1B
        RETLW   B'11111111' ;1C
        RETLW   B'00000001' ;1D
        RETLW   B'01111111' ;1E
        RETLW   B'01111111' ;1F
        RETLW   B'01111111' ;20
        RETLW   B'01111111' ;21
        RETLW   B'11111111' ;22
        RETLW   B'00000001' ;23
        RETLW   B'01111111' ;24
        RETLW   B'01111111' ;25
        RETLW   B'01111111' ;26
        RETLW   B'01111111' ;27
        RETLW   B'11111111' ;28
        RETLW   B'10000011' ;29
        RETLW   B'01111101' ;2A
        RETLW   B'01111101' ;2B
        RETLW   B'01111101' ;2C
        RETLW   B'10000011' ;2D
        RETLW   B'11111111' ;2E
        RETLW   B'11111111' ;2F
        RETLW   B'11111111' ;30
        RETLW   B'00000001' ;31
        RETLW   B'01101101' ;32
        RETLW   B'01101101' ;33
        RETLW   B'01101101' ;34
        RETLW   B'01101101' ;35
        RETLW   B'11111111' ;36
        RETLW   B'11000001' ;37
        RETLW   B'10111111' ;38
        RETLW   B'01111111' ;39
        RETLW   B'10111111' ;3A
        RETLW   B'11000001' ;3B
        RETLW   B'11111111' ;3C
        RETLW   B'00000001' ;3D
        RETLW   B'01101101' ;3E
        RETLW   B'01101101' ;3F
        RETLW   B'01101101' ;40
        RETLW   B'01101101' ;41
        RETLW   B'11111111' ;42
        RETLW   B'00000001' ;43
        RETLW   B'11101101' ;44
        RETLW   B'11001101' ;45
        RETLW   B'10101101' ;46
        RETLW   B'01110011' ;47
        RETLW   B'11111111' ;48
        RETLW   B'11111001' ;49
        RETLW   B'11110111' ;4A
        RETLW   B'00001111' ;4B
        RETLW   B'11110111' ;4C
        RETLW   B'11111001' ;4D
        RETLW   B'11111111' ;4E
        RETLW   B'10000011' ;4F
        RETLW   B'01111101' ;50
        RETLW   B'01111101' ;51
        RETLW   B'01111101' ;52
        RETLW   B'10000011' ;53
        RETLW   B'11111111' ;54
        RETLW   B'00000001' ;55
        RETLW   B'11110111' ;56
        RETLW   B'11101111' ;57
        RETLW   B'11011111' ;58
        RETLW   B'00000001' ;59
        RETLW   B'11111111' ;5A
        RETLW   B'00000001' ;5B
        RETLW   B'01101101' ;5C
        RETLW   B'01101101' ;5D
        RETLW   B'01101101' ;5E
        RETLW   B'01101101' ;5F
        RETLW   B'11111111' ;60
        RETLW   B'01111111' ;61
        RETLW   B'11111111' ;62
        RETLW   B'11111111' ;63
        RETLW   B'00000001' ;64
        RETLW   B'11101111' ;65
        RETLW   B'11101111' ;66
        RETLW   B'11101111' ;67
        RETLW   B'00000001' ;68
        RETLW   B'11111111' ;69
        RETLW   B'10000011' ;6A
        RETLW   B'01111101' ;6B
        RETLW   B'01111101' ;6C
        RETLW   B'01111101' ;6D
        RETLW   B'10000011' ;6E
        RETLW   B'11111111' ;6F
        RETLW   B'10000001' ;70
        RETLW   B'01111111' ;71
        RETLW   B'10011111' ;72
        RETLW   B'01111111' ;73
        RETLW   B'10000001' ;74
        RETLW   B'11111111' ;75
        RETLW   B'11111111' ;76
        RETLW   B'11111111' ;77
        RETLW   B'00000111' ;78
        RETLW   B'11011011' ;79
        RETLW   B'11011101' ;7A
        RETLW   B'11011011' ;7B
        RETLW   B'00000111' ;7C
        RETLW   B'11111111' ;7D
        RETLW   B'00000001' ;7E
        RETLW   B'11101101' ;7F
        RETLW   B'11001101' ;80
        RETLW   B'10101101' ;81
        RETLW   B'01110011' ;82
        RETLW   B'11111111' ;83
        RETLW   B'00000001' ;84
        RETLW   B'01101101' ;85
        RETLW   B'01101101' ;86
        RETLW   B'01101101' ;87
        RETLW   B'01101101' ;88
        RETLW   B'11111111' ;89
        RETLW   B'11111111' ;90
        RETLW   B'11111111' ;91
        RETLW   B'11111001' ;92
        RETLW   B'11110111' ;93
        RETLW   B'00001111' ;94
        RETLW   B'11110111' ;95
        RETLW   B'11111001' ;96
        RETLW   B'11111111' ;97
        RETLW   B'10000011' ;98
        RETLW   B'01111101' ;99
        RETLW   B'01111101' ;9A
        RETLW   B'01111101' ;9B
        RETLW   B'10000011' ;9C
        RETLW   B'11111111' ;9D
        RETLW   B'10000001' ;9E
        RETLW   B'01111111' ;9F
        RETLW   B'01111111' ;A0
        RETLW   B'01111111' ;A1
        RETLW   B'10000001' ;A2
        RETLW   B'11111111' ;A3
        RETLW   B'11110011' ;A4
        RETLW   B'11111101' ;A5
        RETLW   B'01001101' ;A6
        RETLW   B'11101101' ;A7
        RETLW   B'11110011' ;A8
        RETLW   B'11111111' ;A9
        RETLW   B'11111111' ;AA
        RETLW   B'11111111' ;AB
        RETLW   B'11111111' ;AC
        RETLW   B'11111111' ;AD
        RETLW   B'11111111' ;AE
        RETLW   B'11111111' ;AF
        RETLW   B'11111111' ;B0
        RETLW   B'11111111' ;B1
        RETLW   B'11111111' ;B2
        RETLW   B'11111111' ;B3
        RETLW   B'11111111' ;B4
        RETLW   B'11111111' ;B5
        RETLW   B'11111111' ;B6
        RETLW   B'11111111' ;B7
        RETLW   B'11111111' ;B8
        RETLW   B'11111111' ;B9
        RETLW   B'11111111' ;BA
        RETLW   B'11111111' ;BB
        RETLW   B'11111111' ;BC
        RETLW   B'11111111' ;BD
        RETLW   B'11111111' ;BE





DAT_2C
        ADDWF   PCL
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   1H
        RETLW   2H
        RETLW   4H
        RETLW   8H
        RETLW   10H
        RETLW   20H
        RETLW   40H
        RETLW   80H

DAT_3C
        ADDWF   PCL
        RETLW   1H
        RETLW   2H
        RETLW   4H
        RETLW   8H
        RETLW   10H
        RETLW   20H
        RETLW   40H
        RETLW   80H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H


WAITC
        MOVLW   5H
        MOVWF   TIM1
    WA1C    MOVLW   5H
        MOVWF   TIM2
    WA2C    NOP
        DECFSZ  TIM2,F
        GOTO    WA2C
        DECFSZ  TIM1,F
        GOTO    WA1C
        RETURN

;********************************************************************************************************

        ORG 1800H

MAIN_D
        MOVLW   0H
        MOVWF   CONT

MA_1D       INCF    CONT
        MOVLW   60H     ;ここの数で速さを調節
        MOVWF   LOOP1
LOOPD       MOVF    CONT,W
        MOVWF   YOKO
        MOVLW   0H
        MOVWF   TATE
MA_2D       MOVF    YOKO,W  
        CALL    DAT_1D
        MOVWF   PORTA
        MOVF    TATE,W
        CALL    DAT_2D
        MOVWF   PORTB
        MOVF    TATE,W
        CALL    DAT_3D
        MOVWF   PORTC
        CALL    WAITD
        INCF    YOKO
        INCF    TATE
        CLRF    PORTB
        CLRF    PORTC
        MOVF    TATE,W
        SUBLW   10H
        BTFSS   STATUS,Z
        GOTO    MA_2D
        
        DECFSZ  LOOP1,F
        GOTO    LOOPD

        MOVF    CONT,W
        SUBLW   099H        ;ここの数を変える
        BTFSS   STATUS,Z
        GOTO    MA_1D
        GOTO    MAIN_D

DAT_1D
        ADDWF   PCL 
    DT  B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111' 
    DT  B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111' 
    DT  B'11111100',B'11111100',B'10000000',B'11011111',B'11100011',B'11111011',B'11111111'     ;♪
    DT  B'10000111',B'11111000',B'11100111',B'11111000',B'10000111',B'11111111'             ;W
    DT  B'10000000',B'10110110',B'10110110',B'10110110',B'10110110',B'11111111'             ;E
    DT  B'10000000',B'11111110',B'11111110',B'11111110',B'11111110',B'11111111'             ;L
    DT  B'11000001',B'10111110',B'10111110',B'10111110',B'11011101',B'11111111'             ;C
    DT  B'11000001',B'10111110',B'10111110',B'10111110',B'11000001',B'11111111'             ;O
    DT  B'10000000',B'11011111',B'11101111',B'11011111',B'10000000',B'11111111'             ;M
    DT  B'10000000',B'10110110',B'10110110',B'10110110',B'10110110',B'11111111',B'11111111',B'11111111' ;E
    DT  B'10111111',B'10111111',B'10000000',B'10111111',B'10111111',B'11111111'             ;T
    DT  B'11000001',B'10111110',B'10111110',B'10111110',B'11000001',B'11111111',B'11111111',B'11111111' ;O
    DT  B'10111111',B'10111111',B'10000000',B'10111111',B'10111111',B'11111111'             ;T
    DT  B'10000000',B'11110111',B'11110111',B'11110111',B'10000000',B'11111111'             ;H
    DT  B'10000000',B'10110110',B'10110110',B'10110110',B'10110110',B'11111111',B'11111111',B'11111111' ;E
    DT  B'10000000',B'11011111',B'11101111',B'11011111',B'10000000',B'11111111'             ;M
    DT  B'10000001',B'11111110',B'11111110',B'11111110',B'10000001',B'11111111'             ;U
    DT  B'11001101',B'10110110',B'10110110',B'10110110',B'11011001',B'11111111'             ;S
    DT  B'10111110',B'10000000',B'10111110',B'11111111'                         ;I
    DT  B'11000001',B'10111110',B'10111110',B'10111110',B'11011101',B'11111111',B'11111111',B'11111111' ;C
    DT  B'11000001',B'10111110',B'10111110',B'10111110',B'11011101',B'11111111'             ;C
    DT  B'10000000',B'11111110',B'11111110',B'11111110',B'11111110',B'11111111'             ;L
    DT  B'10000001',B'11111110',B'11111110',B'11111110',B'10000001',B'11111111'             ;U
    DT  B'10000000',B'10110110',B'10110110',B'10110110',B'11001001'                 ;B
    DT  B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111' 
    DT  B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111',B'11111111' 





DAT_2D
        ADDWF   PCL
        RETLW   80H
        RETLW   40H
        RETLW   20H
        RETLW   10H
        RETLW   08H
        RETLW   04H
        RETLW   02H
        RETLW   01H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H


DAT_3D
        ADDWF   PCL
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   0H
        RETLW   80H
        RETLW   40H
        RETLW   20H
        RETLW   10H
        RETLW   08H
        RETLW   04H
        RETLW   02H
        RETLW   01H


WAITD
        MOVLW   5H
        MOVWF   TIM1
    WA1D    MOVLW   5H
        MOVWF   TIM2
    WA2D    NOP
        DECFSZ  TIM2,F
        GOTO    WA2D
        DECFSZ  TIM1,F
        GOTO    WA1D
        RETURN

    END