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

📄 ht1621.asm

📁 mcu51驱动HT1621 米字的LCM
💻 ASM
字号:
          KEYBUFF   DATA   30H
          UP_DN_CNT DATA   31H 
	  LCDMM     DATA   23H	   
	  DATAB     EQU   P3.3
	  WRPIN     EQU   P3.4
	  CSPIN     EQU   P3.5
	  SDAAT     BIT   P1.0
          SCLAT     BIT   P1.1
          JIYI_ADD  EQU   01H
          /////////////////////
	  ORG     0000H
	  LJMP    MAIN
          ///////////////////////
          ORG     0030H

 MAIN:
	  MOV     PSW,#00H
	  MOV     SP,#70H
	  MOV     P0,#00H
	  MOV     P2,#00H
	  MOV     KEYBUFF,#0FFH
          SETB    DATAB
	  SETB    WRPIN
	  SETB    CSPIN
	  SETB    SDAAT
	  SETB    SCLAT
	  LCALL   DLY50
	  MOV     LCDMM,#01H
	  LCALL   LCDCM
	  MOV     LCDMM,#03H
	  LCALL   LCDCM
	  MOV     LCDMM,#29H
	  LCALL   LCDCM
	  MOV     LCDMM,#04H
	  LCALL   LCDCM
          LCALL   CLRLCD1
          NOP
          NOP
          MOV     DPTR,   #TABINIT
	  LCALL   WRCOM
	  NOP
	  NOP
	  LCALL   DLY50
	  MOV     A,#JIYI_ADD
	  LCALL   RD24
	  CJNE    A,#0FFH,INIT_1
	  MOV     UP_DN_CNT,#1
          MOV     DPTR,   #TAB_1
          LCALL   WRCOM
          JMP     LOOP3 
INIT_1:
	MOV        UP_DN_CNT,A
	 LJMP       UP1 
LOOP3:             
        LCALL   KEYSCAN
        MOV     A,KEYBUFF
        CJNE    A,#0FFH,WORK
        LJMP    LOOP3

WORK:
	MOV      A,KEYBUFF
	MOV      B,#2
	MUL      AB
	MOV      KEYBUFF,#0FFH
	MOV      DPTR,#TABKEY
	NOP
	NOP
	JMP      @A+DPTR

TABKEY:
	AJMP     LOOP3
	AJMP     UP
	AJMP     DN  
UP:    
	INC     UP_DN_CNT    
        MOV     A,UP_DN_CNT
        CJNE    A,#0BH,UP1
        MOV     UP_DN_CNT,#1   
UP0:
        MOV     DPTR,   #TAB_1
	LCALL   WRCOM
	LCALL   IN_JIYI
	MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P0.0
	LJMP     LOOP3 
UP1:
        CJNE     A,#1H,UP2 	  
        MOV      DPTR,   #TAB_1
        LCALL   WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P0.0
       	LJMP     LOOP3 	
UP2:
        CJNE     A,#2H,UP3  	  
        MOV      DPTR,   #TAB_2
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P0.1
       	LJMP     LOOP3 	
UP3:

        CJNE     A,#3H,UP4  	  
        MOV      DPTR,   #TAB_3
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P0.2
       	LJMP     LOOP3 
UP4:
        CJNE     A,#4H,UP5  	  
        MOV      DPTR,   #TAB_4
        LCALL    WRCOM
        LCALL   IN_JIYI
       	MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P0.3
       	LJMP     LOOP3 
UP5:
        CJNE     A,#5H,UP6  	  
        MOV      DPTR,   #TAB_5
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P0.4
       	LJMP     LOOP3 
UP6:
        CJNE     A,#6H,UP7  	  
        MOV      DPTR,   #TAB_6
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P2.3
       	LJMP     LOOP3 
UP7:
        CJNE     A,#7H,UP8  	  
        MOV      DPTR,   #TAB_7
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P2.4
       	LJMP     LOOP3 
UP8:
        CJNE     A,#8H,UP9  	  
        MOV      DPTR,   #TAB_8
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P2.5
       	LJMP     LOOP3 
UP9:
        CJNE     A,#9H,UP10  	  
        MOV      DPTR,   #TAB_9
        LCALL    WRCOM
        LCALL   IN_JIYI
        MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P2.6
       	LJMP     LOOP3 
UP10:
        CJNE     A,#0AH,UP_EXT  	  
        MOV      DPTR,   #TAB_10
        LCALL    WRCOM
         MOV     P0,#00H
	MOV     P2,#00H
	LCALL   DLY50
	SETB     P2.7
        LCALL   IN_JIYI
UP_EXT:
       	LJMP     LOOP3 
	   
DN:  
        MOV      A,UP_DN_CNT  
        CJNE     A,#0,DN1
        MOV      UP_DN_CNT,#0AH
        MOV      DPTR,   #TAB_10
        LCALL    WRCOM 
        LCALL   IN_JIYI                 	  
	LJMP     LOOP3
DN1:
	DEC      UP_DN_CNT
	MOV      A,UP_DN_CNT
	LJMP     UP1
IN_JIYI:
        MOV      A,#JIYI_ADD 
        MOV      B,UP_DN_CNT     
        LCALL    WT24
        RET 


KEYSCAN:
       SETB    P3.6
       SETB    P3.7
       LCALL   DLY50
       JB      P3.6,K1
       MOV     KEYBUFF,#1
       RET
