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

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

概要

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

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