;********************************************************************
;                LCD表示器 DM12232C by PIC
;********************************************************************
;接続方法
;RST=VDD(68 SERIES INTERFACE)
;RA0=A0(LOW:command,HIGH:data)
;RA1=E1(ACTIVE HIGH)
;RA2=E2(ACTIVE HIGH)
;RA3=R/W(HIGH:Read,LOW:Write)
;RB0=D0,RB1=D1,~~~,RB7=D7
;--------------------------------------------------------------------
        LIST        P=PIC16F84    ;
        INCLUDE     "P16f84.inc"  ;標準ヘッダ定義ファイル
;--------------------------------------------------------------------

	LINECNT	EQU	0CH		;「0」書き込み用カラムのカウンタ
	PAGECNT	EQU	0DH		; 「0」書き込み用Pageのカウンタ
	DAT		EQU     0FH             ;LCD表示データ格納
	STUS		EQU     010H            ;LCDのステータス情報を格納
	STORE		EQU	011H		;Wレジスタ情報を格納
	ORG     0               ;Reset Start

;--------------------------------------------------------------------
;             メインルーチン
;--------------------------------------------------------------------

MAIN
                              ;PICのInitialize 、ポート初期設定
        BSF     STATUS,RP0      ;バンク1へ切替
	CLRF	TRISA		;ポートAを出力モードに設定
        CLRF	TRISB           ;ポートBを出力モードに設定
        BCF     STATUS,RP0      ;バンク0に戻す     
        MOVLW   B'00000000'     ;PORTA初期設定
        MOVWF   PORTA
        MOVLW   B'00000000'     ;PORTB初期設定
        MOVWF   PORTB		;PIC_INITIAL_END

	
LCD_INITIALIZE				;ドライバIC1,IC2の初期化
      MOVLW   B'11100010'	;SOFTWARE RESET
      CALL    LCDCMD1
	CALL	LCDCMD2
	MOVLW   B'10100000'	;ADC:右回り出力(正転)
      CALL    LCDCMD1
	CALL	LCDCMD2
	MOVLW   B'10100100'	;スタティックドライブOFF
      CALL    LCDCMD1
	CALL	LCDCMD2
	MOVLW   B'10101001'	;1/32Duty
      CALL    LCDCMD1
	CALL	LCDCMD2
	MOVLW   B'10101111'	;表示ON
      CALL    LCDCMD1
	CALL	LCDCMD2
				;INITIALIZE終了

;以下全画面をOFFにするために表示RAMに「0」を書き込む
;--------------IC1の全表示RAMに「0」を書き込む--------------

	MOVLW	03H			;2重ループ処理	
	MOVWF	PAGECNT		;PAGE数セット
ERASE_1
	MOVF	PAGECNT,W
	ADDLW	B'10111000'	
	CALL	LCDCMD1		;PAGE SET
	MOVLW	B'00000000'	
	CALL	LCDCMD1		;START LINE=0
	MOVLW	3DH			;Yアドレス数セット
	MOVWF	LINECNT
ERASE_2
	MOVLW	B'00000000'
	CALL	DATW1			;「0」書き込み
	DECFSZ  LINECNT,F
	GOTO	ERASE_2
	DECFSZ  PAGECNT,F
	GOTO	ERASE_1

	MOVLW	B'10111000'		;PAGE=0分の処理
	CALL	LCDCMD1		;PAGE SET=0
	MOVLW	B'00000000'	
	CALL	LCDCMD1		;START LINE=0
	MOVLW	3DH
	MOVWF	LINECNT
ERASE_X
	MOVLW	B'00000000'
	CALL	DATW1
	DECFSZ  LINECNT,F
	GOTO	ERASE_X


;--------------IC2の全表示RAMに「0」を書き込む--------------

	MOVLW	03H			;2重ループ処理	
	MOVWF	PAGECNT		;PAGE数セット

ERASE_3
	MOVF	PAGECNT,W
	ADDLW	B'10111000'	
	CALL	LCDCMD2		;PAGE SET
	MOVLW	B'00000000'	
	CALL	LCDCMD2		;START LINE=0
	MOVLW	3DH			;Yアドレス数セット
	MOVWF	LINECNT
ERASE_4
	MOVLW	B'00000000'
	CALL	DATW2			;「0」書き込み
	DECFSZ  LINECNT,F
	GOTO	ERASE_4

	DECFSZ  PAGECNT,F
	GOTO	ERASE_3

	MOVLW	B'10111000'		;PAGE=0分の処理
	CALL	LCDCMD2		;PAGE SET=0
	MOVLW	B'00000000'	
	CALL	LCDCMD2		;START LINE=0
	MOVLW	3DH
	MOVWF	LINECNT
ERASE_Y
	MOVLW	B'00000000'
	CALL	DATW2
	DECFSZ  LINECNT,F
	GOTO	ERASE_Y

;以上で全表示RAMの「0」書き込み終了→「画面は何も表示していない状態」
;--------------------------------------------------------------------------

;「液晶ディスプレイ Santech!」の書き込み
;1ドットづつ(8ビットまとめて)の書き込みになりますので少々つらいですが
;がんばって入力しましょう

