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

📄 cpp_a1018v02.asm

📁 这是本人用GSM手机模组及51系列MCU做的无线固话程序,有批量生产
💻 ASM
📖 第 1 页 / 共 5 页
字号:
       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 + -