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

📄 lcd_ybaa.asm

📁 基本NEC单片机的电动车液晶仪表源程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
NAME MOTORBIKE LCD
;==============================================
TIME_F      EQU         0FE80H
;==============================================
MAOHAO      EQU         TIME_F.0
VOL_FLAG    EQU         TIME_F.1
VL_F        EQU         TIME_F.2
ZE_FLAG     EQU         TIME_F.3
ZE_UP       EQU         TIME_F.4
TEP_FLAG    EQU         TIME_F.5
SD_FLAG     EQU         TIME_F.6
;==============================================
TIMEA       EQU         0FE81H
TIME10MS    EQU         0FE82H
TIME500MS   EQU         0FE83H
VOL_CNT     EQU         0FE84H
VOL_TEMP    EQU         0FE85H
VOL_BUF     EQU         0FE86H
RAM1        EQU         0FE87H
RAM2        EQU         0FE88H
RAM3        EQU	0FE89H
RAM4  	EQU	0FE8AH
RAM5        EQU         0FE8BH
RAM6        EQU         0FE8CH
RAM7        EQU         0FE8DH
RAM8        EQU         0FE8EH
RAM9        EQU         0FE8FH
RAM10       EQU         0FE90H
RAM11       EQU	0FE91H
RAM12 	EQU	0FE92H
RAM13       EQU         0FE93H
RAM14       EQU         0FE94H
RAM15       EQU         0FE95H
RAM16       EQU         0FE96H
TEMP        EQU         0FE97H
SEND_CNT    EQU         0FE98H
VOL_C1      EQU         0FE99H            ;电压十位数
VOL_C2      EQU         0FE9AH            ;电压个位数
VOL_C3      EQU         0FE9BH            ;电压小数
SYS_S       EQU         0FE9CH
SYS_M       EQU         0FE9DH
SYS_H       EQU         0FE9EH
SYS_MG      EQU         0FE9FH
SYS_MS      EQU         0FEA0H
SYS_HG      EQU         0FEA1H
SYS_HS      EQU         0FEA2H
COM_BUF     EQU         0FEA3H
TEP_BUF     EQU         0FEA4H
TEP_TEMP    EQU         0FEA5H
TEP_CNT     EQU         0FEA6H
SD_BUF      EQU         0FEA7H
SD_TEMP     EQU         0FEA8H
SD_CNT      EQU         0FEA9H
;==============================================
WR_1621     EQU         P3.2
DA_1621     EQU         P4.0
CS_1621     EQU         P4.3
;==============================================
ORG	0000H
	DW 	MAIN
ORG         000CH
            DW 	MAIN
ORG	000EH
            DW 	ISR_INTTM000
ORG    	0040H
?INIT_CPU:  DW 	INIT_CPU   
?REST_RAM:  DW 	REST_RAM
?INIT_PORT: DW 	INIT_PORT
?INIT_TM00: DW 	INIT_TM00
ORG 	0080H
            DB 	94H      ;option byte
            DB 	0A7H     ;protect byte
ORG 	0082H
MAIN:       MOVW         AX,#0FEF6H
            MOVW        SP,AX
            DI 
            CALLT	[?INIT_CPU]
            MOV         A,RESF
            BF          A.4,$RST_RAM
            BR          $INIT_P
RST_RAM:    CALLT       [?REST_RAM]
INIT_P:     CALLT       [?INIT_PORT]
            CALLT       [?INIT_TM00]
            EI
            MOV         TIMEA,#1
            ;MOV        RAM5,#0FH
           ; MOV        RAM7,#0D0H
            CALL        !DISPLAY_LCD
MAIN_A:     CALL        !TIME_SUB            
            CALL        !VOL_TEST
            CALL        !TEMP_TEST
            CALL        !SD_TEST
            CALL        !DISPLAY
            BR          !MAIN_A           
;===============================================
ISR_INTTM000:PUSH       AX
             CLR1	TMIF000
             MOV        A,TIMEA
             ROL        A,1
             BF         A.5,$OUT_TM000
             MOV        A,#1
OUT_TM000:   MOV        TIMEA,A
             INC        TIME10MS
             CMP        TIME10MS,#10
             BC         $OUT_TM000A
             MOV        TIME10MS,#0          ;10MS
             INC        TIME500MS
             CMP        TIME500MS,#50
             BC         $OUT_TM000A
             MOV        TIME500MS,#0
             INC        SYS_S
             XOR        TIME_F,#01H          ;冒号的闪烁
OUT_TM000A:  POP        AX
             RETI
                         
;================================================            
INIT_CPU:    MOV	WDTM,#70H        ;16.384MS
             MOV 	WDTE,#0ACH
             MOV 	PCC,#00H         ;set fx to 8M
             MOV 	PPCC,#00H
             MOV 	LSRCM,#01H       
             MOV 	IF0,#00H
             MOV 	MK0,#0FFH
             RET                        
;==================================================  
REST_RAM:    MOVW 	HL,#0FE80H
             MOV 	B,#110
             MOV 	A,#0
REST_RAM1:   MOV 	[HL],A
             INCW 	HL
             DBNZ 	B,$REST_RAM1                                     
             RET
;================================================== 
INIT_PORT:   MOV  	P2,#0
             MOV  	PMC2,#0FH
             MOV  	PM2,#0FFH
             CLR1 	PM3.2             
             CLR1 	P3.2 
             MOV 	PM4,#0
             MOV        P4,#09H
             RET
;==================================================               
INIT_TM00:   MOV        TMC00,#0
             MOV        TOC00,#0
             MOV        CRC00,#0   
             MOV        PRM00,#0
             MOVW       AX,#8000-1
             MOVW       CR000,AX      
             MOV        TMC00,#0CH
             CLR1       TMMK000
             CLR1       TMIF000    
             RET
;==================================================
TIME_SUB:    BF         TIMEA.0,$TIME_OUT
             CMP        SYS_S,#120
             BC         $TIME_OUTA
             MOV        SYS_S,#0
             MOV        A,SYS_M
             INC        A
             MOV        SYS_M,A
             CMP        A,#60
             BC         $TIME_OUTA
             MOV        SYS_M,#0
             MOV        A,SYS_H
             INC        A
             MOV        SYS_H,A
             CMP        A,#19
             BC         $TIME_OUTA
             MOV        SYS_H,#19
TIME_OUTA:   MOV        A,SYS_M
             CALL       !BCD_COV
             MOV        SYS_MG,A
             CALL       !TAB_A
             MOV        RAM1,A                ;分钟的个位
             MOV        A,B
             MOV        SYS_MS,A
             CALL       !TAB_A
             MOV        RAM2,A                ;分钟的十位
             MOV        A,SYS_H
             CALL       !BCD_COV
             MOV        SYS_HG,A
             CALL       !TAB_A
             MOV        RAM3,A                ;小时的个位
             MOV        A,B
             MOV        SYS_HS,A
             CMP        A,#0
             BZ         $TIME_OUT
             SET1       RAM3.0                ;小时的十位
TIME_OUT:    RET             
;==================================================
TAB_A:       MOVW       HL,#TAB_A0
             ADD        A,L
             MOV        L,A
             BNC        $TAB_ALAB
             INC        H
TAB_ALAB:    MOV        A,[HL]
             RET 
;======================================================                    
TAB_A0:      DB 0FAH,60H,0D6H,0F4H,6CH,0BCH,0BEH,0E0H,0FEH,0FCH ;0EEH 
             ;    0   1   2    3    4   5    6    7    8    9     A
;==================================================
TAB_B:       MOVW       HL,#TAB_B0
             ADD        A,L
             MOV        L,A
             BNC        $TAB_BLAB
             INC        H
TAB_BLAB:    MOV        A,[HL]
             RET        
TAB_B0:      DB 0AFH,06H,06DH,04FH,0C6H,0CBH,0EBH,00EH,0EFH,0CFH ;0EEH 
             ;    0   1   2    3    4   5    6    7    8    9     A
;=================================================
VOL_EXTA:    BR         !VOL_EXT
VOL_TEST:    BF         TIMEA.1,$VOL_EXTA
             MOV        ADM,#9
             MOV        ADS,#2 
             NOP
             NOP
             NOP
             NOP
             NOP
             SET1       ADCS
WAIT_VAD:    BF         ADIF,$WAIT_VAD
             MOV        ADM,#0
             CLR1       ADIF
             MOV        A,ADCRH
             ADD        A,VOL_BUF
             RORC       A,1
             MOV        VOL_BUF,A
             CMP	A,VOL_TEMP
	 BZ	$VOL_RST
	 BC	$VOL_DW
VOL_UP:	 BT	VOL_FLAG,$VOL_AVR
	 SET1	VOL_FLAG
	 BR	$VOL_RST
VOL_DW:	 BF	VOL_FLAG,$VOL_AVR
	 CLR1	VOL_FLAG
	 BR	$VOL_RST	
VOL_AVR:  	 INC	VOL_CNT
	 CMP	VOL_CNT,#60
	 BC	$VOL_EXT
	 MOV	VOL_TEMP,A 
VOL_RST:	 MOV	VOL_CNT,#0
             CLR1       ZE_FLAG
             CMP        A,#106
	 BNC        $VOL_RSTA
	 MOV        A,#106
	 SET1       ZE_FLAG
VOL_RSTA:	 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        RAM7,#0D0H
             MOV        A,B
	 BT         A.0,$VOL_LAB0
             MOV        VOL_C3,#0
             MOV        RAM4,#3FH
             MOV        RAM7,#0B0H
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
;================================================
;C 为高四位    D为低四位
;================================================
XH_4:        MOV        C,A
             CLR1       CY
             ROR        A,1
             ROR        A,1
             ROR        A,1
             ROR        A,1
             AND        A,#0FH
             MOV        D,A
             MOV        A,C
             ROL        A,1
             ROL        A,1
             ROL        A,1
             ROL        A,1
             AND        A,#0F0H
             MOV        C,A
             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

⌨️ 快捷键说明

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