K1:
	JB      P3.7,KEY_EXT
        MOV     KEYBUFF,#2
KEY_EXT:
        RET

;;;;;;;;;;;;;;;;清屏        ;;;;;;;;;;;;;;;;;;;
CLRLCD:
        CLRLCD1:
	  MOV     DPTR,   #TABC
          LCALL   WRCOM
          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命令
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
WRCOM:
           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数据
;
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

	   MOV     R7,      #06H  ;6 addres
	   MOV     A,       #00H
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
	   LCALL   WR_LOOP
	   RET 
 ;;;;;;;;;;;  发送表数据,9个字节,8位;;;;;;;;;;;;;;;;;;;;;;;
WR_LOOP:
	  MOV     R2,       #10H
LOOP7:    MOV     A,        #00H               ;
	  MOVC    A,        @A+DPTR
	  MOV     R7,       #08H
	  INC     DPTR
LCM3:     RRC     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
;;;;;;;;;;;;;;;;;;;; 延时;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  DLY50:MOV R3,#01H
        DL511:MOV R4,#0AH
        DL522:MOV R6,#0A0H
        DL533:DJNZ R6,DL533
            DJNZ R4,DL522
            DJNZ R3,DL511
            RET
RD24: 	PUSH 	ACC 	
	LCALL 	STARTAT
	MOV 	A,#0A0H
	LCALL 	SENDDATE
	LCALL 	ASKWAT
        POP 	ACC
	LCALL 	SENDDATE
	LCALL 	ASKWAT	
	LCALL 	STARTAT
	MOV 	A,#0A1H
	LCALL 	SENDDATE
	LCALL 	ASKWAT
	SETB 	SDAAT
	MOV 	R7,#8
	CLR 	A
	SETB 	SDAAT
RD000: 		
	RL 	A
	SETB 	SCLAT
	NOP
	NOP
	MOV 	C,SDAAT
	MOV 	ACC.0,C
	CLR 	SCLAT
	NOP
	NOP
	DJNZ 	R7,RD000
	LCALL       NOASK
	LCALL       STOPAT
	RET

WT24: 	PUSH 	ACC
	LCALL 	STARTAT
	MOV 	A,#0A0H
	LCALL 	SENDDATE
	LCALL 	ASKWAT
	POP 	ACC
	LCALL 	SENDDATE	
	LCALL 	ASKWAT
	MOV 	A,B
	LCALL 	SENDDATE
	LCALL 	ASKWAT
	LCALL 	STOPAT
	LCALL 	DELAY
	RET
SENDDATE:	
	MOV	R2,#8
LOOPW:	RLC	A
	MOV	SDAAT,C
	LCALL	DELAY
	SETB	SCLAT
	LCALL	DELAY
	CLR	SCLAT
	LCALL	DELAY
	DJNZ	R2,LOOPW
	SETB	SDAAT
	RET
DELAY:	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP
	NOP	
	RET
ASKWAT:	LCALL	DELAY
	SETB	SDAAT		
	LCALL	DELAY
	SETB	SCLAT
WAITASKW:	
	MOV	C,SDAAT
	;   JC	WAITASKW
	LCALL   DELAY
	CLR	SCLAT
	SETB	SDAAT
	RET
NOASK:	
	SETB	SDAAT
	NOP
	NOP
	NOP
	SETB	SCLAT
	LCALL	DELAY
	CLR	SCLAT
	LCALL	DELAY	
	RET
STARTAT:	SETB	SCLAT
	SETB	SDAAT
	LCALL	DELAY
	CLR	SDAAT
	LCALL	DELAY
	CLR	SCLAT
	RET
STOPAT:	CLR	SCLAT
	LCALL	DELAY
	CLR	SDAAT
	LCALL	DELAY
	SETB	SCLAT
	LCALL	DELAY
	SETB	SDAAT
	LCALL	DELAY
	RET
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LINT0:NOP
	  NOP
	  NOP
	  NOP
	  RETI
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

tabINIT:
	   DB    00h,00h,00h,00h,0B0H,40h,0DH,23H//2DH     
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h   
tabC :
	   DB    00H,00H,00H,00H,00H,00H,00H,00H              ;
	   DB    00H,00H,00H,00H,00H,00H,00H,00H
TAB_1:
           DB    15h,69h,0A0h,00h,0B0H,40h,0DH,23H  
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h   	  
TAB_2:
           DB    15h,69h,51h,60h,0B0H,40h,0DH,23H
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_3:
           DB    15h,69h,50h,61h,0B0H,40h,0DH,23H   
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_4:
           DB    15h,69h,44h,21h,0B0H,40h,0DH,23H    
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_5:
           DB    15h,69h,54h,41h,0B0H,40h,0DH,23H   
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_6:
           DB    15h,69h,55h,41h,0B0H,40h,0DH,23H    
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_7:
           DB    15h,69h,00h,61h,0B0H,40h,0DH,23H    
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_8:
           DB    15h,69h,55h,61h,0B0H,40h,0DH,23H  
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_9:
           DB    15h,69h,54h,61h,0B0H,40h,0DH,23H
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h
TAB_10:
           DB    0A0h,00h,15h,61h,0B0H,40h,0DH,23H   
           DB    45H,60H,15H,29H,0A0H,40H,00h,80h

           END

⌨️ 快捷键说明

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