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)