📄 cpp_a1018v02.asm
字号:
lcall delay_2s
;
mov r3,#3
_if_connection:
lcall delay_1s
lcall send_cmd_at
jnb f0,_if_connection
djnz r3,_if_connection
;
mov r3,#3
_if_model_ok:
lcall delay_1s
lcall send_cmd_model_id
jb f0,_model_is_ok
djnz r3,_if_model_ok
sjmp $
;
_model_is_ok:
lcall delay_1s
lcall send_cmd_atf
mov r3,#3
_if_having_card:
lcall delay_1s
lcall send_cmd_pin
jb f0,_having_card
djnz r3,_if_having_card
lcall disp_no_card
lcall write_1622_data
sjmp $
_having_card:
jb b.0,set_cid_disp
lcall disp_sim_locked
lcall write_1622_data
sjmp $
set_cid_disp:
lcall delay_1s
lcall send_cmd_cid
lcall delay_1s
mov rec_mode,#0
mov sl_rec_time,#0
mov send_mode,#3
get_time:
lcall send_cmd_process
lcall rec_cmd_process
mov a,send_mode
add a,rec_mode
jnz get_time
lcall display_total_missed
lcall display_date_and_clock
lcall display_rf
lcall display_vol
;/lcall set_icon_mobile
lcall write_1622_data
;
main:
lcall status_process
lcall event_det_process
lcall eeprom_process
lcall time_event_process
lcall send_cmd_process
lcall rec_cmd_process
lcall cid_process
lcall wr_1622_process
sjmp main
;
status_process:
mov dptr,#status_jmp
mov a,main_status
add a,main_status
add a,main_status
jmp @a+dptr
status_jmp:
ljmp standby_stu
ljmp ring_stu
ljmp view_in_stu
ljmp view_out_stu
ljmp view_missed_stu
ljmp program_stu
ljmp pre_dial_stu
ljmp talking_built_stu
ljmp talk_on_stu
ljmp talking_off_stu
;
;
;===========================================
; timer0 interrupt routine
;===========================================
;
int_t0:
push acc
push psw
mov tl0,#40h
mov th0,#0feh
setb rs0
clr rs1
;
gen_tone:
jnb tone_flag.f_tone,gen_tone_end
mov a,r0
jnz gen_tone_0
cpl tone_gen
jb tone_flag.f_h_tone,_1ms_dec
mov r0,#2
jnb tone_flag.f_d_tone,gen_tone_0
mov r0,#4
gen_tone_0:
dec r0
sjmp _1ms_dec
gen_tone_end:
mov r0,#0
;
_1ms_dec:
djnz r1,int_t0_ret
mov r1,#4
mov a,time_10ms
jnz _1ms_dec_1
mov a,sl_rec_time
anl a,#7fh
jz _1ms_dec_0
dec sl_rec_time
_1ms_dec_0:
setb time_flag.f_10ms
mov time_10ms,#10
_1ms_dec_1:
dec time_10ms
mov a,wr_1622_time
jz _1ms_dec_2
dec wr_1622_time
_1ms_dec_2:
mov a,dis_eepr_time
jz _1ms_dec_3
dec dis_eepr_time
_1ms_dec_3:
;
int_t0_ret:
pop psw
pop acc
reti
;
;===========================================
; serial interrupt routine
;===========================================
;
int_serial:
push acc
push psw
clr rs0
setb rs1
mov a,sbuf
clr ri
movx @r0,a
mov a,rec_mode
cjne a,#10,int_serial_0
mov sl_rec_time,#83h
sjmp int_serial_5
int_serial_0:
movx a,@r0
cjne a,#0ah,int_serial_5
dec r0
dec r0
movx a,@r0
cjne a,#'K',int_serial_1
sjmp int_serial_2
int_serial_1:
cjne a,#'R',int_serial_4
int_serial_2:
dec r0
movx a,@r0
cjne a,#'O',int_serial_3
mov sl_rec_time,#80h
int_serial_3:
inc r0
int_serial_4:
inc r0
inc r0
int_serial_5:
mov a,r0
xrl a,#8fh
jz int_serial_6
inc r0
int_serial_6:
pop psw
pop acc
reti
;
;
;
;===========================================
; standby process subroutine
;===========================================
;
standby_stu:
mov a,mobile_status
xrl a,#3
jnz standby_stu_0
lcall clr_all_number
lcall _write_1622_data
mov main_status,#1
mov r0,#music_ix
movx a,@r0
mov melody_val,a
mov tone_mode,#music_tone
ret
;
standby_stu_0:
jb hook_flag.f_hook_off,standby_stu_2
jb key_flag.f_prs,standby_stu_1
ret
standby_stu_1:
clr key_flag.f_prs
mov key_val1,key_val0
mov a,key_val1
cjne a,#80h,standby_stu_3
setb hf_flag.f_hf
standby_stu_2:
lcall clr_all_number
lcall set_icon_talking
lcall _write_1622_data
lcall get_dial_tone
mov dial_pnt_in,#0
mov disp_pnt,#0
mov main_status,#6
ret
standby_stu_3:
cjne a,#81h,standby_stu_4 ;func key
lcall get_key_tone
lcall clr_all_number
lcall set_icon_set
lcall _write_1622_data
mov set_mode,#0
mov main_status,#5
ret
standby_stu_4:
cjne a,#82h,standby_stu_5
mov r0,#total_in
movx a,@r0
jnz standby_stu_4_0
lcall get_error_tone
ret
standby_stu_4_0:
mov main_status,#2
mov b,#1
standby_stu_4_1:
mov view_nub,a
lcall set_eepr_mode
lcall get_key_tone
ret
standby_stu_5:
cjne a,#83h,standby_stu_6
mov r0,#total_out
movx a,@r0
jnz standby_stu_5_0
lcall get_error_tone
ret
standby_stu_5_0:
mov main_status,#3
mov b,#10
sjmp standby_stu_4_1
standby_stu_6:
xrl a,#84h
jz standby_stu_6_0
ret
standby_stu_6_0:
mov r0,#total_missed
movx a,@r0
jnz standby_stu_6_1
lcall get_error_tone
ret
standby_stu_6_1:
mov main_status,#4
mov b,#19
sjmp standby_stu_4_1
;
;
;===========================================
; ring process subroutine
;===========================================
;
ring_stu:
mov a,mobile_status
xrl a,#3
jz ring_stu_0
mov melody_val,#0
mov tone_mode,#music_tone
lcall clr_all_number
lcall _write_1622_data
clr cid_flag.f_rec_end
mov main_status,#0
ret
ring_stu_0:
jb hook_flag.f_hook_off,ring_stu_3
jb key_flag.f_prs,ring_stu_1
ret
ring_stu_1:
clr key_flag.f_prs
mov key_val1,key_val0
mov a,key_val1
xrl a,#80h
jz ring_stu_2
ret
ring_stu_2:
setb hf_flag.f_hf
ring_stu_3:
lcall get_key_tone
lcall clr_all_number
lcall set_icon_talking
lcall _write_1622_data
mov dial_pnt_in,#0
mov disp_pnt,#0
clr cid_flag.f_rec_end
mov b,#5
lcall get_send_mode
mov main_status,#7
mov built_time,#8
ret
;
;
;===========================================
; view subroutine
;===========================================
;
view_in_stu:
mov a,mobile_status
xrl a,#3
jnz view_in_0
view_to_ring:
lcall display_total_missed
lcall display_date_and_clock
lcall clr_all_number
lcall _write_1622_data
mov main_status,#1
mov r0,#music_ix
movx a,@r0
mov melody_val,a
mov tone_mode,#music_tone
clr f_del_hld
ret
view_in_0:
jb hook_flag.f_hook_off,view_in_4
jnb f_del_hld,view_in_1
ljmp view_in_20
view_in_1:
jb key_flag.f_prs,view_in_3
mov a,out_of_time
jz view_in_2
ret
view_in_2:
lcall get_error_tone
ajmp view_in_6_1
view_in_3:
clr key_flag.f_prs
mov key_val1,key_val0
mov a,key_val1
cjne a,#80h,view_in_5
setb hf_flag.f_hf
view_in_4:
lcall display_total_missed
lcall display_date_and_clock
lcall clr_all_number
lcall set_icon_talking
lcall _write_1622_data
lcall get_dial_tone
mov dial_pnt_in,#0
mov disp_pnt,#0
mov main_status,#6
clr f_del_hld
ret
view_in_5:
cjne a,#43h,view_in_6
setb f_del_hld
ret
view_in_6:
cjne a,#82h,view_in_7
lcall get_key_tone
view_in_6_1:
lcall display_total_missed
lcall display_date_and_clock
lcall clr_all_number
lcall _write_1622_data
mov main_status,#0
clr f_del_hld
ret
view_in_7:
cjne a,#40h,view_in_8
lcall get_key_tone
inc view_nub
mov r0,#total_in
movx a,@r0
cjne a,view_nub,view_in_7_0
nop
view_in_7_0:
jnc view_in_7_1
mov view_nub,#1
view_in_7_1:
mov b,#2
lcall set_eepr_mode
ret
view_in_8:
cjne a,#41h,view_in_9
lcall get_key_tone
dec view_nub
mov a,view_nub
jnz view_in_8_0
mov r0,#total_in
movx a,@r0
mov view_nub,a
view_in_8_0:
sjmp view_in_7_1
view_in_9:
xrl a,#42h
jz view_in_10
ret
;
view_in_10:
jnb cid_flag.f_err,view_in_10_0
lcall get_error_tone
ret
view_in_10_0:
mov r0,#eepr_buf
movx a,@r0
anl a,#0fh
mov r4,a
add a,#255-10
jnc view_in_11
lcall get_error_tone
ret
view_in_11:
lcall get_key_tone
mov dial_pnt_in,#0
mov a,main_status
xrl a,#3
jz view_in_16
mov a,r4
cjne a,#0ah,view_in_12
lcall add_ip_to_buf
sjmp view_in_16
view_in_12:
cjne a,#1,view_in_13
sjmp view_in_16
view_in_13:
cjne a,#9,view_in_14
sjmp view_in_16
view_in_14:
cjne a,#0bh,view_in_15
sjmp view_in_16
view_in_15:
lcall add_areacode_to_buf
view_in_16:
mov r0,#eepr_buf
view_in_16_0:
movx a,@r0
anl a,#0fh
jz view_in_18
mov r2,a
mov a,dial_pnt_in
rrc a
clr f0
jnc view_in_16_1
setb f0
view_in_16_1:
anl a,#0fh
add a,#rd_buf
mov r1,a
mov a,r2
jnb f0,view_in_16_2
swap a
view_in_16_2:
mov r2,a
mov a,@r1
jnb f0,view_in_16_3
anl a,#0fh
sjmp view_in_16_4
view_in_16_3:
anl a,#0f0h
view_in_16_4:
orl a,r2
mov @r1,a
inc dial_pnt_in
mov a,dial_pnt_in
cjne a,#16,view_in_17
ljmp view_in_18
view_in_17:
movx a,@r0
swap a
anl a,#0fh
jz view_in_18
mov r2,a
mov a,dial_pnt_in
rrc a
clr f0
jnc view_in_17_0
setb f0
view_in_17_0:
anl a,#0fh
add a,#rd_buf
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -