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);

}


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

相关文章

    80C51单片机里的程序是如何运行的;前言 我们想要理解单片机是如何运行程序的,我们首先需要了解单片机的组成,我们这里以80C51单片机为例来理解程序在单片机中是如何运行的。 单片......
    以80C51单片机为例讲述单片机如何运行;前言 要想理解单片机是如何运行程序的,首先需要了解单片机的组成。本文以80C51单片机为例,给大家讲一讲程序在单片机中是如何运行的。 单片......
    的同构多核的软件不了解; 比如针对AutoSAR,在AURIX 三核处理器上,上如何运行?看到CSDN上JokerCK的文章,觉得好像懂了,记录如下,水平有限,欢迎指正 阅读前,一些说明: RPC,远程......
    关于单片机程序的执行过程;前言 我们想要理解单片机是如何运行程序的,我们首先需要了解单片机的组成,我们这里以80C51单片机为例来理解程序在单片机中是如何运行的。 单片机的组成 8051单片......
    低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至......
    在日常工作中使用跟踪,你可以真实看到应用程序是如何运行的。你可以检查程序流,直到一个特定的状态,如应用程序崩溃,然后使用跟踪数据来定位问题的起源。 异常或未处理的故障可以由指针问题、非法......
    高 -   主要适用于较大的、复杂的系统 ●   通过功能接口进行跟踪(USB3.0提供了超高带宽!) -   使用案例有限——对小型物联网设备来说不是一个选择 调试异常情况 通过在日常工作中使用跟踪,你可以真实看到应用程序是如何运行......
    ,这也许是C一个缺陷之处。 对于switch…case语句,从概率论上说,绝大多数程序一次只需执行一个匹配的case语句,而每一个这样的case语句后都必须跟一个break。去复杂化大概率事件,这多......
    查看是从哪里跳进这个函数的,这样就能快速定位这种错误了!只有在满足条件下,才会在你设置断点位置自动停止在断点处。比如一个条件下,会导致整个程序出问题,那么你可以在应用程序中添加代码,让其在满足条件时自动停止运行......
    如何用用C语言编写的单片机来控制流水灯;用C语言编写的单片机流水灯程序的软件和硬件,可以让八个LED轮流点亮,每个灯点亮和熄灭时间均为1秒。是利用单片机I/O口控制外部设备的简单例子。当然,在你掌握了本程序......

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

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

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

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

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

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

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