📄 main.asm
字号:
;==============================================================*
.include "F2407.h" ;头文件
.bss GPR0,1
.def _c_int0
;==============================================================*
KICK_DOG .macro ;看门狗复位宏指令
LDP #00E0h
SPLK #05555h, WDKEY
SPLK #0AAAAh, WDKEY
LDP #0h
.endm
;==============================================================
;系统初始化
;使能EVA,EVB,A/D模块,其他的未使能(根据要求使能)
;==============================================================
.text
.word #0ffffh
.word #0ffffh
.word #0ffffh
.word #0ffffh
_c_int0:
LDP #0H
SETC INTM
CLRC SXM
LACC IFR
SACL IFR
CLRC CNF
SETC OVM
LDP #WDCR>>7
SPLK #006Fh, WDCR ;看门狗不使能
KICK_DOG
SPLK #01C0h, GPR0
OUT GPR0, WSGR
LDP #SCSR1>>7
SPLK #0000000001101100B,SCSR1 ;仅使能EVA,EVB,SPI,SCI
LDP #IMR>>7
SPLK #0002H,IMR ;中端级2使能
LDP #MCRA>>7
SPLK #01100000000000011B,MCRA ;A2,B7~B4 I/O(keyboard)
SPLK #1111111000011100B,MCRB ;仿真口,spi,其他I/O,C0,C5(keyboard)
SPLK #0000000000000000B,MCRC ;F2~F6 I/O(led)
SPLK #0000000000000000B,PADATDIR
SPLK #0000000000000000B,PBDATDIR
SPLK #0001010000000000B,PCDATDIR ;没有必要置1
SPLK #0H,PDDATDIR
SPLK #0111111000000000B,PEDATDIR
SPLK #0111110000000000B,PFDATDIR
;==============================================================
;SCI 初始化
;==============================================================
LDP #SCICCR>>7
SPLK #027H,SCICCR
SPLK #020H,SCICTL1
SPLK #02H,SCICTL2
SPLK #0H,SCIHBAUD ;波特率为115200
SPLK #02AH,SCILBAUD
SPLK #0H,SCIPRI
SPLK #23H,SCICTL1
;==============================================================
loop:
LDP #0e0h
LACL SCIRXBUF
CALL _ci
CALL _co
KICK_DOG
SUB #1Bh ; test if 'ESC' code
BCND loop,NEQ
dead_loop:
B dead_loop ;dead loop
;==============================================================
; Console Input Routine
;==============================================================
_ci:
LDP #0E0H
; LACL SCIRXBUF
BIT SCIRXST,9 ; test RXRDY bit
BCND _ci,NTC ; if RXRDY NEQ 1, loop back on input
LACL SCIRXBUF ; else, load ACCL with character received
AND #00FFh ; mask unsignificant bits in ACC
RET
;==============================================================
; Console Output Routine
;==============================================================
_co:
LDP #0E0H
BIT SCICTL2,8 ; test TXRDY bit
BCND _co, NTC ; if TXRDY NEQ 1, loop back on output
SACL SCITXBUF ; else put character to send in SCI transmit buffer
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -