📄 main.c
字号:
/******************************************************************************************************
** File name: main.c
** Last modified Date: 2007-8-18
** Last Version: 1.0
** Descriptions: The main() function example template
**
**------------------------------------------------------------------------------------------------------
** Created by: Daishibao
** Created date: 2007-8-18
** Version: 1.0
** Descriptions: The repaired version
**
**------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
********************************************************************************************************/
#define main_GLOBALS
#include "config.h"
static void main_INIT(void);
uint8 DataBfr[16];
uint8 CardSnr[4];
/********************************************************************************************************
**函数名称:main_INIT()
**函数功能:初始化,使能IRQ中断、超时值设置、串口0初始化
********************************************************************************************************/
void main_INIT()
{
IRQEnable(); //使能IRQ中断
/* 单片机内部资源初始化 */
Timer1_timeout_init(Delay_5ms); //5ms超时设置
UART0_Init(); //串口0初始化
}
/******************************************************************************************************
**函数名称:UART0_Init()
**函数功能:串口0初始化():baud 8 1 N
*****************************************************************************************************/
void UART0_Init()
{
uint16 bak;
PINSEL0=(PINSEL0&(~0x0F))|0x05; //管脚连接UART0
VICVectCntl0=0x20|0x06; //分配UART0中断优先级
VICVectAddr0=(uint32)UART0_Isr; //设置中端服务程序地址
VICIntEnable=1<<0x06; //使能UART0中断
MyAddr=0; //从机地址和波特率要和模块一致
BaudNum=4;
RcvStatus=RCVSTX;
SerDTValid=FALSE;
SerTmOut=0;
SendFlag=FALSE;
SendStatus=SENDIDLE;
U0LCR=0x83; //DLAB=1
bak=(Fpclk/16)/BaudRateTable[BaudNum];
U0DLM=bak/256;
U0DLL=bak%256;
U0LCR=0x03;
U0IER=0x07; //允许发送和接受中断
}
/*******************************************************************************************************
**函数名称:main()
**函数功能:用于测试ZLG500A模块使用函数库
**使用说明:改变Test_Code的值分别测试
** 协议控制类函数 Test_Code=0
** 设备控制类函数 Test_Code=1
** Type命令函数 Test_Code=2
********************************************************************************************************/
int main (void)
{
uint8 Test_Code=1; //改变此值,测试各类函数
main_INIT();
SlvAddr=1; //从机地址
while(1)
{
/* 协议控制类 */
if(Test_Code==0)
{
GetDvcSnr(DataBfr);
SetSlvAddr(1,DataBfr);
GetSlvAddr(&SlvAddr,DataBfr);
BaudNum=7;
SetBaud(BaudNum);
DataBfr[0]=0;
DataBfr[1]=0;
FindSlv(1,16,DataBfr,DataBfr+1);
}
/* 设备控制类*/
if(Test_Code==1)
{
GetDvcInfo(DataBfr);
PCDClose();
PCDConfig();
DataBfr[0]=0xff;
DataBfr[1]=0xff;
DataBfr[2]=0xff;
DataBfr[3]=0xff;
DataBfr[4]=0xff;
DataBfr[5]=0xff;
PCDLoadKey(KEYA,0,DataBfr);
PCDWriteReg(0x11,0x5b);
PCDReadReg(0x12,DataBfr);
DvcReadIO(DataBfr);
DvcClearIO(0x03,50);
DVCSetIO(0x0f,0);
DVCSurgeIO(0x03,0x00,0x03,50,50,25,15,3);
DVCSetAutoDctct(ISO14443A,REQALL,0x03,0,0);
}
/* TypeA 命令*/
if(Test_Code==2)
{
if(PiccRequest(REQSTD,DataBfr)!=OK); continue;
if(PiccAnticoll(SELCODE1,0,Card_Snr)!=OK) continue;
if(PiccSelect(SELCODE1,Card_Snr,DataBfr)!=OK); continue;
if(PiccAuthE2(KEYA,Card_Snr,0,4)!=OK); continue;
if(PiccRead(4,DataBfr)!=OK);continue;
DataBfr[0]=0x10; DataBfr[4]=0xef; DataBfr[8]=0x10;
DataBfr[1]=0x0; DataBfr[5]=0xff; DataBfr[9]=0x0;
DataBfr[2]=0x0; DataBfr[6]=0xff; DataBfr[10]=0x0;
DataBfr[3]=0x0; DataBfr[7]=0xff; DataBfr[11]=0x0;
DataBfr[12]=0x04;DataBfr[13]=0xfb;DataBfr[14]=0x04;DataBfr[15]=0xfb;
if(PiccWrite(4,DataBfr)!=OK) continue;
DataBfr[0]=0x0;
if(PiccRead(4,DataBfr)!=OK) continue;
DataBfr[0]=0x01;
DataBfr[1]=0x0;
DataBfr[2]=0x0;
DataBfr[3]=0x0;
if(PiccValue(DECREMENT,4,DataBfr,5)!=OK) continue;
if(PiccValue(INCREMENT,4,DataBfr,6)!=OK) continue;
if(PiccRead(5,DataBfr)!=OK) continue;
if(PiccRead(6,DataBfr)!=OK) continue;
PiccHalt();
DvcSurgeIO(0x03;0x00;0x03;50,50,25,15,3);
}
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -