使用SPCE061A的指纹识别系统设计
[P_IOA_Attrib]=R1; //设置3个属性向量
[P_IOA_Dir]=R1;
[P_IOA_Data]=R1; //中断设置(允许IRQ3_KEY触键中断)
INT OFF; //关中断
R1=0x0080; //设置中断标置
[P_Int_Ctrl]=R1;
INT IRQ; //开中断
//读P_IOA_Latch单元,以锁存IOA[0~7]的数据,用于触键唤醒
R1=[P_IOA_Latch]; //锁存A口低8位的数据
//将P_SystemClock(写)7013H单元的第0~2位置为“111”,使系统进入睡眠状态,
R1=0x0007; //系统进入睡眠状态
[P_SystemClock]=R1;
//IRQ3子程序(端口A的触键唤醒源被触发后,调用IRQ3 中断服务子程序):
.TEXT
.PUBLIC _IRQ3
_IRQ3:
R1 = 0x0100; //比较是否为L_IRQ3_Ext1中断
TEST R1,[P_INT_Ctrl];
JNZ L_IRQ3_Ext1; //是,则进入;否,进行下面的判断
R1 = 0x0200;
TEST R1,[P_INT_Ctrl]; //是否为L_IRQ3_Ext2中断
JNZ L_IRQ3_Ext2; //是,进入该中断;否,执行下面的程序
L_IRQ3_KeyChange_WakeUp: //不是上面的两种中断则一定为键唤醒中断
R1 = 0x0080; //清除IRQ3触键中断请求
[P_INT_Clear]= R1;
:
(处理系统被唤醒后的任务)
:
RETI
L_IRQ3_Ext2:
[P_INT_Clear] = R1; //清除IRQ3_EXT2中断请求
RETI
L_IRQ3_Ext1:
[P_INT_Clear] = R1; //清除IRQ3_EXT1中断请求
RETI
相对于其它指纹识别系统控制核心大多数是DSP运算能力强,但控制能力差的缺点,本系统最大的创新点是控制核心采用了既具有单片机的控制功能,又具有强大的DSP运算能力于一体的16位SOC芯片SPCE061A,使本系统在进行简单的扩展后即可以在指纹锁、无钥汽车、PDA设备、大型门禁系统等各种需要指纹控制的领域进行广泛的应用。
评论