本帖最后由 daiqh 于 2011-11-9 23:22 编辑
我想把读写器功能设计如下:
读写器是一个扣费系统,当事件解发扣费请求后,通过查询M500PiccCommonRequest(0x52,0x02)子程序监测卡片是否进入天线范围,而当有卡片进入天线范围且正确扣费后,马上关闭查询,使其卡若不小心再次进入天线范围时而不至于多次扣费而误扣。
现在的设计思路如下:
设置一标志位,初始值置1。以标志位为循环条件,判断是否需要进入查询寻卡子程序。当判断有卡进入后,标志位清0,跳出循环。主程序如下:
void main(void)
{
static bit find_flag=1;//加一个寻卡标志位
EA=0; //禁止中断
PortInit();
init();
init_value =500; //初始化值
InitCard(); //初始化卡
SPEAKER =0;
EA=1; //打开中断
while(find_flag)//如果寻卡成功则跳出循环
{
while(M500PiccCommonRequest(0x52,0x02));//寻卡,直到有卡再跳出
{
find_flag=0;//位变量,成功寻卡标志
DecCard(10); //作减,减值为10
Delaylong(50);
M500PiccHalt(); //终止卡操作
}
}
}
其余子程序均参考飞利浦给的源码示例编写。
调试发现放卡到天线板上会出现连续读写卡现象,并不是只读写一次就跳出。想请教一下,这样的问题是出于哪里?如何解决呢?谢谢 |