?? sysreg.asm
字號:
*********************************************************************************
* SYSREG.ASM v1.00 *
* 版權(c) 2003- 北京合眾達電子技術有限責任公司 *
* 設計者: 段立鋒 *
*********************************************************************************
.file "sysreg.asm"
.c_mode
.mmregs
.copy "vc54x.inc" ; VC5402 Memory-Mapped Register Declaration
.copy "dec5416.inc" ; SEED DEC5416 Memory-Mapped Register Declaration
.def _sys_set
.def _memory_set
.def _sysreg_read
.def _sysint_enable
.def _sysint_disable
.def _sys_clk
.def _sys_wait
.ref _sys_statbuff
.text
*********************************************************************************
* 系統設置操作函數 *
*********************************************************************************
*********************************************************************************
* *
* 函數定義:void _sys_set(uint portdata) *
* 功 能:系統設置 *
* *
* 入口參數: A---- 要寫入的數據 *
* 出口參數: 無 *
* 資源使用:AR0,B *
* *
*********************************************************************************
_sys_set: STM #0,AH
STM #_sys_statbuff,AR0
STL A,*AR0(SYSB0) ;保存要寫入的數據
PORTW *AR0(SYSB0),syscntl ;將數據寫入到第一個寄存器
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數定義:void _memory_set(uint portdata) *
* 功 能:存貯區設置 *
* *
* 入口參數: A---- 要寫入的數據 *
* 出口參數:無 *
* 資源使用:AR0,B *
* *
*********************************************************************************
_memory_set: STM #0,AH
STM #_sys_statbuff,AR0
STL A,*AR0(SYSB0) ;保存要寫入的數據
PORTW *AR0(SYSB0),memcntl ;將數據寫入到第二個寄存器
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數定義:uint _sysint_read(uint port) *
* 功 能:串口初始化 *
* *
* 入口參數: A---- port:IO空間寄存器的地址 *
* 出口參數: A---- 回讀值 *
* 資源使用:AR0,B *
* *
*********************************************************************************
_sysreg_read: STM #0,AH
STM #_sys_statbuff,AR0
BC sysstat,ANEQ ;判斷是哪個寄存器
PORTR sysstat0,*AR0(SYSB1) ;讀第一個寄存器
LD *AR0(SYSB1),A ;讀回值寫入寄存器A,做為返回值
B sysregrexit
sysstat: PORTR sysstat1,*AR0(SYSB1) ;讀第二個寄存器
LD *AR0(SYSB1),A ;讀回值寫入寄存器A,做為返回值
sysregrexit: .if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數定義:uint _sysint_enable(uint setdata) *
* 功 能:串口初始化 *
* *
* 入口參數: A---- port:IO空間寄存器的地址 *
* 出口參數: A---- 回讀值 *
* 資源使用:B *
* *
*********************************************************************************
_sysint_enable: STM #0,AH
STM #0,BH
LDM IMR,B
nop
nop
nop
OR B,A
nop
nop
nop
STLM A,IMR
nop
nop
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數定義:uint _sysint_disable(uint setdata) *
* 功 能:串口初始化 *
* *
* 入口參數: A---- port:IO空間寄存器的地址 *
* 出口參數: A---- 回讀值 *
* 資源使用:B *
* *
*********************************************************************************
_sysint_disable: STM #0,AH
STM #0,BH
LDM IMR,B
AND B,A
STL A,IMR
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數定義:uint _sysint_clk(uint setdata) *
* 功 能:串口初始化 *
* *
* 入口參數: A---- port:IO空間寄存器的地址 *
* 出口參數: A---- 回讀值 *
* 資源使用:B *
* *
*********************************************************************************
_sys_clk: STM #0,AH
STM #0B,CLKMD ;switch to DIV mode
TstSatu: LDM CLKMD,B
AND #01B,B ;poll STATUS bit
BC TstSatu,BNEQ
STLM A,CLKMD ;switch to PLL X 10 mode
PllSatu: LDM CLKMD,B
AND #01B,B ;poll STATUS bit
BC PllSatu,BEQ
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數定義:uint _sys_wait(uint set data) *
* 功 能:串口初始化 *
* *
* 入口參數: A---- port:IO空間寄存器的地址 *
* 出口參數: A---- 回讀值 *
* 資源使用:B *
* *
*********************************************************************************
_sys_wait: STM #0,AH
STLM A,BL
STM #0,BH
.if __far_mode
LD 2H,A ;獲取要寫入寄存器的數據
.else
LD 1H,A
.endif
STLM A,SWCR
STLM B,SWWSR
.if __far_mode
FRET
.else
RET
.endif
.end
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -