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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2856|回復: 4
打印 上一主題 下一主題
收起左側

單片機eeprom程序問題

[復制鏈接]
跳轉到指定樓層
樓主
//#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};

//測試工作頻率為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;                              //關閉IAP功能
    IAP_CMD = 0;                                //清除命令寄存器
    IAP_TRIG = 0;                               //清除觸發寄存器
    IAP_ADDRH = 0x80;                           //將地址設置到非IAP區域
    IAP_ADDRL = 0;
}

char IapRead(int addr)
{
    char dat;

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

    return dat;
}

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

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

/*
void main(void)
{
   //uchar V;
   V = IapRead(0x0016);                          // 開機讀取EEPROM區2002h數據,還原關電前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個扇區(2000h~21FFh)
              IapProgram(0x0016,2);          // 對EEPROM區2002h寫入2
            }

          if(!K2)
            {
               while(!K2);
              LED1=0;LED2=0;
             IapErase(0x0000);                  // 擦除第1個扇區(2000h~21FFh)
              IapProgram(0x0016,6);                          // 對EEPROM區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++;

        }

上面星號部分可以存,下面的存不了,求解

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

11.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2019-2-19 15:20 | 只看該作者
IapErase(0x0000);                 
IapProgram(0x0000,n);
習慣都是單字節按扇區的首地址寫,多字節按扇區的首地址順序寫。沒有試過單獨寫中間地址是否會出錯。
回復

使用道具 舉報

板凳
ID:57614 發表于 2019-2-20 10:46 | 只看該作者
wulin 發表于 2019-2-19 15:20
IapErase(0x0000);                 
IapProgram(0x0000,n);
習慣都是單字節按扇區的首地址寫,多字節按 ...

可以的,好了,中斷加標志,沒想通
回復

使用道具 舉報

地板
ID:474677 發表于 2019-2-20 12:04 | 只看該作者
wulin 發表于 2019-2-19 15:20
IapErase(0x0000);                 
IapProgram(0x0000,n);
習慣都是單字節按扇區的首地址寫,多字節按 ...

你給中間地址STC單片機也會按扇區首地址寫EEPROM,手冊里面有講的
回復

使用道具 舉報

5#
ID:123289 發表于 2019-2-20 13:23 | 只看該作者
你讀到的N是什么呢?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 色噜噜色综合 | 国产999精品久久久影片官网 | 成人在线视频网站 | 亚洲女人天堂网 | 亚洲欧美精品 | 久久青视频 | 范冰冰一级做a爰片久久毛片 | 伊人超碰在线 | 日韩一区二区三区视频 | 99在线播放 | 中文字幕不卡在线观看 | 久久精品国产清自在天天线 | 精品国产免费一区二区三区演员表 | 国产黄色在线观看 | 国产夜恋视频在线观看 | 久草久草久草 | 国产婷婷综合 | 久久国产成人午夜av影院武则天 | 中文在线一区二区 | 男女国产视频 | 婷婷五月色综合 | 视频在线观看一区 | 久久精品国产99国产精品亚洲 | 久久久久久久久久久久一区二区 | 99国产视频 | 久久久久黄 | 毛片网站在线观看视频 | 亚洲精品一区二区在线观看 | 色99视频| 高清成人av | 91精品国产一区二区三区 | 狠狠的干狠狠的操 | 玖玖玖在线观看 | 亚洲午夜网 | 伊人成人免费视频 | 奇米影视在线 | 黄色国产在线视频 | 亚洲国产在 | 精品国产乱码久久久久久闺蜜 | 国产美女网站 | av一级久久|