⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t.c

📁 单片机访问大容量存储器包括主程序头文件等
💻 C
字号:
#include <REG51.H>    
#include <ABSACC.H>    
#include "t.h"    
   
#if 1    
void delay(unsigned int n)   
{   
    unsigned int i,j;   
    for(j=0;j<100;j++)   
    for(i=0;i<N;I++); P2="addr" LE="1;//delay(1);" P0="addr;//delay(1);" v; char unsigned { addr) int readFlash(unsigned 0 #if #endif }>>8;//delay(1);   
    OE=0;//delay(10);    
    P0=0xFF;   
    v=P0;//delay(1);    
    OE=1;//delay(1);    
    return v;   
}   
void writeFlash1(unsigned int addr,char value)   
{   
    LE=1;//delay(1);    
    P0=addr;//delay(1);    
    LE=0;//delay(1);    
    P2=addr>>8;//delay(1);    
    P0=value;//delay(1);    
    WE=0;//delay(10);    
    WE=1;//delay(1);    
}   
void chipErase()   
{   
    writeFlash1(0x5555,0xAA);   
    writeFlash1(0x2AAA,0x55);   
    writeFlash1(0x5555,0x80);   
    writeFlash1(0x5555,0xAA);   
    writeFlash1(0x2AAA,0x55);   
    writeFlash1(0x5555,0x10);   
}   
#endif    
   
   
#if 1    
unsigned char volatile xdata *s,xdata *p;   
   
#endif    
void main()   
{   
#if 1    
    unsigned char func=0,v;   
   
    unsigned char wrchar;   
   
    s=p=0x4000;   
    for(;;)   
    {   
        KEY1=0;   
        KEY2=0;   
        KEY3=0;   
   
        if(KEY1)   
        {   
            func=(func+1)&0x03;   
            LEDOUT=~func;   
   
            switch(func)   
            {   
            case 0: break;//(set value) reset pos and memory display    
            case 1: wrchar=0xA0; break;//set write char value    
            case 2: break;//(display offset addr value)set pos p    
            case 3: break;//write at pos or erase    
            }   
        }   
   
        if(func==0)   
        {   
            if(KEY2){   p--;    v=*p;LEDOUT=~v;}   
            else if(KEY3){  p++;    v=*p;LEDOUT=~v;}   
        }   
        else if(func==1)   
        {   
            if(KEY2){   wrchar+=0x10;   LEDOUT=~wrchar;}   
            else if(KEY3){  wrchar+=0x01;   LEDOUT=~wrchar;}   
        }   
        else if(func==2)   
        {   
            if(KEY2){ p--;LEDOUT=~(char)p;}   
            else if(KEY3){ p++;LEDOUT=~(char)p;}   
        }   
        else if(func==3)   
        {   
            if(KEY2)//write at pos    
            {   
                *p=wrchar;   
                LEDOUT=~(0xAA);   
            }   
        }   
        delay(100);   
    }   
#else    
    unsigned int s,p;//read    
    unsigned char func=0,v;   
   
    unsigned char wrchar;   
   
    s=p=0x4000;   
    for(;;)   
    {   
        KEY1=0;   
        KEY2=0;   
        KEY3=0;   
   
        if(KEY1)   
        {   
            func=(func+1)&0x03;   
            LEDOUT=~func;   
   
            switch(func)   
            {   
            case 0: break;//(set value) reset pos and memory display    
            case 1: wrchar=0xA0; break;//set write char value    
            case 2: break;//(display offset addr value)set pos p    
            case 3: break;//write at pos or erase    
            }   
        }   
   
        if(func==0)   
        {   
            if(KEY2){   p--;    v=XBYTE[p];LEDOUT=~v;}   
            else if(KEY3){  p++;    v=XBYTE[p];LEDOUT=~v;}   
        }   
        else if(func==1)   
        {   
            if(KEY2){   wrchar+=0x10;   LEDOUT=~wrchar;}   
            else if(KEY3){  wrchar+=0x01;   LEDOUT=~wrchar;}   
        }   
        else if(func==2)   
        {   
            if(KEY2){ p--;LEDOUT=~(char)p;}   
            else if(KEY3){ p++;LEDOUT=~(char)p;}   
        }   
        else if(func==3)   
        {   
            if(KEY2)//write at pos    
            {   
                XBYTE[p]=wrchar;   
                LEDOUT=~(0xAA);   
            }   
            else if(KEY3)// chip erase    
            {   
                XBYTE[0x4000]=0x11;   
                XBYTE[0x4001]=0x22;   
                XBYTE[0x4002]=0x33;   
                XBYTE[0x4003]=0x44;   
                XBYTE[0x4004]=0x55;   
                XBYTE[0x4005]=0x66;   
                XBYTE[0x4006]=0x77;   
                XBYTE[0x4007]=0x88;   
                XBYTE[0x4008]=0x99;   
   
            //  XBYTE[0x5555]=0xAA;    
            //  XBYTE[0x2AAA]=0x55;    
            //  XBYTE[0x5555]=0x80;    
            //  XBYTE[0x5555]=0xAA;    
            //  XBYTE[0x2AAA]=0x55;    
            //  XBYTE[0x5555]=0x10;    
                LEDOUT=~(0xFA);   
            }   
        }   
        delay(100);   
    }   
#endif    
}   

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -