按键不显示。。。

我自己做了个小的4个按键的键盘,定义在P1口的0-3。可是,按键了,确不显示结果 按键的程序

开始的定义 sbit key1=P1^0;//¶¨Òå°´¼üλÖà sbit key2=P1^1; sbit key3=P1^2; sbit key4=P1^3;

中间的按键返回值 unsigned char scankey() { if(!key1) //°´ÏÂÏàÓ¦µÄ°´¼ü£¬ÏÔʾÏàÓ¦µÄÂëÖµ return(1);//1 else if(!key2) return(2);//2 else if(!key3) return(3);//3 else if(!key4) return(4);//4 else return (0); } 后面的通过USB长传到pc while ( 1 ) /* ÒÔÏÂÖ¸Áʼ¹¤×÷Ñ­»·,µÈ´ýPC»úÃüÁî½øÐвÙ×÷ */ { key=scankey(); Delay50ms(); Delay50ms(); Delay50ms(); Delay50ms(); Delay50ms(); Delay50ms(); Delay50ms(); Delay50ms();

CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); /* ÏòUSB¶Ëµã2µÄ·¢ËÍ»º³åÇøдÈëÊý¾Ý¿é */ CH375_WR_DAT_PORT( 1);//length ); /* Ê×ÏÈдÈëºóÐøÊý¾Ý³¤¶È,»Ø´«¸Õ½ÓÊÕµ½µÄÊý¾Ý³¤¶È */ CH375_WR_DAT_PORT( key); }

显示值一直都是0.也就是没有按键值正确返回 这个是什么原因啊

key=scankey(); key这个值是多少?先要确定一下是哪个地方值不对,如果key本身就错了,那需要你根据自己的硬件检查一下scankey(); 你可以这样实验一下 CH375_WR_CMD_PORT( CMD_WR_USB_DATA7 ); /* ÏòUSB¶Ëµã2µÄ·¢ËÍ»º³åÇøдÈëÊý¾Ý¿é */ CH375_WR_DAT_PORT( 1);//length ); /* Ê×ÏÈдÈëºóÐøÊý¾Ý³¤¶È,»Ø´«¸Õ½ÓÊÕµ½µÄÊý¾Ý³¤¶È */ CH375_WR_DAT_PORT( 0x55); 看看是不是显示的0X55,这样就可以验证出来了


你说的这个,我已经尝试过了 ,我还尝试了,i=i+2,这样发送的方法,可以正确的发送,在pc端能正确显示接收的数据

我对总线方式不太懂,在总线方式下,用sbit这样定义i/o口,会不会出错的?


那你好好检查你的scankey()函数吧。


只有登录才能回复,可以选择微信账号登录