scanner.asm
来自「dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,f」· 汇编 代码 · 共 3,856 行 · 第 1/5 页
ASM
3,856 行
;>>>> for(i=0;i<num_card;i++)
LACK 0
MAR * ,AR2
LARK AR2,1
MAR *0+
SACL *
ZALS *
ADRK 2
SUBS *
BGEZ L102
MAR *-
L104:
.line 63
;>>>> for(j=0;j<8;j++)
LACK 0
SACL *
ZALS *
SUBK 8
BGEZ L107
MAR *-
L106:
.line 65
;>>>> 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 63
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L106
L107:
.line 67
;>>>> if(sc == 0x0d0a)
LDPK _sc
LAC _sc
SUBK 3338
BNZ L108
.line 69
;>>>> serialPortOutput1byte(sc>>8);
RSXM
LAC _sc,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 70
;>>>> serialPortOutput1byte(sc&0xff);
LACK 255
LDPK _sc
AND _sc
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L109
L108:
.line 72
;>>>> else serialPortOutput1byte(sc&0xff);//send out sc
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L109:
.line 73
;>>>> serialPortOutput1byte(Day);
BLKD _Day+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 74
;>>>> serialPortOutput1byte(Hour);
BLKD _Hour+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 75
;>>>> serialPortOutput1byte(Minute);
BLKD _Minute+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 76
;>>>> serialPortOutput1byte(Second); //send out time
BLKD _Second+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 77
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L110
.line 79
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 80
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L111
L110:
.line 82
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> else
;>>>> {;} //error
ADDK 3338
ANDK 255
SACL *+
CALL _serialPortOutput1byte
MAR *-
L111:
.line 61
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 2
SUBS *-
BLZ L104
L102:
EPI0_5:
.line 87
MAR * ,AR1
SBRK 5
LAR AR0,*-
PSHD *
RET
.endfunc 318,000000000H,4
.sym _snrComPrefix,_snrComPrefix,32,3,0
.func 319
;>>>> static void snrComPrefix(void)
;>>>> uchar i,j;
;>>>> uchar num_card;
******************************************************
* FUNCTION DEF : _snrComPrefix
******************************************************
_snrComPrefix:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,4
LAR AR0,*0+
.sym _i,1,12,1,16
.sym _j,2,12,1,16
.sym _num_card,3,12,1,16
.line 6
;>>>> myInvOut();
CALL _myInvOut
.line 7
;>>>> num_card = labeldata[0];
MAR * ,AR2
LARK AR2,3
MAR *0+
BLKD #_labeldata,*
.line 8
;>>>> if(num_card != 0)bReadTag = 1;
LAC *
BZ L112
LACK 1
LDPK _bReadTag
SACL _bReadTag
L112:
.line 9
;>>>> if( num_card == 1)
LAC *
SUBK 1
BNZ L113
.line 11
;>>>> for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID
LACK 0
SBRK 2
SACL *
ZALS *
SUBK 8
BGEZ L115
L114:
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 L114
L115:
.line 12
;>>>> if(compareUid()==0 ) // same uid
CALL _compareUid,AR1
BNZ L116
.line 14
;>>>> if(trigger == 0)// single read
LDPK _trigger
LAC _trigger
BNZ L122
.line 16
;>>>> serialPortOutput1byte(deviceAddr); //sen out addr
BLKD _deviceAddr+0,*+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 17
;>>>> for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
LACK 0
LARK AR2,2
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L119
L118:
LAC * ,AR0
ADLK _labeldata+3,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L118
L119:
.line 18
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L120
.line 20
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 21
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L122
L120:
.line 23
;>>>> else serialPortOutput1byte(ec&0xff); // send ec
;>>>> else //different uid
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L122
L116:
.line 28
;>>>> serialPortOutput1byte(deviceAddr); //sen out addr
BLKD _deviceAddr+0,*+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 29
;>>>> for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
LACK 0
LARK AR2,2
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L124
L123:
LAC * ,AR0
ADLK _labeldata+3,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L123
L124:
.line 30
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L125
.line 32
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 33
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L122
L125:
.line 35
;>>>> else serialPortOutput1byte(ec&0xff); // send ec
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L122:
.line 37
;>>>> 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 L129
L127:
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 L127
B L129
L113:
.line 39
;>>>> else if( num_card >= 2 )//exist card
ZALS *
SUBK 2
BLZ L129
.line 41
;>>>> for(i=0;i<num_card;i++)
LACK 0
SBRK 2
SACL *
ZALS *
ADRK 2
SUBS *
BGEZ L129
MAR * ,AR1
L131:
.line 43
;>>>> serialPortOutput1byte(deviceAddr); //sen out addr
BLKD _deviceAddr+0,*+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 44
;>>>> for(j=0;j<8;j++)
LACK 0
LARK AR2,2
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L134
MAR *-
L133:
.line 46
;>>>> serialPortOutput1byte(labeldata[i*10+3+j]);
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 44
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *-
SUBK 8
BLZ L133
L134:
.line 48
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L135
.line 50
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 51
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L136
L135:
.line 53
;>>>> else serialPortOutput1byte(ec&0xff); // send ec
;>>>> else
;>>>> {;} //error
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L136:
.line 41
MAR * ,AR2
LARK AR2,1
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
ADRK 2
SUBS * ,AR1
BLZ L131
L129:
EPI0_6:
.line 58
MAR * ,AR1
SBRK 5
LAR AR0,*-
PSHD *
RET
.endfunc 376,000000000H,4
.sym _snrTimeComPrefix,_snrTimeComPrefix,32,3,0
.func 377
;>>>> static void snrTimeComPrefix(void)
;>>>> uchar i,j;
;>>>> uchar num_card;
******************************************************
* FUNCTION DEF : _snrTimeComPrefix
******************************************************
_snrTimeComPrefix:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,4
LAR AR0,*0+
.sym _i,1,12,1,16
.sym _j,2,12,1,16
.sym _num_card,3,12,1,16
.line 6
;>>>> myInvOut();
CALL _myInvOut
.line 7
;>>>> num_card = labeldata[0];
MAR * ,AR2
LARK AR2,3
MAR *0+
BLKD #_labeldata,*
.line 8
;>>>> if(num_card != 0)bReadTag = 1;
LAC *
BZ L137
LACK 1
LDPK _bReadTag
SACL _bReadTag
L137:
.line 9
;>>>> if( num_card == 1)
LAC *
SUBK 1
BNZ L138
.line 11
;>>>> for(i=0;i<8;i++)currUid[i] = labeldata[3+i];//copy uid to current UID
LACK 0
SBRK 2
SACL *
ZALS *
SUBK 8
BGEZ L140
L139:
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 L139
L140:
.line 12
;>>>> if(compareUid()==0 ) // same uid
CALL _compareUid,AR1
BNZ L141
.line 14
;>>>> if(trigger == 0)// single read
LDPK _trigger
LAC _trigger
BNZ L149
.line 16
;>>>> getBufferTime();
CALL _getBufferTime
.line 17
;>>>> serialPortOutput1byte(deviceAddr); //sen out addr
BLKD _deviceAddr+0,*+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 18
;>>>> for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
LACK 0
LARK AR2,2
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L144
L143:
LAC * ,AR0
ADLK _labeldata+3,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L143
L144:
.line 19
;>>>> if(sc == 0x0d0a)
LDPK _sc
LAC _sc
SUBK 3338
BNZ L145
.line 21
;>>>> serialPortOutput1byte(sc>>8);
RSXM
LAC _sc,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 22
;>>>> serialPortOutput1byte(sc&0xff);
LACK 255
LDPK _sc
AND _sc
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L146
L145:
.line 24
;>>>> else serialPortOutput1byte(sc&0xff);//send out sc
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L146:
.line 25
;>>>> serialPortOutput1byte(Day);
BLKD _Day+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 26
;>>>> serialPortOutput1byte(Hour);
BLKD _Hour+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 27
;>>>> serialPortOutput1byte(Minute);
BLKD _Minute+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 28
;>>>> serialPortOutput1byte(Second); //send out time
BLKD _Second+0,*+
CALL _serialPortOutput1byte
MAR *-
.line 29
;>>>> if(ec == 0x0d0a)
LDPK _ec
LAC _ec
SUBK 3338
BNZ L147
.line 31
;>>>> serialPortOutput1byte(ec>>8);
RSXM
LAC _ec,7
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 32
;>>>> serialPortOutput1byte(ec&0xff);
LACK 255
LDPK _ec
AND _ec
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L149
L147:
.line 34
;>>>> else serialPortOutput1byte(ec&0xff);//sendout ec
;>>>> else //different uid
ADDK 3338
ANDK 255
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L149
L141:
.line 39
;>>>> getBufferTime();
CALL _getBufferTime
.line 40
;>>>> serialPortOutput1byte(deviceAddr); //sen out addr
BLKD _deviceAddr+0,*+
CALL _serialPortOutput1byte
MAR *-,AR2
.line 41
;>>>> for(j=0;j<8;j++)serialPortOutput1byte(labeldata[3+j]);
LACK 0
LARK AR2,2
MAR *0+
SACL *
ZALS *
SUBK 8
BGEZ L151
L150:
LAC * ,AR0
ADLK _labeldata+3,0
SACL *
LAR AR3,* ,AR3
LAC * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-,AR2
LARK AR2,2
MAR *0+
LAC *
ADDK 1
SACL *
ZALS *
SUBK 8
BLZ L150
L151:
.line 42
;>>>> if(sc == 0x0d0a)
LDPK _sc
LAC _sc
SUBK 3338
BNZ L152
.line 44
;>>>> serialPortOutput1byte(sc>>8);
RSXM
LAC _sc,7
MAR * ,AR1
SACH *+,1
CALL _serialPortOutput1byte
MAR *-
.line 45
;>>>> serialPortOutput1byte(sc&0xff);
LACK 255
LDPK _sc
AND _sc
SACL *+
CALL _serialPortOutput1byte
MAR *-
B L153
L152:
.line 47
;>>>> else serialPortOutput1byte(sc&0xff);//send out sc
ADDK 3338
ANDK 255
MAR * ,AR1
SACL *+
CALL _serialPortOutput1byte
MAR *-
L153:
.line 48
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?