⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1.a30

📁 本程序实现在M16C上的AD转换
💻 A30
📖 第 1 页 / 共 2 页
字号:
;""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 + -