1、定义闪一次:亮0.3s,暗0.2s。需要两个计时器,分别:LT=0.3s=0.3s/125us=2400;AT=0.2s=0.2s/125us=1600。
2、闪三次。需要一个计时器,TT=3。
3、灯明亮用一个标记:B_LAMP。
现在可以写程序了:
键按下后做下例事件:
1、初化:LT、AT、TT、灯亮,
2、对依序对LT、AT、TT中<>0的进行计时,=0的则跳过。
中断服务程序:
1、LT =0,进入下一步(不在亮灯时间内)
LT<>0,做LT-1<>0时:跳过以下各步。(灯亮还未结束,继续计时)
LT-1 =0时:关灯B_LAMP=0。(灯亮结束)跳过以下各步。
2、AT =0,进入下一步(不在暗灯时间内)
AT<>0,做AT-1<>0时:跳过以下各步。(灯暗还未结束,继续计时)
AT-1 =0时:亮灯B_LAMP=1。(灯暗结束)跳过以下各步。
3、TT =0, 三次全部分过程结束了,跳出。
TT<>0,做TT-1,复位LT=2400,AT=1600,亮灯B_LAMP=1(三次未到,继续再来)。 |