单片机编程多动作(操作、事件)的设计方法心得(一)

本文探讨了单片机编程中如何处理机器关节的互斥动作和独立动作。针对互斥动作,以头部关节转动为例进行设计说明;而对于独立动作,阐述了如何处理两个没有关联性的动作,如头部与躯干关节的独立操作。
摘要由CSDN通过智能技术生成
    在写单片机程序的时候,一个程序有几个动作(操作,事件…),几个动作还有某种关系,或互斥,或按时间顺序等等。


    本文应该算作程序设计一类,还是比较简单的,权当为梳理记录,不图讲到什么高深道理。

   言归正传,设计程序的时候,一定要有分块的概念,大块包含小块,正如人类逻辑上的包含关系。比如一套广播体操分,几套动作,每一套动作分几Part简单的重复动作。那么我们应该认识到,这些简单的重复动作是不可再分割的,所以原则上,我们可以先把这些简单动作写成一个一个函数,至于后面的设计,可能需要合并这些函数,但是思维上把这些动作分割开是首要的。

【互斥动作】

比如机器的某个关节的几个动作是互斥的,下面以头部关节的转动为例,对互斥的动作进行设计:


#include <stdio.h>
#include <xxx.h>


bool HR_IF//头部转动动作执行或者不执行的开关标记


char HR_FLGS //bit7、6:表示头部转动的模式,参见Mode_HR成员;bit5~0表示头部转动次数


enum Mode_HR
{
    VERTI,
    HORI,
    ALLDIRE,
};




HR_VERTI(){}//头部水平转动函数
HR_HORI(){}//头部竖直转动函数
HR_ALLDIRE(){}//头部全方向转动函数


void HeadRotate(bool HR_if, Mode_HR mod , int times )//参数:开关,方式、次数(0为无限次)
{
    HR_IF = HR_if;
    HR_FLGS| = mod << 6;//Mode_HR有效位只有两位,把它左移到HR_FLGS的高2位
    HR_FLGS| = times & 0x3f;//HR_FLGSd bit5~0表示头部转动次数
}





int main()
{
    machine_init();
    while(1)
    {
        if(HR_if)
        {
            if(HR_FLGS&0xc0 == 0)//HR_FLGS的bit7、6:表示头部转动的模式,
                HR_VERTI();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值