#include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit duan=P2^6; sbit wei=P2^7; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void delay(uint z) { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void display(uchar num) { P0=table[num]; duan=1; duan=0; } void matrixkeyscan() { uchar temp,key; P3=0xfe; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xee; key=0; break; case 0xde; key=1; break; case 0xbe; key=2; break; case 0x7e; key=3; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } display(key); } } P3=0xfd; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xed; key=4; break; case 0xdd; key=5; break; case 0xbd; key=6; break; case 0x7d; key=7; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } display(key); } } P3=0xfb; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xeb; key=8; break; case 0xdb; key=9; break; case 0xbb; key=10; break; case 0x7b; key=11; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } display(key); } } P3=0xf7; temp=P3; temp=temp&0xf0; if(temp!=0xf0) { delay(10); temp=P3; temp=temp&0xf0; if(temp!=0xf0) { temp=P3; switch(temp) { case 0xe7; key=12; break; case 0xd7; key=13; break; case 0xb7; key=14; break; case 0x77; key=15; break; } while(temp!=0xf0) { temp=P3; temp=temp&0xf0; } display(key); } } } void main() { P0=0; duan=1; duan=0; P0=0xc0; wei=1; wei=0; while(1) { matrixkeyscan(); } }
已找到问题点,CASE语句后误用了分号造成。
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |