#ifndef __44B0X_H__
#define __44B0X_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "option.h"
//定义了44b0的系统配置寄存器
#definerSYSCFG(*(volatile unsigned *)0x1c00000)
//定义了44b0中2个不可作为Cache存储区的启示与结束地址的寄//存器地址
#definerNCACHBE0(*(volatile unsigned *)0x1c00004)
#definerNCACHBE1(*(volatile unsigned *)0x1c00008)
//定义了44b0中存储总线控制器的优先级的寄存器地址
#definerSBUSCON(*(volatile unsigned *)0x1c40000)
//定义了44b0中与此出去相关的寄存器地址
#definerBWSCON(*(volatile unsigned*)0x1c80000) //总线宽度/等待控制寄存器地址
#definerBANKCON0(*(volatile unsigned*)0x1c80004)
#definerBANKCON1(*(volatile unsigned *)0x1c80008)
#definerBANKCON2(*(volatile unsigned *)0x1c8000c)
#definerBANKCON3(*(volatile unsigned *)0x1c80010)
#definerBANKCON4(*(volatile unsigned *)0x1c80014)
#definerBANKCON5(*(volatile unsigned *)0x1c80018)
#definerBANKCON6(*(volatile unsigned *)0x1c8001c)
#definerBANKCON7(*(volatile unsigned*)0x1c80020)//定义了8个Bank控制寄存器//地址
#definerREFRESH(*(volatile unsigned*)0x1c80024)//定义DRAM/SDRAM刷新控//制器地址
#definerBANKSIZE(*(volatile unsigned*)0x1c80028)//定义Bank大小寄存器地址
#definerMRSRB6(*(volatile unsigned *)0x1c8002c)
#definerMRSRB7(*(volatile unsigned*)0x1c80030)//定义Bank6和Bank7模式设置//寄存器地址
//定义可44b0中与UART有关的寄存器地址
#definerULCON0(*(volatile unsigned *)0x1d00000)
#definerULCON1(*(volatile unsigned*)0x1d04000)//定义两个控制器寄存器地址
#definerUCON0(*(volatile unsigned *)0x1d00004)
#definerUCON1(*(volatile unsigned*)0x1d04004)//定义UART控制寄存器地址
#definerUFCON0(*(volatile unsigned *)0x1d00008)
#definerUFCON1(*(volatile unsigned*)0x1d04008)//定义两个UART FIFO
//控制寄存器地址
#definerUMCON0(*(volatile unsigned*)0x1d0000c)
#definerUMCON1(*(volatile unsigned*)0x1d0400c)//定义两个UART MODEM
//控制寄存器地址
#definerUTRSTAT0(*(volatile unsigned*)0x1d00010)
#definerUTRSTAT1(*(volatile unsigned*)0x1d04010)//定义两个UART TX/RX
//状态寄存器地址
#definerUERSTAT0(*(volatile unsigned *)0x1d00014)
#definerUERSTAT1(*(volatile unsigned*)0x1d04014)//定义两个UART错误状态寄存//器地址
#define rUFSTAT0 (*(volatile unsigned*)0x1d00018)
#define rUFSTAT1 (*(volatile unsigned*)0x1d04018)//定义两个UART FIFO
//控制寄存器地址
#definerUMSTAT0(*(volatile unsigned *)0x1d0001c)
#definerUMSTAT1(*(volatile unsigned*)0x1d0401c)//定义两个UART MODEM
//控制寄存器地址
#definerUBRDIV0(*(volatile unsigned *)0x1d00028)
#definerUBRDIV1(*(volatile unsigned*)0x1d04028)//定义了2个UART波特率分频//寄存器地址
#ifdef__BIG_ENDIAN//当系统定义为大端存贮模式时各寄存器的地址
#definerUTXH0(*(volatile unsigned char *)0x1d00023)
#definerUTXH1(*(volatile unsigned char*)0x1d04023)//2个UART发送保持寄存//器地址
#definerURXH0(*(volatile unsigned char *)0x1d00027)
#definerURXH1(*(volatile unsigned char*)0x1d04027)//2个UART接受保持寄存//器地址
#define WrUTXH0(ch) (*(volatile unsigned char*)(0x1d00023))=(unsigned char)(ch)
#define WrUTXH1(ch) (*(volatile unsigned char*)(0x1d04023))=(unsigned char)(ch)
#defineRdURXH0()(*(volatile unsigned char *)(0x1d00027))
#defineRdURXH1()(*(volatile unsigned char *)(0x1d04027))//把以上地址里的值强制转//换成char型
#defineUTXH0(0x1d00020+3) //byte_access address by BDMA
#defineUTXH1(0x1d04020+3)
#defineURXH0(0x1d00024+3)
#defineURXH1(0x1d04024+3)
#else LittleEndian//当系统调用为小端存储模式时各寄存器的地址,设置同大端类似
#definerUTXH0(*(volatile unsigned char *)0x1d00020)
#definerUTXH1(*(volatile unsigned char *)0x1d04020)
#definerURXH0(*(volatile unsigned char *)0x1d00024)
#definerURXH1(*(volatile unsigned char *)0x1d04024)
#define WrUTXH0(ch) (*(volatile unsigned char*)0x1d00020)=(unsigned char)(ch)
#define WrUTXH1(ch) (*(volatile unsigned char*)0x1d04020)=(unsigned char)(ch)
#defineRdURXH0()(*(volatile unsigned char *)0x1d00024)
#defineRdURXH1()(*(volatile unsigned char *)0x1d04024)
#defineUTXH0(0x1d00020)//byte_access address by BDMA
#defineUTXH1(0x1d04020)
#defineURXH0(0x1d00024)
#defineURXH1(0x1d04024)
#endif
//定义了44b0中与同步I/O口相关的寄存器地址
#definerSIOCON(*(volatile unsigned*)0x1d14000)//SIO控制寄存器地址
#definerSIODAT(*(volatile unsigned*)0x1d14004)//SIO数据寄存器地址
#definerSBRDR(*(volatile unsigned*)0x1d14008)//SIO波特率预分频寄存器地址
#definerIVTCNT(*(volatile unsigned*)0x1d1400c)//SIO间隔计数寄存器IVTCNT//地址
#definerDCNTZ(*(volatile unsigned*)0x1d14010)//SIODMA计数零寄存器地址
//定义了44b0终于音频播放器IIS相关的寄存器地址
#definerIISCON(*(volatile unsigned*)0x1d18000)//IIS控制寄存器地址
#definerIISMOD(*(volatile unsigned*)0x1d18004)//IIS模式寄存器地址
#definerIISPSR(*(volatile unsigned*)0x1d18008)//IIS比例因子寄存器地址
#define rIISFCON (*(volatile unsigned*)0x1d1800c)//IIS比例控制器地址
#ifdef __BIG_ENDIAN
#definerIISFIF((volatile unsigned short*)0x1d18012)//定义大端模式下IIS比例寄存//器地址
#else //Little Endian
#definerIISFIF((volatile unsigned short*)0x1d18010)//定义小端模式下IIS比例寄存//器地址
#endif
//定义了44b0中与I/O口相关的寄存器地址
#definerPCONA(*(volatile unsigned *)0x1d20000)
#definerPDATA(*(volatile unsigned*)0x1d20004)//定义A口配置寄存器和数据寄//存器地址
#definerPCONB(*(volatile unsigned *)0x1d20008)
#definerPDATB(*(volatile unsigned*)0x1d2000c)//定义B口配置寄存器和数据寄//存器地址
#definerPCONC(*(volatile unsigned *)0x1d20010)
#definerPDATC(*(volatile unsigned *)0x1d20014)
#definerPUPC(*(volatile unsigned*)0x1d20018)//定义C口配置寄存器和数据寄//存器地址
#definerPCOND(*(volatile unsigned *)0x1d2001c)
#definerPDATD(*(volatile unsigned *)0x1d20020)
#definerPUPD(*(volatile unsigned*)0x1d20024)//定义D口配置寄存器和数据寄//存器地址
#definerPCONE(*(volatile unsigned *)0x1d20028)
#definerPDATE(*(volatile unsigned *)0x1d2002c)
#definerPUPE(*(volatile unsigned*)0x1d20030)//定义E口配置寄存器和数据寄//存器地址
#definerPCONF(*(volatile unsigned *)0x1d20034)
#definerPDATF(*(volatile unsigned *)0x1d20038)
#definerPUPF(*(volatile unsigned*)0x1d2003c)//定义F口配置寄存器和数据寄//存器地址
#definerPCONG(*(volatile unsigned *)0x1d20040)
#definerPDATG(*(volatile unsigned *)0x1d20044)
#definerPUPG(*(volatile unsigned*)0x1d20048)//定义G口配置寄存器和数据寄//存器地址
#definerSPUCR(*(volatile unsigned *)0x1d2004c)//定义上拉电阻控制寄存器地址
#definerEXTINT(*(volatile unsigned *)0x1d20050)//定义外部中断控制寄存器地址
#definerEXTINPND(*(volatile unsigned *)0x1d20054)//定义外部中断挂起控制寄存器地址
//定义了44b0中与看门狗定时器相关的寄存器地址
#definerWTCON(*(volatile unsigned *)0x1d30000)//看门狗定时器控制寄存器地址
#definerWTDAT(*(volatile unsigned *)0x1d30004)//看门狗定时器数据寄存器地址
#definerWTCNT(*(volatile unsigned *)0x1d30008)//看门狗定时器计数寄存器地址
//定义了44b0中与A/D转换相关的寄存器地址
#definerADCCON(*(volatile unsigned *)0x1d40000)//定义了A/D转换控制寄存器地址
#definerADCPSR(*(volatile unsigned *)0x1d40004)//A/D转换预置比例因子寄存器地址
#definerADCDAT(*(volatile unsigned *)0x1d40008)//A/D转换数据寄存器地址
//定义了44b0中与定时器相关的寄存器地址
#definerTCFG0(*(volatile unsigned *)0x1d50000)//定时器配置寄存器0地址
#definerTCFG1(*(volatile unsigned *)0x1d50004)//定时器配置寄存器1地址
#definerTCON(*(volatile unsigned *)0x1d50008)//定时器控制寄存器地址
#define rTCNTB0(*(volatile unsigned *)0x1d5000c)
#definerTCMPB0(*(volatile unsigned*)0x1d50010)//定时计数器0缓冲寄存器与比较缓//冲寄存器地址
#definerTCNTO0(*(volatile unsigned *)0x1d50014)//定时计数器0观察寄存器地址
#definerTCNTB1(*(volatile unsigned *)0x1d50018)
#definerTCMPB1(*(volatile unsigned *)0x1d5001c)
#definerTCNTO1(*(volatile unsigned *)0x1d50020)//定时计数器1,同定时计数器0
#definerTCNTB2(*(volatile unsigned *)0x1d50024)
#definerTCMPB2(*(volatile unsigned *)0x1d50028)
#definerTCNTO2(*(volatile unsigned *)0x1d5002c)//定时计数器2,同定时计数器0
#definerTCNTB3(*(volatile unsigned *)0x1d50030)
#definerTCMPB3(*(volatile unsigned *)0x1d50034)
#definerTCNTO3(*(volatile unsigned *)0x1d50038)//定时计数器3,同定时计数器0
#definerTCNTB4(*(volatile unsigned *)0x1d5003c)
#definerTCMPB4(*(volatile unsigned *)0x1d50040)
#definerTCNTO4(*(volatile unsigned *)0x1d50044)//定时计数器4,同定时计数器0
#definerTCNTB5(*(volatile unsigned *)0x1d50048)
#definerTCNTO5(*(volatile unsigned *)0x1d5004c)//定时计数器5,同定时计数器0
//定义了44b0中与IIC总线相关的寄存器地址
#definerIICCON(*(volatile unsigned*)0x1d60000)//多主IIC总线控制寄存器IICON//地址
#definerIICSTAT(*(volatile unsigned*)0x1d60004)//多主IIC总线控制/状态寄存器//地址
#definerIICADD(*(volatile unsigned*)0x1d60008)//多主IIC总线地址寄存器//IICADD地址
#definerIICDS(*(volatile unsigned*)0x1d6000c)//多主IIC总线发送1接收数据//移位寄存器地址
//定义了44b0中与实时时间相关的寄存器地址
#ifdef__BIG_ENDIAN//大端模式
#definerRTCCON(*(volatile unsigned char *)0x1d70043)//RTC控制寄存器地址
#