有ISP 功能的单片机(如:P89C51Rx+系列P89C51Rx2 系列P89C66x 系列等)在复位时存在地址引导问题,也就是从什么地址开始运行.初用者一般感到疑惑其逻辑关系如下:
从流程图可解析很多初用者经常遇到的问题
1. 我的程序调试好后烧写到芯片后好像不运行的解决办法.
a. 检查时钟电路是否正常,最常见的错误是不起振,如虚焊与晶体匹配的电容值不合适。
b. 检查复位电路是否正常,用手工复位的方法可确认复位电路是否正常。
c. 确认配置字节,Status=0。
d. 确认芯片复位时进入ISP 状态的硬件条件不成立即: PSEN=高电平and (ALE=高电平或悬空) 这个条件不成立。
其中a b 两项是检查单片机是否正常运行的常规方法而且是单片机运行的必要条件,c d 两项是检查有ISP 功能的单片机是否运行用户程序的充分条件.
2. 烧写到芯片的程序能正常运行但不能对他再次进行ISP 状态的解决办法
a. 用并行编程器确认配置字节Vector 指向相应的Boot Rom,P89C51Rx+系列P89C51Rx2x 系列P89C66x 系列为FC ,其他系列请参考相应数据手册。要想下次还能进入ISP 状态,在每次退出ISP 状态前确保Vector 指向相应的Boot Rom, 否则只能是用并行编程器修改Vector。
b. 确认芯片复位时进入ISP 状态的硬件条件成立即PSEN=高电平and (ALE=高电平或悬空) 这个条件成立。
3. 烧写到芯片的程序能正常运行,运行一段时间以后不正常了。ISP 功能给单片机应用带来了灵活性,但把握不好会适得其反,运行一段时间以后不正常了通常是由于单片机意外地进入ISP 状态并修改程序的解决办法。
a. 确保编程器写入的可靠性如使用WINISP 编程确认它是最新版本。
b. 确保芯片运行用户程序状态下复位时进入ISP 状态的硬件条件不成立建议PSEN 端接一上拉电阻到电源端并联一小电容到该电阻。
c. 在用户程序中关闭Boot Rom。