自制编写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
版权声明:本文为kinson原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。