CH452進中斷后讀取鍵值為0,如何解決?我用的是dsPIC30F3013.
讀取按鍵的時序函數(shù)
unsigned char ch452_read( void ) { unsigned char i; unsigned char keycode,command; //定義命令字,和數(shù)據(jù)存儲器 EX1=0; //關(guān)中斷 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; //產(chǎn)生時鐘上升沿鎖通知CH452輸入位數(shù)據(jù) DELAY; } ch452_load=1; //產(chǎn)生加載上升沿通知CH452處理命令數(shù)據(jù) DELAY;
keycode=0; //清除keycode for(i=0;i<7;i++) { keycode<<=1; //數(shù)據(jù)移入keycode,高位在前,低位在后 keycode|=ch452_dout; //從高到低讀入451的數(shù)據(jù) ch452_dclk=0; //產(chǎn)生時鐘下升沿通知CH452輸出下一位 DELAY;
ch452_dclk=1; DELAY; } IE1=0; //清中斷標志 EX1=1;//開中斷 return(keycode); //反回鍵值 }