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

📄 dva keyboard.bak

📁 包含电路图及c语言程序
💻 BAK
📖 第 1 页 / 共 2 页
字号:

#define PREV    PORTB,5         ;bit b5 --> KEYBOARD 1
#define SELS    PORTB,6         ;bit b6 --> KEYBOARD 2 
#define ENTR    PORTA,5         ;bit a5 --> KEYBOARD 3


***************************************************************
;*    ENTER KEY Program                                        *
;***************************************************************
ENTR_EVEN:
        bsf     STATUS,RP0     ;选择BANK1
        clrf    ktxxh           ;将BANK1中的ktxxh内容清0
        bcf     STATUS,RP0
        movf    level,W       ;判level的内容,如果level的内容为0,则将Z置1;
        btfsc   STATUS,Z    ;判Z位
        goto    start_keyboard_mode     ;level的内容不为0的时候,执行该条指令
        btfsc   sps_mode
        goto    start_keyps
        btfsc   psword_flag
        goto    change_pscoursor
        btfsc   pswordc_flag
        goto    change_calcoursor
        btfsc   keynum_flag
        goto    change_coursor
        btfsc   calib_flag
        goto    start_calibration
;        btfsc   rng_flag
;        goto    start_ratio
        
                
        movf    parameter,W
        xorlw   .0
        btfsc   STATUS,Z
        goto    pa_1            ;model
        movf    parameter,W
        xorlw   .1
        btfsc   STATUS,Z
        goto    pa_2            ;full_scale
        movf    parameter,W
        xorlw   .2
        btfsc   STATUS,Z
        goto    pa_3            ;cal
;;        movf    parameter,W
;;        xorlw   .3
;;        btfsc   STATUS,Z
;;        goto    pa_4            ;
;;        movf    parameter,W
;;        xorlw   .4
;;        btfsc   STATUS,Z
;;        goto    pa_5
;;        movf    parameter,W
;;        xorlw   .5
;;        btfsc   STATUS,Z
;;        goto    pa_6
;;        movf    parameter,W
;;        xorlw   .6
;;        btfsc   STATUS,Z
;;        goto    pa_7
;;        movf    parameter,W
;;        xorlw   .7
;;        btfsc   STATUS,Z
;;        goto    pa_8
;;        movf    parameter,W
;;        xorlw   .8
;;        btfsc   STATUS,Z
;;        goto    pa_9
;;        movf    parameter,W
;;        xorlw   .9
;;        btfsc   STATUS,Z
;;        goto    pa_10
        goto    entr_end
  
        ;
;;        btfsc prescale_flag
;;        goto  entr_end
;;        clrf  ddot_number
        ;
;;      movf    prescale_num,W
;;        movwf   AARGB0
;;        movlw   .5
;;        movwf   BARGB0
        ;
;;        bsf     PCLATH,3
;;        call    MUL08_08
;;        bcf     PCLATH,3
        ;
;;        movf    AARGB1,W
;;        movwf   ptrtmp
        ;
;;        clrf    msg_type
;;        bsf     msg_type8
;;        call    sram_to_ram    
;;        bsf   prescale_flag 
        goto    entr_end
;*****************************************
start_keyboard_mode:
        movlw   .1
        movwf   level      ;level=1
        movf    ddot_number,W   ;W=ddot_number
        bsf     STATUS,RP0
        movwf   bak_ram2       ;取bak_ram2的内容
        bcf     STATUS,RP0
        
        clrf    ddot_number
            ;
        clrf    ptrtmp
                        
        clrf    msg_type  ;ddot_number,ptrtmp,msg_type内容清0
        bsf     msg_type6
        call    sram_to_ram     
        bsf     sps_mode
        goto    entr_end    ;清ENTR_F标志位,返回
;****************************************
start_calibration:
        btfsc   start_cal_flag
        goto    entr_end
        ;
        movf    calib_type,W
        xorlw   .1
        btfsc   STATUS,Z
        goto    change_fulls         
scs_1:        
        bsf     start_cal_flag
;;        bsf   blink_all_f
        clrf    calib_number
        ;
        clrf    display_buf
        clrf    display_buf1
;;      movlw   6dh                     ; "s"
        clrf    display_buf2            ; "p"
        movlw   39h                     ; "c"
        movwf   display_buf3
        movf    calib_type,W
        btfsc   _Z
        goto    sc_o
sc_s:   movlw   76h                     ; "h"   
        goto    sc_e
sc_o:   
        movlw   38h                     ; "l"
sc_e:   
        movwf   display_buf4  
        ;
        call    message_display
        bcf     INTCON,INTE
        goto    entr_end
change_fulls:        
        btfsc   calkeynum_flag          
        goto    change_cal_coursor
        bsf     calkeynum_flag
        bsf     fr_flag
        movf    ddot_number,W
        bsf     STATUS,RP0
        movwf   bak_ram1
        bcf     STATUS,RP0
        movlw   .1
        movwf   coursor
        
;;        movlw   .0
        clrf    ddot_number
        movf    full_sh,W
        movwf   L_wordH
        movf    full_sl,W
        movwf   L_wordL
        bsf     PCLATH,3
        call    hextodec16
        call    BCD2DISPLAY
        bcf     PCLATH,3
        movlw   sel_num1           ;addr 0L
        movwf   r1
        movlw   display_buf
        movwf   r0
        call    ram_to_ram
        bcf     STATUS,RP0        
        movf    display_buf,W
        xorlw   .06
        btfsc   STATUS,Z
        goto    entr_end
        movlw   40h
        movwf   display_buf       
        goto    entr_end        
change_cal_coursor:        
        incf    coursor
        movlw   .6
        subwf   coursor,W
        btfss   STATUS,C
        goto    cc_10
        movlw   0ffh
        movwf   coursor
        bsf     STATUS,RP0
        movf    sel_num1,W
        bcf     STATUS,RP0
        movwf   r2
        bsf     STATUS,RP0
        swapf   sel_num2,W
        iorwf   sel_num3,W
        bcf     STATUS,RP0
        movwf   r1
        bsf     STATUS,RP0
        swapf   sel_num4,W
        iorwf   sel_num5,W
        bcf     STATUS,RP0
        movwf   r0
        bsf     PCLATH,3
        call    dectohex16
        bcf     PCLATH,3
        movf    L_wordH,W
        movwf   full_sh
        movf    L_wordL,W  
        movwf   full_sl
        bcf     calkeynum_flag
        btfsc   model_type,1
        goto    DC_cal_gain
        goto    AC_cal_gain
AC_cal_gain:
        movlw   80h
        movwf   vgh1_1
        goto    scs_g
DC_cal_gain:
        movlw   80h
        movwf   vghdc_1
scs_g:
        goto    scs_1
cc_10:   
        goto    entr_end 
start_keyps:
        bcf     sps_mode
        bsf     psnum_flag
        bsf     psword_flag
        ;
        clrf    ddot_number
        bsf     STATUS,RP0
        movlw   0ah
        movwf   sel_num1
        clrf    sel_num2
        clrf    sel_num3
        clrf    sel_num4
        clrf    sel_num5
        bcf     STATUS,RP0
        ;
        movlw   sel_num1           ;addr 0L
        movwf   r1
        movlw   display_buf
        movwf   r0
        call    ram_to_ram
        clrf    display_buf     ;num_1 not show
        ;
        movlw   .2
        movwf   coursor
        goto    entr_end        
;*****************************        
change_coursor:
        incf    coursor
        movlw   .6
        subwf   coursor,W
        btfss   STATUS,C
        goto    cc_1
        movlw   .1
        movwf   coursor
cc_1:   
        goto    entr_end
change_pscoursor:
        
        incf    coursor
        movlw   .6
        subwf   coursor,W
        btfss   STATUS,C
        goto    pscc_1
;
        bsf     STATUS,RP0
        swapf   sel_num2,W
        iorwf   sel_num3,W
        xorlw   keypw_h
        btfss   STATUS,Z
        goto    check_ratiokey
        swapf   sel_num4,W
        iorwf   sel_num5,W
        xorlw   keypw_l
        btfss   STATUS,Z
        goto    check_error
        bcf     STATUS,RP0
        movlw   .1
        movwf   level
        bsf     save_set_flag
        clrf    ddot_number
        clrf    parameter
        movf    parameter,W
        movwf   AARGB0
        movlw   .5
        movwf   BARGB0
        bsf     PCLATH,3
        call    MUL08_08
        bcf     PCLATH,3
        movf    AARGB1,W
           
        movwf   ptrtmp
        
        ;
        clrf    msg_type
        bsf     msg_type1 
        call    sram_to_ram     
        bsf     key_lock
        bcf     psnum_flag
        bcf     psword_flag
        goto    pscc_1
check_ratiokey:        
        bsf     STATUS,RP0
        swapf   sel_num2,W
        iorwf   sel_num3,W
        xorlw   ratiopw_h
        btfss   STATUS,Z
        goto    check_error
        swapf   sel_num4,W
        iorwf   sel_num5,W
        xorlw   ratiopw_l
        btfss   STATUS,Z
        goto    check_error
;                                      ;set ratio mode
start_ratio:   
        bcf     STATUS,RP0
        
        movf    rng_number,W
        xorlw   .0
        btfsc   STATUS,Z
        goto    pa_RATIO            ;model     
        movf    rng_number,W
        xorlw   .6
        btfsc   STATUS,Z
        goto    pa_RATIO_6          ;model 
                                   
check_error:
        movlw   .2
        
        movwf   coursor
        
pscc_1:
        bcf     STATUS,RP0
        goto    entr_end
change_calcoursor:
       
        incf    coursor
        movlw   .6
        subwf   coursor,W
        btfss   STATUS,C
        goto    pscc_1
;
        bsf     STATUS,RP0
        swapf   sel_num2,W
        iorwf   sel_num3,W
        xorlw   calpassword_h           ;password_h
        btfss   STATUS,Z
        goto    checkcal_error
        swapf   sel_num4,W
        iorwf   sel_num5,W
        xorlw   calpassword_l           ;password_l
        btfss   STATUS,Z
        goto    checkcal_error
        bcf     STATUS,RP0
        movlw   0ffh
        movwf   coursor
        bsf     save_gain_flag
        bsf     calib_flag
        bcf     pswordc_flag
        bcf     psnum_flag
        ;
        clrf    calib_type
        movf    calib_type,W
        movwf   AARGB0
        movlw   .5
        movwf   BARGB0
        bsf     PCLATH,3
        call    MUL08_08
        bcf     PCLATH,3
        movf    AARGB1,W
        
        movwf   ptrtmp
        
        clrf    msg_type
        bsf     msg_type4
        call    sram_to_ram     
;;        call    message_display
        goto    pscc_1
checkcal_error:
        movlw   .2
        
        movwf   coursor
        
pscal_1:
        bcf     STATUS,RP0
        goto    entr_end        
entr_end:
        bcf     ENTR_F
        return
;*********** SET MODEL ***************
pa_1:
        bsf     model_flag
        movf    model_type,W
        andlw   03h
        movwf   AARGB0
        movlw   .5
        movwf   BARGB0
        ;
        bsf     PCLATH,3
        call    MUL08_08
        bcf     PCLATH,3
        ;
        movf    AARGB1,W
        movwf   ptrtmp
        ;
        clrf    msg_type
        bsf     msg_type2
        call    sram_to_ram     
        goto    entr_end
;*********** SET DOT  ***************
pa_2:
        bsf     rng_flag
        movf    rng_number,W
        andlw   07h
        movwf   AARGB0
        movlw   .5
        movwf   BARGB0
        bsf     PCLATH,3
        call    MUL08_08
        bcf     PCLATH,3
        movf    AARGB1,W
        movwf   ptrtmp
                ;
        clrf    msg_type
        bsf     msg_type3
        call    sram_to_ram     
        goto    entr_end
;*********** SET RATIO  ***************  
pa_RATIO_6:
        bsf     dec_ratio_f
        goto    set_ratio_ent
pa_RATIO:
        bcf     dec_ratio_f
set_ratio_ent:
        movlw   .1
        movwf   level
        bsf     save_set_flag
        bsf     key_lock
        bcf     psnum_flag
        bcf     psword_flag
        bsf     keynum_flag
        ;       
        movf    ddot_number,W
        bsf     STATUS,RP0
        movwf   bak_ram1
        bcf     STATUS,RP0
        movlw   .1
        movwf   coursor
        btfsc   dec_ratio_f
        goto    dec_rat_6
dec_rat_0:
        movlw   .4
        movwf   ddot_number
        goto    dec_rat_e
dec_rat_6:
        clrf    ddot_number
dec_rat_e:
        movf    pt_ratio_h,W
        movwf   L_wordH
        movf    pt_ratio_l,W
        movwf   L_wordL
        bsf     PCLATH,3
        call    hextodec16
        call    BCD2DISPLAY
        bcf     PCLATH,3
        movlw   sel_num1                   ;addr 0L
        movwf   r1
        movlw   display_buf
        movwf   r0
        call    ram_to_ram
        bcf     STATUS,RP0        
        movf    display_buf,W
        xorlw   .06
        btfsc   STATUS,Z
        goto    entr_end
        movlw   40h
        movwf   display_buf 
        bsf     STATUS,RP0
        clrf    sel_num1
        bcf     STATUS,RP0
        goto    entr_end
;*********** SET DOT  ***************        
;;pa_4:
;;        bsf     keynum_flag
;;        bsf   fr_flag
;;        movf    ddot_number,W
;;        bsf     STATUS,RP0
;;        movwf   bak_ram1
;;        movlw   .1
;;        movwf   coursor
;;        bcf     STATUS,RP0
;;        movlw   .0
;;        movwf   ddot_number
;;        movf    full_sh,W
;;        movwf   L_wordH
;;        movf    full_sl,W
;;        movwf   L_wordL
;;        call    hextodec16
;;        call    BCD2DISPLAY
;;        movlw   sel_num1           ;addr 0L
;;        movwf   r1
;;        movlw   display_buf
;;        movwf   r0
;;        call    ram_to_ram
;;        goto    entr_end        
;;pa_9:
;;        bsf     keynum_flag
;;        movf    pt_ratio_h,W
;;        movwf   L_wordH
;;        movf    pt_ratio_l,W
;;        movwf   L_wordL
;;        call    hextodec16
;;        call    BCD2DISPLAY
;;        movlw   sel_num1           ;addr 0L
;;        movwf   r1
;;        movlw   display_buf
;;        movwf   r0
;;        call    ram_to_ram
;;        goto    entr_end
;;pa_8:
;;        bsf     keynum_flag
;;        movf    pt_ratio_h,W
;;        movwf   L_wordH
;;        movf    pt_ratio_l,W
;;        movwf   L_wordL
;;        call    hextodec16
;;        call    BCD2DISPLAY
;;        movlw   sel_num1           ;addr 0L
;;        movwf   r1
;;        movlw   display_buf
;;        movwf   r0
;;        call    ram_to_ram
;;      goto    entr_end
;;pa_7:
;;        bsf     keynum_flag
;;        movf    pt_ratio_h,W
;;        movwf   L_wordH
;;        movf    pt_ratio_l,W

⌨️ 快捷键说明

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