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

📄 zldjpgxiugai.asm

📁 这是在DSP2407的开发环境下
💻 ASM
📖 第 1 页 / 共 2 页
字号:
					SPLK	#0F420H, T1PR	;使定时器没50ms产生一次中断	
					SPLK	#0H, T1CNT   
					SPLK	#0164CH, T1CON

					NOP				;清中断标志
			        RET

;*********************************************************
IOPF_INIT:		    LDP #MCRC>>7  ;允许输出
	                LACL MCRC
	                AND #0FCFFH
		        	SACL MCRC     ;IOPF0/IOPF1为IO输出口
	                LACL PFDATDIR
	                OR   #0302H
	                AND #0FFFEH
	                SACL PFDATDIR
	                RET
;********************************************	                 
IOPB_INIT:		    LDP #MCRA>>7 ;IOPB5,IOPB4为输出方式且都为低,不报警,电机驱动电压不被封锁
	                LACL MCRA
	                AND #0CFFFH   
		        	SACL MCRA     
	                LACL PBDATDIR
	                OR   #3000H
	                AND #0FFCFH				;????????
	                SACL PBDATDIR
	                RET  	                
	                
	                
;*********************************************************
IOPE_INIT:		    LDP #MCRC>>7 ;IOPE7,IOPE3,IOPE2,IOPE1均为输出方式且IOPE7=0
					LACL MCRC
					AND #0FF71H  
					SACL MCRC
					LACL PEDATDIR
				    OR #8E00H   
					AND #0FF7FH 
					SACL PEDATDIR
					RET
;*********************************************************
GISR1:				SETC INTM					
					LDP #200h>>7
					MAR *,AR6
					LAR AR6,#0211H
					IN *,0100H ;GET KEY VALUE 
					LACC *
					AND #00FH  ;HIGH BYTE IS CLEARED 
					SACL *
					CALL HEX_DISPLAY
					OR #8800H  ;DISPLAY POSITION CHOICE
					SACL 212H
					LAR AR1,#212H
					;SACL 213H
					;LAR     AR1,#212H			
                    CALL    WRITE_7219
					CALL    DELAY
					RPT #100        ;priority 
					NOP
					RPT #100
					NOP
					;MAR *,AR0					
					LDP  #XINT1CR>>7
					SPLK #8001H,XINT1CR
					CLRC INTM
					RET
;****************LED*****************************************
WRITE_7219:         LDP #PEDATDIR>>7    ;AR1存放显示数据,AR2计数
					LAR AR2,#15				
					SBIT0 PEDATDIR,LOAD_7219
					CALL DELAY
WRITE1				SBIT0 PEDATDIR,CLK_7219
					CALL DELAY
                    MAR *,AR1
                    LACC *,16					
	                SFL
	                SACH *
	                BCND WRITE2,C
	                SBIT0 PEDATDIR,DIN_7219
	                CALL DELAY
	                B WRITE3
WRITE2				SBIT1 PEDATDIR,DIN_7219
                    CALL DELAY
WRITE3              SBIT1 PEDATDIR,CLK_7219
					CALL DELAY
					MAR *,AR2
					BANZ WRITE1
					SBIT1 PEDATDIR,LOAD_7219
					CALL DELAY					
					RET 
;******************LED**********************************************
			
SHUTDOWN:			;LDP  #8100H>>7
					LAR AR1,#TEMP1
					MAR *,AR1
					SPLK #0FF00H,*+
					SPLK #0CC00H,*+
					LAR AR1,#TEMP1
					CALL WRITE_7219
					LAR AR1,#TEMP2
					CALL WRITE_7219
         			RET
         			
HEX_DISPLAY:
  					bcnd display_0,EQ
                    SUB #1
                    bcnd display_1,EQ
                    SUB #1
                    bcnd display_2,EQ
                    SUB #1
                    bcnd display_3,EQ
                    SUB #1
                    bcnd display_4,EQ
                    SUB #1
                    bcnd display_5,EQ
                    SUB #1
                    bcnd display_6,EQ
                    SUB #1
                    bcnd display_7,EQ
                    SUB #1
                    bcnd display_8,EQ
                    SUB #1
                    bcnd display_9,EQ
                    SUB #1
                    bcnd display_A,EQ
                    SUB #1
                    bcnd display_B,EQ
                    SUB #1
                    bcnd display_C,EQ
                    SUB #1
                    bcnd display_D,EQ
                    SUB #1
                    bcnd display_E,EQ
                    SUB #1
                    bcnd display_F,EQ
                    
display_0:          OR #7EH
					B OUT                    
display_1:          OR #30H
 	                B OUT
display_2:          OR #6DH
                    B OUT
display_3:          OR #79H
                    B OUT
display_4:          OR #33H
					B OUT 
display_5:          OR #5BH
					B OUT 
display_6:          OR #5FH
					B OUT 
display_7:          OR #70H
					B OUT 
display_8:          OR #7FH
					B OUT 
display_9:          OR #7BH
					B OUT 
display_A:          OR #77H
					B OUT 
display_B:          OR #1FH
					B OUT 
display_C:          OR #4EH
					B OUT 
display_D:          OR #3DH
					B OUT
display_E:          OR #4FH
					B OUT 
display_F:          OR #47H

OUT:				RET 
;*********************************************************************

