125kHzRFID读卡器研究报告

发布时间 : 星期一 文章125kHzRFID读卡器研究报告更新完毕开始阅读

//-------------------EM4095天线初始化---------------------// void Em4095_init() {

SHD=1; delay_ms(35); SHD=0; delay_ms(35); }

//--------------------脉宽计算子函数-------------------------// void Pluse_calculate() {

if(Input_Num%2==0) //Input_Num=0记录进入中断次数,偶数次记录上升沿时间

//奇数次记录下降沿,自动清零 {

Last_risingedge_time=Now_risingedge_time; //记录此次上升沿时间

Now_risingedge_time=TC7; //将检测到上升沿的时间赋值

33

} else {

Last_fallingedge_time=Now_fallingedge_time; //记录此次下降沿时间

Now_fallingedge_time=TC7; //将检测到下降沿的时间赋值

Pluse_width=Now_fallingedge_time-Now_risingedge_time;//此次高电平的脉宽

Last_L_width=Now_fallingedge_time-Last_fallingedge_time;//此次下降沿与上一次下降沿的宽度 } }

//------------------------数据头检测函数-------------------------------// void Head_check() {

if(Head_start)

Check_over=1; //当数据头检测完成后要等到下一个脉冲来到才能执行解码函数 else {

34

if(Pluse_width>=Min_halfbit&&Pluse_width<=Max_halfbit)//连续出现9个1/2bit的高脉冲

//则认为是数据头 { i++; if(i==9) {

Head_start=1; i=0; } }

else i=0; } }

//---------------------M码解码子函数-------------------------// void M_decode() {

if(Check_over) //数据头检测完成 并等到下一个脉冲到来 {

if(Decode_cnt

35

{

if(Pluse_width>=Min_halfbit&&Pluse_width<=Max_halfbit) //检测脉冲宽度是否为1/2bit

{

if(Last_L_width>=Min_1bit&&Last_L_width<=Max_1bit)//此次上升沿与上一次的下降沿

//是否为1/2bit {

if(Decode_cnt==0) {

Decode_data[0]=1;//如果是第一位数据,

直接解码为\

Decode_cnt++;

} else {

Decode_data[Decode_cnt]=Decode_data[Decode_cnt-1];//否则等于上一次的数据

36

联系合同范文客服:xxxxx#qq.com(#替换为@)