📄 lcd1.a30
字号:
;""FILE COMMENT""**************************************************************
; System Name : 偙偺僾儘僌儔儉偼嫵堢梡偱偡丅(揮梡晄壜)
; File Name : lcd1.a30
; Contents : LCD梡掅儗儀儖僾儘僌儔儉(傾僙儞僽儕尵岅)
; Model : OAKS16-LCD Board懳墳
; CPU : M16C/60僔儕乕僘
; Assembler : NC30WA(V.4.00 Release 2 - Entry)
; Linker : (ln30) for M16C Family Version 4.00.01
; Programer : 儖僱僒僗敿摫懱僩儗乕僯儞僌僙儞僞乕
; Note : OAKS16-M30620FCAFP(M16C/62僌儖乕僾,16MHz)懳墳
; : 2004.3.15
; : 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椞堟掕媊僼傽僀儖
;==============================================================================
; 僔儞儃儖掕媊
;==============================================================================
p4_6_RS .btequ p4_6 ; RS抂巕(億乕僩P4偺價僢僩6)
; 0:command-reg, 1:data-reg
p4_5_RW .btequ p4_5 ; RW抂巕(億乕僩P4偺價僢僩5)
; 0:Write, 1:Read
p4_4_E .btequ p4_4 ; E抂巕(億乕僩P4偺價僢僩4)
; 1:僗僩儘乕僽, 棫偪壓偑傝:RW
DIR_READ .equ 01110000B ; LCD儌僕儏乕儖偐傜M16C傊偺撉傒崬傒傪
; 愝掕偡傞偨傔偺抣
; (壓埵4價僢僩(DATA億乕僩)偺傒擖椡丄
; 嵟忋埵價僢僩偼枹巊梡價僢僩)
DIR_WRITE .equ 01111111B ; M16C偐傜LCD儌僕儏乕儖傊偺彂偒崬傒傪
; 愝掕偡傞偨傔偺抣
; (慡偰弌椡,嵟忋埵價僢僩偼枹巊梡價僢僩)
DEF_P4_DATA .equ 00000000B ; LCD憖嶌偟偰偄側偄帪偺
; 億乕僩P4儗僕僗僞傊偺愝掕抣偼埲壓偺捠傝
; 0x000000
; ||||++++---- B3-0 = 0
; |||+-------- B4(E) = L
; ||+--------- B5(RW) = L(WRITE)
; |+---------- B6(RS) = L(COMMAND)
; +----------- B7 = L(OPEN側偺偱)
; 仸 RS偼儕僙僢僩捈屻偼L(COMMAND)偵
; 弶婜壔偡傞偑丄忢偵晄掕抣偲偡傞丅
;""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_P4_DATA, p4 ; 僨乕僞僶僗傪枹巊梡忬懺偵愝掕
mov.b #DIR_READ, pd4 ; LCD儌僕儏乕儖偐傜偺撉傒崬傒偵愝掕
; (億乕僩P40乣P43傪擖椡億乕僩偵愝掕)
; (億乕僩P44乣P46傪弌椡億乕僩偵愝掕)
rts
;""SUBR COMMENT""**************************************************************
; ID : ---
; 僒僽儖乕僠儞柤 : void _lcd1__wait(unsigned int t)
; 婡擻 : t亊100兪s懸偮
; 擖椡 : unsigned int t: 懸偪帪娫乮倲亊100兪s乯
; 弌椡 : 側偟
; 巊梡僒僽儖乕僠儞: 側偟
; 僗僞僢僋 : 0僶僀僩
; 拲堄帠崁 : 堷悢t(100兪s傪壗夞僇僂儞僩偡傞偐傪帵偡僇僂儞僩悢)偼
; : R1儗僕僗僞偵庴偗搉偝傟偰偄傞(堷悢堷搉偟婯懃)丅
; : wait_loop_10偺儖乕僾偵偰100兪s偺僜僼僩僂僃傾僂僃僀僩傪嶌傞丅
; : wait_loop偵偰t亊100兪s偺僜僼僩僂僃傾僂僃僀僩傪嶌傞丅
; : 寁嶼傪妝偵偡傞偨傔彮偟懡傔偺帪娫偲側傞丅
; :
; : 160偺抣偺堄枴崌偄(1僒僀僋儖 = 62.5ns@16MHz)
; : 100000ns 佮 62.5 亊 (1+160亊(3+7)-4)
; : | | | |
; : | | | +---暘婒偟側偄偲偒
; : | | +------ADJNZ
; : | +--------NOP亊3
; : +----------------MOV
; History : ---
;""SUBR COMMENT END""**********************************************************
.section program ; C偺僾儘僌儔儉椞堟偲摨堦僙僋僔儑儞
.glb $_lcd1__wait ; 僌儘乕僶儖愰尵
$_lcd1__wait:
wait_loop:
mov.b:s #160, R0L ; 62.5ns亊1
wait_loop_10:
nop ; 62.5ns亊1
nop ; 62.5ns亊1
nop ; 62.5ns亊1
adjnz.b #-1, R0L, wait_loop_10 ; 62.5ns亊7(暘婒偟側偄帪偼-4)
adjnz.w #-1, R1, wait_loop ; 62.5ns亊7(暘婒偟側偄帪偼-4)
rts ; 62.5ns亊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 62.5亊3=187.5 0 . . . | . .
; : MOV.B:S #W 62.5亊2=125.0 . . . WR | . OUT
; : BSET:G E 62.5亊3=187.5 . . 1 . | . .
; : MOV.B:G 62.5亊2=125.0 . . . . | . .
; : MOVLL 62.5亊5=312.5 . . . . |(WR Command)
; : BCLR:G E 62.5亊3=187.5 . . 0 . | . .
; : MOV.B:S #R 62.5亊2=125.0 . . . RD | IN
; History : ---
;""SUBR COMMENT END""**********************************************************
.section program ; C偺僾儘僌儔儉椞堟偲摨堦僙僋僔儑儞
.glb $_lcd1__wr_nibble_creg
; 僌儘乕僶儖愰尵
$_lcd1__wr_nibble_creg:
;---- 僐儅儞僪傪慖戰 ----
bclr:g p4_6_RS ; 僐儅儞僪傪慖戰
; (LCD儌僕儏乕儖偺RS抂巕傪"L")
;---- LCD傊偺彂偒崬傒偵愝掕 ----
;bclr:g p4_5_RW ; LCD儌僕儏乕儖傪擖椡偵愝掕
; ; (LCD偺RW傪"L":WRITE偵愝掕)
mov.b:s #DIR_WRITE, pd4 ; CPU傪弌椡偵愝掕
; (P40乣P43傪弌椡億乕僩偵愝掕)
;---- 4bit彂偒崬傒 ----
bset:g p4_4_E ; LCD儌僕儏乕儖偺E抂巕傪"H"
mov.b:g R1L, R0L ; LCD偵堷悢(R1)傪彂偒崬傓
movll R0L, p4 ; 仾 (P4 = R1L 壓埵4bit偱揮憲)
bclr:g p4_4_E ; LCD儌僕儏乕儖偺E抂巕傪"L"
;---- 億乕僩傪弶婜忬懺偵栠偡 ----
mov.b:s #DIR_READ, pd4 ; P40乣P43傪擖椡億乕僩偵栠偡
; (P40乣P43傪擖椡億乕僩偵愝掕)
rts
;""SUBR COMMENT""**************************************************************
; ID : ---
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -