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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC8A8K單片機存儲代碼看不明白,求解讀

[復制鏈接]
跳轉到指定樓層
樓主

想保存一點數據,可是這個官網例子完全看不懂寫的什么,有沒有可以簡單的寫一下,保存一個數,開機時讀取出這個數。

以下是STC軟件的源例子:


#include "reg51.h"
#include "intrins.h"


//測試工作頻率為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()
{
    IapErase(0x0400);
    P0 = IapRead(0x0400);                       //P0=0xff
    IapProgram(0x0400, 0x12);
    P1 = IapRead(0x0400);                       //P1=0x12


    while (1);
}


11.png (19.99 KB, 下載次數: 21)

官方例子

官方例子
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:213173 發表于 2021-8-14 17:47 | 只看該作者
給你注釋一下就能看明白
void main()
{
    IapErase(0x0400);//擦除指定扇區,首地址0x0400(512字節),扇區所有存儲器置1
                     //寫一個字節也得擦除整個扇區
    P0 = IapRead(0x0400); //讀取一個字節來驗證已經擦除 P0=0xff
    IapProgram(0x0400, 0x12);//寫一個字節,地址0x0400,數據0x12(數據范圍0x00--0xff)
    P1 = IapRead(0x0400);//再讀取剛寫入的一個字節,驗證寫入和讀出正確 P1=0x12

    while (1);
}
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品区一区二区 | 国产一区二区 | 欧美日韩黄色一级片 | 国产精品久久久久一区二区三区 | 亚洲一区二区视频 | 精品国产区 | 久草视频在线看 | 福利视频一区二区三区 | 精品久久久久久久久久 | 午夜欧美日韩 | 精产国产伦理一二三区 | 国产伊人久久久 | 免费激情网站 | 在线国产99 | 成人日韩av| 日本色婷婷| 日韩一区二区三区在线播放 | 99精品视频在线 | 久久国产精品久久国产精品 | 亚洲午夜一区二区 | 久草视频在线播放 | 国产夜恋视频在线观看 | 亚洲综合在线播放 | 麻豆av在线免费观看 | 久久i| 国产日韩精品在线 | 亚洲欧美在线观看视频 | 国产精品不卡一区 | 亚洲精彩视频在线观看 | 中国大陆高清aⅴ毛片 | 久久久久久国产精品免费 | 色婷婷av99xx| 99九九视频 | 国产精品美女久久久久久免费 | 国产我和子的乱视频网站 | 欧美a在线看 | 一级黄a视频 | 国产福利在线播放 | 成人欧美一区二区三区1314 | 中文字幕一区二区三区不卡 | 国产目拍亚洲精品99久久精品 |