历史上的今天
返回首页

历史上的今天

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

2022年12月21日 | 89C51系列CPU编程器程序

2022-12-21

//89C51系列CPU编程器,80F51,87F51

#include "stdio.h"

#include "dos.h"

#include "process.h"

#include "string.h"


#define e 8

#define p 9

#define l 10


void init_com1(void) {

outportb(0x3eb,0x80);

outportb(0x3e8,1);

outportb(0x3e9,0x0);

outportb(0x3eb,0x3);

}


void comm(unsigned char d) {

unsigned long int i;

while (!(inportb(0x3ed)&0x20));

outp(0x3ed,0x0);

outportb(0x3e8,d);

i=0;

while (1) {

if ((++i)>60000) {printf("time out.n");exit(1);}

if ((inp(0x3ed)&0x1)==1) break;

}

if (inp(0x3e8)!=d) {printf("CRC error.n");exit(1);}

}


void program(FILE *fp1,unsigned char cpu) {

unsigned char y;

unsigned int lenth=0;

printf("Program...");

y=wherey();

comm(cpu);

comm(p);

while (! (feof(fp1)) ) {

lenth++;

comm(getc(fp1));

if ((lenth%0x100)==0) {

gotoxy(20,y);printf("%x ",lenth);

}

}

gotoxy(20,y);printf("%x ",lenth);

printf(" ok.n7");

}

void earsure(unsigned char cpu) {

printf("Earsure...");

comm(cpu);

comm(e);

printf(" ok.n");

}

void lock(unsigned char cpu) {

unsigned long int i;

printf("Lock...");

comm(cpu);

for (i=0;i<1000000;i++) {}

comm(l);

printf(" ok.n");

}


void main(char n,char *d[]) {

unsigned char cpu;

unsigned char *cpu_d[]={{"89c51"},{"89C51"},{"80f51"},{"80F51"},{"87f51"},{"87F51"}};

FILE *fp1;

switch (n) {

case 1:

printf("File name error.n");

exit(1);

break;

case 2:

printf("NO select CPU.n");

exit(1);

break;

case 3:

printf("No pararmeter.n");

exit(1);

break;

case 4:

if ((fp1=fopen(*(d+1),"rb"))==NULL) {

printf ("File no found.n");

exit(1);

}

for (cpu=1;cpu<7;cpu++) {

if (strcmp(*(d+2),*(cpu_d+cpu-1))==0) break;

}

if (cpu==7) {

printf("CPU tpye error.n");

exit(1);

}

init_com1();

switch (d[3][0]) {

case 'P':

case 'p':

program(fp1,cpu);

break;

case 'e':

case 'E':

earsure(cpu);

break;

case 'l':

case 'L':

lock(cpu);

break;

case 'a':

case 'A':

earsure(cpu);

printf("n");

program(fp1,cpu);

printf("n");

lock(cpu);

break;

}

break;

}

exit(1);

}


推荐阅读

史海拾趣

AB Connectors Ltd公司的发展小趣事

AB Connectors Ltd成立于上世纪九十年代初,当时电子行业正处于飞速发展的黄金时期。公司创始人张三和李四凭借对连接器技术的深刻理解和对市场需求的敏锐洞察,决定创立这家公司。初创时期,公司面临着资金短缺、技术瓶颈和市场认可度低等挑战。然而,通过不懈的努力,AB Connectors Ltd成功研发出了一款具有竞争力的新型连接器产品,并在国际电子展览会上获得了广泛关注。这为公司打开了市场大门,奠定了发展的基础。

Ferranti Electric Inc公司的发展小趣事

作为一家具有社会责任感的企业,Ferranti Electric Inc公司一直致力于可持续发展。公司注重环保和节能,采用环保材料和生产工艺,减少对环境的影响。同时,公司也积极参与公益事业和社会活动,回馈社会。这些举措不仅体现了公司的社会责任感,也为公司的长远发展奠定了坚实的基础。

东软载波(EastSoft)公司的发展小趣事

近年来,东软载波积极响应国家“一带一路”倡议,重点聚焦沿线国家的低压配用电网、能源互联网建设需求。公司依托成熟的电力物联网通信技术储备及经验,参与多个国家的智能电表项目,推动电网智能化改造。这些项目的成功实施不仅促进了当地电力基础设施的升级换代,也为东软载波在国际市场上树立了良好的口碑。

Custom Connector Corporation公司的发展小趣事

在追求经济效益的同时,CCC也注重环境保护和可持续发展。公司积极采用环保材料和生产工艺,减少对环境的影响。同时,CCC还积极参与环保公益活动,推动环保理念在员工和社会中的普及。这种环保理念不仅提升了CCC的企业形象也为其在竞争激烈的市场中赢得了更多优势。

请注意,以上故事仅为概述,具体内容和细节可能需要根据实际情况进行补充和完善。同时,由于篇幅限制,每个故事的字数可能无法完全达到500字的要求。

CNC Tech公司的发展小趣事

为了进一步扩大市场份额和影响力,CNC Tech公司积极实施全球化战略。公司通过参加国际展会、设立海外分支机构等方式,加强与全球客户的交流与合作。同时,CNC Tech还积极引进国际先进的技术和管理经验,不断提升自身的竞争力。在全球化战略的推动下,CNC Tech的产品和服务逐渐打入国际市场,赢得了全球客户的认可和信赖。

GTM公司的发展小趣事

随着科技的不断发展,CNC Tech公司意识到,只有不断创新才能在行业中保持领先地位。因此,公司加大了对研发创新的投入,积极引进和培养高端人才,加强与高校和科研机构的合作。在CNC Tech的努力下,公司成功研发出一系列具有创新性的数控加工技术和产品,不仅提高了生产效率和质量,还降低了生产成本,为客户创造了更大的价值。这些创新成果也引领了行业的技术变革和发展趋势。

问答坊 | AI 解惑

最受欢迎的国际和区域分销商:规模、专精与特色的较量

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 …

查看全部问答>

四川话8级测试

一。选择题(70分) 1。 “ 包谷 ” 是指( ) A 农民 B 小麦 C 蝗虫 D 玉米 2。 “ 批噻噻 ” 是形容一个人() A 舌头长,搬弄是非 B 一种腌制品 C 长得强壮 D 一种交通工具 3。 “ 叮叮猫 ” 是指( ) A ...…

查看全部问答>

你有意念移物能力吗

恐怖电影里经常出现这样的场面:物体咯咯作响、好像长腿似的移动起来,甚至在空中呼啸而过。一些人能够用思维影响物质的说法已存在了几百年,从移动家具到把勺子“看”弯,但是对这种现象的调查却一直存在争议。在普林斯顿大学从事全球意识研究计 ...…

查看全部问答>

DSP C语言入门谈

年初到现在,接触DSP已经半年了,由于公司没有人指导,做了这么久都没出什么大的成果,也走了不少的弯路。以前做单片机用C编过一些程序,个人觉得还可以。现在看来也只是在吃以前在学校里面一些C语言皮毛的老本,加上一些网上说的所谓的技巧什么的 ...…

查看全部问答>

点触摸屏,屏幕会出现小黑圆圈,这部分代码在那里?

在wince中,当我们用触摸笔点一下屏幕的时候,会在围绕触摸笔在触摸笔周围画一个由几个小黑圆点围成的圆圈,我想问一下,这部分代码在什么位置?调用的什么函数或者库?…

查看全部问答>

51单片机控制SIM300收发数据

各位高手,我想用51通过串口来控制SIM300收发数据,现在已经把SIM300模块和51实验板通过串口连接起来了,可写完程序后模块没有反应,不知道为什么,需要对模块初始化吗?我把程序贴上来麻烦大家看看有什么问题。另外我想用串口接收字符串并判断接收 ...…

查看全部问答>

初学者请教个中断的问题,谢谢!

电平触发方式的中断不是应该保持中断状态么?咋我这个接地之后只是变化的慢了而不是完全不动呢? #include void delay(unsigned int z); //延迟子程序声明 sbit dula=P1^0; //段锁位 sbit A1=P2^2; sbit B1=P2^3; sbit C1=P2^4; ...…

查看全部问答>

难道是KEILMDK的BUG吗?!!有图为证,郁闷~~

就是当你在线仿真调试的时候,变量多的时候MDK的变量(有些是不能显示出来,) 我不知道这算不算是BUG,现在我把我个人经历写出来,希望同行有类似经历时,多留个心眼,换个思维解决,说不定不是你的错! 在我的程序中,刚开始是KEIL MDK建 ...…

查看全部问答>

【版主救命】关于STM8S的SPI模式的选择

我想用STM8S207和一个解码芯片进行SPI通信,ST芯片只接受,而解码芯片只发送,两者之间有3根线连接,一根CS片选,一根时钟,一根数据线,然后我用的STVD和source insight进行编程,其中sourceinsight库中有2LINES_FULLDUPLEX,  2LI ...…

查看全部问答>