⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SmartARM2400系列开发板全套资料
💻 C
字号:
/****************************************Copyright (c)***************************************************
**                               Guangzou ZLG-MCU Development Co.,LTD.
**                                      graduate school
**                                 http://www.zlgmcu.com
**
**--------------File Info-------------------------------------------------------------------------------
** File name:			main.c
** Last modified Date:  2008.04.25
** Last Version:		V1.00
** Descriptions:		The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Modified by:			gaolihua
** Modified date:		2008.07.02
** Version:				V1.0
** Descriptions:		ZLG522演示程序
**
*********************************************************************************************************/
#include <string.h>
#include "config.h"
#include "zlg500.h"

#define BUZZER 	(1 << 30)	              								/* 蜂鸣器控制端口P3.30,需用跳线
																		   帽短接JP10的P3.30和BEEP两排针*/

char	szDevInfo[20];
uint16	nCardType;
uint32	nCardNumber;
uint8 	DataBuf[16];
uint8 	Key[6];
int32	nValue;
uint8	SAK;
uint8	nTxMode;
/*********************************************************************************************************
* Function name:       Delay
* Descriptions:        长软件延时
* input parameters:    ms	延时参数,值越大,延时越久
* output parameters:   none
* Returned value:      none
** Modified by:        gaolihua
** Modified date:      2008.07.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void Delay(int ms)
{
	int i;	
	while (ms-- > 0) {
	
		for (i = 5000; i > 0; i--);
	}
}

/*********************************************************************************************************
* Function name:       Beep
* Descriptions:        蜂鸣器鸣叫
* input parameters:    nCount	蜂鸣器鸣叫的次数
* output parameters:   none
* Returned value:      none
** Modified by:        gaolihua
** Modified date:      2008.07.02
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void Beep(uint8 nCount)
{
	while (nCount-- > 0) {
	
		FIO3CLR = BUZZER;
		Delay(200);
		FIO3SET = BUZZER;
		Delay(100);
	}
}
/**********************************************************************************************************
** 函数名称 :main
** 函数功能 :zlg522读卡模块读取卡片的操作
** 调试说明 :
**********************************************************************************************************/
extern void EnableIRQ(void);
int main (void)
{
	int i;	
	
	FIO3DIR |= BUZZER;
	FIO3SET  = BUZZER;
    EnableIRQ();
    /* 获取读卡模块信息*/
	do { 
	
	   
		PCD_Init();                                                  	/* 初始化软件库              	*/
	} while (PCD_GetDevInfo(szDevInfo, sizeof(szDevInfo)) != OK);
	
	Key[0] = 0xFF;
	Key[1] = 0xFF;
	Key[2] = 0xFF;
	Key[3] = 0xFF;
	Key[4] = 0xFF;
	Key[5] = 0xFF;

	while(1) {
	
		
		if (PICC_Request(REQ_STD, &nCardType) != OK) {               	/* 请求卡片,获得卡片类型     	*/
		
			continue;
		}
		
		PICC_Anticoll(SEL_CODE1, &nCardNumber);                      	/* 卡片防碰撞, 获得卡片序列号 	*/
		
		PICC_Select(SEL_CODE1, nCardNumber, &SAK);                   	/* 选择卡片                   	*/
		
		Beep(1);                                                     	/* 蜂鸣器叫一声               	*/
		Delay(2000);

		if (PICC_AuthKeyDirect(Key, KEYA, nCardNumber, 4) == OK) {   	/* 密钥验证                   	*/
		
			
			PICC_ReadBlock(4, DataBuf);                              	/* 读块4原来的数据            	*/
			
			for (i = 0; i < 16; i++) {                                	/* 写数据到块4                	*/
			
				DataBuf[i] = i;
			}		
			PICC_WriteBlock(4, DataBuf);
			
			memset(DataBuf, 0, sizeof(DataBuf));                     	/* 从块4读回前面所写的数据    	*/
			PICC_ReadBlock(4, DataBuf);
			
			PICC_WriteValue(1, 4);                                   	/* 写数值1到块4               	*/
			
			PICC_OperateValue(INCREMENT, 1, 4, 5);                   	/* 把块4的数值增加1写到块5,
																		   再读回来看是否正确 			*/
			PICC_ReadValue(&nValue, 5);
			
			PICC_OperateValue(DECREMENT, 1, 4, 6);                   	/* 把块4的数值减少1写到块6,
																		   再读回来看是否正确 		 	*/
			PICC_ReadValue(&nValue, 6);
			
			PICC_Halt();                                             	/* 挂起卡片                    	*/
			
			Beep(2);                                                 	/*蜂鸣器叫两声                 	*/
		}		

		/*
		 *	设置自动检测卡片——串口主动发回数据,TX交替,直接密码验证,密钥A,读块4 
		 */
		PICC_AutoDetect(AD_SERIAL_OUT, AD_ALTER_TX, REQ_STD, 'F', KEYA, Key, 0, 4);       
		
		/*
		 * 等待直到接收到自动检测卡片的数据   
		 */        
		while (PICC_ReceiveDetectData(&nTxMode, &nCardType, &nCardNumber, DataBuf) != OK);                
		
		PICC_Halt();
		
		
		Beep(3);                                                      	/* 蜂鸣器叫三声                 */
	}
	
	return 0;
}
/*********************************************************************************************************
**                            End Of File
********************************************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -