在进入实验2时,要求如下: (1)开机后控制四个发光管循环点亮,规律如下图所示: O X X X X O X X X X O X X X X O 循环运行,间隔一秒变化一次,显示出闪烁效果。 当有中断信号(INT0)出现时(用手按一下负脉冲发生器的按键),停止闪烁,四个发光管的状态分别受四个开关的控制,对应的开关推上去时发光管亮,对应的开关推下来时发光管灭。 (2)使得上述两种工作状态在每按一次按中断键后发生一次变化。 程序设想:封装函数1实现四个发光二极管循环点亮,封装函数2实现四个开关控制四个发光二极管。在中断中设置标志位flag,在主函数中判断flag的状态,若为1,则进入函数1,若为0则进入函数2。 实际效果:实时性差,每次触发中断的时候不能立即的在函数1与函数2之间切换。 原因:进入中断前,主函数while(1)大循环中正在执行函数1或函数2,在中断服务函数中只是进行flag标志位的翻转,然后又接着返回主函数继续执行函数1或函数2,使得从外界看来不能立即进行功能的翻转,表现为宏观上的实时性差 如何修改程序,可以在中断的每次触发立即进行功能上的翻转?
|