📄 lcd1.a30
字号:
;""FILE COMMENT""**************************************************************
; System Name : 偙偺僾儘僌儔儉偼嫵堢梡偱偡丅(揮梡晄壜)
; File Name : lcd1.a30
; Contents : LCD梡掅儗儀儖僾儘僌儔儉(傾僙儞僽儕尵岅)
; Model : OAKS8-LCD Board懳墳
; CPU : R8C/Tiny僔儕乕僘
; Assembler : as30(V.5.10.00)
; Linker : ln30(V.5.10.01)
; Programer : 儖僱僒僗敿摫懱僩儗乕僯儞僌僙儞僞乕
; Note : OAKS8-R5F21114FP(R8C/11僌儖乕僾,20MHz)懳墳
; : SC1602BS*B帒椏懳墳
;******************************************************************************
; COPYRIGHT(C) 2004 RENESAS TECHNOLOGY CORPORATION
; AND RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED
;******************************************************************************
; History : ---
;""FILE COMMENT END""**********************************************************
.include target.inc ; M16C/60僔儕乕僘梡
; SFR椞堟掕媊僼傽僀儖
;==============================================================================
; 僔儞儃儖掕媊
;==============================================================================
p1_6_RS .btequ p1_6 ; RS抂巕(億乕僩P1偺價僢僩6)
; 0:command-reg, 1:data-reg
p1_7_E .btequ p1_7 ; E抂巕(億乕僩P1偺價僢僩7)
; 1:僗僩儘乕僽, 棫偪壓偑傝:RW
R .equ 11000000B ; LCD儌僕儏乕儖偐傜M16C傊偺撉傒崬傒傪
; 愝掕偡傞偨傔偺抣
; (壓埵4價僢僩(DATA億乕僩)偺傒擖椡丄
; 嵟忋埵價僢僩偼枹巊梡價僢僩)
W .equ 11001111B ; M16C偐傜LCD儌僕儏乕儖傊偺彂偒崬傒傪
; 愝掕偡傞偨傔偺抣
; (慡偰弌椡,嵟忋埵價僢僩偼枹巊梡價僢僩)
DEF_P1_DATA .equ 00000000B ; LCD憖嶌偟偰偄側偄帪偺
; 億乕僩P1儗僕僗僞傊偺愝掕抣偼埲壓偺捠傝
; 00000000
; ||||++++---- B3-0 = 0
; |||+-------- B4(E) = L
; ||+--------- B5(RW) = L(WRITE)
; |+---------- B6(RS) = L(COMMAND)
; +----------- B7 = L(OPEN側偺偱)
;""SUBR COMMENT""**************************************************************
; ID : ---
; 僒僽儖乕僠儞柤 : void _lcd1__initial(void)
; 婡擻 : LCD惂屼億乕僩偺弶婜愝掕
; 擖椡 : 側偟
; 弌椡 : 側偟
; 巊梡僒僽儖乕僠儞: 側偟
; 僗僞僢僋 : 0僶僀僩
; 拲堄帠崁 : 億乕僩偺弶婜壔偩偗偱偼LCD偼昞帵偱偒側偄
; History : ---
;""SUBR COMMENT END""**********************************************************
.section program ; C偺僾儘僌儔儉椞堟偲摨堦僙僋僔儑儞
.glb __lcd1__initial ; 僌儘乕僶儖愰尵
__lcd1__initial:
mov.b #DEF_P1_DATA, p1 ; 僨乕僞僶僗傪枹巊梡忬懺偵愝掕
mov.b #R, pd1 ; LCD儌僕儏乕儖偐傜偺撉傒崬傒偵愝掕
; (億乕僩P10乣P13傪擖椡億乕僩偵愝掕)
; (億乕僩P14乣P16傪弌椡億乕僩偵愝掕)
__lcd1__initial_end:
RTS ; 62.5ns亊6
;""SUBR COMMENT""**************************************************************
; ID : ---
; 僒僽儖乕僠儞柤 : void _lcd1__wait(unsigned int t)
; 婡擻 : t亊100兪s懸偮
; 擖椡 : unsigned int t: 懸偪帪娫乮倲亊50兪s乯
; 弌椡 : 側偟
; 巊梡僒僽儖乕僠儞: 側偟
; 僗僞僢僋 : 0僶僀僩
; 拲堄帠崁 : 戞1堷悢t(100兪s傪壗夞僇僂儞僩偡傞偐傪帵偡僇僂儞僩悢)偼
; : R1儗僕僗僞偵庴偗搉偝傟偰偄傞(堷悢堷搉偟婯懃)丅
; : wait_loop_10偺儖乕僾偵偰50兪s偺僜僼僩僂僃傾僂僃僀僩傪嶌傞丅
; : wait_loop偵偰t亊50兪s偺僜僼僩僂僃傾僂僃僀僩傪嶌傞丅
; : 寁嶼傪妝偵偡傞偨傔彮偟懡傔偺帪娫偲側傞丅
; :
; : 100偺抣偺堄枴崌偄(1僒僀僋儖 = 50ns@20MHz)
; : 50000ns 佮 50 亊 (1+100亊(3+7)-4)
; : | | | |
; : | | | +---暘婒偟側偄偲偒
; : | | +------ADJNZ
; : | +--------NOP亊3
; : +----------------MOV
; History : ---
;""SUBR COMMENT END""**********************************************************
.section program ; C偺僾儘僌儔儉椞堟偲摨堦僙僋僔儑儞
.glb $_lcd1__wait ; 僌儘乕僶儖愰尵
$_lcd1__wait:
wait_loop:
mov.b:s #100, R0L ; 50ns亊1
wait_loop_10:
nop ; 50ns亊1
nop ; 50ns亊1
nop ; 50ns亊1
adjnz.b #-1, R0L, wait_loop_10 ; 50ns亊7(暘婒偟側偄帪偼-4)
adjnz.w #-1, R1, wait_loop ; 50ns亊7(暘婒偟側偄帪偼-4)
$_lcd1__wait_end:
rts ; 50ns亊6
;""SUBR COMMENT""**************************************************************
; ID : ---
; 僒僽儖乕僠儞柤 : void _lcd1__wr_nibble_creg(int command)
; 婡擻 : LCD(SC1602BS*2)偺command儗僕僗僞偵command傪彂偔
; 擖椡 : int command: 彂偒崬傓僨乕僞(壓埵4bit偺傒桳岠)
; 弌椡 : 側偟
; 巊梡僒僽儖乕僠儞: 側偟
; 僗僞僢僋 : 0僶僀僩
; 拲堄帠崁 : 堷悢command(LCD儌僕儏乕儖偵彂偒崬傓僐儅儞僪)偼
; : R1儗僕僗僞偵庴偗搉偝傟偰偄傞(堷悢堷搉偟婯懃)
; :
; : 僞僀儈儞僌偼埲壓偱惂屼偟偰偄傞丅帪娫傕婯掕桳傝側偺偱梫拲堄
; : --------------------------+--+--+--+-------+----+-----
; : TIME RS RW E I/O-DIR LCD M16C
; : --------------------------+--+--+--+-------+----+-----
; : def= x 0 0 RD | IN IN
; : BCLR:G RS 50亊3=150 0 . . . | . .
; : MOV.B:S #W 50亊2=100 . . . WR | . OUT
; : BSET:G E 50亊3=150 . . 1 . | . .
; : MOV.B:G 50亊2=100 . . . . | . .
; : MOVLL 50亊5=250 . . . . |(WR Command)
; : BCLR:G E 50亊3=150 . . 0 . | . .
; : MOV.B:S #R 50亊2=100 . . . RD | IN
; History : ---
;""SUBR COMMENT END""**********************************************************
.section program ; C偺僾儘僌儔儉椞堟偲摨堦僙僋僔儑儞
.glb $_lcd1__wr_nibble_creg
; 僌儘乕僶儖愰尵
$_lcd1__wr_nibble_creg:
;---- 僐儅儞僪傪慖戰 ----
bclr:g p1_6_RS ; 僐儅儞僪傪慖戰
; (LCD儌僕儏乕儖偺RS抂巕傪"L")
;---- LCD傊偺彂偒崬傒偵愝掕 ----
;bclr:g p1_X_RW ; LCD儌僕儏乕儖傪擖椡偵愝掕
; ; (LCD偺RW傪"L":WRITE偵愝掕)
mov.b:s #W, pd1 ; CPU傪弌椡偵愝掕
; (P10乣P13傪弌椡億乕僩偵愝掕)
;---- 4bit彂偒崬傒 ----
bset:g p1_7_E ; LCD儌僕儏乕儖偺E抂巕傪"H"
mov.b:g R1L, R0L ; LCD偵堷悢(R1)傪彂偒崬傓
movll R0L, p1 ; 仾 (P1 = R1L 壓埵4bit偱揮憲)
bclr:g p1_7_E ; LCD儌僕儏乕儖偺E抂巕傪"L"
;---- 億乕僩傪弶婜忬懺偵栠偡 ----
mov.b:s #R, pd1 ; P10乣P13傪擖椡億乕僩偵栠偡
; (P10乣P13傪擖椡億乕僩偵愝掕)
rts
;""SUBR COMMENT""**************************************************************
; ID : ---
; 僒僽儖乕僠儞柤 : void _lcd1__wr_nibble_dreg(int data)
; 婡擻 : LCD(SC1602BS*2)偺data儗僕僗僞偵data傪彂偔
; 擖椡 : int data: 彂偒崬傓僨乕僞(壓埵4bit偺傒桳岠)
; 弌椡 : 側偟
; 巊梡僒僽儖乕僠儞: 側偟
; 僗僞僢僋 : 0僶僀僩
; 拲堄帠崁 : 堷悢data(LCD儌僕儏乕儖偵彂偒崬傓僨乕僞)偼
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -