CH452进中断后读取键值为0,如何解决?我用的是dsPIC30F3013.
读取按键的时序函数
unsigned char ch452_read( void ) { unsigned char i; unsigned char keycode,command; //定义命令字,和数据存储器 EX1=0; //关中断 command=0x07; //输入读451命令字
ch452_load=0; DELAY;//延时
for(i=0;i<4;i++) { ch452_din=command&1; //送入最低位 ch452_dclk=0; DELAY; command>>=1; //往右移一位
ch452_dclk=1; //产生时钟上升沿锁通知CH452输入位数据 DELAY; } ch452_load=1; //产生加载上升沿通知CH452处理命令数据 DELAY;
keycode=0; //清除keycode for(i=0;i<7;i++) { keycode<<=1; //数据移入keycode,高位在前,低位在后 keycode|=ch452_dout; //从高到低读入451的数据 ch452_dclk=0; //产生时钟下升沿通知CH452输出下一位 DELAY;
ch452_dclk=1; DELAY; } IE1=0; //清中断标志 EX1=1;//开中断 return(keycode); //反回键值 }