📄 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 *
;============================================================================*
.include "F2407.h" ;头文件
.def _c_int0
.bss TEMP,1 ;临时变量
.bss TEMP1,1 ;临时变量
.bss TEMP2,1
.bss TEMP6,1 ;临时变量
.bss AD_0,1 ;第一个数码管的值
.bss AD_1,1 ;第二个数码管的值
.bss AD_2,1 ;第三个数码管的值
.bss DATA1,1
.bss DATA2,1
.bss DATA3,1
.bss DATA4,1
.bss GPR0,1
.bss DLY_TIME,1
.bss SHOW_TIME,1
;======================================================
;系统初始化
;使能EVA,EVB,A/D模块,其他的未使能(根据要求使能)。
;======================================================
.text ;加密位
.word #0ffffh
.word #0ffffh
.word #0ffffh
.word #0ffffh
_c_int0:
LDP #0H
SETC INTM ;屏蔽总中断程序
CLRC SXM ;符号位不作扩展
SPLK #0000h,IMR
LACC IFR ;清标志
SACL IFR
CLRC CNF ;B0为数据存储区
SETC OVM
LDP #WDCR>>7
SPLK #006Fh, WDCR ;看门狗不使能
KICK_DOG
SPLK #00h, GPR0
OUT GPR0, WSGR ;WSGR 等待状态产生控制器
LDP #SCSR1>>7
SPLK #0000000010001100B,SCSR1 ;使能EVA,EVB,ADC
;位7 ADC CLKEN 位6 SCI CLKEN 位5 SPI CLKEN 位4 CAN CLKEN 位3 EVB CLKEN 位2 EVA EVAEN
LDP #MCRB>>7
SPLK #0FFFDH,MCRB ;9~15脚须置1,以实现在线仿真功能
SPLK #0FFFFH,MCRC
LDP #PCDATDIR>>7
SPLK #0FFFDH,PCDATDIR
SPLK #0FF00H,PBDATDIR
SPLK #0FF00H,PFDATDIR
LDP #TEMP2
SPLK #0FFFFH,TEMP2
OUT TEMP2,2000H
;=====================================================
LDP #0E1H
SPLK #0100000000000000b,ADCTRL1 ;复位整个ADC模块(RESET=1)
NOP
SPLK #0011000000000000b,ADCTRL1 ;清除ADC的复位位(RESET=0)
SPLK #07h, MAXCONV ;设定一次自动转换最多的转换通道个数为8
SPLK #3210h, CHSELSEQ1 ;八组转换均输入通道选择通道
SPLK #7564h, CHSELSEQ2
;======================================
LDP #ADCTRL1>>7
SPLK #0100000000000000b,ADCTRL2;立即复位使排序器指针指到CONV00
SPLK #0010000000000000b,ADCTRL2;软件触发启动SEQ1
NOP
NOP
NOP
NOP
MAIN
LDP #AD_0
SPLK #0,AD_0
SPLK #0,AD_1
SPLK #0,AD_2
CALL CUL
LDP #AD_0
SPLK #0H,DATA1
LACC AD_0
SACL DATA2
LACC AD_1
SACL DATA3
LACC AD_2
SACL DATA4
SPLK #0FFH,DLY_TIME ;显示时间
SPLK #01FH,SHOW_TIME ;循环周期
CALL SHOW
NOP
NOP
NOP
NOP
B MAIN
CUL:
KICK_DOG
LDP #ADCTRL2>>7
SPLK #0100000000000000b,ADCTRL2 ;复位整个ADC模块
NOP
SPLK #0010000000000000b,ADCTRL2 ;软件触发启动SEQ1
NOP
CUL1
NOP
BIT ADCTRL2,BIT12 ;位12 SEQ1 BSY SEQ1忙状态位 0 SEQ1处于空闲状态 1 SEQ1处于忙状态
BCND CUL1,TC ;若TC=1跳转
LDP #RESULT0>>7
LACC RESULT3,10
LDP #TEMP
SACH TEMP
sach TEMP6
CALL ZS1
RET
ZS1:
LDP #TEMP
LACC TEMP
SUB #310 ;1023/3.3=310
SACL TEMP
BCND XS1,LT ;ACC<0跳转
LDP #AD_0
LACC AD_0
ADD #1
SACL AD_0
B ZS1
XS1:
ADD #310
SACL TEMP
XS_1:
LACC TEMP
SUB #31
SACL TEMP
BCND XS2,LT
LDP #AD_1
LACC AD_1
ADD #1
SACL AD_1
B XS_1
XS2:
ADD #31
SACL TEMP
XS_2:
LACC TEMP
SUB #3
SACL TEMP
BCND CHULI_RET,LT
LDP #AD_2
LACC AD_2
ADD #1
SACL AD_2
B XS_2
CHULI_RET
RET
SHOW
LDP #DATA1 ;第一个数码管 一直显示0
LACC DATA1
SACL TEMP
CALL SEARCH1
CALL S_LED1
LACC DATA2 ;第二个数码管显示 0~3, 小数点常显示
SACL TEMP
CALL SEARCH2
CALL S_LED2
LACC DATA3 ;第三个数码管显示 0~9
SACL TEMP
CALL SEARCH3
CALL S_LED3
LACC DATA4 ;第四个数码管显示 0~9
SACL TEMP
CALL SEARCH4
CALL S_LED4
SEARCH1
LDP #TEMP
LACC TEMP
AND #00FFH
ADD #TABLE
TBLR TEMP ;TEMP值加偏移量送显示
RET
SEARCH2
LDP #TEMP
LACC TEMP
AND #00FFH
ADD #TABLE1 ;此表显示的值带有小数点
TBLR TEMP
RET
SEARCH3
LDP #TEMP
LACC TEMP
AND #00FFH
ADD #TABLE
TBLR TEMP
RET
SEARCH4
LDP #TEMP
LACC TEMP
AND #00FFH
ADD #TABLE
TBLR TEMP
RET
S_LED1 ;第一个数码管
LDP #TEMP1
RPT #0FH
NOP
SPLK #0E0h,TEMP1 ;LED1 片选
OUT TEMP1,6000h
OUT TEMP,8000h ;数据线显示数据
CALL DELAY
SPLK #0000h,TEMP1
OUT TEMP1,8000h ;数据线置零
RET
S_LED2 ;第二个数码管 0~3 小数点常显示
RPT #0FH
NOP
SPLK #0D0h,TEMP1 ;LED2 片选
OUT TEMP1,6000h
OUT TEMP,8000h
CALL DELAY
SPLK #0000h,TEMP1
OUT TEMP1,8000h
RET
S_LED3 ;第三个数码管 0~9
RPT #0FH
NOP
SPLK #00B0h,TEMP1 ;LED3 片选
OUT TEMP1,6000h
OUT TEMP,8000h
CALL DELAY
SPLK #0000h,TEMP1
OUT TEMP1,8000h
RET
S_LED4 ;第四个数码管 0~9
RPT #0FH
NOP
SPLK #0070h,TEMP1 ;LED4 片选
OUT TEMP1,6000h
OUT TEMP,8000h
CALL DELAY
SPLK #0000h,TEMP1
OUT TEMP1,8000h
RET
DELAY:
CLRC SXM
LDP #DLY_TIME
LACC DLY_TIME
DELAY1:
SUB #01
RPT #0FH
NOP
BCND DELAY1,NEQ
NOP
NOP
RET
DELAY2:
SUB #01
RPT #0FH
NOP
BCND DELAY2,NEQ
NOP
NOP
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 #0077h ;A
.word #007Ch ;B
.word #0039h ;C
.word #005Eh ;D
.word #0079h ;E
.word #0071h ;F
TABLE1:
.word #00bfh ;0.
.word #0086h ;1.
.word #00dbh ;2.
.word #00cfh ;3.
.word #00e6h ;4.
.word #00edh ;5.
.word #00fdh ;6.
.word #0087h ;7.
.word #00ffh ;8.
.word #00efh ;9.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -