宏定义计算出错

2020-02-11 08:56发布

请教各位大神,为啥宏定义ACT1_RCLA_STOP_ON实际的值并不是420,但是ACT1_RCLA_TAIL_ON的值是80?

#define  RCLB_TAIL_UP                           4
#define  RCLA_TAIL                                11
#define  RCLB_TAIL_DOWN                      6
#define  RCLA_STOP                                7
#define  RCLB_STOP                                7

#define  ACT1_CYCLE                              200  //周期200ms
#define  ACT1_RATIO                              10   //系数
#define  ACT1_RCLA_WAIT                       1500 //1500ms

#define  ACT1_RCLA_TAIL_ON                ((RCLB_TAIL_UP*ACT1_CYCLE)/ACT1_RATIO)     // 80  
#define  ACT1_RCLA_STOP_ON    (((RCLA_TAIL*ACT1_CYCLE)+(RCLB_TAIL_DOWN*ACT1_CYCLE)+ACT1_RCLA_TAIL_ON)/ACT1_RATIO))// 420
#define  ACT1_RCLA_STOP_OFF             ((RCLA_STOP*ACT1_CYCLE)+ACT1_RCLA_WAIT+ACT1_RCLA_STOP_ON)               // 710
#define  ACT1_RCLA_TAIL_OFF              ((RCLA_STOP*ACT1_CYCLE)+(RCLB_TAIL_DOWN*ACT1_CYCLE)+ACT1_RCLA_STOP_OFF) //970
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
rundream
1楼-- · 2020-02-12 00:14
机器人天空 发表于 2018-5-18 22:17
是我自己计算后写的注释

这是几位单片机?
机器人天空
2楼-- · 2020-02-12 02:36
 精彩回答 2  元偷偷看……
rundream
3楼-- · 2020-02-12 04:41
机器人天空 发表于 2018-5-18 22:30
16位的,飞思卡尔的S12ZVL

是不是计算的中间过程超过了0xff ff能表达的范围?
机器人天空
4楼-- · 2020-02-12 10:18
rundream 发表于 2018-5-18 22:40
是不是计算的中间过程超过了0xff ff能表达的范围?

应该不会,我定义的变量是unsigned int 型,
ACT1_RCLA_STOP_ON最多也就420
rundream
5楼-- · 2020-02-12 13:32
luobote55 发表于 2018-5-18 22:03
#define  ACT1_RCLA_TAIL_ON                ((RCLB_TAIL_UP*ACT1_CYCLE)/ACT1_RATIO)     // 80  
4 * 200 ...

我算也是348
机器人天空
6楼-- · 2020-02-12 16:49
rundream 发表于 2018-5-18 22:43
我算也是348

尴尬了,我在线仿真也是348,你用的什么开发环境?

一周热门 更多>