//=====================================================================
// 端口地址常量
#define Port_IOA_Data (volatile unsigned int *)0x7000 //讀/寫寫入數據到數據寄存器里,讀出IOA管腳上的電平狀態
#define Port_IOA_Buffer (volatile unsigned int *)0x7001 //讀/寫寫入數據到數據寄存器里,讀出數據寄存器里的數據
#define Port_IOA_Dir (volatile unsigned int *)0x7002 //讀/寫 I/O A口的方向向量
#define Port_IOA_Attrib (volatile unsigned int *)0x7003 //讀/寫 I/O A口的屬性向量
#define Port_IOA_Latc (volatile unsigned int *)0x7004 //讀 進入睡眠前鎖存I/O A口的數據,為睡眠后觸鍵引起喚醒準備
#define Port_IOB_Data (volatile unsigned int *)0x7005 //讀/寫寫入數據到數據寄存器里,讀出I/O B口管腳上的電平狀態
#define Port_IOB_Buffer (volatile unsigned int *)0x7006 //讀/寫寫入數據到數據寄存器里,讀出數據寄存器里的數據
#define Port_IOB_Dir (volatile unsigned int *)0x7007 //讀/寫 I/O B口的方向向量
#define Port_IOB_Attrib (volatile unsigned int *)0x7008 //讀/寫 I/O B口的屬性向量
#define Port_FeedBack (volatile unsigned int *)0x7009 //寫 通過反饋電路將外部RC振蕩源引入
#define Port_TimerA_Data (volatile unsigned int *)0x700A //讀/寫 I/O A口的數據口
#define Port_TimerA_Ctrl (volatile unsigned int *)0x700B //寫 I/O A口的控制單元
#define Port_TimerB_Data (volatile unsigned int *)0x700C //讀/寫 I/O B口的數據口
#define Port_TimerB_Ctrl (volatile unsigned int *)0x700D //寫 I/O B口的控制單元
#define Port_Timebase_Setup (volatile unsigned int *)0x700E //寫 時基發生器的選頻設置單元
#define Port_Timebase_Clear (volatile unsigned int *)0x700F //寫 時基計數器復位單元
#define Port_INT_Ctrl (volatile unsigned int *)0x7010 //讀/寫 中斷源的控制單元
#define Port_INT_Clear (volatile unsigned int *)0x7011 //寫 中斷源中斷請求清除單元
#define Port_Watchdog_Clear (volatile unsigned int *)0x7012 //寫 清除看門狗
#define Port_SystemClock (volatile unsigned int *)0x7013 //寫 系統時鐘選頻單元(包括系統進入睡眠狀態的時鐘頻率選擇)
#define Port_ADC (volatile unsigned int *)0x7014 //讀/寫 ADC的數據口
#define Port_ADC_Ctrl (volatile unsigned int *)0x7015 //讀/寫 ADC的控制單元
#define Port_DAC2 (volatile unsigned int *)0x7016 //讀/寫 DAC2 的數據口
#define Port_DAC1 (volatile unsigned int *)0x7017 //讀/寫 DAC1 的數據口
#define Port_IR_Ctrl (volatile unsigned int *)0x7018 //讀/寫 紅外通訊的控制單元
#define Port_LVD_Ctrl (volatile unsigned int *)0x7019 //讀/寫 低電壓監測的控制單元
#define Port_SIO_Data (volatile unsigned int *)0x701A //讀/寫 串行設備接口SIO的數據口
#define Port_SIO_Addr_Low (volatile unsigned int *)0x701B //讀/寫 SIO的低字節地址單元
#define Port_SIO_Addr_Mid (volatile unsigned int *)0x701C //讀/寫 SIO的中字節地址單元
#define Port_SIO_Addr_Hig (volatile unsigned int *)0x701D //讀/寫 SIO的高字節地址單元
#define Port_SIO_Ctrl (volatile unsigned int *)0x701E //讀/寫 SIO的控制單元
#define Port_SIO_Start (volatile unsigned int *)0x701F //讀/寫 SIO數據傳輸的啟動單元
#define Port_SIO_Stop (volatile unsigned int *)0x7020 //寫 SIO數據傳輸的結束單元
#define Port_UART_Command1 (volatile unsigned int *)0x7021 //寫 通用異步串行I/O口UART的控制單元
#define Port_UART_Command2 (volatile unsigned int *)0x7022 //讀/寫 UART接收/發送功能的開通/關斷控制單元
#define Port_UART_Data (volatile unsigned int *)0x7023 //讀/寫 UART的數據口
#define Port_UART_BaudScalarLow (volatile unsigned int *)0x7024 //讀/寫 UART 波特率設定控制字的低字節
#define Port_UART_BaudScalarHig (volatile unsigned int *)0x7025 //讀/寫 UART 波特率設定控制字的高字節
#define Port_DAC_Ctrl (volatile unsigned int *)0x702A //讀/寫 音頻輸出方式及雙DAC通道和PWM驅動通道的控制單元
#define Port_ADC_MUX_Ctrl (volatile unsigned int *)0x702B //讀/寫 ADC多通道控制
#define Port_ADC_MUX_Data (volatile unsigned int *)0x702C //讀 讀出多通道10 位ADC轉換的數字數據
#define Port_INT_Ctrl_New (volatile unsigned int *)0x702D //讀/寫 激活和屏蔽中斷
//=====================================================================
//系統時間P_SystemClock(寫)($7013H)單元設置
//鎖相環頻率(fosc)設置,p5-p7口
#define CPU_PLL_24m 0x0000 //24.576MHz
#define CPU_PLL_20m 0x0020 //20.48MHz
#define CPU_PLL_32m 0x0040 //32.768MHz
#define CPU_PLL_40m 0x0060 //40.96MHz
#define CPU_PLL_49m 0x0080 //49.152MHz
//CPU時鐘選擇,p0-p2口
#define CPU_CLK_all 0x0000 //(fosc)全速
#define CPU_CLK_2 0x0001 //(fosc)/2速
#define CPU_CLK_4 0x0002 //(fosc)/4速
#define CPU_CLK_8 0x0003 //(fosc)/8速(默認)
#define CPU_CLK_16 0x0004 //(fosc)/16速
#define CPU_CLK_32 0x0005 //(fosc)/32速
#define CPU_CLK_64 0x0006 //(fosc)/64速
#define CPU_CLK_stop 0x0007 //睡眠停止
//晶振狀態,p3-p4口
#define XO_Full_Speed 0x0008 //p3口=1 晶振全速
#define Bed_XO_Slow_Speed 0x0000 //p3口=0 晶振自動轉弱振(默認)
#define Bed_XO_Always 0x0010 //p4口=1 睡眠時晶振一直全速(默認)
#define Bed_XO_Close 0x0000 //p4口=0 睡眠時晶振關閉
//=====================================================================
//時基信號發生器P_Timebase_Setup(寫)($700EH)單元設置
//選頻邏輯TMB1設置,p0-p1口
#define Timebase_TMB1_8Hz 0x0000 //(默認)
#define Timebase_TMB1_16Hz 0x0001;
#define Timebase_TMB1_32Hz 0x0002;
#define Timebase_TMB1_64Hz 0x0003;
//選頻邏輯TMB2設置,p2-p3口
#define Timebase_TMB2_128Hz 0x0000 //(默認)
#define Timebase_TMB2_256Hz 0x0004;
#define Timebase_TMB2_512Hz 0x0008;
#define Timebase_TMB2_1024Hz 0x000c;
//=====================================================================
//定時器TimerA、B P_Timer*_Ctrl(寫) TimerA($700BH)、TimerA($700DH)單元設置
//定時器A使用時鐘源A、B,
//默認未使用定時器A,需使用時鐘源B時,時鐘源A須設置為TimeAB_SourceAC_1
//定時器B使用時鐘源C
//定時器A、B使用時鐘源A、C設置,p0-p2口
#define TimeAB_SourceAC_F2 0x0000 //Fosc/2
#define TimeAB_SourceAC_F256 0x0001 //Fosc/256
#define TimeAB_SourceAC_XO 0x0002 //32768Hz
#define TimeAB_SourceAC_8K 0x0003 //8192Hz
#define TimeAB_SourceAC_4K 0x0004 //4096Hz
#define TimeAB_SourceAC_1 0x0005 //使用時鐘源B時,必選
#define TimeAB_SourceAC_0 0x0006 //(默認)未開
#define TimeAB_SourceAC_EXT1 0x0007 //
//定時器A使用時鐘源B設置,p3-p5口
#define TimeA_SourceB_2048 0x0000;
#define TimeA_SourceB_1024 0x0008;
#define TimeA_SourceB_256 0x0010;
#define TimeA_SourceB_TMB1 0x0018;
#define TimeA_SourceB_4Hz 0x0020;
#define TimeA_SourceB_2Hz 0x0028;
#define TimeA_SourceB_1 0x0030 //(默認)
#define TimeA_SourceB_EXT2 0x0038;
//定時器脈沖占空比設置,p6-p9口
#define TimeAB_APWMO_Off 0x0000;
#define TimeAB_APWMO_1_16 0x0040;
#define TimeAB_APWMO_2_16 0x0080;
#define TimeAB_APWMO_3_16 0x00c0;
#define TimeAB_APWMO_4_16 0x0100;
#define TimeAB_APWMO_5_16 0x0140;
#define TimeAB_APWMO_6_16 0x0180;
#define TimeAB_APWMO_7_16 0x01c0;
#define TimeAB_APWMO_8_16 0x0200;
#define TimeAB_APWMO_9_16 0x0240;
#define TimeAB_APWMO_10_16 0x0280;
#define TimeAB_APWMO_11_16 0x02c0;
#define TimeAB_APWMO_12_16 0x0300;
#define TimeAB_APWMO_13_16 0x0340;
#define TimeAB_APWMO_14_16 0x0380;
#define TimeAB_APWMO_TAOut 0x03c0 //受TimerA、B的溢出信號控制,占空比為50%
//=====================================================================
//中斷控制單元P_INT_Ctrl(讀/寫)(7010H)
//下列排序從到下排列,對應中斷等級按從高到低排列
//IRQ0-6只有查詢先后區別,不能嵌套
#define FIQ_F_1024 0x8000 //中斷源 音頻輸出, 快速中斷
#define IRQ0_F_1024 0x4000 //中斷源 音頻輸出, 中斷0
#define FIQ_TMA 0x2000 //中斷源 定時器A, 快速中斷
#define IRQ1_TMA 0x1000 //中斷源 定時器A, 中斷1
#define FIQ_TMB 0x0800 //中斷源 定時器B, 快速中斷
#define IRQ2_TMB 0x0400 //中斷源 定時器B, 中斷2
#define IRQ3_EXT2 0x0200 //中斷源 外部時鐘2, 中斷3
#define IRQ3_EXT1 0x0100 //中斷源 外部時鐘1, 中斷3
#define IRQ3_KEY 0x0080 //中斷源 觸鍵喚醒, 中斷3
#define IRQ4_4KHz 0x0040 //中斷源 4096Hz時基, 中斷4
#define IRQ4_2KHz 0x0020 //中斷源 2048Hz時基, 中斷4
#define IRQ4_1KHz 0x0010 //中斷源 1024Hz時基, 中斷4
#define IRQ5_4Hz 0x0008 //中斷源 4Hz時基, 中斷5
#define IRQ5_2Hz 0x0004 //中斷源 2Hz時基, 中斷5
#define IRQ6_TMB1 0x0002 //中斷源 選頻邏輯TMB1, 中斷6
#define IRQ6_TMB2 0x0001 //中斷源 選頻邏輯TMB1, 中斷6
|