单片机-C语言-定义和申明
程序员文章站
2022-06-19 10:51:52
以下代码是单片机程序,51单片机,编译器为HT-IDE3000, 简单来说 头文件中只能申明, 变量在头文件中申明时,要加上extern 这个关键字用来告诉编译器,变量在其它的文件中定义,为什么要在头文件中申明变量? >因为想在其它文件里的代码中使用这些变量, 如在a.c中使用b.c里定义的变量, ......
以下代码是单片机程序,51单片机,编译器为ht-ide3000,
简单来说
头文件中只能申明,
变量在头文件中申明时,要加上extern 这个关键字用来告诉编译器,变量在其它的文件中定义,为什么要在头文件中申明变量?---------->因为想在其它文件里的代码中使用这些变量,
如在a.c中使用b.c里定义的变量,
enum 不是变量,是我们自己定义的数据类型,像int char 一样,只不过是我们自己定义的,所以不用加,
1 extern u16 g_u16timebasecount; 2 extern u8 g_8count_2s; 3 extern u8 g_8count_8s; 4 extern u8 g_8count_18s; 5 extern u8 g_8count_60s; 6 extern u8 g_8count_200s; 7 extern u8 g_8count_6h; 8 extern u8 g_8count_200sw;//6hour wash 9 extern u8 g_8count_6hw;//6hour wash 10 extern u8 w_6hw_start; 11 extern u8 w_6hw_end; 12 extern u8 g_state; 13 extern u16 make_6h_count; 14 extern u8 g_once; 15 extern u16 s_c1;//中间变量 16 extern u16 s_c2; 17 extern u16 s_c3; 18 extern u16 s_c4; 19 20 extern u8 uartreceive; 21 extern u8 ad[6]; 22 extern u8 tds[6]; 23 extern u8 count_ad; 24 extern u8 count_ads; 25 extern u16 sumtds_h,sumtds_l,sum; 26 extern u16 temer; 27 28 typedef enum gpiopin 29 { 30 gpio_pin_0 = ((u8)0x01), /*!< pin 0 selected */ 31 gpio_pin_1 = ((u8)0x02), /*!< pin 1 selected */ 32 gpio_pin_2 = ((u8)0x04), /*!< pin 2 selected */ 33 gpio_pin_3 = ((u8)0x08), /*!< pin 3 selected */ 34 gpio_pin_4 = ((u8)0x10), /*!< pin 4 selected */ 35 gpio_pin_5 = ((u8)0x20), /*!< pin 5 selected */ 36 gpio_pin_6 = ((u8)0x40), /*!< pin 6 selected */ 37 gpio_pin_7 = ((u8)0x80), /*!< pin 7 selected */ 38 gpio_pin_lnib = ((u8)0x0f), /*!< low nibble pins selected */ 39 gpio_pin_hnib = ((u8)0xf0), /*!< high nibble pins selected */ 40 gpio_pin_all = ((u8)0xff) /*!< all pins selected */ 41 }gpio_pin_typedef;
函数也在头文件中,也只能申明,不能加函数体
u8 uart_receive();
变量和函数的实现也就是函数体,只能在源文件中定义
1 uflg uf1,uf2,uf3,uf4; 2 u16 g_u16timebasecount; 3 u8 g_8count_2s; 4 u8 g_8count_8s; 5 u8 g_8count_18s; 6 u8 g_8count_60s; 7 u8 g_8count_200s; 8 u8 g_8count_6h; 9 u8 g_8count_200sw;//6hour wash 10 u8 g_8count_6hw;//6hour wash 11 u8 w_6hw_start; 12 u8 w_6hw_end; 13 u8 g_state; 14 u16 make_6h_count; 15 u8 g_once; 16 u16 s_c1;//中间变量 17 u16 s_c2; 18 u16 s_c3; 19 u16 s_c4; 20 u8 uartreceive=0; 21 u8 ad[6]={0,0,0,0,0,0}; 22 u8 tds[6]={0,0,0,0,0,0}; 23 u8 count_ad=0; 24 u8 count_ads=0; 25 u16 sumtds_h=0,sumtds_l=0,sum=0; 26 u16 temer; 27 28 //===========================数据接收=========================================// 29 u8 uart_receive() 30 { 31 u8 data; 32 if(_rxif==1)//如果接收到数据 33 { 34 data=_txr_rxr; 35 return data; 36 } 37 }