📄 protocol.asm
字号:
.line 25
;>>>> pcdata[2] = 0xb0;
LACK 176
LDPK _pcdata+2
SACL _pcdata+2
.line 26
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 27
;>>>> wr_crc_resp();
;>>>> else // 错误参数模式
CALL _wr_crc_resp
B L67
L63:
.line 32
;>>>> if( pcdata[1] == deviceAddr ) //只有本机地址响应
LDPK _pcdata+1
LAC _pcdata+1
LDPK _deviceAddr
SUB _deviceAddr
BNZ L67
.line 33
;>>>> resp_para_err();
CALL _resp_para_err,AR1
L67:
EPI0_10:
.line 35
MAR * ,AR1
SBRK 6
LAR AR0,*-
PSHD *
RET
.endfunc 372,000000000H,5
.sym _rd_sgl_blk_pro,_rd_sgl_blk_pro,32,2,0
.globl _rd_sgl_blk_pro
.func 375
;>>>> void rd_sgl_blk_pro(void)
;>>>> uchar flags,addr;
******************************************************
* FUNCTION DEF : _rd_sgl_blk_pro
******************************************************
_rd_sgl_blk_pro:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,6
LAR AR0,*0+,AR2
.sym _flags,1,12,1,16
.sym _addr,2,12,1,16
.sym _flag,3,12,1,16
.sym _i,4,12,1,16
.sym _j,5,12,1,16
.line 4
;>>>> uchar flag=0;
;>>>> uchar i,j;
LACK 0
LARK AR2,3
MAR *0+
SACL *-
.line 7
;>>>> addr = pcdata[1];
BLKD #_pcdata+1,*-
.line 8
;>>>> flags = pcdata[4]&0x07;
LACK 7
LDPK _pcdata+4
AND _pcdata+4
SACL *
.line 9
;>>>> if( (flags==0)||(flags==2) )
LAC *
BZ LL13
LAC *
SUBK 2
BNZ L69
LL13:
.line 11
;>>>> if(flags==0) { flags = ISOFlagsSys&0xcf;}
LAC *
BNZ L70
LACK 207
LDPK _ISOFlagsSys
AND _ISOFlagsSys
SACL *
B L71
L70:
.line 12
;>>>> else { flags = ISOFlagsSys|0x10;} //select_flag
LACK 16
LDPK _ISOFlagsSys
OR _ISOFlagsSys
SACL *
L71:
.line 13
;>>>> if((ISOModeSys & 0x04) == 0x04) { flags |= 0x40; } //option_flag
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L72
LACK 64
OR *
SACL *
L72:
.line 15
;>>>> if(pcdata[5] >64) { flag = 1; } //目前先调试64块以内数据
;>>>> else
LDPK _pcdata+5
ZALS _pcdata+5
SUBK 64
BLEZ L73
LACK 1
ADRK 2
SACL *
B L75
L73:
.line 18
;>>>> viccdata[0] = 6;
LACK 6
LDPK _viccdata
SACL _viccdata
.line 19
;>>>> viccdata[1] = flags;
BLDD * ,#_viccdata+1,AR1
.line 20
;>>>> viccdata[2] = 0x20;
LACK 32
LDPK _viccdata+2
SACL _viccdata+2
.line 21
;>>>> viccdata[3] = pcdata[5];
LDPK _pcdata+5
BLDD _pcdata+5,#_viccdata+3
.line 22
;>>>> wr_crc_send();
CALL _wr_crc_send
B L75
L69:
.line 25
;>>>> else if(flags==1)
LAC *
SUBK 1
BNZ L76
.line 27
;>>>> if(pcdata[13] >63) { flag = 1;}
;>>>> else
LDPK _pcdata+13
ZALS _pcdata+13
SUBK 63
BLEZ L77
LACK 1
ADRK 2
SACL *
B L75
L77:
.line 30
;>>>> flags = ISOFlagsSys|0x20; //address_flag
LACK 32
LDPK _ISOFlagsSys
OR _ISOFlagsSys
SACL *
.line 31
;>>>> if((ISOModeSys & 0x04) == 0x04) {flags |= 0x40;} //option_flag
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L79
LACK 64
OR *
SACL *
L79:
.line 32
;>>>> viccdata[0] = 14;
LACK 14
LDPK _viccdata
SACL _viccdata
.line 33
;>>>> viccdata[1] = flags;
BLDD * ,#_viccdata+1
.line 34
;>>>> viccdata[2] = 0x20;
LACK 32
LDPK _viccdata+2
SACL _viccdata+2
.line 35
;>>>> for(i=3,j=12;i<11;i++,j--) { viccdata[i] = pcdata[j];}
LACK 3
ADRK 3
SACL *+
LACK 12
SACL *-
ZALS *
SUBK 11
BGEZ L81
MAR *+
L80:
LAC *-,AR0
ADLK _pcdata+0,0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+0,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
LAC *
ADDK 1
SACL *+
LAC *
SUBK 1
SACL *-
ZALS *+
SUBK 11
BLZ L80
L81:
.line 36
;>>>> viccdata[11] = pcdata[13] ;
LDPK _pcdata+13
BLDD _pcdata+13,#_viccdata+11
.line 37
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
B L75
L76:
.line 40
;>>>> else { flag = 1;}
LACK 1
ADRK 2
SACL *
L75:
.line 43
;>>>> if( deviceAddr == pcdata[1] ) //本机响应
LDPK _deviceAddr
LAC _deviceAddr
LDPK _pcdata+1
SUB _pcdata+1
BNZ L82
.line 45
;>>>> if(flag == 1) //块号参数超出标签允许值
MAR * ,AR2
LARK AR2,3
MAR *0+
LAC *
SUBK 1
BNZ L83
.line 47
;>>>> resp_para_err();
;>>>> else
CALL _resp_para_err,AR1
B L82
L83:
.line 51
;>>>> ISOMode = ISOModeSys;
LDPK _ISOModeSys
BLDD _ISOModeSys,#_ISOMode
.line 52
;>>>> i = sendISOCmd();
CALL _sendISOCmd,AR1
MAR * ,AR2
LARK AR2,4
MAR *0+
SACL *
.line 53
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 54
;>>>> if(i==0) //没有标签的存在
LAC *
BNZ L85
.line 56
;>>>> resp_no_trns();
;>>>> else
CALL _resp_no_trns,AR1
B L82
L85:
.line 60
;>>>> if(viccdata[1]==0) //标签正确执行ISO指令
LDPK _viccdata+1
LAC _viccdata+1
BNZ L87
.line 62
;>>>> if((ISOModeSys & 0x04) == 0x04) //含有块状态信息
LACK 4
LDPK _ISOModeSys
AND _ISOModeSys
SUBK 4
BNZ L88
.line 64
;>>>> pcdata[0] = 11;
LACK 11
LDPK _pcdata
SACL _pcdata
.line 65
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 66
;>>>> pcdata[2] = 0xb0;
LACK 176
LDPK _pcdata+2
SACL _pcdata+2
.line 67
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 68
;>>>> pcdata[4] = viccdata[2];
LDPK _viccdata+2
BLDD _viccdata+2,#_pcdata+4
.line 69
;>>>> pcdata[5] = viccdata[3];
LDPK _viccdata+3
BLDD _viccdata+3,#_pcdata+5
.line 70
;>>>> pcdata[6] = viccdata[4];
LDPK _viccdata+4
BLDD _viccdata+4,#_pcdata+6
.line 71
;>>>> pcdata[7] = viccdata[5];
LDPK _viccdata+5
BLDD _viccdata+5,#_pcdata+7
.line 72
;>>>> pcdata[8] = viccdata[6];
;>>>> else //不含有块状态信息
LDPK _viccdata+6
BLDD _viccdata+6,#_pcdata+8
B L89
L88:
.line 76
;>>>> pcdata[0] = 10;
LACK 10
LDPK _pcdata
SACL _pcdata
.line 77
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 78
;>>>> pcdata[2] = 0xb0;
LACK 176
LDPK _pcdata+2
SACL _pcdata+2
.line 79
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 80
;>>>> pcdata[4] = viccdata[2];
LDPK _viccdata+2
BLDD _viccdata+2,#_pcdata+4
.line 81
;>>>> pcdata[5] = viccdata[3];
LDPK _viccdata+3
BLDD _viccdata+3,#_pcdata+5
.line 82
;>>>> pcdata[6] = viccdata[4];
LDPK _viccdata+4
BLDD _viccdata+4,#_pcdata+6
.line 83
;>>>> pcdata[7] = viccdata[5];
LDPK _viccdata+5
BLDD _viccdata+5,#_pcdata+7
L89:
.line 85
;>>>> wr_crc_resp();
;>>>> else //标签执行指令ISO错误
CALL _wr_crc_resp,AR1
B L82
L87:
.line 89
;>>>> resp_iso_err();
CALL _resp_iso_err,AR1
L82:
EPI0_11:
.line 94
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 468,000000000H,6
.sym _wr_sgl_blk_pro,_wr_sgl_blk_pro,32,2,0
.globl _wr_sgl_blk_pro
.func 470
;>>>> void wr_sgl_blk_pro(void) //Write Single Block
;>>>> uchar flags,addr;
;>>>> uchar i,j;
******************************************************
* FUNCTION DEF : _wr_sgl_blk_pro
******************************************************
_wr_sgl_blk_pro:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,6
LAR AR0,*0+,AR2
.sym _flags,1,12,1,16
.sym _addr,2,12,1,16
.sym _i,3,12,1,16
.sym _j,4,12,1,16
.sym _flag,5,12,1,16
.line 5
;>>>> uchar flag =0;
LACK 0
LARK AR2,5
MAR *0+
SACL *
.line 7
;>>>> addr = pcdata[1];
SBRK 3
BLKD #_pcdata+1,*-
.line 8
;>>>> flags = pcdata[4]&0x07;
LACK 7
LDPK _pcdata+4
AND _pcdata+4
SACL *
.line 9
;>>>> if( (flags==0)||(flags==2) )
LAC *
BZ LL16
LAC *
SUBK 2
BNZ L91
LL16:
.line 11
;>>>> if(flags==0) { flags = ISOFlagsSys&0xcf;}
LAC *
BNZ L92
LACK 207
LDPK _ISOFlagsSys
AND _ISOFlagsSys
SACL *
B L93
L92:
.line 12
;>>>> else { flags = ISOFlagsSys|0x10;} //select_flag
LACK 16
LDPK _ISOFlagsSys
OR _ISOFlagsSys
SACL *
L93:
.line 13
;>>>> flags |= 0x40; //option_flag
ORK 64
SACL *
.line 14
;>>>> if(pcdata[5] >64) { flag = 1;}
;>>>> else
LDPK _pcdata+5
ZALS _pcdata+5
SUBK 64
BLEZ L94
LACK 1
ADRK 4
SACL *
B L96
L94:
.line 17
;>>>> viccdata[0] = 10;
LACK 10
LDPK _viccdata
SACL _viccdata
.line 18
;>>>> viccdata[1] = flags;
BLDD * ,#_viccdata+1,AR1
.line 19
;>>>> viccdata[2] = 0x21;
LACK 33
LDPK _viccdata+2
SACL _viccdata+2
.line 20
;>>>> viccdata[3] = pcdata[5] ;
LDPK _pcdata+5
BLDD _pcdata+5,#_viccdata+3
.line 21
;>>>> viccdata[4] = pcdata[7];
LDPK _pcdata+7
BLDD _pcdata+7,#_viccdata+4
.line 22
;>>>> viccdata[5] = pcdata[8];
LDPK _pcdata+8
BLDD _pcdata+8,#_viccdata+5
.line 23
;>>>> viccdata[6] = pcdata[9];
LDPK _pcdata+9
BLDD _pcdata+9,#_viccdata+6
.line 24
;>>>> viccdata[7] = pcdata[10];
LDPK _pcdata+10
BLDD _pcdata+10,#_viccdata+7
.line 25
;>>>> wr_crc_send();
CALL _wr_crc_send
B L96
L91:
.line 28
;>>>> else if(flags==1)
LAC *
SUBK 1
BNZ L97
.line 30
;>>>> flags = ISOFlagsSys|0x20; //address_flag
LACK 32
LDPK _ISOFlagsSys
OR _ISOFlagsSys
SACL *
.line 31
;>>>> flags |= 0x40; //option_flag
ORK 64
SACL *
.line 32
;>>>> if(pcdata[13] >64) { flag = 1;}
;>>>> else
LDPK _pcdata+13
ZALS _pcdata+13
SUBK 64
BLEZ L98
LACK 1
ADRK 4
SACL *
B L96
L98:
.line 35
;>>>> viccdata[0] = 18;
LACK 18
LDPK _viccdata
SACL _viccdata
.line 36
;>>>> viccdata[1] = flags;
BLDD * ,#_viccdata+1
.line 37
;>>>> viccdata[2] = 0x21;
LACK 33
LDPK _viccdata+2
SACL _viccdata+2
.line 38
;>>>> for(i=3,j=12;i<11;i++,j--) { viccdata[i]= pcdata[j]; }
LACK 3
ADRK 2
SACL *+
LACK 12
SACL *-
ZALS *
SUBK 11
BGEZ L101
MAR *+
L100:
LAC *-,AR0
ADLK _pcdata+0,0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _viccdata+0,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
LAC *
ADDK 1
SACL *+
LAC *
SUBK 1
SACL *-
ZALS *+
SUBK 11
BLZ L100
L101:
.line 39
;>>>> viccdata[11] = pcdata[13] ;
LDPK _pcdata+13
BLDD _pcdata+13,#_viccdata+11
.line 40
;>>>> viccdata[12] = pcdata[15];
LDPK _pcdata+15
BLDD _pcdata+15,#_viccdata+12
.line 41
;>>>> viccdata[13] = pcdata[16];
LDPK _pcdata+16
BLDD _pcdata+16,#_viccdata+13
.line 42
;>>>> viccdata[14] = pcdata[17];
LDPK _pcdata+17
BLDD _pcdata+17,#_viccdata+14
.line 43
;>>>> viccdata[15] = pcdata[18];
LDPK _pcdata+18
BLDD _pcdata+18,#_viccdata+15
.line 44
;>>>> wr_crc_send();
CALL _wr_crc_send,AR1
B L96
L97:
.line 47
;>>>> else { flag = 1;}//mode error
LACK 1
ADRK 4
SACL *
L96:
.line 49
;>>>> if(flag == 1) //块号参数超出标签允许值
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *
SUBK 1
BNZ L102
.line 51
;>>>> if( deviceAddr == pcdata[1] ) //本机响应
LDPK _deviceAddr
LAC _deviceAddr
LDPK _pcdata+1
SUB _pcdata+1
BNZ L104
.line 53
;>>>> resp_para_err();
;>>>> else
CALL _resp_para_err,AR1
B L104
L102:
.line 58
;>>>> ISOMode = ISOModeSys | 0x10; //write
LACK 16
LDPK _ISOModeSys
OR _ISOModeSys
LDPK _ISOMode
SACL _ISOMode
.line 59
;>>>> i = sendISOCmd();
CALL _sendISOCmd,AR1
MAR * ,AR2
LARK AR2,3
MAR *0+
SACL *
.line 60
;>>>> CS_RAM_1;
LACK 63487
LDPK _MCRC
AND _MCRC
SACL _MCRC
LACK 2056
LDPK _PFDATDIR
OR _PFDATDIR
SACL _PFDATDIR
.line 61
;>>>> if( deviceAddr == pcdata[1] ) //本机响应
LDPK _deviceAddr
LAC _deviceAddr
LDPK _pcdata+1
SUB _pcdata+1
BNZ L104
.line 63
;>>>> if(i==0)
LAC *
BNZ L106
.line 65
;>>>> resp_no_trns();
;>>>> else
CALL _resp_no_trns,AR1
B L104
L106:
.line 69
;>>>> if(viccdata[1] == 0)
LDPK _viccdata+1
LAC _viccdata+1
BNZ L108
.line 71
;>>>> pcdata[0] = 6;
LACK 6
LDPK _pcdata
SACL _pcdata
.line 72
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 73
;>>>> pcdata[2] = ISO_MANDATORY_CMD;
LACK 176
LDPK _pcdata+2
SACL _pcdata+2
.line 74
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 75
;>>>> wr_crc_resp();
;>>>> else
CALL _wr_crc_resp,AR1
B L104
L108:
.line 79
;>>>> resp_iso_err();
CALL _resp_iso_err,AR1
L104:
EPI0_12:
.line 84
MAR * ,AR1
SBRK 7
LAR AR0,*-
PSHD *
RET
.endfunc 553,000000000H,6
.sym _lock_mul_blk_pro,_lock_mul_blk_pro,32,2,0
.globl _lock_mul_blk_pro
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -