📄 at102.h
字号:
#define IC_VCC_OUT P6OUT
#define IC_VCC_DIR P6DIR
#define IC_VCC_BIT BIT5
#define IC_RST_OUT P6OUT
#define IC_RST_DIR P6DIR
#define IC_RST_BIT BIT4
#define IC_CLK_OUT P6OUT
#define IC_CLK_DIR P6DIR
#define IC_CLK_BIT BIT3
#define IC_PGM_OUT P6OUT
#define IC_PGM_DIR P6DIR
#define IC_PGM_BIT BIT7
#define IC_DATA_IN P6IN
#define IC_DATA_OUT P6OUT
#define IC_DATA_DIR P6DIR
#define IC_DATA_BIT BIT6
void ic_delay(unsigned int lll)
{
unsigned int qqq;
for(qqq=0;qqq<lll;qqq++);
}
void Locate_Bit(unsigned int add)
{
unsigned int i;
ic_delay(50);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_RST_OUT |= IC_RST_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_RST_OUT &=~IC_RST_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
for(i=0;i<add;i++)
{
IC_CLK_OUT |= IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
}
}
void Locate_Word(unsigned int add)
{
unsigned int temp;
temp=add;
temp<<=4;
Locate_Bit(temp);
}
void Write_Bit(void)
{
IC_DATA_DIR |= IC_DATA_BIT;
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT |= IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_DATA_OUT &=~IC_DATA_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT |= IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
ic_delay(8000);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
}
void Erase_Bit(void)
{
IC_DATA_DIR |= IC_DATA_BIT;
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT |= IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_DATA_OUT |= IC_DATA_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT |= IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
ic_delay(8000);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
}
unsigned int Read_IC(unsigned int add)
{
unsigned int i,temp;
Locate_Word(add);
ic_delay(50);
IC_RST_OUT &=~IC_RST_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_DATA_DIR &=~IC_DATA_BIT;
temp=0;
_NOP();
_NOP();
ic_delay(50);
for(i=0;i<16;i++)
{
temp<<=1;
if((IC_DATA_IN & IC_DATA_BIT)==IC_DATA_BIT)
{
temp++;
}
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT |= IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
}
return temp;
}
unsigned char Write_IC(unsigned int add,unsigned int data)
{
unsigned int i,temp;
Locate_Word(add);
temp=data;
for(i=0;i<16;i++)
{
if((temp & BITF)==BITF)
{
_NOP();
}
else
{
Write_Bit();
}
ic_delay(800);
IC_CLK_OUT |= IC_CLK_BIT;
ic_delay(800);
IC_CLK_OUT &=~IC_CLK_BIT;
ic_delay(800);
temp<<=1;
}
temp=Read_IC(add);
if (temp==data)
return 1;
else
return 0;
}
unsigned char SC_Com(unsigned int psw)
{
unsigned int temp,i;
temp=psw;
Locate_Bit(80);
_NOP();
_NOP();
ic_delay(50);
IC_RST_OUT &=~IC_RST_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_PGM_OUT &=~IC_PGM_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_DATA_DIR |= IC_DATA_BIT;
_NOP();
_NOP();
ic_delay(50);
for(i=0;i<16;i++)
{
if(temp & 0x8000)
IC_DATA_OUT |= IC_DATA_BIT;
else
IC_DATA_OUT &=~IC_DATA_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT |= IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
temp<<=1;
}
IC_DATA_DIR &=~IC_DATA_BIT;
_NOP();
_NOP();
ic_delay(50);
for(i=0;i<4;i++)
{
if((IC_DATA_IN & IC_DATA_BIT)==IC_DATA_BIT)
{
Write_Bit();
IC_DATA_DIR &=~IC_DATA_BIT;
ic_delay(800);
if((IC_DATA_IN & IC_DATA_BIT)==IC_DATA_BIT)
{
return 0;
}
else
{
Erase_Bit();
return 1;
}
}
IC_CLK_OUT |= IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
IC_CLK_OUT &=~IC_CLK_BIT;
_NOP();
_NOP();
ic_delay(50);
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -