日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
AT89C51編程器
AT89C51編程器
 更新時間:2008-7-26 20:03:15  點擊數(shù):2
【字體: 字體顏色
 

#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<maxadr;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<nn;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<p;i++) _nop_();
           prog=1;
           break;}
 _nop_();_nop_();_nop_();_nop_();
 _nop_();_nop_();_nop_();_nop_();
 vpp=1;
 for(i=0;i<p;i++) _nop_();
 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;}
 
 
  }
}

 

  • 上一篇: 用AT89C2051單片機制作水族箱加氧泵自控開關源程序
  • 下一篇: MCS-51系列單片機_ht1621驅動程序(已測試OK)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1