⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.asm

📁 2407的一些源代码
💻 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 + -