專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
十年專注單片機(jī)方案開發(fā)的方案公司英銳恩,分享PIC16F87X單片機(jī)4X4矩陣鍵盤。英銳恩現(xiàn)提供服務(wù)產(chǎn)品涉及主控芯片:8位單片機(jī)、16位單片機(jī)、32位單片機(jī)及各類運(yùn)算放大器等。
/************************************************* * 鍵盤掃描子程序 * *************************************************/ unsigned char keyscan() { unsigned char temp,key_value; static bit b_keyoncol; //某一列上有按鍵時(shí)置1
PORTB=0xFF; b_keyoncol=0; key_value=0; //掃描RB0 RB0=0; #asm nop nop nop nop #endasm temp=key_col[PORTB>>4]; DELAY(); if(temp==key_col[PORTB>>4]){ if(temp==0xFF) return 0xFF; else if(temp!=0){ b_keyoncol=1; key_value=temp; } } //掃描RB1 RB0=1; RB1=0; temp=key_col[PORTB>>4]; DELAY(); if(temp==key_col[PORTB>>4]){ if(temp==0xFF) return 0xFF; else if (temp!=0){ if(b_keyoncol==1) return 0xFF; else
{key_value=temp+4; b_keyoncol=1;} } } //掃描RB2 RB0=1; RB1=1; RB2=0; temp=key_col[PORTB>>4]; DELAY(); if(temp==key_col[PORTB>>4]){ if (temp==0xFF) return 0xff; else if (temp!=0){ if(b_keyoncol==1) return 0xFF; else {key_value=temp+8; b_keyoncol=1;} } } //掃描RB3 RB0=1; RB1=1; RB2=1; RB3=0; temp=key_col[PORTB>>4]; DELAY(); if(temp==key_col[PORTB>>4]){ if (temp==0xFF) return 0xff; else if (temp!=0){ if(b_keyoncol==1) return 0xFF; else {key_value=temp+12; b_keyoncol=1;} } }
//掃描結(jié)束 RB3=1;
return key_value; }
(文源網(wǎng)絡(luò),侵刪)