排队叫号系统源程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include "config.h"

#include "include.h"

int main (void)

{

V AR_Init(); //变量初始化

IO_Init(); //引脚初始化

TI_CC_SPISetup(); //SPI初始化

TI_CC_PowerupResetCCxxxx(); // Reset CCxxxx

writeRFSettings(); // 写入无线模块配置寄存器

TI_CC_SPIWriteBurstReg(TI_CCxxx0_PA TABLE, paTable, paTableLen);//写入能量控制寄存器

UART0_Init(UART_BPS, set); // 串口初始化

TC0_Init(); // 定时器0初始化

VIC_Init(); // 中断初始化

TI_CC_SPIStrobe(TI_CCxxx0_SFSTXON); //开启和校准频率合成器

TI_CC_SPIStrobe(TI_CCxxx0_SRX); // 初始化模块为接收模式.

// 数据包接收结束后,GDO0下降沿触发中断#ifdef WATCHDOG

W ATCHDOG_Init(); //看门狗初始化

#endif

UART0_SendBufEx("-begin-",7);

while (1)

{

#ifdef WIRLTEST

if(TimerSend_ID==1)

{

TimerSend_ID=0;

/* IO1CLR=IO1CLR|LED1;

DelayNS(20);

IO1SET=IO1SET|LED1;

DelayNS(20);

IO1CLR=IO1CLR|LED1;

DelayNS(20);

IO1SET=IO1SET|LED1;

RcvBuf[0]=0x05; */ //从机地址

RcvBuf[0]=0x05;

for(i=1;i<16;i++)

{

RFSendPacket((char*)RcvBuf,17);

if(DeskDriver[i].allow10s==1)

{

DeskDriver[i].allow10s=0; //开始限定时间,在限定时间内不接受按键

DeskDriver[i].keyScaned=1; //接受按键,并置按下标志

DeskDriver[i].timeCnt=0; //计数归零

DeskDriver[i].enable=1; //开启允许无线发送

DeskDriver[i].sendCount=0; //初始值0表示发送次数为0,发送一次加1

DeskDriver[i].sendOK=0; //初始值0表示没发送成功

}

}

}

#endif //task1 接收完成,发送数据

if(RCVCOMP_ID==1)

{

IO1CLR=IO1CLR|LED1;

DelayNS(20);

IO1SET=IO1SET|LED1;

DelayNS(20);

IO1CLR=IO1CLR|LED1;

DelayNS(20);

IO1SET=IO1SET|LED1;

RCVCOMP_ID=0;

UART0_SendBuf();

UART0_SendBufEx(RcvBuf,RCV_LEN1+2);

RcvBuf[0]=0x05; //从机地址

RFSendPacket((char*)RcvBuf,17);

}

//task2 按键扫描if(SCAN_ID==1)

{

SCAN_ID=0;

KeyScan();

}

//task3 发送柜台号

if(SendDesk_ID==1)

{

SendDesk_Pro();

SendDesk_ID=0;

}

#ifdef WATCHDOG //看门狗喂狗

IRQDisable(); //关中断

WDFEED = 0xAA; //第一次喂狗启动WDT

WDFEED = 0x55; //喂狗序列

IRQEnable(); //开中断

#endif

}

return 0;

}

void DelayNS (uint32 dly)

{

uint32 i;

for ( ; dly>0; dly--)

for (i=0; i<50000; i++);

}

//短延时子程序

void delay(uint8 t)

{ uint8 i,j;

for(i=0;i

for(j=0;j<10;j++);

}

void VAR_Init(void)

{

uint8 i;

set.datab = 8; //串口数据位

set.stopb = 1; //串口停止位

set.parity = 0; //串口校验位

rcv_new = 0; //串口接收完数据标志

RSMCHR=0; //接收数据暂存变量

RSMCHR=0; //判断接收数据用标志

RSSMS_ID=0; //直接接收数据标志

RCVCOMP_ID=0; //接收完成标志

SCAN_ID=1; //按键扫描定时标志

INPUT1=0; //按键扫描去抖动计数

INPUT1_ID=1; //按键按下放开标志

Desk_NUM=0x50; //柜台号,初始值为无效柜台号

SendDesk_ID=0; //发送柜台号标志

timerCount=0; //定时器计数变量

for(i=0;i

{

DeskDriver[i].allow10s=1; //初始值1为10秒已经过去,可以接受按键柜台号

DeskDriver[i].keyScaned=0; //初始值0表示还没有按键柜台号被接受

DeskDriver[i].sendCount=0; //初始值0表示发送次数为0,发送一次加1

DeskDriver[i].sendOK=0; //初始值0表示没发送成功

DeskDriver[i].timeCnt=0; //初始值0,定时计数为0,每秒加1

DeskDriver[i].enable=1; //初始值1表示允许发送

}

}

void IO_Init(void)

{

PINSEL0 = 0x00000005; //设置I/O连接到UART0 PINSEL0 =PINSEL0 |0x00050000 ; //配置UART1引脚功能

PINSEL0 =PINSEL0 |0x00005500 ; //配置SPI总线引脚0.4sck 0.5miso 0.6mosi0.7SSEL

相关文档
最新文档