阳光路上歌曲原唱:61板实现位操作的头文件
来源:百度文库 编辑:九乡新闻网 时间:2024/04/28 18:51:09
//用习惯了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
#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
61板实现位操作的头文件
linux文件的操作 流程
文件操作
女士的头位如何转动
string头文件与cstring头文件
揭秘Windows7最高的文件操作权限
socket头文件
第十三节 文件操作
Javascript----文件操作
Javascript----文件操作
Python 操作 ini文件
操作质量体系文件
C#目录及目录下的所有文件的操作
用C++进行简单的文件I/O操作
电脑操作:误删文件后快速找回的方法!
H8/3048头文件库
关于ARM寄存器头文件
stdlib.h这个头文件
VC(C)操作文件之-文件的打开(fopen函数)
内存中字节操作--高低位的问题
使用iText操作pdf文件
通过文件头标识判断图片格式
关于工商消字[2007]227号文件的操作问题
ASP.NET中XML文件操作篇