• 单片机-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      }
  • 相关阅读:
    湘潭oj1203/邀请赛A称号 数论+java睑板
    Ejb in action(七)——message与JMS
    Post和Get差异
    1.cocos2dx它Menu(CCMenuItemFont,CCMenuItemImage,CCMenuItemLabel,CCMenuItemSprite,CCMenuItemToggle)
    ftk学习记录(IME文章)
    内部类创建一个内部版本
    使用gson和httpclient呼叫微信公众平台API
    hdu
    Beginning Python From Novice to Professional (5) - 条件与循环
    24点经典算法
  • 原文地址:https://www.cnblogs.com/chenzhong-w/p/9610988.html
Copyright © 2020-2023  润新知