从上面可以看出比较麻烦,那么有没有一种更为简单的方法呢,从上面的视频得知只要对0xe7这个地址赋予0x60就可以完成下载程序的功能了,那么我就想,stc下载软件用的是串口,用串口就必然用要发送数据到单片机,而单片机接收引脚是P3^0,那么我们只要检测这个引脚有没有电平的变化,如果有变化那么就对0xe7这个地址赋予0x60,就会完成自动下载的命令了,有了思路就开始验证。经过调试结果成功,说明本人只是对STC89C52RC做过测试,其它芯片能否可行请自行测试,以下为完整的程序,在stc下载软件中不需要做任何的设置,就像平常下载程序一样就行。
/*** STC单片机免断电下载程序的另一种更简单的方法*******************************************************************
**程序功能:STC单片机免断电下载程序
**芯片型号:STC89C52RC
**晶振频率:11.0592M
**编写日期:2010年11月23日
**编写人员:wang QQ:349259818 Email:hongfadg@163.com
**备注说明:
*******************************************************************/
//以下为所需的头文件
//#includeabsacc.h>
//#includestring.h>
//#includestdio.h>
//#include INTRINS.H>
#include reg52.H>
//定义关键字方便使用
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sfr iap=0xe7; //定义下载命令
sbit p30=P3^0; //串口接收引脚
/* 主函数
*******************************************************************
**函数原型:main()
**函数功能:
**输入参数:无
**输出参数:无
**备注说明:完成程序的主要功能
*******************************************************************/
main()
{
while(1) //主循环
{
if(!p30) //判断串口是不是有数据
{
iap=0x60; //执行自动下载的命令
}
}
}
/*** STC单片机免断电下载程序的另一种更简单的方法*******************************************************************
**程序功能:STC单片机免断电下载程序
**芯片型号:STC89C52RC
**晶振频率:11.0592M
**编写日期:2010年11月23日
**编写人员:wang QQ:349259818 Email:hongfadg@163.com
**备注说明:
*******************************************************************/
//以下为所需的头文件
//#includeabsacc.h>
//#includestring.h>
//#includestdio.h>
//#include INTRINS.H>
#include reg52.H>
//定义关键字方便使用
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sfr iap=0xe7; //定义下载命令
sbit p30=P3^0; //串口接收引脚
/* 主函数
*******************************************************************
**函数原型:main()
**函数功能:
**输入参数:无
**输出参数:无
**备注说明:完成程序的主要功能
*******************************************************************/
main()
{
while(1) //主循环
{
if(!p30) //判断串口是不是有数据
{
iap=0x60; //执行自动下载的命令
}
}
}