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

📄 main.c

📁 ARM7 实验程序
💻 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 + -