📄 keyboard.lst
字号:
C51 COMPILER V7.00 KEYBOARD 09/14/2006 16:35:50 PAGE 1
C51 COMPILER V7.00, COMPILATION OF MODULE KEYBOARD
OBJECT MODULE PLACED IN KEYBOARD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE KEYBOARD.C OPTIMIZE(9,SIZE) BROWSE ORDER DEBUG OBJECTEXTEND
stmt level source
1 //////////////////////////////////////////////////////////
2 #include <REG51STC.H>
3 #include <ABSACC.H>
4 #include "CMD16887.H"
5 #include <INTRINS.H>
6 #include "externxy.h"
7 /***************************************************************************
8 * 功能:电磁阀及蜂鸣器输出
9 ***************************************************************************/
10 void dcespk_out(void)
11 {
12 1 AUXR |=0x02;
13 1 bbyte=alarm;
14 1 bbyte|=0x1f;
15 1
16 1 XBYTE[DXD1ADD]=bbyte; // 气缸1及蜂鸣器1输出
17 1 bbyte=alarm;
18 1 bbyte<<=3;
19 1 bbyte|=0x1f;
20 1 XBYTE[DXD2ADD]=bbyte; // 气缸2及蜂鸣器2输出
21 1 AUXR &=0xfd;
22 1 }
23
24 /**************************************************************************
25 * 功能:读按键A、B
26 ***************************************************************************/
27 void read_key(void)
28 {
29 1 uchar data keymem[5]; //扫描得到的銉值
30 1 uchar data i;
31 1 bit bm;
32 1 uchar keynum_a,keynum_b;
33 1 bbyte=alarm;
34 1 bbyte|=0x1f;
35 1 bbyte &=0xfe;
36 1 AUXR |=0x02;
37 1 _nop_();
38 1 XBYTE[DXD1ADD]=bbyte; // 阀门1及蜂鸣器1输出
39 1
40 1 bbyte=alarm;
41 1 bbyte<<=3;
42 1 bbyte|=0x1f;
43 1 bbyte &=0xfe;
44 1 _nop_();
45 1 XBYTE[DXD2ADD]=bbyte; // 阀门2及蜂鸣器2输出
46 1 _nop_();
47 1 keymem[0]=XBYTE[KEY_ADD]; //读键值
48 1 /***********************/
49 1 bbyte=alarm;
50 1 bbyte|=0x1f;
51 1 bbyte &=0xfd;
52 1 _nop_();
53 1 XBYTE[DXD1ADD]=bbyte; // 阀门1及蜂鸣器1输出
54 1
55 1 bbyte=alarm;
C51 COMPILER V7.00 KEYBOARD 09/14/2006 16:35:50 PAGE 2
56 1 bbyte<<=3;
57 1 bbyte|=0x1f;
58 1 bbyte &=0xfd;
59 1 _nop_();
60 1 XBYTE[DXD2ADD]=bbyte; // 阀门2及蜂鸣器2输出
61 1 _nop_();
62 1 keymem[1]=XBYTE[KEY_ADD]; //读键值
63 1 /***********************/
64 1 bbyte=alarm;
65 1 bbyte|=0x1f;
66 1 bbyte &=0xfb;
67 1 _nop_();
68 1 XBYTE[DXD1ADD]=bbyte; // 阀门1及蜂鸣器1输出
69 1
70 1 bbyte=alarm;
71 1 bbyte<<=3;
72 1 bbyte|=0x1f;
73 1 bbyte &=0xfb;
74 1 _nop_();
75 1 XBYTE[DXD2ADD]=bbyte; // 阀门2及蜂鸣器2输出
76 1 _nop_();
77 1 keymem[2]=XBYTE[KEY_ADD]; //读键值
78 1 /***********************/
79 1 bbyte=alarm;
80 1 bbyte|=0x1f;
81 1 bbyte &=0xf7;
82 1 XBYTE[DXD1ADD]=bbyte; // 阀门1及蜂鸣器1输出
83 1
84 1 bbyte=alarm;
85 1 bbyte<<=3;
86 1 bbyte|=0x1f;
87 1 bbyte &=0xf7;
88 1 XBYTE[DXD2ADD]=bbyte; // 阀门2及蜂鸣器2输出
89 1 _nop_();
90 1 keymem[3]=XBYTE[KEY_ADD]; //读键值
91 1 /***********************/
92 1 bbyte=alarm;
93 1 bbyte|=0x1f;
94 1 bbyte &=0xef;
95 1 XBYTE[DXD1ADD]=bbyte; // 阀门1及蜂鸣器1输出
96 1
97 1 bbyte=alarm;
98 1 bbyte<<=3;
99 1 bbyte|=0x1f;
100 1 bbyte &=0xef;
101 1 XBYTE[DXD2ADD]=bbyte; // 阀门2及蜂鸣器2输出
102 1 _nop_();
103 1 keymem[4]=XBYTE[KEY_ADD]; //读键值
104 1 AUXR &=0xfd;
105 1 //KEYA銉值转换
106 1
107 1 bm=1;
108 1 keynum_a=0x00;
109 1 for (i=0;i<5;i++)
110 1 {
111 2 bbyte=keymem[i];
112 2 bbyte=~bbyte;
113 2 bbyte&=0x0f;
114 2 if(bbyte!=0)
115 2 {
116 3 switch (bbyte)
117 3 {
C51 COMPILER V7.00 KEYBOARD 09/14/2006 16:35:50 PAGE 3
118 4 case 1:
119 4 if(bm) {keynum_a=i+1;}
120 4 else {keynum_a=0x00;} //有多个键
121 4 break;
122 4 case 2:
123 4 if(bm) {keynum_a=i+6;}
124 4 else {keynum_a=0x00;} //有多个键
125 4 break;
126 4 case 4:
127 4 if(bm) {keynum_a=i+11;}
128 4 else {keynum_a=0x00;} //有多个键
129 4 break;
130 4 case 8:
131 4 if(bm) {keynum_a=i+16;}
132 4 else {keynum_a=0x00;} //有多个键
133 4 break;
134 4 default: {bm=0;keynum_a=0x00;} //有多个键
135 4 break;
136 4 }
137 3
138 3 }
139 2 }
140 1 if (keynum_a!=0)
141 1 { keyinput_a++;
142 2 if (keyinput_a>5)
143 2 { if(!keyok_a)
144 3 { if(k1spk_time==0)k1spk_time=20; //=20产生1短音
145 4 keyok_a=1;
146 4 }
147 3 keysolve_a=keynum_a; //待处理的键值
148 3 keyinput_a=1;
149 3 }
150 2 }
151 1 else keyinput_a=0;
152 1 keynumold_a=keynum_a;
153 1
154 1 // KEYB銉值转换
155 1
156 1 bm=1;
157 1 keynum_b=0x00;
158 1 for (i=0;i<5;i++)
159 1 {
160 2 bbyte=keymem[i];
161 2 bbyte=~bbyte;
162 2 bbyte>>=4;
163 2 bbyte&=0x0f;
164 2 if(bbyte!=0)
165 2 {
166 3 switch (bbyte)
167 3 {
168 4 case 1:
169 4 if(bm) {keynum_b=i+1;}
170 4 else {keynum_b=0x00;} //有多个键
171 4 break;
172 4 case 2:
173 4 if(bm) {keynum_b=i+6;}
174 4 else {keynum_b=0x00;} //有多个键
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -