历史上的今天
返回首页

历史上的今天

今天是:2025年12月27日(星期六)

2022年12月27日 | 89C51系列CPU编程器接收CPU程序

2022-12-27 来源:zhihu

#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;}

}

}


推荐阅读

史海拾趣

远阳(FLYOUNG)公司的发展小趣事

国光新业在深耕国内市场的同时,也积极拓展海外市场。公司的电容器产品凭借其优异的性能与可靠的质量,赢得了国内外众多客户的信赖与好评。随着品牌影响力的不断提升,国光新业已成为电子元器件行业中的佼佼者。未来,公司将继续坚持创新驱动发展战略,不断提升产品与服务的品质与竞争力,致力于成为具有国际竞争力的电子元器件供应商。

帝特(DTECH)公司的发展小趣事

2007年,帝特成功获得迪士尼形象授权(泰国),这一里程碑事件标志着帝特品牌在国际市场上的认可度和影响力得到了显著提升。随后,帝特又获得了国内悠嘻猴授权,进一步丰富了其产品线。2008年,帝特荣获“守合同、重信用企业”荣誉称号,这一荣誉不仅是对帝特过去努力的肯定,也为公司的未来发展奠定了坚实基础。

Anaren公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,帝特始终坚持创新驱动的发展战略。公司不断投入研发资源,加强技术创新和产品升级,力求在保持传统业务优势的同时,开拓新的增长点。此外,帝特还积极布局电子专用材料项目,加强半导体芯片封装浆料研发推广,进一步优化产业结构,提升公司的综合竞争力。

以上五个故事概述了帝特(DTECH)公司在电子行业发展的主要历程和关键节点,展现了公司从创立到成长为行业领军企业的艰辛与辉煌。

Galaxy Microelectronics公司的发展小趣事

飞翼科技(FEIYI)在多个领域的发展均体现了其创新驱动的发展战略。无论是无人机技术的智能化应用,还是绿色矿山技术的创新突破,亦或是电容式触摸感应芯片的市场领先,都离不开公司对技术创新的不断追求。飞翼科技积极与高校、研究机构及行业专家开展合作,集聚顶尖科技人才,共同推动技术进步和产业升级。同时,公司还注重知识产权保护,拥有国家专利技术300余项,为企业的持续发展提供了有力保障。通过这些努力,飞翼科技在电子行业中不断崛起,成为行业内的佼佼者。

American Power Management Inc公司的发展小趣事

为了进一步提升竞争力,APMI开始实施国际化发展战略。公司积极开拓海外市场,与国际知名电子制造商建立合作关系。同时,APMI还加强了与国际同行的技术交流与合作,吸收借鉴先进的管理经验和技术成果。通过国际化发展,APMI不仅拓宽了市场渠道,还提升了公司的国际影响力。

Etron公司的发展小趣事

在发展过程中,钰创科技非常注重与产业链上下游企业的合作与共赢。公司积极与国内外知名企业开展合作,共同研发新技术、新产品,推动整个产业链的升级和发展。同时,钰创科技也积极参与行业交流和合作活动,与同行分享经验和技术成果,促进整个行业的共同进步。

问答坊 | AI 解惑

怎样学习wince?

小弟我现在是做windows mobile 的,想转作wince,想请问下前景如何?应该怎样学习?有什么好的资料介绍么?…

查看全部问答>

现在大家开发WINCE是用什么版本的呢?

各位前辈们,请问你们现在开发WINCE的版本是什么?还有开发环境是用哪个操作系统,我是刚刚接触;都不懂,请赐教...…

查看全部问答>

我们公司招聘wince软件开发人员

我们公司招聘WinCE软件开发工程师,要求如下: 经验要求: 1、电子工程、计算机等相关专业毕业,本科及以上学历 2、熟悉WINCE产品开发 3、有WINCE系统驱动程序开发经验者优先 具备技能: 1、英语四级以上水平 2、精通C/C++编程 3、熟悉操作 ...…

查看全部问答>

wince 添加IIC总线驱动

我以前没做过这样的开发,刚接触,不知道从哪里做起,不知道哪位有做过的,可以介绍一下吗? 或者做过的能不能发个文件给我看看? 多谢谢!…

查看全部问答>

PCB软件培训资料

一 怎样区分pcb文件用哪个软件打开? 答:用记事本或写字板先打开pcb文件,若文件是有顺序的数字和字母就可以用Protel 99 SE,若文件是乱码,就可以用.Pads2007打开。 二.Protel 99 SE的pcb格式转换成cam350的gerber文件? 答:1.先用记事本检测 ...…

查看全部问答>

支持动态库rtp中staskSpawn出现的问题,求解决

我用app.vxe起serverRtp.vxe时,如果serverRtp编译成支持动态库(-Xdynamic)的话,serverRtp.vxe在跑一会后就是异常。(cnt大约4万多次,而且跟app.vxe中HEAP_MAX_SIZE大小有关系)。请问有哪位遇到过这种情况吗?是怎么解决的第一个RTP的代码(app.v ...…

查看全部问答>

QuartusII NoDevice的问题

我刚新装的QuartusII,在下载里面显示No Hardware,点击Add Hardware提示kernel mode driver not installed,在网上找了半天,都解决不了,希望高人指点,小弟不胜感激 ~…

查看全部问答>

TI LaunchPad精品课程学习资料收集---comparator_A的应用

   如上图所示,比较器A大体可以分为5个模块。:输入,比较器A核心,低通滤波器,基准电压产生和中断部分。       与它有关的控制寄存器有:CACTL1,CACTL2,CAPD三个寄存器。     ...…

查看全部问答>

群里看到的一个图片,备赛之余轻松一下!

本帖最后由 paulhyde 于 2014-9-15 03:06 编辑 疯啦!    …

查看全部问答>

有用TI的INA210AIDCKR这款电流监控芯片的吗?请问怎么用呢?

我在TI技术论坛上找到这个电路图,我仿照左边的图进行做板,可是AN0的输出不管IN+和IN-有没有接入电路输出都是5V,我甚至都不知道芯片是坏了还是没有工作,我重做了一块板子还是这样,只剩最后一片芯片了,求大神帮忙啊!! \0\0\0eeworldpostqq…

查看全部问答>