📄 key.lst
字号:
C51 COMPILER V8.02 KEY 05/04/2008 21:35:46 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE KEY
OBJECT MODULE PLACED IN KEY.OBJ
COMPILER INVOKED BY: e:\Keil\C51\BIN\C51.EXE KEY.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<head.h>
2 #include "key.h"
3 BOOL keydd_Flag;
4 Uchar key_old;
5
6 /*******************************************************
7 * 按键驱动程序
8 **********************************************************/
9 /*******************************************************
10 * 函数原型:void key_init(void)
11 * 用途:按键复位
12 **********************************************************/
13 void key_init(void)
14 {
15 1 TMOD&=0xf0;
16 1 TMOD|=0X01;
17 1 TL0=(0x10000-(SYSCLK/1200))&0x00ff;
18 1 TH0=(0x10000-(SYSCLK/1200))>>8;
19 1 TR0=1;
20 1 ET0=1;
21 1 EA=1;
22 1 key_old=0;
23 1 }
24
25 /*******************************************************
26 * 函数原型:T0_int()(void)
27 * 用途:t0中断,获得按键值
28 * 出口:无
29 **********************************************************/
30 void T0_int(void) interrupt 1
31 {
32 1 Uchar key_temp=0;
33 1 Uchar key_check=0;
34 1 Uchar i=0;
35 1 TL0=(0x10000-(SYSCLK/1200))&0x00ff;
36 1 TH0=(0x10000-(SYSCLK/1200))>>8;
37 1
38 1 KC=0x0f;
39 1 key_temp=(~KC)&0x0f;
40 1 if(key_temp!=key_old)
41 1 {
42 2 if(keydd_Flag)
43 2 {
44 3 key_check=1;
45 3 while(key_check!=0x10)
46 3 {
47 4 if(key_temp&key_check)
48 4 {
49 5 if(!(key_old&key_check))
50 5 {
51 6 if((key_temp&CTRL)&&(key_check!=CTRL))i|=CTRLF;
52 6 if((key_temp&SHIFT)&&(key_check!=SHIFT))i|=SHIFTF;
53 6 PostMessage(M_KEYDOWN,key_check|i);
54 6 }
55 5 }
C51 COMPILER V8.02 KEY 05/04/2008 21:35:46 PAGE 2
56 4 else if(key_old&key_check)
57 4 {
58 5 if(key_temp&CTRL)i|=CTRLF;
59 5 if(key_temp&SHIFT)i|=SHIFTF;
60 5 PostMessage(M_KEYUP,key_check|i);
61 5 }
62 4 key_check<<=1;
63 4 }
64 3 key_old=key_temp;
65 3 keydd_Flag=FALSE;
66 3 }
67 2 else
68 2 {
69 3 keydd_Flag=TRUE;
70 3 }
71 2 }
72 1 else
73 1 {
74 2 keydd_Flag=FALSE;
75 2 }
76 1 }
77
78
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 220 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 3
IDATA SIZE = ---- ----
BIT SIZE = 1 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -