本帖最后由 xurenhui 于 2014-6-20 00:12 编辑
大家好,我刚开始做按摩椅程序设计,请问一下能说一下程序设计的思路吗,
switch(Motor_Channel)
{
case 0x1:
if(First_Mode[0]>=Timer0_Count )/*Action_1--WalkMotor往下行走*/
{
PumpMotor_Shoulders_Pin=1;
WalkMotor_Pin=0;
}
else
{
PumpMotor_Shoulders_Pin=0;
++Shoulder_Channel;
Timer0_Count=0;/*计时清零*/
}
break;
case 0x02:
if(First_Mode[1]>=Timer0_Count)/*Action_2--WalkMotor往上行走*/
{
WalkMotor_Pin=1;
}
else
{
++Shoulder_Channel;
Timer0_Count=0; /*计时清零*/
}
break;
case 0x03:
if(First_Mode[2]>=Timer0_Count) /*Action_2--KneadMotor扭捏动作*/
{
VIBOne_Pin=1;
VIBTwo_Pin=1;
PumpMotor_Arm_Pin=1;
CCPR9L=90;
CCP9CON=0x0f;
T4CONbits.TMR4ON=1;
}
else
{
++Shoulder_Channel;
Timer0_Count=0; /*计时清零*/
}
break;
}
这个程序我可以不采用Switch case 吗,还有别的办法实现吗,上面每一个case里面就是一个手法,而且是一定要等待执行完
该程序,才能执行下面的case 程序,还有其他的方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
思路在32L不是已经说了吗?
特别是在自动模式下靠背往后倾斜时,手动控制它往前靠时,没有按照正确方向走,该怎么处理这些问题啊
请问一下按摩椅行走电机大家是如何计圈的,是采用中断吗,还是有别的方法?
看信号速度...我的主循环周期是2ms...转的太快的话就用中断, 否则用主循环查询
通常主循环查询就OK...但如果程序架构不合理, 经常阻塞式delay的话, 是没法用查询法的
我的架构保证了每个主循环周期都不超过2ms
谢谢,
//***********************************************
case 1: //圈数决定,当前圈数已经在nCurMoveCycle
if( !AUTO_WORK_bits.AutoProcess_ing )
{
if( CheckWise_step == 0 )
{
CheckWise_step = 1;
AUTO_WORK_bits.K_M_Z_start = 0;
}
else if( CheckWise_step == 1)
{
if( AUTO_WORK_bits.wide_middle_narrow )
{
nActualMoveDir = Mov_Mode_appoint_Postion; // 运行方式
up_down_count_scal = ( up_down_count_val >>3 );
current_up_down_count_val = (nCurMoveCycle * up_down_count_scal);
Mov_Mode_step = 0; //允许背靠行走程序运行
AUTO_WORK_bits.AutoProcess_ing = 1;
}
}
这个是一个好心的网友给了一些参考程序给我,上面的程序处在计圈状态,不知道为什么这里圈数右移3位的作用是干吗的,
一周热门 更多>