历史上的今天
今天是: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);
}
史海拾趣
|
年初到现在,接触DSP已经半年了,由于公司没有人指导,做了这么久都没出什么大的成果,也走了不少的弯路。以前做单片机用C编过一些程序,个人觉得还可以。现在看来也只是在吃以前在学校里面一些C语言皮毛的老本,加上一些网上说的所谓的技巧什么的 ...… 查看全部问答> |
|
在wince中,当我们用触摸笔点一下屏幕的时候,会在围绕触摸笔在触摸笔周围画一个由几个小黑圆点围成的圆圈,我想问一下,这部分代码在什么位置?调用的什么函数或者库?… 查看全部问答> |
|
各位高手,我想用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; ...… 查看全部问答> |
|
就是当你在线仿真调试的时候,变量多的时候MDK的变量(有些是不能显示出来,) 我不知道这算不算是BUG,现在我把我个人经历写出来,希望同行有类似经历时,多留个心眼,换个思维解决,说不定不是你的错! 在我的程序中,刚开始是KEIL MDK建 ...… 查看全部问答> |
|
我想用STM8S207和一个解码芯片进行SPI通信,ST芯片只接受,而解码芯片只发送,两者之间有3根线连接,一根CS片选,一根时钟,一根数据线,然后我用的STVD和source insight进行编程,其中sourceinsight库中有2LINES_FULLDUPLEX, 2LI ...… 查看全部问答> |




