?? key.lst
字號:
C51 COMPILER V7.06 KEY 03/23/2007 23:58:30 PAGE 1
C51 COMPILER V7.06, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN Key.OBJ
COMPILER INVOKED BY: C:\keil\C51\BIN\C51.EXE Key.c BROWSE DEBUG OBJECTEXTEND
stmt level source
1 /******************************************************************
2 本程序只供學習使用,未經作者許可,不得用于其它任何用途
3 我的郵箱:computer-lov@tom.com
4 歡迎訪問我的blog: http://computer00.21ic.org
5
6 KEY.C file
7
8 作者:Computer-lov
9 建立日期: 2007.03.20
10 修改日期: 2007.03.22
11 版本:V1.1
12 版權所有,盜版必究。
13 Copyright(C) Computer-lov 2007-2017
14 All rights reserved
15 *******************************************************************/
16
17
18 #include "Key.h"
19 #include "my_type.h"
20
21 uint16 idata KeyMapCurrent,KeyMapOld,KeyMapOk,KeyNoChangedTime;
22 uint8 KeyMapCanChange;
23
24 #define KeyIO P1
25
26 /*************************定時器0初始化***************************************/
27 void InitTimer0(void)
28 {
29 1 TMOD&=0xF0;
30 1 TMOD|=0x01;
31 1 TH0=0xDC;
32 1 ET0=1;
33 1 TR0=1;
34 1 }
35 /******************************************************************************/
36
37 /*************************定時器0中斷處理***************************************/
38 void Timer0Isr(void) interrupt 1
39 {
40 1 uint8 temp;
41 1 TH0=0xDC; //定時器0重裝
42 1 KeyIO=0x0F;
43 1 if((KeyIO&0x0F)==0x0F) //如果現在沒有按鍵按下
44 1 {
45 2 KeyMapCurrent=0; //沒有鍵按下
46 2 }
47 1 else
48 1 {
49 2 //開始鍵盤掃描
50 2
51 2 //掃描第一行
52 2 KeyIO=~0x10;
53 2
54 2 //保存四個開關狀態
55 2 temp=KeyIO&0x0F;
C51 COMPILER V7.06 KEY 03/23/2007 23:58:30 PAGE 2
56 2
57 2 //掃描第二行
58 2 KeyIO=~0x20;
59 2
60 2 //保存四個開關狀態
61 2 temp|=KeyIO<<4;
62 2
63 2 //保存按鍵狀態到當前按鍵情況
64 2 KeyMapCurrent=(~temp)&0xFF;
65 2
66 2 //掃描第三行
67 2 KeyIO=~0x40;
68 2
69 2 //保存四個開關狀態
70 2 temp=KeyIO&0x0F;
71 2
72 2 //掃描第四行
73 2 KeyIO=~0x80;
74 2
75 2 //保存四個開關狀態
76 2 temp|=KeyIO<<4;
77 2
78 2 //保存全部16個開關的狀態
79 2 //KeyMap總共有16個bit,當某個開關按下時,
80 2 //對應的bit為1
81 2 KeyMapCurrent|=(((uint16)~temp)<<8);
82 2 }
83 1
84 1 if(KeyMapCurrent!=KeyMapOld) //說明按鍵情況發生了改變
85 1 {
86 2 KeyNoChangedTime=0; //鍵盤按下時間為0
87 2 KeyMapOld=KeyMapCurrent; //保存當前按鍵情況
88 2 return;
89 2 }
90 1 else
91 1 {
92 2 KeyNoChangedTime++; //按下時間累計
93 2 if(KeyNoChangedTime>=1) //如果按下時間足夠
94 2 {
95 3 KeyNoChangedTime=1;
96 3 if(KeyMapCanChange)
97 3 {
98 4 KeyMapOk=KeyMapOld; //保存按鍵
99 4 }
100 3 }
101 2 }
102 1 }
103 /******************************************************************************/
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 198 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = 8 ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -