一、代码如下:
二、显示界面
八盏LED灯会以很微弱的灯光闪烁。
三、分析原因
现场被破坏:Led_Proc()函数中,LED和蜂鸣器的操作是直接对端口进行赋值,没有考虑到操作过程中中断的影响。如果在对端口操作期间,恰好发生中断,中断里面又加入了Seg_Disp()数码管显示函数,也对相关端口有读写操作,为此出现了现场被破坏,导致LED状态异常闪烁,出现暗闪现象。
四、解决办法
可以采用关中断(EA = 0)的方式,在对LED端口进行相关操作时,临时屏蔽中断;操作完成之后再开启中断(EA = 1),确保LED端口操作的原则性。
修改后代码如下: