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

📄 lcd_yb.asm.bak

📁 基本NEC单片机的电动车液晶仪表源程序
💻 BAK
📖 第 1 页 / 共 3 页
字号:
             ;    0   1   2    3    4   5    6    7    8    9     A
;=================================================
VOL_RSTH:    MOV        VOL_CNT,#0
VOL_EXTA:    BR         !VOL_EXT
VOL_TEST:    BF         TIMEA.1,$VOL_EXTA
             BT         FLAGB.1,$VOL_EXTA
             MOV        FLAGB,#2
             MOV        ADM,#1
             MOV        ADS,#2 
             NOP
             NOP
             NOP
             NOP
             NOP
             SET1       ADCS
WAIT_VAD:    BF         ADIF,$WAIT_VAD
             CLR1       ADIF
             MOV        A,ADCRH
             MOV        ADM,#0
             ADD        A,VOL_BUF
             RORC       A,1
             MOV        VOL_BUF,A
             CMP	A,VOL_TEMP
	 BZ	$VOL_RSTH
	 BC	$VOL_DW
VOL_UP:	 BT	VOL_FLAG,$VOL_AVR
	 SET1	VOL_FLAG
	 BR	$VOL_RSTH
VOL_DW:	 BF	VOL_FLAG,$VOL_AVR
	 CLR1	VOL_FLAG
	 BR	$VOL_RSTH	
VOL_AVR:  	 INC	VOL_CNT
	 CMP	VOL_CNT,#80
	 BC	$VOL_EXTA
	 BF         VOL_FLAG,$VOL_SUB
	 ADD	VOL_TEMP,#1
	 BR         $VOL_RST
VOL_SUB:	 SUB        VOL_TEMP,#1 
VOL_RST:	 MOV	VOL_CNT,#0
             CLR1       ZE_FLAG
             CMP        A,#106
	 BNC        $VOL_RSTA
	 MOV        A,#106
	 SET1       ZE_FLAG
VOL_RSTA:	 ADD        A,#1
             CMP        A,#228
	 BC         $VOL_RSTB
	 MOV        A,#228
VOL_RSTB:    MOV        VOL_TEMP,A
             CLR1       VL_F
             CMP        A,#164
             BNC        $VOL_CONA
             SET1       VL_F
VOL_CONA:    MOV        B,#0
VOL_CON:     MOVW       HL,#VOL_TAB
             MOV        A,L
             ADD        A,B
             MOV        L,A
             BNC        $TAKE_VOL
             INC        H
TAKE_VOL:    MOV        A,[HL]
             CMP        A,VOL_TEMP
             BNC        $VOL_ED
             INC        B
             BR         $VOL_CON
VOL_ED:      MOV        A,B
             CMP        A,#0
             BZ         $VOL_LAB1
;             DEC        B
VOL_LAB1:    MOV        VOL_C3,#5
             MOV        RAM4,#3BH
             MOV        A,RAM7
             AND        A,#0FH
             OR         A,#0D0H
             MOV        RAM7,A
             MOV        A,B
	 BT         A.0,$VOL_LAB0
             MOV        VOL_C3,#0
             MOV        RAM4,#3FH
             MOV        A,RAM7
             AND        A,#0FH
             OR         A,#0B0H
             MOV        RAM7,A
VOL_LAB0:    MOV        A,B
             CLR1       CY
             RORC       A,1
             ADD        A,#28
             MOV        VOL_C2,A
             CALL       !BCD_COV
             MOV        VOL_C2,A
             CALL       !TAB_B
             MOV        RAM6,A
             MOV        A,B
             MOV        VOL_C1,A
             CALL       !TAB_B
             MOV        RAM5,A                          
VOL_EXT:	 RET
;================================================
;================================================
VOL_TAB:     DB 106D,108D,110D,112D,114D,116D,118D,119D,121D,123D,125D,127D,129D,131D,133D,135D
             ;   28  28.5 29   29.5 30   30.5 31   31.5 32   32.5 33   33.5 34   34.5 35   35.5
             DB 137D,138D,140D,142D,144D,146D,148D,150D,152D,154D,155D,157D,159D,161D,163D,165D
              ; 36   36.5 37   37.5 38   38.5 39   39.5 40   40.5 41   41.5 42   42.5 43   43.5
             DB 167D,169D,171D,173D,174D,176D,178D,180D,182D,184D,186D,188D,190D,192D,193D,195D
             ;   44  44.5 45   45.5  46  46.5 47   47.5 48   48.5  49  49.5 50   50.5 51   51.5 
             DB 197D,199D,201D,203D,205D,207D,209D,210D,212D,214D,216D,218D,220D,222D,224D,226D,228D
             ;  52   52.5 53   53.5 54  54.5  55   55.5 56  56.5  57  57.5  58  58.5  59   59.5 60             
;================================================
TEP_RSTH:   MOV         TEP_CNT,#0
TEP_EXTA:   BR          !TEP_EXT
TEMP_TEST: 	BF	TIMEA.2,$TEP_EXTA
            BT          FLAGB.2,$TEP_EXTA
            MOV         FLAGB,#4
           	MOV         ADM,#1
           	MOV         ADS,#1
           	NOP
           	NOP
           	NOP
           	NOP
           	NOP
           	SET1        ADCS
WAIT_TEP:	BF	ADIF,$WAIT_TEP
            CLR1        ADIF
            MOV         A,ADCRH
;            MOV         A,#126
            MOV         ADM,#0
            ADD         A,TEP_BUF
            RORC        A,1
            MOV         TEP_BUF,A
            CMP         A,TEP_TEMP
            BZ          $TEP_RSTH
            BC          $TEP_DW    
TEP_UP:     BT          TEP_FLAG,$TEP_AVR
            SET1        TEP_FLAG
            BR          $TEP_RSTH  
TEP_DW:     BF          TEP_FLAG,$TEP_AVR
            CLR1        TEP_FLAG
            BR          $TEP_RSTH
TEP_AVR:    INC         TEP_CNT
            CMP         TEP_CNT,#80
            BC          $TEP_EXTA
            BF          TEP_FLAG,$TEP_SUB
            ADD         TEP_TEMP,#1
            BR          $TEP_RST
TEP_SUB:    SUB         TEP_TEMP,#1            
TEP_RST:    MOV         TEP_CNT,#0
            CMP         A,#16
            BNC         $TEP_RSTA
            MOV         A,#16
TEP_RSTA:   CMP         A,#177
            BC          $TEP_RSTB
            MOV         A,#177
TEP_RSTB:   MOV         TEP_TEMP,A
            MOV         A,TEP_TEMP
            SET1        ZE_UP
            CMP         A,#48              ;0
            BZ          $TEP_LAB0
            BNC         $TEP_CONA
            CLR1        ZE_UP
TEP_CONA:   MOV         B,#0
TEP_CON:    MOVW        HL,#TEP_TAB
            MOV         A,L
            ADD         A,B
            MOV         L,A
            BNC         $TAKE_TEP
            INC 	H
TAKE_TEP:   MOV         A,[HL]
            CMP         A,TEP_TEMP
            BNC         $TEP_ED
            INC         B
            BR          $TEP_CON
TEP_LAB0:   MOV         A,#0
            MOV         B,#0
            BR          $TEP_LAB4            
TEP_ED:     MOV         A,B
            CMP         A,#0
            BZ          $TEP_LAB1
            DEC         B
TEP_LAB1:   BT          ZE_UP,$TEP_LAB20
            MOV         A,#25                                 
            SUB         A,B
            MOV         B,A  
            BR          $TEP_LAB2
TEP_LAB20:  MOV         A,B
            SUB         A,#25
            MOV         B,A                                
TEP_LAB2:   MOV         A,B
            CALL        !BCD_COV
TEP_LAB4:   ;MOV         TEP_L,A
            CALL        !TAB_C
            MOV         COM_BUF,A
            AND         A,#0FH
            MOV         RAM8,A
            MOV         A,RAM9
            AND         A,#0FH
            MOV         RAM9,A
            MOV         A,COM_BUF
            AND         A,#0F0H
            OR          A,RAM9
            MOV         RAM9,A
            MOV         A,B
            CALL        !TAB_C
            MOV         COM_BUF,A
            MOV         A,RAM7
            AND         A,#0F0H
            MOV         RAM7,A
            MOV         A,COM_BUF
            AND         A,#0FH
            OR          A,RAM7
            MOV         RAM7,A
            
            MOV         A,COM_BUF
            AND         A,#0F0H
            OR          A,RAM8
            MOV         RAM8,A
TEP_EXT:            RET
;=======================================================================    
TAB_C:       MOVW       HL,#TAB_C0
             ADD        A,L
             MOV        L,A
             BNC        $TAB_CLAB
             INC        H
TAB_CLAB:    MOV        A,[HL]
             RET                  
TAB_C0:     DB 0F5H,060H,0B6H,0F2H,063H,0D3H,0D7H,070H,0F7H,0F3H ;077H
            ;    0   1    2    3    4    5    6   7     8    9    A     
;====================================================================== 
DEL500mS:	MOV	TEMP,#5
WT500mSB:	MOV	B,#0
WT500mSA:	DBNZ	C,$WT500mSA
	MOV	WDTE,#0ACH
	DBNZ	B,$WT500mSA
	DBNZ	TEMP,$WT500mSB
	RET
;=======================================================================
TEP_TAB:   DB 016D,017D,018D,019D,020D,021D,022D,023D,024D,025D,026D,027D,029D,030D
           ;  -25  -24  -23  -22  -21  -20  -19  -18  -17  -16  -15  -14  -13  -12
           DB 031D,032D,034D,035D,037D,038D,040D,041D,043D,045D,046D,048D,050D,052D
           ;  -11  -10  -9   -8   -7   -6   -5   -4   -3   -2   -1    0    1    2
           DB 054D,056D,058D,059D,061D,064D,066D,068D,070D,072D,074D,076D,079D,081D
           ;  3    4    5    6    7    8    9    10   11   12   13   14   15   16
           DB 083D,085D,088D,090D,092D,095D,097D,099D,102D,104D,107D,109D,111D,114D
           ;  17   18   19   20   21   22   23   24   25   26   27   28   29   30
           DB 116D,118D,121D,123D,125D,128D,130D,132D,135D,137D,139D,141D,144D,146D
           ;  31   32   33   34   35   36   37   38   39   40   41   42   43   44
           DB 148D,150D,152D,154D,156D,158D,160D,162D,164D,166D,168D,170D,172D,174D
           ;  45   46   47   48   49   50   51   52   53   54   55   56   57   58
           DB 175D,177D
           ;  59   60                          
;================================================
;LCD显示程序
;以下为HT1621的写程序,发送命令字格式为:100 xxxx xxxx x all is 12bits
;该程序的入口参数为A,再送到TEMP
COM1621:	            MOV	TEMP,A
		CLR1	CS_1621
		SET1	DA_1621
		CALL	!CK_1621	
		CLR1	DA_1621
		CALL	!CK_1621
		CALL	!CK_1621
		;上为发关100代码
		CALL	!SD_1621
		CALL	!CK_1621	;第九个脉冲 0
		SET1	CS_1621
		RET
		;-----------------------
SDA1621:	            MOV	TEMP,A
SD_1621:	            MOV	SEND_CNT,#8
SD1621A:               	SET1	DA_1621
		BT	A.7,$SD1621B		
		CLR1	DA_1621
SD1621B:	            SET1	WR_1621
		ROLC	A,1
		NOP
		NOP
		NOP
		NOP
		CLR1	WR_1621
		DBNZ	SEND_CNT,$SD1621A
		ROLC	A,1
		MOV         TEMP,A		;保持入参不变
		RET
		;-----------------------
CK_1621:	            SET1	WR_1621
		NOP
		NOP
		NOP
		NOP
		NOP
		NOP
		CLR1	WR_1621
		RET
;====================================================	
		;LCD显示程序
DISPLAY_LCD:;1621控制字 
                        MOV	WDTE,#0ACH
		MOV	A,#00011000B;0X18	;XTAL 256K INTTEL_MODE---RC
		CALL	!COM1621
		MOV	A,#00000001B;0X01	;SYS_OSC START MODE
		CALL	!COM1621
		MOV	A,#00101001B;0X29	;1/4;1/3 BIAS 4COM LCD MODE
		CALL	!COM1621
		MOV	A,#00000011B;0X03	;LCD ON MODE
		CALL	!COM1621
		;------------------------
		;开始的SEG段选择,假设开始为SEG1
		CLR1	CS_1621			;片选有效
		MOV	A,#10100000B;值看情况定	;开始的SEG段选择,后边没送一个数据SEG加1

⌨️ 快捷键说明

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