这个164测试小程序里的怪现象

2019-03-24 17:18发布

       这是一个一块164接在串口进行测试的小程序,程序中原本没有delay语句,在keil上仿真正常,但是搭建了电路后出现了怪现象,在164输出端应该只有一个led亮,结果所有的led都亮,只不过亮度稍低一些(见图片1)。如果加上delay语句,就会出现想要的结果(见图片2)。经过试验发现,当延时小于10ms时就开始出现以上现象,延时时间越小越明显,也就是说延时时间越小,其他不该亮的亮度越高。我自己分析,没有delar语句,当p10==0,164输出永远是0xfe ,就相当于延时了,为什么非得有延时语句?在实际使用中我打算在164的每一个输出端接一个光电隔离,再接2803驱动负载,如果不要延时语句,将会出现什么问题?请有经验的朋友指教指教,谢谢!!

void main()
{
        while(1)
        {
                if(p10==0)
                {
                        SerialPortOnly164(0xfe);  
                        delay_1ms(10);
                }
                else
                {
                        SerialPortOnly164(0xff);          
                        delay_1ms(10);
                }
        }
}


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。