📄 keys1s8.asm
字号:
*******************************************************
* TMS320C24xx ANSI C Codegen Version 7.04
*******************************************************
; dspac -i../src -v2xx -iD:/CCStudio_v3.1/c2400/cgtools/include keys1s8.c C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.if
; dspopt NOT RUN
; dspcg -o -v2xx -o C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.if C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.asm C:\DOCUME~1\liuping\LOCALS~1\Temp\keys1s8.tmp
.port
.file "keys1s8.c"
.file "../src\regs240x.h"
.globl _portffff
.globl _portff0f
.globl _port0
.globl _port1
.globl _port2
.globl _port3
.globl _port4
.file "keys1s8.c"
.text
.sym _KeysIOinit,_KeysIOinit,32,2,0
.globl _KeysIOinit
.func 3
;>>>> void KeysIOinit()
******************************************************
* FUNCTION DEF : _KeysIOinit
******************************************************
_KeysIOinit:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+,AR3
.line 3
;>>>> MCRA=MCRA&0x00c7; // IOPA3,IOPA4,IOPA5,IOPB端口配置为一般的I/O功能, TMS320LF240x的
;>>>> // 端口均为8位,MCRA为16位因此控制了IOPA和IOPB的设置
LARK AR3,28816
LACK 199
AND *
SACL *
.line 5
;>>>> PBDATDIR=0x00FF; // IOPB端口设置为输入方式
LACK 255
ADRK 10
SACL *
.line 6
;>>>> PADATDIR=PADATDIR|0x0FF38;
LACK 65336
SBRK 2
OR *
SACL *
.line 7
;>>>> PADATDIR=PADATDIR&0x0FF00; //IOPA3,IOPA4,IOPA5 设置为输出方式,且LEDCLK=1
LACK 65280
AND *
SACL *
.line 8
;>>>> PADATDIR=PADATDIR|0x0FF10; // IOPA3,IOPA4,IOPA5 设置为输出方式,选通KEYC;
LACK 65296
OR *
SACL * ,AR1
EPI0_1:
.line 9
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 11,000000000H,1
.sym _Keys1s8,_Keys1s8,36,2,0
.globl _Keys1s8
.func 13
;>>>> int Keys1s8(void)
******************************************************
* FUNCTION DEF : _Keys1s8
******************************************************
_Keys1s8:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+,AR2
.sym _i,1,15,1,32
.line 3
;>>>> unsigned long int i = 0;
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH * ,AR1
.line 4
;>>>> KeysIOinit(); // I/O初始化子程序
CALL _KeysIOinit
.line 6
;>>>> for (i=0; i<10; i++){} //延时
;>>>> //判是否按下键
LACK 0
MAR * ,AR2
MAR *-
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 10
SPAC
BNC L2
BZ L2
MAR *-
L1:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 10
SPAC
BZ $+4
BC L1
L2:
.line 8
;>>>> if ((PBDATDIR&0x00FF)!=0x00ff)
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC *
SUBK 255
BZ L3
.line 10
;>>>> for (i=0; i<1000; i++){} //延时消抖
LACK 0
MAR * ,AR2
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L5
BZ L5
MAR *-
L4:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L4
L5:
.line 12
;>>>> if ((PBDATDIR&0x00FF)==0x00FE)
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC *
SUBK 254
BNZ L6
.line 14
;>>>> while ((PBDATDIR&0x00FF)==0x00FE) //判S1是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 254
BNZ L8
MAR * ,AR2
L7:
.line 15
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L10
BZ L10
MAR *-
L9:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L9
L10:
.line 14
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 254
BZ L7
L8:
.line 16
;>>>> return (1); //若按下,返回1
LACK 1
B EPI0_2
L6:
.line 18
;>>>> if ((PBDATDIR&0x00FF)==0x00Fd)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 253
BNZ L11
.line 20
;>>>> while ((PBDATDIR&0x00FF)==0x00Fd) //判S2是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 253
BNZ L13
MAR * ,AR2
L12:
.line 21
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L15
BZ L15
MAR *-
L14:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L14
L15:
.line 20
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 253
BZ L12
L13:
.line 22
;>>>> return (2); //若按下,返回2
LACK 2
B EPI0_2
L11:
.line 24
;>>>> if ((PBDATDIR&0x00FF)==0x00Fb)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 251
BNZ L16
.line 26
;>>>> while ((PBDATDIR&0x00FF)==0x00Fb) //判S3是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 251
BNZ L18
MAR * ,AR2
L17:
.line 27
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L20
BZ L20
MAR *-
L19:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L19
L20:
.line 26
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 251
BZ L17
L18:
.line 28
;>>>> return (3); //若按下,返回3
LACK 3
B EPI0_2
L16:
.line 30
;>>>> if ((PBDATDIR&0x00FF)==0x00F7)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 247
BNZ L21
.line 32
;>>>> while ((PBDATDIR&0x00FF)==0x00F7) //判S4是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 247
BNZ L23
MAR * ,AR2
L22:
.line 33
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L25
BZ L25
MAR *-
L24:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L24
L25:
.line 32
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 247
BZ L22
L23:
.line 34
;>>>> return (4); //若按下,返回4
LACK 4
B EPI0_2
L21:
.line 36
;>>>> if ((PBDATDIR&0x00FF)==0x00eF)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 239
BNZ L26
.line 38
;>>>> while ((PBDATDIR&0x00FF)==0x00EF) //判S5是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 239
BNZ L28
MAR * ,AR2
L27:
.line 39
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L30
BZ L30
MAR *-
L29:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L29
L30:
.line 38
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 239
BZ L27
L28:
.line 40
;>>>> return (5); //若按下,返回5
LACK 5
B EPI0_2
L26:
.line 42
;>>>> if ((PBDATDIR&0x00FF)==0x00dF)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 223
BNZ L31
.line 44
;>>>> while ((PBDATDIR&0x00FF)==0x00dF) //判S6是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 223
BNZ L33
MAR * ,AR2
L32:
.line 45
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L35
BZ L35
MAR *-
L34:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L34
L35:
.line 44
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 223
BZ L32
L33:
.line 46
;>>>> return (6); //若按下,返回6
LACK 6
B EPI0_2
L31:
.line 48
;>>>> if ((PBDATDIR&0x00FF)==0x00bF)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 191
BNZ L36
.line 50
;>>>> while ((PBDATDIR&0x00FF)==0x00bF) //判S7是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 191
BNZ L38
MAR * ,AR2
L37:
.line 51
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L40
BZ L40
MAR *-
L39:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L39
L40:
.line 50
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 191
BZ L37
L38:
.line 52
;>>>> return (7); //若按下,返回7
LACK 7
B EPI0_2
L36:
.line 54
;>>>> if ((PBDATDIR&0x00FF)==0x007F)
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 127
BNZ L3
.line 56
;>>>> while ((PBDATDIR&0x00FF)==0x007F) //判S8是否送开
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
LAC *
SUBK 127
BNZ L43
MAR * ,AR2
L42:
.line 57
;>>>> for (i=0; i<1000; i++){}
LACK 0
LARK AR2,1
MAR *0+
SACL *+
SACH *-
LT *+
MPYK 1
LPH *
LACK 1000
SPAC
BNC L45
BZ L45
MAR *-
L44:
ZALS *+
ADDH *-
ADDK 1
SACL *+
SACH *-
LT *+
MPYK 1
LPH *-
LACK 1000
SPAC
BZ $+4
BC L44
L45:
.line 56
LARK AR3,28826
LACK 255
MAR * ,AR3
AND * ,AR1
SACL *
SSXM
LAC * ,AR2
SUBK 127
BZ L42
L43:
.line 58
;>>>> return (8); //若按下,返回8
LACK 8
B EPI0_2
L3:
.line 62
;>>>> return (0);
LACK 0
EPI0_2:
.line 63
MAR * ,AR1
SBRK 4
LAR AR0,*-
PSHD *
RET
.endfunc 75,000000000H,3
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -