關(guān)鍵字:89C51編程器
#include "at89x52.h" sbit rdy=P3^2; void init_serial() void init_pro() void sendbyte(unsigned char da) /*send a byte*/ unsigned int getadr() /*get 5 diti DEC adr*/ unsigned char getdata() /*get 2 diti HEX data*/ unsigned int test(unsigned int nn) unsigned char erase(unsigned int nn,unsigned int p) prog=1; if(test(nn)==0) return 's'; unsigned char write() unsigned char lock(unsigned char level) void main()
#include "stdio.h"
#include "intrins.h"
#include "ctype.h"
sbit vpp=P3^3;
sbit p26=P3^4;
sbit p27=P3^5;
sbit p36=P3^6;
sbit p37=P3^7;
sbit prog=P2^7;
{
SCON=0x50; /*mode 1*/
TMOD=0x20;
TH1=0xfd;
PCON=0x80; /*38400bps*/
TR1=1; /*load tmr1*/
TI=1;
ES=1;}
{
p26=0;
p27=0;
p36=0;
p37=0;
vpp=1;
prog=1;
}
{
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 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 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 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 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
break;}
_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();
vpp=1;
for(i=0;i
else return 'f';}
{
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 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';}
{
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;}
}
}
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
STC89C51是不是不可以通過(guò)串口讀取ADS1118的數(shù)據(jù),因?yàn)閱纹瑱C(jī)是8位的?
求解答!用STC89C51系列數(shù)字秒表
基于51單片機(jī)的7人多數(shù)投票表決器設(shè)計(jì)
![基于<b class='flag-5'>51</b>單片機(jī)的7人多數(shù)投票表決<b class='flag-5'>器</b>設(shè)計(jì)](https://file1.elecfans.com/web2/M00/0B/32/wKgZomcuwByAHjI7AAAdvvWb6HA817.jpg)
把esp8266加入到c51單片機(jī)單通道程序怎么寫
aP89W24 USB語(yǔ)音芯片燒錄器中文手冊(cè)
DS89C21差分CMOS線路驅(qū)動(dòng)器和接收器數(shù)據(jù)表
![DS<b class='flag-5'>89C</b>21差分CMOS線路驅(qū)動(dòng)<b class='flag-5'>器</b>和接收<b class='flag-5'>器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
DS14C89A四通道CMOS接收器數(shù)據(jù)表
![DS14<b class='flag-5'>C89</b>A四通道CMOS接收<b class='flag-5'>器</b>數(shù)據(jù)表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
51、STM32單片機(jī)的編程方式一樣嗎?
![<b class='flag-5'>51</b>、STM32單片機(jī)的<b class='flag-5'>編程</b>方式一樣嗎?](https://file.elecfans.com/web2/M00/9B/3D/poYBAGQjnauAVXOgAABFcEbXdEE684.png)
基于單片機(jī)AT89C51的數(shù)字電壓表仿真實(shí)現(xiàn),原理圖,論文,源碼
怎么啦?你的Keil C51和Keil MDK還無(wú)法共存嗎?
![怎么啦?你的Keil <b class='flag-5'>C51</b>和Keil MDK還無(wú)法共存嗎?](https://file.elecfans.com/web2/M00/20/B3/pYYBAGGfNNmAK-PZAAJsGM5Cgk0227.jpg)
基于單片機(jī)多功能洗衣機(jī)控制
![基于單片機(jī)多功能洗衣機(jī)控制](https://file1.elecfans.com/web2/M00/C4/B6/wKgZomX3o7KAc9AZAAAReeI3K9k830.jpg)
評(píng)論