0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

89C51编程器,89c51 programmer

454398 2018-09-20 19:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

89C51编程器,89c51 programmer

关键字:89C51编程器

#include "at89x52.h"
#include "stdio.h"
#include "intrins.h"
#include "ctype.h"

sbit rdy=P3^2;
sbit vpp=P3^3;
sbit p26=P3^4;
sbit p27=P3^5;
sbit p36=P3^6;
sbit p37=P3^7;
sbit prog=P2^7;

void init_serial()
{
SCON=0x50; /*mode 1*/
TMOD=0x20;
TH1=0xfd;
PCON=0x80; /*38400bps*/
TR1=1; /*load tmr1*/
TI=1;
ES=1;}

void init_pro()
{
p26=0;
p27=0;
p36=0;
p37=0;
vpp=1;
prog=1;
}

void sendbyte(unsigned char da) /*send a byte*/
{
while(!TI);
TI=0;
SBUF=da;}

unsigned char IntToAscii(unsigned char a) /*change DEC to ASCII HEX code*/
{
if(a<10) return a+48;
if(a>9) return a+55;}

unsigned int getadr() /*get 5 diti DEC adr*/
{
unsigned char i,a[5];
for(i=0;i<5;i++)
{
while(!RI);
RI=0;
a[i]=SBUF-48;
}
return a[0]*10000+a[1]*1000+a[2]*100+a[3]*10+a[4];}

unsigned char getdata() /*get 2 diti HEX data*/
{
unsigned char d1,d2;
while(!RI);
RI=0;
d1=toint(SBUF);
while(!RI);
RI=0;
d2=toint(SBUF);
return d1*16+d2;}

unsigned int detchip(int adr)
{
P0=0xff;
P1=adr%256;P2=adr/256;
init_pro();
_nop_();_nop_();_nop_();_nop_();_nop_(); /*delay 10 us*/
_nop_();_nop_();_nop_();_nop_();_nop_();
return P0;}

void read()
{
unsigned int adr,maxadr;
unsigned char h,l;
P0=0xff;
maxadr=getadr();
for(adr=0;adr{
P1=adr%256;P2=adr/256;
p26=0;
p27=0;
p36=1;
p37=1;
vpp=1;
prog=1;
h=IntToAscii(P0/16);
sendbyte(h);
l=IntToAscii(P0%16);
sendbyte(l);}
init_pro();}

unsigned int test(unsigned int nn)
{
unsigned int adr,counter=0;
P0=0xff;
for(adr=0;adr{
P1=adr%256;P2=adr/256;
p26=0;
p27=0;
p36=1;
p37=1;
vpp=1;
prog=1;
_nop_();_nop_();_nop_();_nop_();_nop_(); /*delay 10 us*/
_nop_();_nop_();_nop_();_nop_();_nop_();
if(P0!=0xff) counter++;}
init_pro();
return counter;}

unsigned char erase(unsigned int nn,unsigned int p)
{
unsigned int i;
P0=0xff;
p26=1;
p27=0;
p36=0;
p37=0;
vpp=0;
prog=1;
for(i=0;i<50000;i++) _nop_();
switch(p)
{
case 0 : prog=0;
prog=1;
break;
case 1 : prog=0;
_nop_();
prog=1;
break;
case 2 : prog=0;
_nop_();_nop_();
prog=1;
break;
case 3 : prog=0;
_nop_();_nop_();_nop_();
prog=1;
break;
case 4 : prog=0;
_nop_();_nop_();_nop_();_nop_();
prog=1;
break;
case 5 : prog=0;
_nop_();_nop_();_nop_();_nop_();_nop_();
prog=1;
break;
case 6 : prog=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
prog=1;
break;
case 7 : prog=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
prog=1;
break;
case 8 : prog=0;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
prog=1;
break;
default: prog=0;
for(i=0;i

prog=1;
break;}
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
vpp=1;
for(i=0;i

if(test(nn)==0) return 's';
else return 'f';}

unsigned char write()
{
unsigned int adr,d,i;
p26=0;
p27=1;
p36=1;
p37=1;
vpp=0;
prog=1;
for(i=0;i<4000;i++) _nop_();
adr=getadr();
d=getdata();
while(1)
{
if(adr>50000) break;
P1=adr%256;P2=(adr/256)|0x80;
P0=d;
TI=0;
SBUF='s';
prog=0;
_nop_();_nop_();_nop_();
prog=1;
adr=getadr();
d=getdata();
while(!rdy);}
init_pro();
return 'f';}

unsigned char lock(unsigned char level)
{
unsigned int i;
vpp=0;
if(level==1) {p26=1;p27=1;p36=1;p37=1;}
if(level==2) {p26=1;p27=1;p36=0;p37=0;}
if(level==3) {p26=1;p27=0;p36=1;p37=0;}
for(i=0;i<4000;i++) _nop_();
prog=1;
_nop_();_nop_();_nop_();_nop_();_nop_(); /*delay 10 us*/
_nop_();_nop_();_nop_();_nop_();_nop_();
prog=0;
_nop_();_nop_();_nop_();_nop_();_nop_(); /*delay 10 us*/
_nop_();_nop_();_nop_();_nop_();_nop_();
prog=1;
_nop_();_nop_();_nop_();_nop_();_nop_();
while(!rdy);
init_pro();
return 'o';}

void main()
{
unsigned char data c;
unsigned int data adr,l,dx;
init_pro();
init_serial();
while(1)
{
init_pro();
scanf("%c",&c);
switch(c)
{
case 'c' : printf("%c",'o');
break;
case 'd' : scanf("%x",&adr);
printf("%x",detchip(adr));
break;
case 't' : scanf("%u",&dx);
printf("%u",test(dx));
break;
case 'r' : read();
break;
case 'e' : scanf("%u,%u",&adr,&dx);
printf("%c",erase(adr,dx));
break;
case 'w' : printf("%c",write());
break;
case 'l' : scanf("%u",&l);
printf("%c",lock(l));
break;
case 'h' : printf("**********Er6y Programmer Help Window***********\n");
break;
default : break;}


}
}



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    T89C51CC02微控制:设计与应用全解析

    T89C51CC02微控制:设计与应用全解析 在电子设计领域,一款性能卓越且功能丰富的微控制能为项目带来无限可能。T89C51CC02作为一款低引脚数的8位Flash微控制
    的头像 发表于 04-28 16:50 87次阅读

    T89C51CC02微控制:功能特性与应用解析

    T89C51CC02微控制:功能特性与应用解析 在电子工程领域,微控制是众多项目的核心组件。今天,我们要深入探讨的是T89C51CC02这款8位微控制
    的头像 发表于 04-08 15:00 235次阅读

    T89C51RD2微控制:高性能8位解决方案

    T89C51RD2微控制:高性能8位解决方案 在电子设计领域,选择一款合适的微控制对于项目的成功至关重要。T89C51RD2作为一款高性能的8位CMOS Flash微控制
    的头像 发表于 04-08 14:55 227次阅读

    T89C51CC01微控制:特性、应用与技术细节深度解析

    T89C51CC01微控制:特性、应用与技术细节深度解析 在嵌入式系统开发领域,微控制是核心组件之一,它的性能和功能直接影响着整个系统的表现。T89C51CC01作为一款增强型8位
    的头像 发表于 04-08 14:40 180次阅读

    A/T89C51AC2微控制:功能特性与应用解析

    A/T89C51AC2微控制:功能特性与应用解析 在电子设计领域,微控制如同大脑一般,指挥着各种电子设备的运行。A/T89C51AC2作为一款高性能的8位微控制
    的头像 发表于 04-08 14:40 205次阅读

    深入剖析AT89C51RC:8位微控制的卓越之选

    深入剖析AT89C51RC:8位微控制的卓越之选 引言 在嵌入式系统的广阔领域中,微控制扮演着至关重要的角色。AT89C51RC作为一款经典的8位微控制
    的头像 发表于 04-07 09:40 245次阅读

    AT89C51RB2/RC2:高性能8位微控制的卓越之选

    AT89C51RB2/RC2:高性能8位微控制的卓越之选 在电子工程师的设计工具箱中,微控制是至关重要的组件。今天,我们将深入探讨AT89C51RB2/RC2这款高性能的8位微控制
    的头像 发表于 04-07 09:40 280次阅读

    深入解析AT89C51:一款经典8位微控制

    深入探究。 文件下载: AT89C51-24AC.pdf 一、产品概述 AT89C51是一款低功耗、高性能的CMOS 8位微计算机,拥有4K字节的Flash可编程和可擦除只读存储(P
    的头像 发表于 04-06 09:05 613次阅读

    AT89C51RE2:高性能8位微控制的全面解析

    AT89C51RE2:高性能8位微控制的全面解析 在电子工程领域,一款性能卓越的微控制往往能为项目带来质的飞跃。AT89C51RE2作为一款高性能的8位微控制
    的头像 发表于 04-05 16:55 1236次阅读

    AT89C51RB2/RC2微控制:高性能8位芯片的全面解析

    AT89C51RB2/RC2微控制:高性能8位芯片的全面解析 在电子设计领域,选择一款合适的微控制至关重要。AT89C51RB2/RC2作为一款高性能的8位微控制
    的头像 发表于 04-05 16:55 1265次阅读

    AT89C51IC2:高性能8位Flash微控制的深度解析

    AT89C51IC2:高性能8位Flash微控制的深度解析 在电子设计领域,微控制扮演着至关重要的角色。今天,我们就来深入探讨一款高性能的8位Flash微控制——AT
    的头像 发表于 04-05 16:55 1179次阅读

    AT89C51RD2/ED2:高性能8位Flash微控制的深度剖析

    AT89C51RD2/ED2:高性能8位Flash微控制的深度剖析 在电子设计领域,微控制是众多项目的核心。今天我们要深入探讨的是AT89C51RD2/ED2这款高性能8位Flas
    的头像 发表于 04-05 16:40 1249次阅读

    AT89C51RD2/ED2微控制:特性、功能与应用详解

    AT89C51RD2/ED2微控制:特性、功能与应用详解 在现代电子设备的设计中,微控制扮演着至关重要的角色。AT89C51RD2/ED2是Atmel公司推出的一款高性能CMOS
    的头像 发表于 04-05 16:40 1098次阅读

    深度解析 AT89C51CC03 微控制:全方位性能与应用攻略

    深度解析 AT89C51CC03 微控制:全方位性能与应用攻略 在电子工程领域,微控制犹如大脑一般,掌控着各种电子设备的运行。AT89C51CC03 作为一款功能强大的 8 位微控
    的头像 发表于 04-05 16:40 1012次阅读

    AT89C51 单片机中文资料

    电子发烧友网站提供《AT89C51 单片机中文资料.pdf》资料免费下载
    发表于 06-24 15:29 1次下载