运行这个程序的文件在本书CD中第12章的ccs\PPM文件夹。我们感兴趣的主文件是PPM_ISRs.c,PPM_ISRs1.c和PPM_ISRs2.c和PPM_ISRs3.c。
重要提示:你只能一次调用这些ISR文件中的一个作为你的工程的一个部分。ISR文件包含必要的声明和执行实际的滤波操作。
我们将首先讨论PPM_ISRs.c。与PPM代码相关的声明程序如下。
程序清单12.1:PPM相关的声明部分
程序清单12.1的解释如下。
(1)第1行:设定LED保持开态的最小时间,这个时间需要等于复位时间Ts。在这里它等于4800/48000s=0.1s。
(2)第3行:定义一个变量LED_Mask来关闭所有的LED。
(3)第4~6行:定义一个变量来表示3个LED的开态。
程序清单12.2:PPM_ISR.c的举例的PPM代码(www.xing528.com)
程序清单12.2有关PPM代码的解释如下。
(1)第2~5行:如果左或者右通道中的一个或所有的幅度都大于28000,点亮LED1。计数器设定为4800。这个计数器使得灯开0.1s。
(2)第6~11行:这部分代码使得LED1计数器减少1,一旦计数器减少到0,LED关闭。
(3)第14~17行:如果左右通道中的一个或所有的幅度大于32000,点亮LED2。计数器也被设定为4800。这个计数器使得灯开0.1s。
(4)第18~23行:这部分代码使得LED2的计数器减1,一旦计数器减少到0,LED关闭。
(5)第26~29行:如果左右通道中的一个或所有的幅度大于32767。LED3开启。计数器设定为4800。这个计数器使得灯开0.1s。
(6)第30~35行:这部分代码使得LED3的计数器减1,一旦计数器减少到0,LED关闭。
(7)第37行:调用UpdataLEDs()子程序,顾名思义,它用于更新系统LED的状态。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。