久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 單片機(jī)eeprom程序問(wèn)題 [打印本頁(yè)]

作者: 13680112599    時(shí)間: 2019-2-19 10:15
標(biāo)題: 單片機(jī)eeprom程序問(wèn)題
//#include <REGX52.H>
#include <STC8.H>
#include "intrins.h"

sbit LED1 = P1^0;
sbit LED2 = P1^1;
sbit K1   = P3^2;                           //按鈕1
sbit K2   = P3^3;                           //按鈕2

sbit Y=P1^0;
sbit W=P1^1;
//unsigned  int t,addr;
unsigned  char V,dat,n,m,k;
unsigned char code LED[] = {0xFE,0xFD,0xFC};

//測(cè)試工作頻率為11.0592MHz

//sfr     IAP_DATA    =   0xC2;
//sfr     IAP_ADDRH   =   0xC3;
//sfr     IAP_ADDRL   =   0xC4;
//sfr     IAP_CMD     =   0xC5;
//sfr     IAP_TRIG    =   0xC6;
//sfr     IAP_CONTR   =   0xC7;

#define WT_30M          0x80
#define WT_24M          0x81
#define WT_20M          0x82
#define WT_12M          0x83
#define WT_6M           0x84
#define WT_3M           0x85
#define WT_2M           0x86
#define WT_1M           0x87

void IapIdle()
{
    IAP_CONTR = 0;                              //關(guān)閉IAP功能
    IAP_CMD = 0;                                //清除命令寄存器
    IAP_TRIG = 0;                               //清除觸發(fā)寄存器
    IAP_ADDRH = 0x80;                           //將地址設(shè)置到非IAP區(qū)域
    IAP_ADDRL = 0;
}

char IapRead(int addr)
{
    char dat;

    IAP_CONTR = WT_12M;                         //使能IAP
    IAP_CMD = 1;                                //設(shè)置IAP讀命令
    IAP_ADDRL = addr;                           //設(shè)置IAP低地址
    IAP_ADDRH = addr >> 8;                      //設(shè)置IAP高地址
    IAP_TRIG = 0x5a;                            //寫觸發(fā)命令(0x5a)
    IAP_TRIG = 0xa5;                            //寫觸發(fā)命令(0xa5)
    _nop_();
    dat = IAP_DATA;                             //讀IAP數(shù)據(jù)
    IapIdle();                                  //關(guān)閉IAP功能

    return dat;
}

void IapProgram(int addr, char dat)
{
    IAP_CONTR = WT_12M;                         //使能IAP
    IAP_CMD = 2;                                //設(shè)置IAP寫命令
    IAP_ADDRL = addr;                           //設(shè)置IAP低地址
    IAP_ADDRH = addr >> 8;                      //設(shè)置IAP高地址
    IAP_DATA = dat;                             //寫IAP數(shù)據(jù)
    IAP_TRIG = 0x5a;                            //寫觸發(fā)命令(0x5a)
    IAP_TRIG = 0xa5;                            //寫觸發(fā)命令(0xa5)
    _nop_();
    IapIdle();                                  //關(guān)閉IAP功能
}

void IapErase(int addr)
{
    IAP_CONTR = WT_12M;                         //使能IAP
    IAP_CMD = 3;                                //設(shè)置IAP擦除命令
    IAP_ADDRL = addr;                           //設(shè)置IAP低地址
    IAP_ADDRH = addr >> 8;                      //設(shè)置IAP高地址
    IAP_TRIG = 0x5a;                            //寫觸發(fā)命令(0x5a)
    IAP_TRIG = 0xa5;                            //寫觸發(fā)命令(0xa5)
    _nop_();                                    //
    IapIdle();                                  //關(guān)閉IAP功能
}

/*
void main(void)
{
   //uchar V;
   V = IapRead(0x0016);                          // 開(kāi)機(jī)讀取EEPROM區(qū)2002h數(shù)據(jù),還原關(guān)電前LED的亮滅狀況
   if(V == 2)          {LED1=0;LED2=1;}
   else if(V == 6){LED1=0;LED2=0;}

   while(1)
     {
      if(!K1)
            {
              while(!K1);
              LED1=0;LED2=1;
             IapErase(0x0000);                  // 擦除第1個(gè)扇區(qū)(2000h~21FFh)
              IapProgram(0x0016,2);          // 對(duì)EEPROM區(qū)2002h寫入2
            }

          if(!K2)
            {
               while(!K2);
              LED1=0;LED2=0;
             IapErase(0x0000);                  // 擦除第1個(gè)扇區(qū)(2000h~21FFh)
              IapProgram(0x0016,6);                          // 對(duì)EEPROM區(qū)2002h寫入6
            }
     }
}


*/



void main()
{
  n=IapRead(0x0016);

   EA=1;
        EX0=1;
  IT0=1;
        
         while(1)
         {
                 if(n==3)
                  n=0;
               
                 P1=LED[n];
               
        IapErase(0x0000);                 
        IapProgram(0x0016,n);
                        
}
                 
}


void i0() interrupt 0
{
        n++;

        }

上面星號(hào)部分可以存,下面的存不了,求解

11.png (193.24 KB, 下載次數(shù): 28)

11.png

作者: wulin    時(shí)間: 2019-2-19 15:20
IapErase(0x0000);                 
IapProgram(0x0000,n);
習(xí)慣都是單字節(jié)按扇區(qū)的首地址寫,多字節(jié)按扇區(qū)的首地址順序?qū)憽](méi)有試過(guò)單獨(dú)寫中間地址是否會(huì)出錯(cuò)。

作者: 13680112599    時(shí)間: 2019-2-20 10:46
wulin 發(fā)表于 2019-2-19 15:20
IapErase(0x0000);                 
IapProgram(0x0000,n);
習(xí)慣都是單字節(jié)按扇區(qū)的首地址寫,多字節(jié)按 ...

可以的,好了,中斷加標(biāo)志,沒(méi)想通
作者: iofree    時(shí)間: 2019-2-20 12:04
wulin 發(fā)表于 2019-2-19 15:20
IapErase(0x0000);                 
IapProgram(0x0000,n);
習(xí)慣都是單字節(jié)按扇區(qū)的首地址寫,多字節(jié)按 ...

你給中間地址STC單片機(jī)也會(huì)按扇區(qū)首地址寫EEPROM,手冊(cè)里面有講的
作者: yzwzfyz    時(shí)間: 2019-2-20 13:23
你讀到的N是什么呢?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩一二三区视频 | 欧美5区| 国产精品毛片久久久久久久 | 亚洲福利电影网 | 国产精品久久久久一区二区三区 | 欧美午夜一区 | 九一在线| 日韩精品在线观看免费 | 亚洲精品在线免费观看视频 | 亚洲 精品 综合 精品 自拍 | 99re视频精品| 国产欧美日韩视频 | 久久久久网站 | 玖玖免费 | 91久久夜色精品国产网站 | www.99精品| a网站在线观看 | 风间由美一区二区三区在线观看 | 中文字幕在线一区 | 一区二区三区免费 | 中文字幕在线播放不卡 | 亚洲成人一区 | 国产精品海角社区在线观看 | 九色在线观看 | 久久久成人免费一区二区 | 精品国产精品三级精品av网址 | 乳色吐息在线观看 | 国产视频第一页 | 999国产视频| 国产欧美一区二区三区在线播放 | 一区二区三区四区国产 | 国产乱码精品1区2区3区 | 99tv成人影院| 国产一区二区三区四区在线观看 | 亚洲精品小视频在线观看 | 91一区二区 | 91欧美 | 涩涩视频网站在线观看 | 国产免费一区二区 | 羞视频在线观看 | 久久综合av |