欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 使用51單片機(jī)內(nèi)部EPROM斷電保存程序 [打印本頁]

作者: zhuhuan0000    時(shí)間: 2017-5-26 23:24
標(biāo)題: 使用51單片機(jī)內(nèi)部EPROM斷電保存程序
//#include <STC89C52RC.H>
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char   
#define uint unsigned int
uint temp,aa,a,V;

sbit mmm=P3^4;//復(fù)位
sbit nnn=P3^2;//繼電器
sbit kkk=P3^3;//燈
void cc(uint addr) ;
void xcx(uint addr,uchar dat);
uchar dcx(uint addr);
void Q0();
/****************特殊功能寄存器聲明****************/
sfr ISP_DATA = 0xc2;   
sfr ISP_ADDRH = 0xc3;     
sfr ISP_ADDRL = 0xc4;   
sfr ISP_CMD = 0xc5;   
sfr ISP_TRIG = 0xc6;      
sfr ISP_CONTR = 0xc7;

void  cc(uint addr);
void  xcx(uint addr,uchar dat);
uchar dcx(uint addr);
void  Q0();
void init1();
                                         //計(jì)數(shù)器初始化
void delay1(unsigned int cnt);
void delay_50us(uint t)
   {
  uchar F;
  for(;t>0;t--)
  for(F=19;F>0;F--);
   }
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函數(shù):主程序
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
void main(void)
{  
        //uchar gg;
     init1();
        temp=dcx(0x2002);
       //if(gg==2)
      // {  
        //   bai=temp/100;
       //   shi=temp%100/10;
       //   ge=temp%10;
    // display(bai,shi,ge);
  // }
  while(1)
   {
      if(aa==20)
      {
        aa=0;
        temp++;   
  cc(0x2000);
  delay1(300);              // 擦除第1個(gè)扇區(qū)(2000h~21FFh)
        xcx(0x2002,temp);
  delay1(300);
  if(temp<=5)
   {
   nnn=1;
   kkk=1;
   }
  if(temp>1&&temp<20)
  {
   nnn=0;
   kkk=0;
  }
         
      if(temp>=20)
       {
         temp=20;
   nnn=1;
   kkk=1;
  }
   if(mmm==0)
{
  delay_50us(200);
     if(mmm==0)
     {
   cc(0x2000);
   delay1(300);
   temp=1;
   nnn=1;
   kkk=1;
   xcx(0x2002,temp);
   delay1(300);
   temp=dcx(0x2002);
   delay1(300);
   while(!mmm);
   }
    delay_50us(200);
    while(!mmm);
}
         

    }
}
   
}
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函數(shù):擦除某一扇區(qū)(每個(gè)扇區(qū)512字節(jié))
入口:addr = 某一扇區(qū)首地址                          
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
void cc(uint addr)
{        
// 打開 IAP 功能(ISP_CONTR.7)=1:允許編程改變Flash, 設(shè)置Flash操作等待時(shí)間
// 0x83(晶振<5M)   0x82(晶振<10M)   0x81(晶振<20M)   0x80(晶振<40M)
    ISP_CONTR = 0x81;  
    ISP_CMD   = 0x03;                  // 用戶可以對(duì)"Data Flash/EEPROM區(qū)"進(jìn)行扇區(qū)擦除
    ISP_ADDRL = addr;         // ISP/IAP操作時(shí)的地址寄存器低八位,
    ISP_ADDRH = addr>>8;      // ISP/IAP操作時(shí)的地址寄存器高八位。   
    ISP_TRIG = 0x5A;          // 在ISPEN(ISP_CONTR.7)=1時(shí),對(duì)ISP_TRIG先寫入46h,
    ISP_TRIG = 0xA5;          // 再寫入B9h,ISP/IAP命令才會(huì)生效。
          _nop_();
           Q0();             // 關(guān)閉ISP/IAP
}
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函數(shù):寫一字節(jié)
入口:addr = 扇區(qū)單元地址 , dat = 待寫入數(shù)據(jù)
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
void xcx(uint addr,uchar dat)
{
    ISP_CONTR = 0x81;                  
    ISP_CMD   = 0x02;         // 用戶可以對(duì)"Data Flash/EEPROM區(qū)"進(jìn)行字節(jié)編程
    ISP_ADDRL = addr;        
    ISP_ADDRH = addr>>8;      
    ISP_DATA  = dat;          // 數(shù)據(jù)進(jìn)ISP_DATA
ISP_TRIG = 0x5A;         
    ISP_TRIG = 0xA5;         
    _nop_();
           _nop_();
          _nop_();
       Q0();                 // 關(guān)閉ISP/IAP
}
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函數(shù):讀一字節(jié)
入口:addr = 扇區(qū)單元地址
出口:dat  = 讀出的數(shù)據(jù)
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
uchar dcx(uint addr)
{   
    uchar dat;
    ISP_CONTR = 0x81;                  
    ISP_CMD   = 0x01;         // 用戶可以對(duì)"Data Flash/EEPROM區(qū)"進(jìn)行字節(jié)讀
    ISP_ADDRL = addr;         
    ISP_ADDRH = addr>>8;
    ISP_TRIG = 0x5A;         
    ISP_TRIG = 0xA5;         
        _nop_();

    dat = ISP_DATA;                          // 取出數(shù)據(jù)
          Q0();                              // 關(guān)閉ISP/IAP                  
    return dat;
}
/*┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函數(shù):關(guān)閉ISP/IAP操作
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈*/
void Q0()
{
          ISP_CONTR = 0;            // 關(guān)閉IAP功能
          ISP_CMD   = 0;            // 待機(jī)模式,無ISP操作
          ISP_TRIG  = 0;            // 關(guān)閉IAP功能, 清與ISP有關(guān)的特殊功能寄存器
}

void delay1(unsigned int cnt)
{
while(--cnt);
}

void init1()                                            //計(jì)數(shù)器初始化
{
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}

/*
STC89C52RC內(nèi)部EEPROM詳細(xì)地址表:
第一扇區(qū)            第二扇區(qū)             第三扇區(qū)              第四扇區(qū)
起始地址 結(jié)束地址   起始地址  結(jié)束地址   起始地址   結(jié)束地址   起始地址   結(jié)束地址
2000h     21FFh     2200h    23FFh       2400h      25FFh       2600h      27FFH
第五扇區(qū)              第六扇區(qū)               第七扇區(qū)          第八扇區(qū)
起始地址  結(jié)束地址  起始地址   結(jié)束地址   起始地址  結(jié)束地址   起始地址   結(jié)束地址
2800h      29FFh      2A00h      2BFFh     2C00h    2DFFh      2E00h      2FFFh
*/

作者: 一凱    時(shí)間: 2019-2-27 18:28
謝謝分享




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1