机械必威体育网址

找回密码
注册会员

QQ登录

只需一步,快速开始

搜索
查看: 2038 | 回复: 1
打印 上一主题 下一主题

通用伺服电机的工作原理

[复制链接]
跳转到指定楼层
1#
发表于 2010-8-6 09:47:47 | 只看该作者 | 只看大图 回帖奖励 | 倒序浏览 | 阅读模式

.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
2#
发表于 2010-8-6 11:15:34 | 只看该作者
这遥控伺服机当学生时玩车不知拆了多少了
您需要登录后才可以回帖 登录| 注册会员

本版积分规则

小黑屋|手机版|Archiver|机械必威体育网址(京ICP备10217105号-1,京ICP证050210号,浙公网安备33038202004372号)

GMT+8, 2024-7-17 11:37, Processed in 0.052308 second(s), 18 queries , Gzip On.

Powered byDiscuz!X3.4Licensed

? 2001-2017Comsenz Inc.

快速回复 返回顶部 返回列表