#include #include #include #include "main.h" #include "slrc632.h" #include "iso14443a.h" #include "iso14443b.h" #include "iso15693.h" /*Declare SFR associated with the IAP */ sfr IAP_DATA = 0xE2; //Flash data register sfr IAP_ADDRH = 0xE3; //Flash address HIGH sfr IAP_ADDRL = 0xE4; //Flash address LOW sfr IAP_CMD = 0xE5; //Flash command register sfr IAP_TRIG = 0xE6; //Flash command trigger sfr IAP_CONTR = 0xE7; //Flash control register //硬件版本號 unsigned char code hardmodel[12] = {"SL601F-0512"}; bit g_bReceOk; //正確接收到上位機指令標(biāo)志 bit g_bReceAA; //接收到上位機發(fā)送的AA字節(jié)標(biāo)志 bit g_bRc632Ok; //RC632復(fù)位正常標(biāo)志 bit g_bIblock; void outputconvery (); unsigned char Readcard_flag,start_flag=0,startnum=0; unsigned int idata g_cReceNum; //接收到上位機的字節(jié)數(shù) unsigned int data g_cCommand; //接收到的命令碼 unsigned char data g_cSNR[4]; //M1卡序列號 unsigned char g_cIcdevH; //設(shè)備標(biāo)記 unsigned char g_cIcdevL; //設(shè)備標(biāo)記 unsigned char g_cFWI; // unsigned char idata g_cCidNad,huankuaiflag=0; // unsigned char idata g_cReceBuf[64]; //和上位機通訊時的緩沖區(qū) unsigned char idata canshu[5]={0x00,0x00,0x00,0x10,0x01};//0:扇區(qū),1:塊,2-3:卡號首尾位置,4:讀卡方式 unsigned char idata key[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};//密碼 unsigned char idata canshuflag=0,timenum=0,UID[4]; struct TranSciveBuffer{unsigned char MfCommand; unsigned int MfLength; unsigned char MfData[64]; }; /***************************定時器0初始化********************************/ void timer0init (void)//22.1184MHZ,20ms { TH0=0x70; TL0=0x00; ET0=1; TR0=1; TMOD=0x21; } /*****************************定時器0中斷函數(shù)********************************/ void timer0(void) interrupt 1 { TH0=0x70; TL0=0x00; timenum++; if(timenum==100) canshuflag=1,timenum=0; } void gonggongdaima(void) { IAP_TRIG = 0x46;//發(fā)送46h到觸發(fā)寄存器 IAP_TRIG = 0xB9;//發(fā)送B9h到觸發(fā)寄存器 _nop_();//延時 IAP_CONTR = 0;//關(guān)閉IAP功能 IAP_CMD = 0;//清空命令寄存器 IAP_TRIG = 0;//清空命令觸發(fā)寄存器 IAP_ADDRH = 0;//清空地址高位 IAP_ADDRL = 0;//清空地址低位 } /**************************字節(jié)讀函數(shù)***************************************/ unsigned char Byte_Read(unsigned int add) { IAP_DATA = 0x00;//清空數(shù)據(jù) IAP_CONTR = 0x81;//打開IAP,設(shè)置操作等待時間 IAP_CMD = 0x01;//字節(jié)讀命令 IAP_ADDRH = add>>8;//設(shè)置高8位地址 IAP_ADDRL = add&0x00ff;//設(shè)置低8位地址 gonggongdaima(); return (IAP_DATA);//返回讀到的數(shù)據(jù) } /*****************************字節(jié)編程函數(shù)*****************************/ void Byte_Program(unsigned int add, unsigned char dat) { IAP_CONTR = 0x81;//打開IAP,設(shè)置操作等待時間 IAP_CMD = 0x02;//字節(jié)編程命令 IAP_ADDRH = add>>8;//設(shè)置高8位地址 IAP_ADDRL = add&0x00ff;//設(shè)置低8位地址 IAP_DATA = dat;//要編程的數(shù)據(jù)先送進IAP_DATA寄存器 gonggongdaima(); } /*****************************扇區(qū)擦除函數(shù)****************************/ void Sector_Erase(unsigned int add) { IAP_CONTR = 0x81;//打開IAP,設(shè)置操作等待時間 IAP_CMD = 0x03;//扇區(qū)擦除命令 IAP_ADDRH = add>>8;//設(shè)置高8位地址 IAP_ADDRL = add&0x00ff;//設(shè)置低8位地? gonggongdaima(); } /****************************讀取參數(shù)函數(shù)************************/ void Read_canshu(void) { canshu[0]=Byte_Read(0x8000); canshu[1]=Byte_Read(0x8001); canshu[2]=Byte_Read(0x8002); canshu[3]=Byte_Read(0x8003); canshu[4]=Byte_Read(0x8004); } void Read_Akey(void) { key[0]=Byte_Read(0x8200); key[1]=Byte_Read(0x8201); key[2]=Byte_Read(0x8202); key[3]=Byte_Read(0x8203); key[4]=Byte_Read(0x8204); key[5]=Byte_Read(0x8205); } void Read_Bkey(void) { key[0]=Byte_Read(0x8400); key[1]=Byte_Read(0x8401); key[2]=Byte_Read(0x8402); key[3]=Byte_Read(0x8403); key[4]=Byte_Read(0x8404); key[5]=Byte_Read(0x8405); } /****************************保存參數(shù)函數(shù)****************************/ void Save_canshu(void) { Sector_Erase(0x8000);//擦除扇區(qū) Byte_Program(0x8000,canshu[0]); Byte_Program(0x8001,canshu[1]); Byte_Program(0x8002,canshu[2]); Byte_Program(0x8003,canshu[3]); Byte_Program(0x8004,canshu[4]); } void Save_Akey(void) { Sector_Erase(0x8200);//擦除扇區(qū) Byte_Program(0x8200,key[0]); Byte_Program(0x8201,key[1]); Byte_Program(0x8202,key[2]); Byte_Program(0x8203,key[3]); Byte_Program(0x8204,key[4]); Byte_Program(0x8205,key[5]); } void Save_Bkey(void) { Sector_Erase(0x8400);//擦除扇區(qū) Byte_Program(0x8400,key[0]); Byte_Program(0x8401,key[1]); Byte_Program(0x8402,key[2]); Byte_Program(0x8403,key[3]); Byte_Program(0x8404,key[4]); Byte_Program(0x8405,key[5]); } void delay(unsigned int i) { unsigned char j; while(i--) for(j=0;j<200;j++); } void BEEP(unsigned char i) { unsigned char k; k=100; sond = 0; redled = 1; blueled = 0; delay(k); sond =1; blueled = 1; redled = 0; } void REDON(void) { redled = 1; } void REDOFF(void) { redled = 0; } void BLUEON(void) { blueled = 1; } void BLUEOFF(void) { blueled = 0; } void main( ) { InitializeSystem( ); Rc632Ready( ); PcdConfigISOType( '1' ); BEEP(2); DelayMs(1000); RC632_CE=0;
上一篇:51單片機pwm調(diào)制 產(chǎn)生多路分頻信號 倍頻
下一篇:基于51單片機8音鍵電子琴DIY制作
- 熱門資源推薦
- 熱門放大器推薦
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 人形機器人馬拉松背后的思考,兆易創(chuàng)新如何賦能機器人產(chǎn)業(yè)
- 一種基于STM32的智能柜控制器設(shè)計
- 小型傾轉(zhuǎn)旋翼機的無刷直流電機驅(qū)動器設(shè)計
- 超高速攝影機電控系統(tǒng)設(shè)計
- 基于GPS自動授時的無線智能控制器的設(shè)計
- 基于PTR2000的無線氣象信息采集系統(tǒng)設(shè)計
- Microchip推出MEC175xB系列器件,為嵌入式控制器引入硬件 抗量子攻擊能力
- 無人飛行器機載穩(wěn)定云臺控制系統(tǒng)的設(shè)計
- 匠芯創(chuàng)推出面向具身智能高性能實時處理器M7000
- EVAL-ADG5248FEBZ,ADG5248F 過壓保護 8:1 多路復(fù)用器評估板
- EVAL-ADF7021DBZ3,基于 ADF7021 431 - 470 MHz ISM 頻段收發(fā)器的子板
- 使用 Analog Devices 的 LTC4162EUFD-SADM 的參考設(shè)計
- LT3091MPFE 產(chǎn)生極低輸出電壓的典型應(yīng)用
- 使用 Analog Devices 的 LT1173CN8 的參考設(shè)計
- AD9649-65EBZ,用于 AD9649BCPZ-65、單通道、14 位、65 MSPS 模數(shù)轉(zhuǎn)換器的評估板
- 帶有用于 NCV3063 1.5A 升壓開關(guān)穩(wěn)壓器的外部 NMOS 晶體管的典型升壓應(yīng)用原理圖
- NE555八音電子琴
- KITPF4210EPEVB: Evaluation board- PF4210, Power Management IC for i.MX 8M
- 使用 NXP Semiconductors 的 ISP1582 的參考設(shè)計
- 蘋果App Store政策變化被指不痛不癢 未涉及核心
- 迅為4412開發(fā)板項目實戰(zhàn)-制作支持百度AI和opencv的文件系統(tǒng)
- 對傳感器的未來需求:用于實施狀態(tài)監(jiān)控的智能傳感器
- 小米官方回復(fù)“小米11穩(wěn)定版充電慢”等等10個問題
- 【C51自學(xué)筆記】實時時鐘芯片DS1302
- 數(shù)字萬用表測量電容的四個小方法
- 意法半導(dǎo)體高性能 5V運放系列上新款,節(jié)省空間、低失調(diào)電壓的20MHz產(chǎn)品
- 什么是位邏輯指令?plc位邏輯指令有哪些?plc位邏輯指令應(yīng)用方法圖解
- e絡(luò)盟開售TE Connectivity最新系列連接和傳感器解決方案
- 開啟軟件定義汽車全新未來征程,紅帽車用操作系統(tǒng)即將全面上市
- 車廠&零部件廠大咖說:48V先進電源系統(tǒng)創(chuàng)新技術(shù)及產(chǎn)業(yè)化突破
- ROHM開發(fā)出適用于AI服務(wù)器48V電源熱插拔電路的100V功率MOSFET
- 納芯微高壓半橋驅(qū)動NSD2622N:為E-mode GaN量身打造高可靠性、高集成度方案
- 3核A7+單核M0多核異構(gòu),米爾全新低功耗RK3506核心板發(fā)布
- 自動化控制中智能技術(shù)的應(yīng)用研究
- OEM機器制造商利用仿真軟件提高效率
- 基于機器視覺的帶鋼焊縫定位
- 米爾RK3576核心板適配多種系統(tǒng),解鎖多樣化應(yīng)用
- 實時控制和通信領(lǐng)域的IT/OT融合如何推動工業(yè)自動化