以前我给单片机下载程序是往往要先断电冷启动一下!这样的步骤繁琐又容易按坏按键本人就有深刻的体会,因为一个暑假我在开发板上面就按坏了两个按键。所以我在想有没有其它的办法可以实现不断电下载呢?终于在经过无数次得摸索后(夸张一点)终于实现了不断电下载! 下面的是STC89C52 的官方技术档! 其中提到如果 SW BS 位为1 时复位从 ISP 区开始,如果 SW RST 为1 时产生软件复位!正是这两个特性结合在一起就可以实现不断电下载! 请看下列程序! 只要在程序中加入以下用红色标记了语句据可以实现不断电下载! 不过第一次还得断电下载哦!如果第一次没有断电下载后面的也就不能实现不断电下载!一劳永逸!你说值不值的呢? 温馨提醒:实现不断电下载后 P3.0 口就不能做按键接口了哦! #include #define uchar unsigned char sfr ISP_contro=0xE7; sbit wela=P2^7; sbit dula=P2^6; char num; void display(); sbit key=P3^0; void delay(char xms); uchar code table[]= { 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71, }; void main() { TMOD=0X01; TH0=0X3C; TL0=0XB0; ET0=1; EA=1; EX1=1; TR0=1; while(1) { display(); if(key==0) ISP_contro=0xe0; } } void delay(char xms) { char i,j; for(i=0;i=20) { i=0; num++; if(num>99) num=0; } } 上面的程序实现的是0—99 秒计数!一秒加 1! 下面我就里解释一下实现不断电下载的原理! 在上位机和单片机握手的时候会给 P3.0 口定时的输出低电平! 此时单片机的P3.0 口就会检测到低电平就会实现从 ISP 区开始的复位如果单片机从 ISP 区开始复位的话就会重新下载程序! 下面就开始享受不断电下载的乐趣吧!