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

📄 ylcd128e.asm

📁 LCD12864显示 便携式 电池,压力,电流三输入表 单次读数 1240E 各通道增益不同 非线性自校准, x5165分配:0-0708H ( 25组计量数据 ) 校准 07d8h--07ec
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        LCALL   DATA_FILLi       ;填充显示数字
        JB      OVERBIT,OVERI   ;ad取样过载
        SETB    SPIKE
        lcall   scan
        AJMP    mainY
OVERI:    CLR    SPIKE          ;电流过载显示
          CLR    OVERBIT
          mov    Dly_Time,#2
          lcall  Delayb
          SETB   SPIKE
          AJMP    mainY

;********************************************************
CCOMM:
         push   psw
         push   acc
         MOV	PSW,#08H
	MOV	A,#0ebH      ;ebh
	CLR	TI
	MOV	SBUF,A
        mov     ram63,a
        jnb     ti,$
        MOV	A,YY_BACK0      ;y_h
	CLR	TI
	MOV	SBUF,A
        add     a,ram63
        mov     ram63,a
        jnb     ti,$
        MOV     A,YY_BACK1     ;y_m
        CLR	TI
	MOV	SBUF,A
        add     a,ram63
        mov     ram63,a
        jnb     ti,$
        MOV     A,YY_BACK2     ;y_l
        CLR	TI
	MOV	SBUF,A
        add     a,ram63
        mov     ram63,a
        jnb     ti,$

        MOV     A,i_back0     ;i_h
        CLR	TI
	MOV	SBUF,A
        add     a,ram63
        mov     ram63,a
        jnb     ti,$
        MOV     A,i_back1     ;i_m
        CLR	TI
	MOV	SBUF,A
        add     a,ram63
        mov     ram63,a
        jnb     ti,$
        MOV     A,i_back2     ;i_l
        CLR	TI
	MOV	SBUF,A
        add     a,ram63
        mov     ram63,a
        jnb     ti,$



        MOV     A,ram63     ;sum
        CLR	TI
	MOV	SBUF,A
        jnb     ti,$
         clr    ti
ccomend:  POP	ACC
	  POP	PSW
         ret
;************************************************************************************************************
add_iii:            ;电流清零   正数---减法,负数加法
            mov    a,60h
            jb    acc.7,sub_iii
            MOV    R0,#ram32       ;当前值低位
            MOV    A,@R0
            CLR    C
            subb   A,62H
            MOV    @R0,A
            DEC    R0
            MOV    A,@R0
            subb   A,61h      ;N=  NAMBER X 100H
            MOV    @R0,A
            DEC    R0
            MOV    A,@R0
            subb   A,60h
            MOV    @R0,A
            RET

sub_iii:    MOV    R0,#ram32       ;当前值低位    ;负数补偿
            MOV    A,@R0
            CLR    C
            ADD    A,62h
            MOV    @R0,A
            DEC    R0
            MOV    A,@R0
            ADDC   A,61h      ;N=  NAMBER X 100H
            MOV    @R0,A
            DEC    R0
            MOV    A,@R0
            ADDC    A,#0
            MOV    @R0,A
            RET
;****************************************************************************************
datmov:        ;r0--r1;  bcd---deci   to  51h--55h
             mov   r1,#ram50+1
             mov   r2,#02
datmov1:     mov   a,@r0
             anl   a,#0fh
             mov   @r1,a
             inc   r0
             inc   r1
datmov2:     mov   a,@r0
             anl   a,#0f0h
             swap  a
             mov   @r1,a
             inc   r1
             mov   a,@r0
             anl   a,#0fh
             mov   @r1,a
             inc   r1
             inc   r0
             djnz  r2,datmov2
             ret
;****************************************************************
;*******************************************************************************
copyad:        ;保存显示结果二进制
         push  00h
         push  01h
         push  02h
         push  acc
         mov   r0,#adhexh    ;34-36H
         mov   r1,#SAVE01    ;37-39H
         mov   r2,#03h
  copya: mov   a,@r0
         mov   @r1,a
         inc   r0
         inc   r1
         djnz  r2,copya
         pop   acc
         pop   02h
         pop   01h
         pop   00h
         ret
;*********************************************************************
;*********************************************************************
SCAN:   clr    key01        ;key01-02 this drive;key0-key4 this  function
        setb   key02
        LCALL  DEL10
        MOV    A,P3         ;p3.3--p3.7
        ORL    A,#07H
        CPL    A
        JZ     SCANd1
        JB      KEY_DELAY,SCAN01      ;0-4号键压下转
        LCALL   DEL10
        SETB    KEY_DELAY
        SJMP    SCAN
scand1:  setb    key01        ;
         clr     key02
         LCALL  DEL10
         MOV    A,P3         ;p3.3--p3.7
         ORL    A,#07H
         CPL    A
         JZ     SCANd2
         JB      KEY_DELAY,SCAN02      ;5-7 号键压下转
         LCALL   DEL10
         SETB    KEY_DELAY
         SJMP   scand1
scand2:    clr   KEY_DELAY
             ret
SCAN02:    JNB     SETHAO,SCAN02A
           LCALL   SPIKEA
           RET
SCAN02A:   ajmp    scan02b
SCAN01:   clr     KEY_DELAY
         JNB     ACC.3,SCAN1
         LCALL   SPIKEA
         ljmp    disp0        ; ;显示清零/显示复原

SCAN1:  JNB   ACC.5,SCAN2
        LCALL   SPIKEA
scab1b:  lcall  del140ms
         lcall  del140ms
         clr    key01
         setb   key02
         MOV    A,P3
         ORL    A,#30h
         CPL    A
         cjne   a,#30h,scan1c
         ljmp   cl_last         ;"清除"+"保存"--清保存数据的最后一组
scan1c:  LJMP    SAVROM         ;“保存”  显示数据到ROM;
SCAN2:  JNB    ACC.4,SCAN3
        LCALL  DEL10
        JB      P3.4,SCAEND
        LCALL   SPIKEA
        lJMP   CLEAER           ; 清除多项
SCAEND:  RET
SCAN3:  JNB   ACC.6,SCAN4
        LCALL   SPIKEA
        SETB    BITHAO
        LJMP    BIAOHAO        ;输入表号(5位十进制数)
SCAN4:      JNB   ACC.7,SCAEND
scan5:      LCALL    DEL10
            JNB   ACC.7,SCAEND

             LCALL   SPIKEA
             LJMP   calibA           ;计量校准
DISP_CAL0:   LCALL   SPIKEA
            lcall  waitkey
            LJMP   DISP_CAL
SCAN02b:   clr     KEY_DELAY
           jb      SETHAO,SCAN22      ;进入计量画面不显示电池
          JNB     ACC.3,SCAN21    ;L -MOV
          LCALL   DEL140MS
          LCALL   DEL140MS
          MOV    A,P3
          ORL    A,#0E7h        ;R- MOV    ;L -MOV
          CPL    A
          cjne   a,#18h,SCAEND
TESTBB:   LCALL   SPIKEA
          cpl    disp_batery    ;电池测量显示/关闭  ------双键操作
          clr     WAIT_DY
           mov     x,#00        ;
           mov     y,#00
           lcall    clear_1h        ;清除1行程序(x,y外值)
          ret
SCAN21:   JNB   ACC.4,SCAN22    ;R- MOV
          LCALL   DEL140MS
          LCALL   DEL140MS
          MOV    A,P3
          ORL    A,#0E7h        ;R- MOV    ;L -MOV
          CPL    A
          cjne   a,#18h,SCAEND
          sjmp   TESTBB
SCAN22:      JNB   ACC.5,SCAN23
          LCALL   DEL140MS       ;+
          LCALL   DEL140MS
          MOV    A,P3
          ORL    A,#9fh
          CPL    A
          cjne   a,#60h,SCAN2D   ;+ -
          SJMP   SCAN24
SCAN23:   JNB   ACC.6,SCAN2D
          LCALL   DEL140MS       ;-
          LCALL   DEL140MS
          MOV    A,P3
          ORL    A,#9fh
          CPL    A
          cjne   a,#60h,SCAN2D   ;+ -
          SJMP   SCAN24
SCAN2D:     RET
;***********************************
;ADC取样保存值的提取
SCAN24:   LCALL   SPIKEA        ;进行电流清零
          MOV   A,5dh           ;判断是否零位,( 大于32个字)非零位不清零
          JB    ACC.7,zero_IIB    ;负数转移
zero_IId: mov   a,5eh
          clr   c
          cjne  a,#64h,zero_IIc   ;
zero_IIc: jnc   SCAN2D            ;大于100个字无效
           MOV  A,5dH
           ANL  A,#80H
           MOV  60H,A           ;保存零位值  有极性
           MOV  61H,5eH
           MOV  62H,5fH
            MOV    DPH,#07H      ;写电流零值
            MOV    DPL,#0F4H
            mov    r0,#60H
            mov    r3,#3
            LCALL  WRIT_C
           LCALL   WAITKEY      ;等待放键

           RET
zero_IIB:  mov   a,5fh
           cpl    a
           mov   5fh,a
           mov   a,5eh
           cpl    a
           mov   5eh,a
           sjmp  zero_IId
;************************************************************************************************************
swichon:     LCALL   SPIKEA
             lcall  waitkey
             LCALL  DEL10
             inc    calb
             mov    a,calb
             cjne   a,#01,cal_swich1
             setb   set_calib   ;计量设置开关
             sjmp   dis_have
cal_swich1:  cjne   a,#02,cal_swich2
             setb   set_calib   ;计量设置开关
             ajmp   dis_lock
cal_swich2:  mov   calb,#0
             clr    set_calib   ;计量设置开关

cal_nohave:  Lcall   FullCLEAR     ;显示无自动补偿功能返回
             mov    map_no,#11   ;
             lcall  dis_map
             mov    Dly_Time,#15
             call   Delayb
             mov    calb,#00
             MOV    DPH,#07
             MOV    DPL,#0f2H
            mov    r0,#calb
            mov    r3,#1
            lcall   WRIT_C        ;连续写R3字节
             ajmp    goout
dis_have:          ;显示有自动补偿功能返回
            Lcall   FullCLEAR
            mov    map_no,#12   ;
            lcall  dis_map
            mov    Dly_Time,#15     ;3s
            call   Delayb
            mov    calb,#01
            MOV    DPH,#07
            MOV    DPL,#0f2H
            mov    r0,#calb
            mov    r3,#1
            lcall   WRIT_C       ;连续写R3字节
            ajmp    goout

dis_lock:          ;显示计量锁定功能返回
            Lcall   FullCLEAR
            mov    map_no,#13   ;
            lcall  dis_map
            mov    Dly_Time,#15     ;3s
            lcall   Delayb
            mov    calb,#02
            MOV    DPH,#07
            MOV    DPL,#0f2H
            mov    r0,#calb
            mov    r3,#1
            lcall   WRIT_C      ;连续写R3字节
            ajmp    goout
;********************************************************************************
DISP_CAL:   LCALL   SPIKEA
             mov   A,calb                 ;校准和"+"  ---显示计量状态
            CJNE  A,#01,DISP_CAL11
            AJMP     dis_have
DISP_CAL11: CJNE  A,#02,DISP_CAL22
            AJMP   dis_lock
DISP_CAL22: MOV   CALB,#00
            AJMP   cal_swich2
;************************************************************************
calibA:   Lcall   FullCLEAR
          mov    map_no,#06      ;校准选择:
          lcall  dis_map
calibaa: clr    key02
         setb   key01
         LCALL   DEL10
         MOV    A,P3
         ORL    A,#87H
         CPL    A
         jz     calibaa
         jb     acc.6,calibab     ;"-"      计量校准
         jb     acc.4,DISP_CAL    ;">"      显示设置
         jb     acc.5,swichon0    ;"+"      修改设置
          sjmp   calibaa
swichon0:  ljmp   swichon
CALIBDD:   LJMP   cal_swich1    ;显示补偿 状态后返回

calibab:   LCALL   SPIKEA
          mov    a,CALB       ;校准有效吗?
          CJNE   A,#01H,CALIBDD


          Lcall   FullCLEAR
          mov    map_no,#05       ;请输入标准压力
          lcall  dis_map
          clr     pol
          lcall  data_filly
             lcall   fill_danw     ;填压力单位
          lcall   waitkey
;******************闪烁显示输入数据 51h--55h ******************************************
             MOV     y,#03       ;起始坐标
             MOV     x,#30h
             mov     r0,#51h       ;data  addrass
             mov     r3,#00        ;闪烁记数
dis_calib:   lcall  flansh_sing    ;单字写  地址不变
             lcall   calib_key       ;扫描键盘 +-

⌨️ 快捷键说明

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