自制编写51单片机封装库

以下包含:三个文件,main.c、gpoi.c、gpio.h

 1 /*
 2 *主函数
 3 */
 4 
 5 #include <reg52.h>
 6 #include <gpio.h>
 7 
 8 void main()
 9     
10 {
11   P2 = 0;
12     setBit(GPIO_2,3);//GPIO_2意思是选择P2端口,3意思是选择P2.3这个位
13     while(1);
14 }
 1 /*
 2 *gpio.c文件
 3 */
 4 
 5 
 6 #include <GPIO.h>
 7 #include <reg52.h>
 8 
 9 void setBit(unsigned char gpio,unsigned char pin)
10 {
11         unsigned char i = 1;//0000 0001
12       i = i<<pin;//做移运算,pin对应的位为1,其他为0
13     switch(gpio)//选择P0 P1 P2 P3
14     {
15         case 0:
16             P0 |=i;
17         break;
18         case 1:
19             P1 |=i;
20         break;
21         case 2:
22             P2 |=i;
23         break;
24         case 3:
25             P3 |=i;
26         break;
27         
28     }
29 }
30 void resetBit(unsigned char gpio,unsigned char pin)
31 {
32 unsigned char i = 1;                                                                                                    //0000 0001
33     i = i<<pin;//做移运算,pin对应的位为1,其他为0    假如:pin输入3          0000 0100
34     i = ~i;//取反                                                                                                                    1111 1011
35     switch(gpio)
36     {
37         case 0:
38             P0 &=i;//按位与运算 有两个1才是1   1111 1011  所以第三为肯定为0,输出低电平
39         break;
40         case 1:
41             P1 &=i;
42         break;
43         case 2:
44             P2 &=i;
45         break;
46         case 3:
47             P3 &=i;
48         break;
49         
50     }
51 }
 1 /*
 2 *gpio.h文件 
 3 */
 4 
 5 #ifndef _GPIO_H_
 6 #define _GPIO_H_
 7 //枚举  0 1 2 3 表示P0 P2 P3 P4
 8 enum gpio{
 9     GPIO_0 = 0,GPIO_1 = 1,
10     GPIO_2 = 2,GPIO_3 = 3
11     };
12 /*
13     *把某个引脚设置为高电平
14     *@param gpio:枚举常量gpio
15     *@param pin:各IO寄存器对应的引脚有序号
16     */
17 
18 void etBit(
19     unsigned char gpio,
20     unsigned char pin);
21         
22     void resetBit(
23         unsigned char gpio,
24     unsigned char pin);
25     #endif
原文地址:https://www.cnblogs.com/kinson/p/7575285.html