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)