2023-04-11 08:51:37 +08:00

175 lines
7.7 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

C51 COMPILER V9.60.0.0 EXTI 04/10/2023 17:45:08 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 17:45:08 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 17:45:08 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)