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

📄 menu_sub.asm

📁 电力系统中的保护装置全部代码
💻 ASM
📖 第 1 页 / 共 4 页
字号:
	.global	_Lcd_Clear_Screen
	.sym	_Lcd_Clear_Screen,_Lcd_Clear_Screen,32,2,0
	.func	151
;******************************************************************************
;* FUNCTION NAME: _Lcd_Clear_Screen                                           *
;*                                                                            *
;*   Architecture       : TMS320C32                                           *
;*   Calling Convention : Stack Parameter Convention                          *
;*   Function Uses Regs : r0,r1,r4,r5,fp,sp,st                                *
;*   Regs Saved         : r4,r5                                               *
;*   Stack Frame        : Full (w/ debug)                                     *
;*   Total Frame Size   : 2 Call + 0 Parm + 2 Auto + 2 SOE = 6 words          *
;******************************************************************************
_Lcd_Clear_Screen:
	.sym	_i,1,4,1,32
	.sym	_j,2,4,1,32
	.line	1
;----------------------------------------------------------------------
; 151 | void Lcd_Clear_Screen(void)                                            
; 153 | int i,j;                                                               
;----------------------------------------------------------------------
        push      fp
        ldiu      sp,fp
        addi      2,sp
        push      r4
        push      r5
	.line	5
;----------------------------------------------------------------------
; 155 | Lcd_Initial();                                                         
;----------------------------------------------------------------------
        ldp       @CL2,DP
        ldiu      @CL2,r0               ; |155| 
        callu     r0                    ; far call to _Lcd_Initial	; |155| 
                                        ; |155| Far Call Occurs
	.line	7
;----------------------------------------------------------------------
; 157 | for(i=0;i<8;i++)                                                       
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |157| 
        sti       r0,*+fp(1)            ; |157| 
        cmpi      8,r0                  ; |157| 
        bge       L36                   ; |157| 
;*      Branch Occurs to L36            ; |157| 
L33:        
	.line	9
;----------------------------------------------------------------------
; 159 | Lcd_Write_Com_Left(0xb8+i);                                            
;----------------------------------------------------------------------
        ldiu      184,r0                ; |159| 
        ldp       @CL6,DP
        addi      *+fp(1),r0            ; |159| 
        ldiu      @CL6,r1               ; |159| 
        push      r0                    ; |159| 
        callu     r1                    ; far call to _Lcd_Write_Com_Left	; |159| 
                                        ; |159| Far Call Occurs
        subi      1,sp                  ; |159| 
	.line	10
;----------------------------------------------------------------------
; 160 | Lcd_Write_Com_Right(0xb8+i);                                           
;----------------------------------------------------------------------
        ldp       @CL7,DP
        ldiu      184,r0                ; |160| 
        addi      *+fp(1),r0            ; |160| 
        ldiu      @CL7,r1               ; |160| 
        push      r0                    ; |160| 
        callu     r1                    ; far call to _Lcd_Write_Com_Right	; |160| 
                                        ; |160| Far Call Occurs
        subi      1,sp                  ; |160| 
	.line	12
;----------------------------------------------------------------------
; 162 | Lcd_Write_Com_Left(0x40);                                              
;----------------------------------------------------------------------
        ldp       @CL6,DP
        ldiu      64,r1                 ; |162| 
        ldiu      @CL6,r0               ; |162| 
        push      r1                    ; |162| 
        callu     r0                    ; far call to _Lcd_Write_Com_Left	; |162| 
                                        ; |162| Far Call Occurs
        subi      1,sp                  ; |162| 
	.line	13
;----------------------------------------------------------------------
; 163 | Lcd_Write_Com_Right(0x40);                                             
;----------------------------------------------------------------------
        ldp       @CL7,DP
        ldiu      64,r0                 ; |163| 
        ldiu      @CL7,r1               ; |163| 
        push      r0                    ; |163| 
        callu     r1                    ; far call to _Lcd_Write_Com_Right	; |163| 
                                        ; |163| Far Call Occurs
        subi      1,sp                  ; |163| 
	.line	15
;----------------------------------------------------------------------
; 165 | for(j=0;j<64;j++)                                                      
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |165| 
        sti       r0,*+fp(2)            ; |165| 
        ldiu      0,r5                  ; |167| 
        ldiu      0,r4                  ; |166| 
        cmpi      64,r0                 ; |165| 
        bge       L35                   ; |165| 
;*      Branch Occurs to L35            ; |165| 
L34:        
	.line	16
;----------------------------------------------------------------------
; 166 | { Lcd_Write_Data_Left(0);                                              
;----------------------------------------------------------------------
        ldp       @CL8,DP
        push      r4                    ; |166| 
        ldiu      @CL8,r0               ; |166| 
        callu     r0                    ; far call to _Lcd_Write_Data_Left	; |166| 
                                        ; |166| Far Call Occurs
        subi      1,sp                  ; |166| 
	.line	17
;----------------------------------------------------------------------
; 167 | Lcd_Write_Data_Right(0);                                               
;----------------------------------------------------------------------
        ldp       @CL9,DP
        ldiu      @CL9,r0               ; |167| 
        push      r5                    ; |167| 
        callu     r0                    ; far call to _Lcd_Write_Data_Right	; |167| 
                                        ; |167| Far Call Occurs
        subi      1,sp                  ; |167| 
	.line	15
        ldiu      1,r0                  ; |165| 
        addi      *+fp(2),r0            ; |165| 
        sti       r0,*+fp(2)            ; |165| 
        cmpi      64,r0                 ; |165| 
        blt       L34                   ; |165| 
;*      Branch Occurs to L34            ; |165| 
L35:        
	.line	7
        ldiu      1,r0                  ; |157| 
        addi      *+fp(1),r0            ; |157| 
        sti       r0,*+fp(1)            ; |157| 
        cmpi      8,r0                  ; |157| 
        blt       L33                   ; |157| 
;*      Branch Occurs to L33            ; |157| 
L36:        
	.line	21
                                        ; Begin Epilog Code
        ldiu      *-fp(1),r1
        ldiu      *fp,fp
                                        ; Restore SOE Registers
        pop       r5
        pop       r4
                                        ; Unallocate the Frame
        subi      4,sp
        bu        r1
;*      Branch Occurs to r1 
	.endfunc	171,000000030h,2


	.sect	 ".text"

	.global	_Lcd_Draw_Point
	.sym	_Lcd_Draw_Point,_Lcd_Draw_Point,32,2,0
	.func	178
;******************************************************************************
;* FUNCTION NAME: _Lcd_Draw_Point                                             *
;*                                                                            *
;*   Architecture       : TMS320C32                                           *
;*   Calling Convention : Stack Parameter Convention                          *
;*   Function Uses Regs : r0,r1,ar0                                           *
;*   Regs Saved         :                                                     *
;*   Stack Frame        : Full (w/ debug)                                     *
;*   Total Frame Size   : 2 Call + 3 Parm + 5 Auto + 0 SOE = 10 words         *
;******************************************************************************
_Lcd_Draw_Point:
	.sym	_x,-2,4,9,32
	.sym	_y,-3,4,9,32
	.sym	_color,-4,4,9,32
;* r0    assigned to _value
	.sym	_value,0,4,4,32
	.sym	_mem_offset,1,20,1,32
	.sym	_page,2,4,1,32
	.sym	_column,3,4,1,32
	.sym	_offset,4,4,1,32
	.sym	_data_refresh,5,4,1,32
	.line	1
;----------------------------------------------------------------------
; 178 | void Lcd_Draw_Point(int x,  int y, int color)                          
;----------------------------------------------------------------------
        push      fp
        ldiu      sp,fp
        addi      5,sp
	.line	2
;----------------------------------------------------------------------
; 180 | register int value;                                                    
;----------------------------------------------------------------------
	.line	4
;----------------------------------------------------------------------
; 181 | int *mem_offset=NU_NULL,page,column,offset,data_refresh;               
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |181| 
        sti       r0,*+fp(1)            ; |181| 
	.line	6
;----------------------------------------------------------------------
; 183 | page=y/8;                                                              
;----------------------------------------------------------------------
        ldp       @CL10,DP
        ldiu      *-fp(3),r1            ; |183| 
        ldiu      r1,r0                 ; |183| 
        ash       -2,r0                 ; |183| 
        lsh       @CL10,r0              ; |183| 
        addi3     r0,r1,r0              ; |183| 
        ash       -3,r0                 ; |183| 
        sti       r0,*+fp(2)            ; |183| 
	.line	7
;----------------------------------------------------------------------
; 184 | column=x;                                                              
;----------------------------------------------------------------------
        ldiu      *-fp(2),r0            ; |184| 
        sti       r0,*+fp(3)            ; |184| 
	.line	8
;----------------------------------------------------------------------
; 185 | offset=(y%8);                                                          
;----------------------------------------------------------------------
        ldiu      r1,r0                 ; |185| 
        ash       -2,r0                 ; |185| 
        lsh       @CL10,r0              ; |185| 
        addi3     r0,r1,r0              ; |185| 
        andn      7,r0                  ; |185| 
        subri     r1,r0                 ; |185| 
        sti       r0,*+fp(4)            ; |185| 
	.line	10
;----------------------------------------------------------------------
; 187 | mem_offset = (int *)pLCD_BUFFER + page*128 + column;                   
;----------------------------------------------------------------------
        ldp       @CL11,DP
        ldiu      @CL11,ar0             ; |187| 
        ldiu      *+fp(2),r0            ; |187| 
        mpyi      128,r0                ; |187| 
        addi3     r0,*ar0,r0            ; |187| Unsigned
        addi      *+fp(3),r0            ; |187| Unsigned
        sti       r0,*+fp(1)            ; |187| 
	.line	11
;----------------------------------------------------------------------
; 188 | value = *(mem_offset);                                                 
;----------------------------------------------------------------------
        ldiu      r0,ar0
        ldiu      *ar0,r0               ; |188| 
	.line	12
;----------------------------------------------------------------------
; 189 | data_refresh=(0x01<<offset);                                           
;----------------------------------------------------------------------
        ldiu      1,r1                  ; |189| 
        ash       *+fp(4),r1            ; |189| 
        sti       r1,*+fp(5)            ; |189| 
	.line	14
;----------------------------------------------------------------------
; 191 | value |= data_refresh;                                                 
;----------------------------------------------------------------------
        or        *+fp(5),r0            ; |191| 
	.line	15
;----------------------------------------------------------------------
; 192 | *(mem_offset)=value;                                                   
;----------------------------------------------------------------------
        sti       r0,*ar0               ; |192| 
	.line	16
                                        ; Begin Epilog Code
        ldiu      *-fp(1),r1
        ldiu      *fp,fp
                                        ; Unallocate the Frame
        subi      7,sp
        bu        r1
;*      Branch Occurs to r1 
	.endfunc	193,000000000h,5


	.sect	 ".text"

	.global	_Lcd_Display_Executive
	.sym	_Lcd_Display_Executive,_Lcd_Display_Executive,32,2,0
	.func	200
;******************************************************************************
;* FUNCTION NAME: _Lcd_Display_Executive                                      *
;*                                                                            *
;*   Architecture       : TMS320C32                                           *
;*   Calling Convention : Stack Parameter Convention                          *
;*   Function Uses Regs : r0,r1,ar0,fp,sp,st                                  *
;*   Regs Saved         :                                                     *
;*   Stack Frame        : Full (w/ debug)                                     *
;*   Total Frame Size   : 2 Call + 0 Parm + 6 Auto + 0 SOE = 8 words          *
;******************************************************************************
_Lcd_Display_Executive:
	.sym	_value,1,14,1,32
	.sym	_mem_offset,2,20,1,32
	.sym	_page,3,4,1,32
	.sym	_column,4,4,1,32
	.sym	_column_right,5,4,1,32
	.sym	_counter,6,4,1,32
	.line	1
;----------------------------------------------------------------------
; 200 | void Lcd_Display_Executive(void)                                       
; 202 | unsigned value;                                                        
;----------------------------------------------------------------------
        push      fp
        ldiu      sp,fp
        addi      6,sp
	.line	4
;----------------------------------------------------------------------
; 203 | int *mem_offset=NU_NULL,page,column,column_right,counter=0;            
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |203| 
        sti       r0,*+fp(2)            ; |203| 
        sti       r0,*+fp(6)            ; |203| 
	.line	6
;----------------------------------------------------------------------
; 205 | Lcd_Initial();                                                         
;----------------------------------------------------------------------
        ldp       @CL2,DP
        ldiu      @CL2,r0               ; |205| 
        callu     r0                    ; far call to _Lcd_Initial	; |205| 
                                        ; |205| Far Call Occurs
	.line	7
;----------------------------------------------------------------------
; 206 | for(page=0;page<8;page++)                                              
;----------------------------------------------------------------------
        ldiu      0,r0                  ; |206| 
        sti       r0,*+fp(3)            ; |206| 
        cmpi      8,r0                  ; |206| 
        bge       L48                   ; |206| 
;*      Branch Occurs to L48            ; |206| 
L42:        
	.line	9
;----------------------------------------------------------------------
; 208 | Lcd_Write_Com_Left(page|0xb8);  /* 页面地址设

⌨️ 快捷键说明

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