scanner.asm
来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· 汇编 代码 · 共 3,856 行 · 第 1/5 页
ASM
3,856 行
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L185
L195:
.line 86
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L185:
.line 88
;>>>> 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 L199
L197:
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 L197
B L199
L169:
.line 90
;>>>> else if( num_card >= 2) //exist card
ZALS *
SUBK 2
BLZ L199
.line 92
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
MAR *-
SACL *
.line 93
;>>>> flags |= 0x20; // address_flag ,no security
ORK 32
SACL *
.line 94
;>>>> if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L201
LACK 64
OR *
SACL *
L201:
.line 95
;>>>> for(i=0;i<num_card;i++) // read multiple blocks
LACK 0
SBRK 4
SACL *
ZALS *
ADRK 5
SUBS *
BGEZ L199
MAR *-
L202:
.line 97
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.line 98
;>>>> viccdata[1] = flags; //flags
BLDD * ,#_viccdata+1
.line 99
;>>>> viccdata[2] = 0x23; //cmd
LACK 35
LDPK _viccdata+2
SACL _viccdata+2
.line 100
;>>>> for(j=0;j<8;j++) // copy uid
LACK 0
SBRK 3
SACL *
ZALS *
SUBK 8
BGEZ L205
MAR *-
RSXM ;;;
L204:
.line 102
;>>>> viccdata[3+j] = labeldata[i*10+10-j];
LT *+
MPYK 10
PAC
ADDK 10
ADLK _labeldata+0,0
SUB * ,AR0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+3,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 100
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L204
L205:
.line 104
;>>>> viccdata[11] = db_adr; //start addr
LDPK _db_adr
BLDD _db_adr,#_viccdata+11
.line 105
;>>>> viccdata[12] = (db_n+1);// length
LAC _db_n
ADDK 1
LDPK _viccdata+12
SACL _viccdata+12
.line 106
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 108
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 109
;>>>> m = sendISOCmd(ISOMode);
SACL *+
CALL _sendISOCmd
MAR *-,AR2
LARK AR2,3
MAR *0+
SACL *
.line 110
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 111
;>>>> if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L206
.line 113
;>>>> 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 L209
L207:
.line 114
;>>>> serialPortOutput1byte(viccdata[2+k]);
;>>>> else //不含有块状态信息
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 113
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 L207
B L209
L206:
.line 118
;>>>> 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 L209
L210:
.line 119
;>>>> serialPortOutput1byte(viccdata[2+k]);
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 118
LARK AR2,4
MAR *0+
LAC *
ADDK 1
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BGZ L210
L209:
.line 122
;>>>> if(ec == 0x0d0a)
LAC _ec
SUBK 3338
BNZ L212
.line 124
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 125
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L213
L212:
.line 127
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> else
;>>>> {;} //error
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L213:
.line 95
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 5
SUBS *-
BLZ L202
L199:
EPI0_8:
.line 132
MAR * ,AR1
SBRK 8
LAR AR0,*-
PSHD *
RET
.endfunc 600,000000000H,7
.sym _dbTime,_dbTime,32,3,0
.func 601
;>>>> static void dbTime(void)
;>>>> uchar i,j,m,k;
******************************************************
* FUNCTION DEF : _dbTime
******************************************************
_dbTime:
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 L214
LACK 1
LDPK _bReadTag
SACL _bReadTag
L214:
.line 10
;>>>> if( num_card == 1)
LAC *
SUBK 1
BNZ L215
.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 L217
L216:
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 L216
L217:
.line 13
;>>>> if(compareUid()==0 ) // same uid
CALL _compareUid,AR1
BNZ L218
.line 15
;>>>> if(trigger == 0)// single read
LDPK _trigger
LAC _trigger
BNZ L233
.line 17
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
MAR * ,AR2
LARK AR2,5
MAR *0+
SACL *
.line 18
;>>>> flags |= 0x20; // address_flag ,no security
ORK 32
SACL *
.line 19
;>>>> if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L220
LACK 64
OR *
SACL *
L220:
.line 20
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.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++)viccdata[3+j] = labeldata[10-j]; // copy uid
LACK 0
SBRK 3
SACL *
ZALS *
SUBK 8
BGEZ L222
L221:
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 L221
L222:
.line 25
;>>>> viccdata[11] = db_adr; //start addr
LDPK _db_adr
BLDD _db_adr,#_viccdata+11
.line 26
;>>>> viccdata[12] = (db_n+1); // length
LAC _db_n
ADDK 1
LDPK _viccdata+12
SACL _viccdata+12
.line 27
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 29
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 30
;>>>> m = sendISOCmd(ISOMode);
SACL *+
CALL _sendISOCmd
MAR *-,AR2
LARK AR2,3
MAR *0+
SACL * ,AR1
.line 31
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 32
;>>>> getBufferTime();
CALL _getBufferTime
.line 34
;>>>> if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L223
.line 36
;>>>> for(k=0;k<(db_n+1)*5;k++) //send out block data
LACK 0
MAR * ,AR2
LARK AR2,4
MAR *0+
SACL * ,AR0
LDPK _db_n
ZALS _db_n
ADDK 1
SACL *
LT *
LACK 5
SACL *
MPYU *,AR2
ZALS *
SPAC
BGEZ L226
L224:
.line 37
;>>>> serialPortOutput1byte(viccdata[2+k]);
;>>>> else //不含有块状态信息
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 36
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 L224
B L226
L223:
.line 41
;>>>> for(k=0;k<(db_n+1)*4;k++) //send out block data
LACK 0
MAR * ,AR2
LARK AR2,4
MAR *0+
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BLEZ L226
L227:
.line 42
;>>>> serialPortOutput1byte(viccdata[2+k]);
LAC * ,AR0
ADLK _viccdata+2,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 41
LARK AR2,4
MAR *0+
LAC *
ADDK 1
SACL *
RSXM
LDPK _db_n
LAC _db_n,2
ADDK 4
ANDK 0FFFFh
SUBS *
BGZ L227
L226:
.line 45
;>>>> if(sc == 0x0d0a)
LAC _sc
SUBK 3338
BNZ L229
.line 47
;>>>> serialPortOutput1byte(sc>>8);
RSXM
LAC _sc,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 48
;>>>> serialPortOutput1byte(sc&0xff);
LACK 255
LDPK _sc
AND _sc
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L230
L229:
.line 50
;>>>> else serialPortOutput1byte(sc&0xff);//send out sc
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L230:
.line 51
;>>>> serialPortOutput1byte(Day);
BLKD _Day+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 52
;>>>> serialPortOutput1byte(Hour);
BLKD _Hour+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 53
;>>>> serialPortOutput1byte(Minute);
BLKD _Minute+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 54
;>>>> serialPortOutput1byte(Second); //send out time
BLKD _Second+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 55
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L231
.line 57
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 58
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L233
L231:
.line 60
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> else //different uid
ADDK 3338
ANDK 255
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L233
L218:
.line 65
;>>>> viccdata[0] = 15; //len
LACK 15
LDPK _viccdata
SACL _viccdata
.line 66
;>>>> flags = ISOFlagsSys&0xfb; // not inventory
LACK 251
LDPK _ISOFlagsSys
AND _ISOFlagsSys
MAR * ,AR2
LARK AR2,5
MAR *0+
SACL *
.line 67
;>>>> flags |= 0x20; // address_flag ,no security
ORK 32
SACL *
.line 68
;>>>> if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; }// option_flag,TI卡为1才能操作
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L234
LACK 64
OR *
SACL *
L234:
.line 69
;>>>> viccdata[1] = flags; //flags
BLDD * ,#_viccdata+1
.line 70
;>>>> viccdata[2] = 0x23; //cmd
LACK 35
LDPK _viccdata+2
SACL _viccdata+2
.line 71
;>>>> for(j=0;j<8;j++)viccdata[3+j] = labeldata[10-j]; // copy uid
LACK 0
SBRK 3
SACL *
ZALS *
SUBK 8
BGEZ L236
L235:
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 L235
L236:
.line 73
;>>>> viccdata[11] = db_adr; //start addr
LDPK _db_adr
BLDD _db_adr,#_viccdata+11
.line 74
;>>>> viccdata[12] = (db_n+1); // length
LAC _db_n
ADDK 1
LDPK _viccdata+12
SACL _viccdata+12
.line 75
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
.line 77
;>>>> ISOMode = ISOModeSys&0xe7; //read ,all
LACK 231
LDPK _ISOModeSys
AND _ISOModeSys
LDPK _ISOMode
SAC
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?