📄 key.asm
字号:
;********************************************************
; PROJECT NAME : nimh charger *
; Author : borg *
; VERSION : V0.0 *
; BODY : SN8P2704a *
; COMPILER : 1.99N *
; function : *
; input : *
; output : tempvolt1_l, tempvolt1_h *
; tempvolt2_l, tempvolt2_h *
; use register : data1, data2, tempvolt1_l, tempvolt1_h*
; tempvolt2_l, tempvolt2_h *
; use flag : dtemp1_f, dtemp2_f *
; run cycles : *
; *******************************************************
mnkey:
mov a,p1
mov led_p1_d,a
mov a,p1m
mov led_p1_m,a
mov a,p5
mov led_p5_d,a
mov a,p5m
mov led_p5_m,a
keyscan50:
MOV A,#00H
MOV P1,A
MOV A,#0FcH
MOV P1M,A
AND A,#10H
MOV P5M,A
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
keyscan60:
b0BTS0 KEY_DOWN_f
JMP keyscan10
MOV A,P5
AND A,#00001111b
mov key_buffer1,a
bmov key_buffer1.4,fp10
bmov key_buffer1.5,fp11
mov a,key_buffer1
CMPRS A,#03FH
JMP keyscan20
BCLR KEY_UP_f
BCLR KEY_DOWN_f
CLR key_TEMP
JMP KEYSCAN90
keyscan20:
BSET KEY_DOWN_f
MOV key_BUFFER,A
keyscan10:
b0bts0 key_up_f
jmp keyscan70
INCMS key_TEMP
NOP
MOV A,key_TEMP
CMPRS A,#20
JMP KEYSCAN90
clr key_temp
MOV A,P5
AND A,#00001111b
mov key_buffer1,a
bmov key_buffer1.4,fp10
bmov key_buffer1.5,fp11
mov a,key_buffer1
CMPRS A,key_BUFFER
JMP keyscan30
JMP keyscan40
keyscan30:
BCLR KEY_DOWN_f
JMP KEYSCAN90
keyscan40:
bset key_up_f
JMP KEYScan90
keyscan70:
mov a,p5
AND A,#00001111b
mov key_buffer1,a
bmov key_buffer1.4,fp10
bmov key_buffer1.5,fp11
mov a,key_buffer1
sub a,#03fh
b0bts1 fz
jmp keyscan90
bset buzzer_active_f
bset buzzer_active_sf
mov a,#1
mov buzzer_count,a
jmp keyscan80
keyscan80:
bclr key_down_f
bclr key_up_f
nop
keyscan801:
b0BTS0 KEY_buffer.0 ;KEY_POWER----P5.0
jmp keyscan800
bset POWER_key_f
JMP KEYSCAN90
keyscan800:
b0bts1 warning_f
jmp keyscan802
jmp keyscan90
keyscan802:
b0BTS0 KEY_buffer.1 ;KEY_FUNCTION----P5.1
jmp keyscan803
bset FUNCTION_key_f
JMP KEYSCAN806
keyscan803:
b0BTS0 KEY_buffer.2 ;KEY_FIREPOWER----P5.2
jmp keyscan804
bset FIREPOWER_key_f
JMP KEYSCAN806
keyscan804:
b0BTS0 KEY_buffer.3 ;KEY_TIMER----P5.3
JMP KEYSCAN805
bset TIMER_key_f
JMP KEYSCAN806
keyscan805:
b0bts0 key_buffer.4
jmp keyscan807
bset fire_down_f
jmp keyscan806
keyscan807:
b0bts0 key_buffer.5
jmp keyscan90
bset pwm_f
jmp keyscan806
keyscan806:
b0bts0 power_f
jmp keyscan90
bclr buzzer_active_f
bclr buzzer_active_sf
mov a,#1
mov buzzer_count,a
jmp keyscan90
keyscan90:
mov a,led_p1_d
mov p1,a
mov a,led_p1_m
mov p1m,a
mov a,led_p5_d
mov p5,a
mov a,led_p5_m
mov p5m,a
;------------------------------------------------
keyout:
nop
keyout10:
b0bts1 POWER_key_f
jmp keyout20
bclr power_key_f
call powerdw
jmp keyout90
keyout20:
b0bts1 FUNCTION_key_f
jmp keyout30
bclr function_key_f
call FUNCTIONdw
jmp keyout90
keyout30:
b0bts1 FIREPOWER_key_f
jmp keyout40
bclr FIREPOWER_key_f
call FIREPOWERdw
jmp keyout90
keyout40:
b0bts1 timer_key_f
jmp keyout50
bclr timer_key_f
call timerdw
jmp keyout90
keyout50:
b0bts1 fire_down_f
jmp keyout60
bclr fire_down_f
call firedown
jmp keyout90
keyout60:
b0bts1 pwm_f
jmp keyout90
bclr pwm_f
decms tc0r_copy
nop
mov a,tc0r_copy
mov tc0r,a
jmp keyout90
keyout90:
ret
;--------------------------------------------------
TIMERDW:
INCMS TCOUNTER ;TIMER----0 MINUTES
NOP
MOV A,#10
MUL A,TCOUNTER
MOV timer_MINUTE,A
MOV A,TCOUNTER
SUB A,#10
b0BTS1 FC
JMP TIMERDW80
CLR TCOUNTER
CLR timer_MINUTE
mov a,#60
mov tc1count2,a
jmp TIMERDW90
TIMERDW80:
bset timer_f
bset ftc1enb
mov a,#60
mov tc1count2,a
TIMERDW90:
ret
;------------------------------------------------
POWERDW:
NOTBIT POWER_f
b0bts1 power_f
jmp powerdw10
jmp powerdw20
powerdw10:
bclr first_f
bclr nopan_check_f
bclr ft0enb
clr t0count1
clr t0count2
jmp powerdw90
powerdw20:
bset nopan_check_f
bset ft0enb
jmp powerdw90
POWERDW90:
ret
;------------------------------------------------
FUNCTIONDW:
INCMS FCOUNTER
NOP
MOV A,FCOUNTER
CMPRS A,#5
JMP FUNCTIONDW90
CLR FCOUNTER
FUNCTIONDW90:
ret
;------------------------------------------------
FIREPOWERDW:
INCMS RCOUNTER
NOP
mov a,#092h
mov multiplicand_l,a
MOV A,#09h
mov multiplicand_h,a
mov a,rcounter
mov multiplier_l,a
clr multiplier_h
call mul2x2
mov a,result_l
add power_set_l,a
mov a,result_ml
adc power_set_h,a
MOV A,RCOUNTER
SUB A,#9
b0BTS1 FC
JMP FIREPOWERDW90
MOV A,#00H
MOV RCOUNTER,A
MOV A,#090h
mov power_set_l,a
mov a,#01ch
mov power_set_h,a
FIREPOWERDW90:
ret
;------------------------------------------------
firedown:
mov a,rcounter
b0bts0 fz
jmp firedown90
decms rcounter
nop
mov a,#092h
mov multiplicand_l,a
MOV A,#09h
mov multiplicand_h,a
mov a,rcounter
mov multiplier_l,a
clr multiplier_h
call mul2x2
mov a,result_l
add power_set_l,a
mov a,result_ml
adc power_set_h,a
firedown90:
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -