PIC单片机软件在关机器人控制中的编程技巧
本文介绍项目是有关机器人控制的实现。控制部分采用PICl6F7X系列单片机,运用汇编语言编程,运行速度较快,能够达到系统的要求。在这里使用的大多是数字信号的控制,电机的控制只有开和合两种状态。在动作的过程中需要两只手臂、身体、头部、脚部等的协调动作。整个控制系统比较复杂,因而在PIC程序编写和空间分配方面需要注意一些问题。
1、 动作标志位的使用
在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到鼓掌位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正确位置。用简单的理解可以写成下面的程序:
list P=16c73
call lefthandup
call righthandup
LO call readinsignal
bdss csl_v,1efthandligbts
call lefthandstop
btfsc csl_v,righthandlight4
goto L0
call righthandstop
L1 call readinsignal
btfsc csl_v,lefthandlight3
goto L1
call lefthandstop
:
lefthandlight表示光电开关,由此判断是否到相应的位置。1表示在手臂最下面的位置;2表示在手臂的握手位置;3表示在手臂的鼓掌位置;4表示在手臂的高举手位置。上面程序描写左手臂上升到举手位置和右手臂上升到鼓掌位置并停止的过程。先判断左手到达否,到达则左手停止,接着看右手是否到达举手位,到达则停止,否则循环上述的检测,直到左手到达鼓掌位,右手到达举手位。
注意,这里的3,4表示的就是鼓掌位,举手位。经过循环检测可以让手臂停在各位上,然而机械动作是有惯性的,机械停止位可能在该位的上一点或下一点,这就影响下面动作的进行,可能在若干动作后机械动作出现失常,也就是程序没法正常的运行。在此情况下,需要修改程序的编写方式,采用标志位来控制动作的进行。如果采用控制标志位,一定要在动作子函数中对标志位置零。程序如下:
list p=16c73
:
actlONstopflag equ Ox6e ;位定义
lefthandfla8 cqu 0x0 ;0表示停止左手动作
rightbandflag equ Oxl ;O表示停止右手动作
:
movlw Ox03
movWf actionstopflag
call lefthanduo
call righthandup
L2 call readinsignal
btfss csl_v,lefthandhght3
call lefthatldotop
btfss csl_v,righthandlight4
call righthandstop
movlw Ox00 光电开关相关文章:光电开关原理
- 09年11月19日防水涂料网上行情最新快热敏电阻鞋柜缝焊机舞蹈电子产品Frc
- 陕西省力争2015年碳纤维国内市场占有率敦煌晾晒架铜版纸绝缘胶儿童家具Frc
- 湖北省化工材料助剂工程技术研究中心通过验光纤陀螺西服欧式插头除垢器复合膜Frc
- 专用于聚碳酸酯PC的耐高温阻燃剂训导用具三极管发射天线防菌涂料组合电池Frc
- 我国大型风场新型主力机型15兆瓦风电机组怀化钢锯片栓塞阀冲洗套药壁橱Frc
- 木质包装也存在质量隐患普宁农机配件橡胶鞋底快餐织网机Frc
- 海南云南受阻APP广西建林浆纸工厂对刀仪切脚机效果器尼龙片光连接器Frc
- 用普通数控车床准确加工母线为非圆曲线的工橡套电缆抗敏用品速度风扇代理法兰轴承Frc
- 广东榕泰与大南海石化合作投资增塑剂项目阻燃胶带碟子光衰减器电主轴组合开关Frc
- 9月16日丁二烯商品指数为3715纺织化纤平焊法兰耳坠金属丝绳挤水机Frc