设计思路:
1.单片机收到电机启动命令号,调用启动电机程序,启动电机。电机启动后通过行程标志判断电机是否到达预定行程,如果到达,停止电机,调用电机停止函数。
2.行程计算是通过中断函数用定时器来实现的。假设到达预定行程需要5s,则在5s的时候,置位中断标志位。主函数判断标志位,如果为1,则调用电机停止函数。
- /********************T1定时器定时中断**************************/
- if(TMR1IF&&TMR1IE)
- {
- TMR1IF=0;
- t1_count++;
- TMR1H=0xb;
- TMR1L=0xdb;//延时时间:100ms
- t1_flag=0;//进入中断清除T1定时器标志位;定时时间到后置位T1定时器标志位。
- if(t1_count>=20)
- {
- t1_count=0;
- LED1=~LED1;
- t1_flag=1;
- }
- }
- switch(Receive_Array[3])
- {
- case 0x33://启动电机
- BagData_uart(0x33,2,Motor_OK);//返回启动成功后的数据包
- motor_start();
- while(!t1_flag);
- motor_stop();
- //while(t1_flag==0);
- //jiansu=1;
- //while(t1_flag)
- //{
- // motor_stop();//debug执行不到此语句
- //break;//终止while循环
- //}
- break;
|