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

📄 adda2.asm

📁 dsp2407源程序
💻 ASM
字号:

   .include  	"F2407REGS.H" 	;引用头部文件
			.def      	_c_int0     
			
			
;(1)建立中断向量表
			.sect	".vectors"		;定义主向量段
RSVECT		        B    _c_int0			;PM 0	复位向量  			
INT1	  	        B    PHANTOM			;PM 2	中断优先级1			
INT2	  	        B    GISR2			;PM 4	中断优先级2			
INT3	  	        B    PHANTOM		     	;PM 6	中断优先级3			
INT4	  	        B    PHANTOM			;PM 8	中断优先级4			
INT5	  	        B    PHANTOM			;PM A	中断优先级5			
INT6	  	        B    GISR1			;PM C	中断优先级6			
RESERVED  	        B    PHANTOM			;PM E	模拟量输入中断(保留)		
SW_INT8   	        B    PHANTOM			;PM 10	用户定义软件中断		
SW_INT31  	        B    PHANTOM			;PM 3E	用户定义软件中断		
;中断子向量入口定义pvecs
			.sect	".pvecs"		;定义子向量段
PVECTORS	B	PHANTOM			;保留向量地址偏移量  0000h
			B	PHANTOM			;保留向量地址偏移量  0001h
  			B	PHANTOM			;保留向量地址偏移量  0002h
			B	PHANTOM			;保留向量地址偏移量  0003h
			B	ADCINT_ISR	        ;保留向量地址偏移量  0004h  ADC中断
			B	PHANTOM			;保留向量地址偏移量  0005h
                        B	PHANTOM		
			B	PHANTOM
			
			B	PHANTOM
			B	PHANTOM		
			B	PHANTOM
			B	PHANTOM
			B	PHANTOM		
			B	PHANTOM
			B	PHANTOM
			B	PHANTOM
			
			B	PHANTOM	
			B	PHANTOM 
			B	PHANTOM 
			B	PHANTOM		
			B	PHANTOM 
			B	PHANTOM 
			B	PHANTOM		
			B	PHANTOM 
			
			B	PHANTOM
			B	PHANTOM		
			B	PHANTOM
			B	PHANTOM
			B	PHANTOM		
			B	PHANTOM
			B	PHANTOM
			B	PHANTOM		
			
			B	PHANTOM
			B	PHANTOM
			B	PHANTOM		
			B	PHANTOM
			B	PHANTOM
			B	PHANTOM		
			B	PHANTOM			
			B	T1PINT_ISR
		        .bss DAC0_VAL,1
			.bss DAC2_VAL,1
			.bss DAC3_VAL,1  
			.bss nn,1   
			.bss cnt,1
                     				
;(2)主程序:
        	.text
_c_int0    
		SETC 	INTM
		CLRC 	SXM
		CLRC 	OVM
		CLRC 	CNF	
		LDP 	#0E0H
		SPLK	#81FEH,SCSR1			;CLKIN=6 M,CLKOUT=24 M 
		SPLK	#0E8h,WDCR			;关看门狗
		LDP	#0
		SPLK	#022h,IMR			;允许INT1中断
					
                lacc    IFR
                sacl    IFR 
                SPLK	#0FFFFh,IFR                     ;清所有中断标志
                CALL	ADINIT                          ;初始化ADC程序
                CALL	DAINIT          		;初始化DA程序
		CLRC	INTM				;开总中断
                CALL	AD             			;启动模数转换程序
WAIT:	        NOP  
     	        B	WAIT


; (3)  D/A初始化程序
DAINIT:
                LDP     #DP_EVA		
		SPLK	#80H, EVAIMRA	
		SPLK	#0FFFFh, EVAIFRA
		SPLK	#0, GPTCONA
		SPLK	#060H, T1PR		
		SPLK	#0, T1CNT
		SPLK	#0164CH, T1CON	
                LDP     #0000h 
                splk    #0000h,nn
	        splk    #0000h,cnt
                RET

;(4)ADC初始化程序
ADINIT:
                LDP	#T4CNT>>7 ;设置通用定时器4
                SPLK	#0000H,T4CNT
                SPLK	#170CH,T4CON 
                SPLK	#0040H,T4PR
                SPLK	#4400H,GPTCONB
                SPLK	#0FFFFH,EVBIFRB
                SPLK	#0000H,EVBIMRB 	
                LDP	#ADCCTRL1>>7
                SPLK	#0036H,ADCCTRL1  			;设置ADC控制寄存器
                SPLK	#8404H,ADCCTRL2  	
                SPLK	#0000H,MAXCONV
                SPLK    #3210h,CHSelseq1 		                ;16 通道
                RET

;(5)启动模数转换程序
AD:
                LDP	#T4CON>>7
                LACL	T4CON
                OR	#40H            			;启动定时器4,定时器4周期中断启动ADC中断
                SACL	T4CON                                   
                RET
;(5)ADC中断程序
GISR1:								;优先级INT6中断子程序入口
		;保护现场
		LDP	#PIVR>>7
		LACC	PIVR,1					;读取外设中断向量寄存器(PIVR),并左移一位
		ADD	#PVECTORS				;加上外设中断入口地址
		BACC						;跳到相应的中断服务子程序
ADCINT_ISR:
                zac   
                ldp     #0
                lar     ar2,#result0
                mar     *,ar2
                lacl    *
                rpt     #3  
                sfr
                sacl    DAC2_VAL
                OUT     DAC2_VAL,0302h                 
     	
                LDP	#ADCCTRL2>>7
      	        LACL	ADCCTRL2
      	        OR	#4000H                                  ;复位 SEQ1
      	        AND	#0FFDFH                                 ;清 INT FLAG SEQ1
      	        SACL	ADCCTRL2
  ;___________这部分程序为对定时器操作___________	
		;LDP    #T4CON>>7
      	        ;LACL	T4CON
      	        ;AND	#0FFBFH 	                        ;停止定时器4,即停止AD转换
      	        ;SACL	T4CON
      	
GISR1_RET:	                				;中断返回出口
	        ;恢复现场
		CLRC	INTM					;开总中断,因为一进中断就自动关闭了总中断
		RET

;(6)DA中断程序
GISR2:
	        LDP     #0E0H
                LACC    PIVR,1
                ADD     #PVECTORS
                BACC						
		;	只设置一个中断时...
T1PINT_ISR:	
                ldp     #0
                lacc    nn
                bcnd    p3,gt       
                lacc    cnt
                add     #0fh 
                sacl    cnt          
                lacc    cnt        
                sacl    DAC0_VAL
                OUT     DAC0_VAL,0300h
               
                lacc    cnt
                SUB     #07ffh
                BCND    P2, GEQ 
                ADD     #007Ffh  
                B       P6

P2:             ldp     #0
                splk    #0001h,nn

P3:             lacc    cnt
                SUB     #0fh 
                sacl    cnt
                lacc    cnt
                SACL    DAC0_VAL
                OUT     DAC0_VAL,0300h
               
                BCND    P6,GT
                ldp     #0h
                splk    #0000h,nn 
		
P6:             LDP     #DP_EVA	
		SPLK    #0, T1CNT
 				
		LDP	#0E8H
		LACL	EVAIFRA
		SACL	EVAIFRA

      		ldp     #0000h 
		splk    #022h,imr
		CLRC	INTM
		RET 
                 		
;(7)假中断程序
PHANTOM 	
                KICK_DOG					;复位看门狗
		RET
     	        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -