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

📄 lcd_ybaa.asm

📁 基本NEC单片机的电动车液晶仪表源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
             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_EXTA:   BR          !TEP_EXT
TEMP_TEST: 	BF	TIMEA.2,$TEP_EXTA
           	MOV         ADM,#9
           	MOV         ADS,#2
           	NOP
           	NOP
           	NOP
           	NOP
           	NOP
           	SET1        ADCS
WAIT_TEP:	BF	ADIF,$WAIT_TEP
            MOV         ADM,#0
            CLR1        ADIF
            MOV         A,ADCRH
            ADD         A,TEP_BUF
            RORC        A,1
            MOV         TEP_BUF,A
            CMP         A,TEP_TEMP
            BZ          $TEP_RST
            BC          $TEP_DW    
TEP_UP:     BT          TEP_FLAG,$TEP_AVR
            SET1        TEP_FLAG
            BR          $TEP_RST  
TEP_DW:     BF          TEP_FLAG,$TEP_AVR
            CLR1        TEP_FLAG
            BR          $TEP_RST
TEP_AVR:    INC         TEP_CNT
            CMP         TEP_CNT,#60
            BC          $TEP_EXTA
            MOV         TEP_TEMP,A
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,COM_BUF
            AND         A,#0F0H
            MOV         RAM9,A
            MOV         A,B
            CALL        !TAB_C
            MOV         COM_BUF,A
            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     
;====================================================================== 
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	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
		CALL	!SDA1621		;101 01100.0--看情况定
		CLR1	DA_1621			;第九位值恒为'0'
		CALL	!CK_1621		;第九位空脉冲
		;------------------------
		MOV	A,RAM1			;RAM1为需要显示的数据
		CALL	!SDA1621;seg1
		MOV	A,RAM2			;RAM2为需要显示的数据
		BF          MAOHAO,$MH_L
		SET1        A.0
MH_L:		CALL	!SDA1621;seg2	
		MOV	A,RAM3			;RAM3为需要显示的数据
		CALL	!SDA1621;seg3
		MOV	A,RAM4
		CALL	!SDA1621;seg4
		MOV	A,RAM5
		SET1        A.4
		BF          VL_F,$VL_MS
		BT          MAOHAO,$VL_MS
		CLR1        A.4
VL_MS:		CALL	!SDA1621;seg5
		MOV	A,RAM6
		CALL	!SDA1621;seg6
		MOV	A,RAM7
		CLR1        A.3
		BT          ZE_UP,$FH_LAB
		SET1        A.3
FH_LAB:		CALL	!SDA1621;seg7
		MOV	A,RAM8
		SET1        A.3
		CALL	!SDA1621;seg8
                        MOV	A,RAM9			;RAM1为需要显示的数据
		CALL	!SDA1621;seg9
		MOV	A,RAM10			;RAM2为需要显示的数据
		CALL	!SDA1621;seg10	
		MOV	A,RAM11			;RAM3为需要显示的数据
		CALL	!SDA1621;seg11
		MOV	A,RAM12
		CALL	!SDA1621;seg12
		MOV	A,RAM13
		CALL	!SDA1621;seg13
		MOV	A,RAM14
		CALL	!SDA1621;seg14
		MOV	A,RAM15
		CALL	!SDA1621;seg15
		MOV	A,RAM16
		CALL	!SDA1621;seg16		
		RET	     
;==============================================================
;BCD转换,出来时A为个数,B为十位数,
;===============================================================
BCD_COV:                MOV         B,#0
BCD_CON:                CMP         A,#10
                        BC          $BCD_END
                        INC         B
                        SUB         A,#10
                        BR          $BCD_CON
BCD_END:                RET   
;================================================================  
DISPLAY:                BF          TIMEA.4,$DISP_OUT
                        CALL        !DISPLAY_LCD 
DISP_OUT:               RET
;===============================================================
SD_EXTA:     BR         !SD_EXT
SD_TEST:     BF         TIMEA.1,$SD_EXTA
             MOV        ADM,#9
             MOV        ADS,#2 
             NOP
             NOP
             NOP
             NOP
             NOP
             SET1       ADCS
WAIT_SAD:    BF         ADIF,$WAIT_SAD
             MOV        ADM,#0
             CLR1       ADIF
             MOV        A,ADCRH
             ADD        A,SD_BUF
             RORC       A,1
             MOV        SD_BUF,A
             CMP	A,SD_TEMP
	 BZ	$SD_RST
	 BC	$SD_DW
SD_UP:	 BT	SD_FLAG,$SD_AVR
	 SET1	SD_FLAG
	 BR	$SD_RST
SD_DW:	 BF	SD_FLAG,$SD_AVR
	 CLR1	SD_FLAG
	 BR	$SD_RST	
SD_AVR:  	 INC	SD_CNT
	 CMP	SD_CNT,#60
	 BC	$SD_EXT
	 MOV	SD_TEMP,A 
SD_RST:	 MOV	SD_CNT,#0
           ;  CMP        A,#106
;	 BNC        $SD_RSTA
;	 MOV        A,#106
SD_RSTA:	 CMP        A,#228
	 BC         $SD_RSTB
	 MOV        A,#228
SD_RSTB:     MOV        SD_TEMP,A
SD_CONA:     MOV        B,#0
SD_CON:      MOVW       HL,#SD_TAB
             MOV        A,L
             ADD        A,B
             MOV        L,A
             BNC        $TAKE_SD
             INC        H
TAKE_SD:     MOV        A,[HL]
             CMP        A,SD_TEMP
             BNC        $SD_ED
             INC        B
             BR         $SD_CON
SD_ED:       MOV        A,B
             CMP        A,#0
             BZ         $SD_LAB1
             DEC        B
SD_LAB1:     MOV        A,B
             CALL       !BCD_COV 
             CALL       !TAB_C
             MOV        RAM14,A
             MOV        A,B
             CALL       !TAB_C
             MOV        RAM15,A                         
SD_EXT:	 RET  
;=====================================================
SD_TAB:      DB 000D,004D,008D,011D,015D,019D,023D,027D,030D,034D,038D,042D,046D
             ;    0    1   2    3    4    5    6    7    8    9    10   11   12
             DB 049D,053D,057D,061D,064D,068D,072D,076D,080D,083D,087D,091D,095D
             ;    13  14   15   16   17   18   19   20   21   22   23   24   25
             DB 099D,102D,106D,110D,114D,118D,121D,125D,129D,133D,137D,140D,144D
             ;    26  27   28   29   30   31   32   33   34   35   36   37   38
             DB 148D,152D,155D,159D,163D,167D,171D,174D,178D,182D,186D,190D,193D
             ;    39  40   41   42   43   44   45   46   47   48   49   50   51
             DB 197D,201D,205D,209D,212D,216D,220D,224D,228D
             ;   52   53   54   55   56   57   58   59   60             
 		END
		

⌨️ 快捷键说明

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