📄 24lc16.c
字号:
/*
****************************************************************************
AT24C08 test program, Test ok!,Us with [delay.asm]
Write byte Tan-wentang, 2004-08-15
****************************************************************************
*/
#include <reg2051.h>
#include <intrins.H>
#include "Dialer_program.h"
extern void delay(unsigned char k);
extern bit EETestAcknowledge (void);
extern unsigned char EEReadByte (void);
extern void EESendByte (unsigned char d);
extern void EEStop (void);
extern void EEAcknowledge (void);
extern void EENoAcknowledge (void);
extern void EEStart (void);
extern void EESendWcom (unsigned char Block, com);
extern void EEReadPage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) ;
extern void EEWritePage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n);
//=========================================================================
bit EETestAcknowledge (void) {
SDA_24C08 = 1;
_nop_();
_nop_();
CLK_24C08 = 1;
_nop_();
_nop_();
F0 = SDA_24C08;
_nop_();
_nop_();
CLK_24C08 = 0;
return F0;
}
//=========================================================================
unsigned char EEReadByte (void) {
unsigned char d = 0;
unsigned char i;
i = 8;
do {
CLK_24C08 = 1;
d *= 2;
if (SDA_24C08) d++;
CLK_24C08 = 0;
_nop_();
} while (--i);
return d;
}
//=========================================================================
void EESendByte (unsigned char d) {
unsigned char i;
i = 8;
do {
SDA_24C08 = (bit)(d & 0x80);
_nop_();
_nop_();
CLK_24C08 = 1;
_nop_();
_nop_();
CLK_24C08 = 0;
d *= 2;
} while(--i);
return;
}
//=========================================================================
void EEStop (void) {
CLK_24C08 = 0;
_nop_();
_nop_();
SDA_24C08 = 0;
_nop_();
_nop_();
CLK_24C08 = 1;
_nop_();
_nop_();
SDA_24C08 = 1;
return;
}
//=========================================================================
void EEAcknowledge (void) {
SDA_24C08 = 0;
_nop_();
_nop_();
CLK_24C08 = 1;
_nop_();
_nop_();
CLK_24C08 = 0;
_nop_();
_nop_();
SDA_24C08 = 1;
return;
}
//=========================================================================
void EENoAcknowledge (void) {
SDA_24C08 = 1;
_nop_();
_nop_();
CLK_24C08 = 1;
_nop_();
_nop_();
CLK_24C08 = 0;
return;
}
//=========================================================================
void EEStart (void) {
SDA_24C08 = 1;
_nop_();
_nop_();
CLK_24C08 = 1;
_nop_();
_nop_();
SDA_24C08 = 0;
_nop_();
_nop_();
CLK_24C08 = 0;
return;
}
//=========================================================================
void EESendWcom (unsigned char Block, com) {
EEStart();
//EESendByte(0xa0);
EESendByte(0xa0 | com | ((Block & 0x07) * 2));
}
//=========================================================================
void EEReadPage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) {
// WP = 0;
EESendWcom(Block , 0x00);
EETestAcknowledge();
EESendByte(StartAddr);
EETestAcknowledge();
EEStart();
EESendWcom(Block , 0x01);
EETestAcknowledge();
do {
if (1 == n) break;
if (0 == n) break;
*str = EEReadByte();
EEAcknowledge();
str++;
n--;
} while(1);
*str = EEReadByte();
EENoAcknowledge();
EEStop();
// WP = 1;
//EEDelayMs(0x000a);
}
// 0 1 2 3 4 5 6 7 * 256 = 8 * 0x100 = 0x800
// 0 1 2 3 4 5 6 7 * 256 = 8 * 0x100 * 8 = 0x4000
//=========================================================================
//; MOV R5, #83H ;DATAADDR
//; MOV R3, 2BH ;EEPROMADDR
//; MOV R2, 2AH ;EEPROM BLOCK ADDR
//; MOV R7, #01H ;BYTE COUNT
//; LCALL L1EE3H
//=========================================================================
void EEWritePage (unsigned char *str, unsigned char Block, unsigned char StartAddr, unsigned char n) {
// WP = 0;
EESendWcom(Block , 0x00);
EETestAcknowledge();
EESendByte(StartAddr);
EETestAcknowledge();
do {
if (0 == n) break;
EESendByte(*str);
EETestAcknowledge();
str++;
n--;
} while (1);
EEStop();
delay(0x02);
// WP = 1;
}
void delay(unsigned char k){
unsigned char i,j;
for(k;k > 0;k--){
for (i=0;i<0x02;i++){
for(j=0;j<0xFF;j++){
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -