文档介绍:1
PIC 单片机软件开发的小技巧
■中国矿业大学胡伊兰程红
■中国科学院自动化研究所岳红强
2 2
笔者的项目是有关机器人控制的实现。控制部分采 goto L0
用 PIC16F7X 系列单片机,运用汇编语言编程,运行速度 call righthandstop
较快,能够达到系统的要求。在这里使用的大多是数字信 L1 call readinsignal
号的控制,电机的控制只有开和合两种状态。在动作的过 btfsc cs1_v ,lefthandlight3
程中需要两只手臂、身体、头部、脚部等的协调动作。整个 goto L1
call lefthandstop
控制系统比较复杂,因而在 PIC 程序编写和空间分配方面
⋯
需要注意一些问题。
lefthandlight 表示光电开关,由此判断是否到相应的
1 动作标志位的使用位置。1 表示在手臂最下面的位置;2 表示在手臂的握手
在整个控制中,组合的动作很多,当所有动作定位都位置;3 表示在手臂的鼓掌位置;4 表示在手臂的高举手位
通过光电开关控制时,在程序编写上就有一些问题。如要置。上面程序描写左手臂上升到举手位置和右手臂上升
求左手上升到鼓掌位、右手上升到举手位(手初始位置在到鼓掌位置并停止的过程。先判断左手到达否,到达则左
最下的放下位) ,光电开关 0 有效(即为 0 时是挡住) ,到达手停止,接着看右手是否到达举手位,到达则停止,否则循
正确位置。用简单的理解可以写成下面的程序: 环上述的检测,直到左手到达鼓掌位,右手到达举手位。
list p = 16c73 注意,这里的 3 ,4 表示的就是鼓掌位,举手位。经过
⋯循环检测可以让手臂停在各位上,然而机械动作是有惯性
call lefthandup 的,机械停止位可能在该位的上一点或下一点,这就影响
call righthandup 下面动作的进行,可能在若干动作后机械动作出现失常,也
L0 call readinsignal 就是程序没法正常的运行。在此情况下,需要修改程序的
btfss cs1_v ,lefthandlight3 编写方式,采用标志位来控制动作的进行。如果采用控制
call lefthandstop 标志位,一定要在动作子函数中对标志位置零。程序如下:
btfsc cs1_v ,righthandlight4
片机在接收到上位机的代码数据时,不要急于写入外部写时序,同时 E2 PROM 还有写保护功能。
E2 PROM ,而应先全部放在外部 RAM 区内,待代码获取虽然上述方法能使 8051 单片机系统具有远程升级代
完毕并且通过校验检查后再把 RAM 的内容一次性写入码的能力,但是程序装载过程将使系统的启动时间延长数
E2 PROM 。这样防止在获取程序的时候通信异常中断而秒,在对启动时间要求较短的场合不能应用本文中介绍的
E2 PROM 内将没有一个可以执行的程序。方法。
从原理上看,如果片外 RAM 是非易失的,就可以不参考文献
再使用 2 。但是这样系统成本变高且可靠性降
E PROM 1 何立民. MCS 51 系列单片机应用系统设计. 北京:北京航空
低,因为