自制编写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

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值