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

📄 lcd_yb.asm.bak

📁 基本NEC单片机的电动车液晶仪表源程序
💻 BAK
📖 第 1 页 / 共 3 页
字号:
		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
		SET1        A.4                ;KM
		CALL	!SDA1621;seg12
		MOV	A,RAM13
		SET1        A.4
		CALL	!SDA1621;seg13
		MOV	A,RAM14
		CLR1        A.3
		BF          RA263,$DDD_LAB0
		SET1        A.3
DDD_LAB0:		CALL	!SDA1621;seg14
		MOV	A,RAM15
		CLR1        A.3
		BF          RA283,$DDD_LAB
		SET1        A.3
DDD_LAB:		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.5,$DISP_OUT
                        BT          FLAGB.5,$DISP_OUT
                        MOV         FLAGB,#20H
                        CALL        !DISPLAY_LCD 
DISP_OUT:               RET
;===============================================================
SD_RSTH:     MOV        SD_CNT,#0
SD_EXTA:     BR         !SD_EXT
SD_TEST:     BF         TIMEA.4,$SD_EXTA
             BT         FLAGB.4,$SD_EXTA
             MOV        FLAGB,#10H
             MOV        ADM,#1
             MOV        ADS,#3 
             NOP
             NOP
             NOP
             NOP
             NOP
             SET1       ADCS
WAIT_SAD:    BF         ADIF,$WAIT_SAD
             CLR1       ADIF
             MOV        A,ADCRH
             MOV         ADM,#0
             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_RSTH
SD_DW:	 BF	SD_FLAG,$SD_AVR
	 CLR1	SD_FLAG
	 BR	$SD_RSTH	
SD_AVR:  	 INC	SD_CNT
	 CMP	SD_CNT,#80
	 BC	$SD_EXTA
	 BF         SD_FLAG,$SD_SUB
	 ADD        SD_TEMP,#1
	 BR         $SD_RST
SD_SUB:      SUB        SD_TEMP,#1	  
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
             CLR1       SD_F
             CMP        A,#0
             BZ         $SD_LAB10
             DEC        B
             SET1       SD_F
             BR         $SD_LAB1
SD_LAB10:    MOV        LC_S,#0         
SD_LAB1:     MOV        A,B
             MOV        SD_TBUF,A
             CMP        A,#0
             BZ         $SD_WZ
             BF         AD_F,$SD_WZ
             CALL       !ADD_LOP
             MOV        SD_TBUF,A
SD_WZ:       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       
;=====================================================
ADD_LOP:      MOV	A,AD_ADJUST
             MOV  	B,A
             MOVW  	AX,#0
ADD_LP0:     ADD  	A,SD_TBUF
             BNC        $ADD_LP1
             INC        X
ADD_LP1:     DBNZ 	B,$ADD_LP0
             XCH        A,X
ADD_LP2:     CMPW       AX,#10
             BC         $ADD_LP3
             INC        B
             SUBW       AX,#10
             BR         $ADD_LP2
ADD_LP3:     MOV        A,B
             CMP        A,#99
             BC         $ADD_OUT
             MOV        A,#99
ADD_OUT:     RET  
;======================================================
;显示999.9KM,3个字节
;=====================================================
LC_TEST:     BF        FLAGA.0,$LC_OUT
             CLR1      FLAGA.0
             CMP       SD_TBUF,#0
             BZ        $LC_OUT
             CALL      !ADD_28
             MOVW      LC_RAM0,AX
             MOV       A,LC_CRAM0
             ADD       A,LC_RAM0
             MOV       LC_CRAM0,A
             MOV       A,LC_CRAM1
             ADDC      A,LC_RAM1
             MOV       LC_CRAM1,A
             MOVW      AX,LC_CRAM0
             CALL      !SUB_1000
             MOVW      LC_CRAM0,AX
             MOV       A,LC_CT0
             ADD       A,B
             MOV       LC_CT0,A
             ADDC      LC_CT1,#0
             MOVW      AX,LC_CT0
             MOV       B,#0
             MOV       LC_XS0,#0
             MOV       LC_XS1,#0
             MOV       LC_XS2,#0
             MOV       LC_XS3,#0  
DW_1000:     CMPW      AX,#1000
             BC        $DW_100
             ADD       LC_XS3,#1
             SUBW      AX,#1000
             BR        $DW_1000
DW_100:      CMPW       AX,#100
             BC        $DW_10
             ADD       LC_XS2,#1
             SUBW      AX,#100
             BR        $DW_100
DW_10:       CMPW       AX,#10
             BC        $DW_OUT
             ADD       LC_XS1,#1
             SUBW      AX,#10
             BR        $DW_10
DW_OUT:      MOV       A,X
             MOV       LC_XS0,A
             CALL      !TAB_B
             MOV       RAM13,A
             MOV       A,LC_XS1
             CALL      !TAB_B
             MOV       RAM12,A
             MOV       A,LC_XS2
             CALL      !TAB_B
             MOV       RAM11,A
             MOV       A,LC_XS3
             CALL      !TAB_B
             MOV       RAM10,A                                                       
LC_OUT:      RET
;====================================================              
ADD_28:      MOV      A,SD_TBUF
             MOV      B,A
             MOVW     AX,#0 
LP_ADD:      ADDW     AX,#28
             DBNZ     B,$LP_ADD
             RET                               
;=====================================================
SUB_1000:    MOV      B,#0
SUB_LP:      CMPW      AX,#1000
             BC       $SUB_OUT
             INC      B
             SUBW     AX,#1000
             BR       $SUB_LP
SUB_OUT:     RET     
;=====================================================
AD_RSTH:     MOV        AD_CNT,#0
AD_EXTA:     BR         !AD_EXT
AD_TEST:     BF         TIMEA.3,$AD_EXTA
             BT         FLAGB.3,$AD_EXTA
             MOV        FLAGB,#8
             MOV        ADM,#1
             MOV        ADS,#0 
             NOP
             NOP
             NOP
             NOP
             NOP
             SET1       ADCS
WAIT_AAD:    BF         ADIF,$WAIT_AAD
             CLR1       ADIF
             MOV        A,ADCRH
             MOV         ADM,#0
             ADD        A,AD_BUF
             RORC       A,1
             MOV        AD_BUF,A
             CMP	A,AD_TEMP
	 BZ	$AD_RSTH
	 BC	$AD_DW
AD_UP:	 BT	AD_FLAG,$AD_AVR
	 SET1	AD_FLAG
	 BR	$AD_RSTH
AD_DW:	 BF	AD_FLAG,$AD_AVR
	 CLR1	AD_FLAG
	 BR	$AD_RSTH	
AD_AVR:  	 INC	AD_CNT
	 CMP	AD_CNT,#80
	 BC	$AD_EXTA
	 BF         AD_FLAG,$AD_SUB
	 ADD        AD_TEMP,#1
	 BR         $AD_RST
AD_SUB:      SUB        AD_TEMP,#1	  
AD_RST:	 MOV	AD_CNT,#0
             CMP        A,#65
	 BNC        $AD_RSTA
	 CLR1       AD_F
	 BR         $AD_EXT
AD_RSTA:	 SUB        A,#64
             MOV        AD_TEMP,A
             CLR1       CY
             RORC       A,1
             CLR1       CY
             RORC       A,1
             MOV        AD_ADJUST,A
             SET1       AD_F
             CMP       	AD_ADJUST,#0
             BNZ        $AD_EXT
             CLR1       AD_F
AD_EXT:      RET             	
 	 END
		

⌨️ 快捷键说明

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