📄 vc33.inc
字号:
*********************************************************************************
* VC33.inc v1.00 *
* 版权(c) 2003-9-23 北京合众达电子技术有限责任公司 *
* 设计者: 刘宁 *
* 功能: VC33片上资源声明 *
*********************************************************************************
*
* 'C3x CPU Registers
*
* R0-R7 ;Extended-precision register
*
* AR0-AR7 ;Auxiliary register
*
* DP ;Data-page pointer
* IR0-IR1 ;Index register
* BK ;Block-size register
* SP ;System stack pointer
*
* ST ;Status register
* IE ;CPU/DMA interrupt enable
* IF ;CPU interrupt flags
* IOF ;I/O flags
*
* RS ;Repeat start address
* RE ;Repeat end address
* RC ;Repeat counter
*
* 'C3x Memory-map Registers
*
* DMA0_CTRL ;808000H DMA0 Global Control
* DMA0_SA ;808004H DMA0 Source Address
* DMA0_DA ;808006H DMA0 Destination Address
* DMA0_CT ;808008H DMA0 Transfer Counter
* ;Only for 'C32
* DMA1_CTRL ;808010H DMA1 Global Control
* DMA1_SA ;808014H DMA1 Source Address
* DMA1_DA ;808016H DMA1 Destination Address
* DMA1_CT ;808018H DMA1 Transfer Counter
*
* TIM0_CTRL ;808020H Timer0 Global Control
* TIM0_CT ;808024H Timer0 Counter
* TIM0_PD ;808028H Timer0 Period
* ;
* TIM1_CTRL ;808030H Timer1 Global Control
* TIM1_CT ;808034H Timer1 Counter
* TIM1_PD ;808038H Timer1 Period
*
* SIP0_CTRL ;808040H Serial0 Global Control
* SIP0_XPC ;808042H Serial0 FSX/DX/CLKX Port Control
* SIP0_RPC ;808043H Serial0 FSR/DR/CLKR Port Control
* SIP0_TCN ;808044H Serial0 R/X Timer Control
* SIP0_TCT ;808045H Serial0 R/X Timer Counter
* SIP0_TPD ;808046H Serial0 R/X Timer Peroid
* SIP0_DX ;808048H Serial0 Data Transmit
* SIP0_DR ;80804CH Serial0 Data Receive
* ;Except of 'C32
* SIP1_CTRL ;808050H Serial1 Global Control
* SIP1_XPC ;808052H Serial1 FSX/DX/CLKX Port Control
* SIP1_RPC ;808053H Serial1 FSR/DR/CLKR Port Control
* SIP1_TCN ;808054H Serial1 R/X Timer Control
* SIP1_TCT ;808055H Serial1 R/X Timer Counter
* SIP1_TPD ;808056H Serial1 R/X Timer Peroid
* SIP1_DX ;808058H Serial1 Data Transmit
* SIP1_DR ;80805CH Serial1 Data Receive
*
* IOSTRB ;808060H IOSTRB Control
* STRB0 ;808064H STRB0 Control
* STRB1 ;808068H STRB1 Control
*
* 'C30/'C31 on-chip Memory
*
* RAMB0 ;809800H-809BFFH 1K*32-bit
* RAMB1 ;809C00H-809FFFH 1K*32-bit
*
* 'C32 on-chip Memory
*
* RAMB0 ;87FE00H-87FEFFH 256*32-bit
* RAMB1 ;87FF00H-87FFFFH 256*32-bit
*
* 'VC33 on-chip Memory
*
* RAMB0 ;809800H-809BFFH 1K*32-bit
* RAMB1 ;809C00H-809FFFH 1K*32-bit
* RAMB2 ;800000H-803FFFH 16K*32-bit
* RAMB3 ;804000H-807FFFH 16K*32-bit
*
**
* On-chip Peripheral
C3x_MMR .set 808000H ;808000H
DMA0_CTRL .set 00H
DMA0_SA .set 04H
DMA0_DA .set 06H
DMA0_CT .set 08H
DMA1_CTRL .set 10H
DMA1_SA .set 14H
DMA1_DA .set 16H
DMA1_CT .set 18H
TIM0_CTRL .set 20H
TIM0_CT .set 24H
TIM0_PD .set 28H
TIM1_CTRL .set 30H
TIM1_CT .set 34H
TIM1_PD .set 38H
SIP0_CTRL .set 40H
SIP0_XPC .set 42H
SIP0_RPC .set 43H
SIP0_TCN .set 44H
SIP0_TCT .set 45H
SIP0_TPD .set 46H
SIP0_DX .set 48H
SIP0_DR .set 4CH
SIP1_CTRL .set 50H
SIP1_XPC .set 52H
SIP1_RPC .set 53H
SIP1_TCN .set 54H
SIP1_TCT .set 55H
SIP1_TPD .set 56H
SIP1_DX .set 58H
SIP1_DR .set 5CH
PBCR .set 64H
;IOSTRB .set 60H
;STRB0 .set 64H
;STRB1 .set 68H
* On-chip SRAM
C3x_RAMB0 .set 809800H ;809800H-809BFFH 1K*32-bit
C3x_RAMB1 .set 809C00H ;809C00H-809FFFH 1K*32-bit
VC33_RAMB2 .set 800000H ;800000H-803FFFH 16K*32-bit
VC33_RAMB3 .set 804000H ;804000H-807FFFH 16K*32-bit
C32_RAMB0 .set 87FE00H ;87FE00H-87FEFFH 256*32-bit
C32_RAMB1 .set 87FF00H ;87FF00H-87FFFFH 256*32-bit
*
* 'C3x编程技巧
* 'C3x寻址方式:①立即数寻址:立即数长度为16位;
* ②直接寻址:24位地址由8位数据页指针DP和16位直接地址组成,在DP不变时,直接寻址最大寻址范围64K。
* ③间接寻址:24位地址由辅助寄存器ARn提供,可以寻址整个存储空间。
* 如果常数≤16位时,直接用立即数寻址方式访问。如果常数长度>16位时,首先将常数用.word或.float等汇编伪指令放到某1存储单元,再用直接寻址方式访问。
* 地址指针为24位,所以也要首先将其用.word伪指令存放到某1存储单元中,然后再用直接寻址方式访问,将其装入辅助寄存器ARn中,最后用间接寻址访问。
* 直接寻址时,首先要装DP指针,为了避免每次直接寻址均修改DP指针,将常数和地址指针(它们的数量≤64K)存放在一起,并从64K边界开始,这样整个程序只需
* 装1次DP指针即可,既简单有高效。
*
* 'C3x片上资源的初始化
* ①.初始化数据页指针DP
* ②.初始化堆栈指针SP
* ③.中断向量重定位IF('C32仅有)
* ④.初始化总线控制寄存器STRB0、STRB1和IOSTRB
* ⑤.初始化定时器(如果使用)
* ⑥.初始化同步串口(如果使用)
* ⑦.初始化DMA(如果使用)
* ⑧.使能相应的中断IE
* ⑨.设置中断触发方式('C32仅有)和开全局中断
*
*
*****************************************************************************************************************************************
* *
* 'C3x状态寄存器ST:各字段的宏定义,用于设置全局中断控制、中断触发方式 *
* *
* 31-16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 *
* ---------------------------------------------------------------------------------------------- *
* | xx | PRGW ST | INTCFG | GIE | CC | CE | CF | xx | RM | OVM | LUF | LV | UF | N | Z | V | C | *
* ---------------------------------------------------------------------------------------------- *
* R R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W ← 操作 *
* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ← 复位值 *
* *
*****************************************************************************************************************************************
GIE .set 1 << 13 ; 'C3x全局中断使能,0:关全局中断;1:开全局中断
INTCFG .set 1 << 14 ; ('C32仅有)中断触发方式选择,0:电平触发;1:下降沿触发
*****************************************************************************************************************************************
* *
* 'C3x中断使能寄存器IE:各字段的宏定义,用于使能相应的中断 *
* *
* 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 *
* ---------------------------------------------------------------------------------------------------------------------- *
* | xx | xx | xx | xx | xx | EDINT | ETINT1 | ETINT0 | ERINT1 | EXINT1 | ERINT0 | EXINT0 | EINT3 | EINT2 | EINT1 | EINT0 |←'C30/'C31 *
* | | | | | | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | (DMA) | *
* ---------------------------------------------------------------------------------------------------------------------- *
* R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W ← 操作 *
* 0 0 0 0 0 0 0 0 0 0 0 ← 复位值 *
* *
* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 *
* ---------------------------------------------------------------------------------------------------------------------- *
* | xx | xx | xx | xx | xx | EDINT | ETINT1 | ETINT0 | ERINT1 | EXINT1 | ERINT0 | EXINT0 | EINT3 | EINT2 | EINT1 | EINT0 |←'C30/'C31 *
* | | | | | | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | (CPU) | *
* ---------------------------------------------------------------------------------------------------------------------- *
* R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W ← 操作 *
* 0 0 0 0 0 0 0 0 0 0 0 ← 复位值 *
* *
* 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 *
* --------------------------------------------------------------------------------------------------------------- *
* |EINT3 |EINT2 |EINT1 |EINT0 |EDINT0|EDINT1|ETINT1|ETINT0|ETINT1|ETINT0|ERINT0|EXINT0| EINT3| EINT2| EINT1| EINT0|←'C32 *
* |(DMA1)|(DMA1)|(DMA1)|(DMA1)|(DMA1)|(DMA0)|(DMA0)|(DMA0)|(DMA1)|(DMA1)|(DMA1)|(DMA0)|(DMA0)|(DMA0)|(DMA0)|(DMA0)| *
* --------------------------------------------------------------------------------------------------------------- *
* R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W ← 操作 *
* 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ← 复位值 *
* *
* 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 *
* --------------------------------------------------------------------------------------------------------------- *
* | xx | xx | xx | xx |EDINT1|EDINT0|ETINT1|ETINT0| xx | xx |ERINT0|EXINT0| EINT3| EINT2| EINT1| EINT0|←'C32 *
* | | | | |(CPU) |(CPU) |(CPU) |(CPU) | | |(CPU) |(CPU) |(CPU) |(CPU) |(CPU) |(CPU) | *
* --------------------------------------------------------------------------------------------------------------- *
* R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W ← 操作 *
* 0 0 0 0 0 0 0 0 0 0 ← 复位值 *
* *
*****************************************************************************************************************************************
EINT0_CPU .set 1 << 0 ; (中断CPU)外部中断0使能,0:屏蔽;1:使能
EINT1_CPU .set 1 << 1 ; (中断CPU)外部中断1使能,0:屏蔽;1:使能
EINT2_CPU .set 1 << 2 ; (中断CPU)外部中断2使能,0:屏蔽;1:使能
EINT3_CPU .set 1 << 3 ; (中断CPU)外部中断3使能,0:屏蔽;1:使能
EXINT0_CPU .set 1 << 4 ; (中断CPU)同步串口0发送中断使能,0:屏蔽;1:使能
ERINT0_CPU .set 1 << 5 ; (中断CPU)同步串口0接收中断使能,0:屏蔽;1:使能
EXINT1_CPU .set 1 << 6 ; (中断CPU)同步串口1发送中断使能,0:屏蔽;1:使能('C30仅有)
ERINT1_CPU .set 1 << 7 ; (中断CPU)同步串口1接收中断使能,0:屏蔽;1:使能('C30仅有)
ETINT0_CPU .set 1 << 8 ; (中断CPU)定时器0中断使能,0:屏蔽;1:使能
ETINT1_CPU .set 1 << 9 ; (中断CPU)定时器1中断使能,0:屏蔽;1:使能
EDINT_CPU .set 1 << 10 ; (中断CPU)DMA中断使能,0:屏蔽;1:使能('C30/'C31仅有)
EDINT0_CPU .set 1 << 10 ; (中断CPU)DMA0中断使能,0:屏蔽;1:使能('C32仅有)
EDINT1_CPU .set 1 << 11 ; (中断CPU)DMA1中断使能,0:屏蔽;1:使能('C32仅有)
EINT0_DMA .set 1 << 16 ; (中断DMA)外部中断0使能,0:屏蔽;1:使能('C30/'C31仅有)
EINT1_DMA .set 1 << 17 ; (中断DMA)外部中断1使能,0:屏蔽;1:使能('C30/'C31仅有)
EINT2_DMA .set 1 << 18 ; (中断DMA)外部中断2使能,0:屏蔽;1:使能('C30/'C31仅有)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -