fm373bate.asm

来自「HT1621控制的段码液晶显示驱动。51汇编写的。」· 汇编 代码 · 共 259 行

ASM
259
字号

          
	  LCDMM   EQU   23H
          
          DATAM EQU   25H
          NO_C  EQU   26H
          NO_A  EQU   27H
          NO    EQU   28H
          COUNT EQU   29H
          

	  DATAB   EQU   P1.4
	  WRPIN   EQU   P1.5
	  CSPIN   EQU   P1.6

	  ORG     0000H
	  LJMP    MAIN

	  ORG     0003H
	  LJMP    LINT0
 ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;   初始化 ,01H开系统振荡  ,03HLCD ON,
 ;   28H  BIAS1/2 DUTY1/4  ,04H  时基输出失效
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 MAIN:
      SETB    DATAB
	  SETB    WRPIN
	  SETB    CSPIN

	  MOV     LCDMM,#01H
	  LCALL   LCDCM
	  MOV     LCDMM,#03H
	  LCALL   LCDCM
	  MOV     LCDMM,#28H
	  LCALL   LCDCM
	  MOV     LCDMM,#04H
	  LCALL   LCDCM
                   LCALL   CLRLCD
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
          LCALL KEY
        MOV   NO,#1
     LOOP:     ACALL  SENDDATA
          INC  NO
        LCALL KEY
          SJMP LOOP
   




 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SENDDATA:
      
      
      MOV A,NO
      MOV DPTR,#TABA
      MOVC A,@A+DPTR
      MOV NO_A,A
      
      MOV A,NO
      MOV B,#02H
      MUL  AB
      MOV NO_C,A
      MOV DPTR,#TABCOM
      
      
      MOV COUNT,#02H
      
      LCALL SEND101
      RET
      
      
      
      
      
       



;;;;;;;;;;;;;;;;清屏        ;;;;;;;;;;;;;;;;;;;
CLRLCD:
          LCALL key
CLRLCD1:  MOV     DPTR,   #TABC
          MOV     NO_A,#00H
          MOV     COUNT,#10H
          MOV      NO_C,#00H
          
          LCALL SEND101
          
          ret

;;;;;;;;;;;;   写100类命令ID   ;;;;;;;;;;;;;;;;;;;;
LCDCM: CLR    CSPIN
	   MOV    A,    #80H    ;100类
	   MOV    R7,   #03H
LCM1:  RLC    A
	   MOV    DATAB,C
	   NOP
	   CLR    WRPIN
	   NOP
	   NOP
       NOP
	   SETB   WRPIN
	   DJNZ   R7,   LCM1

	   MOV    R7,   #08H
	   MOV    A,    LCDMM
LCM2:  RLC    A
	   MOV    DATAB,C
	   NOP
	   CLR    WRPIN
	   NOP
       NOP
	   NOP
	   NOP
	   SETB   WRPIN
	   NOP
	   NOP
	   NOP
	   DJNZ   R7,   LCM2
	   NOP
       NOP
	   NOP
	   NOP
	   CLR    DATAB
	   NOP
	   CLR    WRPIN
	   NOP
       NOP
	   NOP
	   NOP
	   SETB   WRPIN
	   NOP
       NOP
	   NOP
	   NOP
	   SETB   CSPIN
       NOP
	   NOP
	   NOP
	   NOP
	   SETB   DATAB
	   RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;   写101命令
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SEND101:
           CLR    CSPIN
	   MOV    R7,   #03H  ;101
	   MOV    A,    #0A0H
LWR1:
           RLC    A
	   MOV    DATAB,C
	   NOP
	   CLR    WRPIN
	   NOP
	   NOP
	   NOP
	   SETB    WRPIN
	   NOP
	   NOP
	   DJNZ    R7,      LWR1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;   连写模式,发送6位ADDRES数据   输入NO_A,NO_C,DPTR,COUNT
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	   MOV     R7,      #06H  ;6 addres
	   MOV     A,       NO_A
LWR2:  RLC     A
	   MOV     DATAB,   C
	   NOP
	   NOP
	   NOP
	   NOP
	   NOP
	   CLR     WRPIN
	   NOP
	   NOP
	   NOP
	   NOP
	   NOP
	   SETB    WRPIN
	   NOP
	   NOP
	   DJNZ    R7,       LWR2
 ;;;;;;;;;;;  发送表数据,8位;;;;;;;;;;;;;;;;;;;;;;;
	  MOV     R2,       COUNT
LOOP7:    MOV     A,        NO_C              ;
	  MOVC    A,        @A+DPTR
	  MOV     R7,       #08H
	  INC     DPTR
LCM3:     RLC     A                      ;
	  MOV     DATAB,    C
	  NOP
	  CLR     WRPIN
	  NOP
          NOP
	  NOP
	  NOP
	  lcall DLY50
	  SETB    WRPIN
	  NOP
	  DJNZ    R7,       LCM3
	  DJNZ    R2,       LOOP7
	  NOP
	  SETB    CSPIN
	  NOP
	  SETB    DATAB
	  NOP
	  RET

;;;;;;;;;;;;;;;;;;  按键,p2.0  ;;;;;;;;;;;;;;;;;

 KEY:
    MOV A,P2
    JB ACC.0,KEY
    CALL DLY50
    CALL DLY50
    JB ACC.0,KEY
    RET


 ;;;;;;;;;;;;;;;;;;;; 延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  DLY50:MOV R3,#01H
        DL511:MOV R4,#0dH
        DL522:MOV R6,#0AFH
        DL533:DJNZ R6,DL533
            DJNZ R4,DL522
            DJNZ R3,DL511
            RET

 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

LINT0:NOP
	  NOP
	  NOP
	  NOP
	  RETI


 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


TABA:
           DB 00H,04H,08H,0CH,10H,14H,18H,1CH ;;;;;;;;;;
TABCOM:
           DB    85H,51H,05H,00H,86H,31H,87h,21h,07H,60H      ;
           DB    81H,61H,83H,71H,85H,00H,87H,71H,81H,61H
tabC :
	   DB    00H,00H,00H,00H,00H,00H,00H,00H              ;
	   DB    00H,00H,00H,00H,00H,00H,00H,00H


           END

⌨️ 快捷键说明

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