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

📄 test.asm

📁 采用红外传感器实现机器人的避障算法,并且用VC++实现演示的操作!里面有一些红外传感器的一些资料!
💻 ASM
字号:
;----------------constant definit-----------------------
   infrad    data  25h                     ; Send cord save
   Coderec   data  26h
   Psetect   data  27h
   Hrec      data  28h
   Psnb       equ   29h  ; 2ah,2bh
   codebit   bit   05h
   Psok      bit   06h
   Hint      bit   07h
   Fiveok    bit   08h
;--------------bit  definit-----------------------------
   iscode    bit   00h                     ; if iscode==1 then  send singal else send carrier
 isguidecode bit   01h                     ; guide code
  isozcode   bit   02h                     ; zero cord or one cord
  sendover   bit   03h                     ; ? send over
  t0run      bit   04h                     ; if t0run==1 then t0 run now
;--------------------------------------------------------
             org   0000h
            ajmp  Main
             org   0003h
             clr   ex0
             org   000bh
             jmp  T0int                    ;  T0 interupt entry
             org   0013h
             clr   ex1
             org   001bh
             clr   et1
             org   0023h
             clr   es
             org   002ch
 ;------------------------------------------------
 T0int:      clr   tr0                     ;  Stop  T0
             clr   iscode                  ;  send carrier next
             clr   T0run                   ;  T0 isn't run
             reti
;-------------------------------------------------
     Main:   mov   sp,  #60h               ;  stack point address
             acall    Sysini               ;  System initial
     loop:   acall    findcode             ;  which cord to send
             acall    Sendcar              ;  Send carrier
            ; jb    T0run,  $+3             ;
             jnb    T0run,  Nloop
             jnb     Hint,  Nloop_1
             acall  Calculate
             clr    Hint
 Nloop_1:    jb    T0run , $
      Nloop: jb   sendover,loop
             setb  Sendover
             setb  isguidecode
             jnb   Fiveok , loop
             clr   Fiveok
             acall  P1out
             jmp   loop
;-----------------Sysini---------------------------
  Sysini:    CLR   Hint
             clr    P1.3
             mov  tmod , #10010001b        ;  T1 gate and 16 bit; T0 16 bit
             setb  it1                     ;  high - low is efficiency
             mov   ie  , #10000010b        ;  enable t0 interupt
             setb  tr1                     ;  run T1
             mov   r7,   #43               ;  43 times
             mov   r6,   #05h              ;  8 bit
             clr   iscode                  ;  isn't code
             setb   isguidecode            ;  send guide code when begin
             setb    sendover              ;  isn't send over
             clr    T0run                   ;?????
             mov   infrad ,  #10100101b    ;  Send code
             mov   r5,   #5
             mov   Psetect,  #0feh
             mov   p1,  #00h
             clr   P3.5
             clr   P3.4
             clr   psok
             clr   Fiveok
             mov   r3,    #02h
             mov   Hrec ,  #00h
             mov   Psnb,  #00
             mov   Psnb+1,  #00
             mov   Psnb+2,  #00
             ret
;------------------Extrain------------------------
Extrain:    clr    tr1                     ;  Stop  T1
            clr    ie1                     ;  clr  Extra interupt flag
            mov    23h,  th1
            mov    24h,  tl1
            mov    th1,   #00h
            mov    tl1,  #00h
            Setb    Hint
            setb   tr1
            cpl    p1.3
            ;cpl    p1.1
            ret
;-----------------------------------------------------
  Sendcar:  jnb    iscode,  carrier            ; if iscode==0 then send carrier else send code
            jnb    isguidecode, isone
            clr    isguidecode
            clr    p1.3
            mov    th0,  #high(62535)
            mov    tl0,  #low(62535)
            setb   tr0
            setb   t0run
            jmp    Quit
     isone: jnb      isozcode,  zerocode
            clr    p1.3
            mov    th0,  #high(63850)
            mov    tl0,  #low(63850)
            setb   tr0
            setb   t0run
            jmp    Quit
  zerocode: clr    p1.3
            mov    th0,  #high(64575)
            mov    tl0,  #low(64575)
            setb   tr0
            setb   t0run
            jmp    Quit
 Carrier:   jnb     ie1,  nointe
            acall   extrain
 nointe:    nop
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            nop
            cpl    p1.3
            djnz   r7,    carrier
            mov    r7,    #43
            setb   iscode
            clr    P1.3
     Quit:  ret
 ;-----------------------------------------------------------
 Findcode:
            ;setb  sendover
            jnb  iscode, Findquit
            jb   isguidecode, Findquit
            mov  a, infrad
            rlc  a
            mov  isozcode,c
            mov  a, infrad
            rl   a
            mov infrad, a
            djnz  r6, findquit
            mov   infrad ,#10100101b
            mov   r6, #5
            clr    sendover
            djnz   r3,  Findquit
            Setb   Fiveok
            mov    r3,  #02h
            clr    PSok
            mov   a,  psetect
            rr    a
            mov   Psetect ,a
            jb   acc.7,  acc6_2
            setb  p1.7
            clr   p1.6
            clr   p1.5
            jmp   Findquit
    acc6_2: jb    acc.6 , acc5_2
            clr   p1.7
            setb   p1.6
            clr    p1.5
            jmp    Findquit
    acc5_2: clr    p1.7
            clr   p1.6
            setb   P1.5
            mov   psetect,  #0feh


 Findquit:       ret
;-----------------------------------------------------------
Calculate:  ;cpl     p1.4                      ;???
            mov   a, 23h
            cjne  a, #05h, $+3
            jc     Zcode
            cjne  a, #08h, $+3
            jnc    Gcode
            setb   Codebit
            cpl    P3.5                   ;????
            jmp    Codeturn
    Gcode:  cjne   a, #12, $+3
            jnc    Calquit
            cjne   a, #10, $+3
            cpl    p3.4
            jnc    Codini
                             ;????
            jmp    Calquit
    Zcode:  cjne   a,  #03h,  $+3
            jc     Calquit
            clr    codebit
            cpl    p3.2                       ;????
  Codeturn: mov  c, codebit
            mov  a,  Coderec
            rlc  a
            mov  Coderec, a
            djnz  r5,  Calquit
            mov   a, Coderec
            cjne  a,#00001010b, Clrp
            ;jb  acc.0 ,calquit
            ;cpl   p1.4
            inc    Hrec
            jnb    Fiveok, Calquit
           ; clr    Fiveok
           ;cpl    p1.4
            mov    a,  Hrec
            cjne   a,#2, $+3
            mov    Hrec, #00
            jc     clrp
            ;cjne   a, #2,$+3
            ;jc     Clrp
            setb    Psok
            jmp     Calquit
 Clrp:      clr     Psok
            jmp   Calquit
    codini: mov   r5,#4
            mov   Coderec, #00
            ;cpl   P1.2
 Calquit:   ret
;----------------------------------------------------
 P1out:
           mov   a,   Psetect
           rl    a
           ;jb   Psok ,  p1set
           jb    acc.0 ,acc6
           ;clr   p1.0
           mov    a,   Psnb
           anl    a,   #11000000b
           mov     b,  a
           mov    c   ,psok
           mov    a, Psnb
           rrc    a
           mov    Psnb,  a
           mov    c, Psok
           mov    a,  b
           jc     Stok
           cjne   a, #00h,p1oquit
           clr    P1.0
           jmp    P1oquit
    Stok:  cjne   a,  #0c0h, P1oquit
           Setb   P1.0
           jmp    P1oquit
   acc6:   jb    acc.7, acc5
          mov    a,   Psnb+1
           anl    a,   #11100000b
           mov     b,  a
           mov    c   ,psok
           mov    a, Psnb+1
           rrc    a
           mov    Psnb+1,  a
           mov    c, Psok
           mov    a,  b
           jc     Stok_1
           cjne   a, #00h,p1oquit
           clr    P1.1
           jmp    P1oquit
    Stok_1:  cjne   a,  #0e0h, P1oquit
           Setb   P1.1
           jmp    P1oquit
   acc5:   jb    acc.1,   P1oquit
           mov    a,   Psnb+2
           anl    a,   #11100000b
           mov     b,  a
           mov    c   ,psok
           mov    a, Psnb+2
           rrc    a
           mov    Psnb+2,  a
           mov    c, Psok
           mov    a,  b
           jc     Stok_2
           cjne   a, #00h,p1oquit
           clr    P1.2
           jmp    P1oquit
    Stok_2:  cjne   a,  #0e0h, P1oquit
           Setb   P1.2
           ;jmp    P1oquit
 P1oquit:
           ret
 end




⌨️ 快捷键说明

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