用PIC16F877A写了一个用于产品测试的程序,接近完工,但却不幸出了点问题:程序在循环运行多次(几十次,甚至上百次)后出现PORTB口不受程序控制了。ICD2仿真器又用不了,板上有12V继电器,一动作ICD2就复位了,看来是这个ICD2抗干扰能力太差了,真气人!经过其它方法多次实验后发现是MCU的TRISB数据被改了,所以导致再运行后面的程序时,PORTB口就不受程序控制了,要它输出低电平时,它竟输出个1.5-2V的电压。
那又是什么原因会使TRISB莫明奇妙被改了?
PIC的抗干扰能力比较好呀,所以一直以为是软件哪里出来问题,结果反复检查和优化程序,可问题依然存在!
无奈呀,只有转向硬件了,要么是上面的继电器,要么是变压器,最大可能是继电器,当时继电器靠MCU很近,拆下用引线引到外面再测试,结果让我失望,问题依然存在。拆掉变压器,庆幸的是,问题解决了,变压器还是要用的呀,最后将其外壳接地,OK!搞掂!
总结:1.当系统出现问题时应首先分清问题的方向,若是软件的问题,造成的现象一般是比较有规
律;若是硬件干扰的话,现象很没有规律,时有时无。
2.对于一些系统作了更改后出现的问题,要重点检查更改过的地方不,包括软件和硬件。
此帖出自
小平头技术问答
一周热门 更多>