📄 dva keyboard
字号:
;; 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_6:
;; goto entr_end
;;pa_5:
;; goto entr_end
pa_3:
bsf psnum_flag
bsf pswordc_flag
movf ddot_number,W
bsf STATUS,RP0
movwf bak_ram1
bcf STATUS,RP0
movlw .1
movwf coursor
;; movlw .0
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
;;pa_10:
;; goto entr_end
***************************************************************
;* PREV KEY Program *
;***************************************************************
PREV_EVEN:
bsf STATUS,RP0
clrf ktxxh
bcf STATUS,RP0
btfsc model_flag
goto prev_model_type
btfsc rng_flag
goto prev_rng_type
btfsc psword_flag
goto prev_pswd_type
btfsc pswordc_flag
goto prev_pswdc_type
btfsc keynum_flag
goto prev_knum_type
btfsc calib_flag
goto prev_calib_type
;
;; movf level,W
;; xorlw .1
;; btfsc STATUS,Z
;; goto exit_keyboard_mode
;
btfsc set_mode
goto exit_keyboard_mode
;; bcf model_flag
prev_end:
bcf PREV_F
return
prev_model_type
bcf model_flag
bsf chg_ratio
goto show_prev_mode
prev_rng_type:
;; btfsc keynum_flag
;; goto prev_knum_type
;; btfsc prescale_flag
;; goto prev_prescale_type
bcf rng_flag
bcf keynum_flag
bsf chg_ratio
bcf have_ratio
movf rng_number,W
bcf have_ratio
movf rng_number,W
xorlw .0
btfsc STATUS,Z
bsf have_ratio ;model
xorlw .6
btfsc STATUS,Z
bsf have_ratio ;model
goto show_prev_mode
;;prev_prescale_type:
;; bcf prescale_flag
;; goto show_rng_exit
prev_knum_type
movlw 0ffh
movwf coursor
;
bsf STATUS,RP0
movf sel_num1,W
bcf STATUS,RP0
movwf r2 ; 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 pt_ratio_h
movf L_wordL,W
movwf pt_ratio_l
;
bsf chg_ratio
bsf STATUS,RP0
movf bak_ram1,W
bcf STATUS,RP0
movwf ddot_number
bcf keynum_flag
goto exit_keyboard_mode
;; goto show_rng_exit
show_rng_exit:
movf rng_number,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_type3
call sram_to_ram
goto prev_end
prev_pswd_type:
movlw 0ffh
movwf coursor
bsf STATUS,RP0
movf bak_ram1,W
bcf STATUS,RP0
movwf ddot_number
bcf psword_flag
bcf psnum_flag
goto exit_keyboard_mode
prev_pswdc_type:
movlw 0ffh
movwf coursor
bsf STATUS,RP0
movf bak_ram1,W
bcf STATUS,RP0
movwf ddot_number
bcf pswordc_flag
bcf psnum_flag
goto show_prev_mode
prev_calib_type:
btfsc calkeynum_flag
goto prev_fr_type
bcf calib_flag
goto show_prev_mode
prev_fr_type:
decfsz coursor
goto prev_end
goto pft_1 ;return up
;
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
pft_1: ;
bsf chg_ratio
bsf STATUS,RP0
movf bak_ram1,W
bcf STATUS,RP0
movwf ddot_number
;
bcf calkeynum_flag
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
bcf keynum_flag
goto prev_end
show_prev_mode:
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
goto prev_end
exit_keyboard_mode:
movlw 0ffh
movwf coursor
bsf STATUS,RP0
movf bak_ram2,W
bcf STATUS,RP0
movwf ddot_number
clrf level
bcf key_lock
bcf set_mode
bcf sps_mode
goto prev_end
;***************************************************************
;* SELECT KEY Program *
;***************************************************************
SELS_EVEN:
bsf STATUS,RP0
clrf ktxxh
bcf STATUS,RP0
btfsc sps_mode
goto sels_end
btfsc psnum_flag
goto sel_psnumber
btfsc keynum_flag
goto sel_keynumber
btfsc model_flag
goto set_model_type
btfsc rng_flag
goto set_rng_type
btfsc calib_flag
goto sel_calib_type
;
set_parameter_type:
incf parameter
movlw .3 ;4_select
subwf parameter,W
btfsc STATUS,C
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
goto sels_end
set_model_type:
btfss key_lock
goto sels_end
incf model_type
movlw .4
subwf model_type,W
btfsc STATUS,C
clrf model_type
movf model_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_type2
call sram_to_ram
goto sels_end
set_rng_type:
btfss key_lock
goto sels_end
;; btfsc keynum_flag
;; goto sel_keynumber
;; btfsc prescale_flag
;; goto sel_prescale_num
incf rng_number
movlw .6
subwf rng_number,W
btfsc STATUS,C
clrf rng_number
movf rng_number,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_type3
call sram_to_ram
goto sels_end
;;sel_prescale_num:
;; incf prescale_num
;; movlw .3
;; subwf prescale_num,W
;; btfsc STATUS,C
;; clrf prescale_num
;; 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
;; goto sels_end
sel_keynumber:
bsf STATUS,RP0
movlw sel_num1
bcf STATUS,RP0
movwf r0
movf coursor,W
movwf acc
decf acc,W
btfsc _Z
goto sel_km02
addwf r0,W
; decf r0,W ;select address
movwf FSR
incf INDF
movf INDF,W
sublw .9
btfss STATUS,C
clrf INDF
goto sel_km01
sel_km02:
addwf r0,W
movwf FSR
incf INDF
movf INDF,W
sublw .1
btfss STATUS,C
clrf INDF
sel_km01:
bcf STATUS,RP0
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 sel_km03
movlw 40h
movwf display_buf
sel_km03:
goto sels_end
sel_psnumber:
bsf STATUS,RP0
movlw sel_num1
bcf STATUS,RP0
movwf r0
movf coursor,W
addwf r0
decf r0,W ;select address
movwf FSR
incf INDF
movf INDF,W
sublw .9
btfss STATUS,C
clrf INDF
movlw sel_num1 ;addr 0L
movwf r1
movlw display_buf
movwf r0
call ram_to_ram
bcf STATUS,RP0
goto sels_end
sel_calib_type:
btfsc calkeynum_flag
goto sel_calkeynum
incf calib_type
movlw .2
subwf calib_type,W
btfsc STATUS,C
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
goto sels_end
sel_calkeynum:
bsf STATUS,RP0
movlw sel_num1
bcf STATUS,RP0
movwf r0
movf coursor,W
movwf acc
decf acc,W
btfsc _Z
goto sel_cm02
addwf r0,W
movwf FSR
incf INDF
movf INDF,W
sublw .9
btfss STATUS,C
clrf INDF
goto sel_cm01
sel_cm02:
addwf r0,W
movwf FSR
incf INDF
movf INDF,W
sublw .1
btfss STATUS,C
clrf INDF
sel_cm01: ;
bcf STATUS,RP0
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 sel_cm03
movlw 40h
movwf display_buf
goto sels_end
sel_cm03:
sels_end:
bcf SELS_F
return
;
delay:
movwf r7 ;store in temp
movlw .20
Next1: movwf r6
Next: decfsz r6,F
goto Next
movlw .20
decfsz r7, F
goto Next1
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -