日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

rc52实现的部分代码

發布時間:2023/12/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 rc52实现的部分代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

//******************************************************************/
//功能:讀出RC522寄存器
//參數說明:address[IN]:寄存器地址
//返回:讀出的值
//******************************************************************/
unsigned char ReadRawRC(unsigned char Address)
{
unsigned char i, ucAddr ;
unsigned char ucResult=0 ;
NSS522_0 ;
SCK522_0 ;
ucAddr = ((Address<<1)&0x7E)|0x80 ;
for(i=8;i>0;i–)
{
if((ucAddr&0x80)==0x80)
SI522_1 ;
else
SI522_0 ;
SCK522_1 ;
ucAddr <<= 1 ;
SCK522_0 ;
}
for(i=8;i>0;i–)
{
SCK522_1 ;
ucResult <<=1 ;
ucResult |= SO522 ;
SCK522_0 ;
}
SCK522_0 ;
NSS522_1 ;
return ucResult ;
}

//******************************************************************/
//功能:寫RC522寄存器
//參數說明:address[IN]:寄存器地址
// value 要寫入的值
//******************************************************************/

void WriteRawRC(unsigned char Address, unsigned char value)
{
unsigned char ucAddr ;

NSS522_0 ; SCK522_0 ; ucAddr = ((Address<<1)&0x7E) ; {if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ;if(ucAddr&0x80)SI522_1 ;elseSI522_0 ; SCK522_1 ;ucAddr <<= 1 ;SCK522_0 ; } {if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ;if(value&0x80)SI522_1 ;elseSI522_0 ;SCK522_1 ;value <<= 1 ;SCK522_0 ; } SCK522_0; NSS522_1;

}

//******************************************************************/
//功能:置RC522寄存器位
//參數說明:reg[IN]:寄存器地址
// mask[IN]:置位值
//******************************************************************/
void SetBitMask(unsigned char reg,unsigned char mask)
{
char tmp = 0x0 ;
tmp = ReadRawRC(reg)| mask;
WriteRawRC(reg,tmp | mask); // set bit mask
}

//******************************************************************/
//功能:清RC522寄存器位
//參數說明:reg[IN]:寄存器地址
// mask[IN]:清位值
//******************************************************************/
void ClearBitMask(unsigned char reg,unsigned char mask)
{
char tmp = 0x0 ;
tmp = ReadRawRC(reg)&(~mask);
WriteRawRC(reg, tmp) ; // clear bit mask
}

//******************************************************************/
//功能:復位RC522
//返回:成功返回MI_OK
//******************************************************************/
char PcdReset()
{
RF_POWER_ON ;
RST522_1 ;
DelayUs2x(2);//DelayUs2x(60) ;
RST522_0 ;
DelayUs2x(2);//DelayUs2x(60) ;
RST522_1 ;
DelayUs2x(2);//DelayUs2x(60) ;
WriteRawRC(CommandReg,PCD_RESETPHASE);
DelayUs2x(2);//DelayUs2x(60) ;
WriteRawRC(ModeReg,0x3D) ;
WriteRawRC(TReloadRegL,30) ;
WriteRawRC(TReloadRegH,0) ;
WriteRawRC(TModeReg,0x8D) ;
WriteRawRC(TPrescalerReg,0x3E) ;
// WriteRawRC(TxASKReg,0x40) ; // FOR DEBUG AND TEST
return MI_OK ;
}

總結

以上是生活随笔為你收集整理的rc52实现的部分代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。