首页 > 解决方案 > 如何在 ASSEMBLY 中打印 PIC18f4520 LCD 显示屏上的信息

问题描述

这是应该在 LCD 显示器上打印信息“Hello”的程序。

问题是,一旦我编译并运行程序,LCD 屏幕什么也不做,只是一直亮着,没有信息。延迟可能有问题吗?

我已经尝试在没有任何更改的情况下更改延迟,并且我很确定电缆等已正确连接,因为我有两个芯片使用相同的电缆等运行。

   #include "p18F4520.inc"

    CONFIG  OSC = HS
    CONFIG  PWRT = OFF
    CONFIG  WDT = OFF
    CONFIG  PBADEN = OFF
    CONFIG  LVP = OFF

    org 0x000000

;80MS**
IDSHORT    equ 0x07D
IDLONG    equ 0x07E
ED80MS    CLRF    IDSHORT
    CLRF    IDLONG
LDLOOP    DECFSZ    IDSHORT
    GOTO    LDLOOP
    DECFSZ    IDLONG
    GOTO    LDLOOP
    RETURN
;80MS**
    CLRF    TRISD
    CLRF    TRISB
    BCF        PORTB,RB2
    CALL    ED80MS
    CALL    ED80MS
    CALL    ED80MS
    CALL    ED80MS
    MOVLW   UPPER(MYCOM)
    MOVWF   TBLPTRU
    MOVLW   HIGH(MYCOM)
    MOVWF   TBLPTRH
    MOVLW   LOW(MYCOM)
    MOVWF   TBLPTRL
C1  TBLRD+
    MOVF    TABLAT,W    ;Lägg in ovan i WREG
    IORLW   0x0
    BZ    SEND_DAT
    CALL    COMNWRT
    CALL    ED80MS
    BRA    C1
SEND_DAT    MOVLW   UPPER(MYDATA)
    MOVWF   TBLPTRU
    MOVLW   HIGH(MYDATA)
    MOVWF   TBLPTRH
    MOVLW   LOW(MYDATA)
    MOVWF   TBLPTRL
DT1 TBLRD+
    MOVF    TABLAT,W
    IORLW   0x0
    BZ    OVER
    CALL    DATAWRT
    CALL    ED80MS
    BRA    DT1
OVER    BRA OVER
COMNWRT    MOVWF    PORTD ;Skicka till LCD
    BCF    PORTB,RB0
    BCF    PORTB,RB1
    BSF    PORTB,RB2
    CALL    ED80MS
    BCF    PORTB,RB2
    RETURN
DATAWRT ;Skriv data till LCD
    MOVWF    PORTD ;Flytta till LCD
    BSF    PORTB,RB0
    BCF    PORTB,RB1
    BSF    PORTB,RB2
    CALL    ED80MS
    BCF    PORTB,RB2
    RETURN
    ORG    500H
MYDATA    DB "HELLO",0 ;Data och null
MYCOM    DB    0x38,0x0E,0x01,0x06,0x84,0 ;Instruktioner och null
    END 

标签: assemblypiclcd

解决方案


推荐阅读