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

📄 lcd.txt

📁 富士通单片机的LCD显示程序 用汇编语言编写
💻 TXT
字号:
;*************************************************
;THE SUB TO WRITE A CHINESE TO LCD
;SUB NAME:  WWORD
;INPUT  HZ,HZHP,HZLP,HBXSB,RW3
;*************************************************
 WWORD:     MOV   HZIP,#00H
            MOV   HZLIP,#00H
            SETB  DDR9:PINE
            SETB  DDR8:PINRW
            SETB  DDR8:PINDI
            SETB  DDR0:PINCSA
            SETB  DDR0:PINCSB
            MOV   A,HZ
            MOV   CSTEMP,#20H
            MULU  A,CSTEMP
            ADDW  A,#HZTAB
            MOVW  RW3,A       ;ROW IS LOCATE THE CHINESE WORD(设置该汉字的行位置)
BEGINWRITE: MOV   A,HZLP
            ADD	A,HZLIP
            .IF   (A<#40H)
                  MOV   CSTEMP,#00H
            .ELSE
                  MOV   CSTEMP,#0FFH
                  
            .ENDIF
            CLRB  PDR9:PINE
            MOV   A,CSTEMP
            .IF   (A!=#00H)
                  CLRB  PDR9:PINE
                  CALL  T500U
                  SETB  PDR0:PINCSB
                  CALL  T500U
                  CLRB  PDR0:PINCSA
            .ELSE
                  CLRB  PDR9:PINE
                  CALL  T500U
                  SETB  PDR0:PINCSA
                  CALL  T500U
                  CLRB  PDR0:PINCSB
            .ENDIF                  
            SETB  PDR8:PINRW
            CLRB  PDR8:PINDI
            CALL  T500U
            SETB  PDR9:PINE
            CALL  T500U
            MOV   DDR1,#00H
            NOP
            BBC   PDR1:4,TESTBUSY         ;IF RESET THEN WAIT 45ms
            CALL  T200U
TESTBUSY:   BBC   PDR1:7,TURE_WRITE       ;IF BUSY THEN WAIT 45ms
            CALL  T200U
            
TURE_WRITE: CLRB  PDR9:PINE
            CALL  T500U
            CLRB  PDR8:PINDI
            CLRB  PDR8:PINRW
            MOV   A,HZHP
            ADD   A,#0B8H
            SETB  PDR9:PINE
            MOV   DDR1,#0FFH  
            NOP
            MOV   PDR1,A
            CALL  T200U
            CLRB  PDR9:PINE
            NOP
            MOV   DDR1,#00H
            CALL  T500U
            CLRB  PDR8:PINDI
            CLRB  PDR8:PINRW
            MOV   A,HZLP
    		ADD	A,HZLIP
	    	.IF	(A>=#40H)
	    		SUB	A,#40H
	      .ENDIF
            ADD   A,#40H
            SETB  PDR9:PINE
            MOV   DDR1,#0FFH
            NOP
            MOV   PDR1,A
            CALL  T200U
            MOV   DDR1,#00H
WRITE_LOOP: CLRB  PDR9:PINE
            CALL  T500U
            SETB  PDR8:PINDI
            CLRB  PDR8:PINRW
            MOV   A,@RW3
            CLRB  HBXSB
            BBC   HBXSB,WRITE
            NOT   A
 WRITE:     CALL  T500U
            SETB  PDR9:PINE
            CALL  T200U
            MOV   DDR1,#0FFH
;            AND   A,#0FEH
            CALL  T500U
            MOV   PDR1,A      ;WRITE A BIT TO LCD
            CALL  T200U
            CLRB  PDR9:PINE
            NOP
            MOV   DDR1,#00H
            MOV   A,HZIP
            INC   HZIP
            INCW  RW3
            MOV   A,HZLIP
            CMP   A,#0FH
            BNE   NOT16        ;IF HZLIP<>16 THEN
            INC   HZHP
            MOV   HZLIP,#00H
            JMP   BEGINWRITE2
NOT16:      INC   HZLIP
            JMP   BEGINWRITE
BEGINWRITE2:
	    MOV   A,HZLP
		ADD	A,HZLIP
            .IF   (A<#40H)
                  MOV   CSTEMP,#00H
            .ELSE
                  MOV   CSTEMP,#0FFH
                  
            .ENDIF
		CLRB  PDR9:PINE
            MOV   A,CSTEMP
            .IF   (A!=#00H)
                  CLRB  PDR9:PINE
                  CALL  T500U
                  SETB  PDR0:PINCSB
                  CALL  T500U
                  CLRB  PDR0:PINCSA
            .ELSE
                  CLRB  PDR9:PINE
                  CALL  T500U
                  SETB  PDR0:PINCSA
                  CALL  T500U
                  CLRB  PDR0:PINCSB
            .ENDIF                  
            SETB  PDR8:PINRW
            CLRB  PDR8:PINDI
            CALL  T500U
            SETB  PDR9:PINE
            CALL  T500U
            MOV   DDR1,#00H
            NOP
            BBC   PDR1:4,TESTBUSY2         ;IF RESET THEN WAIT 45ms
            CALL  T200U
TESTBUSY2:  BBC   PDR1:7,TURE_WRITE2       ;IF BUSY THEN WAIT 45ms
            CALL  T200U
            
TURE_WRITE2:
	    CLRB  PDR9:PINE
            CALL  T500U
            CLRB  PDR8:PINDI
            CLRB  PDR8:PINRW
            MOV   A,HZHP
            ADD   A,#0B8H
            SETB  PDR9:PINE
            MOV   DDR1,#0FFH  
            NOP
            MOV   PDR1,A
            CALL  T200U
            MOV   DDR1,#00H
            CLRB  PDR9:PINE
            CALL  T500U
            CLRB  PDR8:PINDI
            CLRB  PDR8:PINRW
            MOV   A,HZLP
		ADD	A,HZLIP
            .IF	(A>=#40H)
			SUB	A,#40H
		.ENDIF
            ADD   A,#40H
            SETB  PDR9:PINE
            MOV   DDR1,#0FFH
            NOP
            MOV   PDR1,A
            CALL  T200U
            CLRB  PDR9:PINE
            NOP
            MOV   DDR1,#00H
WRITE_LOOP2:
		CLRB  PDR9:PINE
            CALL  T500U
            SETB  PDR8:PINDI
            CLRB  PDR8:PINRW
            CALL  T500U
            MOV   A,@RW3
            CLRB  HBXSB
            BBC   HBXSB,WRITE2
            NOT   A
;            JMP   WRITE21
WRITE2:     ;AND   A,#7FH
WRITE21:    CALL  T500U
            SETB  PDR9:PINE
            CALL  T500U
            MOV   DDR1,#0FFH
            CALL  T500U
            MOV   PDR1,A      ;WRITE A BIT TO LCD
            CALL  T200U
            CLRB  PDR9:PINE
            NOP
            MOV   DDR1,#00H
            MOV   A,HZIP
            CMP   A,#1FH
            BEQ   ENDWRITE
            INC   HZIP
            INCW  RW3
            MOV   A,HZLIP
            CMP   A,#0FH
            BNE   NOT162        ;IF HZLIP<>16 THEN
            JMP   ENDWRITE
NOT162:     INC   HZLIP
            JMP   BEGINWRITE2

ENDWRITE:   MOV   DDR1,#0FFH
            MOV   PDR1,#00H
            SETB  PDR9:PINE
            SETB  PDR8:PINRW
            SETB  PDR8:PINDI
            SETB  PDR0:PINCSA
            SETB  PDR0:PINCSB
      
		

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -