zoukankan      html  css  js  c++  java
  • typedef struct bit0 : 1

    这句话定义了一个位域,bit0是该位域的域名,而且bit0只占用一个位。
    位域是指信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。为了节省存储空间,并使处理简便,C语言提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几个不同的区域, 并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。 这样就可以把几个不同的对象用一个字节的二进制位域来表示。

    #define Uint unsigned int
    typedef struct
    {
    Uint bit0  : 1;
    Uint bit1  : 1;
    Uint bit2  : 1;
    Uint bit3  : 1;
    Uint bit4  : 1;
    Uint bit5  : 1;
    Uint bit6  : 1;
    Uint bit7  : 1;
    Uint bit8  : 1;
    Uint bit9  : 1;
    Uint bit10 : 1;
    Uint bit11 : 1;
    Uint bit12 : 1;
    Uint bit13 : 1;
    Uint bit14 : 1;
    Uint bit15 : 1;
    }Bit;
    
    
    
    typedef struct
    {
    Uint bytel  : 8;
    Uint byteh  : 8;
    }Byte;
    
    typedef union
    {
    Bit bit;
    Byte byte;
    Uint port;
    }UNport;
    
    
    
    
    #define PA      ((volatile UNport *)(0x7000))
    #define PA_Buffer  ((volatile UNport *)(0x7001))
    #define PA_Dir    ((volatile UNport *)(0x7002))
    #define PA_Attrib    ((volatile UNport *)(0x7003))
    #define PA_Latch    ((volatile UNport *)(0x7004))
    #define PB      ((volatile UNport *)(0x7005))
    #define PB_Buffer    ((volatile UNport *)(0x7006))
    #define PB_Dir    ((volatile UNport *)(0x7007))
    #define PB_Attrib    ((volatile UNport *)(0x7008))
    #define Poscu      ((volatile UNport *)(0x7013))
    #define Ptbu      ((volatile UNport *)(0x700e))
    #define Ptbc      ((volatile UNport *)(0x700f))
    #define Pt0    ((volatile UNport *)(0x700a))
    #define Pt1      ((volatile UNport *)(0x700c))
    #define Pt0u      ((volatile UNport *)(0x700b))
    #define Pt1u      ((volatile UNport *)(0x700d))
    #define Pintu    ((volatile UNport *)(0x7010))
    #define Pintc    ((volatile UNport *)(0x7011))
    #define Padm      ((volatile UNport *)(0x7014))
    #define Padl    ((volatile UNport *)(0x702c))
    #define Padu      ((volatile UNport *)(0x7015))
    #define Padmuxu  ((volatile UNport *)(0x702b))
    #define Pda0      ((volatile UNport *)(0x7017))
    #define Pda1      ((volatile UNport *)(0x7016))
    #define Pdau      ((volatile UNport *)(0x702a))
    #define Pwdogc    ((volatile UNport *)(0x7012))
    #define Pflashu  ((volatile UNport *)(0x7555))
    
    
    
    //-------------------------------------------------------------------------------------------------------
    
    
    
    //以下部分在编程中直接调用使用;
    
    
    
    #define Watchdog_Clear  Pwdogc->port
    
    
    
    #define P0_0  PA->bit.bit0
    #define P0_1  PA->bit.bit1
    #define P0_2  PA->bit.bit2
    #define P0_3  PA->bit.bit3
    #define P0_4  PA->bit.bit4
    #define P0_5  PA->bit.bit5
    这种结构体定义方式书上没有解释?不明白什么意思?Uint bit: 1;
    : 1?没见过?为什么这样可以将凌阳单片机的接口进行位定义?

    回答:

    一.

    typedef struct 
    { 
    Uint bit0 : 1; 
    Uint bit1 : 1; 
    Uint bit2 : 1; 
    Uint bit3 : 1; 
    Uint bit4 : 1; 
    Uint bit5 : 1; 
    Uint bit6 : 1; 
    Uint bit7 : 1; 
    Uint bit8 : 1; 
    Uint bit9 : 1; 
    Uint bit10 : 1; 
    Uint bit11 : 1; 
    Uint bit12 : 1; 
    Uint bit13 : 1; 
    Uint bit14 : 1; 
    Uint bit15 : 1; 
    }Bit; 
    这个结构体有16个单元,每个单元一位,正好可以用于单片机中的数据保存和读取问题.应该是16位机吧

    二.

    typedef struct 
    { 
    Uint bit0 : 1; 
    Uint bit1 : 1; 
    Uint bit2 : 1; 
    Uint bit3 : 1; 
    Uint bit4 : 1; 
    Uint bit5 : 1; 
    Uint bit6 : 1; 
    Uint bit7 : 1; 
    Uint bit8 : 1; 
    Uint bit9 : 1; 
    Uint bit10 : 1; 
    Uint bit11 : 1; 
    Uint bit12 : 1; 
    Uint bit13 : 1; 
    Uint bit14 : 1; 
    Uint bit15 : 1; 
    }Bit; 
    
    每个成员各自占1个bit,这是按bit位来定义结构体的 
     
     
  • 相关阅读:
    jquery 表单清空
    CK-Editor content.replace
    CSS DIV HOVER
    返回上一页并刷新与返回上一页不刷新代码
    Google Java编程风格指南中文版
    编程常见英语词汇
    教你如何删除tomcat服务器的stdout.log文件
    @Autowired @Resource @Qualifier的区别
    JSTL标签,EL表达式,OGNL表达式,struts2标签 汇总
    4.11 application未注入报错解决
  • 原文地址:https://www.cnblogs.com/shirishiqi/p/5434163.html
Copyright © 2011-2022 走看看