|
布置的任务一部分是按下矩阵键盘S6让led亮一个灯,我自己写的程序按下S6并没有任何反应,请帮我看一下怎么回事
单片机源程序如下:
- #include <reg52.h>
- #include <intrins.h>
- sbit LED1 = P1^0;
- unsigned char key_number=1;
- void delay(unsigned int x)
- {
- unsigned char i, j;
- while(x>0){
- _nop_();
- i = 2;
- j = 199;
- do
- {
- while (--j);
- } while (--i);
- x--;
- }
- }
- unsigned char KeyScan()
- {
- P3=0xf0;
- if(P3!=0xf0)
- {
- delay(10);
- if(P3!=0xf0)
- {
- switch(P3)
- {
- case 0xe0:key_number=0;
- case 0xd0:key_number=1;
- case 0xb0:key_number=2;
- case 0x70:key_number=3;
- }
- P3=0x0f;
- switch(P3)
- {
- case 0x0e:key_number=key_number;
- case 0x0d:key_number=key_number+4;
- case 0x0b:key_number=key_number+8;
- case 0x07:key_number=key_number+12;
- }
- }
- }
- return key_number;
- }
- void main()
- {
- key_number=KeyScan();
- if(key_number==0)
- {
- LED1 = 0;
- }
- }
复制代码 |
|