首页 | 博客群 | 公社 | 专栏 | 论坛 | 图片 | 资讯 | 注册 | 帮助 | 博客联播 | 随机访问
SPCE061A产生正弦信号的C程序- -| 回首页 | 2006年索引 | - -SPCE061A辅助开发工具

SPCE061A单片机硬件端口操作的头

关键词位操作    硬件端口                                          

#ifndef __reg061_H__
#define __reg061_H__

//-----------------------------------------------------------------------------------
//SPCE061A硬件端口操作头
//桂林电子工业学院 通信与信息工程系 科技协会
//可以位操作,可以对字节操作,每一个单元(单位为16位的字)可以分为高八位和低八位操作;
//使用方法:下面的硬件寄存器都定义为了UNport结构体型的指针变量;
//端口名->bit.bit0就可以操作端口的第0位;
//端口名->byte.bytel就可以操作端口的低八位;
//端口名->port就可以操作整个端口;
//------------------------------------------------------------------------------------

#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 struct
{
    Uint rsc : 6;
    Uint pwm : 4;
    Uint others : 6;
}Tunit;

typedef union
{
 Bit bit;
 Byte byte;
    Tunit tunit;
 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 TA_Unit   Pt0u->port
#define TB_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 T0_Unit         Pt0u->tunit.rsc
#define T1_Unit         Pt1u->tunit.rsc
#define PWM0            Pt0u->tunit.pwm
#define PWM1            Pt1u->tunit.pwm

#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

#endif

【作者: mubo814】【访问统计:】【2006年02月24日 星期五 23:06】【注册】【打印

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=4532524

博客手拉手

回复

- 评论人:旋转无限   2007-03-09 10:17:04   

你好!能帮我找一份有关spce061a的英文资料吗?谢谢了!
邮箱:alice_2006_08@126.com

验证码:   
评论内容: