;********************************************************************
; 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