| 單片機(jī)小制作時寫的一些小程序,在最小系統(tǒng)上運(yùn)行成功,采用的是中斷鍵盤掃描. //****鍵值表如下: // 1 2 3 4 // 5 6 7 8 // 9 + - * // / = CLR //*************// #include<reg51.h> #define unint unsigned int #define unchar unsigned char sbit P3_4=P3^4; sbit P3_5=P3^5; unchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99, 0x92,0x82,0xf8,0x80,0x90,0x88,0x83, 0xc6,0xa1,0x86,0x8e,0x00 }; #define ADD 10 #define SUB 11 #define MUL 12 #define DIV 13 void delay(unint c){ unint i,j; for(j=0;j<c;j++){ for(i=0;i<200;i++) {;} } } //**************鍵盤掃描程序************** unint keyscan(void) { unint n; delay(1); if((P1&0xF0)!=0xF0) { P1=0xFE; if((P1&0xFE)!=0xFE) { if((P1&0xFE)==0xEE) n=1; else if((P1&0xFE)==0xDE) n=2; else if((P1&0xFE)==0xBE) n=3; else n=4; } P1=0xFD; if((P1&0xFD)!=0xFD) { if((P1&0xFD)==0xED) n=5; else if((P1&0xFD)==0xDD) n=6; else if((P1&0xFD)==0xBD) n=7; else n=8; } P1=0xFB; if((P1&0xFB)!=0xFB) { if((P1&0xFB)==0xEB) n=9; else if((P1&0xFB)==0xDB) n=10; else if((P1&0xFB)==0xBB) n=11; else n=12; } P1=0xF7; if((P1&0xF7)!=0xF7) { if((P1&0xF7)==0xE7) n=13; else if((P1&0xF7)==0xD7) n=14; else if((P1&0xF7)==0xB7)
|