|
/**************************************************
文件名:STC免斷電下載
功能:實現(xiàn)免斷電下載單片機程序
原理:SWBS位為1時復(fù)位從ISP區(qū)開始,如果SWRST為1時產(chǎn)生軟件復(fù)位!正是這兩個特性結(jié)合在一起就可以實現(xiàn)不斷電下載!
在上位機和單片機握手的時候會給P3.0口定時的輸出低電平!
此時單片機的P3.0口就會檢測到低電平就會實現(xiàn)從ISP區(qū)開始的復(fù)位如果單片機從ISP區(qū)開始復(fù)位的話就會重新下載程序!
**************************************************/
#include<reg52.h>
#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<xms;i++)
{
for(j=0;j<110;j++)
{;}
};
}
void display()
{
dula=1;
P0=table[num/10];
dula=0;
P0=0x00;
wela=1;
P0=0xfe;
wela=0;
delay(10);
wela=1;
P0=0xfd;
wela=0;
P0=0x00;
dula=1;
P0=table[num%10];
dula=0;
delay(10);
}
void time ()interrupt 1 using 1
{
uchar i;
TH0=0X3C;
TL0=0XB0;
i++;
if(i>=20)
{
i=0;
num++;
if(num>99)
num=0;
}
}
|
|