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

📄 mpu.asm

📁 scara机器人的一种简单的实现方法
💻 ASM
📖 第 1 页 / 共 4 页
字号:
                acall   sspdtest
                ajmp    serial_exit

serial_b:       jnb     pc_b_flag,  serial_c 
                clr     pc_b_flag
                clr     sspd_adsmpl          ; sample 4,5,6 detectors

                mov     dspbuffx0, #_ledhiden
                mov     dspbuffx1, #_ledhiden
                mov     dspbuffx2, #_ledhiden
                mov     dspbuffx3, #_ledhiden
                mov     dspbuffy3, #_ledhiden
                mov     dspbuffy2, #_ledhiden
                mov     dspbuffy1, #_ledhiden
                mov     dspbuffy0, #_b
                lcall   led

                acall   sspdtest
                ajmp    serial_exit

serial_c:       jnb     pc_c_flag,  serial_d 
                clr     pc_c_flag

                mov     dspbuffx0, #_ledhiden
                mov     dspbuffx1, #_ledhiden
                mov     dspbuffx2, #_ledhiden
                mov     dspbuffx3, #_ledhiden
                mov     dspbuffy3, #_ledhiden
                mov     dspbuffy2, #_ledhiden
                mov     dspbuffy1, #_ledhiden
                mov     dspbuffy0, #_c
                lcall   led

                acall   ad_data_treat
                acall   send_data
                jb      tderr_flag, rs_err_treat
                ajmp    serial_exit

serial_d:       jnb     pc_d_flag,  serial_e 
                clr     pc_d_flag
                lcall   speedup_cp
                ajmp    serial_exit

serial_e:       jnb     pc_e_flag,  serial_f
                clr     pc_e_flag
                lcall   slowdown_cp
                ajmp    serial_exit

serial_f:       jnb     pc_f_flag,  serial_exit
                clr     pc_f_flag
                setb    ledflag
                ajmp    serial_exit

rs_err_treat:   acall   error_treat
serial_exit:    setb    ea
                reti

;==================================================================
;name: error_treat
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
error_treat:  push    psw
              jnb     rderr_flag, td_err_treat
              clr     rderr_flag
              mov     dspbuffx0, #_d
              mov     dspbuffx1, #_rs
              mov     dspbuffx2, #_ledhiden
              mov     dspbuffx3, #_ledhiden
              mov     dspbuffy0, #_rs
              mov     dspbuffy1, #_rs
              mov     dspbuffy2, #_E
              mov     dspbuffy3, #_ledhiden
              setb    dsp_xflag
              setb    dsp_yflag
              lcall   led
              sjmp    err_t_exit
td_err_treat: jnb     tderr_flag, err_t_exit
              clr     tderr_flag
              mov     dspbuffx0, #_d
              mov     dspbuffx1, #_S
              mov     dspbuffx2, #_ledhiden
              mov     dspbuffx3, #_ledhiden
              mov     dspbuffy0, #_rs
              mov     dspbuffy1, #_rs
              mov     dspbuffy2, #_E
              mov     dspbuffy3, #_ledhiden
              setb    dsp_xflag
              setb    dsp_yflag
              lcall   led
err_t_exit:   push    psw
              ret

;==================================================================
;name: read_rsc_port
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
read_rsc_port:  push    psw
                push    r2
                mov     r2,  #0
read_point:     jnb     ri,  read_count
                clr     ri
                mov     rscbuffr,  sbuf      ; read serial port
                setb    tb8
                mov     sbuf, rscbuffr       ; send back to serial port
                jnb     ti,  $
                clr     ti
                inc     r2
                cjne    r2,  #5,  read_point
                sjmp    read_err
read_count:     cjne    r2,  #0,  read_exit
                sjmp    read_point
read_err:       setb    rderr_flag
read_exit:      pop     r2
                pop     psw
                ret



;==================================================================
;name: send_rsc_port
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
send_rsc_port:  push    psw
                push    r2
                push    acc

                mov     r2, #5
send_point:     setb    tb8
                mov     sbuf,  rscbufft      ; send data to serial port
                jnb     ti,  $
                clr     ti
                jnb     ri,  $
                clr     ri
                mov     rscbuffr,  sbuf
                mov     a, rscbuffr
                cjne    a, rscbufft, r2_count
                sjmp    td_exit
r2_count:       djnz    r2,  send_point
td_data_err:    setb    tderr_flag
td_exit:        pop     acc
                pop     r2
                pop     psw
                ret



;==================================================================
;name: ad_data_treat
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
ad_data_treat:  push    psw
                push    acc
                push    r0
                push    r1
                push    r2
                push    r3

                mov     r0,  #sspd_adbuff11l
                mov     r1,  #18
                acall   reverse

                mov     r0,  #sspd_adbuff11l
                mov     b,   #9
                acall   adjust

                mov     r0,  #sspd_adbuff11l
                mov     r1,  #sspddata1l
                mov     r2,  #3
                mov     r3,  #3
                acall   bufadd

                pop     r3
                pop     r2
                pop     r1
                pop     r0
                pop     acc
                pop     psw
                ret


;==================================================================
;name: send_data( each time send three data )
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
send_data:      push    psw
                push    r0
                push    b

                mov     r0,  #sspddata1l
                mov     b,   #6             
send_loop:      mov     rscbufft,  @r0
                acall   send_rsc_port
                jb      tderr_flag,  send_exit
                acall   delay1ms
                mov     dsp_xl, @r0
                mov     dsp_xh, #0
                setb    dsp_xflag
                clr     dsp_yflag
                acall   led
                inc     r0
                djnz    b,   send_loop
send_exit:      pop     b
                pop     r0
                pop     psw
                ret


;==================================================================
;name: sppedup_cp
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
speedup_cp:     push    acc
                mov     a,  sspdcpbuffl
                cjne    a,  #0fah, speedup
                sjmp    speedup_exit
speedup:        add     a,  #5
                mov     sspdcpbuffl, a
speedup_exit:   pop     acc
                ret

;==================================================================
;name: slowdown_cp
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
slowdown_cp:    push    acc
                mov     a,  sspdcpbuffl
                cjne    a,  #0, slowdown
                sjmp    slowdown_exit
slowdown:       subb    a,  #5
                mov     sspdcpbuffl, a
slowdown_exit:  pop     acc
                ret


;==================================================================
;name: portscan
;number:
;used resoures: internal:acc
;               lcall ls164k
;algorithm:
;entry:  No
;exit:   
;------------------------------------------------------------------
portscan:       push    acc

pc_com:         mov     a, rscbuffr
pc_com_a:       cjne    a, #41h,  pc_com_b
                setb    pc_a_flag
                pop     acc
                ret

pc_com_b:       cjne    a, #42h,  pc_com_c
                setb    pc_b_flag
                pop     acc
                ret

pc_com_c:       cjne    a, #43h,  pc_com_d
                setb    pc_c_flag
                pop     acc
                ret

pc_com_d:       cjne    a, #44h,  pc_com_e
                setb    pc_d_flag
                pop     acc
                ret

pc_com_e:       cjne    a, #45h,  pc_com_f
                setb    pc_e_flag
                pop     acc
                ret

pc_com_f:       setb    pc_f_flag
                pop     acc
                ret


;*****************************************************************
;               DATA DEFINING REGION
;*****************************************************************
;=================================================================
led_data:       db      11h,0d7h,32h,92h,0d4h,98h,18h,0d3h
                ;       "0" "1"  "2" "3" "4"  "5" "6" "7" 
                ;        0   1    2   3   4    5   6   7
                db      10h,90h,50h,1ch,3eh,16h,38h,78h
                ;       "8" "9" "A" "b" "c" "d" "E" "F"
                ;        8   9   10  11  12  13  14  15
led_letter:     db      54h,5ch,0dfh,17h,3dh,5eh,1eh,70h
                ;       "H" "h"  "i" "J" "L" "n" "o" "P" 
                ;        16  17   18  19  20  21  22  23
                db      0d0h,079h,7eh,98h,0d3h,15h,1fh,94h
                ;       "q"  "R"  "r" "S" "T"  "U" "v" "Y"
                ;        24   25   26  27  28   29  30  31
led_data_p:     db      01h, 0c7h,22h, 82h, 0c4h,88h, 08h, 0c3h
                ;       "0." "1." "2." "3." "4." "5." "6." "7."
                ;        32   33   34   35   36   37   38   39
                db      00h, 80h, 40h, 0ch, 2eh, 06h, 28h, 68h
                ;       "8." "9." "A." "b." "c." "d." "E." "F."
                ;        40   41   42   43   44   45   46   47
led_letter_p:   db      44h, 4ch, 0cfh,07h, 2dh, 4eh, 0eh, 60h
                ;       "H." "h." "i." "J." "L." "n." "o." "P."
                ;        48   49   50   51   52   53   54   55
                db      0c0h,069h,6eh, 88h, 0c3h,05h, 0fh, 84h
                ;       "q." "R." "r." "S." "T." "U." "v." "Y."
                ;        56   57   58   59   60   61   62   63
                end

⌨️ 快捷键说明

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