📄 89f0x0.c
字号:
// AT89F0X0操作程序
// author:wacke
// date: 2005/7/15
//
// | P0(0~7)<-----------------------> DQ(0~7) |
// | |->D(0~7) 373 Q(0~7) <-> A(0~7 ) |
// | ALE -----> ALE. |
// | P2(0~7)<-----------------------> A(8~15) | 89F0X0
// 51 | P2(0~7)<-> D(0~7) 373 Q(0~7) <-> A(16~23)|
// | P3.2 -----> LE. |
// | |
//
#include "89F0X0.h"
uchar Curpage;
struct Index Idx;
uchar ResetFlash(void) //复位FLASH
{
uchar xdata *p;
SetPage(0);
p = 0x0000;
*p = 0xf0;
return *p;
}
uchar ReadFlash(struct FlashAddr addr) //读FLASH
{
uchar xdata *p;
SetPage(addr.AddH);
p = addr.AddL;
return *p;
}
void WriteFlash(struct FlashAddr addr,uchar dat) //写FALSE
{
uchar xdata *p;
SetPage(addr.AddH);
p = 0x5555;
*p = 0xaa;
p = 0x2aaa;
*p = 0x55;
p = 0x5555;
*p = 0xa0;
p = addr.AddL;
*p = dat;
}
void ErasePage(struct FlashAddr addr) //擦除页
{
uchar xdata *p;
SetPage(addr.AddH);
p = 0x5555;
*p = 0xaa;
p = 0x2aaa;
*p = 0x55;
p = 0x5555;
*p = 0x80;
*p = 0xaa;
p = 0x2aaa;
*p = 0x55;
p = addr.AddL;
*p = 0x30;
delay(255);
*p = 0xf0;
}
uchar GetPartID(void) //获取零件号
{
uchar PartID;
uchar xdata *p;
SetPage(0);
p = 0x5555;
*p = 0xaa;
P = 0x2aaa;
*p = 0x55;
p = 0x5555;
*p = 0x90;
p = 0x0001;
PartID = *p;
p = 0x5555;
*p = 0xaa;
p = 0x2aaa;
*p = 0x55;
p = 0x5555;
*p = 0xf0;
return PartID;
}
uchar GetFactureID(void) //获取功能号
{
uchar PartID;
uchar xdata *p;
SetPage(0);
p = 0x5555;
*p = 0xaa;
P = 0x2aaa;
*p = 0x55;
p = 0x5555;
*p = 0x90;
p = 0x0002;
PartID = *p;
p = 0x5555;
*p = 0xaa;
p = 0x2aaa;
*p = 0x55;
p = 0x5555;
*p = 0xf0;
return PartID;
}
void SetPage(uchar Page) //内部函数,设FALSH高位地址
{
Curpage = Page&0x0f|0x08;
ALE = 1;
P2 = Curpage;
ALE = 0;
}
void delay(uchar time) //内部函数,延时用
{
uchar i,j;
for(i = 0; i < time; i++)
for(j = 0; j < 0xff; j++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -