roboBASIC命令手册汇编Word格式.docx

上传人:b****1 文档编号:1394135 上传时间:2023-04-30 格式:DOCX 页数:91 大小:1.24MB
下载 相关 举报
roboBASIC命令手册汇编Word格式.docx_第1页
第1页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第2页
第2页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第3页
第3页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第4页
第4页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第5页
第5页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第6页
第6页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第7页
第7页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第8页
第8页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第9页
第9页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第10页
第10页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第11页
第11页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第12页
第12页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第13页
第13页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第14页
第14页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第15页
第15页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第16页
第16页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第17页
第17页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第18页
第18页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第19页
第19页 / 共91页
roboBASIC命令手册汇编Word格式.docx_第20页
第20页 / 共91页
亲,该文档总共91页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

roboBASIC命令手册汇编Word格式.docx

《roboBASIC命令手册汇编Word格式.docx》由会员分享,可在线阅读,更多相关《roboBASIC命令手册汇编Word格式.docx(91页珍藏版)》请在冰点文库上搜索。

roboBASIC命令手册汇编Word格式.docx

STATE

输出端口状态

PULSE

发送脉冲信号到输出端口

TOGGLE

反转输出端口状态

KEYIN③

接受模拟键盘输入

与存储有关的命令

PEEK

从控制器RAM中读取数据

POKE

写数据到控制器RAM中

ROMPEEK

从控制器外部EEPROM中读取数据

ROMPOKE

写数据到控制器外部EEPROM

与LCD相关的命令

LCDINIT

初始化LCD模块

CLS

清除LCD模块中所有字符

LOCATE

设置在LCD模块中文字显示位置

PRINT

在LCD模块中显示文字

FORMAT

设置LCD模块的数据显示格式

CSON

在LCD模块中显示光标

CSOFF

在LCD模块中隐藏光标

CONT

设置LCD显示屏上文字显示亮度

DEC

输出十进制数到LCD

HEX

输出十六进制数到LCD

BIN③

输出二进制数到LCD

操作数相关操作

AND

使用逻辑与条件表达式

OR

使用逻辑或条件表达式

MOD

求余

XOR

使用逻辑异或条件表达式

NOT③

对所有位求反

与电机控制相关的命令

ZERO

设置电机0点(中心点)

MOTOR

开启电机

MOTOROFF

关闭电机

MOVE

同时操作多个电机

SPEED

设置电机速度

ACCEL②

设置电机加速度

DIR

设置电机方向

PTP

开启/关闭同时电机控制操作

SERVO

控制单个电机

PWM

直流电机的脉冲宽度控制

FASTSERVO②

以最大速度转动伺服电机

HIGHSPEED③

开启/关闭伺服电机的高速模式

MOVEPOS③

根据声明的位置转动电机

POS③

设置机器人特定姿势

FPWM③

改变脉冲宽度和频率

MOVE24③

同时操作24个电机

INIT③

设置初始运动姿态

MOTORIN③

读取电机当前位置值

AIMOTOR③

设置使用AI电机

AIMOTOROFF③

取消使用AI电机

AIMOTORIN③

读取AI电机当前位置值

SETON③

设置使用setup功能

SETOFF③

退出setup功能

ALLON③

对所有电机设置setup功能

ALLOFF③

退出对所有电机的setup功能

GETMOTORSET③

读取电机当前值并保持当前位置

MOTORMODE④

设置电机模式

电机组分配相关参数

G6A③

将0-5号电机分配给A组

G6B③

将6-11号分配给B组

G6C③

把12-17分配给C组

G6D③

把18-23分配给D组

G6E③

把24-29分配给E组

G8A③

把0-7分配给A组

G8B③

把8-15分配给B组

G8C③

把16-23分配给C组

G8D③

把24-31分配给D组

G12③

分配0-11号伺服电机

G16③

分配0-15号伺服电机

G24③

分配0-23号伺服电机

G32③

分配0-31号伺服电机

与声音控制相关的命令

BEEP②

用压电蜂鸣器发出警告声

SOUND②

用压电蜂鸣器发出声音

PLAY②

用压电蜂鸣器播放歌曲

MUSIC③

用压电蜂鸣器播放音乐

TEMPO③

设置声音节奏

与外部通信相关的命令

RX②

通过RX端口接收RS232信号

TX②

通过TX端口传输RS232信号

MINIIN②

通过mini通讯端口接收miniBUS信号

MINIOUT②

通过mini通讯端口传输miniBUS信号

ERX③

ETX③

模拟信号处理相关命令

AD③

从AD端口读取模拟信号值

REMOCON③

从红外远程控制器中读取按键值

SONAR③

从超声波端口读取距离

RCIN③

从RC(遥控器)读取输入值

GYRODIR③

根据陀螺仪(gyro)输入的设置电机转动方向

GYROSET③

给电机组分配相应的陀螺仪进行控制

GYROSENSE③

设定相对应电机组里电机的陀螺仪传感器灵敏度

处理跳转命令

ON...GOTO

根据变量值进行相应跳转

其它命令

RND

产生一个随机数

REMARK

文本注释开头标记

伪命令

'

$DEVICE

设置控制器由正在运行的程序来操作

$LIMIT③

限制电机转动范围

$INCLUDE④

文件包含

注:

②表示该命令在MR-C2000系列控制器中使用

③表示该命令在MR-C3000系列控制器中使用

④表示该命令在MFC3024FX控制器中使用

第二章roboBASIC语法概要

由于roboBASIC语法是基于通用BASIC编程语言之上的,因此roboBASIC类似于BAISC语言。

以下主要叙述roboBASIC的常见语法。

标识符集

roboBASIC标识符集由汉字、英文字母、数字和特殊文字组成。

列于下表中的符号,在roboBAISC语言中具有其特殊含义。

符号

说明

+

-

*

/

%

.

位指定号

&

数字

?

文本

字符串

:

标志

=

相等或赋值

<

小于

>

大于

位左移

位右移

表达式及运算符

表达式是可以计算出数值的组合,该组合由常数、变量以及数字与可用操作运算符连接组成。

运算符对给定值执行算术或者逻辑运算。

在roboBASIC语言中,运算符分类如下表所示。

类别

功能

算术运算符

执行算术计算

关系运算符

比较数值大小

逻辑运算符

比较组合条件或者执行位运算

位运算符

按位运算

算术运算符是执行计算的标识符。

和一般BASIC语言一样,+、-、*、/、%(或MOD)在roboBASIC中也可以使用,但在roboBASIC和BASIC间有些不同的地方。

1)运算符中没有优先级

在roboBAISC中,不准使用括号()运算符号。

例:

A=1,B=2,C=3

对于常规的BAISC语言,A+B*C=1+2*3=1+6=7,即乘法优先于加法。

对于该式,如果要先进行加法,则需要把该式改为(A+B)*C;

而对于roboASIC语言,运算符没有优先级,按顺序从左往右运算,如A+B*C=1+2*3=3*3=9;

2)复杂的数学计算会产生意想不到的错误

因此,复杂数学计算式应该分解为2次或3次计算。

D=A*B+C(通过)

F=A*B/C*D+E(避免复杂算术计算)

3)roboBASIC只支持字节类型(BYTE)和整型(INTEGER),因此输出的小数点将被忽略。

求余计算使用%或MOD,输出结果为余数。

关系运算

关系运算符用来比较两个值。

数值比较结果为TRUE或FALSE。

数值比较结果主要用于IF语句中的程序流向控制。

运算符

关系

表达式

等于

A=B

不等于

A<

B

A>

小于等于

=B

大于等于

当算术运算和逻辑运算组合到一个式子里时,算术运算符优先于逻辑运算符。

逻辑运算

逻辑运算符用来逻辑比较组合条件。

计算结果返回TRUE或FALSE。

输出用来于IF条件语句的控制程序流向。

异或

每个运算的输出如下表所示。

下表中的“T”代表TRUE,“F”代表FALSE

X与Y的值

结果

X

Y

XANDY

XORY

XXORY

T

F

位运算

位运算可以为机器人控制器中每个变量执行计算,这样更容易对输入/输出端口进行按位控制。

位运算有位或(OR)、位与(AND)以及位异或三类。

在roboBASIC语言中,运算符左移“<

”、右移“>

”和“.”用来移动某一位到指定位置。

设A的值为33(二进制形式为00100001),B的值为15(二进制形式为00001111),对两数使用相应的位运算符时可得到以下结果。

运算

AANDB

1(00000001)

AORB

47(00101111)

AXORB

46(00101110)

1

66(01000010)

16(00010000)

A.0

1(A的第0位)

同一条指令中使用多个运算符时,将以下顺序计算。

1)算术运算/位运算

2)关系运算

3)逻辑运算

数字、变量、常数以及其它语法解释

因为roboBASIC为控制硬件专门开发的语言,所以不支持通用BAISC所支持的与字符串相关的变量或者常量。

数据类型

roboBASIC语言中,数据类型分为字节类型与整型两类。

相对应数据类型的数值范围如下表所示。

数字类型

存储大小

范围

字节型(BYTE)

1个字节(8位)

0~255

整型(INTEGER)

2个字节(16位)

0~65535

RoboBASIC语言不支持负数。

因此,运算表达式中不可以在数字之前添加“+”与“-”来表示正负数,否则表达式运算会出错。

变量声明应选用合适的数字类型,以便于节省存储空间。

进制数

由于roboBASIC用来控制硬件,因此使用十六进制数、二进制数以及八进制数比使用十进制数更为方便。

在roboBASIC中,可以使用二进制数(BIN)、八进制数(OCT)、十进制数(DEC)以及十六进制数(HEX),各个进制数的表示方法如下表所示。

声明

可用数字

例子

二进制数

B

0,1

B111101

八进制数

O

0,2,…,7

O75

十进制数

0,1,2,…,9

61

十六进制数

H

0,1,2,…,9,A,B,…F

H3D

常量和变量

在程序执行过程中,常量的值不发生变化。

roboBASIC语言可定义类似于字节类型(BYTE)和整型(INTEGER)的常量。

常量类型根据数的范围自动确定。

一旦常量被定义,就不能再被定义了。

定义常量对程序大小没有影响。

当使用某些频繁的数字时,可把它们定义为常量,这样程序修改会变得更为方便可靠。

例如:

CONSTOFF=0

CONSTmotor_1=3

CONSTmotor_1_speed=200

用于程序中的变量是数据存储位置的名字。

在迷你机器人控制器中,使用的变量数是有限,因此变量声明应设计为在符合对象要求的情况下使变量所占用的存储量最小。

DIMmotor_1_delayASINTEGER

DIMsensor_leftASBYTE

声明常量或变量时,遵守以下规则:

1)首字母用英语字母或者汉字。

汉字、英文、数字与“_”可用在变量名和常量名中。

2)常量名和变量名的长度不可超过64个字符。

3)相同常量名和变量名只能声明一次,即不能重复声明,不区分大小写。

4)声明的常量值不得超过65535,否则会出错

roboBASIC使用的变量可进行位运算。

位运算可使用位指定符“.”,可指定字节变量的0~7位或者整型变量的0~15。

位运算必须使用变量或者常量作为操作数。

DIMAASINTEGER

CONSTBIT_2=2

A.1=1

A.BIT_2=0

A.3=IN

(1)‘从端口1读数并赋给整型变量A的第三位

OUT2,A.1‘将A的第一位的值传给端口2

注释语句

在编写程序时,适当穿插代码注释可便于程序的有效管理与创建。

为了在程序中插入注释性语句,需要在注释性语句前添加“’”或者“REMARK”命令。

在程序编译过程中,会自动忽略注释性语句,因此不会影响程序的执行。

赋值(=)

赋值语句用来给变量赋值,使用符号“=”。

赋值(=)符号的左边为被赋值的变量,其右边为变量、字符串、表达式或者函数。

A=B'

变量B的值赋给变量A

A.1=1'

给变量的指定位赋值

A=ADIN(0)'

运用函数给变量赋值

A=3*2-1'

数值运算式给变量赋值

A=C+B-A'

变量运算式给变量赋值

A="

1"

'

字符串赋值给变量

行标记

行标记用来指示指令在整个程序里的位置。

行标记由字母和数字组成,可分为文字标记名与数字标记名两类。

行标记的使用规则如下:

1)文字标记名不得超过64个字符,第一个字符必须为汉字或者英文。

2)文字标记名后必须用标记符号“:

3)数字标记名可使用0~65535之间的数字,不需要标记符“:

4)标记名不得重复声明,不分大小写

通常,行标记用于程序流程控制,如GOTO命令与GOSUB命令。

DIMAASINTEGER

START:

A=IN(0)

IFA=0THEN

GOTOSTART

GOSUB10

10OUT1,0

DELAY100

OUT1,1

第三章声明命令的说明

这些指令用于声明定义变量和常量。

DIM…AS

命令格式

1.单一变量声明:

DIM[变量名]AS[变量类型]

2.多变量同时声明:

DIM[变量名]AS[变量类型],[变量名]AS[变量类型],….

命令说明

在roboBASIC编程语言中,变量使用之前必须使用DIM进行变量的强制声明,另外须用AS来指定所声明的变量类型。

变量的命名按变量命令规则来命名。

变量不能重复声明定义。

变量用来接收处理传感器采集信号值或者模拟信号的转换值。

因此合适的使用变量,可使程序的创建更加灵活。

可使用的变量数目根据每个机器人控制器类型来定。

MR-C2000系列用于存储变量的空间大小少于30字节。

MR-C3000系列用于存储变量的空间大小少于254字节。

字节型变量所需存储空间为1个字节,整型变量所需存储空间为2个字节,因此必须合理的声明定义变量以免产生变量存储空间的不足。

命令示例

DIMIASINTEGER'

声明整型变量I

DIMJASBYTE'

声明字节型变量J

CONST

COSNT[常量名]=数字

为有特定意义或者经常使用的数值指定常量名可以简化程序的编写工作。

相对于数字与变量,使用常量有以下优点:

1)常量一经定义,整个程序都可使用

2)常量不会由于失误而改变常量值

3)容易修改

4)常量不会占用大量的存储空间

CONSTOFF=0'

声明常量OFF=0

CONSTA=&

B1001'

声明常量A为二进制数1001,即十进制数9

第四章流程控制命令的说明

这些命令用于控制或者执行程序的流程

IF…THEN

条件判断语句

1.单一条件(多行形式)

IF[条件]THEN

[条件为真时的执行语句]

或者(单行形式)

IF[条件]THEN[条件为真时的执行语句]

2.两个条件(多行形式)

IF[条件]THEN

[条件为真时的执行语句]

ELSE

[条件为假时的执行语句]

IF[条件]THEN[条件为真时的执行语句]ELSE[条件为假时的执行语句]

3.多重条件

IF[条件1]THEN

[条件1为真时的执行语句]

ELSEIF[条件2]THEN

[以上条件为假且条件2为真时的执行语句]

...

ELSEIF[条件n]THEN

[以上条件为假且条件n为真时的执行语句]

[以上条件都为假时的执行语句]

当IF…THEN语句被执行时,首先判断IF的条件。

如果这个条件为真,那么THEN后面的语句将被执行。

如果这个条件为假,则按顺序判断紧接着的ELSEIF条件,如果条件为真,则执行THEN后面的语句,如果都为假,则进行最后的ELSE条件语句。

这里的ELSEIF可根据需要决定是否需要添加。

在roboBASIC语言中,为了按照外部输入来进行操作以及保存来自外部值到某一变量中,条件语句IF…THEN是不可或缺的。

条件语句判断变量的值,并且根据该变量的值使机器人做相应的动作。

1)条件语句中条件与语句的执行很简单。

两种放在同一行。

IFA>

0THENB=5

IFA<

5THENB=0ELSEB=1

2)IF语句中的条件可以是条件表达式,当用关系运算符时可使用两种条件。

0ANDA<

5THENB=3

IFA=7ORA=9THENB=1

3)复杂形式的IF语句使用例子

IFA=1THEN

B=2

C=3

ELSEIFA=3ANDA=5THEN

B=1

C=2

ELSEIFA=8THEN

B=6

C=0

ELSE

B=0

ENDIF

FOR…NEXT

按照给定的次数循环执行

FOR[循环次数变量]=[起始值]to[终值]

[循环语句]

NEXT[循环次数变量]

[循环次数变量]为循环的次数变量。

[起始值]为循环次数变量的初始值,[终值]为循环次数变量的终值。

数字、常量以及变量都可以作为[起始值]与[终值]。

在roboBASIC中,[终值]必须大于[起始值]。

循环次数变量会随着程序的执行逐步的增加。

FOR…NEXT语句的使用必须符合以下规则:

1)FOR…NEXT语句能嵌套在另一个FOR…NEXT语句中。

FORI=1TO10

FORJ=1TO5

……..

NEXTJ

NEXTI

2)当使用多个FOR…NEXT语句时,NEXT[循环次数变量]必须按照相对应的FOR顺序排列。

不正确

正确

尽管在不正确的例子中循环变量的顺序发生改变,但是该错误不影响程序目标代码的生成,但是当该目标代码下载到迷你机器人的控制器内时将发生不可预料的结果

3)FOR…NEXT语句不允许从循环体外进入循环体内,但允许从循环体内跳出到循环体外。

可以

IFI=5THEN

GOTO20

……………….

20……………

不可以

GOTO40

……………

40……………

4)[循环次数变量]、[起始值]以及[终值]不能在FOR…NEXT循环语句中武断的改变。

连接LED到控制器的0号端口,并使它闪烁5次。

DIMAASBYTE'

声明循环语句中所需的循环次数变量

FORA=1TO5'

重复次数5次

OUT0,0'

点亮LED

DELAY100'

延时0.1s

OUT0,1'

关闭LED

NEXTA

GOTO

跳转到指定位置

GOTO[行标志]

GOTO命令通过跳转到代码中的指定行而改变程序的执行流程。

由于GOTO命令会使程序极度地复杂化,因此不要频繁地使用该语句。

DIMIASINTEGER

DIMJASBYTE

I=7

IFI=6THENGOTOL1

……………………..

L1:

J=1

OUTI,J

GOSUB…RETURN

调用子程序并返回

GOSUB[行标志]

………………..

[行标志:

]

………………...

RETURN

GOSUB命令调用频繁使用的子程序,然后返回。

运用这种方法,GOSUB语句可以使程序更小更灵活。

在一个子程序可以在调用第二个子程序。

在MR-C2000系列中,该类嵌套不得超过4次;

在MR-C3000系列中,该类嵌套不得超过5次。

否则,会发生错误。

DIMLED_PORTASINTEGER

LED_PORT=1

…………………...

……………………

GOSUBLED_TOGGLE

GOTOSTART

END

LED_TOGGLE:

TOGGLELED_PORT

`RETURN

结束程序的运行

当控制器开启2s后,存于EEP

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2