这是一个一块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);
}
}
}
此帖出自
小平头技术问答
一周热门 更多>