275 lines
13 KiB
Plaintext
275 lines
13 KiB
Plaintext
C51 COMPILER V9.60.0.0 MAIN 05/05/2026 17:41:49 PAGE 1
|
||
|
||
|
||
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE MAIN
|
||
OBJECT MODULE PLACED IN .\hex\main.obj
|
||
COMPILER INVOKED BY: C:\keil5\C51\BIN\C51.EXE main.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\main.lst) TABS(2) OB
|
||
-JECT(.\hex\main.obj)
|
||
|
||
line level source
|
||
|
||
1 #ifndef _MAIN_C_
|
||
2 #define _MAIN_C_
|
||
3 /*********************************************************************************************************
|
||
-************/
|
||
4 #include "ca51f5_config.h"
|
||
5 #include "includes\ca51f5sfr.h"
|
||
6 #include "includes\ca51f5xsfr.h"
|
||
7 #include "includes\gpiodef_f5.h"
|
||
8
|
||
9 #include "Library\includes\uart.h"
|
||
10 #include "Library\includes\system_clock.h"
|
||
11 #include "Library\Includes\tmc.h"
|
||
12 #include "includes\system.h"
|
||
13 #include "Library\includes\wdt.h"
|
||
14 /*********************************************************************************************************
|
||
-************/
|
||
15 #include "TS_Lib\Includes\ts_configuration.h"
|
||
*** WARNING C329 IN LINE 120 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 121 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 122 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 123 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 124 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 125 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 126 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 127 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 143 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
*** WARNING C329 IN LINE 144 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||
16 #include "TS_Lib\Includes\ts_def.h"
|
||
17 #include "TS_Lib\Includes\ts_api.h"
|
||
18 #include "TS_Lib\Includes\ts_service.h"
|
||
19 #include "rf_send.h"
|
||
20
|
||
21 #include "Library\Includes\delay.h"
|
||
22
|
||
23 #define INT_TIME 100 //定时时间,单位为us
|
||
24
|
||
25 #define TH_VAL (unsigned char)((0x2000 - (INT_TIME*(FOSC/1000))/12000)>>5)
|
||
26 #define TL_VAL (unsigned char)(0x2000 - (INT_TIME*(FOSC/1000))/12000)&0x1F
|
||
27
|
||
28
|
||
29
|
||
30 unsigned char flagSend = 0;
|
||
31 unsigned char valueSend = 0;
|
||
32 unsigned char flagStart = 0;
|
||
33
|
||
34
|
||
35
|
||
36 void Delay_ms(unsigned int n);
|
||
37
|
||
38 //void TIMER0_ISR (void) interrupt 1 //每100us产生中断
|
||
39 //{
|
||
40 // TH0 = TH_VAL;
|
||
41 // TL0 = TL_VAL;
|
||
42
|
||
C51 COMPILER V9.60.0.0 MAIN 05/05/2026 17:41:49 PAGE 2
|
||
|
||
43 // Send433_Byte();
|
||
44 //}
|
||
45 /*********************************************************************************************************
|
||
-************/
|
||
46 /*********************************************************************************************************
|
||
-**********************************
|
||
47 说明:
|
||
48 ----------------------------------------------------------------------------------------------------------
|
||
---
|
||
49 1.ts_configuration.h是触摸的配置文件,可在配置文件中设置触摸通道、灵敏度等。详见ts_configuration.h中的说明
|
||
-。
|
||
50 ----------------------------------------------------------------------------------------------------------
|
||
---
|
||
51 2.如果需要使用UART来调试,可在ca51f5_config.h中打开宏定义UART0_EN
|
||
52 ----------------------------------------------------------------------------------------------------------
|
||
---
|
||
53 3.触摸库对外的数据接口为KeysFlagSN,用户可根据KeysFlagSN的值来判断触摸键是否按下(如果触摸键按下,KeysFlag
|
||
-SN
|
||
54 的对应位一直为1,触摸键松开,对应位变为0),TS_Key是根据KeysFlagSN的值生成的按键消息,用户如不使用可忽略。
|
||
55 ----------------------------------------------------------------------------------------------------------
|
||
---
|
||
56 4.使能了触摸省电模式后,在无按键时,在定义的时间后会进入省电模式,进入省电模式前会关闭TMC中断和触摸中断(�
|
||
-⒁猓��
|
||
57 中断仍是开启的),在触摸省电模式下,CPU会进入STOP模式,在被触摸唤醒后,程序在省电函数(TS_EnterSleepMode)
|
||
-的循环内运行(注意,触摸省电模式程序不
|
||
58 会在主循环内运行),在触摸省电模式下如果还要响应其他中断,用户需在进入触摸省电模式前自行开启其他中断,
|
||
59 如果需要退出省电模式,用户只需要在省电函数循环内加入条件判断,跳出循环即可。
|
||
60
|
||
61 变量TS_SleepEn是控制触摸省电模式的开关,如果希望程序在某些条件下不进入省电模式,只需在此条件下设置TS_Sleep
|
||
-En = 0;
|
||
62
|
||
63
|
||
64 ----------------------------------------------------------------------------------------------------------
|
||
---
|
||
65 5.触摸外挂电容(即TK_CAP引脚连接电容)范围:6nF~50nF,建议值:20nF(即203)
|
||
66 ----------------------------------------------------------------------------------------------------------
|
||
---
|
||
67 6.触摸引脚串联电阻范围:0~5K,建议值:1K欧姆,如果有抗对讲机等电磁干扰要求, 此电阻至少3K以上。
|
||
68 **********************************************************************************************************
|
||
-*********************************/
|
||
69 unsigned long int Read_32bit_UID(void)
|
||
70 {
|
||
71 1 unsigned long int ID;
|
||
72 1 FSCMD = 0x80;
|
||
73 1 PTSH = 0x00;
|
||
74 1 PTSL = 0x00;
|
||
75 1 FSCMD = 0x81;
|
||
76 1 ID = FSDAT;
|
||
77 1 ID *= 256;
|
||
78 1 ID |= FSDAT;
|
||
79 1 ID *= 256;
|
||
80 1 ID |= FSDAT;
|
||
81 1 ID *= 256;
|
||
82 1 ID |= FSDAT;
|
||
83 1 FSCMD = 0;
|
||
84 1 return ID;
|
||
85 1 }
|
||
86 code unsigned char rf_data[255]=
|
||
87 {
|
||
88 16, 17, 18, 19, 20,21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
|
||
89 36, 37, 38, 39, 40,40,
|
||
90 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,
|
||
C51 COMPILER V9.60.0.0 MAIN 05/05/2026 17:41:49 PAGE 3
|
||
|
||
91 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,
|
||
92 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100,
|
||
93 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
|
||
94 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,
|
||
95 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160,
|
||
96 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180,
|
||
97 181, 182, 183, 184, 185, 186 , 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200,
|
||
98 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220,
|
||
99 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240,
|
||
100 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255
|
||
101 };
|
||
102 void main(void)
|
||
103 {
|
||
104 1 unsigned long int addr=0;
|
||
105 1 unsigned char send_times = 0;
|
||
106 1 #ifdef LVD_RST_ENABLE
|
||
107 1 LVDCON = 0xE3; //设置LVD复位电压为2.0V
|
||
108 1 #endif
|
||
109 1
|
||
110 1 #ifdef UART0_EN
|
||
Uart0_Initial(UART0_BAUTRATE);
|
||
#endif
|
||
113 1
|
||
114 1 //看门狗时钟源为IRCL
|
||
115 1 CKCON |= ILCKE; //使能IRCL
|
||
116 1 WDCON = WDTS(WDTS_IRCL) | WDRE(WDRE_reset); //设置看门狗时钟源为ILCKE,模式为复位模式
|
||
117 1 WDVTHH = 0; //看门狗复位阈值高八位设置 当前值为5s
|
||
118 1 WDVTHL = 75; //看门狗复位阈值低八位设置
|
||
119 1 WDFLG = 0xA5;
|
||
120 1
|
||
121 1 EA = 1;
|
||
122 1
|
||
123 1 TS_init();
|
||
124 1
|
||
125 1 P32F = OUTPUT; //P00设置为推挽输出模式
|
||
126 1 P32=0;
|
||
127 1
|
||
128 1 addr = (unsigned int)Read_32bit_UID(); //获取遥控ID
|
||
129 1 D0 = (unsigned char)(addr >> 8);
|
||
130 1 D1 = (unsigned char)(addr);
|
||
131 1
|
||
132 1 Yaokong_Data[0] = D1;
|
||
133 1 Yaokong_Data[1] = D0;
|
||
134 1
|
||
135 1 // TMOD = (TMOD&0xFC)|0x00; //模式选择: 定时器0,模式0。
|
||
136 1 // TH0 = TH_VAL; //高8位装初值
|
||
137 1 // TL0 = TL_VAL; //低8位装初值
|
||
138 1 //
|
||
139 1 // TR0 = 0; //定时器0使能
|
||
140 1 // ET0 = 1; //定时器0中断使能
|
||
141 1 // PT0 = 0; //设置定时器0中断优先级为低优先级
|
||
142 1
|
||
143 1 while(1)
|
||
144 1 {
|
||
145 2 TS_Action();
|
||
146 2 if(WheelSliderPosition != -1)
|
||
147 2 {
|
||
148 3 send_times = 3;
|
||
149 3 //当WheelSliderPosition不等于-1时, 表示滑条或圆环有触摸事件发生。WheelSliderPosition的值表示滑条或圆环
|
||
-的位置。
|
||
150 3 valueSend=rf_data[ WheelSliderPosition];//0-240
|
||
151 3 //valueSend += 15;//15-255
|
||
C51 COMPILER V9.60.0.0 MAIN 05/05/2026 17:41:49 PAGE 4
|
||
|
||
152 3 }
|
||
153 2
|
||
154 2 if(KeysFlagSN != 0)
|
||
155 2 {
|
||
156 3 send_times = 3;
|
||
157 3 switch(KeysFlagSN)
|
||
158 3 {
|
||
159 4 case 0x0001:
|
||
160 4 valueSend = 0x0A;//1
|
||
161 4 break;
|
||
162 4 case 0x0002:
|
||
163 4 valueSend = 0x0C;//
|
||
164 4 break;
|
||
165 4 case 0x0004:
|
||
166 4 // valueSend = 0x07;//1
|
||
167 4 valueSend = 0x0E;//1
|
||
168 4 break;
|
||
169 4 case 0x0008:
|
||
170 4 //valueSend = 0x09;//
|
||
171 4 valueSend = 0x06;//
|
||
172 4 break;
|
||
173 4 case 0x0010:
|
||
174 4 valueSend = 0x02;//1
|
||
175 4 break;
|
||
176 4 case 0x0020:
|
||
177 4 valueSend = 0x04;//1
|
||
178 4 break;
|
||
179 4 case 0x0040:
|
||
180 4 valueSend = 0x00; // 1
|
||
181 4 break;
|
||
182 4 case 0x0080:
|
||
183 4 valueSend = 0x0F; // 1
|
||
184 4 break;
|
||
185 4 default:
|
||
186 4 flagSend = 0;
|
||
187 4 break;
|
||
188 4 }
|
||
189 3 }
|
||
190 2
|
||
191 2
|
||
192 2 if(KeysFlagSN==0&&WheelSliderPosition==-1){
|
||
193 3 flagSend=0;
|
||
194 3 }else{
|
||
195 3 flagSend = 1;
|
||
196 3 }
|
||
197 2 if(flagSend&&RF_Time>20)
|
||
198 2 {
|
||
199 3 RF_Time = 0;
|
||
200 3 flagSend = 0;
|
||
201 3 RF_Time=0;
|
||
202 3 EA = 0;
|
||
203 3 RF_send(send_times);
|
||
204 3 EA = 1;
|
||
205 3 }
|
||
206 2
|
||
207 2
|
||
208 2
|
||
209 2 }
|
||
210 1 }
|
||
211 #endif
|
||
|
||
|
||
C51 COMPILER V9.60.0.0 MAIN 05/05/2026 17:41:49 PAGE 5
|
||
|
||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||
CODE SIZE = 364 ----
|
||
CONSTANT SIZE = 255 ----
|
||
XDATA SIZE = ---- ----
|
||
PDATA SIZE = ---- ----
|
||
DATA SIZE = 3 9
|
||
IDATA SIZE = ---- ----
|
||
BIT SIZE = ---- ----
|
||
EDATA SIZE = ---- ----
|
||
HDATA SIZE = ---- ----
|
||
XDATA CONST SIZE = ---- ----
|
||
FAR CONST SIZE = ---- ----
|
||
END OF MODULE INFORMATION.
|
||
|
||
|
||
C51 COMPILATION COMPLETE. 10 WARNING(S), 0 ERROR(S)
|