📄 key.asm
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04
*******************************************************
; dspac -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include key.c C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.if
; dspopt NOT RUN
; dspcg -o -v2xx -o C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.if C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.asm C:\DOCUME~1\ADMINI~1.GUO\LOCALS~1\Temp\key.tmp
.port
.bss _ucinput,14,1
.file "key.c"
.globl _port4000
.globl _ucinput
.globl _keyscan
.text
.sym _keyscan,_keyscan,36,2,0
.globl _keyscan
.func 16
;>>>> int keyscan()
;>>>> int key_code,i;
******************************************************
* FUNCTION DEF : _keyscan
******************************************************
_keyscan:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _key_code,1,4,1,16
.sym _i,2,4,1,16
.line 4
;>>>> key_code = 0xffff;
LARK AR2,1
MAR *0+
SPLK #-1,* ,AR0
.line 5
;>>>> key_code = INPUT ;
IN * ,04000h
LAC * ,AR2
SACL *
.line 6
;>>>> if((key_code & 0x33ff) != 0x33ff)
LACK 13311
AND * ,AR1
SACL *
SSXM
LAC *
SUBK 13311
BZ L1
.line 8
;>>>> delay(0x1f);
LACK 31
SACL *+
CALL _delay
MAR *-
L1:
.line 10
;>>>> key_code = INPUT;
;>>>> // if(key_code != 0xffff)
MAR * ,AR0
IN * ,04000h
LAC * ,AR2
LARK AR2,1
MAR *0+
SACL *+
.line 13
;>>>> for(i=0;i<14;i++)
LACK 0
SACL *
SSXM
LAC *
SUBK 14
BGEZ L3
L2:
.line 15
;>>>> if(!((key_code>>i) & 0x0001))
LAC *-,AR0
CMPL
SACL *
LT * ,AR2
LACT *
ANDK 1,15
ANDK 0FFFFh,15
SFL
BNZ L4
.line 16
;>>>> ucinput[i] = 0x1;
;>>>> else
MAR *+
LAC * ,AR0
RSXM
ADLK _ucinput+0,0
SACL *
LAR AR3,* ,AR3
LACK 1
SACL *
B L5
L4:
.line 18
;>>>> ucinput[i] = 0x0;
MAR *+
LAC * ,AR0
RSXM
ADLK _ucinput+0,0
SACL *
LAR AR3,* ,AR3
LACK 0
SACL *
L5:
.line 13
MAR * ,AR2
LAC *
ADDK 1
SACL *
SSXM
LAC *
SUBK 14
BLZ L2
L3:
.line 23
;>>>> return(key_code);
MAR *-
LAC *
EPI0_1:
.line 24
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 39,000000000H,3
.sym _keyserve,_keyserve,36,2,0
.globl _keyserve
.func 46
;>>>> int keyserve()
;>>>> int key_code,i;
******************************************************
* FUNCTION DEF : _keyserve
******************************************************
_keyserve:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+
.sym _key_code,1,4,1,16
.sym _i,2,4,1,16
.line 4
;>>>> key_code = ~keyscan();
CALL _keyscan
CMPL
MAR * ,AR2
LARK AR2,1
MAR *0+
SACL *+
.line 5
;>>>> for(i=0;i<14;i++)
;>>>> switch(key_code)
;>>>> case 0x0001 :
;>>>> //I0.0
LACK 0
SACL *
SSXM
LAC *
SUBK 14
BGEZ L8
L6:
LAC *
ADDK 1
SACL *
LAC *
SUBK 14
BLZ L6
.line 15
;>>>> break;
;>>>> case 0x0002 :
;>>>> //I0.1
.line 21
;>>>> break;
;>>>> case 0x0004 :
;>>>> //I0.2
.line 27
;>>>> break;
;>>>> case 0x0008 :
;>>>> //I0.3
.line 33
;>>>> break;
;>>>> case 0x0010 :
;>>>> //I0.4
.line 39
;>>>> break;
;>>>> case 0x0020 :
;>>>> //I0.5
.line 45
;>>>> break;
;>>>> case 0x0040 :
;>>>> //I0.6
.line 51
;>>>> break;
;>>>> case 0x0080 :
;>>>> //I0.7
.line 57
;>>>> break;
;>>>> case 0x0100 :
.line 62
;>>>> break;
;>>>> default :
;>>>> ;
L8:
.line 9
MAR *-
LAC *
SUBK 1
BZ L10
SUBK 1
BZ L10
SUBK 2
BZ L10
SUBK 4
BZ L10
SUBK 8
BZ L10
SUBK 16
BZ L10
SUBK 32
BZ L10
SUBK 64
BZ L10
SUBK 128
L10:
EPI0_2:
.line 70
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 115,000000000H,3
.sym _ucinput,_ucinput,60,2,224,,14
.globl _ucinput
*****************************************************
* UNDEFINED REFERENCES *
*****************************************************
.global _delay
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -