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

📄 车载终端汇编程序.asm

📁 车载终端汇编程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
            movx @dptr,a
vector:mov dpl,r1  
       mov dph,r2
       inc dptr
       inc dptr
do_vector:mov r0,#00h
          movx a,@dptr
          inc dptr
          cjne a,#2ch,do_vector ;找到速度段
vector0:movx a,@dptr
        clr c     ;判断是不是逗号
        subb a,#2ch 
        jz vector11
        clr c    ;把ascii码变成数字  
        movx a,@dptr
        subb a,#30h  
        jz vector11 
        mov r0,a  ;数据第1位不是零
        mov 73h,a     ;把数据放入(73h),以便进行校验码的计算
        inc dptr
        movx a,@dptr
        clr c     ;判断是不是句号
        subb a,#2eh 
        jz vector1
        clr c    ;把ascii码变成数字  
        movx a,@dptr
        mov 74h,a     ;把数据放入(74h),以便进行校验码的计算
        subb a,#30h 
        mov b,a    ;数据第2位进行加法
        clr a    
        mov a,r0
        mov r0,b
        mov b,#0ah
        mul ab
        add a,r0
        mov r0,a
        inc dptr
        movx a,@dptr
        clr c     ;判断是不是句号
        subb a,#2eh 
        jz vector1
        clr c    ;把ascii码变成数字  
        movx a,@dptr
        mov 75h,a     ;把数据放入(75h),以便进行校验码的计算
        subb a,#30h 
        mov b,a    ;数据第3位进行加法
        clr a    
        mov a,r0
        mov r0,b
        mov b,#0ah
        mul ab
        add a,r0
        mov r0,a
        inc dptr     ;将速度的小数位数据放入(76h),以便进行校验码的计算
        inc dptr
        movx a,@dptr
        mov 76h,a 
        dec dpl
        dec dpl   
        sjmp vector1
vector11:mov 73h,#00h     ;把数据放入(73h),以便进行校验码的计算 
         mov 74h,#00h     ;把数据放入(74h),以便进行校验码的计算
vector1:mov a,r0
        cjne a,#80h,vector2  
        mov r1,dpl     ;结果为80h时,赋值#7eh,80h对Hbit的影响
        mov r2,dph
        mov dptr,#0107h
        movx a,@dptr
        add a,#01h      
        movx @dptr,a
        mov dpl,r1
        mov dph,r2
        mov a ,#7eh 
vector2:jnz vector3   
        mov r1,dpl     ;结果为00h时,赋值#7fh,80h对Hbit的影响
        mov r2,dph
        mov dptr,#0107h
        movx a,@dptr
        add a,#01h      
        movx @dptr,a
        mov dpl,r1
        mov dph,r2
        mov a ,#7fh 
vector3:mov r1,dpl
        mov r2,dph
        mov dptr,#0110h
        movx @dptr,a        
direct:mov dpl,r1  
       mov dph,r2
do_direct:movx a,@dptr
          inc dptr
          cjne a,#2ch,do_direct ;找到方向段
direct0:mov r0,#00h
        mov r3,#00h
        movx a,@dptr
        clr c     ;判断是不是逗号
        subb a,#2ch 
        jz direct1        
        clr c    ;把ascii码变成数字  
        movx a,@dptr
        subb a,#30h  
        jz direct1 
        mov r0,a  ;数据第1位不是零
        inc dptr
        movx a,@dptr
        clr c     ;判断是不是句号
        subb a,#2eh 
        jz direct1
        clr c    ;把ascii码变成数字  
        movx a,@dptr
        subb a,#30h 
        mov b,a    ;数据第2位进行加法
        clr a    
        mov a,r0
        mov r0,b
        mov b,#0ah
        mul ab
        add a,r0
        mov r0,a
        inc dptr
        movx a,@dptr
        clr c     ;判断是不是句号
        subb a,#2eh 
        jz direct1
        clr c    ;把ascii码变成数字  
        movx a,@dptr
        subb a,#30h 
        mov b,a    ;数据第3位进行加法
        clr a    
        mov a,r0
        mov r0,b
        mov b,#0ah
        mul ab
        add a,r0
        mov r0,a
        mov a,b
        jz direct1
        mov r3,#55h
        mov a,r0
        inc a
        mov r0,a
direct1:mov a,r0
        mov b,#03h
        div ab
        inc a
        add a,r3
        mov r1,dpl
        mov r2,dph
        mov dptr,#0111h
        movx @dptr,a
day:mov dpl,r1  
    mov dph,r2         
do_day:movx a,@dptr
       inc dptr
       cjne a,#2ch,do_day ;找到日期段        
       mov r0,#00h
date:movx a,@dptr
     clr c
     subb a,#30h  ;把十位ascii码变成数字
     mov b,#0ah   ;十位乘以10
     mul ab
     mov r0,a   ;把结果放入r0
     inc dptr
     movx a,@dptr
     clr c
     subb a,#30h  ;把个位ascii码变成数字  
     add a,r0
     mov r1,dpl
     mov r2,dph      
     mov dptr, #0103h
     movx @dptr,a
month:mov dpl,r1  
      mov dph,r2
      inc dptr
      movx a,@dptr
      clr c
      subb a,#30h  ;把十位ascii码变成数字
      mov b,#0ah   ;十位乘以10
      mul ab
      mov r0,a   ;把结果放入r0
      inc dptr
      movx a,@dptr
      clr c
      subb a,#30h  ;把个位ascii码变成数字  
      add a,r0 
      mov r1,dpl
      mov r2,dph      
      mov dptr, #0102h
      movx @dptr,a
years:mov dpl,r1  
      mov dph,r2
      inc dptr
      movx a,@dptr
      clr c
      subb a,#30h  ;把十位ascii码变成数字
      mov b,#0ah   ;十位乘以10
      mul ab
      mov r0,a   ;把结果放入r0
      inc dptr
      movx a,@dptr
      clr c
      subb a,#30h  ;把个位ascii码变成数字  
      add a,r0 
      mov r1,dpl
      mov r2,dph      
      mov dptr, #0101h
      movx @dptr,a
number_ver:mov a,#42h
           mov dptr,#0100h
           movx @dptr,a      
check_code:mov r0,#62h
           mov r1,#13h
           clr a
check_code1:add a,@r0
            inc r0
            djnz r1,check_code1
            mov dptr,#0112h
            movx @dptr,a
            mov dptr,#0110h
            movx a,@dptr
            inc a
            jz check_code2
            mov dptr,#0112h
            movx a,@dptr
            add a,75h
            add a,76h
            movx@dptr,a
check_code2:ret
      
      
      
time:mov r0,#064h    ;准许读取gps信息一百次
     mov ie,#90h
     mov ip,#10h
time1:mov r1,#0c8h    ;每半个小时读取gps信息一次 
time2:mov r2,#0b4h
time3:jnb tf0,time3
      clr tf0
      djnz r1,time3     
      djnz r2,time2
      mov 60h,r0     ;将r0的数据进行堆栈保护
      push 60h
      lcall r_gps
      lcall do_gps
      pop 60h
      mov r0,60h
      djnz r0,time1
      sjmp $

save_sm:mov r0,#00h
        mov r1,#00h
save_sm1:mov dptr,#00b0h
         mov a,dpl
         add a,r0
         mov dpl,a
         movx a,@dptr
         mov b,a
         inc r0
         mov dptr,#0150h
         mov a,dpl
         add a,r1
         inc r1
         mov dpl,a
         mov a,b
         movx @dptr,a
         cjne a,#0dh,save_sm1      
do_sm0:mov dptr,#00b0h     ;将收到的短信进行解码
       clr c
do_sm01:movx a,@dptr
       cjne a,#0dh,do_sm02   ;判断是否为回车键
       sjmp do_sm1
do_sm02:cjne a,#2ch,do_sm03   
       mov a,#3eh            ;为逗号进行处理
       sjmp trans0
do_sm03:cjne a,#2eh,do_sm04  
       mov a,#3fh             ;为句号进行处理
       sjmp trans0
do_sm04:cjne a,#3ah,do_sm05
do_sm05:jnc do_sm06       
       clr c
       subb a,#30h          ;为数字进行处理  
       sjmp trans0
do_sm06:cjne a,#5bh,do_sm07
do_sm07:jnc do_sm08
       clr c
       subb a,#37h        ;为大写字母进行处理       
       sjmp trans0
do_sm08:subb a,#3dh         ;为小写字母进行处理  
trans0:movx @dptr,a
       inc dptr
       sjmp do_sm01   
do_sm1:mov a,dpl       
       subb a,#0b1h
       mov r0,a             ;字节数
       mov dptr,#00b0h
do_sm11:movx a,@dptr    ;将字节的低三位和高三位交换
       rl a
       mov r1,#61h
       mov 61h,#00h
       xchd a,@r1
       swap a
       mov b,a
       mov a,@r1
       rl a
       rl a
       add a,b
       movx @dptr,a
       inc dptr
       djnz r0,do_sm11
do_sm2:mov a,dpl       
       subb a,#0b0h
       mov dptr,#00b0h
       mov r0,a             ;字节数
       mov r1,a

do_sm21:movx a,@dptr         ; 6 to 7 转换
        rl a
        movx @dptr,a
        inc dptr 
        movx a,@dptr
        mov c,acc.5
        clr acc.5
        movx @dptr,a
        dec dpl
        movx a,@dptr
        mov acc.0,c
        movx @dptr,a
        inc dptr
        djnz r0,do_sm21
        dec r1 
        mov a,r1
        mov r0,a
        mov a,dpl
        clr c
        subb a,r0
        mov dpl,a
        cjne r1,#01h,do_sm21
;以下只是初步的程序,功能需要进一步完善和添加
judge_tpye:mov dptr,#00b4h
           movx a,@dptr
tpye1:cjne a,#01h,tpye2    ;对要求类型进行判断
      inc dptr
      movx a,@dptr
      cjne a,#11h,tpye2
      sjmp tran_type0151   
tpye2:reti
tran_type0151:mov a,#51h
              mov dptr,#00b5h
              movx @dptr,a
link_data0:mov dptr,#00b0h    ;将(00b0)到(00c1)的数据和(0010)的数据通过(00ff)连接
           mov r1,#11h
           mov r0,#3eh
link_data1:movx a,@dptr     
           mov b,a
           mov a,dpl
           add a,r0
           mov dpl,a
           mov a,b
           movx @dptr,a
           mov a,dpl
           clr c
           subb a,r0
           mov dpl,a
           inc dptr
           djnz r1,link_data1
link_data2:mov dptr,#00ffh
           mov a,#01h
           movx @dptr,a           
           mov r0,#00h
           mov r1,#24h
           mov dptr,#00eeh   ;求校验码               
           movx a,@dptr
link_data3:mov b,a
           inc dptr
           movx a,@dptr
           add a,b
           jnc link_data4
           inc r0
link_data4:djnz r1,link_data3
           add a,r0
           jbc acc.7,link_data5                      
link_data5:cjne a,#00h,link_data6
           mov a,#0ffh
link_data6:mov dptr,#0113h
           movx @dptr,a          
do_7_6_0:mov dptr,#00eeh         ;7/6编码
         mov r0,#2dh
         mov r1,#2dh
         mov r2,#00h
         mov r3,#00h
do_7_6_10:clr c           ;把七位ascii变成六位代码
do_7_6_11:movx a,@dptr
         rl a
         rrc a
         rrc a
         movx @dptr,a
         inc dptr
         djnz r0,do_7_6_11
         mov a,r1
         mov r0,a
         inc r2
         mov a,r2
         mov r3,a
         mov dptr,#00eeh
do_7_6_12:inc dptr 
          djnz r3,do_7_6_12
          djnz r1,do_7_6_10
do_7_6_20:mov a,dpl
          add a,#12h
          mov r0,a
          mov dptr,#00eeh
do_7_6_21:movx a,@dptr    ;将字节的低三位和高三位交换
          rl a
          mov r1,#61h
          mov 61h,#00h
          xchd a,@r1
          swap a
          mov b,a
          mov a,@r1
          rl a
          rl a
          add a,b
          movx @dptr,a
          inc dptr
          djnz r0,do_7_6_21
do_7_6_3:mov a,dpl
         add a,#12h
         mov r0,a          
         mov dptr,#00eeh
do_7_6_30:movx a,@dptr
          clr c
          cjne a,#09,do_7_6_31
          add a,#30h
          sjmp end_7_6
do_7_6_31:jnc do_7_6_32
          add a,#30h
          sjmp end_7_6
do_7_6_32:cjne a,#23h,do_7_6_33
          add a,#37h
          sjmp end_7_6          
do_7_6_33:jnc do_7_6_34
          add a,#37h
          sjmp end_7_6
do_7_6_34:cjne a,#3dh,do_7_6_35
          add a,#3dh
          sjmp end_7_6
do_7_6_35:jnc do_7_6_36                                               
          add a,#3dh
          sjmp end_7_6
do_7_6_36:cjne a,#3eh,do_7_6_37
          subb a,#12h
          sjmp end_7_6
do_7_6_37:cjne a,#3fh,end_7_6                                               
          add a,#11h
end_7_6:movx @dptr,a
        inc dptr
        djnz r0,do_7_6_30                 
trans_sm0:mov dptr,#00bch     ;将at+cmgs="和电话号码连接
          mov a,#61h
          movx @dptr,a
          inc dptr
          mov a,#74h
          movx @dptr,a
         inc dptr
         mov a,#2bh
         movx @dptr,a
         inc dptr
         mov a,#63h
         movx @dptr,a
         inc dptr
         mov a,#6dh
         movx @dptr,a
         inc dptr
         mov a,#67h
         movx @dptr,a
         inc dptr
         mov a,#73h
         movx @dptr,a
         inc dptr
         mov a,#3dh
         movx @dptr,a
         inc dptr
         mov a,#22h
         movx @dptr,a
         mov dptr,#00d0h
         mov a,#22h
         movx @dptr,a
         inc dptr
         mov a,#0dh
         movx @dptr,a 
trans_sm1:mov dptr,#00bch      ;发送at+cmgs="   "
          movx a,@dptr
          mov sbuf,a
          mov r0,#16h
trans_sm2:jnb ti,trans_sm2
          inc dptr
          clr ti
          movx a,@dptr
          mov sbuf,a
          djnz r0,trans_sm2
trans_sm3:jnb ti,trans_sm3 
          clr ti
          mov ie,#90h
          reti       
trans_sm4:mov r0,#64h
          mov r1,#20h
trans_sm40:djnz r0,trans_sm40       ;发送短信内容
           mov r0,#64h
           djnz r1,trans_sm40
           clr ri
trans_sm41:mov dptr,#00eeh
           movx a,@dptr
           mov sbuf,a
           mov r0,#2dh
trans_sm42:jnb ti,trans_sm42
           inc dptr
           clr ti
           movx a,@dptr
           mov sbuf,a
           djnz r0,trans_sm42                     
trans_sm43:jnb ti,trans_sm43            
           clr ti
           mov a,#1ah
           mov sbuf,a
trans_sm44:jnb ti,trans_sm44            
           clr ti
           mov ie,#90h
           reti           

end

⌨️ 快捷键说明

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