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

📄 cpp_a1018v02.asm

📁 这是本人用GSM手机模组及51系列MCU做的无线固话程序,有批量生产
💻 ASM
📖 第 1 页 / 共 5 页
字号:
       add     a,#rd_buf
       mov     r0,a
       
       mov     a,@r0
       jnb     f0,pre_dial_4_5
       swap    a
pre_dial_4_5:
       anl     a,#0fh
       mov     @r1,a
       
       inc     r1
       inc     r2
       mov     a,r2
       cjne    a,dial_pnt_in,pre_dial_4_3
       
       lcall   display_number
       lcall   _write_1622_data
       ret
;        
pre_dial_5:
       cjne    a,#42h,pre_dial_10
       mov     a,dial_pnt_in
       jz      pre_dial_5_0
       ret
pre_dial_5_0:
       mov     a,rd_pnt_in
       jnz     pre_dial_5_1
       ret
pre_dial_5_1:
       add     a,#256-3
       jc      pre_dial_5_2
       ret
pre_dial_5_2:
       lcall   get_key_tone
       
       mov     dial_pnt_in,rd_pnt_in
pre_dial_5_2_0:       
       mov     b,#8
       lcall   get_send_mode
       
       mov     built_time,#20
       mov     main_status,#7
pre_dial_5_3:             
       mov     r2,#0 
       mov     disp_pnt,dial_pnt_in
       mov     a,dial_pnt_in
       add     a,#255-14
       jnc     pre_dial_5_4
       
       mov     disp_pnt,#14
       mov     a,dial_pnt_in
       clr     c
       subb    a,#14
       mov     r2,a
pre_dial_5_4:
       mov     r0,#disp_buf       
pre_dial_5_5:
       mov     a,r2
       rrc     a
       
       clr     f0
       jnc     pre_dial_5_6
       setb    f0
pre_dial_5_6:
       anl     a,#0fh
       add     a,#rd_buf
       mov     r1,a
       
       mov     a,@r1
       jnb     f0,pre_dial_5_7
       swap    a
pre_dial_5_7:
       anl     a,#0fh
       mov     @r0,a
       inc     r0
       inc     r2
       mov     a,r2
       cjne    a,dial_pnt_in,pre_dial_5_5   
       
       lcall   display_number
       lcall   _write_1622_data
            
       ret                             
;
pre_dial_10:                           
       add     a,#0ffh-0ch
       jnc     pre_dial_11
       ret
pre_dial_11:
       lcall   get_key_or_play_tone
              
       mov     a,dial_pnt_in
       jz      pre_dial_12
       
       cjne    a,#20h,pre_dial_13
       
       mov     r2,#1
pre_dial_11_0:       
       mov     a,r2
       rrc     a
       clr     f0
       jnc     pre_dial_11_1
       setb    f0
pre_dial_11_1:
       anl     a,#0fh
       add     a,#rd_buf
       mov     r0,a
       
       mov     a,@r0
       jnb     f0,pre_dial_11_2
       swap    a
pre_dial_11_2:
       anl     a,#0fh
       mov     r1,a
       
       dec     r2
       
       mov     a,r2
       rrc     a
       clr     f0
       jnc     pre_dial_11_3
       setb    f0
pre_dial_11_3:
       anl     a,#0fh
       add     a,#rd_buf
       mov     r0,a       
       
       mov     a,r1
       jnb     f0,pre_dial_11_4
       swap    a
pre_dial_11_4:
       mov     r1,a
                  
       mov     a,@r0
       jnb     f0,pre_dial_11_5
       anl     a,#0fh
       sjmp    pre_dial_11_6
pre_dial_11_5:
       anl     a,#0f0h
pre_dial_11_6:
       orl     a,r1
       mov     @r0,a
       
       inc     r2
       mov     a,r2
       cjne    a,#1fh,pre_dial_11_7
       dec     dial_pnt_in 
       sjmp    pre_dial_13             
pre_dial_11_7:
       inc     r2              
       ajmp    pre_dial_11_0
;
pre_dial_12:
       mov     a,key_val1
       cjne    a,#0ah,pre_dial_12_0
       
       lcall   add_ip_to_buf
       sjmp    pre_dial_13
pre_dial_12_0:       
       cjne    a,#1,pre_dial_12_1
       sjmp    pre_dial_13
pre_dial_12_1:
       cjne    a,#9,pre_dial_12_2
       sjmp    pre_dial_13    
pre_dial_12_2:
       cjne    a,#0bh,pre_dial_12_3
       sjmp    pre_dial_13
pre_dial_12_3: 
       lcall   add_areacode_to_buf    
;
pre_dial_13:
       mov     a,dial_pnt_in
       rrc     a
       clr     f0
       jnc     pre_dial_13_0
       setb    f0
pre_dial_13_0:
       anl     a,#0fh
       add     a,#rd_buf
       mov     r0,a
       
       mov     a,@r0
       jb      f0,pre_dial_13_1
       anl     a,#0f0h
       sjmp    pre_dial_13_2
pre_dial_13_1:
       anl     a,#0fh
pre_dial_13_2:
       mov     r1,a
       
       mov     a,key_val1
       jnb     f0,pre_dial_13_3
       swap    a
pre_dial_13_3:
       orl     a,r1
       mov     @r0,a
       inc     dial_pnt_in
       mov     rd_pnt_in,dial_pnt_in
       
       ajmp    pre_dial_5_3       
;       
pre_dial_20:
       mov     a,out_of_time
       jz      pre_dial_21
       ret
pre_dial_21:
       ajmp    pre_dial_3_0                    
;
;
;===========================================
;  judge if rf talking subroutine
;===========================================
;
talking_built_stu:
       jb      hook_flag.f_hook_off,built_stu_0
       jnb     hf_flag.f_hf,built_stu_5
built_stu_0:
       jnb     key_flag.f_prs,built_stu_1

       clr     key_flag.f_prs
       mov     key_val1,key_val0
       
       mov     a,key_val1
       cjne    a,#80h,built_stu_1
       
       cpl     hf_flag.f_hf
       lcall   get_key_tone
       ret
built_stu_1:
       mov     a,mobile_status
       xrl     a,#4
       jnz     built_stu_2
       
       mov     talking_min,#0
       mov     talking_sec,#0
       mov     talking_hour,#0
       
       lcall   display_talking_time
       lcall   _write_1622_data
             
       mov     main_status,#8
       ret
built_stu_2:
       xrl     a,#4
       xrl     a,#3
       jnz     built_stu_3
       ret
built_stu_3:       
       mov     a,built_time
       jz      built_stu_4
       ret
built_stu_4:
       clr     hf_flag.f_hf
built_stu_5:
       lcall   clr_icon_talking
       lcall   display_total_missed
       lcall   display_date_and_clock
       lcall   clr_all_number
       lcall   _write_1622_data
        
       mov     b,#6
       lcall   get_send_mode
       
       mov     main_status,#9
       mov     tone_mode,#0
       ret      
;
;
;===========================================
;  talking on subroutine
;===========================================
;
talk_on_stu:
       jb      hook_flag.f_hook_off,talk_on_0
       jnb     hf_flag.f_hf,talk_on_4
talk_on_0:
       jnb     key_flag.f_prs,talk_on_2

       clr     key_flag.f_prs
       mov     key_val1,key_val0
       
       mov     a,key_val1
       cjne    a,#80h,talk_on_1
       
       cpl     hf_flag.f_hf
       lcall   get_key_tone
       ret
talk_on_1:
       add     a,#0ffh-0ch
       jc      talk_on_2
       
       lcall   get_key_or_play_tone
       
       mov     a,key_val1
       mov     send_data,a
       mov     b,#9
       lcall   get_send_mode
       
       ret
talk_on_2:                          
       mov     a,mobile_status
       xrl     a,#4
       jnz     talk_on_3
       ret
talk_on_3:
       clr     hf_flag.f_hf
talk_on_4:       
       sjmp    built_stu_5       
;
;
;===========================================
; talking off subroutine
;===========================================
;
talking_off_stu:
       clr     key_flag.f_prs
       
       mov     a,send_mode
       add     a,send_mode1
       add     a,rec_mode
       jnz     talking_off_0
       
       mov     main_status,#0
       mov     mobile_status,#0
talking_off_0:                      
       ret                                                                                                                                                                    
;
;
;
;===========================================
; detection event process subroutine
;===========================================
;
event_det_process:
       jb      time_flag.f_10ms,det_event_0
       ret
det_event_0:
       clr     time_flag.f_10ms
;
key_det:
       anl     p0,#7
       nop
       mov     a,p2
       anl     a,#0f8h
       cjne    a,#0f8h,key_dt_00
       
       clr     key_flag.f_ky0
       clr     key_flag.f_ky1
       clr     key_flag.f_hld
       mov     key_tmp,#0
       ljmp    key_dt_13     
;
key_dt_00:
       jb      key_flag.f_hld,key_dt_13
       
       xch     a,key_tmp
       xrl     a,key_tmp
       jnz     key_dt_13
    
       jb      key_flag.f_ky0,key_dt_01
       setb    key_flag.f_ky0
       sjmp    key_dt_13
key_dt_01:
       jb      key_flag.f_ky1,key_dt_02
       setb    key_flag.f_ky1
       sjmp    key_dt_13
key_dt_02:
       jb      key_flag.f_prs,key_dt_13
;   
key_dt_10:       
       setb    key_flag.f_hld
       
       clr     key_led
       mov     key_led_8s,#16
       
       mov     key_val0,#0
            
       orl     p0,#78h
       mov     key_tmp,#78h                                                                        
key_dt_11:       
       nop
       nop
       nop       
       mov     a,p2
       anl     a,#0f8h   
       cjne    a,#0f8h,key_dt_12
       
       jnb     p0.3,key_dt_13
       
       mov     a,#5
       add     a,key_val0
       mov     key_val0,a
       
       mov     a,key_tmp
       setb    c
       rrc     a
       anl     a,#0f8h
       mov     key_tmp,a
       anl     p0,#7
       orl     p0,a
       
       sjmp    key_dt_11
key_dt_12:
       rrc     a
       rrc     a
       rrc     a
       anl     a,#1fh
       
       mov     dptr,#key_table_0
       movc    a,@a+dptr
       jz      key_dt_13
       
       dec     a
       add     a,key_val0
       mov     dptr,#key_table_1
       movc    a,@a+dptr
       mov     key_val0,a
       
       setb    key_flag.f_prs
       mov     key_hld_time,#255
       mov     out_of_time,#30
key_dt_13:
       orl     p0,#0f8h
       ajmp    hook_sw_det        
;
key_table_0:
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h 
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      01h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      00h
       db      02h
       db      00h
       db      00h
       db      00h
       db      03h
       db      00h
       db      04h
       db      05h
       db      00h       
;
key_table_1:
       db      01h
       db      02h
       db      03h
       db      00h
       db      44h   ;send
       db      04h
       db      05h
       db      06h
       db      00h
       db      81h   ;func 
       db      07h
       db      08h
       db      09h
       db      00h
       db      43h   ;clr
       db      0bh   
       db      0ah  
       db      0ch   
       db      80h   ;hf
       db      42h   ;rd
       db      83h   ;out
       db      84h   ;missed
       db      40h   ;up
       db      82h   ;in
       db      41h   ;down
;
hook_sw_det:
       jb      sw_hook,hook_sw_det_1
       
       jb      hook_flag.f_hook_off,hook_sw_det_ret
       jnb     hook_flag.f_off_1,hook_sw_det_0
       setb    hook_flag.f_hook_off
       clr     hf_flag.f_hf
       sjmp    hook_sw_det_ret
hook_sw_det_0:               
       setb    hook_flag.f_off_1
       sjmp    hook_sw_det_ret
hook_sw_det_1:
       jb      hook_flag.f_off_1,hook_sw_det_2
       clr     hook_flag.f_hook_off
       sjmp    hook_sw_det_ret
hook_sw_det_2:
       clr     hook_flag.f_off_1
hook_sw_det_ret:              
;
led_job:
       mov     a,main_status
       jnz     led_job_0
       mov     a,key_led_8s
       jnz     led_job_1
       setb    back_led
       sjmp    set_cs34119
led_job_0:
       clr     back_led
led_job_1:       
;
set_cs34119:
       mov     a,main_status
       cjne    a,#1,set_cs34119_0
       sjmp    set_cs34119_1
set_cs34119_0:
       add     a,#256-6
       jc      set_cs34119_1
       
       mov     a,tone_mode
       jz      set_cs34119_2
set_cs34119_1:       
       clr     cs_34119
       sjmp    tone_job
set_cs34119_2:
       setb   cs_34119               
;
tone_job:
       mov     dptr,#tone_job_jmp
       mov     a,tone_mode
       clr     c
       rlc     a
       anl     a,#0fh
       
       jmp     @a+dptr
;       
tone_job_jmp:
       ajmp    tone_md0
       ajmp    tone_md1
       ajmp    tone_md2
       ajmp    tone_md3
       ajmp    tone_md4
       ajmp    tone_md5
       ajmp    tone_md6
       ajmp    tone_md7
;
tone_md0:
       clr     tone_flag.f_tone
       clr     tone_flag.f_h_tone
       clr     tone_flag.f_d_tone
       clr     tone_gen
       
       mov     a,melody_val
       jz      tone_md0_0
       add     a,#0ffh-14h
       jc      tone_md0_0
       mov     melody_val,#0
 

⌨️ 快捷键说明

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