📄 menu_sub.asm
字号:
.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 + -