2023-03-23 17:00:05 +08:00

180 lines
9.6 KiB
Plaintext
Raw 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 GPIO 03/23/2023 13:25:30 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 // 函数: u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
22 // 描述: 初始化IO口.
23 // 参数: GPIOx: 结构参数,请参考timer.h里的定义.
24 // 返回: 成功返回0, 空操作返回1,错误返回2.
25 // 版本: V1.0, 2012-10-22
26 //========================================================================
27 u8 GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx)
28 {
29 1 if (GPIO > GPIO_P7)
30 1 return 1; // 空操作
31 1 if (GPIOx->Mode > GPIO_OUT_PP)
32 1 return 2; // 错误
33 1 if (GPIO == GPIO_P0)
34 1 {
35 2 if (GPIOx->Mode == GPIO_PullUp)
36 2 P0M1 &= ~GPIOx->Pin, P0M0 &= ~GPIOx->Pin; // 上拉准双向口
37 2 if (GPIOx->Mode == GPIO_HighZ)
38 2 P0M1 |= GPIOx->Pin, P0M0 &= ~GPIOx->Pin; // 浮空输入
39 2 if (GPIOx->Mode == GPIO_OUT_OD)
40 2 P0M1 |= GPIOx->Pin, P0M0 |= GPIOx->Pin; // 开漏输出
41 2 if (GPIOx->Mode == GPIO_OUT_PP)
42 2 P0M1 &= ~GPIOx->Pin, P0M0 |= GPIOx->Pin; // 推挽输出
43 2 }
44 1 if (GPIO == GPIO_P1)
45 1 {
46 2 if (GPIOx->Mode == GPIO_PullUp)
47 2 P1M1 &= ~GPIOx->Pin, P1M0 &= ~GPIOx->Pin; // 上拉准双向口
48 2 if (GPIOx->Mode == GPIO_HighZ)
49 2 P1M1 |= GPIOx->Pin, P1M0 &= ~GPIOx->Pin; // 浮空输入
50 2 if (GPIOx->Mode == GPIO_OUT_OD)
51 2 P1M1 |= GPIOx->Pin, P1M0 |= GPIOx->Pin; // 开漏输出
52 2 if (GPIOx->Mode == GPIO_OUT_PP)
53 2 P1M1 &= ~GPIOx->Pin, P1M0 |= GPIOx->Pin; // 推挽输出
54 2 }
C51 COMPILER V9.60.0.0 GPIO 03/23/2023 13:25:30 PAGE 2
55 1 if (GPIO == GPIO_P2)
56 1 {
57 2 if (GPIOx->Mode == GPIO_PullUp)
58 2 P2M1 &= ~GPIOx->Pin, P2M0 &= ~GPIOx->Pin; // 上拉准双向口
59 2 if (GPIOx->Mode == GPIO_HighZ)
60 2 P2M1 |= GPIOx->Pin, P2M0 &= ~GPIOx->Pin; // 浮空输入
61 2 if (GPIOx->Mode == GPIO_OUT_OD)
62 2 P2M1 |= GPIOx->Pin, P2M0 |= GPIOx->Pin; // 开漏输出
63 2 if (GPIOx->Mode == GPIO_OUT_PP)
64 2 P2M1 &= ~GPIOx->Pin, P2M0 |= GPIOx->Pin; // 推挽输出
65 2 }
66 1 if (GPIO == GPIO_P3)
67 1 {
68 2 if (GPIOx->Mode == GPIO_PullUp)
69 2 P3M1 &= ~GPIOx->Pin, P3M0 &= ~GPIOx->Pin; // 上拉准双向口
70 2 if (GPIOx->Mode == GPIO_HighZ)
71 2 P3M1 |= GPIOx->Pin, P3M0 &= ~GPIOx->Pin; // 浮空输入
72 2 if (GPIOx->Mode == GPIO_OUT_OD)
73 2 P3M1 |= GPIOx->Pin, P3M0 |= GPIOx->Pin; // 开漏输出
74 2 if (GPIOx->Mode == GPIO_OUT_PP)
75 2 P3M1 &= ~GPIOx->Pin, P3M0 |= GPIOx->Pin; // 推挽输出
76 2 }
77 1 if (GPIO == GPIO_P4)
78 1 {
79 2 if (GPIOx->Mode == GPIO_PullUp)
80 2 P4M1 &= ~GPIOx->Pin, P4M0 &= ~GPIOx->Pin; // 上拉准双向口
81 2 if (GPIOx->Mode == GPIO_HighZ)
82 2 P4M1 |= GPIOx->Pin, P4M0 &= ~GPIOx->Pin; // 浮空输入
83 2 if (GPIOx->Mode == GPIO_OUT_OD)
84 2 P4M1 |= GPIOx->Pin, P4M0 |= GPIOx->Pin; // 开漏输出
85 2 if (GPIOx->Mode == GPIO_OUT_PP)
86 2 P4M1 &= ~GPIOx->Pin, P4M0 |= GPIOx->Pin; // 推挽输出
87 2 }
88 1 if (GPIO == GPIO_P5)
89 1 {
90 2 if (GPIOx->Mode == GPIO_PullUp)
91 2 P5M1 &= ~GPIOx->Pin, P5M0 &= ~GPIOx->Pin; // 上拉准双向口
92 2 if (GPIOx->Mode == GPIO_HighZ)
93 2 P5M1 |= GPIOx->Pin, P5M0 &= ~GPIOx->Pin; // 浮空输入
94 2 if (GPIOx->Mode == GPIO_OUT_OD)
95 2 P5M1 |= GPIOx->Pin, P5M0 |= GPIOx->Pin; // 开漏输出
96 2 if (GPIOx->Mode == GPIO_OUT_PP)
97 2 P5M1 &= ~GPIOx->Pin, P5M0 |= GPIOx->Pin; // 推挽输出
98 2 }
99 1 if (GPIO == GPIO_P6)
100 1 {
101 2 if (GPIOx->Mode == GPIO_PullUp)
102 2 P6M1 &= ~GPIOx->Pin, P6M0 &= ~GPIOx->Pin; // 上拉准双向口
103 2 if (GPIOx->Mode == GPIO_HighZ)
104 2 P6M1 |= GPIOx->Pin, P6M0 &= ~GPIOx->Pin; // 浮空输入
105 2 if (GPIOx->Mode == GPIO_OUT_OD)
106 2 P6M1 |= GPIOx->Pin, P6M0 |= GPIOx->Pin; // 开漏输出
107 2 if (GPIOx->Mode == GPIO_OUT_PP)
108 2 P6M1 &= ~GPIOx->Pin, P6M0 |= GPIOx->Pin; // 推挽输出
109 2 }
110 1 if (GPIO == GPIO_P7)
111 1 {
112 2 if (GPIOx->Mode == GPIO_PullUp)
113 2 P7M1 &= ~GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // 上拉准双向口
114 2 if (GPIOx->Mode == GPIO_HighZ)
115 2 P7M1 |= GPIOx->Pin, P7M0 &= ~GPIOx->Pin; // 浮空输入
116 2 if (GPIOx->Mode == GPIO_OUT_OD)
C51 COMPILER V9.60.0.0 GPIO 03/23/2023 13:25:30 PAGE 3
117 2 P7M1 |= GPIOx->Pin, P7M0 |= GPIOx->Pin; // 开漏输出
118 2 if (GPIOx->Mode == GPIO_OUT_PP)
119 2 P7M1 &= ~GPIOx->Pin, P7M0 |= GPIOx->Pin; // 推挽输出
120 2 }
121 1 return 0; // 成功
122 1 }
123 /******************** IO口配置 ********************/
124 void GPIO_config(void)
125 {
126 1 GPIO_InitTypeDef GPIO_InitStructure; // 结构定义
127 1
128 1 GPIO_InitStructure.Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // 指定要初始
-化 或操作p32
129 1 GPIO_InitStructure.Mode = GPIO_PullUp; // 指定IO的输
-入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
130 1 GPIO_Inilize(GPIO_P3, &GPIO_InitStructure); // 初始化
131 1
132 1 GPIO_InitStructure.Pin = GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4; // 指定要初始化 或操作输出使能
133 1 GPIO_InitStructure.Mode = GPIO_OUT_PP; // 指定IO的输入或输出方式,GPIO_PullUp,G
-PIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
134 1 GPIO_Inilize(GPIO_P1, &GPIO_InitStructure); // 初始化
135 1
136 1 GPIO_InitStructure.Pin = GPIO_Pin_0 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; // 指定要初始化 或操作输出
-使能
137 1 GPIO_InitStructure.Mode = GPIO_PullUp; // 指定IO的输入或输出方式,
-GPIO_PullUp,GPIO_HighZ,GPIO_OUT_OD,GPIO_OUT_PP
138 1 GPIO_Inilize(GPIO_P1, &GPIO_InitStructure); // 初始化
139 1
140 1 GPIO_InitStructure.Pin = GPIO_Pin_4; // 指定要初始化 或操作输出使能
141 1 GPIO_InitStructure.Mode = GPIO_PullUp; // 指定IO的输入或输出方式,GPIO_PullUp,GPIO_HighZ,GPIO_OUT_
-OD,GPIO_OUT_PP
142 1 GPIO_Inilize(GPIO_P5, &GPIO_InitStructure); // 初始化
143 1 EN=1;
144 1 }
145
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 683 ----
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)