📄 main.asm
字号:
;==========================================================================*
* File name : main.asm *
* Author: Qu Bo *
* Data: 2006.11.19*
* Version: 2.0 *
* Organization: DSP&EMC,National Key Laboratory of Power Electronics,
* Zhejiang University, Hangzhou 310027, China *
* Description : PROGRAM TO CONTROL A ELECTRIC CAR USE F2407A *
;============================================================================*
.bss GPR0,1
.bss R_COUNT,1
.bss T_COUNT,1
.bss DATA,1
.bss R_BUFF,65
.bss TEMP,1
.bss TEMP1,1
.bss FLAG,1
.bss R_FLAG,1
.include "F2407.h" ;the header file
.def _c_int0,_24_INT2
;======================================================
; M A C R O ?Definitions
;======================================================
KICK_DOG .macro ; Watchdog reset macro
LDP #00E0h ; DP-->7000h-707Fh
SPLK #05555h, WDKEY
SPLK #0AAAAh, WDKEY
LDP #0h ; DP-->0000h-007Fh
.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 ;Disable WD
KICK_DOG
SPLK #00h, GPR0
OUT GPR0, WSGR
LDP #SCSR1>>7
SPLK #0000000000101100B,SCSR1 ;able eva ,evb,spi only
LDP #IMR>>7
SPLK #0001H,IMR ;中端级1使能
SPLK #104CH,T2CON ;1001 0000 0100 1100
SPLK #0,T2CNT
LDP #MCRB>>7
SPLK #0FFFDH,MCRB
SPLK #0000H,MCRC
LDP #PCDATDIR>>7
SPLK #0FFFDH,PCDATDIR
LDP #MCRA>>7
SPLK #04H,MCRA ;设置引脚输出为XINT1
LDP #XINT1CR>>7
SPLK #08001H,XINT1CR
LDP #R_COUNT
SPLK #0,R_COUNT ;计数器接收复位
SPLK #0,T_COUNT ;计数器发送复位
SPLK #0FF00H,TEMP1 ;初始化 TEMP1
SPLK #0H,R_FLAG
SPLK #0FFH,TEMP
OUT TEMP,06000H
MAR AR5 ;缓冲区复位
LAR AR5,#R_BUFF
LACC *+,AR5
SPLK #0,FLAG
CLRC INTM
MAIN
NOP
NOP
NOP
NOP
B MAIN
LACC FLAG
BZ MAIN
MAR AR5
LACC *+,AR5
LDP #PFDATDIR>>7
OR #0FF00H
SACL PFDATDIR
CALL T_DATA_FLAG ;TO USB INT0
LACC T_COUNT
ADD #1
SACL T_COUNT
SUB #64
BNZ MAIN
CALL T_DATA_FLAG1 ;TO USB INT1
SPLK #0H,T_COUNT
MAR AR5
LAR AR5,#R_BUFF
SPLK #0,FLAG
CLRC INTM
B MAIN
_24_INT2
LDP #TEMP
LACC TEMP
AND #0FBH
SACL TEMP
OUT TEMP,06000H
LDP #PEDATDIR>>7
SPLK #00FFH,PEDATDIR
LACC PEDATDIR
AND #0FFH
LDP #TEMP
SACL TEMP
LACC R_FLAG
BZ R_START
LACC TEMP
MAR AR5
SACL *+,AR5
LDP #R_COUNT
LACC R_COUNT
SUB #1
SACL R_COUNT
BCND INT_RET,GT
SPLK #0H,R_FLAG
INT_RET
LDP #TEMP
LACC TEMP ;USB3
OR #04H
SACL TEMP
OUT TEMP,06000H
LDP #XINT1CR>>7
SPLK #08001H,XINT1CR
CLRC INTM
RET
R_START
LDP #TEMP
LACC TEMP
BCND INT_RET,LT,EQ
SUB #40H
BCND INT_RET,GT
SPLK #01H,R_FLAG
LACC TEMP
SACL R_COUNT
MAR AR5
LAR AR5,#R_BUFF
SACL *+,AR5
B INT_RET
T_DATA_FLAG
LDP #TEMP1
LACC TEMP1
AND #0FFFEH
OUT TEMP1,0A000H
NOP
NOP
NOP
OR #1
SACL TEMP1
OUT TEMP1,0A000H
RET
T_DATA_FLAG1
LDP #TEMP1
LACC TEMP1
AND #0FFFDH
OUT TEMP1,0A000H
NOP
NOP
NOP
OR #2
SACL TEMP1
OUT TEMP1,0A000H
RET
DELAY
LACC #0FFH
D_LOOP
SUB #1
BZ D_RET
RPT #0FFH
NOP
B D_LOOP
D_RET
RET
TABLE:
.word #003fh ;0
.word #0006h ;1
.word #005bh ;2
.word #004fh ;3
.word #0066h ;4
.word #006dh ;5
.word #007dh ;6
.word #0007h ;7
.word #007fh ;8
.word #006fh ;9
.word #0008h ;_
.word #0079h ;E
.word #0076h ;H
.word #0038h ;L
.word #003Fh ;O
.word #006dh ;S
.word #0007h ;T
.word #0000h ;无显示
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -