一、单片机不能下载程序的原因
1.硬件连接是否正确,电源,是否连接正常,在正确的基础上,板子是否有断线?注意P1.5,P1.6,P1.7,RST引脚和下载接口是否正确连接了,对了,如果P1.5,P1.6,P1.7用作其他用途也有可能下载不成功,俺就在P1.7上挂了个ds18b20,结果总是检测不到器件,并且在下载线插在板子上的时候,ds18b20无法测温,总是显示0000000.
2.电源波纹是否过大,过大别忘了加旁路电容,一个100uf的电解电容和一个104的磁片电容并联即可
3.单片机复位电路是否正确,是否能够保证复位电路在上电的时候能够复位一次单片机,如果复位电路是正确的,那么请检查一下复位电路的电阻阻值,这个千万不能忽视,因为我前几天就犯了这个错误,复位电阻不能小于1K因为,太小了电容放电太快,在单片机RST引脚上高电平持续的时间太短,造成单片机上电复位失败,从而导致无法下载程序,前几天我把120欧姆的电阻当成10K的(因为两者的色环没有区别)结果检查了N次才知道怎么回事,嘻嘻,别嘲笑我菜鸟
4、如果没有晶体能不能下载还没有试过,貌似CPLD没有晶体是可以下载程序的。
5、外部有大负载,比如电机驱动电路,即使不共电源,但是有时候也造成下载程序失败。
6.还有一个更加大意的东西,就是单片机没有插紧——我在做CAN调试的时候就做过这种事情,本来还是通信正常的,等我吃完夜宵回来的时候,居然总是通信出错,检查,唠叨半天,只能自叹倒霉,第二天回来觉得这么倒霉太可惜了,就去抚摸一下单片机,居然发现单片机有点松,我插上去SJA1000又能正常通信了。晕倒晕倒,如果答辩的时候出现的时候出现了这种问题不是死翘翘了!细节决定实力,深有体会。
7、电脑静电电压太高,导致单片机不工作,自然下载不了了,俺的电脑静电好猛,把俺电痛了
二、单片机可以下载程序,但是不能执行程序的原因
1.极有可能单片机的EA管脚没有接VCC,没有接是可以下载程序的,(并且ALE也会输出二分之一的晶体频率)——这是我写错了,估计是太累了,晕了,不好意思,下面有位大哥说了,一般情况下是六分之一的————为什么我总是粗心大意?!EA接VCC代表执行内部代码,不接执行外部ROM程序,我们现在很少用外部EEPROM,肯定要接EA到VCC的
三、单片机抗干扰设计
1.我们在用单片机定时器测一个方波的频率的时候,当单片机没有烧写程序的时候,方波很好,很标准,但是烧写程序之后,方波的形状就找不到了,多了很多噪声,很郁闷吧,建议你加个4.7K上拉排阻试试,并且注意前面的电源滤波旁路。要求不高的这两招都可以解决,要求高的那么就是这两个模块通过光电耦合器件隔离,使用独立的电源,不共同地就可以减小干扰了。对了P0口必须加上拉电阻。
2.驱动外部较大功率器件的时候一定要用光电耦合器件隔离,使用独立电源,否则单片机会死机。以前有个师兄参加广西电子设计竞赛做液位测量吧,不用光电耦合器件隔离,还使用同一个电源,结果,单片机不停的死机,数码管一亮一灭,结果没有出线。
以上都是很菜鸟的经验,希望批评指正。