?? key.lst
字號(hào):
C51 COMPILER V7.10 KEY 07/02/2005 14:18:18 PAGE 1
C51 COMPILER V7.10, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN .\key.obj
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE ..\..\..\..\電子文檔\MON51\daxiadisk\光盤(pán)\學(xué)習(xí)板\C51\key.c BR
-OWSE DEBUG OBJECTEXTEND PRINT(.\key.lst) OBJECT(.\key.obj)
line level source
1 //**********************************************************************************
2 //**********************************************************************************
3 //鍵盤(pán)碼讀取函數(shù)及蜂鳴器驅(qū)動(dòng)
4 #include <reg52.h>
5 #include "APR6008_DRIVER.H"
6 #define keypin P2
7 //入口:檢測(cè)按鍵延時(shí)的長(zhǎng)度,一般取1000
8 //返回:鍵值,返回0表示無(wú)鍵按下
9 unsigned char getkey(unsigned int t){
10 1 unsigned char c,c1,i;
11 1 static unsigned char oldkey;
12 1 bit iskey=0;
13 1 unsigned char code dout[4]={0x7f,0xbf,0xdf,0xef};
14 1 unsigned char din[8]={0x03,0x02,0x00,0x01,0x00,0x00,0x00,0x00};
15 1 unsigned char key[4][4]={{'*','0','#','E'},{'7','8','9','C'},{'4','5','6','D'},{'1','2','3','U'}};
16 1
17 1 while(1)
18 1 {
19 2 for(i=0;i<4;i++){
20 3 keypin = dout[i];
21 3 c = keypin &0x0f;
22 3 if (c!=0x0f){
23 4 c1=(key[din[0X0E-c]][i]); //轉(zhuǎn)換出健碼
24 4 iskey=1;
25 4 }
26 3 }
27 2 if(t==0){
28 3 if (iskey)
29 3 {
30 4 P2=0xff; //恢復(fù)現(xiàn)場(chǎng)
31 4 if(oldkey==c1) //如果和上次的按鍵一樣,就當(dāng)作沒(méi)有按鍵.這是為了避免連鍵
32 4 {
33 5 return(0);
34 5 }
35 4 oldkey=c1; //保存上次的按鍵
36 4 beep(1); //按鍵音
37 4 return(c1);
38 4 }
39 3 else
40 3 {
41 4 oldkey=0; //返回0表示無(wú)按鍵
42 4 return(0);
43 4 }
44 3 }
45 2 t--;
46 2 }
47 1 }
48 //4----------------------|
49 // |
50 //5----------------| |
51 // | |
52 //6----------| | |
53 // | | |
54 //7----| | | |
C51 COMPILER V7.10 KEY 07/02/2005 14:18:18 PAGE 2
55 // |1 |2 |3 |up
56 //0----|-----|-----|-----|---------------
57 // |4 |5 |6 |down
58 //1----|-----|-----|-----|---------------
59 // |7 |8 |9 |change
60 //2----|-----|-----|-----|---------------
61 // |* |0 |# |enter
62 //3----|-----|-----|-----|---------------
63
64 //***************************************
65 //響蜂鳴器(喇叭)
66 sbit BB=P1^7;
67 void beep(unsigned char t)
68 {
69 1 unsigned char i;
70 1 unsigned int j;
71 1 for(j=0;j<t*256;j++)
72 1 {
73 2 for(i=100;i>0;i--);//給i賦的初值決定輸出的頻率
74 2 BB=~BB;
75 2 }
76 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 162 ----
CONSTANT SIZE = 28 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 27
IDATA SIZE = ---- ----
BIT SIZE = ---- 1
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -