基于51的FM1702射频卡程序.doc
文本预览下载声明
#includereg52.h
#includeintrins.h
#includeFM1702.h
#define uchar unsigned char
#define uint unsigned int
uchar Fbuff[16]; //发送FIFO缓存
uchar Jbuff[16]; //接收FIFO缓存
uchar UID[7]; //卡型及卡号
uchar Data[4]; //按键值存储区
uchar code seg[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E}; //数码管段选对应0~f
uchar count=0 ; //按键回传的值
uchar shuaka,chongzhi,keyflag=0;
sbit k2=P3^5; //充值‘加值键(实现加1或者加10)
sbit k3=P3^2; //刷卡’减值键(实现减1或者减10)
sbit k4=P3^3; //确认键
sbit nWR=P2^4; //74hc373片选
/*****************1702函数声明**************************/
uchar spi(uchar m);
void fifo_clear();
void resig_write(uchar reg,uchar da);
uchar resig_read(uchar reg);
uchar fifo_read(uchar count,uchar *s);
void fifo_write(uchar count,uchar *s);
uchar inti_1702();
void card_halt();
uchar request();
uchar card_anticoll();
uchar card_select();
uchar card_authtication(uchar m) ;
uchar card_read(uchar m);
uchar card_write(uchar m);
uchar loadkey();
void delay(uchar m);
/********************按键显示函数声明***************/
void display();
void keyscan() ;
void data1deal() ;
void data2deal(uchar m);
void lcdclear();
/***********************子函数解释******************/
/*********************************************************/
//解释: 这是spi总线的读写时序,所有的寄存器操作基于此时序,非常重要
//
//
//输入:要写入的16进制参数
//
//
//输出:内部传回的16进制参数
//
/********************************************************/
uchar spi(uchar m)
{
uchar i,temp=0;
for(i=0;i8;i++)
{
sck=0;
if(m0x80)
mosi=1;
else
mosi=0;
m=1;
sck=1;
temp=1;
if(miso)
temp|=0x01;
}
sck=0;
mosi=0;
return temp;
}
/*********************************************************/
//解释:写寄存器函数
//
//
//输入:寄存器地址 以及要写入的参数
//
//
//输出:
//
//注意!!在所有的资料中都没有给出寄存器寻址时的格式,下边的有,看仔细了,如果连寄存器都找不到,后边的就不用看了
/********************************************************/
void resig_write(uchar reg,uchar da)
{
sck=0;
reg=1;
cs=0;
reg=reg0x7e;
spi(reg);
spi(da);
cs=1;
}
/********************************
显示全部