📄 keys.lst
字号:
C51 COMPILER V7.50 KEYS 07/18/2007 17:54:08 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE KEYS
OBJECT MODULE PLACED IN .\KEYS.obj
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ..\..\89S52+1602电子钟2版\KEYS.C BROWSE DEBUG OBJECTEXTEND PRINT(.\KEYS.lst
-) OBJECT(.\KEYS.obj)
line level source
1
2 #include "main.h"
*** WARNING C318 IN LINE 5 OF ..\..\89S52+1602电子钟2版\MAIN.H: can't open file 'at89x51.h'
3 #include "KEYS.h"
4 KEYBoard Key;
5
6 /*********************************************************************************************/
7 void KEYBoardInit(void)
8 {
9 1 Key.Value=0; //Key初始化
10 1 Key.OldValue=0;
11 1 Key.NewValue=0;
12 1 Key.PressedTime=0;
13 1 }
14
15 //////////////////////////////////////////////////////////////////////////////////////////////
16
17 /*********************************************************************************************/
18 void ScanKey(void) //键盘扫描
19 {
20 1 P3 = 255; //51按键扫描必须先写1,
*** ERROR C202 IN LINE 20 OF ..\..\89S52+1602电子钟2版\KEYS.C: 'P3': undefined identifier
21 1 if(Key.Value)return; //如果上次按键还未处理,则直接返回,不扫描新的按键
22 1
23 1 if(KEY1IN && KEY2IN ) //如果输入全部是高,则按键处于释放状态
*** ERROR C202 IN LINE 23 OF ..\..\89S52+1602电子钟2版\KEYS.C: 'P3': undefined identifier
24 1 {
25 2 if(!(Key.OldValue)) //如果上次无按键按下
26 2 {
27 3 return; //返回
28 3 }
29 2 else //如果上次有按键按下
30 2 {
31 3 if(Key.LongKey==1)
32 3 {
33 4 Key.LongKey=0;
34 4 Key.PressedTime=0;
35 4 }
36 3
37 3 if(Key.PressedTime>70) //按键时间超过一秒,长按键码
38 3 {
39 4 Key.Value=Key.OldValue+0x80; //长按键码等于普通按键码加0x80
40 4 }
41 3
42 3 else if(Key.PressedTime>1)
43 3 {
44 4 Key.Value=Key.OldValue; //按键值
45 4 }
46 3 Key.OldValue=0;
47 3 }
48 2 return;
49 2 }
50 1 else //按键按下
51 1 {
C51 COMPILER V7.50 KEYS 07/18/2007 17:54:08 PAGE 2
52 2 Key.NewValue=0;
53 2 if(!KEY1IN)Key.NewValue=KEY1; //KEY1键按下
*** ERROR C202 IN LINE 53 OF ..\..\89S52+1602电子钟2版\KEYS.C: 'P3': undefined identifier
54 2 if(!KEY2IN)Key.NewValue=KEY2; //KEY2键按下
*** ERROR C202 IN LINE 54 OF ..\..\89S52+1602电子钟2版\KEYS.C: 'P3': undefined identifier
55 2 //if(!KEY3IN)Key.NewValue=KEY3; //KEY3键按下
56 2 //if(!KEY4IN)Key.NewValue=KEY4; //KEY4键按下
57 2
58 2 if(Key.NewValue==Key.OldValue) //如果连续两次扫描到一样的键,即按键按下长于10ms
59 2 {
60 3 if(Key.PressedTime>180) //如果按键按下超过2s
61 3 {
62 4 Key.LongKey=1;
63 4 Key.PressedTime-=6; //则自动按键。相当于每隔50ms按一次
64 4 Key.Value=Key.NewValue;
65 4 return;
66 4 }
67 3 else
68 3 {
69 4 Key.PressedTime++; //按键按下计时加一
70 4 }
71 3 }
72 2 else
73 2 {
74 3 Key.PressedTime=0; //如果本次按下跟上次按下不一样,则按键按下时间清零
75 3 }
76 2 Key.OldValue=Key.NewValue; //保存本次按键值
77 2 }
78 1 }
79 ///////////////////////////////////////////////////////////////////////////////////////////////
80
C51 COMPILATION COMPLETE. 1 WARNING(S), 4 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -