scanner.asm
来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· 汇编 代码 · 共 3,856 行 · 第 1/5 页
ASM
3,856 行
;>>>> serialPortOutput1byte(Day);
BLKD _Day+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 49
;>>>> serialPortOutput1byte(Hour);
BLKD _Hour+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 50
;>>>> serialPortOutput1byte(Minute);
BLKD _Minute+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 51
;>>>> serialPortOutput1byte(Second); //send out time
BLKD _Second+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 52
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L154
.line 54
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 55
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L149
L154:
.line 57
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
ADDK 3338
ANDK 255
SACL *+
CALL _serialPortOutput1byte
MAR *-
L149:
.line 59
;>>>> for(i=0;i<8;i++)lastUid[i] = currUid[i];//copy current uid as last uid
LACK 0
MAR * ,AR2
LARK AR2,1
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L158
L156:
LAC * ,AR0
ADLK _currUid+0,0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _lastUid+0,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L156
B L158
L138:
.line 61
;>>>> else if( num_card >= 2) //exist card
ZALS *
SUBK 2
BLZ L158
.line 63
;>>>> getBufferTime();
CALL _getBufferTime,AR1
.line 64
;>>>> for(i=0;i<num_card;i++)
LACK 0
MAR * ,AR2
LARK AR2,1
MAR *0+
SACL *
ZALS *
ADRK 2
SUBS *
BGEZ L158
MAR * ,AR1
L160:
.line 66
;>>>> serialPortOutput1byte(deviceAddr); //sen out addr
BLKD _deviceAddr+0,*+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 67
;>>>> for(j=0;j<8;j++)
LACK 0
LARK AR2,2
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L163
MAR *-
L162:
.line 69
;>>>> serialPortOutput1byte(labeldata[i*10+3+j]);
;>>>> } // senout uid
LT *+
MPYK 10
PAC
ADDK 3
RSXM
ADLK _labeldata+0,0
ADD * ,AR0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 67
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L162
L163:
.line 71
;>>>> if(sc == 0x0d0a)
LDPK _sc
LAC _sc
SUBK 3338
BNZ L164
.line 73
;>>>> serialPortOutput1byte(sc>>8);
RSXM
LAC _sc,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 74
;>>>> serialPortOutput1byte(sc&0xff);
LACK 255
LDPK _sc
AND _sc
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L165
L164:
.line 76
;>>>> else serialPortOutput1byte(sc&0xff);//send out sc
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L165:
.line 77
;>>>> serialPortOutput1byte(Day);
BLKD _Day+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 78
;>>>> serialPortOutput1byte(Hour);
BLKD _Hour+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 79
;>>>> serialPortOutput1byte(Minute);
BLKD _Minute+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 80
;>>>> serialPortOutput1byte(Second); //send out time
BLKD _Second+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 81
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L166
.line 83
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 84
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L167
L166:
.line 86
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> else
;>>>> {;} //error
ADDK 3338
ANDK 255
SACL *+
CALL _serialPortOutput1byte
MAR *-
L167:
.line 64
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 2
SUBS * ,AR1
BLZ L160
L158:
EPI0_7:
.line 91
MAR * ,AR1
SBRK 5
LAR AR0,*-
PSHD *
RET
.endfunc 467,000000000H,4
.sym _db,_db,32,3,0
.func 469
;>>>> static void db(void)
;>>>> uchar i,j,m,k;
******************************************************
* FUNCTION DEF : _db
******************************************************
_db:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,7
LAR AR0,*0+,AR2
.sym _i,1,12,1,16
.sym _j,2,12,1,16
.sym _m,3,12,1,16
.sym _k,4,12,1,16
.sym _flags,5,12,1,16
.sym _num_card,6,12,1,16
.line 4
;>>>> uchar flags = 0;
;>>>> uchar num_card;
LACK 0
LARK AR2,5
MAR *0+
SACL * ,AR1
.line 7
;>>>> myInvOut();
CALL _myInvOut
.line 8
;>>>> num_card = labeldata[0];
MAR * ,AR2
LARK AR2,6
MAR *0+
BLKD #_labeldata,*
.line 9
;>>>> if(num_card != 0)bReadTag = 1;
LAC *
BZ L168
LACK 1
LDPK _bReadTag
SACL _bReadTag
L168:
.line 10
;>>>> if( num_card == 1)
LAC *
SUBK 1
BNZ L169
.line 12
;>>>> for(i=0;i<8;i++)currUid[i] = labeldata[3+i]; //copy uid to current UID
LACK 0
SBRK 5
SACL *
ZALS *
SUBK 8
BGEZ L171
L170:
LAC * ,AR0
ADLK _labeldata+3,0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _currUid+0,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L170
L171:
.line 13
;>>>> if(compareUid()==0 ) // same uid
CALL _compareUid,AR1
BNZ L172
.line 15
;>>>> if(trigger == 0) // single read
LDPK _trigger
LAC _trigger
BNZ L185
.line 17
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.line 18
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
MAR * ,AR2
LARK AR2,5
MAR *0+
SACL *
.line 19
;>>>> flags |= 0x20; // address_flag ,no security
ORK 32
SACL *
.line 20
;>>>> if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L174
LACK 64
OR *
SACL *
L174:
.line 21
;>>>> viccdata[1] = flags; //flags
BLDD * ,#_viccdata+1
.line 22
;>>>> viccdata[2] = 0x23; //cmd
LACK 35
LDPK _viccdata+2
SACL _viccdata+2
.line 23
;>>>> for(j=0;j<8;j++) // copy uid
LACK 0
SBRK 3
SACL *
ZALS *
SUBK 8
BGEZ L176
L175:
.line 25
;>>>> viccdata[3+j] = labeldata[10-j];
LALK _labeldata+10
SUB * ,AR0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+3,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 23
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L175
L176:
.line 27
;>>>> viccdata[11] = db_adr; //start addr
LDPK _db_adr
BLDD _db_adr,#_viccdata+11
.line 28
;>>>> viccdata[12] = (db_n+1); // length
LAC _db_n
ADDK 1
LDPK _viccdata+12
SACL _viccdata+12
.line 29
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 31
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 32
;>>>> m = sendISOCmd(ISOMode);
SACL *+
CALL _sendISOCmd
MAR *-,AR2
LARK AR2,3
MAR *0+
SACL *
.line 33
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 35
;>>>> if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L177
.line 37
;>>>> for(k=0;k<(db_n+1)*5;k++) //send out block data
LACK 0
MAR *+
SACL * ,AR0
LDPK _db_n
ZALS _db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BGEZ L180
L178:
.line 38
;>>>> serialPortOutput1byte(viccdata[2+k]);
;>>>> else //不含有块状态信息
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 37
LARK AR2,4
MAR *0+
LAC *
ADDK 1
SACL * ,AR0
LDPK _db_n
ZALS _db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BLZ L178
B L180
L177:
.line 42
;>>>> for(k=0;k<(db_n+1)*4;k++) //send out block data
LACK 0
MAR *+
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BLEZ L180
L181:
.line 43
;>>>> serialPortOutput1byte(viccdata[2+k]);
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 42
LARK AR2,4
MAR *0+
LAC *
ADDK 1
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BGZ L181
L180:
.line 46
;>>>> if(ec == 0x0d0a)
LAC _ec
SUBK 3338
BNZ L183
.line 48
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 49
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L185
L183:
.line 51
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> else //different uid
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L185
L172:
.line 56
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.line 57
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
MAR * ,AR2
LARK AR2,5
MAR *0+
SACL *
.line 58
;>>>> flags |= 0x20; // address_flag ,no security
ORK 32
SACL *
.line 59
;>>>> if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L186
LACK 64
OR *
SACL *
L186:
.line 60
;>>>> viccdata[1] = flags; //flags
BLDD * ,#_viccdata+1
.line 61
;>>>> viccdata[2] = 0x23; //cmd
LACK 35
LDPK _viccdata+2
SACL _viccdata+2
.line 62
;>>>> for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
LACK 0
SBRK 3
SACL *
ZALS *
SUBK 8
BGEZ L188
L187:
LALK _labeldata+10
SUB * ,AR0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+3,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L187
L188:
.line 63
;>>>> viccdata[11] = db_adr; //start addr
LDPK _db_adr
BLDD _db_adr,#_viccdata+11
.line 64
;>>>> viccdata[12] = (db_n+1); // length
LAC _db_n
ADDK 1
LDPK _viccdata+12
SACL _viccdata+12
.line 65
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 67
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 68
;>>>> m = sendISOCmd(ISOMode);
SACL *+
CALL _sendISOCmd
MAR *-,AR2
LARK AR2,3
MAR *0+
SACL *
.line 69
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 70
;>>>> if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L189
.line 72
;>>>> for(k=0;k<(db_n+1)*5;k++) //send out block data
LACK 0
MAR *+
SACL * ,AR0
LDPK _db_n
ZALS _db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BGEZ L192
L190:
.line 73
;>>>> serialPortOutput1byte(viccdata[2+k]);
;>>>> else //不含有块状态信息
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 72
LARK AR2,4
MAR *0+
LAC *
ADDK 1
SACL * ,AR0
LDPK _db_n
ZALS _db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BLZ L190
B L192
L189:
.line 77
;>>>> for(k=0;k<(db_n+1)*4;k++) //send out block data
LACK 0
MAR *+
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BLEZ L192
L193:
.line 78
;>>>> serialPortOutput1byte(viccdata[2+k]);
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 77
LARK AR2,4
MAR *0+
LAC *
ADDK 1
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BGZ L193
L192:
.line 81
;>>>> if(ec == 0x0d0a)
LAC _ec
SUBK 3338
BNZ L195
.line 83
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 84
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?