×
嵌入式 > 技术百科 > 详情

CCS PICC实现的矩阵键盘扫描

发布时间:2020-05-28 发布时间:
|

网上关于CCS PICC矩阵键盘扫描的参考程序较少,本人近来做了此类实验,这里将把程序公开至此以便和学习CCS PICC的网友交流!

例:

unsigned char key()
{
#use fast_io(C)
unsigned char k1,k2,k3;
set_tris_c(0x00);
output_c(0x0f);
set_tris_c(0x0f);
k1=input_c()&0x0f;
set_tris_c(0x00);
output_c(0xf0);
set_tris_c(0xf0);
k2=input_c()&0xf0;
k3=k1|k2;
return(k3);
}//此程序只是最基本的矩阵扫描,忽略了抖键、干扰和多键同时按下的情况!

/*需要注意的是:CCS PICC中库函数output_x()、input_x()都会整个的将TRIS端口方向控制寄存器改为输出或输入,而矩阵键盘扫描时要求:端口输出0x0f,然后高四位设置为输出低四位设置为输入,结果和0x0f相与屏蔽无效位,检测是否有0出现,如果有,即有按键按下,转到扫描处理,如果没有,低四位应该为0x0f。接着端口输出0xf0,然后高四位设置为输入低四位设置为输出,结果和0xf0相与屏蔽无效位,检测是否有0出现,如果有,即有按键按下,转到扫描处理,如果没有,高四位应该为0xf0。PIC单片机与51系列单片机不同,如果使用过程中不注意设置端口方向,将得不到正确的值。CCS PICC中库函数output_x()、input_x()能自动将整个TRIS端口方向控制寄存器改为输出或输入,但在矩阵扫描中,需要手动设置方向控制寄存器,本例中就使用#use fast_io(C)、set_tris_x()这些语句来设置方向控制寄存器。本人在这个例子中走了不少弯路。*/
 

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
示波器使用时要注意的19个问题