按摩椅程序设计思路

2020-02-06 10:21发布

本帖最后由 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 程序,还有其他的方法吗?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
79条回答
xurenhui
2020-02-12 00:25
snoopyzz 发表于 2014-8-12 15:25
看信号速度...我的主循环周期是2ms...转的太快的话就用中断, 否则用主循环查询

通常主循环查询就OK...但 ...

谢谢,
//***********************************************       
                        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位的作用是干吗的,

一周热门 更多>