170 lines
8.9 KiB
Plaintext
170 lines
8.9 KiB
Plaintext
C51 COMPILER V9.60.0.0 GPIO 04/10/2023 17:32:45 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 17:32:45 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 17:32:45 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)
|