久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
關于#include "eeprom52.h"這句單片機程序是什么意思?
[打印本頁]
作者:
2059150559
時間:
2019-4-29 13:22
標題:
關于#include "eeprom52.h"這句單片機程序是什么意思?
想請問大佬們一下#include "eeprom52.h"
這段代碼是什么意思呢?有什么作用啊?
作者:
wc86110
時間:
2019-4-29 17:32
單片機芯片內部的 E2PROM 頭文件
作者:
angmall
時間:
2019-4-29 18:28
單片機片內存儲器的功能操作頭文件
存成eeprom52.h 。H試下吧,
#ifndef _EERPOM52_H_
#define _EEPROM52_H_
#include <reg51.h>
#include "intrins.h"
#define nop() _nop_()
#define uint8 unsigned char
#define uint16 unsigned int
/*Declare SFR associated with the IAP */
sfr IAP_DATA = 0xC2; //Flash data register
sfr IAP_ADDRH = 0xC3; //Flash address HIGH
sfr IAP_ADDRL = 0xC4; //Flash address LOW
sfr IAP_CMD = 0xC5; //Flash command register
sfr IAP_TRIG = 0xC6; //Flash command trigger
sfr IAP_CONTR = 0xC7; //Flash control register
/*Define ISP/IAP/EEPROM command*/
#define CMD_IDLE 0 //Stand-By
#define CMD_READ 1 //Byte-Read
#define CMD_PROGRAM 2 //Byte-Program
#define CMD_ERASE 3 //Sector-Erase
/*Define ISP/IAP/EEPROM operation const for IAP_CONTR*/
//#define ENABLE_IAP 0x80 //if SYSCLK<30MHz
#define ENABLE_IAP 0x81 //if SYSCLK<24MHz
//#define ENABLE_IAP 0x82 //if SYSCLK<20MHz
//#define ENABLE_IAP 0x83 //if SYSCLK<12MHz
//#define ENABLE_IAP 0x84 //if SYSCLK<6MHz
//#define ENABLE_IAP 0x85 //if SYSCLK<3MHz
//#define ENABLE_IAP 0x86 //if SYSCLK<2MHz
//#define ENABLE_IAP 0x87 //if SYSCLK<1MHz
//Start address for STC11/10xx EEPROM
//#define IAP_ADDRESS 0x0400
//Start address for STC12C5A60S2 EEPROM
#define IAP_ADDRESS 0x0000
void EEPROMDelay(uint8 n)
{
uint16 x;
while (n--)
{
x =125;
while (x--);
}
}
/*----------------------------
* 名稱 : IapIdle();
* 功能 : 關閉IAP EEPROM編輯功能,安全操作
----------------------------*/
void IapIdle()
{
IAP_CONTR = 0; //Close IAP function
IAP_CMD = 0; //Clear command to standby
IAP_TRIG = 0; //Clear trigger register
IAP_ADDRH = 0x80; //Data ptr point to non-EEPROM area
IAP_ADDRL = 0; //Clear IAP address to prevent misuse
}
/*----------------------------
* 名稱 : IapReadByte(0x0000);
* 功能 : 讀扇區
----------------------------*/
uint8 IapReadByte(uint16 addr)
{
uint8 dat; //Data buffer
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time
IAP_CMD = CMD_READ; //Set ISP/IAP/EEPROM READ command
IAP_ADDRL = addr; //Set ISP/IAP/EEPROM address low
IAP_ADDRH = addr >> 8; //Set ISP/IAP/EEPROM address high
IAP_TRIG = 0x5a; //Send trigger command1 (0x5a)
IAP_TRIG = 0xa5; //Send trigger command2 (0xa5)
nop(); //MCU will hold here until ISP/IAP/EEPROM operation complete
dat = IAP_DATA; //Read ISP/IAP/EEPROM data
IapIdle(); //Close ISP/IAP/EEPROM function
return dat; //Return Flash data
}
/*----------------------------
* 名稱 : IapEraseSector(0x0000);
* 功能 : 扇區擦除
----------------------------*/
void IapEraseSector(uint16 addr)
{
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time
IAP_CMD = CMD_ERASE; //Set ISP/IAP/EEPROM ERASE command
IAP_ADDRL = addr; //Set ISP/IAP/EEPROM address low
IAP_ADDRH = addr >> 8; //Set ISP/IAP/EEPROM address high
IAP_TRIG = 0x5a; //Send trigger command1 (0x5a)
IAP_TRIG = 0xa5; //Send trigger command2 (0xa5)
nop(); //MCU will hold here until ISP/IAP/EEPROM operation complete
IapIdle();
}
/*----------------------------
* 名稱 : IapProgramByte(0x0000,data);
* 功能 : 扇區編輯
----------------------------*/
void IapProgramByte(uint16 addr, uint8 dat)
{
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time
IAP_CMD = CMD_PROGRAM; //Set ISP/IAP/EEPROM PROGRAM command
IAP_ADDRL = addr; //Set ISP/IAP/EEPROM address low
IAP_ADDRH = addr >> 8; //Set ISP/IAP/EEPROM address high
IAP_DATA = dat; //Write ISP/IAP/EEPROM data
IAP_TRIG = 0x5a; //Send trigger command1 (0x5a)
IAP_TRIG = 0xa5; //Send trigger command2 (0xa5)
nop(); //MCU will hold here until ISP/IAP/EEPROM operation complete
IapIdle();
}
/*----------------------------
* 名稱 : IapProgramWord(0x0000,data);
* 功能 : 十六位扇區編輯
----------------------------*/
void IapProgramWord(uint16 addr, uint16 dat)
{
uint8 dat_L,dat_H;
dat_L=dat;
dat_H=dat >> 8;
IAP_CONTR = ENABLE_IAP;
IAP_CMD = CMD_PROGRAM;
IAP_ADDRL = addr+0x0001;
IAP_ADDRH = (addr+0x0001)>> 8;
IAP_DATA = dat_H;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
nop();
IapIdle();
IAP_CONTR = ENABLE_IAP;
IAP_CMD = CMD_PROGRAM;
IAP_ADDRL = addr;
IAP_ADDRH = addr >> 8;
IAP_DATA = dat_L;
IAP_TRIG = 0x5a;
IAP_TRIG = 0xa5;
nop();
IapIdle();
}
/*----------------------------
* 名稱 : IapReadWord(0x0000);
* 功能 : 讀十六位扇區
----------------------------*/
uint16 IapReadWord(uint16 addr)
{
uint16 dat; //Data buffer
uint8 dat_H,dat_L;
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time
IAP_CMD = CMD_READ; //Set ISP/IAP/EEPROM READ command
IAP_ADDRL = (addr+0x0001); //Set ISP/IAP/EEPROM address low
IAP_ADDRH = (addr+0x0001) >> 8; //Set ISP/IAP/EEPROM address high
IAP_TRIG = 0x5a; //Send trigger command1 (0x5a)
IAP_TRIG = 0xa5; //Send trigger command2 (0xa5)
nop(); //MCU will hold here until ISP/IAP/EEPROM operation complete
dat_H = IAP_DATA; //Read ISP/IAP/EEPROM data
IapIdle();
IAP_CONTR = ENABLE_IAP; //Open IAP function, and set wait time
IAP_CMD = CMD_READ; //Set ISP/IAP/EEPROM READ command
IAP_ADDRL = addr; //Set ISP/IAP/EEPROM address low
IAP_ADDRH = addr >> 8; //Set ISP/IAP/EEPROM address high
IAP_TRIG = 0x5a; //Send trigger command1 (0x5a)
IAP_TRIG = 0xa5; //Send trigger command2 (0xa5)
nop(); //MCU will hold here until ISP/IAP/EEPROM operation complete
dat_L= IAP_DATA; //Read ISP/IAP/EEPROM data
IapIdle(); //Close ISP/IAP/EEPROM function
dat=(dat_H << 8)+dat_L;
return dat; //Return Flash data
}
#endif
復制代碼
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
天堂国产
|
日韩视频在线免费观看
|
成年免费大片黄在线观看一级
|
免费精品在线视频
|
国产精品99久久久久久宅男
|
欧美精品网
|
久久精品国产99国产精品亚洲
|
亚洲精品日韩欧美
|
日韩一级免费观看
|
欧美日韩一区在线
|
午夜精品一区
|
波多野结衣在线观看一区二区三区
|
国产色婷婷精品综合在线手机播放
|
狠狠干综合视频
|
亚洲一区二区三区高清
|
四虎影院新网址
|
一区二区成人
|
99视频在线播放
|
欧美a∨
|
国产福利视频
|
亚洲视频在线观看
|
国产精品精品久久久
|
色婷婷综合网
|
欧美黄色网
|
国产精品九九九
|
a视频在线
|
精品视频在线观看
|
在线小视频
|
狠狠躁夜夜躁人人爽天天高潮
|
人人做人人澡人人爽欧美
|
精品国产乱码久久久久久牛牛
|
日本一区二区三区在线观看
|
欧美久久久久久
|
国产传媒在线观看
|
午夜在线影院
|
欧美日韩久久精品
|
美女张开腿露出尿口
|
久久精品一区二区
|
亚洲国产精品一区二区三区
|
久久国产一区
|
免费毛片网站在线观看
|