实现kill按键外部中断 对p10-p12的开关

This commit is contained in:
徐青宇 2023-04-10 15:48:01 +08:00
commit 9a13d65e16
39 changed files with 8020 additions and 0 deletions

39
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -0,0 +1,39 @@
{
"configurations": [
{
"name": "Target 1",
"includePath": [
"d:\\Users\\User\\Documents\\peek250kill control\\myinc",
"D:\\Keil_v5\\C51\\INC",
"d:\\Users\\User\\Documents\\peek250kill control",
"d:\\Users\\User\\Documents\\peek250kill control\\mycode"
],
"defines": [
"__C51__",
"__VSCODE_C51__",
"reentrant=",
"compact=",
"small=",
"large=",
"data=",
"idata=",
"pdata=",
"bdata=",
"xdata=",
"code=",
"bit=char",
"sbit=char",
"sfr=char",
"sfr16=int",
"sfr32=int",
"interrupt=",
"using=",
"_at_=",
"_priority_=",
"_task_="
],
"intelliSenseMode": "${default}"
}
],
"version": 4
}

8
.vscode/keil-assistant.log vendored Normal file
View File

@ -0,0 +1,8 @@
[info] Log at : 2023/4/10|15:03:01|GMT+0800
[info] Log at : 2023/4/10|15:03:11|GMT+0800
[info] Log at : 2023/4/10|15:46:14|GMT+0800
[info] Log at : 2023/4/10|15:46:58|GMT+0800

9
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,9 @@
{
"C_Cpp.errorSquiggles": "disabled",
"files.associations": {
"timer.h": "c",
"exti.h": "c",
"gpio.h": "c",
"config.h": "c"
}
}

10
.vscode/uv4.log vendored Normal file
View File

@ -0,0 +1,10 @@
Build target 'Target 1'
compiling Exti.c...
compiling GPIO.c...
compiling main.c...
compiling timer.c...
linking...
Program Size: data=18.0 xdata=0 code=2183
creating hex file from ".\Objects\kill_control"...
".\Objects\kill_control" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:00

1
.vscode/uv4.log.lock vendored Normal file
View File

@ -0,0 +1 @@
2023/4/10 15:47:04

174
Listings/Exti.lst Normal file
View File

