V1.0
This commit is contained in:
@@ -35,13 +35,13 @@ unsigned char flagStart = 0;
|
||||
|
||||
void Delay_ms(unsigned int n);
|
||||
|
||||
void TIMER0_ISR (void) interrupt 1 //每100us产生中断
|
||||
{
|
||||
TH0 = TH_VAL;
|
||||
TL0 = TL_VAL;
|
||||
//void TIMER0_ISR (void) interrupt 1 //每100us产生中断
|
||||
//{
|
||||
// TH0 = TH_VAL;
|
||||
// TL0 = TL_VAL;
|
||||
|
||||
Send433_Byte();
|
||||
}
|
||||
// Send433_Byte();
|
||||
//}
|
||||
/*********************************************************************************************************************/
|
||||
/*******************************************************************************************************************************************
|
||||
说明:
|
||||
@@ -85,261 +85,19 @@ unsigned long int Read_32bit_UID(void)
|
||||
}
|
||||
code unsigned char rf_data[255]=
|
||||
{
|
||||
0 ,
|
||||
1 ,
|
||||
2 ,
|
||||
3 ,
|
||||
4 ,
|
||||
5 ,
|
||||
6 ,
|
||||
7 ,
|
||||
8 ,
|
||||
9 ,
|
||||
10 ,
|
||||
11 ,
|
||||
12 ,
|
||||
13 ,
|
||||
14 ,
|
||||
15 ,
|
||||
16 ,
|
||||
17 ,
|
||||
18 ,
|
||||
18 ,
|
||||
19 ,
|
||||
20 ,
|
||||
21 ,
|
||||
22 ,
|
||||
23 ,
|
||||
24 ,
|
||||
25 ,
|
||||
26 ,
|
||||
27 ,
|
||||
28 ,
|
||||
29 ,
|
||||
30 ,
|
||||
31 ,
|
||||
32 ,
|
||||
33 ,
|
||||
34 ,
|
||||
35 ,
|
||||
36 ,
|
||||
37 ,
|
||||
37 ,
|
||||
38 ,
|
||||
39 ,
|
||||
40 ,
|
||||
41 ,
|
||||
42 ,
|
||||
43 ,
|
||||
44 ,
|
||||
45 ,
|
||||
46 ,
|
||||
47 ,
|
||||
48 ,
|
||||
49 ,
|
||||
50 ,
|
||||
51 ,
|
||||
52 ,
|
||||
53 ,
|
||||
54 ,
|
||||
55 ,
|
||||
56 ,
|
||||
56 ,
|
||||
57 ,
|
||||
58 ,
|
||||
59 ,
|
||||
60 ,
|
||||
61 ,
|
||||
62 ,
|
||||
63 ,
|
||||
64 ,
|
||||
65 ,
|
||||
66 ,
|
||||
67 ,
|
||||
68 ,
|
||||
69 ,
|
||||
70 ,
|
||||
71 ,
|
||||
72 ,
|
||||
73 ,
|
||||
74 ,
|
||||
74 ,
|
||||
75 ,
|
||||
76 ,
|
||||
77 ,
|
||||
78 ,
|
||||
79 ,
|
||||
80 ,
|
||||
81 ,
|
||||
82 ,
|
||||
83 ,
|
||||
84 ,
|
||||
85 ,
|
||||
86 ,
|
||||
87 ,
|
||||
88 ,
|
||||
89 ,
|
||||
90 ,
|
||||
91 ,
|
||||
92 ,
|
||||
93 ,
|
||||
93 ,
|
||||
94 ,
|
||||
95 ,
|
||||
96 ,
|
||||
97 ,
|
||||
98 ,
|
||||
99 ,
|
||||
100 ,
|
||||
101 ,
|
||||
102 ,
|
||||
103 ,
|
||||
104 ,
|
||||
105 ,
|
||||
106 ,
|
||||
107 ,
|
||||
108 ,
|
||||
109 ,
|
||||
110 ,
|
||||
111 ,
|
||||
112 ,
|
||||
112 ,
|
||||
113 ,
|
||||
114 ,
|
||||
115 ,
|
||||
116 ,
|
||||
117 ,
|
||||
118 ,
|
||||
119 ,
|
||||
120 ,
|
||||
121 ,
|
||||
122 ,
|
||||
123 ,
|
||||
124 ,
|
||||
125 ,
|
||||
126 ,
|
||||
127 ,
|
||||
128 ,
|
||||
129 ,
|
||||
130 ,
|
||||
130 ,
|
||||
131 ,
|
||||
132 ,
|
||||
133 ,
|
||||
134 ,
|
||||
135 ,
|
||||
136 ,
|
||||
137 ,
|
||||
138 ,
|
||||
139 ,
|
||||
140 ,
|
||||
141 ,
|
||||
142 ,
|
||||
143 ,
|
||||
144 ,
|
||||
145 ,
|
||||
146 ,
|
||||
147 ,
|
||||
148 ,
|
||||
149 ,
|
||||
149 ,
|
||||
150 ,
|
||||
151 ,
|
||||
152 ,
|
||||
153 ,
|
||||
154 ,
|
||||
155 ,
|
||||
156 ,
|
||||
157 ,
|
||||
158 ,
|
||||
159 ,
|
||||
160 ,
|
||||
161 ,
|
||||
162 ,
|
||||
163 ,
|
||||
164 ,
|
||||
165 ,
|
||||
166 ,
|
||||
167 ,
|
||||
168 ,
|
||||
168 ,
|
||||
169 ,
|
||||
170 ,
|
||||
171 ,
|
||||
172 ,
|
||||
173 ,
|
||||
174 ,
|
||||
175 ,
|
||||
176 ,
|
||||
177 ,
|
||||
178 ,
|
||||
179 ,
|
||||
180 ,
|
||||
181 ,
|
||||
182 ,
|
||||
183 ,
|
||||
184 ,
|
||||
185 ,
|
||||
186 ,
|
||||
186 ,
|
||||
187 ,
|
||||
188 ,
|
||||
189 ,
|
||||
190 ,
|
||||
191 ,
|
||||
192 ,
|
||||
193 ,
|
||||
194 ,
|
||||
195 ,
|
||||
196 ,
|
||||
197 ,
|
||||
198 ,
|
||||
199 ,
|
||||
200 ,
|
||||
201 ,
|
||||
202 ,
|
||||
203 ,
|
||||
204 ,
|
||||
205 ,
|
||||
205 ,
|
||||
206 ,
|
||||
207 ,
|
||||
208 ,
|
||||
209 ,
|
||||
210 ,
|
||||
211 ,
|
||||
212 ,
|
||||
213 ,
|
||||
214 ,
|
||||
215 ,
|
||||
216 ,
|
||||
217 ,
|
||||
218 ,
|
||||
219 ,
|
||||
220 ,
|
||||
221 ,
|
||||
222 ,
|
||||
223 ,
|
||||
224 ,
|
||||
224 ,
|
||||
225 ,
|
||||
226 ,
|
||||
227 ,
|
||||
228 ,
|
||||
229 ,
|
||||
230 ,
|
||||
231 ,
|
||||
232 ,
|
||||
233 ,
|
||||
234 ,
|
||||
235 ,
|
||||
236 ,
|
||||
237 ,
|
||||
238 ,
|
||||
239 ,
|
||||
239,
|
||||
240,
|
||||
240,
|
||||
16, 17, 18, 19, 20,21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||||
36, 37, 38, 39, 40,40,
|
||||
41,41, 42, 43, 44,44, 45, 46, 47,47, 48, 49, 50,50, 51, 52, 53,53, 54, 55,55, 56, 57, 58,58, 59, 60,
|
||||
61, 62,62, 63, 64,64, 65, 66, 67,67, 68, 69, 70,70, 71, 72, 73, 74,74, 75, 76,76, 77, 78,78, 79, 80,
|
||||
81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
|
||||
101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
|
||||
121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
|
||||
141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
|
||||
161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
|
||||
181, 182, 183, 184, 185, 186 , 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
|
||||
201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
|
||||
221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
|
||||
241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
|
||||
};
|
||||
void main(void)
|
||||
{
|
||||
@@ -374,56 +132,55 @@ void main(void)
|
||||
Yaokong_Data[0] = D1;
|
||||
Yaokong_Data[1] = D0;
|
||||
|
||||
TMOD = (TMOD&0xFC)|0x00; //模式选择: 定时器0,模式0。
|
||||
TH0 = TH_VAL; //高8位装初值
|
||||
TL0 = TL_VAL; //低8位装初值
|
||||
|
||||
TR0 = 0; //定时器0使能
|
||||
ET0 = 1; //定时器0中断使能
|
||||
PT0 = 0; //设置定时器0中断优先级为低优先级
|
||||
// TMOD = (TMOD&0xFC)|0x00; //模式选择: 定时器0,模式0。
|
||||
// TH0 = TH_VAL; //高8位装初值
|
||||
// TL0 = TL_VAL; //低8位装初值
|
||||
//
|
||||
// TR0 = 0; //定时器0使能
|
||||
// ET0 = 1; //定时器0中断使能
|
||||
// PT0 = 0; //设置定时器0中断优先级为低优先级
|
||||
|
||||
while(1)
|
||||
{
|
||||
TS_Action();
|
||||
if(WheelSliderPosition != -1)
|
||||
{
|
||||
flagSend = 1;
|
||||
flagStart = 0;
|
||||
send_times = 3;
|
||||
//当WheelSliderPosition不等于-1时, 表示滑条或圆环有触摸事件发生。WheelSliderPosition的值表示滑条或圆环的位置。
|
||||
send_times = 1;
|
||||
valueSend=rf_data[ WheelSliderPosition];//0-240
|
||||
valueSend += 15;//15-255
|
||||
//valueSend += 15;//15-255
|
||||
}
|
||||
|
||||
if(KeysFlagSN != 0)
|
||||
{
|
||||
flagSend = 1;
|
||||
flagStart = 0;
|
||||
send_times = 3;
|
||||
switch(KeysFlagSN)
|
||||
{
|
||||
case 0x0001:
|
||||
valueSend = 0x05;
|
||||
valueSend = 0x0A;//1
|
||||
break;
|
||||
case 0x0002:
|
||||
valueSend = 0x0c;
|
||||
valueSend = 0x0C;//
|
||||
break;
|
||||
case 0x0004:
|
||||
valueSend = 0x0a;
|
||||
// valueSend = 0x07;//1
|
||||
valueSend = 0x0E;//1
|
||||
break;
|
||||
case 0x0008:
|
||||
valueSend = 0x0b;
|
||||
//valueSend = 0x09;//
|
||||
valueSend = 0x06;//
|
||||
break;
|
||||
case 0x0010:
|
||||
valueSend = 0x09;
|
||||
valueSend = 0x02;//1
|
||||
break;
|
||||
case 0x0020:
|
||||
valueSend = 0x07;
|
||||
valueSend = 0x04;//1
|
||||
break;
|
||||
case 0x0040:
|
||||
valueSend = 0x03;
|
||||
valueSend = 0x00; // 1
|
||||
break;
|
||||
case 0x0080:
|
||||
valueSend = 0x01;
|
||||
valueSend = 0x0F; // 1
|
||||
break;
|
||||
default:
|
||||
flagSend = 0;
|
||||
@@ -431,181 +188,23 @@ void main(void)
|
||||
}
|
||||
}
|
||||
|
||||
if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
|
||||
if(KeysFlagSN==0&&WheelSliderPosition==-1){
|
||||
flagSend=0;
|
||||
}else{
|
||||
flagSend = 1;
|
||||
}
|
||||
if(flagSend&&RF_Time>20)
|
||||
{
|
||||
flagStart = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#if GENERATE_TS_KEY_EN
|
||||
/*************************************************************************************************
|
||||
变量TS_Key是根据KeysFlagSN得到的按键信息,以下为按键产生的过程:
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
| 单键:以K1为例,K1按键产生的流程如下所示: |
|
||||
| |
|
||||
| |---> K1|KEY_BREAK(短按松开) |
|
||||
| K1(按下)--| |
|
||||
| |---> K1|KEY_LONG_START(长按大约1秒)---> K1|KEY_LONG(一直长按,约每300ms产生一次长按键)---->K1|KEY_LONG_BREAK(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |----------<-----------<------------<--------------| |
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------|
|
||||
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
| |
|
||||
| 复合键:以K1(K1=0x0001),K2(K2=0x0002)为例, 当K1,K2同时按下时,产生按键为(K1<<5)|K2,即0x22, 产生按键的流程如下所示: |
|
||||
| |
|
||||
| |---> ((K1<<5)|K2)|KEY_BREAK(短按松开) |
|
||||
| (K1<<5)|K2(按下)--| |
|
||||
| |---> ((K1<<5)|K2)|KEY_LONG_START(长按大约1秒)---> ((K1<<5)|K2)|KEY_LONG(一直长按,约每300ms产生长按键)---->((K1<<5)|K2)|KEY_LONG_BREAK(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |---------<-------------<----------------<----------------| |
|
||||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||
|
||||
注意:由于复合键按下时,软件不一定同时检测到双键,而是先检测到单键按下,例如先检测到K1,此时会先产生K1键,等到检测到K2也按
|
||||
下时,才会产生按键(K1<<5)|K2,检测到双键后,如果双键一直按下,会产生((K1<<5)|K2)|KEY_LONG_START和((K1<<5)|K2)|KEY_LONG,如果
|
||||
有一个键先松手,会停止产生按键, 等到双键都松开时,才会产生((K1<<5)|K2)|KEY_BREAK(短按松开)或((K1<<5)|K2)|KEY_LONG_BREAK(长按松开)
|
||||
*************************************************************************************************/
|
||||
if(TS_Key != 0)
|
||||
{
|
||||
switch(TS_Key)
|
||||
{
|
||||
//单按键消息
|
||||
case K1:
|
||||
// valueSend = 0x05; //K1短按产生的按键消息
|
||||
break;
|
||||
case (K1|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K1|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K1|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K1|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K2: //K1短按产生的按键消息
|
||||
// valueSend = 0x0c;
|
||||
break;
|
||||
case (K2|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K2|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K2|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K2|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K3: //K1短按产生的按键消息
|
||||
// valueSend = 0x0a;
|
||||
break;
|
||||
case (K3|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K3|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K3|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K3|KEY_LONG_BREAK): longPressFlag=0;///K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K4: //K1短按产生的按键消息
|
||||
// valueSend = 0x0b;
|
||||
break;
|
||||
case (K4|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
valueSend = 0x0b;
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
valueSend = 0x0b;
|
||||
flagStart = 1;
|
||||
break;
|
||||
case (K4|KEY_LONG_BREAK):longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K5: //K1短按产生的按键消息
|
||||
// valueSend = 0x09;
|
||||
break;
|
||||
case (K5|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K5|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K5|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K5|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K6: //K1短按产生的按键消息
|
||||
// valueSend = 0x07;
|
||||
break;
|
||||
case (K6|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K6|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K6|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K6|KEY_LONG_BREAK):longPressFlag=0; //K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K7: //K1短按产生的按键消息
|
||||
// valueSend = 0x03;
|
||||
break;
|
||||
case (K7|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K7|KEY_LONG_START):longPressFlag=1; //K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K7|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K7|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
//单按键消息
|
||||
case K8: //K1短按产生的按键消息
|
||||
// valueSend = 0x01;
|
||||
break;
|
||||
case (K8|KEY_BREAK): flagNoPress = 1; //K1短按松手产生的按键消息
|
||||
break;
|
||||
case (K8|KEY_LONG_START): longPressFlag=1;//K1长按开始产生的消息(长按约1秒时产生)
|
||||
break;
|
||||
case (K8|KEY_LONG): //K1长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case (K8|KEY_LONG_BREAK): longPressFlag=0;//K1长按松手产生的消息
|
||||
break;
|
||||
#if GENERATE_DOUBLE_KEY_EN
|
||||
//复合键消息
|
||||
case (K1<<5)|K2: //K1和K2同时按下时产生的按键消息
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_BREAK: //K1和K2短按松手产生的按键消息
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG_START: //K1和K2长按开始产生的按键消息(长按约1秒时产生)
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG: //K1和K2长按产生的消息(每隔约300ms产生一次)
|
||||
break;
|
||||
case ((K1<<5)|K2)|KEY_LONG_BREAK: //K1和K2长按松手产生的消息
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(flagSend==1)//短按
|
||||
{
|
||||
RF_Time = 0;
|
||||
flagSend = 0;
|
||||
// flagStart = 1;
|
||||
//
|
||||
// RF_send(send_times);
|
||||
TR0 = 1; //定时器0使能
|
||||
Yaokong_Data[2] = valueSend;
|
||||
RF_Time=0;
|
||||
EA = 0;
|
||||
RF_send(send_times);
|
||||
EA = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user