📄 main.c
字号:
/* ************************************************************
// Owner:
// Snowdrinker
// Data:
// 2007-06-28
// Project:
// KJ1000
************************************************************ */
#include "config.h"
/* ************************************************************
// 函数名称 :main()
************************************************************ */
int main (void)
{
PINSEL1 = 0x00000001; /* 设置管脚连接,P0.16为EINT0 */
EXTMODE = 0x01; /* 设置EINT0为电平触发。 */
EXTPOLAR = 0x00;
/* 极性寄存器使用默认值,0。 */
irq_init_set(); //设置中断有关初始值
gpio_init(); //设置GPIO
PINSEL1 = 0x00000001; /* 设置管脚连接,P0.16为EINT0 */
EXTMODE = 0x01; /* 设置EINT0为电平触发。 */
EXTPOLAR = 0x00;
/* 极性寄存器使用默认值,0。 */
IRQEnable(); // 使能IRQ中断
/* 打开EINT0中断(使用向量中断) */
VICIntSelect = 0x00000000; /* 设置所有中断分配为IRQ中断 */
VICVectCntl0 = 0x20 | 0x0e; /* 分配外部中断0到向量中断0 */
VICVectAddr0 = (uint32)IRQ_Eint0; /* 设置中断服务程序地址 */
EXTINT = 0x01; /* 清除EINT0中断标志 */
VICIntEnable |= 1 << 0x0e; /* 使能EINT0中断 */
gSPI_Bit_Count = 0;
gSpi_Rcv_Time = 0;
gSpi_Point = 0;
while (1)
{
if ((gSpi_Rcv_Time > 20) && (gSpi_Point>0))
{
gSend_Reader_Cmd_Step = 0;
for (i=0;i<gSpi_Point;i++)
UART1_SendByte(L_H_Bit_Chger(gSpi_Rcvdata[i]));
gSpi_Point = 0;
gSend_Reader_Cmd_Step = 0;
gSPI_Send_Time = 0;
gSPI_Wait_Flag = 1;
}
if (gSPI_Wait_Flag == 1)
{
if (gSPI_Send_Time > 100)
{
gSPI_Wait_Flag = 0;
gSPI_Send_Time = 0;
SPI_Data_Flag = 0;
}
}
else
{
if (gSend_Reader_Cmd_Step == 1)
{
for (i=0;i<sizeof(REQ_READER_CMD);i++)
UART0_SendByte(REQ_READER_CMD[i]);
gSend_Reader_Cmd_Step = 2;
gRcv_Time = 0;gReader_No_Back_Time = 0;
gReader_Point = 0;
}
else if (gSend_Reader_Cmd_Step == 2)
{
if ((gReader_Point>5) && (gRcv_Time>2))
{
if (gReader_Rcvdata[0] == 0xAA)
{
if (gReader_Rcvdata[1] == 0x00)
gSend_Reader_Cmd_Step = 3;
else
{
gSend_Reader_Cmd_Step = 0;
gReader_Point = 0;
}
}
else
{
gSend_Reader_Cmd_Step = 0;
gCard_ID_Len = 0;
gReader_Point = 0;
}
if (gRcv_Time > 2)
gReader_Point = 0;
}
else if (gReader_No_Back_Time > 20)
{
gRcv_Time = 0;gReader_No_Back_Time = 0;
gSend_Reader_Cmd_Step = 0;
gReader_Point = 0;
gCard_ID_Len = 0;
}
}
else if (gSend_Reader_Cmd_Step == 3)
{
gSend_Reader_Cmd_Step = 4;
gRcv_Time = 0;
gReader_No_Back_Time = 0;
gReader_Point = 0;
for (i=0;i<sizeof(GET_ID_CMD);i++)
UART0_SendByte(GET_ID_CMD[i]);
}
else if (gSend_Reader_Cmd_Step == 4)
{
// if ((gReader_Point>5) && (gRcv_Time>2))
if ((gReader_Point>0) && (gRcv_Time>1))
{
if ((gReader_Rcvdata[0]==0xAA) && (gReader_Rcvdata[1]==0x00))
{
//暂存ID号等待对比
Car_ID_Len_Temp = gCard_ID_Len;
for (i=0;i<Car_ID_Len_Temp;i++)
Car_ID_Buf_Temp[i] = gCard_ID_Buf[i];
//解析ID号码
gCard_ID_Len = gReader_Rcvdata[2];
xor_Car_ID = 0;
for (i=0;i<gCard_ID_Len;i++)
{
gCard_ID_Buf[i] = gReader_Rcvdata[3+i];
xor_Car_ID ^= gReader_Rcvdata[3+i];
}
//比对ID号码
ID_Change_Flag = 0;
if (Car_ID_Len_Temp == gCard_ID_Len)
{
for (i=0;i<gCard_ID_Len;i++)
{
if (gCard_ID_Buf[i] != Car_ID_Buf_Temp[i])
{
ID_Change_Flag = 1;
break;
}
}
}
else
ID_Change_Flag = 1;
if (ID_Change_Flag == 1)
{
// UART发送数据打包
gSend_Data[0] = 0x3C;
gSend_Data[1] = 0x73;
gSend_Data[2] = 0x01;
gSend_Data[3] = 0x05;
for (i=0;i<gCard_ID_Len;i++)
gSend_Data[i+4] = gCard_ID_Buf[i];
gSend_Data[gCard_ID_Len+4] = xor_Car_ID;
gSend_Data[gCard_ID_Len+5] = 0;
for (i=0;i<(gCard_ID_Len+5);i++)
gSend_Data[gCard_ID_Len+5] ^= gSend_Data[i];
// 发送数据
for (i=0;i<(gCard_ID_Len+6);i++)
UART1_SendByte(gSend_Data[i]);
for (i=0;i<sizeof(BEEPER_SPK);i++)
UART0_SendByte(BEEPER_SPK[i]);
}
gSend_Reader_Cmd_Step = 0;
gReader_Point = 0;
}
else
{
gSend_Reader_Cmd_Step = 0;
gReader_Point = 0;
gCard_ID_Len = 0;
}
if (gRcv_Time > 2)
gReader_Point = 0;
}
else if (gReader_No_Back_Time > 20)
{
gRcv_Time = 0;gReader_No_Back_Time = 0;
gSend_Reader_Cmd_Step = 0;
gReader_Point = 0;
}
}
}
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -