免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
stc89le52rc內(nèi)部EEPROM的C51讀寫程序

/*
stc89le52rc內(nèi)部EEPROM的C51讀寫程序
串口命令(9600)
1.0x35可以寫eeprom第一個字節(jié)數(shù)據(jù)0x0c
2.0x34可以使用檢查eeprom第一個字節(jié)的數(shù)據(jù),正確就會反饋一串字符
3.0x33可以讀取eeprom前256個字節(jié)數(shù)據(jù)

*/
#include<math.h>
#include<stdio.h>
#include<reg52.h>
#include <intrins.h>
#define NOP5 _nop_();_nop_();_nop_(); _nop_();_nop_();
#define uchar unsigned char
#define uint unsigned int

sfr AUXR = 0x8e;
sfr AUXR1 = 0xa2;
sfr P4 = 0xe8;
sfr XICON = 0xc0;
sfr IPH = 0xb7;
sfr WDT_CONTR = 0xe1;
sfr ISP_DATA = 0xe2;
sfr ISP_ADDRH = 0xe3;
sfr ISP_ADDRL = 0xe4;
sfr ISP_CMD = 0xe5;
sfr ISP_TRIG = 0xe6;
sfr ISP_CONTR = 0xe7;

#define ENABLE_ISP 0x81     //小于20MHZ使用
#define DATA_FLASH_START_ADDR 0x2000//stc89le52rc eeprom起始地址
#define TEST_CODE 0x34

uchar code start_string[]={"EEPROM first data correct!\n"};
uint i=0,k;

uchar EEPROM_READ(uint flash_addres);
void IAP_disable();
void EEPROM_FORMAT(uint flash_addres);
void EEPROM_WRITE(uint flash_addres, isp_data);
void test_read();
void send_byte(uchar bt);
void send_string(uchar *ptr, uchar len);
void read_string(uint start_addr,uint num);

void read_string(uint start_addr, uint num)
{
static uint j,temp;
for(j=0;j<num;j++)
{
   temp=EEPROM_READ(start_addr+j);
   NOP5;
   send_byte(temp);
}
}
void send_string(uchar * ptr, uchar len)
{
static uint j;
for(j=0;j<len;j++)
{
   send_byte(*(ptr+j));
}
}

void send_byte(uchar by)
{
SBUF=by;
while(!TI);
TI=0;
}

void IAP_disable()
{
ISP_CONTR=0;
ISP_CMD=0;
ISP_TRIG=0;
}
uchar EEPROM_READ(uint flash_addres) //讀取數(shù)據(jù)
{
uchar read;
ISP_ADDRH=flash_addres>>8;
ISP_ADDRL=flash_addres;
ISP_CONTR=ENABLE_ISP;
ISP_CMD=0x01 ;  

EA=0;
ISP_TRIG=0x46;
ISP_TRIG=0xb9 ;
NOP5;
read=ISP_DATA;
IAP_disable();
EA=1;

return(ISP_DATA);
}

void EEPROM_WRITE(uint flash_addres,isp_data) //寫入數(shù)據(jù)
{
ISP_ADDRH=flash_addres>>8;
ISP_ADDRL=flash_addres;
ISP_CONTR=ENABLE_ISP;
ISP_CMD=0x02 ;

EA=0;
ISP_DATA=isp_data;

ISP_TRIG=0x46;
ISP_TRIG=0xb9;
IAP_disable();
EA=1;
}

void EEPROM_FORMAT(uint flash_addres) //擦除
{
ISP_ADDRH=flash_addres>>8;
ISP_ADDRL=flash_addres;
ISP_CONTR=ENABLE_ISP;
ISP_CMD=0x03;

EA=0;

ISP_TRIG=0x46;
ISP_TRIG=0xb9;
IAP_disable();
EA=1;

}
void test_read()
{
if(RI)
{
   RI=0;
   switch(SBUF)
   {
    case 0x34:
     k=EEPROM_READ(DATA_FLASH_START_ADDR);
     NOP5;
     if(0x0c==k)
     {
      send_string(start_string,sizeof(start_string));
     }
     send_byte(k);
     k=0;
    break;
    case 0x33:
     read_string(DATA_FLASH_START_ADDR, 256);
     break;
    case 0x35:
    
     EEPROM_FORMAT(DATA_FLASH_START_ADDR); //寫已經(jīng)有數(shù)據(jù)的扇區(qū)前要寫擦除
     NOP5;
     NOP5;
     NOP5;          //可以適當增減延時
     NOP5;
     NOP5;
     NOP5;
     NOP5;
     EEPROM_WRITE(DATA_FLASH_START_ADDR,TEST_CODE);//寫一個0x0c
     break;
    default:
     if(0xff==i)
     {
      i=0;
     }
     k=EEPROM_READ(DATA_FLASH_START_ADDR+(i++));
     send_byte(DATA_FLASH_START_ADDR+i);
     send_byte(k);
     k=0;
    break;
   }

}
void init()
{
TMOD=0x20;SCON=0x50;
TL1=0xfd;TH1=0xfd;
TR1=1;ET1=1;ES=1;

}
void main()
{
init();

while(1)
{
   test_read();
}
}
 

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
AD和EEPROM的驅(qū)動C代碼:
STC12C5A60S2單片機的內(nèi)置EEPROM的使用
誰有STC 的 EEPROM C程序
STC單片機 IAP(EEPROM)的使用
STC單片機 EEPROM/IAP 功能測試程序演示
基于51單片機設(shè)計的智能溫控風扇(程序 電路圖)
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服