久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

機械社區

標題: 通用伺服電機的工作原理 [打印本頁]

作者: 奧迪    時間: 2010-8-6 09:47
標題: 通用伺服電機的工作原理
(, 下載次數: 45)
.include "8515def.inc"                ; 器件配制文件, 本實驗使用AT90S8515
.def dt = r22                                ; 定義dt等于r22
.org        $000                                ; 程序首地址
        rjmp        reset4                        ; 跳過中斷區
        
.org        $010                                ; 主程序首地址,注意,不同器件的中斷地址范圍是不同的!
reset4:
        ldi r17,$02                ;置堆棧指針,AT90S8515的RAM最大地址為$025F, 設堆棧底為$025F
        ldi r16,$5f
        out sph,r17                ; 高位堆棧sph=$02
        out spl,r16                ; 低位堆棧spl=$5f

shiyan4:
        ldi r17,$ff
        out ddrb,r17        ; pb口方向寄存器設置為輸出,1為輸出
        out portb,r17        ; 設pb口內部上拉
        out ddrd,r17        ; pd口方向寄存器設置為輸出,1為輸出
        out portd,r17   ; 設pd口內部上拉
        
start3:                                ; 設置舵機擺動周期常數, 即調節節拍常數
        LDI R23,$11        
        LDI R25,$11
                    ;R23=R25=$50擺動周期1S; 如=$30擺動周期0.5S
; 如=20-10擺動周期, 也可理解為調節拍范圍
                    ;$8強勁舞曲          ; $18   男兒當自強       ;$11 少年夢
                                ; 可作自唱自演跳舞機器人設計用。
start6:                                ; 舵機向-60度方向移動
        sbi        $18,0                ; 置pb.0為1
        rcall        de10        ;1ms,-60度
        cbi        $18,0                ; 清pb.0為0
        rcall        de10        ;1ms,-60度
        rcall        de185        ;19ms

        DEC        R23                        ;R23-1
        CPI         R23,$01        ;R23 與立即數$01比較
        BRSH        start6        ;大于等于則轉移到, 小于順序執行
        rcall        de200        ; 調用2ms延時程序
        
start60:                        ; 舵機向+60度方向移動
        sbi        $18,0                ; 置pb.0為1
        rcall        de20        ;2ms,+60度
        cbi        $18,0                ; 清pb.0為0
        rcall        de20        ; 調用2ms,+60度
        rcall        de18        ; 調用18ms
        
        DEC        R25                        ;R25-1
        CPI         R25,$01        ; ;R25 與立即數$01比較
        BRSH        start60        ;大于等于則轉移到, 小于順序執行
        rcall        de200   ; 調用20ms
        rjmp        start3        ;循環檢測

de10:                                ; 1ms延時子程序
        ldi        dt,21                ;1ms
        rcall        delay        ; 調用通用延時子程序
        ret                                ; 子程序返回
de15:                                ; 1.5ms延時子程序
        ldi        dt,26                ;1.5ms
        rcall        delay        ; 調用通用延時子程序
    ret                                ; 子程序返回
de20:                                ; 2ms延時子程序
        ldi        dt,28                ;2ms
        rcall        delay        ; 調用通用延時子程序
        ret                                ; 子程序返回
de18:                                ; 18ms延時子程序
        ldi        dt,63            ;18ms
        rcall        delay        ; 調用通用延時子程序
        ret                                ; 子程序返回
de185:                                 ; 19ms延時子程序
        ldi        dt,64                ;18.8ms
        rcall        delay        ; 調用通用延時子程序
        ret                                ; 子程序返回
de19:                                ; 20ms延時子程序
        ldi        dt,65                ;19.6ms
        rcall        delay        ; 調用通用延時子程序
        ret                                ; 子程序返回

de200:                        ;20ms延時子程序
        ldi        dt,50           ;2ms,DT=100-10無多大變化
        rcall        delay        ; 調用通用延時子程序
        ret                                ; 子程序返回
;延時時間對照表
;**********************************
;fos=8MHz
;dt   time    dt  time   dt   time
;22    1ms    26  1.5ms  29    2ms
;51   10ms    63  18ms   64   18.8ms
;65   19.6ms  144 200ms  197  500ms
;249    1s
;**********************************
delay:                                ; 通用延時子程, 子程序2級嵌套
            push dt                ; 進棧,需2t
del1:        push dt                ; 進棧,需2t
del2:        push dt                ; 進棧,需2t
del3:        dec dt                ; dt-1,需1t
        brne        del3        ; 上條指令執行后Z=0轉, Z=1順執, 需1t/2t
        pop dt                        ; 出棧, 需2t
        dec dt                        ; dt-1,需1t
        brne        del2        ; 上條指令執行后Z=0轉, Z=1順執, 需1t/2t
        pop dt                        ; 出棧, 需2t
        dec dt                        ; dt-1,需1t
        brne        del1        ; 上條指令執行后Z=0轉, Z=1順執, 需1t/2t
        pop dt                        ; 出棧, 需2t
        ret                                ; 子程序返回, 需4t
作者: 恁老廝    時間: 2010-8-6 11:15
這遙控伺服機當學生時玩車不知拆了多少了




歡迎光臨 機械社區 (http://www.ytsybjq.com/) Powered by Discuz! X3.5