version 3.00 cm_version 2.0 platform CM-150 o // param_text:标题:第四阶段 拳击机器人 例子程序 o // param_text:最初发布:2014/02/24 o // param_text:最后修改:2014/02/24 o // param_text:[使用方法] o // param_text:利用RC-100操纵拳击机器人。 o main o begin o // param_text:开始时演奏乐器。 o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:3 o wait param_src:cm:18 lop:> param_src:buzzertime_num:0 rop:then - o // param_text:设置初始值。 o load param_dest:var:行驶速度 param_src:dec_num:500 - o load param_dest:cm:23 param_src:powersave_num:0 o load param_dest:aux:4:61 param_src:bool_num:1 o load param_dest:aux:4:60 param_src:dir_num:1023 o load param_dest:aux:4:62 param_src:dec_num:521 o load param_dest:aux:3:61 param_src:bool_num:1 o load param_dest:aux:3:60 param_src:dir_num:1023 o load param_dest:aux:3:62 param_src:dec_num:443 - o // param_text:设置从RC-100接收数据的最长周期。 o load param_dest:var:停止等待时间 param_src:timer_num:2 o while(1) o begin o // param_text:如果在上面设置的时间内没有收到数据,则停止所有动作。 o // param_text:这是为了防止在丢失接收数据时机器人错误地继续运动。 o load param_dest:cm:5 param_src:var:停止等待时间 o while param_src:cm:2 lop:== param_src:bool_num:0 rop:then o begin o if param_src:cm:5 lop:== param_src:dec_num:0 rop:then o call faddr_dest:停止 o end - o if param_src:cm:2 lop:== param_src:bool_num:1 rop:then o begin o // param_text:为了同时做到控制方向和攻击,按照功能分离遥控器数据。 o load param_dest:var:收到的数据 param_src:cm:1 o compute param_dest:var:移动方向键 param_src:var:收到的数据 aop:& param_src:rc100z_num:15 o compute param_dest:var:攻击键 param_src:var:收到的数据 aop:& param_src:rc100z_num:176 - o load param_dest:cm:25 param_src:dec_num:1 o load param_dest:var:拳击值 param_src:cm:25 - o // param_text:移动方向键 o if param_src:var:移动方向键 lop:== param_src:rc100z_num:1 rop:then o begin o call faddr_dest:前进 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:2 rop:then o begin o call faddr_dest:后退 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:4 rop:then o begin o call faddr_dest:原地左转 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:8 rop:then o begin o call faddr_dest:原地右转 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:5 rop:then o begin o call faddr_dest:向左前进 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:9 rop:then o begin o call faddr_dest:向右前进 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:6 rop:then o begin o call faddr_dest:向左后退 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:10 rop:then o begin o call faddr_dest:向右后退 o end o elseif param_src:var:移动方向键 lop:== param_src:rc100z_num:0 rop:then o begin o call faddr_dest:停止 o end - o // param_text:左手攻击键 o if param_src:var:攻击键 lop:== param_src:rc100z_num:32 rop:then o begin o load param_dest:aux:4:62 param_src:dec_num:330 o load param_dest:cm:5 param_src:timer_num:2 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o if param_src:cm:18 lop:== param_src:buzzertime_num:0 rop:then o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:20 o end o end o // param_text:右手攻击键 o if param_src:var:攻击键 lop:== param_src:rc100z_num:128 rop:then o begin o load param_dest:aux:3:62 param_src:dec_num:638 o load param_dest:cm:5 param_src:timer_num:2 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o if param_src:cm:18 lop:== param_src:buzzertime_num:0 rop:then o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:21 o end o end o // param_text:随机攻击键 o if param_src:var:攻击键 lop:== param_src:rc100z_num:16 rop:then o begin o if param_src:var:拳击值 lop:== param_src:dec_num:0 rop:then o begin o load param_dest:aux:3:62 param_src:dec_num:638 o load param_dest:cm:5 param_src:timer_num:2 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o if param_src:cm:18 lop:== param_src:buzzertime_num:0 rop:then o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:21 o end o call faddr_dest:暂时等待 o end o if param_src:var:拳击值 lop:== param_src:dec_num:1 rop:then o begin o load param_dest:aux:4:62 param_src:dec_num:330 o load param_dest:cm:5 param_src:timer_num:2 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then o if param_src:cm:18 lop:== param_src:buzzertime_num:0 rop:then o begin o load param_dest:cm:18 param_src:buzzertime_num:255 o load param_dest:cm:17 param_src:melody_num:20 o end o call faddr_dest:暂时等待 o end o end o else o begin o load param_dest:aux:3:62 param_src:dec_num:443 o load param_dest:aux:4:62 param_src:dec_num:521 o end o end o end o end - o function faddr_src:前进 o begin o compute param_dest:aux:1:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o end o function faddr_src:后退 o begin o compute param_dest:aux:1:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o end o function faddr_src:原地左转 o begin o compute param_dest:aux:1:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o end o function faddr_src:原地右转 o begin o compute param_dest:aux:1:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o compute param_dest:aux:2:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o end o function faddr_src:向左前进 o begin o load param_dest:aux:1:68 param_src:dir_num:1024 o compute param_dest:aux:2:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o end o function faddr_src:向右前进 o begin o compute param_dest:aux:1:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o load param_dest:aux:2:68 param_src:dir_num:0 o end o function faddr_src:向左后退 o begin o load param_dest:aux:1:68 param_src:dir_num:0 o compute param_dest:aux:2:68 param_src:dir_num:0 aop:+ param_src:var:行驶速度 o end o function faddr_src:向右后退 o begin o compute param_dest:aux:1:68 param_src:dir_num:1024 aop:+ param_src:var:行驶速度 o load param_dest:aux:2:68 param_src:dir_num:1024 o end o function faddr_src:停止 o begin o load param_dest:aux:1:68 param_src:dir_num:0 o load param_dest:aux:2:68 param_src:dir_num:0 o end o function faddr_src:暂时等待 o begin o load param_dest:cm:5 param_src:timer_num:4 o wait param_src:cm:5 lop:> param_src:timer_num:0 rop:then