IOPF_TODSP:    LDP #MCRC>>7
               LACL MCRC 
               AND #0FCFFH
               SACL MCRC
               LACL PFDATDIR
               OR #0300H
               AND #0FFFCH    ;IOPF1,IOPF0 AS OUT; BOTH LOW LEVEL
               SACL PFDATDIR
               NOP
               RET
;ENABLE LVC245 FROM DSP TO LED
IOPF_TOLED:    LDP #MCRC>>7
               LACL MCRC 
               AND #0FCFFH
               SACL MCRC     ;IOPF0/IOPF1 AS IO
               LACL PFDATDIR
               OR #0302H
               AND #0FFFEH   ;IOPF1,IOPF1 AS OUT  IOPF1 AS HIGH LEVEL IOPF0 LOW LEVEL
               SACL PFDATDIR
               NOP
               NOP

               NOP
               NOP
               RET
	    
DELAY               RPT #200
					NOP
					RPT #200
					NOP
					RET


GISR2:				
                    LDP #0000H  ;保护现场
                   SACL 72H
                    SACH 73H
                    
                    LDP #0E0H
        			LACC PIVR,1
        			ADD #PVECTORS
        			BACC
;***************INTERRUPT SERVER*********************
T1PINT_ISR:
					;LDP #TEMP4>>7
					;LACL TEMP4
					;SUB #1
					;BCND GISR2_RET,NEQ	;?????????????????要不要将注释去掉,实现不抖动?
					LDP	#SPDFB>>7 ;计算电机转速
					LT SPDFB ;???????
					SPLK #0,SPDFB
                    MPY		#02H  ;TREG*120->PREG                
                    LACC	#0
                    APAC          ;PREG+ACC->ACC
                    SACH 71H      ;SPEED->60H,61H
                    SACL 70H
                    SPLK #0 ,SPDFB	;CLEAR SPDFB
;把十六进制转换成十进制并在LED上显示
                    LAR AR0,#0
                    LAR AR3,#0
                    LAR AR2,#0
                    MAR *,AR0
                    LDP #0000H
LOOP_4:             SACL 74H       
                    MAR *+,AR0
                    SUB #3E8H;
                    BCND  LOOP_4,C
                    MAR *-,AR0
                    SAR AR0,75H       ;千位 
;=============================                    
                    LACL 74H
                    MAR *,AR3 
LOOP_3:             SACL 74H
                    MAR *+,AR3
                    SUB #64H
                    BCND LOOP_3,C
                    MAR *-,AR3
                    SAR AR3,76H       ;百位
;==================================
                    ;LACL 74H
                    ;MAR *,AR3           
;LOOP_20:            ; SACL 74H      ;个位
                    ;MAR *+,AR3
                    ;SUB #64H
                    ;BCND LOOP_20,C  
                    
                    LACL 74H
                    MAR *-,AR2                    
LOOP_2:             SACL 74H      ;个位
                    MAR *+,AR2
                    SUB #0AH
                    BCND LOOP_2,C
                    MAR *-,AR2
                   ; LAR  AR2,#5
                    SAR AR2,77H      ;十位
;=================================
;LED显示    
                    CALL	IOPF_INIT           
                        
            LDP        #0
			LACL	75H
			OR	#0100H
			MAR	*+,AR1
			LDP	#200>>7
			SACL	*   
			CALL	WRITE_7219 
		;	RPT     #100
			CALL    DELAY
			
			LDP	#0 
			LACL	76H
			OR	#0200H
			MAR	*+,AR1
			LDP	#200>>7
			SACL	*   
			CALL    WRITE_7219
			;RPT     #100
			CALL    DELAY
			 
			LDP	#0
			LACL	77H
			OR	#0300H
			MAR	*+,AR1
			LDP	#200>>7
			SACL	*   
			CALL    WRITE_7219  
			;RPT     #100
			CALL    DELAY
			
			LDP	#0 
			LACL	74H
			OR	#0400H
			MAR	*+,AR1
			LDP	#200>>7
			SACL	*   
			CALL    WRITE_7219
			CALL    DELAY       
		
                    
                    
                    LDP #TEMP4>>7        ;重置中断次数
                    SPLK #0AH,TEMP4
GISR2_RET:			
                    LDP TEMP4>>7
                    SACL TEMP4
                   	LDP		#0
					SPLK	#02h,IMR		;开中断优先级2
					SPLK	#0FFFFh,IFR
					NOP				;清中断标志
                   	LDP		#DP_EVA			
					SPLK	#80H, EVAIMRA	;使能T1PINT中断
					SPLK	#0FFFFh, EVAIFRA   ;复位定时器1周期中断标志位
					SPLK	#0, GPTCONA
					SPLK	#0F420H, T1PR	;使定时器每50ms产生一次中断	
					SPLK	#0H, T1CNT   
					SPLK	#0164CH, T1CON
                    
                    LDP     #0000H        ;恢复现场
                    LACC    73H,16
                    ADD    72H 
                    
                   ; LDP     #DP_EVA
                    ;LACC    EVAIFRA
                    ;SACL    EVAIFRA
                    CLRC	INTM          ;开总中断
					RET		
PHANTOM 				
                    KICK_DOG						;复位看门狗
					RET
					END
						
					          
	            
	          
	          
	          
	          
	          
	          
	          
	          
	          
	          
	          
	          
	          

⌨️ 快捷键说明

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