?? sysreg.asm
字號:
*********************************************************************************
* SYSREG.ASM v1.00 *
* 版權(quán)(c) 2003- 北京合眾達(dá)電子技術(shù)有限責(zé)任公司 *
* 設(shè)計(jì)者: 段立鋒 *
*********************************************************************************
.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
*********************************************************************************
* 系統(tǒng)設(shè)置操作函數(shù) *
*********************************************************************************
*********************************************************************************
* *
* 函數(shù)定義:void _sys_set(uint portdata) *
* 功 能:系統(tǒng)設(shè)置 *
* *
* 入口參數(shù): A---- 要寫入的數(shù)據(jù) *
* 出口參數(shù): 無 *
* 資源使用:AR0,B *
* *
*********************************************************************************
_sys_set: PSHM SWWSR ;保存當(dāng)前的系統(tǒng)等待時(shí)間
LDM SWWSR,B
OR #07000H,B ;設(shè)置系統(tǒng)為14個(gè)等待
STLM B,SWWSR
STM #0,AH
STM #_sys_statbuff,AR0
STL A,*AR0(SYSB0) ;保存要寫入的數(shù)據(jù)
PORTW *AR0(SYSB0),syscntl ;將數(shù)據(jù)寫入到第一個(gè)寄存器
POPM SWWSR
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數(shù)定義:void _memory_set(uint portdata) *
* 功 能:存貯區(qū)設(shè)置 *
* *
* 入口參數(shù): A---- 要寫入的數(shù)據(jù) *
* 出口參數(shù):無 *
* 資源使用:AR0,B *
* *
*********************************************************************************
_memory_set: STM #0,AH
STM #_sys_statbuff,AR0
STL A,*AR0(SYSB0) ;保存要寫入的數(shù)據(jù)
PSHM SWWSR ;保存當(dāng)前的系統(tǒng)等待時(shí)間
LDM SWWSR,A
OR #07000H,A ;設(shè)置系統(tǒng)為14個(gè)等待
STLM A,SWWSR
PORTW *AR0(SYSB0),memcntl ;將數(shù)據(jù)寫入到第二個(gè)寄存器
NOP
NOP
NOP
POPM SWWSR
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數(shù)定義:uint _sysint_read(uint port) *
* 功 能:串口初始化 *
* *
* 入口參數(shù): A---- port:IO空間寄存器的地址 *
* 出口參數(shù): A---- 回讀值 *
* 資源使用:AR0,B *
* *
*********************************************************************************
_sysreg_read: PSHM SWWSR ;保存當(dāng)前的系統(tǒng)等待時(shí)間
LDM SWWSR,B
OR #07000H,B ;設(shè)置系統(tǒng)為14個(gè)等待
STLM B,SWWSR
STM #0,AH
STM #_sys_statbuff,AR0
BC sysstat,ANEQ ;判斷是哪個(gè)寄存器
PORTR sysstat0,*AR0(SYSB1) ;讀第一個(gè)寄存器
LD *AR0(SYSB1),A ;讀回值寫入寄存器A,做為返回值
B sysregrexit
sysstat: PORTR sysstat1,*AR0(SYSB1) ;讀第二個(gè)寄存器
LD *AR0(SYSB1),A ;讀回值寫入寄存器A,做為返回值
sysregrexit: POPM SWWSR
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數(shù)定義:uint _sysint_enable(uint setdata) *
* 功 能:串口初始化 *
* *
* 入口參數(shù): A---- port:IO空間寄存器的地址 *
* 出口參數(shù): 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
RSBX INTM ; enable the interuption
.if __far_mode
FRET
.else
RET
.endif
*********************************************************************************
* *
* 函數(shù)定義:uint _sysint_disable(uint setdata) *
* 功 能:串口初始化 *
* *
* 入口參數(shù): A---- port:IO空間寄存器的地址 *
* 出口參數(shù): 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
*********************************************************************************
* *
* 函數(shù)定義:uint _sysint_clk(uint setdata) *
* 功 能:串口初始化 *
* *
* 入口參數(shù): A---- port:IO空間寄存器的地址 *
* 出口參數(shù): A---- 回讀值 *
* 資源使用:B *
* *
*********************************************************************************
_sys_clk: STM #_sys_statbuff,AR0
STM #0,AH
STL A,*AR0(SYSCLOCKS) ;save the sys clock set
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
*********************************************************************************
* *
* 函數(shù)定義:uint _sys_wait(uint set data) *
* 功 能:串口初始化 *
* *
* 入口參數(shù): A---- port:IO空間寄存器的地址 *
* 出口參數(shù): A---- 回讀值 *
* 資源使用:B *
* *
*********************************************************************************
_sys_wait: STM #0,AH
STLM A,SWWSR
.if __far_mode
FRET
.else
RET
.endif
.end
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -