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

📄 lcd1.a30

📁 一个瑞萨单片机的程序。。。供大家学习用。。。。。。。。。。。。。。。。。。
💻 A30
📖 第 1 页 / 共 2 页
字号:
;""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 + -