单片机原理及应用与C51程序设计(第三版)第8章作(6)

发布时间:2021-06-05

MOVX A,@DPTR CPL A ANL A,#0FH RET OUT1:MOV 50H,#1 OUT:

7

19. 用C语言编写出定时扫描方式下矩阵键盘的处理程序。

F1和F2标志已在主函数前定义。

//************检测有无键按下函数************

uchar checkkey() //检测有无键按下函数,有返回0xff,无返回0 {uchar i;

XBYTE[0x7f00]=0x00; i=XBYTE[0x7f02]; i=i&0x0f;

if (i= =0x0f) return(0); else return(0xff); }

//************键盘扫描函数************

uchar keyscan()//键盘扫描函数,如果有键按下,则返回该键的编码,如果无键按下,则返回0xff {uchar scancode; //定义列扫描码变量 uchar codevalue; //定义返回的编码变量 uchar m; //定义行首编码变量 uchar k; //定义行检测码 uchar i,j;

if (checkkey()= =0) return(0xff); //检测有无键按下,无返回0xff else

{delay(200); //延时

if(checkkey()= =0) return(0xff); //检测有无键按下,无返回0xff else {

scancode=0xfe;m=0x00; //列扫描码,行首码赋初值 for (i=0;i<8;i++) {k=0x01;

XBYTE[0x7f00]=scancode; //送列扫描码 for (j=0;j<4;j++)

{if ((XBYTE[0x7f02]&k)= =0) //检测当前行是否有键按下 {codevalue=m+j; //按下,求编码 while(checkkey()! =0); //等待键位释放 return(codevalue); //返回编码 m=m+8; //计算下一行的行首编码 }

else k=k<<1; //行检测码左移一位 }

scancode=scancode<<1; //列扫描码左移一位,扫描下一列 }

} } }

单片机原理及应用与C51程序设计(第三版)第8章作(6).doc 将本文的Word文档下载到电脑

精彩图片

热门精选

大家正在看

× 游客快捷下载通道(下载后可以自由复制和排版)

限时特价:7 元/份 原价:20元

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219