;***** G_LCD.sub ********************************************************** ; ; グラフィック液晶表示器 (SG12864A) 制御サブルーチン ; ; (Glcd_Write, Glcd_SetDisplay, Glcd_SetStartLine, Glcd_SetPage, | 基本 ; Glcd_SetColumn, Glcd_WriteData, Glcd_Clear, Glcd_Init, | ; Glcd_Read, Glcd_ReadStatus, Glcd_ReadData, Glcd_Pixe, | ; Glcd_Line, Glcd_DispChr0, Glcd_DispChr, Glcd_DispStr, | オプション ; Glcd_Image, Glcd_Scroll, Glcd_ScrollText | ; ; Copyright (C) 2014 by M.Yamamoto. All rights reserved. ; ; ( coding: Ver. 0.00 2014/09/24 by M.Yamamoto ) ; coding: Ver. 1.00 2014/10/29 サブルーチンファイル ; update: Ver. x.xx ; bugfix: Ver. x.xx ; ;******************************************************* PicAsm 0237 ****** ;<オプションサブルーチンの使用宣言例> ... 必要なサブルーチンだけを選択する ;注意: 下記で *印を付したオプションサブルーチンについては、検証がとれていない ( 2014/10/29 現在 ) ;#define sub_Glcd_Read ;* ;#define sub_Glcd_ReadStatus ;* ;#define sub_Glcd_ReadData ;* ;#define sub_Glcd_Pixel ;* ;#define sub_Glcd_Line ;* ;#define sub_Glcd_DispChr0 ;* ;#define sub_Glcd_DispChr ; ;#define sub_font_write ; ;#define sub_Glcd_DispStr ; ;#define sub_Glcd_Image ;* ;#define sub_Glcd_Scroll ;* ;#define sub_Glcd_ScrollText ;* ;<定数の定義例> ;GL_INST equ PORTA ;G_LCD 制御用ポート ;GL_T_INST equ TRISA ;G_LCD 制御用ポートの入出力切り替え ;GL_DATA equ PORTB ;G_LCD データバス用ポート ;GL_T_DATA equ TRISB ;G_LCD データバス用ポートの入出力切り替え ;_G_RES equ 0 ;G_LCD /RES: L:リセット信号 ;_G_RW equ 1 ;G_LCD R/W: H:読み出し/L:書き込み信号 ;_G_E equ 2 ;G_LCD E: H→L:イネーブル信号 ;_G_CS1 equ 3 ;G_LCD CS1: H:チップセレクト信号 IC1 ;_G_CS2 equ 4 ;G_LCD CS2: H:チップセレクト信号 IC2 ;_G_DI equ 5 ;G_LCD D/I: H:データ/L:インストラクション ;<使用レジスタ> ;gl_temp ;G_LCD への入出力データの一時保存 ;gl_temp1 ;データの一時保存 ;gl_temp2 ;データの一時保存 ;gl_chip ;1:左側選択 / 2:右側選択 / 3:左側と右側選択 ;gl_diflg ;0:インストラクション / 1:データ ;gl_cnt1 ;ループカウンタ1 ;gl_cnt2 ;ループカウンタ2 ;gl_x ;X座標 ;gl_y ;Y座標 ;gl_on ;ドット 0:消灯 / 1:点灯 ;gl_tbl_h ;文字フォントデータ high アドレス ;gl_tbl_l ;文字フォントデータ low アドレス ;addr_high ;文字列データ high アドレス ;addr_low ;文字列データ low アドレス ;========================================================================== ; グラフィック LCD へ 命令 / データを出力 ;========================================================================== ;入力: W reg: 命令コード / 表示データ ; gl_diflg: 0:命令 / 1:データ ; gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_Write bcf GL_INST,_G_RW ;R/W = 0 (書き込みモードに設定) btfss gl_diflg,0 bcf GL_INST,_G_DI ;D/I = 0: 命令 btfsc gl_diflg,0 bsf GL_INST,_G_DI ;D/I = 1: データ nop bcf GL_INST,_G_CS1 ;CS1 = 0: (IC1) 左側非選択 nop bcf GL_INST,_G_CS2 ;CS2 = 0: (IC2) 右側非選択 btfsc gl_chip,0 bsf GL_INST,_G_CS1 ;CS1 = 1: (IC1) 左側選択 btfsc gl_chip,1 bsf GL_INST,_G_CS2 ;CS2 = 1: (IC2) 右側選択 nop ;; *** 必須 *** ;CS2 = 1 にセットしても nop がないと CS2 = 0 にクリアされてしまう bsf GL_INST,_G_E ;E = 1 (動作起動信号の設定:Hでストローブ) movwf GL_DATA ;命令コード / 表示データ nop nop bcf GL_INST,_G_E ;E = 0 (動作起動信号の設定:Lに戻す) return ;========================================================================== ; 左右の LCD を ON に設定 ;========================================================================== ;入力: gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_SetDisplay clrf gl_diflg ;0: 命令 movlw h'3f' call Glcd_Write return ;========================================================================== ; 表示開始ラインの指定 ;========================================================================== ;入力: W reg: Start Line (0-63) ; gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_SetStartLine clrf gl_diflg ;0: 命令 iorlw h'c0' call Glcd_Write return ;========================================================================== ; Page (縦位置) の指定 ;========================================================================== ;入力: W reg: Page (0-7) ; gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_SetPage clrf gl_diflg ;0: 命令 iorlw h'b8' call Glcd_Write return ;========================================================================== ; Column (横位置) の指定 ;========================================================================== ;入力: W reg: Column (0-63) ; gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_SetColumn clrf gl_diflg ;0: 命令 iorlw h'40' call Glcd_Write return ;========================================================================== ; グラフィック LCD へ データを出力 ;========================================================================== ;入力: W reg: 表示データ ; gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_WriteData clrf gl_diflg incf gl_diflg,F ;1:データ call Glcd_Write return ;========================================================================== ; グラフィック LCD の画面消去(フィル) ;========================================================================== ;入力: W reg: 埋める1バイトデータ ; gl_chip: 1:左側選択 / 2:右側選択 / 3:左側と右側選択 Glcd_Clear movwf gl_temp ;1バイトデータを退避 clrf gl_cnt1 ;Page = 0 初期設定 gclr01 movf gl_cnt1,W call Glcd_SetPage ;Page Address 設定 clrw call Glcd_SetColumn ;Column Address = 0 設定 movlw d'64' movwf gl_cnt2 ;出力数 = 64 初期設定 gclr02 movf gl_temp,W ;埋める1バイトデータ call Glcd_WriteData ;フィルデータ ;自動的に Column Address + 1 される decfsz gl_cnt2,F ;出力数 - 1 = 0 か? goto gclr02 ;No incf gl_cnt1,F ;Page + 1 btfss gl_cnt1,3 ;Page = 8: 終了か? goto gclr01 ;No return ;========================================================================== ; グラフィック LCD の初期設定 ;========================================================================== ;使用外部ルーチン: wait_x1ms Glcd_Init bsf GL_INST,_G_RES ;/RES = H movlw 1 call wait_x1ms ;wait 1ms bcf GL_INST,_G_RES ;/RES = L: リセット信号 movlw 1 call wait_x1ms ;wait 1ms bsf GL_INST,_G_RES ;/RES = H movlw 3 movwf gl_chip ;3: 左側と右側を選択 call Glcd_SetDisplay ;Display ON movlw h'00' call Glcd_Clear ;h'00' クリア clrw call Glcd_SetStartLine ;Display start line = 0 clrw call Glcd_SetStartLine ;??? 2度設定しないと line = 0 にならない ??? return #ifdef sub_Glcd_Read ;========================================================================== ; グラフィック LCD から ステータス / データを入力 ;========================================================================== ;入力: gl_chip: 1:左側選択 / 2:右側選択 / 3:指定禁止 (左側と右側選択) ; gl_diflg: 0:ステータス / 1:データ ;出力: W reg: ステータス / データ Glcd_Read ; movlw 3 ; subwf gl_chip,W ; btfss STATUS,Z ;3: 指定禁止 (左側と右側選択) か? ; goto grd01 ;No ; ; clrf gl_chip ;エラー表示 ; goto grd02 grd01 bsf STATUS,RP0 ;バンク 1 movlw b'11111111' movwf GL_T_DATA ;入力ポートにする bcf STATUS,RP0 ;バンク 0 bsf GL_INST,_G_RW ;R/W = 1 (読み出しモードに設定) btfss gl_diflg,0 bcf GL_INST,_G_DI ;D/I = 0: 命令 btfsc gl_diflg,0 bsf GL_INST,_G_DI ;D/I = 1: ステータス nop bcf GL_INST,_G_CS1 ;CS1 = 0: (IC1) 左側非選択 nop bcf GL_INST,_G_CS2 ;CS2 = 0: (IC2) 右側非選択 btfsc gl_chip,0 bsf GL_INST,_G_CS1 ;CS1 = 1: (IC1) 左側選択 btfsc gl_chip,1 bsf GL_INST,_G_CS2 ;CS2 = 1: (IC2) 右側選択 nop bsf GL_INST,_G_E ;E = 1 (動作起動信号の設定:Hでストローブ) nop nop movf GL_DATA,W ;読み出しデータ bcf GL_INST,_G_E ;E = 0 (動作起動信号の設定:Lに戻す) bsf STATUS,RP0 ;バンク 1 clrf GL_T_DATA ;出力ポートに戻す bcf STATUS,RP0 ;バンク 0 grd02 return #endif #ifdef sub_Glcd_ReadStatus ;========================================================================== ; グラフィック LCD から ステータスを入力 ;========================================================================== ;入力: gl_chip: 1:左側選択 / 2:右側選択 / 3:指定禁止 (左側と右側選択) ;出力: W reg: ステータス Glcd_ReadStatus clrf gl_diflg ;0: ステータス call Glcd_Read return #endif #ifdef sub_Glcd_ReadData ;========================================================================== ; グラフィック LCD から データを入力 ;========================================================================== ;入力: gl_chip: 1:左側選択 / 2:右側選択 / 3:指定禁止 (左側と右側選択) ;出力: W reg: データ Glcd_ReadData clrf gl_diflg incf gl_diflg,F ;1: データ call Glcd_Read return #endif #ifdef sub_Glcd_Pixel ;========================================================================== ; 指定座標位置の1ドットを点灯/消灯 ; 座標: (0,0) 〜 (127,63) ;========================================================================== ;入力: gl_x: X座標 (0〜127), gl_y: Y座標 (0〜63) ; gl_on: 0:消灯 / 1:点灯 Glcd_Pixel clrf gl_chip incf gl_chip,F ;1: 左側選択 movf gl_x,W andlw h'3f' movwf gl_temp1 ;Column (0-63) btfss gl_x,6 ;gl_x >= 64 か? goto gpix01 ;No incf gl_chip,F ;2: 右側選択 gpix01 movf gl_y,W movwf gl_temp2 bcf STATUS,C ;Y座標 / 8 rrf gl_temp2,F bcf STATUS,C rrf gl_temp2,F bcf STATUS,C rrf gl_temp2,F ;Page (0-7) movf gl_temp2,W call Glcd_SetPage ;Page (縦位置) を指定 movf gl_temp1,W call Glcd_SetColumn ;Column (横位置) を指定 call Glcd_ReadData ;グラフィック LCD から データを入力 movwf gl_temp movf gl_temp1,W call Glcd_SetColumn ;Column (横位置) を指定 call Glcd_ReadData ;グラフィック LCD から データを入力 movwf gl_temp movf gl_y,W movwf gl_cnt1 movlw h'07' andwf gl_cnt1,F ;Y座標 % 8 movlw h'01' ;初期値 movwf gl_cnt2 ;0bit=1: '0000.0001' gpix02 decfsz gl_cnt1,F ;gl_cnt1 - 1 = 0 か? goto gpix03 ;No goto gpix04 ;Yes gpix03 bcf STATUS,C rlf gl_cnt2,F ;gl_cnt2 * 2 goto gpix02 gpix04 btfss gl_on,0 goto gpix05 ;gl_on = 0: 消灯 のとき movf gl_cnt2,W ;gl_on = 1: 点灯 のとき iorwf gl_temp,F ;該当 bit の点灯データ goto gpix06 gpix05 movlw h'ff' ; xorwf gl_cnt2,W ;~gl_cnt2 ビット反転 andwf gl_temp,F ;該当 bit の消灯データ gpix06 movf gl_temp1,W call Glcd_SetColumn ;Column (横位置) を指定 movf gl_temp,W call Glcd_WriteData ;グラフィック LCD へ データを出力 return #endif #ifdef sub_Glcd_Line ;========================================================================== ; 直線描画 ; 座標: (0,0) - (127,63) ;========================================================================== ;入力: gl_x: X座標 (0-127), gl_y: Y座標 (0-63) ; gl_on: 0:消灯 / 1:点灯 Glcd_Line return #endif #ifdef sub_Glcd_DispChr0 ;========================================================================== ; キャラクタ文字 (横:8 x 縦:8) の表示 ; 座標: (0,0) 〜 (15,7) 1列 = 16文字表示 ;========================================================================== ;入力: W reg: 表示文字コード ; gl_x: X座標 (0〜15), gl_y: Y座標 (0〜7) Glcd_DispChr0 movwf gl_temp ;文字コードを退避 clrf gl_chip incf gl_chip,F ;1: 左側選択 btfss gl_x,3 ;gl_x >= 8 か? goto gchr00 ;No incf gl_chip,F ;2: 右側選択 gchr00 movf gl_x,W ;X座標 (0〜15) を movwf gl_temp1 bcf gl_temp1,3 ;X座標 (0〜7) にする bcf STATUS,C ;X座標 * 8 rlf gl_temp1,F bcf STATUS,C rlf gl_temp1,F bcf STATUS,C rlf gl_temp1,F ;Column (0,8,16, ... ,56) movf gl_y,W call Glcd_SetPage ;Page (縦位置) を指定 movf gl_temp1,W call Glcd_SetColumn ;Column (横位置) を指定 movf gl_temp,W ;表示する文字コード call font_write ;1 文字フォントデータパタンの出力 clrw call Glcd_WriteData ;グラフィック LCD へ データを出力 call Glcd_WriteData ;グラフィック LCD へ データを出力 call Glcd_WriteData ;グラフィック LCD へ データを出力 return #endif #ifdef sub_Glcd_DispChr ;========================================================================== ; キャラクタ文字 (横:6 x 縦:8) の表示 ; 座標: (0,0) 〜 (19,7) 1列 = 20文字表示 ;========================================================================== ;入力: W reg: 表示文字コード ; gl_x: X座標 (0〜19), gl_y: Y座標 (0〜7) ;出力: gl_temp1: 出力開始 Column (横位置) ... カレンダープログラム用 Glcd_DispChr movwf gl_temp ;文字コードを退避 clrf gl_chip incf gl_chip,F ;1: 左側選択 movf gl_x,W movwf gl_temp1 movlw d'10' subwf gl_temp1,W btfss STATUS,C ;gl_temp1 >= 10 か? goto gchr01 ;No movwf gl_temp1 ;gl_temp1 - 10 incf gl_chip,F ;2: 右側選択 gchr01 bcf STATUS,C ;X座標 * 6 rlf gl_temp1,F movf gl_temp1,W bcf STATUS,C rlf gl_temp1,F addwf gl_temp1,F ;Column (0,6,12, ... ,54) btfss gl_chip,0 ;1: 左側選択 か? goto gchr02 ;No movlw 4 addwf gl_temp1,F ;Column (4,10,16, ... ,58) gchr02 movf gl_y,W ;** 注 ** -- font_write 中の "注" を見よ -- andlw h'3f' call Glcd_SetPage ;Page (縦位置) を指定 movf gl_temp1,W call Glcd_SetColumn ;Column (横位置) を指定 movf gl_temp,W ;表示する文字コード call font_write ;1 文字フォントデータパタンの出力 clrw btfsc gl_y,7 ;反転表示指示 か? movlw h'7f' ;Yes. ビット反転 btfss gl_y,6 ;1 Line ずらし指示 か? goto gchr04 ;No movwf gl_cnt2 bcf STATUS,C ; rlf gl_cnt2,W ;** 注 ** gchr04 call Glcd_WriteData ;グラフィック LCD へ データを出力 return #endif #ifdef sub_font_write ;========================================================================== ; 1 文字フォントデータパタンの出力 ;入力: W: 文字データ (h'20'〜h'df') font_write movwf gl_tbl_l ;表示する文字コードを退避 clrf gl_tbl_h movlw h'20' ;h'20'がテーブルの先頭位置 subwf gl_tbl_l,F movf gl_tbl_l,W ;W に一時退避 bcf STATUS,C ;5倍する rlf gl_tbl_l,F ;2倍 rlf gl_tbl_h,F bcf STATUS,C rlf gl_tbl_l,F ;4倍 rlf gl_tbl_h,F addwf gl_tbl_l,F ;5倍 ... W に退避したコードを足す btfsc STATUS,C ;オーバーフローした場合は incf gl_tbl_h,F ;文字フォントデータアドレス high の更新 movlw low font5x7_data_tbl addwf gl_tbl_l,F ;文字フォントデータの先頭 low アドレス btfsc STATUS,C ;オーバーフローした場合は incf gl_tbl_h,F ;文字フォントデータアドレス high の更新 movlw high font5x7_data_tbl addwf gl_tbl_h,F ;文字フォントデータの先頭 high アドレス movlw d'5' movwf gl_cnt1 ;ループカウンタ = 5 を設定 fwr01 call table_read ;文字フォントデータのテーブル読み出し movwf gl_temp2 ;一時退避 movlw high $ ;この場所の high アドレスを movwf PCLATH ;PCLATH に設定 btfss gl_y,7 ;反転表示指示 か? goto fwr02 ;No movlw h'7f' xorwf gl_temp2,F ;ビット反転 fwr02 btfss gl_y,6 ;** 注 ** goto fwr03 ;No -- カレンダープログラム用に -- ; -- 1 bit 左(下)にずらす -- bcf STATUS,C ; -- 通常のプログラムでは無視 -- rlf gl_temp2,F ;** 注 ** fwr03 movf gl_temp2,W call Glcd_WriteData ;グラフィック LCD へ データを出力 incf gl_tbl_l,F ;文字フォントデータアドレス low の更新 btfsc STATUS,Z ;オーバーフローした場合は incf gl_tbl_h,F ;文字フォントデータアドレス high の更新 decfsz gl_cnt1,F ;ループカウンタ - 1 = 0 か? goto fwr01 ;No return ; 文字フォントデータのテーブル読み出し ;入力: gl_tbl_h: 文字フォントデータ high アドレス ; gl_tbl_l: 文字フォントデータ low アドレス ;出力: W: 文字フォントデータ table_read movf gl_tbl_h,W ;文字フォントデータの high アドレス movwf PCLATH movf gl_tbl_l,W ;文字フォントデータの low アドレス movwf PCL #endif #ifdef sub_Glcd_DispStr ;========================================================================== ; キャラクタ (横:6 x 縦:8) 文字列の表示 ; 座標: (0,0) 〜 (19,7) 1列 = 20文字表示 ;========================================================================== ;入力: addr_high: 文字列の先頭 high アドレス ; addr_low: 文字列の先頭 low アドレス ; gl_x: X座標 (0〜19), gl_y: Y座標 (0〜7) Glcd_DispStr call str_read ;文字列データの読み出し movwf gl_temp ;一時退避 movlw high $ ;この場所の high アドレスを movwf PCLATH ;PCLATH に設定 incf addr_low,F ;読み出すデータの low アドレスの更新 btfsc STATUS,Z ;オーバーフローした場合は incf addr_high,F ;読み出すデータの high アドレスの更新 movf gl_temp,W btfsc STATUS,Z ;文字列の終了(h'00') か? return ;Yes call Glcd_DispChr ;LCD へデータを1文字出力 incf gl_x,F ;X座標の更新 goto Glcd_DispStr ; 文字列から1文字読み出し str_read movf addr_high,W ;読み出すデータの high アドレス movwf PCLATH movf addr_low,W ;読み出すデータの low アドレス movwf PCL #endif #ifdef sub_Glcd_Image ;========================================================================== ; 1画面全体にイメージ (1024バイト) を表示 ;========================================================================== ;入力: addr_high: イメージ配列の先頭 high アドレス ; addr_low: イメージ配列の先頭 low アドレス Glcd_Image clrf gl_cnt1 ;Page = 0 初期設定 gimg01 clrf gl_chip incf gl_chip,F ;1: 左側選択 gimg02 clrf gl_cnt2 ;Column = 0 初期設定 movf gl_cnt1,W call Glcd_SetPage ;Page (縦位置) の指定 movf gl_cnt2,W call Glcd_SetColumn ;Column (横位置) の指定 gimg03 call image_read ;イメージデータの読み出し movwf gl_temp ;一時退避 movlw high $ ;この場所の high アドレスを movwf PCLATH ;PCLATH に設定 incf addr_low,F ;読み出すデータの low アドレスの更新 btfsc STATUS,Z ;オーバーフローした場合は incf addr_high,F ;読み出すデータの high アドレスの更新 movf gl_temp,W call Glcd_WriteData ;データを出力 ;自動的に Column Address + 1 される incf gl_cnt2,F ;Column + 1 btfss gl_cnt2,6 ;Column = 64 (終了) か? goto gimg03 ;No ; incf gl_chip,F ;2: 右側選択 movlw 3 subwf gl_chip,W btfss STATUS,Z ;chip = 3 (終了)か? goto gimg02 ;No incf gl_cnt1,F ;Page + 1 btfss gl_cnt1,3 ;Page = 8 (終了) か? goto gimg01 ;No return ; イメージ配列から1バイト読み出し image_read movf addr_high,W ;読み出すデータの high アドレス movwf PCLATH movf addr_low,W ;読み出すデータの low アドレス movwf PCL #endif #ifdef sub_Glcd_Scroll ;========================================================================== ; 画面全体をスクロールアップ ;========================================================================== ;入力: W reg: スクロール間隔 (0-255) msec ;使用外部ルーチン: wait_x1ms Glcd_Scroll movwf gl_cnt2 ;一時退避 movlw 3 movwf gl_chip ;3: 左側と右側選択 clrf gl_cnt1 ;Start Line = 0 初期設定 gscr01 incf gl_cnt1,W ;表示開始ラインの指定 andlw h'3f' call Glcd_SetStartLine movf gl_cnt2,W ;スクロール間隔 msec call wait_x1ms ;1ms * gl_cnt2 incf gl_cnt1,F ;Start Line + 1 btfss gl_cnt1,6 ;Start Line = 64 (終了) か? goto gscr01 ;No return #endif #ifdef sub_Glcd_ScrollText ;========================================================================== ; 表示テキストを1行スクロールアップ ;========================================================================== Glcd_ScrollText clrf gl_cnt1 incf gl_cnt1,F ;Page = 1 初期設定 gscrt01 clrf gl_chip incf gl_chip,F ;1: 左側選択 gscrt02 clrf gl_cnt2 ;Column = 0 初期設定 gscrt03 movf gl_cnt1,W call Glcd_SetPage ;Page (縦位置) の指定 movf gl_cnt2,W call Glcd_SetColumn ;Column (横位置) の指定 call Glcd_ReadData ;グラフィック LCD から データを入力 movwf gl_temp movf gl_cnt2,W call Glcd_SetColumn ;Column (横位置) の指定 call Glcd_ReadData ;グラフィック LCD から データを入力 movwf gl_temp decf gl_cnt1,W call Glcd_SetPage ;Page (縦位置) の指定 movf gl_cnt2,W call Glcd_SetColumn ;Column (横位置) の指定 movf gl_temp,W call Glcd_WriteData ;グラフィック LCD へ データを出力 incf gl_cnt2,F ;Column + 1 btfss gl_cnt2,6 ;Column = 64 (終了) か? goto gscrt03 ;No incf gl_chip,F ;2: 右側選択 movlw 3 subwf gl_chip,W btfss STATUS,Z ;chip = 3 (終了)か? goto gscrt02 ;No incf gl_cnt1,F ;Page + 1 btfss gl_cnt1,3 ;Page = 8 (終了) か? goto gscrt01 ;No ; movlw 3 movwf gl_chip ;3: 左側と右側を選択 decf gl_cnt1,W ;Page = 7 call Glcd_SetPage ;Page (縦位置) の指定 clrf gl_cnt2 ;Column = 0 初期設定 movf gl_cnt2,W call Glcd_SetColumn ;Column (横位置) の指定 gscrt04 clrw ;最終行 (Page = 7) を h'00' クリア call Glcd_WriteData ;グラフィック LCD へ データを出力 ;自動的に Column Address + 1 される incf gl_cnt2,F ;Column + 1 btfss gl_cnt2,6 ;Column = 64 (終了) か? goto gscrt04 ;No clrw ;Page = 7, Column = 0 にしておく call Glcd_SetColumn ;Column (横位置) の指定 return #endif ;=============================================================== end ======