📄 htd30v02.c
字号:
{
nop5();
nop5();
nop5();
nop5();
nop5();
nop5();
nop5();
nop5();
nop5();
nop5();
}
}
void delay_2ms(void)
{
uchar i;
for(i=0;i<10;i++)
nop5();
}
void delay_1ms(void)
{
uchar i;
for(i=0;i<35;i++)
nop5();
}
void show_start(void)
{
// EEPCON=0;
// delay_1ms();
//c SEL_OTHERS=1;
//c mirror_377&=0xff ; //c 使卡在插入后上电
//c sel_hc377=mirror_377 ;
nop5();
CARD_SCL=0;
nop5();
S_SDA=1;
nop5();
CARD_SCL=1;
nop5();
S_SDA=0;
nop5();
CARD_SCL=0;
nop5();
}
void show_stop(void)
{
CARD_SCL=0;
nop5();
S_SDA=0;
nop5();
CARD_SCL=1;
nop5();
S_SDA=1;
nop5();
// CARD_SCL=0;
// nop5();
// CARD_SDA=0;
}
void show_send(uchar eedata)
{
uchar i;
for(i=0;i<8;i++)
{
CARD_SCL=0;
nop5();
eedata<<=1;
// if(eedata&0x80)
// CARD_SDA=1;
// else
// CARD_SDA=0;
S_SDA=CY;
nop5();
CARD_SCL=1;
nop5();
}
CARD_SCL=0;
nop5();
CARD_SCL=1;
nop5();
CARD_SCL=0;
}
uchar show_take(void)
{
uchar i;
uchar worth=0;
nop5();
for(i=0;i<8;i++)
{
CARD_SCL=0;
nop5();
CARD_SCL=1;
nop5();
worth<<=1;
if (S_SDA)
worth++;
}
nop5();
CARD_SCL=0;
nop5();
S_SDA=1;
nop5();
CARD_SCL=1;
nop5();
S_SDA=0;
return(worth);
}
//same for ic card operate
void card_start(void)
{
// EEPCON=0;
// delay_1ms();
//c SEL_OTHERS=1;
//c mirror_377&=0xff ; //c 使卡在插入后上电
//c sel_hc377=mirror_377 ;
nop5();
CARD_SCL=0;
nop5();
CARD_SDA=1;
nop5();
CARD_SCL=1;
nop5();
CARD_SDA=0;
nop5();
CARD_SCL=0;
nop5();
}
void card_stop(void)
{
CARD_SCL=0;
nop5();
CARD_SDA=0;
nop5();
CARD_SCL=1;
nop5();
CARD_SDA=1;
nop5();
// CARD_SCL=0;
// nop5();
// CARD_SDA=0;
}
void card_send(uchar eedata)
{
uchar i;
for(i=0;i<8;i++)
{
CARD_SCL=0;
nop5();
eedata<<=1;
// if(eedata&0x80)
// CARD_SDA=1;
// else
// CARD_SDA=0;
CARD_SDA=CY;
nop5();
CARD_SCL=1;
nop5();
}
CARD_SCL=0;
nop5();
CARD_SCL=1;
nop5();
CARD_SCL=0;
}
uchar card_take(void)
{
uchar i;
uchar worth=0;
nop5();
for(i=0;i<8;i++)
{
CARD_SCL=0;
nop5();
CARD_SCL=1;
nop5();
worth<<=1;
if (CARD_SDA)
worth++;
}
nop5();
CARD_SCL=0;
nop5();
CARD_SDA=1;
nop5();
CARD_SCL=1;
nop5();
CARD_SDA=0;
return(worth);
}
//read ic card
void card_read(uchar *store_add,uchar read_len)
{
uchar j;
card_stop();
_nop_();
_nop_();
EEPCON=0;
delay_1ms();
delay_1ms();
card_start();
card_send(0xa0);
card_send(add_start.add_byte[0]);
nop5();
card_send(add_start.add_byte[1]);
for(j=0;j<read_len;j++)
{
EEPCON=0;
delay_1ms();
card_start();
card_send(0xa1);
*(store_add+j)=card_take();
}
// add_start.add_word+=read_len;
card_stop();
delay_10ms();
EEPCON=1;
}
//write ic card
void card_write(uchar *load_add,uchar write_len)
{
uchar j;
card_stop();
_nop_();
_nop_();
EEPCON=0;
delay_1ms();
delay_1ms();
card_start();
card_send(0xa0);
card_send(add_start.add_byte[0]);
card_send(add_start.add_byte[1]);
for(j=0;j<write_len;j++)
card_send(*load_add++);
card_stop();
delay_10ms();
EEPCON=1;
// add_start.add_word+=write_len;
}
//read show dep. ask
void show_read(uchar *store_add,uchar read_len)
{
uchar j;
show_stop();
_nop_();
_nop_();
EEPCON=0; //要求使用外部IIC总线,需要延时等待显示部分放弃总线
delay_1ms();
show_start();
show_send(0xac);
show_send(add_start.add_byte[1]);
// nop5();
// card_send(add_start.add_byte[1]);
for(j=0;j<read_len;j++)
{
show_start();
show_send(0xad);
*(store_add+j)=show_take();
}
add_start.add_word+=read_len;
show_stop();
// EEPCON=1;
}
//write show dep. ask
void show_write(uchar *load_add,uchar write_len)
{
uchar j;
show_stop();
_nop_();
_nop_();
EEPCON=0; //要求使用外部IIC总线,需要延时等待显示部分放弃总线
delay_1ms();
show_start();
show_send(0xac);
// card_send(add_start.add_byte[0]);
show_send(add_start.add_byte[1]);
for(j=0;j<write_len;j++)
show_send(*load_add++);
show_stop();
// EEPCON=1;
add_start.add_word+=write_len;
}
//FM3164 RTC OPERATION
//void fm_delay(void)
// {
// _nop_();
// _nop_();
// _nop_();
// _nop_();
// }
void fm_start(void)
{
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
void fm_stop(void)
{
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=0;
}
void fm_send(uchar eedata)
{
uchar i;
for(i=0;i<8;i++)
{
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
eedata<<=1;
FM3164_SDA=CY;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=0;
}
uchar fm_take(void)
{
uchar i;
uchar worth=0;
_nop_();
_nop_();
_nop_();
_nop_();
for(i=0;i<8;i++)
{
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
// _nop_();
FM3164_SCL=1;
_nop_();
_nop_();
_nop_();
// _nop_();
worth<<=1;
if (FM3164_SDA)
worth++;
}
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=0;
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=1;
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SCL=1;
_nop_();
_nop_();
_nop_();
_nop_();
FM3164_SDA=0;
return(worth);
}
//read fm_ram
void fm_read(uchar *store_add,uchar read_len)
{
fm_start();
fm_send(0xa0);
fm_send(add_start.add_byte[0]);
fm_send(add_start.add_byte[1]);
_nop_();
_nop_();
_nop_();
_nop_();
while(read_len--)
{
fm_start();
fm_send(0xa1);
*(store_add++)=fm_take();
// read_len--;
}
fm_stop();
}
void read_to_dbuf(uchar step,uint read_len) //将FM24C64的数据载入到USB缓冲区,参数为地址分辨码
{
uint i;
fm_start();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -