89C51系列CPU编程器接收CPU程序

发布时间:2022-12-27  

#include

#include

#include


#define e 8

#define p 9

#define l 10


sbit led=P3^2;

sbit p27=P2^7;

sbit p26=P2^6;

sbit p36=P3^6;

sbit p37=P3^7;

sbit rst=P3^3;

sbit ale=P3^5;

sbit vpp=P3^4;


bit b_break;

unsigned int adds;



// 13.8mS

void int_t0(void) interrupt 1 {

TH0=-100;

b_break=1;

}


void wait(unsigned char w) {

unsigned int t=w*184;

b_break=0;

TL0=-t%256-1;TH0=-t/256;

while (b_break==0) {}

}


void nop(void) {

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

_nop_();_nop_();_nop_();_nop_();

}


unsigned char command(void) {

TH0=-100;b_break=0;

while (RI==0) {if (b_break==1) return(0);}

RI=0;

return(SBUF);

}


void earsure(unsigned char cpu) {

switch (cpu) {

case 1: //89C51

case 2:rst=p26=1;p27=p36=p37=0;nop();vpp=1;nop();

ale=0;wait(110);ale=1;nop();

break;

case 3:

case 4:break;

case 5:

case 6:break;

}

}


void program(unsigned char cpu) {

unsigned int bdata adds=0;

unsigned char d;

switch (cpu) {

case 1: //89C51

case 2:

p36=p37=1;rst=1;

while (1) {

TH0=-100;b_break=0;

while (RI==0) {if (b_break==1) return;}

RI=0;

d=SBUF;

//address

P0=adds%256;

P2=adds/256;

p27=1;

//data

P1=d;

nop(); //48clcl

//vpp

vpp=1;

nop(); //48clcl

//ale

ale=0;

wait(1);//100uS

ale=1;

nop(); //10uS

vpp=0;

nop(); //48clcl

p27=0;

nop(); //48clcl

P1=0xff;

TH0=-100;b_break=0;

while (d!=P1) {if (b_break==1) return;} //data polling

SBUF=d;

adds++;

}

break;

case 3:

case 4:

case 5:

case 6:break;

}

}


void lock(unsigned char cpu) {

unsigned char i;

switch (cpu) {

case 1: //89c51

case 2:

//lock 1

rst=p26=p36=p27=p37=1;nop();

vpp=1;

nop();

ale=0;

// for (i=0;i<6;i++) wait(100);

wait(1);

ale=1;

nop();

vpp=0;

nop();

//lock 2

rst=p26=p27=1;p36=p37=0;nop();

vpp=1;

nop();

ale=0;

// for (i=0;i<6;i++) wait(100);

wait(1);

ale=1;

nop();

vpp=0;

nop();

//lock 3

rst=p26=p36=1;p27=p37=0;nop();

vpp=1;

nop();

ale=0;

// for (i=0;i<6;i++) wait(100);

wait(1);

ale=1;

nop();

vpp=0;

nop();

break;

case 3:

case 4:

case 5:

case 6:break;

}

}


void main(void) {

unsigned char disp,flash,temp,cpu;

EA=1;

SCON=0xd8;PCON=0x80;

TMOD=0x21;

TL1=TH1=0xff;TR1=1;

TH0=-100;ET0=TR0=1;

flash=0x80;

while (1) {

temp=command();

switch (temp) {

case 0:

case 1: //89c51

case 2: //89C52

case 3: //80f51

case 4: //80F52

case 5: //87F51

case 6:cpu=temp;SBUF=temp;break;//87f52

case e:SBUF=temp;earsure(cpu);break; //erasure

case p:SBUF=temp;program(cpu);break; //program

case l:lock(cpu);SBUF=temp;break; //lock

default:SBUF=temp;break;

}

b_break=0;

if ((++disp)>flash) {disp=0;led=!led;}

}

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>