WRITE_SANTECH
				
	MOVLW   B'10111000'	;IC1,Page=0
	CALL    LCDCMD1
	MOVLW   010H		;Column=16
	CALL    LCDCMD1
	MOVLW   B'11100000'	;Write data(1line)
	CALL    DATW1
	MOVLW   B'11111000'	;Write 0-17
	CALL    DATW1	
	MOVLW   B'11111000'	;Write 0-18
	CALL    DATW1
	MOVLW   B'11111000'	;Write 0-19
	CALL    DATW1
	MOVLW   B'11111100'	;Write 0-20
	CALL    DATW1
	MOVLW   B'00011100'	;Write 0-21
	CALL    DATW1
	MOVLW   B'00001110'	;Write 0-22	
	CALL    DATW1
	MOVLW   B'00000110'	;Write 0-23
	CALL    DATW1
	MOVLW   B'00000110'	;Write 0-24
	CALL    DATW1
	MOVLW   B'00000110'	;Write 0-25
	CALL    DATW1
	MOVLW   B'00000110'	;Write 0-26
	CALL    DATW1
	MOVLW   B'00000110'	;Write 0-27
	CALL    DATW1
	MOVLW   B'00011110'	;Write 0-28
	CALL    DATW1
	MOVLW   B'11111100'	;Write 0-29
	CALL    DATW1
	MOVLW   B'11111100'	;Write 0-30
	CALL    DATW1
	MOVLW   B'00000100'	;Write 0-31
	CALL    DATW1

	MOVLW   B'10111000'	;IC2,Page=0
	CALL    LCDCMD2
	MOVLW   02BH		;Column=104
	CALL    LCDCMD2
	MOVLW   B'11110000'	;Write 0-104
	CALL    DATW2
	MOVLW   B'11111110'	;Write 0-105
	CALL    DATW2
	MOVLW   B'11111110'	;Write 0-106
	CALL    DATW2
	MOVLW   B'11111110'	;Write 0-107
	CALL    DATW2
	MOVLW   B'11111110'	;Write 0-108
	CALL    DATW2
	MOVLW   B'11111110'	;Write 0-109
	CALL    DATW2
	MOVLW   B'00001110'	;Write 0-110
	CALL    DATW2

	MOVLW   B'10111001'	;IC1,Page=1
	CALL    LCDCMD1
	MOVLW   0FH		;Column=15
	CALL    LCDCMD1
	MOVLW   B'00000110'	;Write 1-15
	CALL    DATW1
	MOVLW   B'00111111'	;Write 1-16
	CALL    DATW1
	MOVLW   B'11111111'	;Write 1-17
	CALL    DATW1
	MOVLW   B'11111111'	;Write 1-18
	CALL    DATW1
	MOVLW   B'11111111'	;Write 1-19
	CALL    DATW1
	MOVLW   B'11111111'	;Write 1-20
	CALL    DATW1
	MOVLW   B'11111100'	;Write 1-21
	CALL    DATW1
	MOVLW   B'11110000'	;Write 1-22
	CALL    DATW1
	MOVLW   B'11100000'	;Write 1-23
	CALL    DATW1
	MOVLW   B'11100000'	;Write 1-24
	CALL    DATW1
	MOVLW   B'11000000'	;Write 1-25
	CALL    DATW1
	MOVLW   B'10000000'	;Write 1-26
	CALL    DATW1
	MOVLW   B'00000000'	;Write 1-27
	CALL    DATW1
	MOVLW   B'00000000'	;Write 1-28
	CALL    DATW1
	MOVLW   B'00000000'	;Write 1-29
	CALL    DATW1
	MOVLW   B'10000000'	;Write 1-30
	CALL    DATW1
	MOVLW   B'00101010'	;Write 1-31
	CALL    DATW1
	MOVLW   B'11101010'	;Write 1-32
	CALL    DATW1
	MOVLW   B'10010100'	;Write 1-33
	CALL    DATW1
	MOVLW   B'01111100'	;Write 1-34
	CALL    DATW1
	MOVLW   B'10100110'	;Write 1-35
	CALL    DATW1
	MOVLW   B'11011110'	;Write 1-36
	CALL    DATW1
	MOVLW   B'01111100'	;Write 1-37
	CALL    DATW1
	MOVLW   B'00010100'	;Write 1-38
	CALL    DATW1
	MOVLW   B'11100000'	;Write 1-39
	CALL    DATW1
	MOVLW   B'01010000'	;Write 1-40
	CALL    DATW1
	MOVLW   B'11110000'	;Write 1-41
	CALL    DATW1
	MOVLW   B'00011110'	;Write 1-42
	CALL    DATW1
	MOVLW   B'11111110'	;Write 1-43
	CALL    DATW1
	MOVLW   B'11110110'	;Write 1-44
	CALL    DATW1
	MOVLW   B'01011110'	;Write 1-45
	CALL    DATW1
	MOVLW   B'11111110'	;Write 1-46
	CALL    DATW1
	MOVLW   B'00010000'	;Write 1-47
	CALL    DATW1
	MOVLW   B'00000000'	;Write 1-48
	CALL    DATW1
	MOVLW   B'00010000'	;Write 1-49
	CALL    DATW1
	MOVLW   B'00010100'	;Write 1-50
	CALL    DATW1
	MOVLW   B'10010100'	;Write 1-51
	CALL    DATW1
	MOVLW   B'11110100'	;Write 1-52
	CALL    DATW1
	MOVLW   B'01110100'	;Write 1-53
	CALL    DATW1
	MOVLW   B'00010100'	;Write 1-54
	CALL    DATW1
	MOVLW   B'00010010'	;Write 1-55
	CALL    DATW1
	MOVLW   B'00010010'	;Write 1-56
	CALL    DATW1
	MOVLW   B'00000000'	;Write 1-57
	CALL    DATW1
	MOVLW   B'01000000'	;Write 1-58
	CALL    DATW1
	MOVLW   B'01000000'	;Write 1-59
	CALL    DATW1
	MOVLW   B'00100000'	;Write 1-60
	CALL    DATW1

	MOVLW   B'10111001'	;IC2,Page=1
	CALL    LCDCMD2
	MOVLW   00H		;Column=0
	CALL    LCDCMD2
	MOVLW   B'11100000'	;Write 1-61
	CALL    DATW2
	MOVLW   B'11110000'	;Write 1-62
	CALL    DATW2
	MOVLW   B'00011000'	;Write 1-63
	CALL    DATW2
	MOVLW   B'00001000'	;Write 1-64
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-65
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-66
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-67
	CALL    DATW2
	MOVLW   B'10000100'	;Write 1-68
	CALL    DATW2
	MOVLW   B'11000100'	;Write 1-69
	CALL    DATW2
	MOVLW   B'01100100'	;Write 1-70
	CALL    DATW2
	MOVLW   B'11110100'	;Write 1-71
	CALL    DATW2
	MOVLW   B'10011100'	;Write 1-72
	CALL    DATW2
	MOVLW   B'00001100'	;Write 1-73
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-74
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-75
	CALL    DATW2
	MOVLW   B'00000100'	;Write 1-76
	CALL    DATW2
	MOVLW   B'00000100'	;Write 1-77
	CALL    DATW2
	MOVLW   B'10000100'	;Write 1-78
	CALL    DATW2
	MOVLW   B'11000100'	;Write 1-79
	CALL    DATW2
	MOVLW   B'01100100'	;Write 1-80
	CALL    DATW2
	MOVLW   B'00111100'	;Write 1-81
	CALL    DATW2
	MOVLW   B'00011110'	;Write 1-82
	CALL    DATW2
	MOVLW   B'00000110'	;Write 1-83
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-84
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-85
	CALL    DATW2
	MOVLW   B'11100000'	;Write 1-86
	CALL    DATW2
	MOVLW   B'10111100'	;Write 1-87
	CALL    DATW2
	MOVLW   B'11011100'	;Write 1-88
	CALL    DATW2
	MOVLW   B'01100000'	;Write 1-89
	CALL    DATW2
	MOVLW   B'00100000'	;Write 1-90
	CALL    DATW2
	MOVLW   B'00010000'	;Write 1-91
	CALL    DATW2
	MOVLW   B'00010000'	;Write 1-92
	CALL    DATW2
	MOVLW   B'00100000'	;Write 1-93
	CALL    DATW2
	MOVLW   B'00100000'	;Write 1-94
	CALL    DATW2
	MOVLW   B'00100000'	;Write 1-95
	CALL    DATW2
	MOVLW   B'00010000'	;Write 1-96
	CALL    DATW2
	MOVLW   B'11110000'	;Write 1-97
	CALL    DATW2
	MOVLW   B'11111000'	;Write 1-98
	CALL    DATW2
	MOVLW   B'00011100'	;Write 1-99
	CALL    DATW2
	MOVLW   B'00000110'	;Write 1-100
	CALL    DATW2
	MOVLW   B'00000010'	;Write 1-101
	CALL    DATW2
	MOVLW   B'00000000'	;Write 1-102
	CALL    DATW2
	MOVLW   B'11111110'	;Write 1-103
	CALL    DATW2
	MOVLW   B'11111111'	;Write 1-104
	CALL    DATW2
	MOVLW   B'11111111'	;Write 1-105
	CALL    DATW2
	MOVLW   B'11111111'	;Write 1-106
	CALL    DATW2
	MOVLW   B'11111111'	;Write 1-107
	CALL    DATW2
	MOVLW   B'00001111'	;Write 1-108
	CALL    DATW2
	MOVLW   B'00000001'	;Write 1-109
	CALL    DATW2

	MOVLW   B'10111010'	;IC1,Page=2
	CALL    LCDCMD1
	MOVLW   012H		;Column=18
	CALL    LCDCMD1
	MOVLW   B'00000001'	;Write 2-18
	CALL    DATW1
	MOVLW   B'00000011'	;Write 2-19
	CALL    DATW1
	MOVLW   B'00000011'	;Write 2-20
	CALL    DATW1
	MOVLW   B'00000111'	;Write 2-21
	CALL    DATW1
	MOVLW   B'00001111'	;Write 2-22
	CALL    DATW1
	MOVLW   B'11111111'	;Write 2-23
	CALL    DATW1
	MOVLW   B'11111111'	;Write 2-24
	CALL    DATW1
	MOVLW   B'11111111'	;Write 2-25
	CALL    DATW1
	MOVLW   B'11111111'	;Write 2-26
	CALL    DATW1
	MOVLW   B'11111110'	;Write 2-27
	CALL    DATW1
	MOVLW   B'01111000'	;Write 2-28
	CALL    DATW1
	MOVLW   B'00000000'	;Write 2-29
	CALL    DATW1
	MOVLW   B'00000001'	;Write 2-30
	CALL    DATW1
	MOVLW   B'10000000'	;Write 2-31
	CALL    DATW1
	MOVLW   B'01100001'	;Write 2-32
	CALL    DATW1
	MOVLW   B'11111000'	;Write 2-33
	CALL    DATW1
	MOVLW   B'11100001'	;Write 2-34
	CALL    DATW1
	MOVLW   B'10000000'	;Write 2-35
	CALL    DATW1
	MOVLW   B'00000001'	;Write 2-36
	CALL    DATW1
	MOVLW   B'00000001'	;Write 2-37
	CALL    DATW1
	MOVLW   B'00000000'	;Write 2-38
	CALL    DATW1
	MOVLW   B'00000001'	;Write 2-39
	CALL    DATW1
	MOVLW   B'00001001'	;Write 2-40
	CALL    DATW1
	MOVLW   B'11111001'	;Write 2-41
	CALL    DATW1
	MOVLW   B'11111000'	;Write 2-42
	CALL    DATW1
	MOVLW   B'01110001'	;Write 2-43
	CALL    DATW1
	MOVLW   B'11100001'	;Write 2-44
	CALL    DATW1
	MOVLW   B'11000001'	;Write 2-45
	CALL    DATW1
	MOVLW   B'00000001'	;Write 2-46
	CALL    DATW1
	MOVLW   B'00000000'	;Write 2-47
	CALL    DATW1
	MOVLW   B'00001000'	;Write 2-48
	CALL    DATW1
	MOVLW   B'11111000'	;Write 2-49
	CALL    DATW1
	MOVLW   B'11111001'	;Write 2-50
	CALL    DATW1
	MOVLW   B'00001001'	;Write 2-51
	CALL    DATW1
	MOVLW   B'00000000'	;Write 2-52
	CALL    DATW1
	MOVLW   B'00111000'	;Write 2-53
	CALL    DATW1
	MOVLW   B'00001000'	;Write 2-54
	CALL    DATW1
	MOVLW   B'00001000'	;Write 2-55
	CALL    DATW1
	MOVLW   B'11111000'	;Write 2-56
	CALL    DATW1
	MOVLW   B'11111000'	;Write 2-57
	CALL    DATW1
	MOVLW   B'11111000'	;Write 2-58
	CALL    DATW1
	MOVLW   B'00001000'	;Write 2-59
	CALL    DATW1
	MOVLW   B'00001000'	;Write 2-60
	CALL    DATW1

	MOVLW   B'10111010'	;IC2,Page=2
	CALL    LCDCMD2
	MOVLW   00H		;Column=0
	CALL    LCDCMD2
	MOVLW   B'00111001'	;Write 2-61
	CALL    DATW2
	MOVLW   B'00000001'	;Write 2-62
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-63
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-64
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-65
	CALL    DATW2
	MOVLW   B'11111001'	;Write 2-66
	CALL    DATW2
	MOVLW   B'00001001'	;Write 2-67
	CALL    DATW2
	MOVLW   B'00001001'	;Write 2-68
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-69
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-70
	CALL    DATW2
	MOVLW   B'10001000'	;Write 2-71
	CALL    DATW2
	MOVLW   B'00111001'	;Write 2-72
	CALL    DATW2
	MOVLW   B'00000001'	;Write 2-73
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-74
	CALL    DATW2
	MOVLW   B'11000000'	;Write 2-75
	CALL    DATW2
	MOVLW   B'11110001'	;Write 2-76
	CALL    DATW2
	MOVLW   B'11110001'	;Write 2-77
	CALL    DATW2
	MOVLW   B'00111001'	;Write 2-78
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-79
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-80
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-81
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-82
	CALL    DATW2
	MOVLW   B'00111000'	;Write 2-83
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-84
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-85
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-86
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-87
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-88
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-89
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-90
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-91
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-92
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-93
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-94
	CALL    DATW2
	MOVLW   B'11111000'	;Write 2-95
	CALL    DATW2
	MOVLW   B'00001000'	;Write 2-96
	CALL    DATW2
	MOVLW   B'00000001'	;Write 2-97
	CALL    DATW2
	MOVLW   B'00000001'	;Write 2-98
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-99
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-100
	CALL    DATW2
	MOVLW   B'00000000'	;Write 2-101
	CALL    DATW2
	MOVLW   B'00111000'	;Write 2-102
	CALL    DATW2
	MOVLW   B'00111111'	;Write 2-103
	CALL    DATW2
	MOVLW   B'00111111'	;Write 2-104
	CALL    DATW2
	MOVLW   B'00011111'	;Write 2-105
	CALL    DATW2
	MOVLW   B'00000011'	;Write 2-106
	CALL    DATW2


	MOVLW   B'10111011'	;IC1,Page=3
	CALL    LCDCMD1
	MOVLW   0BH		;Column=11
	CALL    LCDCMD1
	MOVLW   B'00100000'	;Write 3-11
	CALL    DATW1
	MOVLW   B'00111111'	;Write 3-12
	CALL    DATW1
	MOVLW   B'00111111'	;Write 3-13
	CALL    DATW1
	MOVLW   B'01111000'	;Write 3-14
	CALL    DATW1
	MOVLW   B'01110000'	;Write 3-15
	CALL    DATW1
	MOVLW   B'01100000'	;Write 3-16
	CALL    DATW1
	MOVLW   B'01100000'	;Write 3-17
	CALL    DATW1
	MOVLW   B'01100000'	;Write 3-18
	CALL    DATW1
	MOVLW   B'01100000'	;Write 3-19
	CALL    DATW1
	MOVLW   B'01100000'	;Write 3-20
	CALL    DATW1
	MOVLW   B'00110000'	;Write 3-21
	CALL    DATW1
	MOVLW   B'00111000'	;Write 3-22
	CALL    DATW1
	MOVLW   B'00111111'	;Write 3-23
	CALL    DATW1
	MOVLW   B'00011111'	;Write 3-24
	CALL    DATW1
	MOVLW   B'00001111'	;Write 3-25
	CALL    DATW1
	MOVLW   B'00000111'	;Write 3-26
	CALL    DATW1
	MOVLW   B'00000011'	;Write 3-27
	CALL    DATW1
	MOVLW   B'01000000'	;Write 3-28
	CALL    DATW1
	MOVLW   B'01110000'	;Write 3-29
	CALL    DATW1
	MOVLW   B'01001110'	;Write 3-30
	CALL    DATW1
	MOVLW   B'00001001'	;Write 3-31
	CALL    DATW1
	MOVLW   B'00001000'	;Write 3-32
	CALL    DATW1
	MOVLW   B'00001001'	;Write 3-33
	CALL    DATW1
	MOVLW   B'01001111'	;Write 3-34
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-35
	CALL    DATW1
	MOVLW   B'01111110'	;Write 3-36
	CALL    DATW1
	MOVLW   B'01110000'	;Write 3-37
	CALL    DATW1
	MOVLW   B'01000000'	;Write 3-38
	CALL    DATW1
	MOVLW   B'00000000'	;Write 3-39
	CALL    DATW1
	MOVLW   B'01000000'	;Write 3-40
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-41
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-42
	CALL    DATW1
	MOVLW   B'01000000'	;Write 3-43
	CALL    DATW1
	MOVLW   B'00000001'	;Write 3-44
	CALL    DATW1
	MOVLW   B'00000011'	;Write 3-45
	CALL    DATW1
	MOVLW   B'00001111'	;Write 3-46
	CALL    DATW1
	MOVLW   B'00011110'	;Write 3-47
	CALL    DATW1
	MOVLW   B'00111000'	;Write 3-48
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-49
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-50
	CALL    DATW1
	MOVLW   B'00000000'	;Write 3-51
	CALL    DATW1
	MOVLW   B'00000000'	;Write 3-52
	CALL    DATW1
	MOVLW   B'00000000'	;Write 3-53
	CALL    DATW1
	MOVLW   B'00000000'	;Write 3-54
	CALL    DATW1
	MOVLW   B'01000000'	;Write 3-55
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-56
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-57
	CALL    DATW1
	MOVLW   B'01111111'	;Write 3-58
	CALL    DATW1
	MOVLW   B'01000000'	;Write 3-59
	CALL    DATW1
	MOVLW   B'00000000'	;Write 3-60
	CALL    DATW1


	MOVLW   B'10111011'	;IC2,Page=3
	CALL    LCDCMD2
	MOVLW   00H		;Column=0
	CALL    LCDCMD2
	MOVLW   B'00000000'	;Write 3-61
	CALL    DATW2
	MOVLW   B'00000000'	;Write 3-62
	CALL    DATW2
	MOVLW   B'01000000'	;Write 3-63
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-64
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-65
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-66
	CALL    DATW2
	MOVLW   B'01000001'	;Write 3-67
	CALL    DATW2
	MOVLW   B'01000001'	;Write 3-68
	CALL    DATW2
	MOVLW   B'01000001'	;Write 3-69
	CALL    DATW2
	MOVLW   B'01000001'	;Write 3-70
	CALL    DATW2
	MOVLW   B'01000011'	;Write 3-71
	CALL    DATW2
	MOVLW   B'01110000'	;Write 3-72
	CALL    DATW2
	MOVLW   B'00000000'	;Write 3-73
	CALL    DATW2
	MOVLW   B'00000000'	;Write 3-74
	CALL    DATW2
	MOVLW   B'00001111'	;Write 3-75
	CALL    DATW2
	MOVLW   B'00111111'	;Write 3-76
	CALL    DATW2
	MOVLW   B'00111111'	;Write 3-77
	CALL    DATW2
	MOVLW   B'01110000'	;Write 3-78
	CALL    DATW2
	MOVLW   B'01100000'	;Write 3-79
	CALL    DATW2
	MOVLW   B'01000000'	;Write 3-80
	CALL    DATW2
	MOVLW   B'01000000'	;Write 3-81
	CALL    DATW2
	MOVLW   B'01000000'	;Write 3-82
	CALL    DATW2
	MOVLW   B'00100000'	;Write 3-83
	CALL    DATW2
	MOVLW   B'00000000'	;Write 3-84
	CALL    DATW2
	MOVLW   B'01000000'	;Write 3-85
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-86
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-87
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-88
	CALL    DATW2
	MOVLW   B'00000001'	;Write 3-89
	CALL    DATW2
	MOVLW   B'00000001'	;Write 3-90
	CALL    DATW2
	MOVLW   B'00000001'	;Write 3-91
	CALL    DATW2
	MOVLW   B'00000001'	;Write 3-92
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-93
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-94
	CALL    DATW2
	MOVLW   B'01111111'	;Write 3-95
	CALL    DATW2
	MOVLW   B'01000000'	;Write 3-96
	CALL    DATW2
	MOVLW   B'00000000'	;Write 3-97
	CALL    DATW2
	MOVLW   B'00000000'	;Write 3-98
	CALL    DATW2
	MOVLW   B'01100000'	;Write 3-99
	CALL    DATW2
	MOVLW   B'01111110'	;Write 3-100
	CALL    DATW2
	MOVLW   B'01111110'	;Write 3-101
	CALL    DATW2
	MOVLW   B'01111110'	;Write 3-102
	CALL    DATW2
	MOVLW   B'01111110'	;Write 3-103
	CALL    DATW2
	MOVLW   B'01111110'	;Write 3-104
	CALL    DATW2
	MOVLW   B'00011110'	;Write 3-105
	CALL    DATW2

;これで書きこみデータ入力終了です。お疲れ様です。


;********************************************************************
;             Subroutine
;********************************************************************

;LCDへデータ書き込み
DATW1                          ;Wに書き込まれたデータ(8ドット分)をIC1に表示
        MOVWF   PORTB
        BSF     PORTA,0         ;A0:HIGH
        BCF     PORTA,3         ;R/W:LOW
        BSF     PORTA,1         ;E1:Active
        BCF     PORTA,1		;E1:No Active
        CALL    BUSY1        	;BUSYチェック
        RETURN
DATW2                          ;Wに書き込まれたデータ(8ドット分)をIC2に表示
        MOVWF   PORTB
        BSF     PORTA,0         ;A0:HIGH
        BCF     PORTA,3         ;R/W:LOW
        BSF     PORTA,2         ;E2:Active
        BCF     PORTA,2		;E2:No Active
        CALL    BUSY2       	;BUSYチェック
        RETURN

;IC1へコマンド書き込み
LCDCMD1                          ;Wレジスタに書き込まれたコマンドをIC1へ
        MOVWF   PORTB
        BCF     PORTA,0         ;A0:LOW
        BCF     PORTA,3         ;R/W:LOW
        BSF     PORTA,1         ;E1:Active
        BCF     PORTA,1
        CALL    BUSY1         	;BUSYチェック
        RETURN

;IC2へコマンド書き込み
LCDCMD2                          ;Wレジスタに書き込まれたコマンドをIC2へ
        MOVWF   PORTB
        BCF     PORTA,0         ;A0:LOW
        BCF     PORTA,3         ;R/W:LOW
        BSF     PORTA,2         ;E2:Active
        BCF     PORTA,2
        CALL    BUSY2        	;BUSYチェック
        RETURN


;LCD BUSYチェック
BUSY1				;IC1のBUSY CHECK
	MOVWF	STORE		;Wレジスタ内容をSTOREに一時保管
	                        ;PORTBを入力に変える
        BSF     STATUS,RP0      ;バンク1へ切替
        MOVLW   0FFH            ;ポートBを入力モードに設定
        MOVWF   TRISB
        BCF     STATUS,RP0      ;バンク0に戻す
        BCF     PORTA,0         ;Status Read
        BSF     PORTA,3         ;
        BSF     PORTA,1         ;E1 Active
        BCF     PORTA,1
        MOVF    PORTB,W
        MOVWF   STUS
        BTFSC   STUS,7       	;BUSYフラグチェック
        GOTO    BUSY1
        BCF     PORTA,3         ;R/WをWに戻しておく
        BSF     STATUS,RP0      ;バンク1へ切替
        CLRF    TRISB           ;ポートBを出力モードに設定
        BCF     STATUS,RP0      ;バンク0に戻す
	MOVF	STORE,W		;STOREに格納していた内容をWレジスタに戻す
        RETURN

BUSY2				;IC1のBUSY CHECK	
	MOVWF	STORE		;Wレジスタ内容をSTOREに一時保管
                         	;PORTBを入力に変える
        BSF     STATUS,RP0      ;バンク1へ切替
        MOVLW   0FFH            ;ポートBを入力モードに設定
        MOVWF   TRISB
        BCF     STATUS,RP0      ;バンク0に戻す
        BCF     PORTA,0         ;Status Read
        BSF     PORTA,3         ;
        BSF     PORTA,2         ;E2 Active
        BCF     PORTA,2
        MOVF    PORTB,W
        MOVWF   STUS
        BTFSC   STUS,7		;BUSYフラグチェック
        GOTO    BUSY2
        BCF     PORTA,3         ;R/WをWに戻しておく
        BSF     STATUS,RP0      ;バンク1へ切替
        CLRF    TRISB           ;ポートBを出力モードに設定
        BCF     STATUS,RP0      ;バンク0に戻す
	MOVF	STORE,W		;STOREに格納していた内容をWレジスタに戻す
        RETURN



END