@ -0,0 +1,174 @@
C51 COMPILER V9.60.0.0 EXTI 04/10/2023 15:47:03 PAGE 1
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE EXTI
OBJECT MODULE PLACED IN .\Objects\Exti.obj
COMPILER INVOKED BY: d:\Keil_v5\C51\BIN\C51.EXE mycode\Exti.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEN
-D PRINT(.\Listings\Exti.lst) TABS(2) OBJECT(.\Objects\Exti.obj)
line level source
1 /*---------------------------------------------------------------------*/
2 /* --- STC MCU Limited ------------------------------------------------*/
3 /* --- STC 1T Series MCU Demo Programme -------------------------------*/
4 /* --- Mobile: (86)13922805190 ----------------------------------------*/
5 /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
6 /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
7 /* --- Web: www.STCMCU.com --------------------------------------------*/
8 /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
9 /* --- QQ: 800003751 -------------------------------------------------*/
10 /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
11 /*---------------------------------------------------------------------*/
12
13 /************* 功能说明 **************
14
15 本文件为STC8系列的外中断初始化和中断程序,用户可以在这个文件中修改自己需要的中断程序.
16
17 ******************************************/
18
19 #include "Exti.h"
20
21 /************* 外部函数和变量声明 *****************/
22
23 /********************* INT0中断函数 *************************/
24 void Ext_INT0(void) interrupt INT0_VECTOR // 进中断时已经清除标志
25 {
26 1 if (kill_gpio)
27 1 {
28 2 if (KILL_time == 0)
29 2 {
30 3 power1_gpio = !power1_gpio;
31 3 power2_gpio = !power2_gpio;
32 3 power3_gpio = !power3_gpio;
33 3 }
34 2 }
35 1 else
36 1 {
37 2 KILL_time = 50;
38 2 }
39 1 }
40
41 /********************* INT1中断函数 *************************/
42 void Ext_INT1(void) interrupt INT1_VECTOR // 进中断时已经清除标志
43 {
44 1 }
45
46 /********************* INT2中断函数 *************************/
47 void Ext_INT2(void) interrupt INT2_VECTOR //
48 {
49 1 }
50
51 /********************* INT3中断函数 *************************/
52 void Ext_INT3(void) interrupt INT3_VECTOR
53 {
54 1 }
C51 COMPILER V9.60.0.0 EXTI 04/10/2023 15:47:03 PAGE 2
55
56 /********************* INT4中断函数 *************************/
57 void Ext_INT4(void) interrupt INT4_VECTOR
58 {
59 1 }
60
61 //========================================================================
62 // 函数: u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
63 // 描述: 外部中断初始化程序.
64 // 参数: INTx: 结构参数,请参考Exti.h里的定义.
65 // 返回: 成功返回0, 空操作返回1,错误返回2.
66 // 版本: V1.0, 2012-10-22
67 //========================================================================
68 u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
69 {
70 1 if (EXT > EXT_INT4)
71 1 return 1; // 空操作
72 1
73 1 if (EXT == EXT_INT0) // 外中断0
74 1 {
75 2 IE0 = 0; // 外中断0标志位
76 2 if (INTx->EXTI_Interrupt == ENABLE)
77 2 EX0 = 1; // 允许中断
78 2 else
79 2 EX0 = 0; // 禁止中断
80 2 if (INTx->EXTI_Priority > Priority_3)
81 2 return 2; // 错误
82 2 INT0_Priority(INTx->EXTI_Priority); // 指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Pri
-ority_3
83 2 if (INTx->EXTI_Mode == EXT_MODE_Fall)
84 2 IT0 = 1; // 下降沿中断
85 2 else
86 2 IT0 = 0; // 上升,下降沿中断
87 2 return 0; // 成功
88 2 }
89 1
90 1 if (EXT == EXT_INT1) // 外中断1
91 1 {
92 2 IE1 = 0; // 外中断1标志位
93 2 if (INTx->EXTI_Interrupt == ENABLE)
94 2 EX1 = 1; // 允许中断
95 2 else
96 2 EX1 = 0; // 禁止中断
97 2 if (INTx->EXTI_Priority > Priority_3)
98 2 return 2; // 错误
99 2 INT1_Priority(INTx->EXTI_Priority); // 指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Pri
-ority_3
100 2 if (INTx->EXTI_Mode == EXT_MODE_Fall)
101 2 IT1 = 1; // 下降沿中断
102 2 else
103 2 IT1 = 0; // 上升,下降沿中断
104 2 return 0; // 成功
105 2 }
106 1
107 1 if (EXT == EXT_INT2) // 外中断2, 固定为下降沿低优先级中断
108 1 {
109 2 if (INTx->EXTI_Interrupt == ENABLE)
110 2 INT_CLKO |= (1 << 4); // 允许中断
111 2 else
112 2 INT_CLKO &= ~(1 << 4); // 禁止中断
113 2 return 0; // 成功
114 2 }
C51 COMPILER V9.60.0.0 EXTI 04/10/2023 15:47:03 PAGE 3
115 1
116 1 if (EXT == EXT_INT3) // 外中断3, 固定为下降沿低优先级中断
117 1 {
118 2 if (INTx->EXTI_Interrupt == ENABLE)
119 2 INT_CLKO |= (1 << 5); // 允许中断
120 2 else
121 2 INT_CLKO &= ~(1 << 5); // 禁止中断
122 2 return 0; // 成功
123 2 }
124 1
125 1 if (EXT == EXT_INT4) // 外中断4, 固定为下降沿低优先级中断
126 1 {
127 2 if (INTx->EXTI_Interrupt == ENABLE)
128 2 INT_CLKO |= (1 << 6); // 允许中断
129 2 else
130 2 INT_CLKO &= ~(1 << 6); // 禁止中断
131 2 return 0; // 成功
132 2 }
133 1 return 2; // 失败
134 1 }
135 void Exti_config(void)
136 {
137 1 EXTI_InitTypeDef Exti_InitStructure; // 结构定义
138 1
139 1 Exti_InitStructure.EXTI_Interrupt = ENABLE; // 中断使能, ENABLE或DISABLE
140 1 Exti_InitStructure.EXTI_Mode = EXT_MODE_RiseFall; // 中断模式, EXT_MODE_RiseFall,EXT_MODE_Fall
141 1 Exti_InitStructure.EXTI_Priority = Priority_0; // 指定中断优先级(低到高) Priority_0,Priority_1,Prio
-rity_2,Priority_3
142 1 Ext_Inilize(EXT_INT0, &Exti_InitStructure); // 初始化
143 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 340 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 3
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

169
Listings/GPIO.lst Normal file
View File

@ -0,0 +1,169 @@
C51 COMPILER V9.60.0.0 GPIO 04/10/2023 15:47:03 PAGE 1
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE GPIO
OBJECT MODULE PLACED IN .\Objects\GPIO.obj
COMPILER INVOKED BY: d:\Keil_v5\C51\BIN\C51.EXE mycode\GPIO.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEN
-D PRINT(.\Listings\GPIO.lst) TABS(2) OBJECT(.\Objects\GPIO.obj)
line level source
1 /*---------------------------------------------------------------------*/
2 /* --- STC MCU Limited ------------------------------------------------*/
3 /* --- STC 1T Series MCU Demo Programme -------------------------------*/
4 /* --- Mobile: (86)13922805190 ----------------------------------------*/
5 /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
6 /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
7 /* --- Web: www.STCMCU.com --------------------------------------------*/
8 /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
9 /* --- QQ: 800003751 -------------------------------------------------*/
10 /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
11 /*---------------------------------------------------------------------*/
12
13 /*************** 功能说明 ****************
14
15 本文件为STC8系列的端口初始化程序,用户几乎可以不修改这个程序.
16
17 ******************************************/
18
19 #include "GPIO.h"
20
21 //========================================================================
22 // 函数: u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
23 // 描述: 初始化IO口.
24 // 参数: GPIOx: 结构参数,请参考timer.h里的定义.
25 // 返回: 成功返回0, 空操作返回1,错误返回2.
26 // 版本: V1.0, 2012-10-22
27 //========================================================================
28 u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
29 {
30 1 if (GPIO > GPIO_P7)
31 1 return 1; // 空操作
32 1 if (GPIOx->Mode > GPIO_OUT_PP)
33 1 return 2; // 错误
34 1 if (GPIO == GPIO_P0)
35 1 {
36 2 if (GPIOx->Mode == GPIO_PullUp)
37 2 P0M1 &= ~GPIOx->Pin, P0M0 &= ~GPIOx->Pin; // 上拉准双向口
38 2 if (GPIOx->Mode == GPIO_HighZ)
39 2 P0M1 |= GPIOx->Pin, P0M0 &= ~GPIOx->Pin; // 浮空输入
40 2 if (GPIOx->Mode == GPIO_OUT_OD)
41 2 P0M1 |= GPIOx->Pin, P0M0 |= GPIOx->Pin; // 开漏输出
42 2 if (GPIOx->Mode == GPIO_OUT_PP)
43 2 P0M1 &= ~GPIOx->Pin, P0M0 |= GPIOx->Pin; // 推挽输出
44 2 }
45 1 if (GPIO == GPIO_P1)
46 1 {
47 2 if (GPIOx->Mode == GPIO_PullUp)
48 2 P1M1 &= ~GPIOx->Pin, P1M0 &= ~GPIOx->Pin; // 上拉准双向口
49 2 if (GPIOx->Mode == GPIO_HighZ)
50 2 P1M1 |= GPIOx->Pin, P1M0 &= ~GPIOx->Pin; // 浮空输入
51 2 if (GPIOx->Mode == GPIO_OUT_OD)
52 2 P1M1 |= GPIOx->Pin, P1M0 |= GPIOx->Pin; // 开漏输出
53 2 if (GPIOx->Mode == GPIO_OUT_PP)
54 2 P1M1 &= ~GPIOx->Pin, P1M0 |= GPIOx->Pin; // 推挽输出
C51 COMPILER V9.60.0.0 GPIO 04/10/2023 15:47:03 PAGE 2
55 2 }
56 1 if (GPIO == GPIO_P2)
57 1 {
58 2 if (GPIOx->Mode == GPIO_PullUp)
59 2 P2M1 &= ~GPIOx->Pin, P2M0 &= ~GPIOx->Pin; // 上拉准双向口
60 2 if (GPIOx->Mode == GPIO_HighZ)
61 2 P2M1 |= GPIOx->Pin, P2M0 &= ~GPIOx->Pin; // 浮空输入
62 2 if (GPIOx->Mode == GPIO_OUT_OD)
63 2 P2M1 |= GPIOx->Pin, P2M0 |= GPIOx->Pin; // 开漏输出
64 2 if (GPIOx->Mode == GPIO_OUT_PP)
65 2 P2M1 &= ~GPIOx->Pin, P2M0 |= GPIOx->Pin; // 推挽输出
66 2 }
67 1 if (GPIO == GPIO_P3)
68 1 {
69 2 if (GPIOx->Mode == GPIO_PullUp)
70 2 P3M1 &= ~GPIOx->Pin, P3M0 &= ~GPIOx->Pin; // 上拉准双向口
71 2 if (GPIOx->Mode == GPIO_HighZ)
72 2 P3M1 |= GPIOx->Pin, P3M0 &= ~GPIOx->Pin; // 浮空输入
73 2 if (GPIOx->Mode == GPIO_OUT_OD)
74 2 P3M1 |= GPIOx->Pin, P3M0 |= GPIOx->Pin; // 开漏输出
75 2 if (GPIOx->Mode == GPIO_OUT_PP)
76 2 P3M1 &= ~GPIOx->Pin, P3M0 |= GPIOx->Pin; // 推挽输出
77 2 }
78 1 if (GPIO == GPIO_P4)
79 1 {
80 2 if (GPIOx->Mode == GPIO_PullUp)
81 2 P4M1 &= ~GPIOx->Pin, P4M0 &= ~GPIOx->Pin; // 上拉准双向口
82 2 if (GPIOx->Mode == GPIO_HighZ)
83 2 P4M1 |= GPIOx->Pin, P4M0 &= ~GPIOx->Pin; // 浮空输入
84 2 if (GPIOx->Mode == GPIO_OUT_OD)
85 2 P4M1 |= GPIOx->Pin, P4M0 |= GPIOx->Pin; // 开漏输出
86 2 if (GPIOx->Mode == GPIO_OUT_PP)
87 2 P4M1 &= ~GPIOx->Pin, P4M0 |= GPIOx->Pin; // 推挽输出
88 2 }
89 1 if (GPIO == GPIO_P5)
90 1 {
91 2 if (GPIOx->Mode == GPIO_PullUp)
92 2 P5M1 &= ~GPIOx->Pin, P5M0 &= ~GPIOx->Pin; // 上拉准双向口
93 2 if (GPIOx->Mode == GPIO_HighZ)
94 2 P5M1 |= GPIOx->Pin, P5M0 &= ~GPIOx->Pin; // 浮空输入
95 2 if (GPIOx->Mode == GPIO_OUT_OD)
96 2 P5M1 |= GPIOx->Pin, P5M0 |= GPIOx->Pin; // 开漏输出
97 2 if (GPIOx->Mode == GPIO_OUT_PP)
98 2 P5M1 &= ~GPIOx->Pin, P5M0 |= GPIOx->Pin; // 推挽输出
99 2 }
100 1 if (GPIO == GPIO_P6)
101 1 {
102 2 if (GPIOx->Mode == GPIO_PullUp)
103 2 P6M1 &= ~GPIOx->Pin, P6M0 &= ~GPIOx->Pin; // 上拉准双向口
104 2 if (GPIOx->Mode == GPIO_HighZ)
105 2 P6M1 |= GPIOx->Pin, P6M0 &= ~GPIOx->Pin; // 浮空输入
106 2 if (GPIOx->Mode == GPIO_OUT_OD)
107 2 P6M1 |= GPIOx->Pin, P6M0 |= GPIOx->Pin; // 开漏输出
108 2 if (GPIOx->Mode == GPIO_OUT_PP)
109 2 P6M1 &= ~GPIOx->Pin, P6M0 |= GPIOx->Pin; // 推挽输出
110 2 }
111 1 if (GPIO == GPIO_P7)
112 1 {
113 2 if (GPIOx->Mode == GPIO_PullUp)
114 2 P7M1 &= ~GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // 上拉准双向口
115 2 if (GPIOx->Mode == GPIO_HighZ)
116 2 P7M1 |= GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // 浮空输入
C51 COMPILER V9.60.0.0 GPIO 04/10/2023 15:47:03 PAGE 3
117 2 if (GPIOx->Mode == GPIO_OUT_OD)
118 2 P7M1 |= GPIOx->Pin, P7M0 |= GPIOx->Pin; // 开漏输出
119 2 if (GPIOx->Mode == GPIO_OUT_PP)
120 2 P7M1 &= ~GPIOx->Pin, P7M0 |= GPIOx->Pin; // 推挽输出
121 2 }
122 1 return 0; // 成功
123 1 }
124 void GPIO_config(void)
125 {
126 1 GPIO_InitTypeDef GPIO_InitStructure; // 结构定义
127 1
128 1 GPIO_InitStructure.Pin = GPIO_Pin_2; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_
-Pin_7, 或操作
129 1 GPIO_InitStructure.Mode = GPIO_PullUp; // 指定IO的输入或输出方式,GPIO_PullUp,G
-PIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
130 1 GPIO_Inilize(GPIO_P3, &GPIO_InitStructure); // 初始化
131 1 GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_
-Pin_7, 或操作
132 1 GPIO_InitStructure.Mode = GPIO_OUT_PP; // 指定IO的输入或输出方式,GPIO_PullUp,G
-PIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
133 1 GPIO_Inilize(GPIO_P1, &GPIO_InitStructure); // 初始化
134 1 power1_gpio = 0;
135 1 power2_gpio = 0;
136 1 power3_gpio = 0;
137 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 665 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- 2
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

253
Listings/STARTUP.lst Normal file
View File

@ -0,0 +1,253 @@
A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 PAGE 1
MACRO ASSEMBLER A51 V8.2.7.0
OBJECT MODULE PLACED IN .\Objects\STARTUP.obj
ASSEMBLER INVOKED BY: d:\Keil_v5\C51\BIN\A51.EXE STARTUP.A51 SET(SMALL) DEBUG PRINT(.\Listings\STARTUP.lst) OBJECT(.\Obj
ects\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 04/10/2023 14:45:02 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 04/10/2023 14:45:02 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 04/10/2023 14:45:02 PAGE 4
190
195 ;</h>
0009 020000 F 196 LJMP ?C_START
197
198 END
A51 MACRO ASSEMBLER STARTUP 04/10/2023 14:45:02 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)

707
Listings/kill_control.m51 Normal file
View File

@ -0,0 +1,707 @@
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 1
BL51 BANKED LINKER/LOCATER V6.22.2.0, INVOKED BY:
D:\KEIL_V5\C51\BIN\BL51.EXE .\Objects\STARTUP.obj, .\Objects\Exti.obj, .\Objects\GPIO.obj, .\Objects\main.obj, .\Objects
>> \timer.obj TO .\Objects\kill_control PRINT (.\Listings\kill_control.m51) RAMSIZE (256)
MEMORY MODEL: SMALL
INPUT MODULES INCLUDED:
.\Objects\STARTUP.obj (?C_STARTUP)
.\Objects\Exti.obj (EXTI)
.\Objects\GPIO.obj (GPIO)
.\Objects\main.obj (MAIN)
.\Objects\timer.obj (TIMER)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C_INIT)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDPTR)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?CLDOPTR)
D:\KEIL_V5\C51\LIB\C51S.LIB (?C?ILDOPTR)
LINK MAP OF MODULE: .\Objects\kill_control (?C_STARTUP)
TYPE BASE LENGTH RELOCATION SEGMENT NAME
-----------------------------------------------------
* * * * * * * D A T A M E M O R Y * * * * * * *
REG 0000H 0008H ABSOLUTE "REG BANK 0"
DATA 0008H 0008H UNIT _DATA_GROUP_
DATA 0010H 0001H UNIT ?DT?TIMER
IDATA 0011H 0001H UNIT ?STACK
* * * * * * * C O D E M E M O R Y * * * * * * *
CODE 0000H 0003H ABSOLUTE
CODE 0003H 0003H ABSOLUTE
CODE 0006H 0004H UNIT ?C_INITSEG
CODE 000AH 0001H UNIT ?PR?EXT_INT1?EXTI
CODE 000BH 0003H ABSOLUTE
CODE 000EH 0001H UNIT ?PR?EXT_INT2?EXTI
CODE 000FH 0001H UNIT ?PR?EXT_INT3?EXTI
CODE 0010H 0001H UNIT ?PR?EXT_INT4?EXTI
CODE 0011H 0001H UNIT ?PR?TIMER1_INT?TIMER
CODE 0012H 0001H UNIT ?PR?TIMER2_INT?TIMER
CODE 0013H 0003H ABSOLUTE
CODE 0016H 0001H UNIT ?PR?TIMER3_INT?TIMER
CODE 0017H 0001H UNIT ?PR?TIMER4_INT?TIMER
0018H 0003H *** GAP ***
CODE 001BH 0003H ABSOLUTE
CODE 001EH 0022H UNIT ?PR?GPIO_CONFIG?GPIO
CODE 0040H 0011H UNIT ?PR?EXTI_CONFIG?EXTI
0051H 0002H *** GAP ***
CODE 0053H 0003H ABSOLUTE
0056H 0005H *** GAP ***
CODE 005BH 0003H ABSOLUTE
005EH 0005H *** GAP ***
CODE 0063H 0003H ABSOLUTE
CODE 0066H 0017H UNIT ?PR?EXT_INT0?EXTI
007DH 0006H *** GAP ***
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 2
CODE 0083H 0003H ABSOLUTE
CODE 0086H 000DH UNIT ?PR?MAIN?MAIN
0093H 0008H *** GAP ***
CODE 009BH 0003H ABSOLUTE
009EH 0005H *** GAP ***
CODE 00A3H 0003H ABSOLUTE
CODE 00A6H 0331H UNIT ?PR?_TIMER_INILIZE?TIMER
CODE 03D7H 0277H UNIT ?PR?_GPIO_INILIZE?GPIO
CODE 064EH 0128H UNIT ?PR?_EXT_INILIZE?EXTI
CODE 0776H 008CH UNIT ?C_C51STARTUP
CODE 0802H 007EH UNIT ?C?LIB_CODE
CODE 0880H 001EH UNIT ?PR?TIMER_CONFIG?TIMER
CODE 089EH 000BH UNIT ?PR?TIMER0_INT?TIMER
OVERLAY MAP OF MODULE: .\Objects\kill_control (?C_STARTUP)
SEGMENT DATA_GROUP
+--> CALLED SEGMENT START LENGTH
------------------------------------------------
?C_C51STARTUP ----- -----
+--> ?PR?MAIN?MAIN
+--> ?C_INITSEG
?PR?MAIN?MAIN ----- -----
+--> ?PR?GPIO_CONFIG?GPIO
+--> ?PR?EXTI_CONFIG?EXTI
+--> ?PR?TIMER_CONFIG?TIMER
?PR?GPIO_CONFIG?GPIO 0008H 0002H
+--> ?PR?_GPIO_INILIZE?GPIO
?PR?EXTI_CONFIG?EXTI 0008H 0003H
+--> ?PR?_EXT_INILIZE?EXTI
?PR?TIMER_CONFIG?TIMER 0008H 0008H
+--> ?PR?_TIMER_INILIZE?TIMER
SYMBOL TABLE OF MODULE: .\Objects\kill_control (?C_STARTUP)
VALUE TYPE NAME
----------------------------------
------- MODULE ?C_STARTUP
C:0776H SEGMENT ?C_C51STARTUP
I:0011H SEGMENT ?STACK
C:0000H PUBLIC ?C_STARTUP
D:00E0H SYMBOL ACC
D:00F0H SYMBOL B
D:0083H SYMBOL DPH
D:0082H SYMBOL DPL
N:0000H SYMBOL IBPSTACK
N:0100H SYMBOL IBPSTACKTOP
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 3
N:0080H SYMBOL IDATALEN
C:0779H SYMBOL IDATALOOP
N:0000H SYMBOL PBPSTACK
N:0100H SYMBOL PBPSTACKTOP
N:0000H SYMBOL PDATALEN
N:0000H SYMBOL PDATASTART
N:0000H SYMBOL PPAGE
N:0000H SYMBOL PPAGEENABLE
D:00A0H SYMBOL PPAGE_SFR
D:0081H SYMBOL SP
C:0776H SYMBOL STARTUP1
N:0000H SYMBOL XBPSTACK
N:0000H SYMBOL XBPSTACKTOP
N:0000H SYMBOL XDATALEN
N:0000H SYMBOL XDATASTART
C:0000H LINE# 126
C:0776H LINE# 133
C:0778H LINE# 134
C:0779H LINE# 135
C:077AH LINE# 136
C:077CH LINE# 185
C:077FH LINE# 196
------- ENDMOD ?C_STARTUP
------- MODULE EXTI
C:0000H SYMBOL _ICE_DUMMY_
D:0080H PUBLIC P0
D:0090H PUBLIC P1
D:00A0H PUBLIC P2
D:00B0H PUBLIC P3
D:00C0H PUBLIC P4
D:00C8H PUBLIC P5
D:00E8H PUBLIC P6
D:00F8H PUBLIC P7
D:00A8H PUBLIC IE
D:00B8H PUBLIC IP
D:00D8H PUBLIC CCON
C:0066H PUBLIC Ext_INT0
C:000AH PUBLIC Ext_INT1
C:000EH PUBLIC Ext_INT2
B:0090H.0 PUBLIC P10
C:000FH PUBLIC Ext_INT3
B:0090H.1 PUBLIC P11
C:0010H PUBLIC Ext_INT4
B:0090H.2 PUBLIC P12
D:0098H PUBLIC SCON
B:00B0H.2 PUBLIC P32
D:0088H PUBLIC TCON
B:0088H.1 PUBLIC IE0
B:0088H.3 PUBLIC IE1
D:00F0H PUBLIC B
D:00E0H PUBLIC ACC
B:00A8H.0 PUBLIC EX0
B:0088H.0 PUBLIC IT0
B:00A8H.2 PUBLIC EX1
B:0088H.2 PUBLIC IT1
B:00B8H.0 PUBLIC PX0
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 4
B:00B8H.2 PUBLIC PX1
D:00B7H PUBLIC IPH
C:064EH PUBLIC _Ext_Inilize
C:0040H PUBLIC Exti_config
D:008FH PUBLIC INT_CLKO
D:00D0H PUBLIC PSW
------- PROC EXT_INT0
C:0066H LINE# 24
C:0068H LINE# 26
C:006BH LINE# 27
C:006BH LINE# 28
C:006FH LINE# 29
C:006FH LINE# 30
C:0071H LINE# 31
C:0073H LINE# 32
C:0075H LINE# 33
C:0075H LINE# 34
C:0077H LINE# 36
C:0077H LINE# 37
C:007AH LINE# 38
C:007AH LINE# 39
------- ENDPROC EXT_INT0
------- PROC EXT_INT1
C:000AH LINE# 42
C:000AH LINE# 44
------- ENDPROC EXT_INT1
------- PROC EXT_INT2
C:000EH LINE# 47
C:000EH LINE# 49
------- ENDPROC EXT_INT2
------- PROC EXT_INT3
C:000FH LINE# 52
C:000FH LINE# 54
------- ENDPROC EXT_INT3
------- PROC EXT_INT4
C:0010H LINE# 57
C:0010H LINE# 59
------- ENDPROC EXT_INT4
------- PROC _EXT_INILIZE
D:0007H SYMBOL EXT
D:0001H SYMBOL INTx
C:064EH LINE# 68
C:064EH LINE# 69
C:064EH LINE# 70
C:0658H LINE# 71
C:065BH LINE# 73
C:065EH LINE# 74
C:065EH LINE# 75
C:0660H LINE# 76
C:066AH LINE# 77
C:066EH LINE# 79
C:0670H LINE# 80
C:0680H LINE# 81
C:0683H LINE# 82
C:06AFH LINE# 83
C:06B6H LINE# 84
C:06BAH LINE# 86
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 5
C:06BCH LINE# 87
C:06BFH LINE# 88
C:06BFH LINE# 90
C:06C4H LINE# 91
C:06C4H LINE# 92
C:06C6H LINE# 93
C:06D0H LINE# 94
C:06D4H LINE# 96
C:06D6H LINE# 97
C:06E6H LINE# 98
C:06E9H LINE# 99
C:0715H LINE# 100
C:071CH LINE# 101
C:0720H LINE# 103
C:0722H LINE# 104
C:0725H LINE# 105
C:0725H LINE# 107
C:072AH LINE# 108
C:072AH LINE# 109
C:0734H LINE# 110
C:0739H LINE# 112
C:073CH LINE# 113
C:073FH LINE# 114
C:073FH LINE# 116
C:0744H LINE# 117
C:0744H LINE# 118
C:074EH LINE# 119
C:0753H LINE# 121
C:0756H LINE# 122
C:0759H LINE# 123
C:0759H LINE# 125
C:075EH LINE# 126
C:075EH LINE# 127
C:0768H LINE# 128
C:076DH LINE# 130
C:0770H LINE# 131
C:0773H LINE# 132
C:0773H LINE# 133
C:0775H LINE# 134
------- ENDPROC _EXT_INILIZE
------- PROC EXTI_CONFIG
------- DO
D:0008H SYMBOL Exti_InitStructure
------- ENDDO
C:0040H LINE# 135
C:0040H LINE# 136
C:0040H LINE# 139
C:0043H LINE# 140
C:0046H LINE# 141
C:0048H LINE# 142
------- ENDPROC EXTI_CONFIG
------- ENDMOD EXTI
------- MODULE GPIO
C:0000H SYMBOL _ICE_DUMMY_
D:0093H PUBLIC P0M1
D:0092H PUBLIC P1M0
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 6
D:0096H PUBLIC P2M0
D:0091H PUBLIC P1M1
D:0080H PUBLIC P0
D:00B2H PUBLIC P3M0
D:0095H PUBLIC P2M1
D:0090H PUBLIC P1
D:00B4H PUBLIC P4M0
D:00B1H PUBLIC P3M1
D:00A0H PUBLIC P2
D:00CAH PUBLIC P5M0
D:00B3H PUBLIC P4M1
D:00B0H PUBLIC P3
D:00CCH PUBLIC P6M0
D:00C9H PUBLIC P5M1
D:00C0H PUBLIC P4
D:00E2H PUBLIC P7M0
D:00CBH PUBLIC P6M1
D:00C8H PUBLIC P5
D:00E8H PUBLIC P6
D:00E1H PUBLIC P7M1
D:00F8H PUBLIC P7
C:001EH PUBLIC GPIO_config
D:00A8H PUBLIC IE
D:00B8H PUBLIC IP
D:00D8H PUBLIC CCON
B:0090H.0 PUBLIC P10
B:0090H.1 PUBLIC P11
B:0090H.2 PUBLIC P12
D:0098H PUBLIC SCON
D:0088H PUBLIC TCON
D:00F0H PUBLIC B
D:00E0H PUBLIC ACC
C:03D7H PUBLIC _GPIO_Inilize
D:00D0H PUBLIC PSW
D:0094H PUBLIC P0M0
------- PROC _GPIO_INILIZE
D:0007H SYMBOL GPIO
D:0001H SYMBOL GPIOx
C:03D7H LINE# 28
C:03D7H LINE# 29
C:03D7H LINE# 30
C:03E1H LINE# 31
C:03E4H LINE# 32
C:03F1H LINE# 33
C:03F4H LINE# 34
C:03F7H LINE# 35
C:03F7H LINE# 36
C:03FAH LINE# 37
C:0405H LINE# 38
C:040CH LINE# 39
C:0417H LINE# 40
C:041FH LINE# 41
C:0429H LINE# 42
C:042EH LINE# 43
C:043BH LINE# 44
C:043BH LINE# 45
C:0440H LINE# 46
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 7
C:0440H LINE# 47
C:0446H LINE# 48
C:0451H LINE# 49
C:0456H LINE# 50
C:0461H LINE# 51
C:0468H LINE# 52
C:0472H LINE# 53
C:0479H LINE# 54
C:0486H LINE# 55
C:0486H LINE# 56
C:048BH LINE# 57
C:048BH LINE# 58
C:0491H LINE# 59
C:049CH LINE# 60
C:04A1H LINE# 61
C:04ACH LINE# 62
C:04B3H LINE# 63
C:04BDH LINE# 64
C:04C4H LINE# 65
C:04D1H LINE# 66
C:04D1H LINE# 67
C:04D6H LINE# 68
C:04D6H LINE# 69
C:04DCH LINE# 70
C:04E7H LINE# 71
C:04ECH LINE# 72
C:04F7H LINE# 73
C:04FEH LINE# 74
C:0508H LINE# 75
C:050FH LINE# 76
C:051CH LINE# 77
C:051CH LINE# 78
C:0521H LINE# 79
C:0521H LINE# 80
C:0527H LINE# 81
C:0532H LINE# 82
C:0537H LINE# 83
C:0542H LINE# 84
C:0549H LINE# 85
C:0553H LINE# 86
C:055AH LINE# 87
C:0567H LINE# 88
C:0567H LINE# 89
C:056CH LINE# 90
C:056CH LINE# 91
C:0572H LINE# 92
C:057DH LINE# 93
C:0582H LINE# 94
C:058DH LINE# 95
C:0594H LINE# 96
C:059EH LINE# 97
C:05A5H LINE# 98
C:05B2H LINE# 99
C:05B2H LINE# 100
C:05B7H LINE# 101
C:05B7H LINE# 102
C:05BDH LINE# 103
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 8
C:05C8H LINE# 104
C:05CDH LINE# 105
C:05D8H LINE# 106
C:05DFH LINE# 107
C:05E9H LINE# 108
C:05F0H LINE# 109
C:05FDH LINE# 110
C:05FDH LINE# 111
C:0602H LINE# 112
C:0602H LINE# 113
C:060AH LINE# 114
C:0615H LINE# 115
C:061BH LINE# 116
C:0626H LINE# 117
C:062DH LINE# 118
C:0637H LINE# 119
C:063EH LINE# 120
C:064BH LINE# 121
C:064BH LINE# 122
C:064DH LINE# 123
------- ENDPROC _GPIO_INILIZE
------- PROC GPIO_CONFIG
------- DO
D:0008H SYMBOL GPIO_InitStructure
------- ENDDO
C:001EH LINE# 124
C:001EH LINE# 125
C:001EH LINE# 128
C:0021H LINE# 129
C:0024H LINE# 130
C:002EH LINE# 131
C:0031H LINE# 132
C:0034H LINE# 133
C:0039H LINE# 134
C:003BH LINE# 135
C:003DH LINE# 136
C:003FH LINE# 137
------- ENDPROC GPIO_CONFIG
------- ENDMOD GPIO
------- MODULE MAIN
C:0000H SYMBOL _ICE_DUMMY_
D:0080H PUBLIC P0
D:0090H PUBLIC P1
D:00A0H PUBLIC P2
D:00B0H PUBLIC P3
D:00C0H PUBLIC P4
D:00C8H PUBLIC P5
B:00A8H.7 PUBLIC EA
D:00E8H PUBLIC P6
D:00F8H PUBLIC P7
D:00A8H PUBLIC IE
D:00B8H PUBLIC IP
D:00D8H PUBLIC CCON
C:0086H PUBLIC main
D:0098H PUBLIC SCON
D:0088H PUBLIC TCON
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 9
D:00F0H PUBLIC B
D:00E0H PUBLIC ACC
D:00D0H PUBLIC PSW
------- PROC MAIN
C:0086H LINE# 19
C:0086H LINE# 20
C:0086H LINE# 21
C:0089H LINE# 22
C:008CH LINE# 23
C:008FH LINE# 24
C:0091H LINE# 25
C:0091H LINE# 26
C:0091H LINE# 27
------- ENDPROC MAIN
------- ENDMOD MAIN
------- MODULE TIMER
C:0000H SYMBOL _ICE_DUMMY_
D:0080H PUBLIC P0
D:0090H PUBLIC P1
C:089EH PUBLIC timer0_int
D:00A0H PUBLIC P2
C:0011H PUBLIC timer1_int
D:00B0H PUBLIC P3
C:0012H PUBLIC timer2_int
D:00C0H PUBLIC P4
C:0016H PUBLIC timer3_int
D:00C8H PUBLIC P5
C:0017H PUBLIC timer4_int
D:00E8H PUBLIC P6
D:00F8H PUBLIC P7
D:00A8H PUBLIC IE
D:00B8H PUBLIC IP
D:00D8H PUBLIC CCON
D:0098H PUBLIC SCON
D:0089H PUBLIC TMOD
D:0088H PUBLIC TCON
C:00A6H PUBLIC _Timer_Inilize
D:0010H PUBLIC KILL_time
D:00AFH PUBLIC IE2
D:00F0H PUBLIC B
D:008EH PUBLIC AUXR
D:00E0H PUBLIC ACC
B:00A8H.1 PUBLIC ET0
B:00A8H.3 PUBLIC ET1
D:008CH PUBLIC TH0
D:008DH PUBLIC TH1
D:00D6H PUBLIC TH2
D:00D4H PUBLIC TH3
D:00D2H PUBLIC TH4
D:008AH PUBLIC TL0
D:008BH PUBLIC TL1
D:00D7H PUBLIC TL2
D:00D5H PUBLIC TL3
B:00B8H.1 PUBLIC PT0
D:00D3H PUBLIC TL4
B:00B8H.3 PUBLIC PT1
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 10
B:0088H.4 PUBLIC TR0
B:0088H.6 PUBLIC TR1
D:00D1H PUBLIC T4T3M
C:0880H PUBLIC Timer_config
D:00B7H PUBLIC IPH
D:008FH PUBLIC INT_CLKO
D:00D0H PUBLIC PSW
------- PROC TIMER0_INT
C:089EH LINE# 22
C:08A0H LINE# 24
C:08A4H LINE# 25
C:08A4H LINE# 26
C:08A6H LINE# 27
C:08A6H LINE# 28
------- ENDPROC TIMER0_INT
------- PROC TIMER1_INT
C:0011H LINE# 31
C:0011H LINE# 34
------- ENDPROC TIMER1_INT
------- PROC TIMER2_INT
C:0012H LINE# 37
C:0012H LINE# 40
------- ENDPROC TIMER2_INT
------- PROC TIMER3_INT
C:0016H LINE# 43
C:0016H LINE# 46
------- ENDPROC TIMER3_INT
------- PROC TIMER4_INT
C:0017H LINE# 49
C:0017H LINE# 52
------- ENDPROC TIMER4_INT
------- PROC _TIMER_INILIZE
D:0005H SYMBOL TIM
D:0001H SYMBOL TIMx
C:00A6H LINE# 62
C:00A8H LINE# 63
C:00A8H LINE# 64
C:00B5H LINE# 66
C:00BBH LINE# 67
C:00BBH LINE# 68
C:00BDH LINE# 69
C:00CBH LINE# 70
C:00CDH LINE# 71
C:00E0H LINE# 72
C:010CH LINE# 74
C:011CH LINE# 75
C:0123H LINE# 76
C:0133H LINE# 77
C:013AH LINE# 78
C:0145H LINE# 79
C:0148H LINE# 80
C:0157H LINE# 81
C:015AH LINE# 83
C:016CH LINE# 84
C:0178H LINE# 85
C:017BH LINE# 86
C:017BH LINE# 88
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 11
C:0183H LINE# 89
C:0183H LINE# 90
C:0185H LINE# 91
C:0193H LINE# 92
C:0195H LINE# 93
C:01A8H LINE# 94
C:01D4H LINE# 95
C:01E4H LINE# 96
C:01F0H LINE# 97
C:0200H LINE# 98
C:0207H LINE# 99
C:0212H LINE# 100
C:0215H LINE# 101
C:0224H LINE# 102
C:0227H LINE# 104
C:0239H LINE# 105
C:0245H LINE# 106
C:0248H LINE# 107
C:0248H LINE# 109
C:024DH LINE# 110
C:024DH LINE# 111
C:0250H LINE# 112
C:025FH LINE# 113
C:0262H LINE# 114
C:0275H LINE# 115
C:0280H LINE# 116
C:0287H LINE# 117
C:0292H LINE# 118
C:0295H LINE# 119
C:02A4H LINE# 120
C:02A7H LINE# 122
C:02B9H LINE# 123
C:02C6H LINE# 124
C:02C9H LINE# 125
C:02C9H LINE# 127
C:02CEH LINE# 128
C:02CEH LINE# 129
C:02D1H LINE# 130
C:02E0H LINE# 131
C:02E3H LINE# 132
C:02F6H LINE# 133
C:0301H LINE# 134
C:0308H LINE# 135
C:0313H LINE# 136
C:0316H LINE# 137
C:0325H LINE# 138
C:0328H LINE# 140
C:033AH LINE# 141
C:0347H LINE# 142
C:034AH LINE# 143
C:034AH LINE# 145
C:0352H LINE# 146
C:0352H LINE# 147
C:0355H LINE# 148
C:0364H LINE# 149
C:0367H LINE# 150
C:037CH LINE# 151
BL51 BANKED LINKER/LOCATER V6.22.2.0 04/10/2023 15:47:03 PAGE 12
C:0385H LINE# 152
C:0390H LINE# 153
C:039FH LINE# 154
C:03A2H LINE# 155
C:03B1H LINE# 156
C:03B4H LINE# 158
C:03C4H LINE# 159
C:03D1H LINE# 160
C:03D4H LINE# 161
C:03D4H LINE# 162
C:03D6H LINE# 163
------- ENDPROC _TIMER_INILIZE
------- PROC TIMER_CONFIG
------- DO
D:0008H SYMBOL TIM_InitStructure
------- ENDDO
C:0880H LINE# 165
C:0880H LINE# 166
C:0880H LINE# 168
C:0883H LINE# 169
C:0885H LINE# 170
C:0888H LINE# 171
C:088AH LINE# 172
C:088CH LINE# 173
C:0892H LINE# 174
C:0895H LINE# 175
------- ENDPROC TIMER_CONFIG
------- ENDMOD TIMER
------- MODULE ?C?CLDPTR
C:0802H PUBLIC ?C?CLDPTR
------- ENDMOD ?C?CLDPTR
------- MODULE ?C?CLDOPTR
C:081BH PUBLIC ?C?CLDOPTR
------- ENDMOD ?C?CLDOPTR
------- MODULE ?C?ILDOPTR
C:0848H PUBLIC ?C?ILDOPTR
------- ENDMOD ?C?ILDOPTR
Program Size: data=18.0 xdata=0 code=2183
LINK/LOCATE RUN COMPLETE. 0 WARNING(S), 0 ERROR(S)

52
Listings/main.lst Normal file
View File

@ -0,0 +1,52 @@
C51 COMPILER V9.60.0.0 MAIN 04/10/2023 15:47:03 PAGE 1
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN .\Objects\main.obj
COMPILER INVOKED BY: d:\Keil_v5\C51\BIN\C51.EXE mycode\main.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEN
-D PRINT(.\Listings\main.lst) TABS(2) OBJECT(.\Objects\main.obj)
line level source
1 /*---------------------------------------------------------------------*/
2 /* --- STC MCU Limited ------------------------------------------------*/
3 /* --- STC 1T Series MCU Demo Programme -------------------------------*/
4 /* --- Mobile: (86)13922805190 ----------------------------------------*/
5 /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
6 /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
7 /* --- Web: www.STCMCU.com --------------------------------------------*/
8 /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
9 /* --- QQ: 800003751 -------------------------------------------------*/
10 /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
11 /*---------------------------------------------------------------------*/
12
13 #include "config.h"
14 #include "GPIO.h"
15 #include "Exti.h"
16 #include "timer.h"
17
18 /******************** 主函数***********************/
19 void main(void)
20 {
21 1 GPIO_config();
22 1 Exti_config();
23 1 Timer_config();
24 1 EA = 1;
25 1 while (1)
26 1 {
27 2 }
28 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 13 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

210
Listings/timer.lst Normal file
View File

@ -0,0 +1,210 @@
C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 1
C51 COMPILER V9.60.0.0, COMPILATION OF MODULE TIMER
OBJECT MODULE PLACED IN .\Objects\timer.obj
COMPILER INVOKED BY: d:\Keil_v5\C51\BIN\C51.EXE mycode\timer.c OPTIMIZE(8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTE
-ND PRINT(.\Listings\timer.lst) TABS(2) OBJECT(.\Objects\timer.obj)
line level source
1 /*---------------------------------------------------------------------*/
2 /* --- STC MCU Limited ------------------------------------------------*/
3 /* --- STC 1T Series MCU Demo Programme -------------------------------*/
4 /* --- Mobile: (86)13922805190 ----------------------------------------*/
5 /* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
6 /* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
7 /* --- Web: www.STCMCU.com --------------------------------------------*/
8 /* --- Web: www.STCMCUDATA.com ---------------------------------------*/
9 /* --- QQ: 800003751 -------------------------------------------------*/
10 /* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
11 /*---------------------------------------------------------------------*/
12
13 /************* 功能说明 **************
14
15 本文件为STC8系列的定时器初始化和中断程序,用户可以在这个文件中修改自己需要的中断程序.
16
17 ******************************************/
18
19 #include "timer.h"
20 u8 KILL_time = 0;
21 /********************* Timer0中断函数************************/
22 void timer0_int (void) interrupt TIMER0_VECTOR
23 {
24 1 if (KILL_time)
25 1 {
26 2 KILL_time--;
27 2 }
28 1 }
29
30 /********************* Timer1中断函数************************/
31 void timer1_int (void) interrupt TIMER1_VECTOR
32 {
33 1
34 1 }
35
36 /********************* Timer2中断函数************************/
37 void timer2_int (void) interrupt TIMER2_VECTOR
38 {
39 1
40 1 }
41
42 /********************* Timer3中断函数************************/
43 void timer3_int (void) interrupt TIMER3_VECTOR
44 {
45 1
46 1 }
47
48 /********************* Timer4中断函数************************/
49 void timer4_int (void) interrupt TIMER4_VECTOR
50 {
51 1
52 1 }
53
54
C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 2
55 //========================================================================
56 // 函数: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
57 // 描述: 定时器初始化程序.
58 // 参数: TIMx: 结构参数,请参考timer.h里的定义.
59 // 返回: 成功返回0, 空操作返回1,错误返回2.
60 // 版本: V1.0, 2012-10-22
61 //========================================================================
62 u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
63 {
64 1 if(TIM > Timer4) return 1; //空操作
65 1
66 1 if(TIM == Timer0)
67 1 {
68 2 Timer0_Stop(); //停止计数
69 2 if(TIMx->TIM_Interrupt == ENABLE) Timer0_InterruptEnable(); //允许中断
70 2 else Timer0_InterruptDisable(); //禁止中断
71 2 if(TIMx->TIM_Priority > Priority_3) return 2; //错误
72 2 Timer0_Priority(TIMx->TIM_Priority); //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_
-3
73 2
74 2 if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //错误
75 2 TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3:
- 不可屏蔽16位自动重装
76 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer0_12T(); //12T
77 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer0_1T(); //1T
78 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer0_AsCounter(); //对外计数或分频
79 2 else Timer0_AsTimer(); //定时
80 2 if(TIMx->TIM_ClkOut == ENABLE) Timer0_CLKO_Enable(); //输出时钟
81 2 else Timer0_CLKO_Disable(); //不输出时钟
82 2
83 2 T0_Load(TIMx->TIM_Value);
84 2 if(TIMx->TIM_Run == ENABLE) Timer0_Run(); //开始运行
85 2 return 0; //成功
86 2 }
87 1
88 1 if(TIM == Timer1)
89 1 {
90 2 Timer1_Stop(); //停止计数
91 2 if(TIMx->TIM_Interrupt == ENABLE) Timer1_InterruptEnable(); //允许中断
92 2 else Timer1_InterruptDisable(); //禁止中断
93 2 if(TIMx->TIM_Priority > Priority_3) return 2; //错误
94 2 Timer1_Priority(TIMx->TIM_Priority); //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_
-3
95 2 if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //错误
96 2 TMOD = (TMOD & ~0x30) | (TIMx->TIM_Mode<<4); //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重<E58AA8>
-<2D>, 3: 停止工作
97 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer1_12T(); //12T
98 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer1_1T(); //1T
99 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer1_AsCounter(); //对外计数或分频
100 2 else Timer1_AsTimer(); //定时
101 2 if(TIMx->TIM_ClkOut == ENABLE) Timer1_CLKO_Enable(); //输出时钟
102 2 else Timer1_CLKO_Disable(); //不输出时钟
103 2
104 2 T1_Load(TIMx->TIM_Value);
105 2 if(TIMx->TIM_Run == ENABLE) Timer1_Run(); //开始运行
106 2 return 0; //成功
107 2 }
108 1
109 1 if(TIM == Timer2) //Timer2,固定为16位自动重装, 中断无优先级
110 1 {
111 2 Timer2_Stop(); //停止计数
112 2 if(TIMx->TIM_Interrupt == ENABLE) Timer2_InterruptEnable(); //允许中断
C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 3
113 2 else Timer2_InterruptDisable(); //禁止中断
114 2 if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
115 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer2_12T(); //12T
116 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer2_1T(); //1T
117 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer2_AsCounter(); //对外计数或分频
118 2 else Timer2_AsTimer(); //定时
119 2 if(TIMx->TIM_ClkOut == ENABLE) Timer2_CLKO_Enable(); //输出时钟
120 2 else Timer2_CLKO_Disable(); //不输出时钟
121 2
122 2 T2_Load(TIMx->TIM_Value);
123 2 if(TIMx->TIM_Run == ENABLE) Timer2_Run(); //开始运行
124 2 return 0; //成功
125 2 }
126 1
127 1 if(TIM == Timer3) //Timer3,固定为16位自动重装, 中断无优先级
128 1 {
129 2 Timer3_Stop(); //停止计数
130 2 if(TIMx->TIM_Interrupt == ENABLE) Timer3_InterruptEnable(); //允许中断
131 2 else Timer3_InterruptDisable(); //禁止中断
132 2 if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
133 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer3_12T(); //12T
134 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer3_1T(); //1T
135 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer3_AsCounter(); //对外计数或分频
136 2 else Timer3_AsTimer(); //定时
137 2 if(TIMx->TIM_ClkOut == ENABLE) Timer3_CLKO_Enable(); //输出时钟
138 2 else Timer3_CLKO_Disable(); //不输出时钟
139 2
140 2 T3_Load(TIMx->TIM_Value);
141 2 if(TIMx->TIM_Run == ENABLE) Timer3_Run(); //开始运行
142 2 return 0; //成功
143 2 }
144 1
145 1 if(TIM == Timer4) //Timer3,固定为16位自动重装, 中断无优先级
146 1 {
147 2 Timer4_Stop(); //停止计数
148 2 if(TIMx->TIM_Interrupt == ENABLE) Timer4_InterruptEnable(); //允许中断
149 2 else Timer4_InterruptDisable(); //禁止中断
150 2 if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
151 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer4_12T(); //12T
152 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer4_1T(); //1T
153 2 if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer4_AsCounter(); //对外计数或分频
154 2 else Timer4_AsTimer(); //定时
155 2 if(TIMx->TIM_ClkOut == ENABLE) Timer4_CLKO_Enable(); //输出时钟
156 2 else Timer4_CLKO_Disable(); //不输出时钟
157 2
158 2 T4_Load(TIMx->TIM_Value);
159 2 if(TIMx->TIM_Run == ENABLE) Timer4_Run(); //开始运行
160 2 return 0; //成功
161 2 }
162 1 return 2; //错误
163 1 }
164 /************************ ?¨?±?÷???? ****************************/
165 void Timer_config(void)
166 {
167 1 TIM_InitTypeDef TIM_InitStructure;
168 1 TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload;
169 1 TIM_InitStructure.TIM_Priority = Priority_0;
170 1 TIM_InitStructure.TIM_Interrupt = ENABLE;
171 1 TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;
172 1 TIM_InitStructure.TIM_ClkOut = DISABLE;
173 1 TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL);
174 1 TIM_InitStructure.TIM_Run = ENABLE;
C51 COMPILER V9.60.0.0 TIMER 04/10/2023 15:47:03 PAGE 4
175 1 Timer_Inilize(Timer0,&TIM_InitStructure);
176 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 862 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 8
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)

1
Objects/Exti.__i Normal file
View File

@ -0,0 +1 @@
"mycode\Exti.c" OPTIMIZE (8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND PRINT(.\Listings\Exti.lst) TABS (2) OBJECT(.\Objects\Exti.obj)

BIN
Objects/Exti.obj Normal file

Binary file not shown.

1
Objects/GPIO.__i Normal file
View File

@ -0,0 +1 @@
"mycode\GPIO.c" OPTIMIZE (8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND PRINT(.\Listings\GPIO.lst) TABS (2) OBJECT(.\Objects\GPIO.obj)

BIN
Objects/GPIO.obj Normal file

Binary file not shown.

BIN
Objects/STARTUP.obj Normal file

Binary file not shown.

BIN
Objects/kill_control Normal file

Binary file not shown.

BIN
Objects/kill_control.LIB Normal file

Binary file not shown.

7
Objects/kill_control.__b Normal file
View File

@ -0,0 +1,7 @@
TRANSFER
".\Objects\STARTUP.obj",
".\Objects\Exti.obj",
".\Objects\GPIO.obj",
".\Objects\main.obj",
".\Objects\timer.obj"
TO ".\Objects\kill_control.LIB"

View File

@ -0,0 +1,37 @@
<html>
<body>
<pre>
<h1>µVision Build Log</h1>
<h2>Tool Versions:</h2>
IDE-Version: ¦ÌVision V5.27.1.0
Copyright (C) 2019 ARM Ltd and ARM Germany GmbH. All rights reserved.
License Information: xx xx, xx, LIC=WH7DL-0DZI4-3A0DP-MA9EC-R17VA-4MPD4
Tool Versions:
Toolchain: PK51 Prof. Developers Kit Version: 9.60.0.0
Toolchain Path: d:\Keil_v5\C51\BIN
C Compiler: C51.exe V9.60.0.0
Assembler: A51.exe V8.2.7.0
Linker/Locator: BL51.exe V6.22.2.0
Library Manager: LIB51.exe V4.30.1.0
Hex Converter: OH51.exe V2.7.0.0
CPU DLL: S8051.DLL V3.122.0.0
Dialog DLL: DP51.DLL V2.67.0.0
<h2>Project:</h2>
d:\Users\User\Documents\peek250kill control\kill_control.uvproj
Project File Date: 04/10/2023
<h2>Output:</h2>
Build target 'Target 1'
compiling Exti.c...
compiling GPIO.c...
compiling main.c...
compiling timer.c...
linking...
Program Size: data=18.0 xdata=0 code=2183
creating hex file from ".\Objects\kill_control"...
".\Objects\kill_control" - 0 Error(s), 0 Warning(s).
Build Time Elapsed: 00:00:00
</pre>
</body>
</html>

163
Objects/kill_control.hex Normal file
View File

@ -0,0 +1,163 @@
:030000000207767E
:0C077600787FE4F6D8FD7581100207BD05
:0300030002006692
:10006600C0E030B20CE510700BB290B291B2928043
:0700760003751032D0E032E7
:0300130002000ADE
:01000A0032C3
:0300530002000E9A
:01000E0032BF
:03005B0002000F91
:01000F0032BE
:0300830002001068
:0100100032BD
:10064E00EFD394047480948040037F0122EF706195
:10065E00C28990000212081B64017004D2A88002A5
:10066E00C2A890000112081BFED3940374809480DC
:10067E0040037F0222EEFD7C00700553B7FEC2B828
:10068E00ED64014C700553B7FED2B8ED64024C70A8
:10069E000543B701C2B8ED64034C700543B701D2F0
:1006AE00B812080264017004D2888002C2887F00EA
:1006BE0022EF64017061C28B90000212081B64016C
:1006CE007004D2AA8002C2AA90000112081BFED3A7
:1006DE0094037480948040037F0222EEFD7C0070B0
:1006EE000553B7FBC2BAED64014C700553B7FBD28C
:1006FE00BAED64024C700543B704C2BAED64034C04
:10070E00700543B704D2BA12080264017004D28A8B
:10071E008002C28A7F0022EF6402701590000212DE
:10072E00081B64017005438F108003538FEF7F0009
:10073E0022EF6403701590000212081B640170050D
:10074E00438F208003538FDF7F0022EF64047015E8
:10075E0090000212081B64017005438F4080035302
:08076E008FBF7F00227F0222F1
:10004000750A01E4F508F509FB7A007908FF020654
:010050004E61
:1003D700EFD394077480948040037F0122120802B0
:1003E700FED394037480948040037F0222EF70440D
:1003F700EE700B90000112081BF4529352941208EE
:10040700026401700B90000112081B4293F452948E
:10041700120802FE6402700A90000112081B429340
:100427004294EE6403700D90000112081BFEF45213
:1004370093EE4294EF64017046120802FE700B902F
:10044700000112081BF452915292EE6401700B9056
:10045700000112081B4291F45292120802640270C2
:100467000A90000112081B4291429212080264038B
:10047700700D90000112081BFEF45291EE4292EFAC
:1004870064027046120802FE700B90000112081BEE
:10049700F452955296EE6401700B90000112081BFE
:1004A7004295F452961208026402700A90000112F3
:1004B700081B429542961208026403700D900001D2
:1004C70012081BFEF45295EE4296EF640370461233
:1004D7000802FE700B90000112081BF452B152B2D1
:1004E700EE6401700B90000112081B42B1F452B286
:1004F7001208026402700A90000112081B42B142FE
:10050700B21208026403700D90000112081BFEF47A
:1005170052B1EE42B2EF64047046120802FE700B4D
:1005270090000112081BF452B352B4EE6401700B31
:1005370090000112081B42B3F452B412080264027D
:10054700700A90000112081B42B342B412080264F9
:1005570003700D90000112081BFEF452B3EE42B473
:10056700EF64057046120802FE700B900001120836
:100577001BF452C952CAEE6401700B9000011208B5
:100587001B42C9F452CA1208026402700A900001A1
:1005970012081B42C942CA1208026403700D900078
:1005A7000112081BFEF452C9EE42CAEF64067046F8
:1005B700120802FE700B90000112081BF452CB5276
:1005C700CCEE6401700B90000112081B42CBF45271
:1005D700CC1208026402700A90000112081B42CB79
:1005E70042CC1208026403700D90000112081BFE32
:1005F700F452CBEE42CCEF64077049120802FF7E3B
:1006070000700B90000112081BF452E152E2EF64F4
:10061700014E700B90000112081B42E1F452E212E6
:1006270008026402700A90000112081B42E142E2CC
:100637001208026403700D90000112081BFFF452A8
:07064700E1EF42E27F002217
:10001E00750904E4F508FB7A0079087F031203D70B
:10002E007509077508037F011203D7C290C291C2EA
:01003E00922F
:01003F00229E
:0D00860012001E120040120880D2AF80FE52
:03000600011000E6
:03000B0002089E4A
:0B089E00C0E0E51060021510D0E03251
:03001B00020011CF
:0100110032BC
:0300630002001286
:0100120032BB
:03009B000200164A
:0100160032B7
:0300A30002001741
:0100170032B6
:1000A600AD07EDD394047480948040037F0122ED64
:1000B600600302017BC28C90000212081B6401706F
:1000C60004D2A98002C2A990000112081BFED39493
:1000D600037480948040037F0222EEFF7E00700549
:1000E60053B7FDC2B9EF64014E700553B7FDD2B9DF
:1000F600EF64024E700543B702C2B9EF64034E7057
:100106000543B702D2B9120802FEC3940374809461
:100116008040037F0222E58954FC4EF58990000356
:1001260012081BFF7E0064017003538E7FEF4E7032
:1001360003438E80EF64024E7005438904800353A7
:1001460089FB90000412081B64017005438F01802F
:1001560003538FFE900005120848E5F0F58C9000D9
:1001660005120848F58A90000712081B6401700200
:10017600D28C7F0022ED64016003020248C28E9099
:10018600000212081B64017004D2AB8002C2AB905D
:10019600000112081BFED394037480948040037FF1
:1001A6000222EEFF7E00700553B7F7C2BBEF640173
:1001B6004E700553B7F7D2BBEF64024E700543B7D6
:1001C60008C2BBEF64034E700543B708D2BB1208E2
:1001D60002FEC394037480948040037F0222EEC41F
:1001E60054F0FFE58954CF4FF58990000312081BA0
:1001F600FF7E0064017003538EBFEF4E7003438E83
:1002060040EF64024E700543894080035389BF90D6
:10021600000412081B64017005438F028003538F8C
:10022600FD900005120848E5F0F58D9000051208CE
:1002360048F58B90000712081B64017002D28E7F6E
:100246000022ED6402707C538EEF90000212081BB0
:100256006401700543AF04800353AFFB90000312A3
:10026600081BFED394027480948040037F0222EE22
:10027600FF7E0064017003538EFBEF4E7003438EC6
:1002860004EF64024E7005438E088003538EF79088
:10029600000412081B64017005438F048003538F0A
:1002A600FB900005120848E5F0F5D6900005120807
:1002B60048F5D790000712081B64017003438E109F
:1002C6007F0022ED6403707C53D1F7900002120880
:1002D6001B6401700543AF20800353AFDF9000031A
:1002E60012081BFED394027480948040037F02227E
:1002F600EEFF7E006401700353D1FDEF4E700343A1
:10030600D102EF64024E700543D104800353D1FB42
:1003160090000412081B6401700543D10180035349
:10032600D1FE900005120848E5F0F5D490000512BC
:100336000848F5D590000712081B6401700343D1E5
:10034600087F0022ED640460030203D453D17F903A
:10035600000212081B6401700543AF40800353AFCF
:10036600BF90000312081BFD7C00D3940274809496
:100376008040037F0222ED64014C700353D1DF906D
:10038600000312081B700343D12090000312081BC0
:100396006402700543D140800353D1BF900004121C
:1003A600081B6401700543D110800353D1EF900000
:1003B60005120848FDACF0ECF5D2AF058FD39000DE
:1003C6000712081B6401700343D1807F00227F025D
:0103D6002204
:10088000E4F508F509750A01F50BF50C750DD4753D
:0E0890000ECD750F01FB7A007908FF0200A65D
:10078200020086E493A3F8E493A34003F68001F207
:1007920008DFF48029E493A3F85407240CC8C33378
:1007A200C4540F4420C8834004F456800146F6DF47
:1007B200E4800B0102040810204080900006E47ED1
:1007C200019360BCA3FF543F30E509541FFEE4933C
:1007D200A360010ECF54C025E060A840B8E493A303
:1007E200FAE493A3F8E493A3C8C582C8CAC583CA2E
:1007F200F0A3C8C582C8CAC583CADFE9DEE780BEE6
:0100090000F6
:10080200BB010689828A83E0225002E722BBFE02F4
:09081200E32289828A83E4932227
:10081B00BB010CE58229F582E5833AF583E0225092
:10082B0006E92582F8E622BBFE06E92582F8E222DC
:0D083B00E58229F582E5833AF583E49322F6
:10084800BB0110E58229F582E5833AF583E0F5F0EE
:10085800A3E0225009E92582F886F008E622BBFECB
:100868000AE92582F8E2F5F008E222E5832AF58311
:08087800E993F5F0A3E99322D6
:00000001FF

7
Objects/kill_control.lnp Normal file
View File

@ -0,0 +1,7 @@
".\Objects\STARTUP.obj",
".\Objects\Exti.obj",
".\Objects\GPIO.obj",
".\Objects\main.obj",
".\Objects\timer.obj"
TO ".\Objects\kill_control"
PRINT(".\Listings\kill_control.m51") RAMSIZE(256)

1
Objects/main.__i Normal file
View File

@ -0,0 +1 @@
"mycode\main.c" OPTIMIZE (8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND PRINT(.\Listings\main.lst) TABS (2) OBJECT(.\Objects\main.obj)

BIN
Objects/main.obj Normal file

Binary file not shown.

1
Objects/timer.__i Normal file
View File

@ -0,0 +1 @@
"mycode\timer.c" OPTIMIZE (8,SPEED) BROWSE INCDIR(.\myinc) DEBUG OBJECTEXTEND PRINT(.\Listings\timer.lst) TABS (2) OBJECT(.\Objects\timer.obj)

BIN
Objects/timer.obj Normal file

Binary file not shown.

198
STARTUP.A51 Normal file
View File

@ -0,0 +1,198 @@
$NOMOD51
;------------------------------------------------------------------------------
; This file is part of the C51 Compiler package
; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc.
; Version 8.01
;
; *** <<< Use Configuration Wizard in Context Menu >>> ***
;------------------------------------------------------------------------------
; STARTUP.A51: This code is executed after processor reset.
;
; To translate this file use A51 with the following invocation:
;
; A51 STARTUP.A51
;
; To link the modified STARTUP.OBJ file to your application use the following
; Lx51 invocation:
;
; Lx51 your object file list, STARTUP.OBJ controls
;
;------------------------------------------------------------------------------
;
; User-defined <h> Power-On Initialization of Memory
;
; With the following EQU statements the initialization of memory
; at processor reset can be defined:
;
; <o> IDATALEN: IDATA memory size <0x0-0x100>
; <i> Note: The absolute start-address of IDATA memory is always 0
; <i> The IDATA space overlaps physically the DATA and BIT areas.
IDATALEN EQU 80H
;
; <o> XDATASTART: XDATA memory start address <0x0-0xFFFF>
; <i> The absolute start address of XDATA memory
XDATASTART EQU 0
;
; <o> XDATALEN: XDATA memory size <0x0-0xFFFF>
; <i> The length of XDATA memory in bytes.
XDATALEN EQU 0
;
; <o> PDATASTART: PDATA memory start address <0x0-0xFFFF>
; <i> The absolute start address of PDATA memory
PDATASTART EQU 0H
;
; <o> PDATALEN: PDATA memory size <0x0-0xFF>
; <i> The length of PDATA memory in bytes.
PDATALEN EQU 0H
;
;</h>
;------------------------------------------------------------------------------
;
;<h> Reentrant Stack Initialization
;
; The following EQU statements define the stack pointer for reentrant
; functions and initialized it:
;
; <h> Stack Space for reentrant functions in the SMALL model.
; <q> IBPSTACK: Enable SMALL model reentrant stack
; <i> Stack space for reentrant functions in the SMALL model.
IBPSTACK EQU 0 ; set to 1 if small reentrant is used.
; <o> IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF>
; <i> Set the top of the stack to the highest location.
IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
; </h>
;
; <h> Stack Space for reentrant functions in the LARGE model.
; <q> XBPSTACK: Enable LARGE model reentrant stack
; <i> Stack space for reentrant functions in the LARGE model.
XBPSTACK EQU 0 ; set to 1 if large reentrant is used.
; <o> XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF>
; <i> Set the top of the stack to the highest location.
XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1
; </h>
;
; <h> Stack Space for reentrant functions in the COMPACT model.
; <q> PBPSTACK: Enable COMPACT model reentrant stack
; <i> Stack space for reentrant functions in the COMPACT model.
PBPSTACK EQU 0 ; set to 1 if compact reentrant is used.
;
; <o> PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF>
; <i> Set the top of the stack to the highest location.
PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1
; </h>
;</h>
;------------------------------------------------------------------------------
;
; Memory Page for Using the Compact Model with 64 KByte xdata RAM
; <e>Compact Model Page Definition
;
; <i>Define the XDATA page used for PDATA variables.
; <i>PPAGE must conform with the PPAGE set in the linker invocation.
;
; Enable pdata memory page initalization
PPAGEENABLE EQU 0 ; set to 1 if pdata object are used.
;
; <o> PPAGE number <0x0-0xFF>
; <i> uppermost 256-byte address of the page used for PDATA variables.
PPAGE EQU 0
;
; <o> SFR address which supplies uppermost address byte <0x0-0xFF>
; <i> most 8051 variants use P2 as uppermost address byte
PPAGE_SFR DATA 0A0H
;
; </e>
;------------------------------------------------------------------------------
; Standard SFR Symbols
ACC DATA 0E0H
B DATA 0F0H
SP DATA 81H
DPL DATA 82H
DPH DATA 83H
NAME ?C_STARTUP
?C_C51STARTUP SEGMENT CODE
?STACK SEGMENT IDATA
RSEG ?STACK
DS 1
EXTRN CODE (?C_START)
PUBLIC ?C_STARTUP
CSEG AT 0
?C_STARTUP: LJMP STARTUP1
RSEG ?C_C51STARTUP
STARTUP1:
IF IDATALEN <> 0
MOV R0,#IDATALEN - 1
CLR A
IDATALOOP: MOV @R0,A
DJNZ R0,IDATALOOP
ENDIF
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
IF PPAGEENABLE <> 0
MOV PPAGE_SFR,#PPAGE
ENDIF
IF PDATALEN <> 0
MOV R0,#LOW (PDATASTART)
MOV R7,#LOW (PDATALEN)
CLR A
PDATALOOP: MOVX @R0,A
INC R0
DJNZ R7,PDATALOOP
ENDIF
IF IBPSTACK <> 0
EXTRN DATA (?C_IBP)
MOV ?C_IBP,#LOW IBPSTACKTOP
ENDIF
IF XBPSTACK <> 0
EXTRN DATA (?C_XBP)
MOV ?C_XBP,#HIGH XBPSTACKTOP
MOV ?C_XBP+1,#LOW XBPSTACKTOP
ENDIF
IF PBPSTACK <> 0
EXTRN DATA (?C_PBP)
MOV ?C_PBP,#LOW PBPSTACKTOP
ENDIF
MOV SP,#?STACK-1
; This code is required if you use L51_BANK.A51 with Banking Mode 4
;<h> Code Banking
; <q> Select Bank 0 for L51_BANK.A51 Mode 4
#if 0
; <i> Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
EXTRN CODE (?B_SWITCH0)
CALL ?B_SWITCH0 ; init bank mechanism to code bank 0
#endif
;</h>
LJMP ?C_START
END

1914
kill_control.uvgui.User Normal file

File diff suppressed because one or more lines are too long

241
kill_control.uvopt Normal file
View File

@ -0,0 +1,241 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<ProjectOpt xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_opt.xsd">
<SchemaVersion>1.0</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Extensions>
<cExt>*.c</cExt>
<aExt>*.s*; *.src; *.a*</aExt>
<oExt>*.obj; *.o</oExt>
<lExt>*.lib</lExt>
<tExt>*.txt; *.h; *.inc</tExt>
<pExt>*.plm</pExt>
<CppX>*.cpp</CppX>
<nMigrate>0</nMigrate>
</Extensions>
<DaveTm>
<dwLowDateTime>0</dwLowDateTime>
<dwHighDateTime>0</dwHighDateTime>
</DaveTm>
<Target>
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<TargetOption>
<CLK51>35000000</CLK51>
<OPTTT>
<gFlags>1</gFlags>
<BeepAtEnd>1</BeepAtEnd>
<RunSim>1</RunSim>
<RunTarget>0</RunTarget>
<RunAbUc>0</RunAbUc>
</OPTTT>
<OPTHX>
<HexSelection>0</HexSelection>
<FlashByte>65535</FlashByte>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
</OPTHX>
<OPTLEX>
<PageWidth>120</PageWidth>
<PageLength>65</PageLength>
<TabStop>8</TabStop>
<ListingPath>.\Listings\</ListingPath>
</OPTLEX>
<ListingPage>
<CreateCListing>1</CreateCListing>
<CreateAListing>1</CreateAListing>
<CreateLListing>1</CreateLListing>
<CreateIListing>0</CreateIListing>
<AsmCond>1</AsmCond>
<AsmSymb>1</AsmSymb>
<AsmXref>0</AsmXref>
<CCond>1</CCond>
<CCode>0</CCode>
<CListInc>0</CListInc>
<CSymb>0</CSymb>
<LinkerCodeListing>0</LinkerCodeListing>
</ListingPage>
<OPTXL>
<LMap>1</LMap>
<LComments>1</LComments>
<LGenerateSymbols>1</LGenerateSymbols>
<LLibSym>1</LLibSym>
<LLines>1</LLines>
<LLocSym>1</LLocSym>
<LPubSym>1</LPubSym>
<LXref>0</LXref>
<LExpSel>0</LExpSel>
</OPTXL>
<OPTFL>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<IsCurrentTarget>1</IsCurrentTarget>
</OPTFL>
<CpuCode>255</CpuCode>
<DebugOpt>
<uSim>1</uSim>
<uTrg>0</uTrg>
<sLdApp>1</sLdApp>
<sGomain>1</sGomain>
<sRbreak>1</sRbreak>
<sRwatch>1</sRwatch>
<sRmem>1</sRmem>
<sRfunc>1</sRfunc>
<sRbox>1</sRbox>
<tLdApp>1</tLdApp>
<tGomain>0</tGomain>
<tRbreak>1</tRbreak>
<tRwatch>1</tRwatch>
<tRmem>1</tRmem>
<tRfunc>0</tRfunc>
<tRbox>1</tRbox>
<tRtrace>1</tRtrace>
<sRSysVw>1</sRSysVw>
<tRSysVw>1</tRSysVw>
<sRunDeb>0</sRunDeb>
<sLrtime>0</sLrtime>
<bEvRecOn>1</bEvRecOn>
<bSchkAxf>0</bSchkAxf>
<bTchkAxf>0</bTchkAxf>
<nTsel>-1</nTsel>
<sDll></sDll>
<sDllPa></sDllPa>
<sDlgDll></sDlgDll>
<sDlgPa></sDlgPa>
<sIfile></sIfile>
<tDll></tDll>
<tDllPa></tDllPa>
<tDlgDll></tDlgDll>
<tDlgPa></tDlgPa>
<tIfile></tIfile>
<pMon></pMon>
</DebugOpt>
<Breakpoint/>
<Tracepoint>
<THDelay>0</THDelay>
</Tracepoint>
<DebugFlag>
<trace>0</trace>
<periodic>1</periodic>
<aLwin>0</aLwin>
<aCover>0</aCover>
<aSer1>0</aSer1>
<aSer2>0</aSer2>
<aPa>0</aPa>
<viewmode>0</viewmode>
<vrSel>0</vrSel>
<aSym>0</aSym>
<aTbox>0</aTbox>
<AscS1>0</AscS1>
<AscS2>0</AscS2>
<AscS3>0</AscS3>
<aSer3>0</aSer3>
<eProf>0</eProf>
<aLa>0</aLa>
<aPa1>0</aPa1>
<AscS4>0</AscS4>
<aSer4>0</aSer4>
<StkLoc>0</StkLoc>
<TrcWin>0</TrcWin>
<newCpu>0</newCpu>
<uProt>0</uProt>
</DebugFlag>
<LintExecutable></LintExecutable>
<LintConfigFile></LintConfigFile>
<bLintAuto>0</bLintAuto>
<bAutoGenD>0</bAutoGenD>
<LntExFlags>0</LntExFlags>
<pMisraName></pMisraName>
<pszMrule></pszMrule>
<pSingCmds></pSingCmds>
<pMultCmds></pMultCmds>
<pMisraNamep></pMisraNamep>
<pszMrulep></pszMrulep>
<pSingCmdsp></pSingCmdsp>
<pMultCmdsp></pMultCmdsp>
</TargetOption>
</Target>
<Group>
<GroupName>Source Group 1</GroupName>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>1</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\STARTUP.A51</PathWithFileName>
<FilenameWithoutPath>STARTUP.A51</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
<GroupName>mycode</GroupName>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<cbSel>0</cbSel>
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>2</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\mycode\Exti.c</PathWithFileName>
<FilenameWithoutPath>Exti.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>3</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\mycode\GPIO.c</PathWithFileName>
<FilenameWithoutPath>GPIO.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\mycode\main.c</PathWithFileName>
<FilenameWithoutPath>main.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>5</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>.\mycode\timer.c</PathWithFileName>
<FilenameWithoutPath>timer.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
</ProjectOpt>

415
kill_control.uvproj Normal file
View File

@ -0,0 +1,415 @@
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="project_proj.xsd">
<SchemaVersion>1.1</SchemaVersion>
<Header>### uVision Project, (C) Keil Software</Header>
<Targets>
<Target>
<TargetName>Target 1</TargetName>
<ToolsetNumber>0x0</ToolsetNumber>
<ToolsetName>MCS-51</ToolsetName>
<uAC6>0</uAC6>
<TargetOption>
<TargetCommonOption>
<Device>STC8H1K28 Series</Device>
<Vendor>STC</Vendor>
<Cpu>IRAM(0-0xFF) XRAM(0-0x03FF) IROM(0-0x6FF8) CLOCK(35000000) MODP2</Cpu>
<FlashUtilSpec></FlashUtilSpec>
<StartupFile>"LIB\STARTUP.A51" ("Standard 8051 Startup Code")</StartupFile>
<FlashDriverDll></FlashDriverDll>
<DeviceId>63268</DeviceId>
<RegisterFile>STC8.H</RegisterFile>
<MemoryEnv></MemoryEnv>
<Cmp></Cmp>
<Asm></Asm>
<Linker></Linker>
<OHString></OHString>
<InfinionOptionDll></InfinionOptionDll>
<SLE66CMisc></SLE66CMisc>
<SLE66AMisc></SLE66AMisc>
<SLE66LinkerMisc></SLE66LinkerMisc>
<SFDFile></SFDFile>
<bCustSvd>0</bCustSvd>
<UseEnv>0</UseEnv>
<BinPath></BinPath>
<IncludePath></IncludePath>
<LibPath></LibPath>
<RegisterFilePath>STC\</RegisterFilePath>
<DBRegisterFilePath>STC\</DBRegisterFilePath>
<TargetStatus>
<Error>0</Error>
<ExitCodeStop>0</ExitCodeStop>
<ButtonStop>0</ButtonStop>
<NotGenerated>0</NotGenerated>
<InvalidFlash>1</InvalidFlash>
</TargetStatus>
<OutputDirectory>.\Objects\</OutputDirectory>
<OutputName>kill_control</OutputName>
<CreateExecutable>1</CreateExecutable>
<CreateLib>0</CreateLib>
<CreateHexFile>1</CreateHexFile>
<DebugInformation>1</DebugInformation>
<BrowseInformation>1</BrowseInformation>
<ListingPath>.\Listings\</ListingPath>
<HexFormatSelection>0</HexFormatSelection>
<Merge32K>0</Merge32K>
<CreateBatchFile>0</CreateBatchFile>
<BeforeCompile>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopU1X>0</nStopU1X>
<nStopU2X>0</nStopU2X>
</BeforeCompile>
<BeforeMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopB1X>0</nStopB1X>
<nStopB2X>0</nStopB2X>
</BeforeMake>
<AfterMake>
<RunUserProg1>0</RunUserProg1>
<RunUserProg2>0</RunUserProg2>
<UserProg1Name></UserProg1Name>
<UserProg2Name></UserProg2Name>
<UserProg1Dos16Mode>0</UserProg1Dos16Mode>
<UserProg2Dos16Mode>0</UserProg2Dos16Mode>
<nStopA1X>0</nStopA1X>
<nStopA2X>0</nStopA2X>
</AfterMake>
<SelectedForBatchBuild>0</SelectedForBatchBuild>
<SVCSIdString></SVCSIdString>
</TargetCommonOption>
<CommonProperty>
<UseCPPCompiler>0</UseCPPCompiler>
<RVCTCodeConst>0</RVCTCodeConst>
<RVCTZI>0</RVCTZI>
<RVCTOtherData>0</RVCTOtherData>
<ModuleSelection>0</ModuleSelection>
<IncludeInBuild>1</IncludeInBuild>
<AlwaysBuild>0</AlwaysBuild>
<GenerateAssemblyFile>0</GenerateAssemblyFile>
<AssembleAssemblyFile>0</AssembleAssemblyFile>
<PublicsOnly>0</PublicsOnly>
<StopOnExitCode>3</StopOnExitCode>
<CustomArgument></CustomArgument>
<IncludeLibraryModules></IncludeLibraryModules>
<ComprImg>1</ComprImg>
<BankNo>65535</BankNo>
</CommonProperty>
<DllOption>
<SimDllName>S8051.DLL</SimDllName>
<SimDllArguments></SimDllArguments>
<SimDlgDll>DP51.DLL</SimDlgDll>
<SimDlgDllArguments>-pDP8051</SimDlgDllArguments>
<TargetDllName>S8051.DLL</TargetDllName>
<TargetDllArguments></TargetDllArguments>
<TargetDlgDll>TP51.DLL</TargetDlgDll>
<TargetDlgDllArguments>-p51</TargetDlgDllArguments>
</DllOption>
<DebugOption>
<OPTHX>
<HexSelection>0</HexSelection>
<HexRangeLowAddress>0</HexRangeLowAddress>
<HexRangeHighAddress>0</HexRangeHighAddress>
<HexOffset>0</HexOffset>
<Oh166RecLen>16</Oh166RecLen>
</OPTHX>
<Simulator>
<UseSimulator>1</UseSimulator>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>1</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>1</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<LimitSpeedToRealTime>0</LimitSpeedToRealTime>
<RestoreSysVw>1</RestoreSysVw>
</Simulator>
<Target>
<UseTarget>0</UseTarget>
<LoadApplicationAtStartup>1</LoadApplicationAtStartup>
<RunToMain>0</RunToMain>
<RestoreBreakpoints>1</RestoreBreakpoints>
<RestoreWatchpoints>1</RestoreWatchpoints>
<RestoreMemoryDisplay>1</RestoreMemoryDisplay>
<RestoreFunctions>0</RestoreFunctions>
<RestoreToolbox>1</RestoreToolbox>
<RestoreTracepoints>1</RestoreTracepoints>
<RestoreSysVw>1</RestoreSysVw>
</Target>
<RunDebugAfterBuild>0</RunDebugAfterBuild>
<TargetSelection>-1</TargetSelection>
<SimDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
</SimDlls>
<TargetDlls>
<CpuDll></CpuDll>
<CpuDllArguments></CpuDllArguments>
<PeripheralDll></PeripheralDll>
<PeripheralDllArguments></PeripheralDllArguments>
<InitializationFile></InitializationFile>
<Driver></Driver>
</TargetDlls>
</DebugOption>
<Utilities>
<Flash1>
<UseTargetDll>0</UseTargetDll>
<UseExternalTool>0</UseExternalTool>
<RunIndependent>0</RunIndependent>
<UpdateFlashBeforeDebugging>0</UpdateFlashBeforeDebugging>
<Capability>0</Capability>
<DriverSelection>-1</DriverSelection>
</Flash1>
<bUseTDR>0</bUseTDR>
<Flash2></Flash2>
<Flash3></Flash3>
<Flash4></Flash4>
<pFcarmOut></pFcarmOut>
<pFcarmGrp></pFcarmGrp>
<pFcArmRoot></pFcArmRoot>
<FcArmLst>0</FcArmLst>
</Utilities>
<Target51>
<Target51Misc>
<MemoryModel>0</MemoryModel>
<RTOS>0</RTOS>
<RomSize>2</RomSize>
<DataHold>0</DataHold>
<XDataHold>0</XDataHold>
<UseOnchipRom>0</UseOnchipRom>
<UseOnchipArithmetic>0</UseOnchipArithmetic>
<UseMultipleDPTR>0</UseMultipleDPTR>
<UseOnchipXram>0</UseOnchipXram>
<HadIRAM>1</HadIRAM>
<HadXRAM>1</HadXRAM>
<HadIROM>1</HadIROM>
<Moda2>0</Moda2>
<Moddp2>0</Moddp2>
<Modp2>1</Modp2>
<Mod517dp>0</Mod517dp>
<Mod517au>0</Mod517au>
<Mode2>0</Mode2>
<useCB>0</useCB>
<useXB>0</useXB>
<useL251>0</useL251>
<useA251>0</useA251>
<Mx51>0</Mx51>
<ModC812>0</ModC812>
<ModCont>0</ModCont>
<Lp51>0</Lp51>
<useXBS>0</useXBS>
<ModDA>0</ModDA>
<ModAB2>0</ModAB2>
<Mx51P>0</Mx51P>
<hadXRAM2>0</hadXRAM2>
<uocXram2>0</uocXram2>
<hadXRAM3>0</hadXRAM3>
<ModC2>0</ModC2>
<ModH2>0</ModH2>
<Mdu_R515>0</Mdu_R515>
<Mdu_F120>0</Mdu_F120>
<Psoc>0</Psoc>
<hadIROM2>0</hadIROM2>
<hadIROM3>0</hadIROM3>
<ModSmx2>0</ModSmx2>
<cBanks>0</cBanks>
<xBanks>0</xBanks>
<OnChipMemories>
<RCB>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0xffff</Size>
</RCB>
<RXB>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</RXB>
<Ocm1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm1>
<Ocm2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm2>
<Ocm3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocm3>
<Ocr1>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr1>
<Ocr2>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr2>
<Ocr3>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</Ocr3>
<IRO>
<Type>1</Type>
<StartAddress>0x0</StartAddress>
<Size>0x6ff9</Size>
</IRO>
<IRA>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x100</Size>
</IRA>
<XRA>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x400</Size>
</XRA>
<XRA512>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA512>
<IROM512>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM512>
<XRA513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</XRA513>
<IROM513>
<Type>0</Type>
<StartAddress>0x0</StartAddress>
<Size>0x0</Size>
</IROM513>
</OnChipMemories>
</Target51Misc>
<C51>
<RegisterColoring>0</RegisterColoring>
<VariablesInOrder>0</VariablesInOrder>
<IntegerPromotion>1</IntegerPromotion>
<uAregs>0</uAregs>
<UseInterruptVector>1</UseInterruptVector>
<Fuzzy>3</Fuzzy>
<Optimize>8</Optimize>
<WarningLevel>2</WarningLevel>
<SizeSpeed>1</SizeSpeed>
<ObjectExtend>1</ObjectExtend>
<ACallAJmp>0</ACallAJmp>
<InterruptVectorAddress>0</InterruptVectorAddress>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath>.\myinc</IncludePath>
</VariousControls>
</C51>
<Ax51>
<UseMpl>0</UseMpl>
<UseStandard>1</UseStandard>
<UseCase>0</UseCase>
<UseMod51>0</UseMod51>
<VariousControls>
<MiscControls></MiscControls>
<Define></Define>
<Undefine></Undefine>
<IncludePath></IncludePath>
</VariousControls>
</Ax51>
<Lx51>
<useFile>0</useFile>
<linkonly>0</linkonly>
<UseMemoryFromTarget>1</UseMemoryFromTarget>
<CaseSensitiveSymbols>0</CaseSensitiveSymbols>
<WarningLevel>2</WarningLevel>
<DataOverlaying>1</DataOverlaying>
<OverlayString></OverlayString>
<MiscControls></MiscControls>
<DisableWarningNumbers></DisableWarningNumbers>
<LinkerCmdFile></LinkerCmdFile>
<Assign></Assign>
<ReserveString></ReserveString>
<CClasses></CClasses>
<UserClasses></UserClasses>
<CSection></CSection>
<UserSection></UserSection>
<CodeBaseAddress></CodeBaseAddress>
<XDataBaseAddress></XDataBaseAddress>
<PDataBaseAddress></PDataBaseAddress>
<BitBaseAddress></BitBaseAddress>
<DataBaseAddress></DataBaseAddress>
<IDataBaseAddress></IDataBaseAddress>
<Precede></Precede>
<Stack></Stack>
<CodeSegmentName></CodeSegmentName>
<XDataSegmentName></XDataSegmentName>
<BitSegmentName></BitSegmentName>
<DataSegmentName></DataSegmentName>
<IDataSegmentName></IDataSegmentName>
</Lx51>
</Target51>
</TargetOption>
<Groups>
<Group>
<GroupName>Source Group 1</GroupName>
<Files>
<File>
<FileName>STARTUP.A51</FileName>
<FileType>2</FileType>
<FilePath>.\STARTUP.A51</FilePath>
</File>
</Files>
</Group>
<Group>
<GroupName>mycode</GroupName>
<Files>
<File>
<FileName>Exti.c</FileName>
<FileType>1</FileType>
<FilePath>.\mycode\Exti.c</FilePath>
</File>
<File>
<FileName>GPIO.c</FileName>
<FileType>1</FileType>
<FilePath>.\mycode\GPIO.c</FilePath>
</File>
<File>
<FileName>main.c</FileName>
<FileType>1</FileType>
<FilePath>.\mycode\main.c</FilePath>
</File>
<File>
<FileName>timer.c</FileName>
<FileType>1</FileType>
<FilePath>.\mycode\timer.c</FilePath>
</File>
</Files>
</Group>
</Groups>
</Target>
</Targets>
</Project>

143
mycode/Exti.c Normal file
View File

@ -0,0 +1,143 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
/************* 功能说明 **************
STC8系列的外中断初始化和中断程序,.
******************************************/
#include "Exti.h"
/************* 外部函数和变量声明 *****************/
/********************* INT0中断函数 *************************/
void Ext_INT0(void) interrupt INT0_VECTOR // 进中断时已经清除标志
{
if (kill_gpio)
{
if (KILL_time == 0)
{
power1_gpio = !power1_gpio;
power2_gpio = !power2_gpio;
power3_gpio = !power3_gpio;
}
}
else
{
KILL_time = 50;
}
}
/********************* INT1中断函数 *************************/
void Ext_INT1(void) interrupt INT1_VECTOR // 进中断时已经清除标志
{
}
/********************* INT2中断函数 *************************/
void Ext_INT2(void) interrupt INT2_VECTOR //
{
}
/********************* INT3中断函数 *************************/
void Ext_INT3(void) interrupt INT3_VECTOR
{
}
/********************* INT4中断函数 *************************/
void Ext_INT4(void) interrupt INT4_VECTOR
{
}
//========================================================================
// 函数: u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
// 描述: 外部中断初始化程序.
// 参数: INTx: 结构参数,请参考Exti.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx)
{
if (EXT > EXT_INT4)
return 1; // 空操作
if (EXT == EXT_INT0) // 外中断0
{
IE0 = 0; // 外中断0标志位
if (INTx->EXTI_Interrupt == ENABLE)
EX0 = 1; // 允许中断
else
EX0 = 0; // 禁止中断
if (INTx->EXTI_Priority > Priority_3)
return 2; // 错误
INT0_Priority(INTx->EXTI_Priority); // 指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
if (INTx->EXTI_Mode == EXT_MODE_Fall)
IT0 = 1; // 下降沿中断
else
IT0 = 0; // 上升,下降沿中断
return 0; // 成功
}
if (EXT == EXT_INT1) // 外中断1
{
IE1 = 0; // 外中断1标志位
if (INTx->EXTI_Interrupt == ENABLE)
EX1 = 1; // 允许中断
else
EX1 = 0; // 禁止中断
if (INTx->EXTI_Priority > Priority_3)
return 2; // 错误
INT1_Priority(INTx->EXTI_Priority); // 指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
if (INTx->EXTI_Mode == EXT_MODE_Fall)
IT1 = 1; // 下降沿中断
else
IT1 = 0; // 上升,下降沿中断
return 0; // 成功
}
if (EXT == EXT_INT2) // 外中断2, 固定为下降沿低优先级中断
{
if (INTx->EXTI_Interrupt == ENABLE)
INT_CLKO |= (1 << 4); // 允许中断
else
INT_CLKO &= ~(1 << 4); // 禁止中断
return 0; // 成功
}
if (EXT == EXT_INT3) // 外中断3, 固定为下降沿低优先级中断
{
if (INTx->EXTI_Interrupt == ENABLE)
INT_CLKO |= (1 << 5); // 允许中断
else
INT_CLKO &= ~(1 << 5); // 禁止中断
return 0; // 成功
}
if (EXT == EXT_INT4) // 外中断4, 固定为下降沿低优先级中断
{
if (INTx->EXTI_Interrupt == ENABLE)
INT_CLKO |= (1 << 6); // 允许中断
else
INT_CLKO &= ~(1 << 6); // 禁止中断
return 0; // 成功
}
return 2; // 失败
}
void Exti_config(void)
{
EXTI_InitTypeDef Exti_InitStructure; // 结构定义
Exti_InitStructure.EXTI_Interrupt = ENABLE; // 中断使能, ENABLE或DISABLE
Exti_InitStructure.EXTI_Mode = EXT_MODE_RiseFall; // 中断模式, EXT_MODE_RiseFall,EXT_MODE_Fall
Exti_InitStructure.EXTI_Priority = Priority_0; // 指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
Ext_Inilize(EXT_INT0, &Exti_InitStructure); // 初始化
}

137
mycode/GPIO.c Normal file
View File

@ -0,0 +1,137 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
/*************** 功能说明 ****************
STC8系列的端口初始化程序,.
******************************************/
#include "GPIO.h"
//========================================================================
// 函数: u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
// 描述: 初始化IO口.
// 参数: GPIOx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
{
if (GPIO > GPIO_P7)
return 1; // 空操作
if (GPIOx->Mode > GPIO_OUT_PP)
return 2; // 错误
if (GPIO == GPIO_P0)
{
if (GPIOx->Mode == GPIO_PullUp)
P0M1 &= ~GPIOx->Pin, P0M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P0M1 |= GPIOx->Pin, P0M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P0M1 |= GPIOx->Pin, P0M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P0M1 &= ~GPIOx->Pin, P0M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P1)
{
if (GPIOx->Mode == GPIO_PullUp)
P1M1 &= ~GPIOx->Pin, P1M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P1M1 |= GPIOx->Pin, P1M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P1M1 |= GPIOx->Pin, P1M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P1M1 &= ~GPIOx->Pin, P1M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P2)
{
if (GPIOx->Mode == GPIO_PullUp)
P2M1 &= ~GPIOx->Pin, P2M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P2M1 |= GPIOx->Pin, P2M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P2M1 |= GPIOx->Pin, P2M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P2M1 &= ~GPIOx->Pin, P2M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P3)
{
if (GPIOx->Mode == GPIO_PullUp)
P3M1 &= ~GPIOx->Pin, P3M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P3M1 |= GPIOx->Pin, P3M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P3M1 |= GPIOx->Pin, P3M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P3M1 &= ~GPIOx->Pin, P3M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P4)
{
if (GPIOx->Mode == GPIO_PullUp)
P4M1 &= ~GPIOx->Pin, P4M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P4M1 |= GPIOx->Pin, P4M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P4M1 |= GPIOx->Pin, P4M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P4M1 &= ~GPIOx->Pin, P4M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P5)
{
if (GPIOx->Mode == GPIO_PullUp)
P5M1 &= ~GPIOx->Pin, P5M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P5M1 |= GPIOx->Pin, P5M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P5M1 |= GPIOx->Pin, P5M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P5M1 &= ~GPIOx->Pin, P5M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P6)
{
if (GPIOx->Mode == GPIO_PullUp)
P6M1 &= ~GPIOx->Pin, P6M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P6M1 |= GPIOx->Pin, P6M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P6M1 |= GPIOx->Pin, P6M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P6M1 &= ~GPIOx->Pin, P6M0 |= GPIOx->Pin; // 推挽输出
}
if (GPIO == GPIO_P7)
{
if (GPIOx->Mode == GPIO_PullUp)
P7M1 &= ~GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // 上拉准双向口
if (GPIOx->Mode == GPIO_HighZ)
P7M1 |= GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // 浮空输入
if (GPIOx->Mode == GPIO_OUT_OD)
P7M1 |= GPIOx->Pin, P7M0 |= GPIOx->Pin; // 开漏输出
if (GPIOx->Mode == GPIO_OUT_PP)
P7M1 &= ~GPIOx->Pin, P7M0 |= GPIOx->Pin; // 推挽输出
}
return 0; // 成功
}
void GPIO_config(void)
{
GPIO_InitTypeDef GPIO_InitStructure; // 结构定义
GPIO_InitStructure.Pin = GPIO_Pin_2; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_PullUp; // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P3, &GPIO_InitStructure); // 初始化
GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2; // 指定要初始化的IO, GPIO_Pin_0 ~ GPIO_Pin_7, 或操作
GPIO_InitStructure.Mode = GPIO_OUT_PP; // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
GPIO_Inilize(GPIO_P1, &GPIO_InitStructure); // 初始化
power1_gpio = 0;
power2_gpio = 0;
power3_gpio = 0;
}

28
mycode/main.c Normal file
View File

@ -0,0 +1,28 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
#include "config.h"
#include "GPIO.h"
#include "Exti.h"
#include "timer.h"
/******************** 主函数***********************/
void main(void)
{
GPIO_config();
Exti_config();
Timer_config();
EA = 1;
while (1)
{
}
}

176
mycode/timer.c Normal file
View File

@ -0,0 +1,176 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
/************* 功能说明 **************
STC8系列的定时器初始化和中断程序,.
******************************************/
#include "timer.h"
u8 KILL_time = 0;
/********************* Timer0中断函数************************/
void timer0_int (void) interrupt TIMER0_VECTOR
{
if (KILL_time)
{
KILL_time--;
}
}
/********************* Timer1中断函数************************/
void timer1_int (void) interrupt TIMER1_VECTOR
{
}
/********************* Timer2中断函数************************/
void timer2_int (void) interrupt TIMER2_VECTOR
{
}
/********************* Timer3中断函数************************/
void timer3_int (void) interrupt TIMER3_VECTOR
{
}
/********************* Timer4中断函数************************/
void timer4_int (void) interrupt TIMER4_VECTOR
{
}
//========================================================================
// 函数: u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
// 描述: 定时器初始化程序.
// 参数: TIMx: 结构参数,请参考timer.h里的定义.
// 返回: 成功返回0, 空操作返回1,错误返回2.
// 版本: V1.0, 2012-10-22
//========================================================================
u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx)
{
if(TIM > Timer4) return 1; //空操作
if(TIM == Timer0)
{
Timer0_Stop(); //停止计数
if(TIMx->TIM_Interrupt == ENABLE) Timer0_InterruptEnable(); //允许中断
else Timer0_InterruptDisable(); //禁止中断
if(TIMx->TIM_Priority > Priority_3) return 2; //错误
Timer0_Priority(TIMx->TIM_Priority); //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //错误
TMOD = (TMOD & ~0x03) | TIMx->TIM_Mode; //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 不可屏蔽16位自动重装
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer0_12T(); //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer0_1T(); //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer0_AsCounter(); //对外计数或分频
else Timer0_AsTimer(); //定时
if(TIMx->TIM_ClkOut == ENABLE) Timer0_CLKO_Enable(); //输出时钟
else Timer0_CLKO_Disable(); //不输出时钟
T0_Load(TIMx->TIM_Value);
if(TIMx->TIM_Run == ENABLE) Timer0_Run(); //开始运行
return 0; //成功
}
if(TIM == Timer1)
{
Timer1_Stop(); //停止计数
if(TIMx->TIM_Interrupt == ENABLE) Timer1_InterruptEnable(); //允许中断
else Timer1_InterruptDisable(); //禁止中断
if(TIMx->TIM_Priority > Priority_3) return 2; //错误
Timer1_Priority(TIMx->TIM_Priority); //指定中断优先级(低到高) Priority_0,Priority_1,Priority_2,Priority_3
if(TIMx->TIM_Mode >= TIM_16BitAutoReloadNoMask) return 2; //错误
TMOD = (TMOD & ~0x30) | (TIMx->TIM_Mode<<4); //工作模式,0: 16位自动重装, 1: 16位定时/计数, 2: 8位自动重装, 3: 停止工作
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer1_12T(); //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer1_1T(); //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer1_AsCounter(); //对外计数或分频
else Timer1_AsTimer(); //定时
if(TIMx->TIM_ClkOut == ENABLE) Timer1_CLKO_Enable(); //输出时钟
else Timer1_CLKO_Disable(); //不输出时钟
T1_Load(TIMx->TIM_Value);
if(TIMx->TIM_Run == ENABLE) Timer1_Run(); //开始运行
return 0; //成功
}
if(TIM == Timer2) //Timer2,固定为16位自动重装, 中断无优先级
{
Timer2_Stop(); //停止计数
if(TIMx->TIM_Interrupt == ENABLE) Timer2_InterruptEnable(); //允许中断
else Timer2_InterruptDisable(); //禁止中断
if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer2_12T(); //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer2_1T(); //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer2_AsCounter(); //对外计数或分频
else Timer2_AsTimer(); //定时
if(TIMx->TIM_ClkOut == ENABLE) Timer2_CLKO_Enable(); //输出时钟
else Timer2_CLKO_Disable(); //不输出时钟
T2_Load(TIMx->TIM_Value);
if(TIMx->TIM_Run == ENABLE) Timer2_Run(); //开始运行
return 0; //成功
}
if(TIM == Timer3) //Timer3,固定为16位自动重装, 中断无优先级
{
Timer3_Stop(); //停止计数
if(TIMx->TIM_Interrupt == ENABLE) Timer3_InterruptEnable(); //允许中断
else Timer3_InterruptDisable(); //禁止中断
if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer3_12T(); //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer3_1T(); //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer3_AsCounter(); //对外计数或分频
else Timer3_AsTimer(); //定时
if(TIMx->TIM_ClkOut == ENABLE) Timer3_CLKO_Enable(); //输出时钟
else Timer3_CLKO_Disable(); //不输出时钟
T3_Load(TIMx->TIM_Value);
if(TIMx->TIM_Run == ENABLE) Timer3_Run(); //开始运行
return 0; //成功
}
if(TIM == Timer4) //Timer3,固定为16位自动重装, 中断无优先级
{
Timer4_Stop(); //停止计数
if(TIMx->TIM_Interrupt == ENABLE) Timer4_InterruptEnable(); //允许中断
else Timer4_InterruptDisable(); //禁止中断
if(TIMx->TIM_ClkSource > TIM_CLOCK_Ext) return 2;
if(TIMx->TIM_ClkSource == TIM_CLOCK_12T) Timer4_12T(); //12T
if(TIMx->TIM_ClkSource == TIM_CLOCK_1T) Timer4_1T(); //1T
if(TIMx->TIM_ClkSource == TIM_CLOCK_Ext) Timer4_AsCounter(); //对外计数或分频
else Timer4_AsTimer(); //定时
if(TIMx->TIM_ClkOut == ENABLE) Timer4_CLKO_Enable(); //输出时钟
else Timer4_CLKO_Disable(); //不输出时钟
T4_Load(TIMx->TIM_Value);
if(TIMx->TIM_Run == ENABLE) Timer4_Run(); //开始运行
return 0; //成功
}
return 2; //错误
}
/************************ ?¨?±?÷???? ****************************/
void Timer_config(void)
{
TIM_InitTypeDef TIM_InitStructure;
TIM_InitStructure.TIM_Mode = TIM_16BitAutoReload;
TIM_InitStructure.TIM_Priority = Priority_0;
TIM_InitStructure.TIM_Interrupt = ENABLE;
TIM_InitStructure.TIM_ClkSource = TIM_CLOCK_1T;
TIM_InitStructure.TIM_ClkOut = DISABLE;
TIM_InitStructure.TIM_Value = 65536UL - (MAIN_Fosc / 1000UL);
TIM_InitStructure.TIM_Run = ENABLE;
Timer_Inilize(Timer0,&TIM_InitStructure);
}

38
myinc/Exti.h Normal file
View File

@ -0,0 +1,38 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* <20><><EFBFBD>Ҫ<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˴<C3B4><CBB4><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>STC<54><43><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> */
/*---------------------------------------------------------------------*/
#ifndef __EXTI_H
#define __EXTI_H
#include "config.h"
#include "GPIO.h"
#include "timer.h"
#define EXT_INT0 0 // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>0
#define EXT_INT1 1 // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>1
#define EXT_INT2 2 // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>2
#define EXT_INT3 3 // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>3
#define EXT_INT4 4 // <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>4
#define EXT_MODE_RiseFall 0 // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ж<EFBFBD>
#define EXT_MODE_Fall 1 // <20>½<EFBFBD><C2BD><EFBFBD><EFBFBD>ж<EFBFBD>
typedef struct
{
u8 EXTI_Mode; // <20>ж<EFBFBD>ģʽ, EXT_MODE_RiseFall, EXT_MODE_Fall
u8 EXTI_Priority; // <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD> Priority_0,Priority_1,Priority_2,Priority_3
u8 EXTI_Interrupt; // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD> ENABLE,DISABLE
} EXTI_InitTypeDef;
u8 Ext_Inilize(u8 EXT, EXTI_InitTypeDef *INTx);
void Exti_config(void);
#endif

53
myinc/GPIO.h Normal file
View File

@ -0,0 +1,53 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
#ifndef __GPIO_H
#define __GPIO_H
#include "config.h"
#define GPIO_PullUp 0 //上拉准双向口
#define GPIO_HighZ 1 //浮空输入
#define GPIO_OUT_OD 2 //开漏输出
#define GPIO_OUT_PP 3 //推挽输出
#define GPIO_Pin_0 0x01 //IO引脚 Px.0
#define GPIO_Pin_1 0x02 //IO引脚 Px.1
#define GPIO_Pin_2 0x04 //IO引脚 Px.2
#define GPIO_Pin_3 0x08 //IO引脚 Px.3
#define GPIO_Pin_4 0x10 //IO引脚 Px.4
#define GPIO_Pin_5 0x20 //IO引脚 Px.5
#define GPIO_Pin_6 0x40 //IO引脚 Px.6
#define GPIO_Pin_7 0x80 //IO引脚 Px.7
#define GPIO_Pin_All 0xFF //IO所有引脚
#define GPIO_P0 0 //
#define GPIO_P1 1
#define GPIO_P2 2
#define GPIO_P3 3
#define GPIO_P4 4
#define GPIO_P5 5
#define GPIO_P6 6
#define GPIO_P7 7
#define kill_gpio P32
#define power1_gpio P10
#define power2_gpio P11
#define power3_gpio P12
typedef struct
{
u8 Mode; //IO模式, GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
u8 Pin; //要设置的端口
} GPIO_InitTypeDef;
u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx);
void GPIO_config(void);
#endif

2747
myinc/STC8xxxx.H Normal file

File diff suppressed because it is too large Load Diff

33
myinc/config.h Normal file
View File

@ -0,0 +1,33 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* <20><><EFBFBD>Ҫ<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˴<C3B4><CBB4><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>STC<54><43><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> */
/*---------------------------------------------------------------------*/
#ifndef __CONFIG_H
#define __CONFIG_H
/*********************************************************/
//#define MAIN_Fosc 22118400L //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//#define MAIN_Fosc 12000000L //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define MAIN_Fosc 11059200L //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
//#define MAIN_Fosc 5529600L //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// #define MAIN_Fosc 24000000L //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
#define STC8Hxx //STC8Hϵ<48><CFB5>
//#define STC8Gxx //STC8Gϵ<47><CFB5>
/*********************************************************/
#include "STC8xxxx.H"
#endif

47
myinc/timer.h Normal file
View File

@ -0,0 +1,47 @@
/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* <20><><EFBFBD>Ҫ<EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ʹ<EFBFBD>ô˴<C3B4><CBB4><EFBFBD>,<2C><><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD><EFBFBD><EFBFBD>ע<EFBFBD><D7A2>ʹ<EFBFBD><CAB9><EFBFBD><EFBFBD>STC<54><43><EFBFBD><EFBFBD><EFBFBD>ϼ<EFBFBD><CFBC><EFBFBD><EFBFBD><EFBFBD> */
/*---------------------------------------------------------------------*/
#ifndef __TIMER_H
#define __TIMER_H
#include "config.h"
#define Timer0 0
#define Timer1 1
#define Timer2 2
#define Timer3 3
#define Timer4 4
#define TIM_16BitAutoReload 0
#define TIM_16Bit 1
#define TIM_8BitAutoReload 2
#define TIM_16BitAutoReloadNoMask 3
#define TIM_CLOCK_1T 0
#define TIM_CLOCK_12T 1
#define TIM_CLOCK_Ext 2
typedef struct
{
u8 TIM_Mode; // <20><><EFBFBD><EFBFBD>ģʽ, TIM_16BitAutoReload,TIM_16Bit,TIM_8BitAutoReload,TIM_16BitAutoReloadNoMask
u8 TIM_Priority; // <20><><EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD><EFBFBD><EFBFBD> Priority_0,Priority_1,Priority_2,Priority_3
u8 TIM_Interrupt; // <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD> ENABLE,DISABLE
u8 TIM_ClkSource; // ʱ<><CAB1>Դ TIM_CLOCK_1T,TIM_CLOCK_12T,TIM_CLOCK_Ext
u8 TIM_ClkOut; // <20>ɱ<EFBFBD><C9B1>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD>, ENABLE,DISABLE
u16 TIM_Value; // װ<>س<EFBFBD>ֵ
u8 TIM_Run; // <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD> ENABLE,DISABLE
} TIM_InitTypeDef;
u8 Timer_Inilize(u8 TIM, TIM_InitTypeDef *TIMx);
extern u8 KILL_time;
void Timer_config(void);
#endif