📄 card9346.c
字号:
/**************************************************************/
// from www.laogu.com
/**************************************************************/
#include "card9346.h"
#include "ylystd.h"
#include "hostmcu.h"
#include "8019.h"
/**************************************************************/
uint read_93c46(uchar address)
{
//93c46 command register:
// 7 6 5 4 3 2 1 0
// eem1 eem0 nc nc eecs eesk eedi eedo
uchar count;
uint retval;
address|=0x80;
myoutportb(0x00,0xe2); //select page 3 register
//first bit is 1
myoutportb(0x01,0x8a); //cs=1 sk=0 di=1
myoutportb(0x01,0x8e); //cs=1 sk=1 di=1
do_93c46(address);
for(count=0;count<16;count++)
{
//out 0
myoutportb(0x01,0x88); //cs=1 sk=0 di=0
myoutportb(0x01,0x8c); //cs=1 sk=1 di=0
retval<<=1;
if(myinportb(0x01)&0x01!=0)
{
retval|=0x01;
}
}
myoutportb(0x01,0x88); //cs=1 sk=0 di=0
myoutportb(0x01,0x00); //cs=0 sk=0 di=0
return retval;
}
/**************************************************************/
void write_93c46(uchar address,uint value)
{
uchar tmp;
myoutportb(0x00,0xe2); //select page 3 register
myoutportb(0x01,0x8a); //out start bit: 1
myoutportb(0x01,0x8e);
do_93c46(0x3c); //Write/Erase enable
myoutportb(0x01,0x88);
myoutportb(0x01,0x00);
myoutportb(0x01,0x8a); //out start bit: 1
myoutportb(0x01,0x8e);
tmp=address|0x40; //actrual write
do_93c46(tmp);
do_93c46(value>>8);
do_93c46(value&0xff);
myoutportb(0x01,0x88);
myoutportb(0x01,0x00);
myoutportb(0x01,0x88); //wait for write finish
for(tmp=0;tmp<10000;tmp++)
{
if((myinportb(0x01)&0x01)!=0)
break;
}
myoutportb(0x01,0x00);
myoutportb(0x01,0x8a); //Write/Erase disable
myoutportb(0x01,0x8e);
do_93c46(0x00);
myoutportb(0x01,0x88);
myoutportb(0x01,0x00);
}
/**************************************************************/
void do_93c46(uchar val)
{
uchar count;
uchar tmpval;
tmpval=val;
for(count=0;count<8;count++)
{
if((tmpval&0x80)!=0)
{
//out 1
myoutportb(0x01,0x8a);
myoutportb(0x01,0x8e);
}
else
{
//out 0
myoutportb(0x01,0x88);
myoutportb(0x01,0x8c);
}
tmpval<<=1;
}
}
/**************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -