init
This commit is contained in:
+253
@@ -0,0 +1,253 @@
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 1
|
||||
|
||||
|
||||
MACRO ASSEMBLER A51 V8.2.7.0
|
||||
OBJECT MODULE PLACED IN .\hex\STARTUP.obj
|
||||
ASSEMBLER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\A51.EXE Library\Lib\STARTUP.A51 NOMOD51 SET(SMALL) DEBUG PRINT(.\
|
||||
lst\STARTUP.lst) OBJECT(.\hex\STARTUP.obj) EP
|
||||
|
||||
LOC OBJ LINE SOURCE
|
||||
|
||||
1 $nomod51
|
||||
2 ;------------------------------------------------------------------------------
|
||||
3 ; This file is part of the C51 Compiler package
|
||||
4 ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
|
||||
5 ; Version 8.01
|
||||
6 ;
|
||||
7 ; *** <<< Use Configuration Wizard in Context Menu >>> ***
|
||||
8 ;------------------------------------------------------------------------------
|
||||
9 ; STARTUP.A51: This code is executed after processor reset.
|
||||
10 ;
|
||||
11 ; To translate this file use A51 with the following invocation:
|
||||
12 ;
|
||||
13 ; A51 STARTUP.A51
|
||||
14 ;
|
||||
15 ; To link the modified STARTUP.OBJ file to your application use the following
|
||||
16 ; Lx51 invocation:
|
||||
17 ;
|
||||
18 ; Lx51 your object file list, STARTUP.OBJ controls
|
||||
19 ;
|
||||
20 ;------------------------------------------------------------------------------
|
||||
21 ;
|
||||
22 ; User-defined <h> Power-On Initialization of Memory
|
||||
23 ;
|
||||
24 ; With the following EQU statements the initialization of memory
|
||||
25 ; at processor reset can be defined:
|
||||
26 ;
|
||||
27 ; <o> IDATALEN: IDATA memory size <0x0-0x100>
|
||||
28 ; <i> Note: The absolute start-address of IDATA memory is always 0
|
||||
29 ; <i> The IDATA space overlaps physically the DATA and BIT areas.
|
||||
0080 30 IDATALEN EQU 80H
|
||||
31 ;
|
||||
32 ; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
|
||||
33 ; <i> The absolute start address of XDATA memory
|
||||
0000 34 XDATASTART EQU 0
|
||||
35 ;
|
||||
36 ; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
|
||||
37 ; <i> The length of XDATA memory in bytes.
|
||||
0000 38 XDATALEN EQU 0
|
||||
39 ;
|
||||
40 ; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
|
||||
41 ; <i> The absolute start address of PDATA memory
|
||||
0000 42 PDATASTART EQU 0H
|
||||
43 ;
|
||||
44 ; <o> PDATALEN: PDATA memory size <0x0-0xFF>
|
||||
45 ; <i> The length of PDATA memory in bytes.
|
||||
0000 46 PDATALEN EQU 0H
|
||||
47 ;
|
||||
48 ;</h>
|
||||
49 ;------------------------------------------------------------------------------
|
||||
50 ;
|
||||
51 ;<h> Reentrant Stack Initialization
|
||||
52 ;
|
||||
53 ; The following EQU statements define the stack pointer for reentrant
|
||||
54 ; functions and initialized it:
|
||||
55 ;
|
||||
56 ; <h> Stack Space for reentrant functions in the SMALL model.
|
||||
57 ; <q> IBPSTACK: Enable SMALL model reentrant stack
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 2
|
||||
|
||||
58 ; <i> Stack space for reentrant functions in the SMALL model.
|
||||
0000 59 IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
|
||||
60 ; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
|
||||
61 ; <i> Set the top of the stack to the highest location.
|
||||
0100 62 IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
63 ; </h>
|
||||
64 ;
|
||||
65 ; <h> Stack Space for reentrant functions in the LARGE model.
|
||||
66 ; <q> XBPSTACK: Enable LARGE model reentrant stack
|
||||
67 ; <i> Stack space for reentrant functions in the LARGE model.
|
||||
0000 68 XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
|
||||
69 ; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
|
||||
70 ; <i> Set the top of the stack to the highest location.
|
||||
0000 71 XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
|
||||
72 ; </h>
|
||||
73 ;
|
||||
74 ; <h> Stack Space for reentrant functions in the COMPACT model.
|
||||
75 ; <q> PBPSTACK: Enable COMPACT model reentrant stack
|
||||
76 ; <i> Stack space for reentrant functions in the COMPACT model.
|
||||
0000 77 PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
|
||||
78 ;
|
||||
79 ; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
|
||||
80 ; <i> Set the top of the stack to the highest location.
|
||||
0100 81 PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
|
||||
82 ; </h>
|
||||
83 ;</h>
|
||||
84 ;------------------------------------------------------------------------------
|
||||
85 ;
|
||||
86 ; Memory Page for Using the Compact Model with 64 KByte xdata RAM
|
||||
87 ; <e>Compact Model Page Definition
|
||||
88 ;
|
||||
89 ; <i>Define the XDATA page used for PDATA variables.
|
||||
90 ; <i>PPAGE must conform with the PPAGE set in the linker invocation.
|
||||
91 ;
|
||||
92 ; Enable pdata memory page initalization
|
||||
0000 93 PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
|
||||
94 ;
|
||||
95 ; <o> PPAGE number <0x0-0xFF>
|
||||
96 ; <i> uppermost 256-byte address of the page used for PDATA variables.
|
||||
0000 97 PPAGE EQU 0
|
||||
98 ;
|
||||
99 ; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
|
||||
100 ; <i> most 8051 variants use P2 as uppermost address byte
|
||||
00A0 101 PPAGE_SFR DATA 0A0H
|
||||
102 ;
|
||||
103 ; </e>
|
||||
104 ;------------------------------------------------------------------------------
|
||||
105
|
||||
106 ; Standard SFR Symbols
|
||||
00E0 107 ACC DATA 0E0H
|
||||
00F0 108 B DATA 0F0H
|
||||
0081 109 SP DATA 81H
|
||||
0082 110 DPL DATA 82H
|
||||
0083 111 DPH DATA 83H
|
||||
112
|
||||
113 NAME ?C_STARTUP
|
||||
114
|
||||
115
|
||||
116 ?C_C51STARTUP SEGMENT CODE
|
||||
117 ?STACK SEGMENT IDATA
|
||||
118
|
||||
---- 119 RSEG ?STACK
|
||||
0000 120 DS 1
|
||||
121
|
||||
122 EXTRN CODE (?C_START)
|
||||
123 PUBLIC ?C_STARTUP
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 3
|
||||
|
||||
124
|
||||
---- 125 CSEG AT 0
|
||||
0000 020000 F 126 ?C_STARTUP: LJMP STARTUP1
|
||||
127
|
||||
---- 128 RSEG ?C_C51STARTUP
|
||||
129
|
||||
0000 130 STARTUP1:
|
||||
131
|
||||
132 IF IDATALEN <> 0
|
||||
0000 787F 133 MOV R0,#IDATALEN - 1
|
||||
0002 E4 134 CLR A
|
||||
0003 F6 135 IDATALOOP: MOV @R0,A
|
||||
0004 D8FD 136 DJNZ R0,IDATALOOP
|
||||
137 ENDIF
|
||||
138
|
||||
139 IF XDATALEN <> 0
|
||||
MOV DPTR,#XDATASTART
|
||||
MOV R7,#LOW (XDATALEN)
|
||||
IF (LOW (XDATALEN)) <> 0
|
||||
MOV R6,#(HIGH (XDATALEN)) +1
|
||||
ELSE
|
||||
MOV R6,#HIGH (XDATALEN)
|
||||
ENDIF
|
||||
CLR A
|
||||
XDATALOOP: MOVX @DPTR,A
|
||||
INC DPTR
|
||||
DJNZ R7,XDATALOOP
|
||||
DJNZ R6,XDATALOOP
|
||||
ENDIF
|
||||
153
|
||||
154 IF PPAGEENABLE <> 0
|
||||
MOV PPAGE_SFR,#PPAGE
|
||||
ENDIF
|
||||
157
|
||||
158 IF PDATALEN <> 0
|
||||
MOV R0,#LOW (PDATASTART)
|
||||
MOV R7,#LOW (PDATALEN)
|
||||
CLR A
|
||||
PDATALOOP: MOVX @R0,A
|
||||
INC R0
|
||||
DJNZ R7,PDATALOOP
|
||||
ENDIF
|
||||
166
|
||||
167 IF IBPSTACK <> 0
|
||||
EXTRN DATA (?C_IBP)
|
||||
|
||||
MOV ?C_IBP,#LOW IBPSTACKTOP
|
||||
ENDIF
|
||||
172
|
||||
173 IF XBPSTACK <> 0
|
||||
EXTRN DATA (?C_XBP)
|
||||
|
||||
MOV ?C_XBP,#HIGH XBPSTACKTOP
|
||||
MOV ?C_XBP+1,#LOW XBPSTACKTOP
|
||||
ENDIF
|
||||
179
|
||||
180 IF PBPSTACK <> 0
|
||||
EXTRN DATA (?C_PBP)
|
||||
MOV ?C_PBP,#LOW PBPSTACKTOP
|
||||
ENDIF
|
||||
184
|
||||
0006 758100 F 185 MOV SP,#?STACK-1
|
||||
186
|
||||
187 ; This code is required if you use L51_BANK.A51 with Banking Mode 4
|
||||
188 ;<h> Code Banking
|
||||
189 ; <q> Select Bank 0 for L51_BANK.A51 Mode 4
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 4
|
||||
|
||||
190
|
||||
|
||||
|
||||
|
||||
|
||||
195 ;</h>
|
||||
0009 020000 F 196 LJMP ?C_START
|
||||
197
|
||||
198 END
|
||||
A51 MACRO ASSEMBLER STARTUP 07/03/2025 11:27:53 PAGE 5
|
||||
|
||||
SYMBOL TABLE LISTING
|
||||
------ ----- -------
|
||||
|
||||
|
||||
N A M E T Y P E V A L U E ATTRIBUTES
|
||||
|
||||
?C_C51STARTUP. . . C SEG 000CH REL=UNIT
|
||||
?C_START . . . . . C ADDR ----- EXT
|
||||
?C_STARTUP . . . . C ADDR 0000H A
|
||||
?STACK . . . . . . I SEG 0001H REL=UNIT
|
||||
ACC. . . . . . . . D ADDR 00E0H A
|
||||
B. . . . . . . . . D ADDR 00F0H A
|
||||
DPH. . . . . . . . D ADDR 0083H A
|
||||
DPL. . . . . . . . D ADDR 0082H A
|
||||
IBPSTACK . . . . . N NUMB 0000H A
|
||||
IBPSTACKTOP. . . . N NUMB 0100H A
|
||||
IDATALEN . . . . . N NUMB 0080H A
|
||||
IDATALOOP. . . . . C ADDR 0003H R SEG=?C_C51STARTUP
|
||||
PBPSTACK . . . . . N NUMB 0000H A
|
||||
PBPSTACKTOP. . . . N NUMB 0100H A
|
||||
PDATALEN . . . . . N NUMB 0000H A
|
||||
PDATASTART . . . . N NUMB 0000H A
|
||||
PPAGE. . . . . . . N NUMB 0000H A
|
||||
PPAGEENABLE. . . . N NUMB 0000H A
|
||||
PPAGE_SFR. . . . . D ADDR 00A0H A
|
||||
SP . . . . . . . . D ADDR 0081H A
|
||||
STARTUP1 . . . . . C ADDR 0000H R SEG=?C_C51STARTUP
|
||||
XBPSTACK . . . . . N NUMB 0000H A
|
||||
XBPSTACKTOP. . . . N NUMB 0000H A
|
||||
XDATALEN . . . . . N NUMB 0000H A
|
||||
XDATASTART . . . . N NUMB 0000H A
|
||||
|
||||
|
||||
REGISTER BANK(S) USED: 0
|
||||
|
||||
|
||||
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+1343
File diff suppressed because it is too large
Load Diff
+3990
File diff suppressed because it is too large
Load Diff
+3994
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+165
@@ -0,0 +1,165 @@
|
||||
C51 COMPILER V9.60.7.0 DEBUG 07/03/2025 11:27:51 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE DEBUG
|
||||
OBJECT MODULE PLACED IN .\hex\debug.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE TS_Lib\Sources\debug.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||||
-PRINT(.\lst\debug.lst) TABS(2) OBJECT(.\hex\debug.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _I2C_C_
|
||||
2 #define _I2C_C_
|
||||
3
|
||||
4 /*********************************************************************************************************
|
||||
-************/
|
||||
5 #include "ca51f5_config.h"
|
||||
6 #include "includes\ca51f5sfr.h"
|
||||
7 #include "includes\ca51f5xsfr.h"
|
||||
8 #include "includes\gpiodef_f5.h"
|
||||
9 #include "Library\Includes\system_clock.h"
|
||||
10 #include "Library\Includes\i2c.h"
|
||||
11 /*********************************************************************************************************
|
||||
-************/
|
||||
12 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
*** WARNING C329 IN LINE 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** 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
|
||||
13 #include "TS_Lib\Includes\ts_def.h"
|
||||
14 #include "TS_Lib\Includes\ts_api.h"
|
||||
15 #include "TS_Lib\Includes\ts_service.h"
|
||||
16 /*********************************************************************************************************
|
||||
-************/
|
||||
17 #if DEBUG
|
||||
#define I2C_ADDR 0xCA
|
||||
unsigned char xdata TouchDebugID = '5';
|
||||
unsigned char rxOffset;
|
||||
unsigned char regAddr;
|
||||
bit iicReadMode;
|
||||
extern TSState_T xdata TS_State_Debug;
|
||||
extern unsigned char xdata Key_Cnt_Debug;
|
||||
extern unsigned char xdata TS_CH_Debug[OPENED_TS_COUNT];
|
||||
extern unsigned int xdata TS_RefChBaseLineData;
|
||||
extern unsigned int xdata TS_RefPostData;
|
||||
extern unsigned int xdata KeysFlagSN_Debug;
|
||||
code unsigned char *TS_INFO[]=
|
||||
{
|
||||
&TouchDebugID,
|
||||
&TS_State_Debug,
|
||||
&Key_Cnt_Debug,
|
||||
&TS_RefChBaseLineData,
|
||||
&TS_RefPostData,
|
||||
&KeysFlagSN_Debug,
|
||||
&TS_BaseLineData[0],
|
||||
&TS_PostData[0],
|
||||
&TSKey_FingerThd[0],
|
||||
&TS_CH_Debug[0],
|
||||
};
|
||||
unsigned char *pTS_Info;
|
||||
void I2C_ISR(void)
|
||||
C51 COMPILER V9.60.7.0 DEBUG 07/03/2025 11:27:51 PAGE 2
|
||||
|
||||
{
|
||||
unsigned char Sta_Temp;
|
||||
TouchDebugID = '5';
|
||||
Sta_Temp = I2CSTA;
|
||||
|
||||
if(Sta_Temp == 0x60) //接收到从机地址+写位
|
||||
{
|
||||
rxOffset = 0xff;
|
||||
iicReadMode = 0;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
else if(Sta_Temp == 0x80)
|
||||
{
|
||||
if(iicReadMode) //发送一字节数据
|
||||
{
|
||||
rxOffset++;
|
||||
I2CDAT = *(pTS_Info+rxOffset);
|
||||
}
|
||||
else //接收到一字节数据
|
||||
{
|
||||
if(rxOffset == 0xff) //地址
|
||||
{
|
||||
regAddr=I2CDAT;
|
||||
pTS_Info = TS_INFO[regAddr];
|
||||
rxOffset=0;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
else //数据
|
||||
{
|
||||
*(pTS_Info+rxOffset) = I2CDAT;
|
||||
rxOffset++;
|
||||
I2CCON |= AAK(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if(Sta_Temp==0xA8) //接收到从机地址+读位,发送ACK信号
|
||||
{
|
||||
I2CDAT = *(pTS_Info+rxOffset);
|
||||
iicReadMode = 1;
|
||||
}
|
||||
else if(Sta_Temp == 0x88)
|
||||
{
|
||||
}
|
||||
I2CFLG |= I2CF;
|
||||
}
|
||||
void Debug_init(void)
|
||||
{
|
||||
#ifdef I2C_SELECT_P30_P31
|
||||
I2CIOS = 0;
|
||||
GPIO_Init(P30F,P30_I2C_SDA_SETTING);
|
||||
GPIO_Init(P31F,P31_I2C_SCL_SETTING);
|
||||
#elif defined I2C_SELECT_P02_P03
|
||||
I2CIOS = 1;
|
||||
GPIO_Init(P03F,P03_I2C_SDA_SETTING);
|
||||
GPIO_Init(P02F,P02_I2C_SCL_SETTING);
|
||||
#endif
|
||||
|
||||
I2CCON = I2CE(1) | I2CIE(1) | STA(0) | STP(0)| CKHD(0) | AAK(1)| CBSE(0) | STFE(0);
|
||||
I2CADR = (I2C_ADDR>>1);
|
||||
|
||||
INT4EN = 1;
|
||||
PS1 = 1;
|
||||
C51 COMPILER V9.60.7.0 DEBUG 07/03/2025 11:27:51 PAGE 3
|
||||
|
||||
}
|
||||
void Debug_ParamLoad(void)
|
||||
{
|
||||
unsigned char i;
|
||||
KeysFlagSN_Debug = (unsigned int)KeysFlagSN;
|
||||
TS_State_Debug = TS_State;
|
||||
Key_Cnt_Debug = KEY_CH_COUNT;
|
||||
for(i = 0; i < KEY_CH_COUNT; i++)
|
||||
{
|
||||
TS_CH_Debug[i] = TS_CH[i];
|
||||
}
|
||||
TS_RefPostData = TS_PostData[OPENED_TS_COUNT];
|
||||
TS_RefChBaseLineData = TS_RefPostData;
|
||||
}
|
||||
|
||||
#endif
|
||||
122 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = ---- ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
|
||||
@@ -0,0 +1,50 @@
|
||||
C51 COMPILER V9.60.7.0 DELAY 07/03/2025 11:27:47 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE DELAY
|
||||
OBJECT MODULE PLACED IN .\hex\delay.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE Library\Sources\delay.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||||
- PRINT(.\lst\delay.lst) TABS(2) OBJECT(.\hex\delay.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _Delay_C_
|
||||
2 #define _Delay_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 void Delay_50us(unsigned int n)
|
||||
5 {
|
||||
6 1 unsigned char i;
|
||||
7 1 while(n--)
|
||||
8 1 {
|
||||
9 2 for(i=0;i<71;i++);
|
||||
10 2 }
|
||||
11 1 }
|
||||
12 void Delay_ms(unsigned int delay_nms)
|
||||
13 {
|
||||
14 1 while(delay_nms--)
|
||||
15 1 {
|
||||
16 2 Delay_50us(20);
|
||||
17 2 }
|
||||
18 1 }
|
||||
19 /*********************************************************************************************************
|
||||
-************/
|
||||
20 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 49 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
@@ -0,0 +1,13 @@
|
||||
C51 COMPILER V9.51 DISPLAY 07/30/2019 10:38:08 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE DISPLAY
|
||||
OBJECT MODULE PLACED IN .\hex\display.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE display.c OMF2 ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\displ
|
||||
-ay.lst) TABS(2) OBJECT(.\hex\display.obj)
|
||||
|
||||
line level source
|
||||
|
||||
*** ERROR C318 OF display.c: can't open file 'display.c'
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 1 ERROR(S)
|
||||
@@ -0,0 +1,135 @@
|
||||
C51 COMPILER V9.60.7.0 INTERRUPT 07/03/2025 11:27:50 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE INTERRUPT
|
||||
OBJECT MODULE PLACED IN .\hex\interrupt.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE interrupt.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst
|
||||
-\interrupt.lst) TABS(2) OBJECT(.\hex\interrupt.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _INTERRUPT_C_
|
||||
2 #define _INTERRUPT_C_
|
||||
3
|
||||
4 /*********************************************************************************************************
|
||||
-************/
|
||||
5 #include "ca51f5_config.h"
|
||||
6 #include "includes\ca51f5sfr.h"
|
||||
7 #include "includes\ca51f5xsfr.h"
|
||||
8 #include "includes\gpiodef_f5.h"
|
||||
9 #include "includes\system.h"
|
||||
10 #include "Library\includes\uart.h"
|
||||
11 #include "Library\Includes\tmc.h"
|
||||
12
|
||||
13 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
*** WARNING C329 IN LINE 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** 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
|
||||
14 #include "TS_Lib\Includes\ts_def.h"
|
||||
15 #include "TS_Lib\Includes\ts_api.h"
|
||||
16 #include "TS_Lib\Includes\ts_service.h"
|
||||
17 #include <intrins.h>
|
||||
18
|
||||
19 #include "rf_send.h"
|
||||
20
|
||||
21
|
||||
22 #if DEBUG
|
||||
#include "Library\Includes\i2c.h"
|
||||
void I2C_ISR(void);
|
||||
#endif
|
||||
26 /*********************************************************************************************************
|
||||
-************/
|
||||
27 extern unsigned char xdata TS_HalfSecCnt;
|
||||
28 void INT2_Handler (void) interrupt 4
|
||||
29 {
|
||||
30 1 #ifdef UART0_EN
|
||||
if(RI0)
|
||||
{
|
||||
UART0_RX_ISR();
|
||||
}
|
||||
if(TI0)
|
||||
{
|
||||
UART0_TX_ISR();
|
||||
}
|
||||
#endif
|
||||
40 1 }
|
||||
41
|
||||
42 void INT3_ISR (void) interrupt 5
|
||||
43 {
|
||||
44 1 static unsigned char TmCnt = 0;
|
||||
C51 COMPILER V9.60.7.0 INTERRUPT 07/03/2025 11:27:50 PAGE 2
|
||||
|
||||
45 1 if(TMCON & TMF) //ºÁÃëÖжÏ
|
||||
46 1 {
|
||||
47 2 TMCON |= TMF;
|
||||
48 2 #if SUPPORT_TOUCH_SLEEP_MODE
|
||||
49 2 if(TS_SleepMode)
|
||||
50 2 {
|
||||
51 3 TS_HalfSecCnt++;
|
||||
52 3 return;
|
||||
53 3 }
|
||||
54 2 else
|
||||
55 2 {
|
||||
56 3 TS_MS_ISR();
|
||||
57 3 }
|
||||
58 2 #else
|
||||
TS_MS_ISR();
|
||||
#endif
|
||||
61 2 if(TS_LongKeyTimer)
|
||||
62 2 {
|
||||
63 3 TS_LongKeyTimer--;
|
||||
64 3 }
|
||||
65 2 TmCnt++;
|
||||
66 2 if(TmCnt >= 128)
|
||||
67 2 {
|
||||
68 3 TmCnt = 0;
|
||||
69 3 TS_HS_ISR();
|
||||
70 3 }
|
||||
71 2 if(RF_Time<250)RF_Time++; //4ms
|
||||
72 2 }
|
||||
73 1 #if SUPPORT_TOUCH_SLEEP_MODE
|
||||
74 1 if(TS_SleepMode)
|
||||
75 1 {
|
||||
76 2 return;
|
||||
77 2 }
|
||||
78 1 #endif
|
||||
79 1 if(TKIF != 0)
|
||||
80 1 {
|
||||
81 2 TS_ISR();
|
||||
82 2 }
|
||||
83 1 }
|
||||
84 void INT4_ISR(void) interrupt 6
|
||||
85 {
|
||||
86 1 #if DEBUG
|
||||
if(I2CFLG & I2CF)
|
||||
{
|
||||
I2C_ISR();
|
||||
}
|
||||
#endif
|
||||
92 1 }
|
||||
93 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 137 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 1 ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
C51 COMPILER V9.60.7.0 INTERRUPT 07/03/2025 11:27:50 PAGE 3
|
||||
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 8 WARNING(S), 0 ERROR(S)
|
||||
+251
@@ -0,0 +1,251 @@
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE KEY
|
||||
OBJECT MODULE PLACED IN .\hex\key.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key.c OMF2 ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\key.lst)
|
||||
-TABS(2) OBJECT(.\hex\key.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _KEY_C_
|
||||
2 #define _KEY_C_
|
||||
3
|
||||
4 /*********************************************************************************************************
|
||||
-************/
|
||||
5 #include "ca51f5_config.h"
|
||||
6 #include "includes\ca51f5sfr.h"
|
||||
7 #include "includes\ca51f5xsfr.h"
|
||||
8 #include "includes\gpiodef_f5.h"
|
||||
9
|
||||
10 #include "Library\Includes\system_clock.h"
|
||||
11 #include "Library\includes\uart.h"
|
||||
12 #include "key.h"
|
||||
13 #include "io.h"
|
||||
14 /*********************************************************************************************************
|
||||
-************/
|
||||
15 #include "TS_Lib\Includes\ts_configuration.h"
|
||||
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 /*********************************************************************************************************
|
||||
-************/
|
||||
20
|
||||
21 /*************************************************************************************************
|
||||
22 单键:以K1为例,K1按键产生的流程如下所示:
|
||||
23
|
||||
24 --> K1|KEY_BREAK(短按松开)
|
||||
25 -
|
||||
26 K1(按下)--
|
||||
27 -
|
||||
28 --> K1|KEY_LONG_START(长按大约1秒)---> K1|KEY_LONG(一直长按,约每300ms产生长按键)---->K1|KEY_LONG_BR
|
||||
-EAK(长按松开)
|
||||
29 ^ |
|
||||
30 | |
|
||||
31 |-----------------------------------------------|
|
||||
32
|
||||
33 复合键:
|
||||
34 以K1(K1=0x0001),K2(K2=0x0002)为例, 当K1,K2同时按下时,产生按键为(K1<<5)|K2,即0x22, 产生按键的流程如下所
|
||||
-示:
|
||||
35
|
||||
36
|
||||
37 --> ((K1<<5)|K2)|KEY_BREAK(短按松开)
|
||||
38 -
|
||||
39 (K1<<5)|K2(按下)--
|
||||
40 -
|
||||
41 --> ((K1<<5)|K2)|KEY_LONG_START(长按大约1秒)---> ((K1<<5)|K2)|KEY_LONG(一直长按,约每300ms产生长
|
||||
-按键)---->((K1<<5)|K2)|KEY_LONG_BREAK(长按松开)
|
||||
42 ^ |
|
||||
43 | |
|
||||
44 |---------------------------------------------------------|
|
||||
45 注意:由于复合键按下时,软件不一定同时检测到双键,而是先检测到单键按下,例如先检测到K1,此时会先产生K1键,
|
||||
-等到检测到K2也按
|
||||
46 下时,才会产生按键(K1<<5)|K2,检测到双键后,如果双键一直按下,会产生((K1<<5)|K2)|KEY_LONG_START和((K1<<5)|
|
||||
-K2)|KEY_LONG,如果
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 2
|
||||
|
||||
47 有一个键先松手,会停止产生按键, 等到双键都松开时,才会产生((K1<<5)|K2)|KEY_BREAK(短按松开)或((K1<<5)|K2)|
|
||||
-KEY_LONG_BREAK(长按松开)
|
||||
48 *************************************************************************************************/
|
||||
49 typedef struct
|
||||
50 {
|
||||
51 unsigned char TogKeyNum;
|
||||
52 unsigned char TogKeyList[2];
|
||||
53 }
|
||||
54 T_TogKeyInfo;
|
||||
55 code unsigned char TS_KEY_TAB[]=
|
||||
56 {
|
||||
57 K1,K2,K3,K4,K5,K6,K7,K8,K9,K10,K11,K12,K13
|
||||
58 };
|
||||
59 void TSKey_init(void)
|
||||
60 {
|
||||
61 1 TK_State = TK_STATE_RELEASE;
|
||||
62 1 TS_Key = 0;
|
||||
63 1 }
|
||||
64 void TS_GetTogKeyInfor(T_TogKeyInfo *pKeyInfo)
|
||||
65 {
|
||||
66 1 unsigned char i,index;
|
||||
67 1 pKeyInfo->TogKeyNum = 0;
|
||||
68 1 index = 0;
|
||||
69 1 for(i = 0; i < KEY_CH_COUNT; i++)
|
||||
70 1 {
|
||||
71 2 if(KeysFlagSN & MASK_TAB[i])
|
||||
72 2 {
|
||||
73 3 pKeyInfo->TogKeyNum++;
|
||||
74 3
|
||||
75 3 if(pKeyInfo->TogKeyNum <= 2)
|
||||
76 3 {
|
||||
77 4 pKeyInfo->TogKeyList[index++] = TS_KEY_TAB[i];
|
||||
78 4 }
|
||||
79 3 }
|
||||
80 2 }
|
||||
81 1 }
|
||||
82
|
||||
83 void TS_GetKey(void)
|
||||
84 {
|
||||
85 1 static unsigned int KeyBak;
|
||||
86 1 static bit LongFlag;
|
||||
87 1 T_TogKeyInfo KeyInfo;
|
||||
88 1 unsigned char i;
|
||||
89 1 TS_Key = 0;
|
||||
90 1 TS_GetTogKeyInfor(&KeyInfo);
|
||||
91 1
|
||||
92 1 if(TK_State == TK_STATE_RELEASE)
|
||||
93 1 {
|
||||
94 2 if(KeyInfo.TogKeyNum != 0)
|
||||
95 2 {
|
||||
96 3 if(KeyInfo.TogKeyNum == 1)
|
||||
97 3 {
|
||||
98 4 KeyBak = (unsigned int)KeyInfo.TogKeyList[0];
|
||||
99 4 TK_State = TK_STATE_SINGLE_KEY_PRESS;
|
||||
100 4 }
|
||||
101 3 else if(KeyInfo.TogKeyNum == 2)
|
||||
102 3 {
|
||||
103 4 KeyBak = ((unsigned int)KeyInfo.TogKeyList[0]<<5)|(unsigned int)KeyInfo.TogKeyList[1];
|
||||
104 4 TK_State = TK_STATE_DOUBLE_KEY_PRESS;
|
||||
105 4 }
|
||||
106 3
|
||||
107 3 TS_Key = KeyBak;
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 3
|
||||
|
||||
108 3 LongFlag = 0;
|
||||
109 3 TS_LongKeyTimer = TS_LONG_START_TIME;
|
||||
110 3 BUZZ_ON;
|
||||
111 3 }
|
||||
112 2 }
|
||||
113 1 else if(TK_State == TK_STATE_SINGLE_KEY_PRESS)
|
||||
114 1 {
|
||||
115 2 if(KeyInfo.TogKeyNum == 1)
|
||||
116 2 {
|
||||
117 3 if(KeyBak == (unsigned int)KeyInfo.TogKeyList[0])
|
||||
118 3 {
|
||||
119 4 if(!TS_LongKeyTimer)
|
||||
120 4 {
|
||||
121 5 if(!LongFlag)
|
||||
122 5 {
|
||||
123 6 LongFlag = 1;
|
||||
124 6 TS_Key = KeyBak | KEY_LONG_START;
|
||||
125 6 }
|
||||
126 5 else
|
||||
127 5 {
|
||||
128 6 TS_Key = KeyBak | KEY_LONG;
|
||||
129 6 }
|
||||
130 5 TS_LongKeyTimer = TS_LONG_TIME;
|
||||
131 5 }
|
||||
132 4 }
|
||||
133 3 else
|
||||
134 3 {
|
||||
135 4 if(!LongFlag)
|
||||
136 4 {
|
||||
137 5 TS_Key = KeyBak | KEY_BREAK;
|
||||
138 5 }
|
||||
139 4 else
|
||||
140 4 {
|
||||
141 5 TS_Key = KeyBak | KEY_LONG_BREAK;
|
||||
142 5 }
|
||||
143 4 TK_State = TK_STATE_RELEASE;
|
||||
144 4 BUZZ_OFF;
|
||||
145 4 }
|
||||
146 3 }
|
||||
147 2 else if(KeyInfo.TogKeyNum == 2)
|
||||
148 2 {
|
||||
149 3 KeyBak = ((unsigned int)KeyInfo.TogKeyList[0]<<5) | (unsigned int)KeyInfo.TogKeyList[1];
|
||||
150 3 TK_State = TK_STATE_DOUBLE_KEY_PRESS;
|
||||
151 3 TS_Key = KeyBak;
|
||||
152 3 LongFlag = 0;
|
||||
153 3 TS_LongKeyTimer = TS_LONG_START_TIME;
|
||||
154 3 }
|
||||
155 2 else if(KeyInfo.TogKeyNum == 0)
|
||||
156 2 {
|
||||
157 3 if(!LongFlag)
|
||||
158 3 {
|
||||
159 4 TS_Key = KeyBak | KEY_BREAK;
|
||||
160 4 }
|
||||
161 3 else
|
||||
162 3 {
|
||||
163 4 TS_Key = KeyBak | KEY_LONG_BREAK;
|
||||
164 4 }
|
||||
165 3 TK_State = TK_STATE_RELEASE;
|
||||
166 3 BUZZ_OFF;
|
||||
167 3 }
|
||||
168 2 }
|
||||
169 1 else if(TK_State == TK_STATE_DOUBLE_KEY_PRESS)
|
||||
C51 COMPILER V9.51 KEY 03/07/2018 10:41:04 PAGE 4
|
||||
|
||||
170 1 {
|
||||
171 2 if(KeyInfo.TogKeyNum == 2)
|
||||
172 2 {
|
||||
173 3 if(KeyBak == ((unsigned int)KeyInfo.TogKeyList[0]<<5)|(unsigned int)KeyInfo.TogKeyList[1])
|
||||
174 3 {
|
||||
175 4 if(!TS_LongKeyTimer)
|
||||
176 4 {
|
||||
177 5 if(!LongFlag)
|
||||
178 5 {
|
||||
179 6 LongFlag = 1;
|
||||
180 6 TS_Key = KeyBak | KEY_LONG_START;
|
||||
181 6 }
|
||||
182 5 else
|
||||
183 5 {
|
||||
184 6 TS_Key = KeyBak | KEY_LONG;
|
||||
185 6 }
|
||||
186 5 TS_LongKeyTimer = TS_LONG_TIME;
|
||||
187 5 }
|
||||
188 4 }
|
||||
189 3 }
|
||||
190 2 else if(KeyInfo.TogKeyNum == 0)
|
||||
191 2 {
|
||||
192 3 if(!LongFlag)
|
||||
193 3 {
|
||||
194 4 TS_Key = KeyBak | KEY_BREAK;
|
||||
195 4 }
|
||||
196 3 else
|
||||
197 3 {
|
||||
198 4 TS_Key = KeyBak | KEY_LONG_BREAK;
|
||||
199 4 }
|
||||
200 3 TK_State = TK_STATE_RELEASE;
|
||||
201 3 BUZZ_OFF;
|
||||
202 3 }
|
||||
203 2 }
|
||||
204 1 }
|
||||
*** WARNING C280 IN LINE 88 OF key.c: 'i': unreferenced local variable
|
||||
205 /*********************************************************************************************************
|
||||
-************/
|
||||
206 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 407 ----
|
||||
CONSTANT SIZE = 13 ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 7 9
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = 1 ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
|
||||
+696
@@ -0,0 +1,696 @@
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE MAIN
|
||||
OBJECT MODULE PLACED IN .\hex\main.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE main.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\main
|
||||
-.lst) TABS(2) OBJECT(.\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 117 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 118 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** WARNING C329 IN LINE 119 OF TS_Lib\Includes\ts_configuration.h: single-line comment contains line-continuation
|
||||
*** 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
|
||||
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 1 TH0 = TH_VAL;
|
||||
41 1 TL0 = TL_VAL;
|
||||
42 1
|
||||
43 1 Send433_Byte();
|
||||
44 1 }
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 2
|
||||
|
||||
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 0 ,
|
||||
89 1 ,
|
||||
90 2 ,
|
||||
91 3 ,
|
||||
92 4 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 3
|
||||
|
||||
93 5 ,
|
||||
94 6 ,
|
||||
95 7 ,
|
||||
96 8 ,
|
||||
97 9 ,
|
||||
98 10 ,
|
||||
99 11 ,
|
||||
100 12 ,
|
||||
101 13 ,
|
||||
102 14 ,
|
||||
103 15 ,
|
||||
104 16 ,
|
||||
105 17 ,
|
||||
106 18 ,
|
||||
107 18 ,
|
||||
108 19 ,
|
||||
109 20 ,
|
||||
110 21 ,
|
||||
111 22 ,
|
||||
112 23 ,
|
||||
113 24 ,
|
||||
114 25 ,
|
||||
115 26 ,
|
||||
116 27 ,
|
||||
117 28 ,
|
||||
118 29 ,
|
||||
119 30 ,
|
||||
120 31 ,
|
||||
121 32 ,
|
||||
122 33 ,
|
||||
123 34 ,
|
||||
124 35 ,
|
||||
125 36 ,
|
||||
126 37 ,
|
||||
127 37 ,
|
||||
128 38 ,
|
||||
129 39 ,
|
||||
130 40 ,
|
||||
131 41 ,
|
||||
132 42 ,
|
||||
133 43 ,
|
||||
134 44 ,
|
||||
135 45 ,
|
||||
136 46 ,
|
||||
137 47 ,
|
||||
138 48 ,
|
||||
139 49 ,
|
||||
140 50 ,
|
||||
141 51 ,
|
||||
142 52 ,
|
||||
143 53 ,
|
||||
144 54 ,
|
||||
145 55 ,
|
||||
146 56 ,
|
||||
147 56 ,
|
||||
148 57 ,
|
||||
149 58 ,
|
||||
150 59 ,
|
||||
151 60 ,
|
||||
152 61 ,
|
||||
153 62 ,
|
||||
154 63 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 4
|
||||
|
||||
155 64 ,
|
||||
156 65 ,
|
||||
157 66 ,
|
||||
158 67 ,
|
||||
159 68 ,
|
||||
160 69 ,
|
||||
161 70 ,
|
||||
162 71 ,
|
||||
163 72 ,
|
||||
164 73 ,
|
||||
165 74 ,
|
||||
166 74 ,
|
||||
167 75 ,
|
||||
168 76 ,
|
||||
169 77 ,
|
||||
170 78 ,
|
||||
171 79 ,
|
||||
172 80 ,
|
||||
173 81 ,
|
||||
174 82 ,
|
||||
175 83 ,
|
||||
176 84 ,
|
||||
177 85 ,
|
||||
178 86 ,
|
||||
179 87 ,
|
||||
180 88 ,
|
||||
181 89 ,
|
||||
182 90 ,
|
||||
183 91 ,
|
||||
184 92 ,
|
||||
185 93 ,
|
||||
186 93 ,
|
||||
187 94 ,
|
||||
188 95 ,
|
||||
189 96 ,
|
||||
190 97 ,
|
||||
191 98 ,
|
||||
192 99 ,
|
||||
193 100 ,
|
||||
194 101 ,
|
||||
195 102 ,
|
||||
196 103 ,
|
||||
197 104 ,
|
||||
198 105 ,
|
||||
199 106 ,
|
||||
200 107 ,
|
||||
201 108 ,
|
||||
202 109 ,
|
||||
203 110 ,
|
||||
204 111 ,
|
||||
205 112 ,
|
||||
206 112 ,
|
||||
207 113 ,
|
||||
208 114 ,
|
||||
209 115 ,
|
||||
210 116 ,
|
||||
211 117 ,
|
||||
212 118 ,
|
||||
213 119 ,
|
||||
214 120 ,
|
||||
215 121 ,
|
||||
216 122 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 5
|
||||
|
||||
217 123 ,
|
||||
218 124 ,
|
||||
219 125 ,
|
||||
220 126 ,
|
||||
221 127 ,
|
||||
222 128 ,
|
||||
223 129 ,
|
||||
224 130 ,
|
||||
225 130 ,
|
||||
226 131 ,
|
||||
227 132 ,
|
||||
228 133 ,
|
||||
229 134 ,
|
||||
230 135 ,
|
||||
231 136 ,
|
||||
232 137 ,
|
||||
233 138 ,
|
||||
234 139 ,
|
||||
235 140 ,
|
||||
236 141 ,
|
||||
237 142 ,
|
||||
238 143 ,
|
||||
239 144 ,
|
||||
240 145 ,
|
||||
241 146 ,
|
||||
242 147 ,
|
||||
243 148 ,
|
||||
244 149 ,
|
||||
245 149 ,
|
||||
246 150 ,
|
||||
247 151 ,
|
||||
248 152 ,
|
||||
249 153 ,
|
||||
250 154 ,
|
||||
251 155 ,
|
||||
252 156 ,
|
||||
253 157 ,
|
||||
254 158 ,
|
||||
255 159 ,
|
||||
256 160 ,
|
||||
257 161 ,
|
||||
258 162 ,
|
||||
259 163 ,
|
||||
260 164 ,
|
||||
261 165 ,
|
||||
262 166 ,
|
||||
263 167 ,
|
||||
264 168 ,
|
||||
265 168 ,
|
||||
266 169 ,
|
||||
267 170 ,
|
||||
268 171 ,
|
||||
269 172 ,
|
||||
270 173 ,
|
||||
271 174 ,
|
||||
272 175 ,
|
||||
273 176 ,
|
||||
274 177 ,
|
||||
275 178 ,
|
||||
276 179 ,
|
||||
277 180 ,
|
||||
278 181 ,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 6
|
||||
|
||||
279 182 ,
|
||||
280 183 ,
|
||||
281 184 ,
|
||||
282 185 ,
|
||||
283 186 ,
|
||||
284 186 ,
|
||||
285 187 ,
|
||||
286 188 ,
|
||||
287 189 ,
|
||||
288 190 ,
|
||||
289 191 ,
|
||||
290 192 ,
|
||||
291 193 ,
|
||||
292 194 ,
|
||||
293 195 ,
|
||||
294 196 ,
|
||||
295 197 ,
|
||||
296 198 ,
|
||||
297 199 ,
|
||||
298 200 ,
|
||||
299 201 ,
|
||||
300 202 ,
|
||||
301 203 ,
|
||||
302 204 ,
|
||||
303 205 ,
|
||||
304 205 ,
|
||||
305 206 ,
|
||||
306 207 ,
|
||||
307 208 ,
|
||||
308 209 ,
|
||||
309 210 ,
|
||||
310 211 ,
|
||||
311 212 ,
|
||||
312 213 ,
|
||||
313 214 ,
|
||||
314 215 ,
|
||||
315 216 ,
|
||||
316 217 ,
|
||||
317 218 ,
|
||||
318 219 ,
|
||||
319 220 ,
|
||||
320 221 ,
|
||||
321 222 ,
|
||||
322 223 ,
|
||||
323 224 ,
|
||||
324 224 ,
|
||||
325 225 ,
|
||||
326 226 ,
|
||||
327 227 ,
|
||||
328 228 ,
|
||||
329 229 ,
|
||||
330 230 ,
|
||||
331 231 ,
|
||||
332 232 ,
|
||||
333 233 ,
|
||||
334 234 ,
|
||||
335 235 ,
|
||||
336 236 ,
|
||||
337 237 ,
|
||||
338 238 ,
|
||||
339 239 ,
|
||||
340 239,
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 7
|
||||
|
||||
341 240,
|
||||
342 240,
|
||||
343 };
|
||||
344 void main(void)
|
||||
345 {
|
||||
346 1 unsigned long int addr=0;
|
||||
347 1 unsigned char send_times = 0;
|
||||
348 1 #ifdef LVD_RST_ENABLE
|
||||
349 1 LVDCON = 0xE3; //设置LVD复位电压为2.0V
|
||||
350 1 #endif
|
||||
351 1
|
||||
352 1 #ifdef UART0_EN
|
||||
Uart0_Initial(UART0_BAUTRATE);
|
||||
#endif
|
||||
355 1
|
||||
356 1 //看门狗时钟源为IRCL
|
||||
357 1 CKCON |= ILCKE; //使能IRCL
|
||||
358 1 WDCON = WDTS(WDTS_IRCL) | WDRE(WDRE_reset); //设置看门狗时钟源为ILCKE,模式为复位模式
|
||||
359 1 WDVTHH = 0; //看门狗复位阈值高八位设置 当前值为5s
|
||||
360 1 WDVTHL = 75; //看门狗复位阈值低八位设置
|
||||
361 1 WDFLG = 0xA5;
|
||||
362 1
|
||||
363 1 EA = 1;
|
||||
364 1
|
||||
365 1 TS_init();
|
||||
366 1
|
||||
367 1 P32F = OUTPUT; //P00设置为推挽输出模式
|
||||
368 1 P32=0;
|
||||
369 1
|
||||
370 1 addr = (unsigned int)Read_32bit_UID(); //获取遥控ID
|
||||
371 1 D0 = (unsigned char)(addr >> 8);
|
||||
372 1 D1 = (unsigned char)(addr);
|
||||
373 1
|
||||
374 1 Yaokong_Data[0] = D1;
|
||||
375 1 Yaokong_Data[1] = D0;
|
||||
376 1
|
||||
377 1 TMOD = (TMOD&0xFC)|0x00; //模式选择: 定时器0,模式0。
|
||||
378 1 TH0 = TH_VAL; //高8位装初值
|
||||
379 1 TL0 = TL_VAL; //低8位装初值
|
||||
380 1
|
||||
381 1 TR0 = 0; //定时器0使能
|
||||
382 1 ET0 = 1; //定时器0中断使能
|
||||
383 1 PT0 = 0; //设置定时器0中断优先级为低优先级
|
||||
384 1
|
||||
385 1 while(1)
|
||||
386 1 {
|
||||
387 2 TS_Action();
|
||||
388 2 if(WheelSliderPosition != -1)
|
||||
389 2 {
|
||||
390 3 flagSend = 1;
|
||||
391 3 flagStart = 0;
|
||||
392 3 //当WheelSliderPosition不等于-1时, 表示滑条或圆环有触摸事件发生。WheelSliderPosition的值表示滑条或圆环
|
||||
-的位置。
|
||||
393 3 send_times = 1;
|
||||
394 3 valueSend=rf_data[ WheelSliderPosition];//0-240
|
||||
395 3 valueSend += 15;//15-255
|
||||
396 3 }
|
||||
397 2
|
||||
398 2 if(KeysFlagSN != 0)
|
||||
399 2 {
|
||||
400 3 flagSend = 1;
|
||||
401 3 flagStart = 0;
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 8
|
||||
|
||||
402 3 switch(KeysFlagSN)
|
||||
403 3 {
|
||||
404 4 case 0x0001:
|
||||
405 4 valueSend = 0x05;
|
||||
406 4 break;
|
||||
407 4 case 0x0002:
|
||||
408 4 valueSend = 0x0c;
|
||||
409 4 break;
|
||||
410 4 case 0x0004:
|
||||
411 4 valueSend = 0x0a;
|
||||
412 4 break;
|
||||
413 4 case 0x0008:
|
||||
414 4 valueSend = 0x0b;
|
||||
415 4 break;
|
||||
416 4 case 0x0010:
|
||||
417 4 valueSend = 0x09;
|
||||
418 4 break;
|
||||
419 4 case 0x0020:
|
||||
420 4 valueSend = 0x07;
|
||||
421 4 break;
|
||||
422 4 case 0x0040:
|
||||
423 4 valueSend = 0x03;
|
||||
424 4 break;
|
||||
425 4 case 0x0080:
|
||||
426 4 valueSend = 0x01;
|
||||
427 4 break;
|
||||
428 4 default:
|
||||
429 4 flagSend = 0;
|
||||
430 4 break;
|
||||
431 4 }
|
||||
432 3 }
|
||||
433 2
|
||||
434 2 if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
435 2 {
|
||||
436 3 flagStart = 1;
|
||||
437 3 }
|
||||
438 2
|
||||
439 2
|
||||
440 2
|
||||
441 2
|
||||
442 2
|
||||
443 2
|
||||
444 2 #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(长按松开) |
|
||||
| ^ | |
|
||||
| | | |
|
||||
| |----------<-----------<------------<--------------| |
|
||||
|---------------------------------------------------------------------------------------------------------
|
||||
---------------------------|
|
||||
|
||||
|---------------------------------------------------------------------------------------------------------
|
||||
---------------------------------------------------------------|
|
||||
| |
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 9
|
||||
|
||||
| 复合键:以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;
|
||||
//单按键消息
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 10
|
||||
|
||||
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;
|
||||
C51 COMPILER V9.60.7.0 MAIN 07/03/2025 11:27:46 PAGE 11
|
||||
|
||||
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
|
||||
595 2
|
||||
596 2
|
||||
597 2
|
||||
598 2
|
||||
599 2
|
||||
600 2 if(flagSend==1)//短按
|
||||
601 2 {
|
||||
602 3 flagSend = 0;
|
||||
603 3 // flagStart = 1;
|
||||
604 3 //
|
||||
605 3 // RF_send(send_times);
|
||||
606 3 TR0 = 1; //定时器0使能
|
||||
607 3 Yaokong_Data[2] = valueSend;
|
||||
608 3 }
|
||||
609 2
|
||||
610 2 }
|
||||
611 1 }
|
||||
612 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 436 ----
|
||||
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. 8 WARNING(S), 0 ERROR(S)
|
||||
+223
@@ -0,0 +1,223 @@
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE RF_SEND
|
||||
OBJECT MODULE PLACED IN .\hex\rf_send.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE rf_send.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\r
|
||||
-f_send.lst) TABS(2) OBJECT(.\hex\rf_send.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _rf_send_C_
|
||||
2 #define _rf_send_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\delay.h"
|
||||
10
|
||||
11 #include "rf_send.h"
|
||||
12
|
||||
13 sbit Pin_rf = P3^2;
|
||||
14 unsigned char D0,D1;
|
||||
15 unsigned int idata ID;
|
||||
16 unsigned char RF_Time; //用于控制RF发送间隔时间
|
||||
17
|
||||
18
|
||||
19 unsigned char Send433_Status = 0; //发送过程的状态
|
||||
20 unsigned int Send433_Time = 0; //记录433发送数据的高低电平时间
|
||||
21
|
||||
22 unsigned char Yaokong_Data[3]={0};
|
||||
23
|
||||
24 unsigned char Send433_Byte_Cont=0;//记录发送一组433数据的字节数
|
||||
25 unsigned char Send433_Bit_Cont = 0; //记录发送位
|
||||
26 unsigned char Temp=0;
|
||||
27 unsigned char Chose_Data_En=0;//使能选择一组433数据的第N个字节
|
||||
28
|
||||
29 void Send433_Byte(void) //100us执行一次
|
||||
30 {
|
||||
31 1 switch (Send433_Status)
|
||||
32 1 {
|
||||
33 2 case 0: //同步头高
|
||||
34 2 Pin_rf = 1;
|
||||
35 2 if (++Send433_Time >= 4)//高电平400us
|
||||
36 2 {
|
||||
37 3 Send433_Time = 0;
|
||||
38 3 Send433_Status = 1; //进入同步头低
|
||||
39 3 }
|
||||
40 2 break;
|
||||
41 2 case 1://同步头低电平
|
||||
42 2 Pin_rf = 0;
|
||||
43 2 if (++Send433_Time >= 120)//电平12300us
|
||||
44 2 {
|
||||
45 3 Send433_Time = 0;
|
||||
46 3 Send433_Status = 2; //进入发送24位
|
||||
47 3 }
|
||||
48 2 break;
|
||||
49 2 case 2:
|
||||
50 2
|
||||
51 2 if(!Chose_Data_En)//还没开始发送 或者上次已经发送完一个字节才使能选择
|
||||
52 2 {
|
||||
53 3 Chose_Data_En=1;
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 2
|
||||
|
||||
54 3 Temp=Yaokong_Data[Send433_Byte_Cont];
|
||||
55 3 //Send433_Byte_Cont++;
|
||||
56 3 }
|
||||
57 2
|
||||
58 2 Send433_Time++;
|
||||
59 2 if (Temp & 0x80) //1
|
||||
60 2 {
|
||||
61 3 if (Send433_Time <= 12)
|
||||
62 3 {
|
||||
63 4 Pin_rf = 1;
|
||||
64 4 }
|
||||
65 3 else if (Send433_Time >= 13)
|
||||
66 3 {
|
||||
67 4 Pin_rf = 0;
|
||||
68 4 if (Send433_Time == 16)
|
||||
69 4 {
|
||||
70 5 Send433_Time = 0;
|
||||
71 5 Temp <<= 1;
|
||||
72 5 Send433_Bit_Cont++;
|
||||
73 5 }
|
||||
74 4 }
|
||||
75 3 }
|
||||
76 2 else//0
|
||||
77 2 {
|
||||
78 3 if (Send433_Time <= 4)
|
||||
79 3 {
|
||||
80 4 Pin_rf = 1;
|
||||
81 4 }
|
||||
82 3 else if (Send433_Time >= 5)
|
||||
83 3 {
|
||||
84 4 Pin_rf = 0;
|
||||
85 4 if (Send433_Time == 16)
|
||||
86 4 {
|
||||
87 5 Send433_Time = 0;
|
||||
88 5 Temp <<= 1;
|
||||
89 5 Send433_Bit_Cont++;
|
||||
90 5 }
|
||||
91 4 }
|
||||
92 3 }
|
||||
93 2 if (Send433_Bit_Cont == 8)//发送完一字节
|
||||
94 2 {
|
||||
95 3 Send433_Bit_Cont = 0;
|
||||
96 3
|
||||
97 3 Chose_Data_En=0;//使能选择下一个字节
|
||||
98 3 if(++Send433_Byte_Cont==3)
|
||||
99 3 {
|
||||
100 4 Send433_Byte_Cont=0;
|
||||
101 4
|
||||
102 4 if(flagStart == 1)
|
||||
103 4 {
|
||||
104 5 Send433_Status = 3; //结束脉冲
|
||||
105 5 }
|
||||
106 4 else
|
||||
107 4 {
|
||||
108 5 Send433_Status = 0; //一帧数据发送完毕
|
||||
109 5 }
|
||||
110 4
|
||||
111 4 }
|
||||
112 3 }
|
||||
113 2 break;
|
||||
114 2
|
||||
115 2 case 3:
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 3
|
||||
|
||||
116 2 if (++Send433_Time <= 4)
|
||||
117 2 {
|
||||
118 3 Pin_rf = 1;
|
||||
119 3 }
|
||||
120 2 else
|
||||
121 2 {
|
||||
122 3 Pin_rf = 0;
|
||||
123 3 Send433_Time = 0;
|
||||
124 3 // flagStart = 0;
|
||||
125 3 Send433_Status = 0;
|
||||
126 3 TR0 = 0; //定时器0禁止
|
||||
127 3
|
||||
128 3 }
|
||||
129 2 break;
|
||||
130 2 default:
|
||||
131 2 break;
|
||||
132 2 }
|
||||
133 1 }
|
||||
134
|
||||
135
|
||||
136 //void RF_send(unsigned char cnt);
|
||||
137 //void send_8bit(unsigned char n);
|
||||
138
|
||||
139 ///*****************************************/
|
||||
140
|
||||
141 //void RF_send(unsigned char cnt)
|
||||
142 //{
|
||||
143 // unsigned char i;
|
||||
144
|
||||
145 // for(i=cnt;i>0;i--) //单个包发送次数
|
||||
146 // {
|
||||
147 // Pin_rf=1;
|
||||
148 // Delay_50us(8); //同步码高电平
|
||||
149 // Pin_rf=0;
|
||||
150 // Delay_ms(12); //同步码低电平
|
||||
151 // Pin_rf=1;
|
||||
152
|
||||
153 // send_8bit(D0);
|
||||
154 // send_8bit(D1);
|
||||
155 // send_8bit(valueSend);
|
||||
156 //
|
||||
157 //// if(WheelSliderPosition == -1&&KeysFlagSN == 0)
|
||||
158 //// {
|
||||
159 //// Pin_rf=1;
|
||||
160 //// Delay_50us(7);
|
||||
161 //// Pin_rf=0;
|
||||
162 //// }
|
||||
163 // }
|
||||
164 //}
|
||||
165 ////---------------------------------------------
|
||||
166 //void send_8bit(unsigned char n)
|
||||
167 //{
|
||||
168 // unsigned char i;
|
||||
169 // for(i=8;i>0;i--)
|
||||
170 // {
|
||||
171 // Pin_rf=1;
|
||||
172 // if(n&0x80)
|
||||
173 // {
|
||||
174 // Delay_50us(24);
|
||||
175 // Pin_rf=0;
|
||||
176 // Delay_50us(7);
|
||||
177 // }
|
||||
C51 COMPILER V9.60.7.0 RF_SEND 07/03/2025 11:27:50 PAGE 4
|
||||
|
||||
178 // else
|
||||
179 // {
|
||||
180 // Delay_50us(7);
|
||||
181 // Pin_rf=0;
|
||||
182 // Delay_50us(24);
|
||||
183 // }
|
||||
184 // n<<=1;
|
||||
185 // }
|
||||
186 //}
|
||||
187
|
||||
188 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 260 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = 13 ----
|
||||
IDATA SIZE = 2 ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+156
@@ -0,0 +1,156 @@
|
||||
C51 COMPILER V9.51 RTC 09/21/2017 09:48:36 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE RTC
|
||||
OBJECT MODULE PLACED IN .\hex\rtc.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Library\Sources\rtc.c ROM(COMPACT) OPTIMIZE(9,SIZE) BROWSE DEBUG OBJECTEXTE
|
||||
-ND PRINT(.\lst\rtc.lst) TABS(2) OBJECT(.\hex\rtc.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _RTC_C_
|
||||
2 #define _RTC_C_
|
||||
3 /*********************************************************************************************************
|
||||
-************/
|
||||
4 #include "ca51f_config.h"
|
||||
5 #if (IC_TYPE == IC_TYPE_CA51F2X)
|
||||
6 #include "includes\ca51f2sfr.h"
|
||||
*** WARNING C318 IN LINE 6 OF Library\Sources\rtc.c: can't open file 'includes\ca51f2sfr.h'
|
||||
7 #include "includes\ca51f2xsfr.h"
|
||||
*** WARNING C318 IN LINE 7 OF Library\Sources\rtc.c: can't open file 'includes\ca51f2xsfr.h'
|
||||
8 #include "includes\gpiodef_f2.h"
|
||||
*** WARNING C318 IN LINE 8 OF Library\Sources\rtc.c: can't open file 'includes\gpiodef_f2.h'
|
||||
9 #elif (IC_TYPE == IC_TYPE_CA51F3X)
|
||||
#include "includes\ca51f3sfr.h"
|
||||
#include "includes\ca51f3xsfr.h"
|
||||
#include "includes\gpiodef_f3.h"
|
||||
#endif
|
||||
14 #include "includes\system.h"
|
||||
15 #include "Library\includes\rtc.h"
|
||||
16 #include "Library\includes\delay.h"
|
||||
17 #include <intrins.h>
|
||||
18 /*********************************************************************************************************
|
||||
-************/
|
||||
19 /***********************************************************************************
|
||||
20 函数名: RTC_init
|
||||
21 功能说明: 初始化RTC控制寄存器
|
||||
22 输入参数: rtce RTC功能模块使能控制
|
||||
23 mse RTC毫秒中断使能控制
|
||||
24 hse RTC半秒中断使能控制
|
||||
25 返回值: 无
|
||||
26 ***********************************************************************************/
|
||||
-
|
||||
27 void RTC_init(RTCE_TypeDef rtce,MSE_TypeDef mse,HSE_TypeDef hse)
|
||||
28 {
|
||||
29 1 RTCON = (RTCON & 0x1F) | RTCE(rtce) | MSE(mse) | HSE(hse);
|
||||
*** ERROR C202 IN LINE 29 OF Library\Sources\rtc.c: 'RTCON': undefined identifier
|
||||
30 1 }
|
||||
31 #if 0
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteSecond
|
||||
功能说明: RTC写入秒值
|
||||
输入参数: second 秒值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteSecond(unsigned char second) //second = 0~59
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCS = second;
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteMinute
|
||||
C51 COMPILER V9.51 RTC 09/21/2017 09:48:36 PAGE 2
|
||||
|
||||
功能说明: RTC写入分值
|
||||
输入参数: minute 分值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteMinute(unsigned char minute) //minute = 0~59
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCM = minute;
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteHour
|
||||
功能说明: RTC写入小时
|
||||
输入参数: hour 小时值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteHour(unsigned char hour) //hour = 0~23
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCH = (RTCH&0xE0)|hour;
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_WriteWeek
|
||||
功能说明: RTC写入星期
|
||||
输入参数: week 星期值
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_WriteWeek(unsigned char week) //hour = 1~7代表星期一~星期天
|
||||
{
|
||||
RTCON |= RTCWE(1);
|
||||
RTCH = (RTCH&0x1F)|(week<<5);
|
||||
Delay_50us(1);
|
||||
RTCON &= ~RTCWE(1);
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_AlarmCfg
|
||||
功能说明: 配置RTC ALARM功能寄存器位
|
||||
输入参数: hce 小时比较使能控制
|
||||
mce 分钟比较使能控制
|
||||
sce 秒比较使能控制
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_AlarmCfg(HCE_TypeDef hce,MCE_TypeDef mce,SCE_TypeDef sce)
|
||||
{
|
||||
RTCON = (RTCON & 0xE3) | HCE(hce) | MCE(mce) | SCE(sce);
|
||||
}
|
||||
|
||||
/***********************************************************************************
|
||||
函数名: RTC_SetAlaramTime
|
||||
功能说明: 设置RTC ALARM时间
|
||||
输入参数: al_hr 闹钟小时值
|
||||
al_min 闹钟分钟值
|
||||
al_sec 闹钟秒值
|
||||
C51 COMPILER V9.51 RTC 09/21/2017 09:48:36 PAGE 3
|
||||
|
||||
返回值: 无
|
||||
***********************************************************************************/
|
||||
void RTC_SetAlaramTime(unsigned char al_hr,unsigned char al_min,unsigned char al_sec)
|
||||
{
|
||||
RTAH = al_hr;
|
||||
RTAM = al_min;
|
||||
RTAS = al_sec;
|
||||
}
|
||||
#endif
|
||||
119 /***********************************************************************************
|
||||
120 函数名: RTC_SetRTMSS
|
||||
121 功能说明: 设置毫秒中断间隔
|
||||
122 输入参数: rtmss
|
||||
123 返回值: 无
|
||||
124 ***********************************************************************************/
|
||||
125 void RTC_SetRTMSS(unsigned char rtmss)
|
||||
126 {
|
||||
127 1 RTMSS = rtmss;
|
||||
*** ERROR C202 IN LINE 127 OF Library\Sources\rtc.c: 'RTMSS': undefined identifier
|
||||
128 1 }
|
||||
129
|
||||
130 /*********************************************************************************************************
|
||||
-************/
|
||||
131 #endif
|
||||
|
||||
C51 COMPILATION COMPLETE. 3 WARNING(S), 2 ERROR(S)
|
||||
@@ -0,0 +1,55 @@
|
||||
C51 COMPILER V9.60.7.0 SYSTEM_CLOCK 07/03/2025 11:27:48 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE SYSTEM_CLOCK
|
||||
OBJECT MODULE PLACED IN .\hex\system_clock.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE Library\Sources\system_clock.c OMF2 OPTIMIZE(9,SIZE) BROWS
|
||||
-E DEBUG PRINT(.\lst\system_clock.lst) TABS(2) OBJECT(.\hex\system_clock.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _SYSTEM_CLOCK_C_
|
||||
2 #define _SYSTEM_CLOCK_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 "../../includes/system.h"
|
||||
10 #include "../../Library/includes/system_clock.h"
|
||||
11 #include <intrins.h>
|
||||
12 /*********************************************************************************************************
|
||||
-************/
|
||||
13 void Sys_Clk_Set_IRCH(void)
|
||||
14 {
|
||||
15 1 CKCON |= IHCKE;
|
||||
16 1 CKCON = (CKCON&0xFE) | CKSEL_IRCH;
|
||||
17 1 }
|
||||
18 void Sys_Clk_Set_IRCL(void)
|
||||
19 {
|
||||
20 1 CKCON |= ILCKE;
|
||||
21 1 CKCON = (CKCON&0xFE) | CKSEL_IRCL;
|
||||
22 1 }
|
||||
23 /*********************************************************************************************************
|
||||
-************/
|
||||
24 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 26 ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+1941
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,412 @@
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.51, COMPILATION OF MODULE TS_SEVICE
|
||||
OBJECT MODULE PLACED IN .\hex\ts_sevice.obj
|
||||
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE TS_Lib\Sources\ts_sevice.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG PRINT(.\lst\t
|
||||
-s_sevice.lst) TABS(2) OBJECT(.\hex\ts_sevice.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef TS_SERVICE_C
|
||||
2 #define TS_SERVICE_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 "TS_Lib\Includes\ts_def.h"
|
||||
10 #include "TS_Lib\Includes\ts_api.h"
|
||||
11 #include "TS_Lib\Includes\ts_service.h"
|
||||
12 /*********************************************************************************************************
|
||||
-************/
|
||||
13 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
14 //´¥Ãþ¹Ü½Å³õʼ»¯
|
||||
15 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
16 code unsigned char *pXSFR[]=
|
||||
17 {
|
||||
18 &P31F,
|
||||
19 &P30F,
|
||||
20 &P07F,
|
||||
21 &P06F,
|
||||
22 &P05F,
|
||||
23 &P04F,
|
||||
24 &P03F,
|
||||
25 &P02F,
|
||||
26 &P01F,
|
||||
27 &P00F,
|
||||
28 &P34F,
|
||||
29 &P33F,
|
||||
30 &P32F,
|
||||
31 };
|
||||
32 void TS_IO_init(void)
|
||||
33 {
|
||||
34 1 unsigned char i;
|
||||
35 1 unsigned char *pPinS;
|
||||
36 1 GPIO_Init(P35F,P35_CAP_SETTING);
|
||||
37 1
|
||||
38 1 for(i = 0; i < TS_Cnt; i++)
|
||||
39 1 {
|
||||
40 2 pPinS = pXSFR[TS_CH[i]];
|
||||
41 2 *pPinS = 4;
|
||||
42 2 }
|
||||
43 1 }
|
||||
44 void TS_SetChannel(unsigned char index,unsigned char ch)
|
||||
45 {
|
||||
46 1 switch(index)
|
||||
47 1 {
|
||||
48 2 case 0:
|
||||
49 2 TK0CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
50 2 break;
|
||||
51 2 case 1:
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 2
|
||||
|
||||
52 2 TK1CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
53 2 break;
|
||||
54 2 case 2:
|
||||
55 2 TK2CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
56 2 break;
|
||||
57 2 case 3:
|
||||
58 2 TK3CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
59 2 break;
|
||||
60 2 case 4:
|
||||
61 2 TK4CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
62 2 break;
|
||||
63 2 case 5:
|
||||
64 2 TK5CHS = MPOL(0)|NPOL(1)|TKPS(ch);
|
||||
65 2 break;
|
||||
66 2 }
|
||||
67 1 }
|
||||
68 void TS_ScanStart(void)
|
||||
69 {
|
||||
70 1 unsigned char i,j;
|
||||
71 1 for(i = 0; i < 6; i++)
|
||||
72 1 {
|
||||
73 2 if(TS_Index + i >= TS_Cnt)
|
||||
74 2 {
|
||||
75 3 TS_SetChannel(i,14);
|
||||
76 3 for(j = i+1; j < 6; j++)
|
||||
77 3 {
|
||||
78 4 TS_SetChannel(j,0);
|
||||
79 4 }
|
||||
80 3 break;
|
||||
81 3 }
|
||||
82 2 TS_SetChannel(i,(TS_CH[TS_Index+i])+1);
|
||||
83 2 }
|
||||
84 1 TKCON |= TKST(1);
|
||||
85 1 }
|
||||
86 unsigned char TS_GetDataArea(unsigned char ts_ch,unsigned int ts_data,int NoiseThd,bit key_pressed_flag)
|
||||
87 {
|
||||
88 1 int Delta;
|
||||
89 1 int FingerThd;
|
||||
90 1
|
||||
91 1 Delta = (int)TS_BaseLineData[ts_ch] - (int)ts_data;
|
||||
92 1 FingerThd = TSKey_FingerThd[ts_ch];
|
||||
93 1
|
||||
94 1 if(key_pressed_flag)
|
||||
95 1 {
|
||||
96 2 FingerThd = (FingerThd*9)/10;
|
||||
97 2 }
|
||||
98 1
|
||||
99 1 if(Delta >= FingerThd) return AREA_FINGER_TOUCH;
|
||||
100 1 else if(Delta > NoiseThd) return AREA_PNOISE_PLUS;
|
||||
101 1 else if(Delta >= 0) return AREA_PNOISE;
|
||||
102 1 else if(Delta >= -NoiseThd) return AREA_NNOISE;
|
||||
103 1 else return AREA_OVER_LOW;
|
||||
104 1 }
|
||||
105 unsigned char TS_AreaDeviateDetection(unsigned int cmp_data,unsigned int real_data,int range)
|
||||
106 {
|
||||
107 1 int Delta;
|
||||
108 1 Delta = (int)cmp_data - (int)real_data;
|
||||
109 1 if((Delta <= range) && (Delta >= -range))
|
||||
110 1 {
|
||||
111 2 return 1;
|
||||
112 2 }
|
||||
113 1 else
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 3
|
||||
|
||||
114 1 {
|
||||
115 2 return 0;
|
||||
116 2 }
|
||||
117 1 }
|
||||
118 void TS_BaseLineForceUpdate(void)
|
||||
119 {
|
||||
120 1 unsigned char i;
|
||||
121 1
|
||||
122 1 for(i = 0; i < TS_Cnt; i++)
|
||||
123 1 {
|
||||
124 2 TS_FirstAreaData[i] = TS_PostData[i];
|
||||
125 2 TS_BaseLineData[i] = TS_PostData[i];
|
||||
126 2 TS_AreaConfirmTimerSet(i,AREA_PNOISE);
|
||||
127 2 }
|
||||
128 1 }
|
||||
129
|
||||
130 void TS_AreaConfirmTimerSet(unsigned char ts_ch, unsigned char area)
|
||||
131 {
|
||||
132 1 TS_AreaConfirmTimer[ts_ch] = AREA_CONFIRM_TIME_TAB[area];
|
||||
133 1 }
|
||||
134 void SetWheelSliderRefCh(unsigned char Slider_Cnt)
|
||||
135 {
|
||||
136 1 unsigned char i,j;
|
||||
137 1 unsigned int MinVal;
|
||||
138 1 MinVal = 0xFFFF;
|
||||
139 1 for(i = TS_BaseCh,j=0; i < TS_BaseCh + Slider_Cnt; i++,j++)
|
||||
140 1 {
|
||||
141 2 if(TS_BaseLineData[i] < MinVal)
|
||||
142 2 {
|
||||
143 3 WheelSliderRefCh = j;
|
||||
144 3 MinVal = TS_BaseLineData[i];
|
||||
145 3 }
|
||||
146 2 }
|
||||
147 1 }
|
||||
148 #define WHEEL_SLIDER_POSITION_FILTER_COUNT 4
|
||||
149 int WheelTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
150 {
|
||||
151 1 unsigned char i;
|
||||
152 1 unsigned long int CalcTemp1;
|
||||
153 1 unsigned int CalcTemp2,CalcTemp3;
|
||||
154 1 unsigned char DeltaRate;
|
||||
155 1 int Delta;
|
||||
156 1 unsigned int MaxDelta1,MaxDelta2/*,MaxDelta3*/;
|
||||
157 1 unsigned char Maxidx1,Maxidx2/*,Maxidx3*/;
|
||||
158 1 int Position,PosOffset;
|
||||
159 1
|
||||
160 1 MaxDelta1 = MaxDelta2 = /*MaxDelta3 =*/ 0;
|
||||
161 1 for(i = 0; i < WHEEL_SLIDER0_CH_COUNT_V; i++)
|
||||
162 1 {
|
||||
163 2 if(i == WheelSliderRefCh)
|
||||
164 2 {
|
||||
165 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)TS_PostData[TS_BaseCh + WheelSlide
|
||||
-rRefCh];
|
||||
166 3 }
|
||||
167 2 else
|
||||
168 2 {
|
||||
169 3 CalcTemp1 = (unsigned long int)TS_PostData[TS_BaseCh + i] * (unsigned long int)TS_BaseLineData[TS_Base
|
||||
-Ch + WheelSliderRefCh];
|
||||
170 3 CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[TS_BaseCh + i]);
|
||||
171 3 CalcTemp3 = TS_PostData[TS_BaseCh + i] + TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - CalcTemp2;
|
||||
172 3 CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||||
173 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)CalcTemp2;
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 4
|
||||
|
||||
174 3 }
|
||||
175 2 if(Delta < 0) Delta = 0;
|
||||
176 2
|
||||
177 2
|
||||
178 2 if(Delta > MaxDelta1)
|
||||
179 2 {
|
||||
180 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
181 3 Maxidx2 = Maxidx1; MaxDelta2 = MaxDelta1;
|
||||
182 3 Maxidx1 = i; MaxDelta1 = Delta;
|
||||
183 3 }
|
||||
184 2 else if(Delta > MaxDelta2)
|
||||
185 2 {
|
||||
186 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
187 3 Maxidx2 = i; MaxDelta2 = Delta;
|
||||
188 3 }
|
||||
189 2 // else if(Delta > MaxDelta3)
|
||||
190 2 // {
|
||||
191 2 // Maxidx3 = i; MaxDelta3 = Delta;
|
||||
192 2 // }
|
||||
193 2 }
|
||||
194 1
|
||||
195 1 if((MaxDelta1 + MaxDelta2) < WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
196 1 {
|
||||
197 2 return -1;
|
||||
198 2 }
|
||||
199 1
|
||||
200 1 Delta = MaxDelta1 - (WHEEL_SLIDER0_TOUCH_THD_V>>1);
|
||||
201 1 DeltaRate = (Delta*10)/MaxDelta1;
|
||||
202 1 if(DeltaRate > 31) DeltaRate = 31;
|
||||
203 1
|
||||
204 1 CalcTemp2 = ((unsigned int)WHEEL_SLIDER0_TOUCH_THD_V*(32-DeltaRate))>>6;
|
||||
205 1
|
||||
206 1 MaxDelta1 += CalcTemp2;
|
||||
207 1 MaxDelta2 += CalcTemp2;
|
||||
208 1
|
||||
209 1 DeltaRate = ((unsigned int)MaxDelta2<<7)/MaxDelta1;
|
||||
210 1 if(WheelSliderCapRateFilter == 0)
|
||||
211 1 {
|
||||
212 2 WheelSliderCapRateFilter = DeltaRate*WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
213 2 }
|
||||
214 1 else
|
||||
215 1 {
|
||||
216 2 WheelSliderCapRateFilter -= WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
217 2 WheelSliderCapRateFilter += DeltaRate;
|
||||
218 2 }
|
||||
219 1 DeltaRate = WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
220 1 WheelSliderMaxIdx = Maxidx1;
|
||||
221 1
|
||||
222 1 {
|
||||
223 2 bit dir_flag;
|
||||
224 2 Position = Maxidx1*64;
|
||||
225 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1]) DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1];
|
||||
226 2 PosOffset = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1
|
||||
-]);
|
||||
227 2
|
||||
228 2 if((Maxidx1 == 0) && (Maxidx2 == (WHEEL_SLIDER0_CH_COUNT_V-1))) dir_flag = 0;
|
||||
229 2 else if((Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1)) && (Maxidx2 == 0)) dir_flag = 1;
|
||||
230 2 else if(Maxidx1 < Maxidx2) dir_flag = 1;
|
||||
231 2 else dir_flag = 0;
|
||||
232 2
|
||||
233 2 if(dir_flag)
|
||||
234 2 {
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 5
|
||||
|
||||
235 3 Position += PosOffset;
|
||||
236 3 }
|
||||
237 2 else
|
||||
238 2 {
|
||||
239 3 if(Position == 0)
|
||||
240 3 {
|
||||
241 4 Position = WHEEL_SLIDER0_CH_COUNT_V*64-1;
|
||||
242 4 }
|
||||
243 3 Position -= PosOffset;
|
||||
244 3 }
|
||||
245 2 }
|
||||
246 1 return Position;
|
||||
247 1 }
|
||||
248 int SliderTouchJudge(unsigned char WHEEL_SLIDER0_CH_COUNT_V,unsigned int WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
249 {
|
||||
250 1 unsigned char i;
|
||||
251 1 unsigned long int CalcTemp1;
|
||||
252 1 unsigned int CalcTemp2,CalcTemp3;
|
||||
253 1 unsigned char DeltaRate;
|
||||
254 1 int Delta;
|
||||
255 1 unsigned int MaxDelta1,MaxDelta2/*,MaxDelta3*/;
|
||||
256 1 unsigned char Maxidx1,Maxidx2/*,Maxidx3*/;
|
||||
257 1 int Position,PosOffset;
|
||||
258 1
|
||||
259 1 MaxDelta1 = MaxDelta2 = /*MaxDelta3 =*/ 0;
|
||||
260 1 for(i = 0; i < WHEEL_SLIDER0_CH_COUNT_V; i++)
|
||||
261 1 {
|
||||
262 2 if(i == WheelSliderRefCh)
|
||||
263 2 {
|
||||
264 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)TS_PostData[TS_BaseCh + WheelSlide
|
||||
-rRefCh];
|
||||
265 3 }
|
||||
266 2 else
|
||||
267 2 {
|
||||
268 3 CalcTemp1 = (unsigned long int)TS_PostData[TS_BaseCh + i] * (unsigned long int)TS_BaseLineData[TS_Base
|
||||
-Ch + WheelSliderRefCh];
|
||||
269 3 CalcTemp2 = (unsigned int)(CalcTemp1/TS_BaseLineData[TS_BaseCh + i]);
|
||||
270 3 CalcTemp3 = TS_PostData[TS_BaseCh + i] + TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - CalcTemp2;
|
||||
271 3 CalcTemp2 = (unsigned int)(CalcTemp1/CalcTemp3);
|
||||
272 3 Delta = (int)TS_BaseLineData[TS_BaseCh + WheelSliderRefCh] - (int)CalcTemp2;
|
||||
273 3 }
|
||||
274 2 if(Delta < 0) Delta = 0;
|
||||
275 2
|
||||
276 2
|
||||
277 2 if(Delta > MaxDelta1)
|
||||
278 2 {
|
||||
279 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
280 3 Maxidx2 = Maxidx1; MaxDelta2 = MaxDelta1;
|
||||
281 3 Maxidx1 = i; MaxDelta1 = Delta;
|
||||
282 3 }
|
||||
283 2 else if(Delta > MaxDelta2)
|
||||
284 2 {
|
||||
285 3 // Maxidx3 = Maxidx2; MaxDelta3 = MaxDelta2;
|
||||
286 3 Maxidx2 = i; MaxDelta2 = Delta;
|
||||
287 3 }
|
||||
288 2 // else if(Delta > MaxDelta3)
|
||||
289 2 // {
|
||||
290 2 // Maxidx3 = i; MaxDelta3 = Delta;
|
||||
291 2 // }
|
||||
292 2 }
|
||||
293 1 if(((Maxidx1 == 0)||(Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1))))
|
||||
294 1 {
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 6
|
||||
|
||||
295 2 if((MaxDelta1) < (WHEEL_SLIDER0_TOUCH_THD_V>>1))
|
||||
296 2 {
|
||||
297 3 return -1;
|
||||
298 3 }
|
||||
299 2 }
|
||||
300 1 else
|
||||
301 1 {
|
||||
302 2 if((MaxDelta1 + MaxDelta2) < WHEEL_SLIDER0_TOUCH_THD_V)
|
||||
303 2 {
|
||||
304 3 return -1;
|
||||
305 3 }
|
||||
306 2 }
|
||||
307 1
|
||||
308 1 Delta = MaxDelta1 - (WHEEL_SLIDER0_TOUCH_THD_V>>1);
|
||||
309 1 DeltaRate = (Delta*10)/MaxDelta1;
|
||||
310 1 if(DeltaRate > 31) DeltaRate = 31;
|
||||
311 1
|
||||
312 1 CalcTemp2 = ((unsigned int)WHEEL_SLIDER0_TOUCH_THD_V*(32-DeltaRate))>>6;
|
||||
313 1
|
||||
314 1 MaxDelta1 += CalcTemp2;
|
||||
315 1 MaxDelta2 += CalcTemp2;
|
||||
316 1
|
||||
317 1 DeltaRate = ((unsigned int)MaxDelta2<<7)/MaxDelta1;
|
||||
318 1 if(WheelSliderCapRateFilter == 0)
|
||||
319 1 {
|
||||
320 2 WheelSliderCapRateFilter = DeltaRate*WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
321 2 }
|
||||
322 1 else
|
||||
323 1 {
|
||||
324 2 WheelSliderCapRateFilter -= WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
325 2 WheelSliderCapRateFilter += DeltaRate;
|
||||
326 2 }
|
||||
327 1 DeltaRate = WheelSliderCapRateFilter/WHEEL_SLIDER_POSITION_FILTER_COUNT;
|
||||
328 1 WheelSliderMaxIdx = Maxidx1;
|
||||
329 1
|
||||
330 1 Position = Maxidx1*64;
|
||||
331 1 if(Maxidx1 == 0)
|
||||
332 1 {
|
||||
333 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[0])
|
||||
334 2 {
|
||||
335 3 DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[0];
|
||||
336 3 }
|
||||
337 2 Position = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[0])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[0]);
|
||||
338 2 }
|
||||
339 1 else if(Maxidx1 == (WHEEL_SLIDER0_CH_COUNT_V-1))
|
||||
340 1 {
|
||||
341 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1])
|
||||
342 2 {
|
||||
343 3 DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1];
|
||||
344 3 }
|
||||
345 2 Position -= ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1])*32)/(128-WHEEL_SLIDER0_
|
||||
-MAX_MIN_TAB[WHEEL_SLIDER0_CH_COUNT_V-1]);
|
||||
346 2 }
|
||||
347 1 else
|
||||
348 1 {
|
||||
349 2 if(DeltaRate < WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1]) DeltaRate = WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1];
|
||||
350 2 PosOffset = ((DeltaRate - WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1])*32)/(128-WHEEL_SLIDER0_MAX_MIN_TAB[Maxidx1
|
||||
-]);
|
||||
351 2 if(Maxidx1 < Maxidx2)
|
||||
352 2 {
|
||||
353 3 Position += PosOffset;
|
||||
354 3 }
|
||||
C51 COMPILER V9.51 TS_SEVICE 11/15/2019 16:16:26 PAGE 7
|
||||
|
||||
355 2 else
|
||||
356 2 {
|
||||
357 3 Position -= PosOffset;
|
||||
358 3 }
|
||||
359 2 }
|
||||
360 1 return Position;
|
||||
361 1 }
|
||||
362 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = 1853 ----
|
||||
CONSTANT SIZE = 39 ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- 45
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- 2
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
+176
@@ -0,0 +1,176 @@
|
||||
C51 COMPILER V9.60.7.0 UART 07/03/2025 11:27:49 PAGE 1
|
||||
|
||||
|
||||
C51 COMPILER V9.60.7.0, COMPILATION OF MODULE UART
|
||||
OBJECT MODULE PLACED IN .\hex\uart.obj
|
||||
COMPILER INVOKED BY: D:\Program Files\Keil_v5\C51\BIN\C51.EXE Library\Sources\uart.c OMF2 OPTIMIZE(9,SIZE) BROWSE DEBUG
|
||||
-PRINT(.\lst\uart.lst) TABS(2) OBJECT(.\hex\uart.obj)
|
||||
|
||||
line level source
|
||||
|
||||
1 #ifndef _UART_C_
|
||||
2 #define _UART_C_
|
||||
3 #include "ca51f5_config.h"
|
||||
4 #include "../../includes/ca51f5sfr.h"
|
||||
5 #include "../../includes/ca51f5xsfr.h"
|
||||
6 #include "../../includes/gpiodef_f5.h"
|
||||
7 #include "../../includes/system.h"
|
||||
8
|
||||
9 #include "../../Library/includes/uart.h"
|
||||
10 #include <intrins.h>
|
||||
11 #include <string.h>
|
||||
12 #include <stdarg.h>
|
||||
13 #include <stdlib.h>
|
||||
14 #include <stdio.h>
|
||||
15 #include <absacc.h>
|
||||
16 /*********************************************************************************************************
|
||||
-************/
|
||||
17 /*********************************************************************************************************
|
||||
-************/
|
||||
18 #ifdef UART0_EN
|
||||
/*********************************************************************************************************
|
||||
-************
|
||||
注意:以下波特率配置参数前提条件是系统时钟为16MHz,如果修改系统时钟频率,波特率配置参数须另行计算。
|
||||
**********************************************************************************************************
|
||||
-*************/
|
||||
void Uart0_Initial(unsigned long int baudrate)
|
||||
{
|
||||
code unsigned long int BR_TAB[]=
|
||||
{
|
||||
1200,
|
||||
2400,
|
||||
4800,
|
||||
9600,
|
||||
19200,
|
||||
38400,
|
||||
57600,
|
||||
115200,
|
||||
};
|
||||
code unsigned int BR_SET_TAB[][2]=
|
||||
{
|
||||
{416,31},
|
||||
{208,31},
|
||||
{104,31},
|
||||
{52,31},
|
||||
{26,31},
|
||||
{13,31},
|
||||
{10,27},
|
||||
{5,27},
|
||||
};
|
||||
unsigned int value_temp;
|
||||
unsigned char i;
|
||||
|
||||
uart0_send.head = 0;
|
||||
uart0_send.tail = 0;
|
||||
C51 COMPILER V9.60.7.0 UART 07/03/2025 11:27:49 PAGE 2
|
||||
|
||||
uart0_rev.head = 0;
|
||||
uart0_rev.tail = 0;
|
||||
uart0_tx_flag = 0;
|
||||
|
||||
GPIO_Init(P31F,P31_UART0_RX_SETTING);
|
||||
GPIO_Init(P30F,P30_UART0_TX_SETTING);
|
||||
|
||||
for(i=0;i<sizeof(BR_TAB)/4;i++)
|
||||
{
|
||||
if(baudrate == BR_TAB[i])
|
||||
{
|
||||
value_temp = 0x10000 - BR_SET_TAB[i][0];
|
||||
UDCKS = 0x80 | BR_SET_TAB[i][1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(i == sizeof(BR_TAB)/4) return; //如果所设置的波特率不在表格中,可自行添加。
|
||||
|
||||
T2CON = 0x24;
|
||||
T2CH = (unsigned char)(value_temp>>8);
|
||||
T2CL = (unsigned char)(value_temp);
|
||||
TH2 = (unsigned char)(value_temp>>8);
|
||||
TL2 = (unsigned char)(value_temp);;
|
||||
TR2 = 1;
|
||||
|
||||
S0CON = 0x50;
|
||||
ES0 = 1;
|
||||
}
|
||||
void Uart0_PutChar(unsigned char bdat)
|
||||
{
|
||||
unsigned char free_space;
|
||||
unsigned char tail_tmp;
|
||||
while(1)
|
||||
{
|
||||
tail_tmp = uart0_send.tail;
|
||||
if(uart0_send.head < tail_tmp)
|
||||
{
|
||||
free_space = tail_tmp - uart0_send.head;
|
||||
}
|
||||
else
|
||||
{
|
||||
free_space = UART0_TX_BUF_SIZE + tail_tmp - uart0_send.head;
|
||||
}
|
||||
if(free_space > 1)
|
||||
{
|
||||
ES0 = 0;
|
||||
uart0_send.head++;
|
||||
uart0_send.head %= UART0_TX_BUF_SIZE;
|
||||
uart0_tx_buf[uart0_send.head] = bdat;
|
||||
if(!uart0_tx_flag)
|
||||
{
|
||||
ES0 = 1;
|
||||
uart0_send.tail++;
|
||||
uart0_send.tail %= UART0_TX_BUF_SIZE;
|
||||
S0BUF=uart0_tx_buf[uart0_send.tail];
|
||||
uart0_tx_flag = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
ES0 = 1;
|
||||
}
|
||||
break;
|
||||
C51 COMPILER V9.60.7.0 UART 07/03/2025 11:27:49 PAGE 3
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
void UART0_RX_ISR (void)
|
||||
{
|
||||
RI0 = 0;
|
||||
uart0_rev.head++;
|
||||
uart0_rev.head %= UART0_RX_BUF_SIZE;
|
||||
uart0_rx_buf[uart0_rev.head]=S0BUF;
|
||||
}
|
||||
void UART0_TX_ISR (void)
|
||||
{
|
||||
TI0 = 0;
|
||||
if(uart0_send.head!=uart0_send.tail)
|
||||
{
|
||||
uart0_send.tail++;
|
||||
uart0_send.tail %= UART0_TX_BUF_SIZE;
|
||||
S0BUF=uart0_tx_buf[uart0_send.tail];
|
||||
}
|
||||
else
|
||||
{
|
||||
uart0_tx_flag=0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
138 /*********************************************************************************************************
|
||||
-************/
|
||||
139 #endif
|
||||
|
||||
|
||||
MODULE INFORMATION: STATIC OVERLAYABLE
|
||||
CODE SIZE = ---- ----
|
||||
CONSTANT SIZE = ---- ----
|
||||
XDATA SIZE = ---- ----
|
||||
PDATA SIZE = ---- ----
|
||||
DATA SIZE = ---- ----
|
||||
IDATA SIZE = ---- ----
|
||||
BIT SIZE = ---- ----
|
||||
EDATA SIZE = ---- ----
|
||||
HDATA SIZE = ---- ----
|
||||
XDATA CONST SIZE = ---- ----
|
||||
FAR CONST SIZE = ---- ----
|
||||
END OF MODULE INFORMATION.
|
||||
|
||||
|
||||
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|
||||
Reference in New Issue
Block a user