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