//用习惯了c51,在用凌阳时总感觉不舒服,这样就好多了
#ifndef __bit_H__ #define __bit_H__ /**************************************************************************************/ //位操作,另外,可以对字节操作,每一个单元(单位为16位的字)可以分为高八位和低八位操作; //使用方法:下面的硬件寄存器都定义为了UNport结构体型的指针变量,使用时只要: //端口名->bit.bit0就可以操作端口的第0位; //端口名->byte.bytel就可以操作端口的低八位; //端口名->port就可以操作整个端口; //实际上,操作整个端口时可以用另外一个头文件"hardware.h",直接对*端口名操作就可以了; /***************************************************************************************/ #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 #define P0_6 PA->bit.bit6 #define P0_7 PA->bit.bit7 #define P0_8 PA->bit.bit8 #define P0_9 PA->bit.bit9 #define P0_10 PA->bit.bit10 #define P0_11 PA->bit.bit11 #define P0_12 PA->bit.bit12 #define P0_13 PA->bit.bit13 #define P0_14 PA->bit.bit14 #define P0_15 PA->bit.bit15 #define P1_0 PB->bit.bit0 #define P1_1 PB->bit.bit1 #define P1_2 PB->bit.bit2 #define P1_3 PB->bit.bit3 #define P1_4 PB->bit.bit4 #define P1_5 PB->bit.bit5 #define P1_6 PB->bit.bit6 #define P1_7 PB->bit.bit7 #define P1_8 PB->bit.bit8 #define P1_9 PB->bit.bit9 #define P1_10 PB->bit.bit10 #define P1_11 PB->bit.bit11 #define P1_12 PB->bit.bit12 #define P1_13 PB->bit.bit13 #define P1_14 PB->bit.bit14 #define P1_15 PB->bit.bit15 #define P0 PA->port #define P0_Buffer PA_Buffer->port #define P0_Dir PA_Dir->port #define P0_Attrib PA_Attrib->port #define P0_Latch PA_Latch->port #define P0_Lowbyte PA->byte.bytel #define P0_Highbyte PA->byte.byteh #define P0_Dir_Lowbyte PA_Dir->byte.bytel #define P0_Dir_Highbyte PA_Dir->byte.byteh #define P0_Attrib_Lowbyte PA_Attrib->byte.bytel #define P0_Attrib_Highbyte PA_Attrib->byte.byteh #define P1 PB->port #define P1_Buffer PB_Buffer->port #define P1_Dir PB_Dir->port #define P1_Attrib PB_Attrib->port #define P1_Lowbyte PB->byte.bytel #define P1_Highbyte PB->byte.byteh #define P1_Dir_Lowbyte PB_Dir->byte.bytel #define P1_Dir_Highbyte PB_Dir->byte.byteh #define P1_Attrib_Lowbyte PB_Attrib->byte.bytel #define P1_Attrib_Highbyte PB_Attrib->byte.byteh #define OSC_Unit Poscu->port #define Timebase_Unit Ptbu->port #define Timebase_Clear Ptbc->port #define T0 Pt0->port #define T1 Pt1->port #define T0_Unit Pt0u->port #define T1_Unit Pt1u->port #define INT_Unit Pintu->port #define INT_Clear Pintc->port #define AD_Unit Padu->port #define ADMUX_Unit Padmuxu->port #define AD_Mic Padm->port #define AD_Line Padl->port #define DA_Unit Pdau->port #define DA0 Pda0->port #define DA1 Pda1->port #define Flash_Unit Pflashu->port #define EXT0 PB->bit.bit2 #define EXT1 PB->bit.bit3 #define EXT0_Dir PB_Dir->bit.bit2 #define EXT1_Dir PB_Dir->bit.bit3 #define EXT0_Attrib PB_Attrib->bit.bit2 #define EXT1_Attrib PB_Attrib->bit.bit3 #define UART_Unit1 Puartu1->byte.bytel #define UART_Unit2 Puartu2->byte.bytel #define UART Puart->byte.bytel #define UART_Baud_Low Puartbaudl->byte.bytel #define UART_Baud_High Puartbaudh->byte.bytel #define SCK_Dir PB_Dir->bit.bit0 #define SDA_Dir PB_Dir->bit.bit1 #define SCK_Attrib PB_Attrib->bit.bit0 #define SDA_Attrib PB_Attrib->bit.bit1 #define SCK P1_0 #define SDA P1_1 #define Rx_Dir PB_Dir->bit.bit7 #define Tx_Dir PB_Dir->bit.bit10 #define Rx_Attrib PB_Attrib->bit.bit7 #define Tx_Attrib PB_Attrib->bit.bit10 #define Rx P1_7 #define Tx P1_10 #define Rx_Int_EN Puartu1->bit.bit7 #define Tx_Int_EN Puartu1->bit.bit6 #define UART_Reset Puartu1->bit.bit5 #define Parity Puartu1->bit.bit3 #define Parity_EN Puartu1->bit.bit7 #define Rx_EM Puartu2->bit.bit7 #define Tx_EM Puartu2->bit.bit6 #define Rx_RDY Puartu2->bit.bit7 #define Tx_RDY Puartu2->bit.bit6 #define UART_FE Puartu2->bit.bit5 #define UART_OE Puartu2->bit.bit4 #define UART_PE Puartu2->bit.bit3 #define AD_Open() AD_Unit=0x3d #endif |
|