这句话定义了一个位域,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?没见过?为什么这样可以将凌阳单片机的接口进行位定义?
回答:
一.
二.