📄 buffer.asm
字号:
SUBK 5
BGZ L34
.line 40
;>>>> bufferModeSelect();
CALL _bufferModeSelect,AR1
L34:
.line 41
;>>>> if(buffer[0] >= 1) // tag read
LDPK _buffer
LAC _buffer
BZ L33
.line 43
;>>>> OptOutput1(1); //opt ouput high
MAR * ,AR1
LACK 1
SACL *+
CALL _OptOutput1
MAR *-,AR2
.line 44
;>>>> masterUpEdge = 0x00; //clear master up edge flag
LACK 0
LARK AR2,8
MAR *0+
SACL *
.line 45
;>>>> if( (c_sync&0x80) == 0x80 ) //RFOFF
LACK 128
LDPK _c_sync
AND _c_sync
SUBK 128
BNZ L36
.line 47
;>>>> setX9c503ToLowest(); // close RF
CALL _setX9c503ToLowest,AR1
.line 48
;>>>> RFoffFlag = 0xaa;
LACK 170
LDPK _RFoffFlag
SACL _RFoffFlag
L36:
.line 50
;>>>> syncTimeoutFlag = 0x01;
LACK 1
SACL _syncTimeoutFlag
L33:
.line 53
;>>>> masterLast = masterCurrent;
;>>>> else // first time access
MAR * ,AR2
LARK AR2,7
MAR *0+
LAC *-
SACL *
B L41
L31:
.line 57
;>>>> if(buffer[0] <= 5)
LDPK _buffer
ZALS _buffer
SUBK 5
BGZ L38
.line 58
;>>>> bufferModeSelect();
CALL _bufferModeSelect,AR1
L38:
.line 59
;>>>> if(buffer[0] >= 1) // tag read
LDPK _buffer
LAC _buffer
BZ L41
.line 61
;>>>> OptOutput1(1); //opt ouput high
MAR * ,AR1
LACK 1
SACL *+
CALL _OptOutput1
MAR *-
.line 62
;>>>> masterFirst = 0xaa;
LACK 170
LDPK _masterFirst
SACL _masterFirst
.line 63
;>>>> if( (c_sync&0x80) == 0x80 ) //RFOFF
LACK 128
AND _c_sync
SUBK 128
BNZ L40
.line 65
;>>>> setX9c503ToLowest(); // close RF
CALL _setX9c503ToLowest
.line 66
;>>>> RFoffFlag = 0xaa;
LACK 170
LDPK _RFoffFlag
SACL _RFoffFlag
L40:
.line 68
;>>>> syncTimeoutFlag = 0x01;
;>>>> else // slave mode
LACK 1
SACL _syncTimeoutFlag
B L41
L30:
.line 74
;>>>> syncTimeoutFlag_out = 1;
LACK 1
SACL _syncTimeoutFlag_out
.line 75
;>>>> slaveCurrent = OpticInput3()&0x01;
CALL _OpticInput3,AR1
ANDK 1
MAR * ,AR2
LARK AR2,4
MAR *0+
SACL *
.line 76
;>>>> if( (slaveCurrent != slaveLast)&&(slaveCurrent == 0x01)||(timeOutCome == 0xaa) )
LAC *-
SUB *
BZ LL11
MAR *+
LAC *
SUBK 1
BZ LL10
LL11:
LDPK _timeOutCome
LAC _timeOutCome
SUBK 170
BNZ L42
LL10:
.line 78
;>>>> syncTimeoutFlag_out = 0;
LACK 0
LDPK _syncTimeoutFlag_out
SACL _syncTimeoutFlag_out
.line 79
;>>>> slaveUpEdge = 0xaa; //up edge come
LACK 170
LARK AR2,5
MAR *0+
SACL * ,AR1
.line 80
;>>>> timeOutCome = 0x00;
;>>>> //if( RFoffFlag == 0xaa )
LACK 0
SACL _timeOutCome
.line 83
;>>>> RFoffFlag = 0x00;
SACL _RFoffFlag
.line 84
;>>>> adjustX9c503(1,globalLevel); // open RF
BLKD _globalLevel+0,*+
LACK 1
SACL *+
CALL _adjustX9c503
SBRK 2
L42:
.line 87
;>>>> if( (slaveUpEdge == 0xaa) || (timeOutCome == 0xaa) )
MAR * ,AR2
LARK AR2,5
MAR *0+
LAC *
SUBK 170
BZ LL12
LDPK _timeOutCome
LAC _timeOutCome
SUBK 170
BNZ L43
LL12:
.line 89
;>>>> timeOutCome = 0x00;
LACK 0
LDPK _timeOutCome
SACL _timeOutCome
.line 90
;>>>> if(buffer[0] <= 5)
LDPK _buffer
ZALS _buffer
SUBK 5
BGZ L44
.line 91
;>>>> bufferModeSelect();
CALL _bufferModeSelect,AR1
L44:
.line 92
;>>>> if(buffer[0] >= 1) // tag read
LDPK _buffer
LAC _buffer
BZ L43
.line 94
;>>>> OptOutput1(1); //opt ouput high
MAR * ,AR1
LACK 1
SACL *+
CALL _OptOutput1
MAR *-,AR2
.line 95
;>>>> slaveUpEdge = 0x00; //clear slave up edge flag
LACK 0
LARK AR2,5
MAR *0+
SACL *
.line 96
;>>>> if( (c_sync&0x80) == 0x80 ) //RFOFF
LACK 128
LDPK _c_sync
AND _c_sync
SUBK 128
BNZ L46
.line 98
;>>>> setX9c503ToLowest(); // close RF
CALL _setX9c503ToLowest,AR1
.line 99
;>>>> RFoffFlag = 0xaa;
LACK 170
LDPK _RFoffFlag
SACL _RFoffFlag
L46:
.line 101
;>>>> syncTimeoutFlag = 0x01;
LACK 1
SACL _syncTimeoutFlag
L43:
.line 104
;>>>> slaveLast = slaveCurrent;
MAR * ,AR2
LARK AR2,4
MAR *0+
LAC *-
SACL *
L41:
.line 107
;>>>> if( (syncTimeoutCounter>=1) && (syncTimeoutFlag == 1) )
LDPK _syncTimeoutCounter
LAC _syncTimeoutCounter
BZ L47
LAC _syncTimeoutFlag
SUBK 1
BNZ L47
.line 109
;>>>> syncTimeoutFlag = 0x00;
LACK 0
SACL _syncTimeoutFlag
.line 110
;>>>> syncTimeoutCounter = 0x00;
SACL _syncTimeoutCounter
.line 111
;>>>> OptOutput1(0); //opt ouput low
MAR * ,AR1
SACL *+
CALL _OptOutput1
MAR *-
L47:
.line 114
;>>>> if( (syncTimeoutCounter_out >= c_sync_timeout) && (syncTimeoutFlag_out == 1) )
LDPK _syncTimeoutCounter_out
ZALS _syncTimeoutCounter_out
SUBS _c_sync_timeout
BLZ L49
LAC _syncTimeoutFlag_out
SUBK 1
BNZ L49
.line 116
;>>>> syncTimeoutCounter_out = 0;
LACK 0
SACL _syncTimeoutCounter_out
.line 117
;>>>> syncTimeoutFlag_out = 0;
SACL _syncTimeoutFlag_out
.line 118
;>>>> timeOutCome = 0xaa;
LACK 170
SACL _timeOutCome
.line 119
;>>>> pcdata[1] = 0xaa;
LDPK _pcdata+1
SACL _pcdata+1
.line 120
;>>>> initializeBuffer(); //init to clr buffer
;>>>> else
CALL _initializeBuffer,AR1
B L49
L29:
.line 125
;>>>> bufferModeSelect();
CALL _bufferModeSelect,AR1
L49:
EPI0_3:
.line 127
MAR * ,AR1
SBRK 10
LAR AR0,*-
PSHD *
RET
.endfunc 259,000000000H,9
.sect ".cinit"
.word 1,_bufferReadCouner
.word 0
.sym _bufferReadCouner,_bufferReadCouner,12,2,16
.globl _bufferReadCouner
.text
.sym _bufferModeSelect,_bufferModeSelect,32,3,0
.func 261
;>>>> static void bufferModeSelect()
******************************************************
* FUNCTION DEF : _bufferModeSelect
******************************************************
_bufferModeSelect:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> if( bufferReadCouner >= c_valid_time)
;>>>> switch(c_tr_data)
LDPK _bufferReadCouner
ZALS _bufferReadCouner
SUBS _c_valid_time
BLZ L50
B L51
L52:
.line 7
;>>>> case 0x01:{serialNum( ); break;} // serial number
CALL _serialNum,AR1
B L53
L54:
.line 8
;>>>> case 0x02:{db(); break;}
CALL _db,AR1
B L53
L55:
.line 9
;>>>> case 0x03:{serialNumDb(); break;} // serial number,datablock
CALL _serialNumDb,AR1
B L53
L56:
.line 10
;>>>> case 0x21:{serialNumTimer();break;} // timer,serial number
CALL _serialNumTimer,AR1
B L53
L57:
.line 11
;>>>> case 0x22:{dbTimer(); break;}
CALL _dbTimer,AR1
B L53
L58:
.line 12
;>>>> case 0x23:{serialDbTimer(); break;} // datablock,serial number,timer
CALL _serialDbTimer,AR1
B L53
L59:
.line 13
;>>>> default: {serialNum(); break;}
CALL _serialNum,AR1
B L53
L51:
.line 5
ZALS _c_tr_data
SUBK 1
BZ L52
SUBK 1
BZ L54
SUBK 1
BZ L55
SUBK 30
BZ L56
SUBK 1
BZ L57
SUBK 1
BZ L58
B L59
L53:
.line 15
;>>>> bufferReadCouner = 0;
LACK 0
LDPK _bufferReadCouner
SACL _bufferReadCouner
L50:
EPI0_4:
.line 17
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 277,000000000H,1
.sym _readDataBuffInfor,_readDataBuffInfor,32,3,0
.func 278
;>>>> static void readDataBuffInfor( )
******************************************************
* FUNCTION DEF : _readDataBuffInfor
******************************************************
_readDataBuffInfor:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,1
LAR AR0,*0+
.line 3
;>>>> if(pcdata[1] == deviceAddr)
LDPK _pcdata+1
LAC _pcdata+1
LDPK _deviceAddr
SUB _deviceAddr
BNZ L60
.line 5
;>>>> pcdata[0] = 12;
LACK 12
LDPK _pcdata
SACL _pcdata
.line 6
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 7
;>>>> pcdata[2] = 0x31;
LACK 49
LDPK _pcdata+2
SACL _pcdata+2
.line 8
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 9
;>>>> pcdata[4] = 0x04;
LACK 4
LDPK _pcdata+4
SACL _pcdata+4
.line 10
;>>>> pcdata[5] = 0x3c;
LACK 60
LDPK _pcdata+5
SACL _pcdata+5
.line 11
;>>>> pcdata[6] = 0x00;
LACK 0
LDPK _pcdata+6
SACL _pcdata+6
.line 12
;>>>> pcdata[7] = 0x01;
LACK 1
LDPK _pcdata+7
SACL _pcdata+7
.line 13
;>>>> pcdata[8] = 0x00;
LACK 0
LDPK _pcdata+8
SACL _pcdata+8
.line 14
;>>>> pcdata[9] = 0x01;
LACK 1
LDPK _pcdata+9
SACL _pcdata+9
.line 15
;>>>> wr_crc_resp();
CALL _wr_crc_resp
L60:
EPI0_5:
.line 17
SBRK 2
LAR AR0,*-
PSHD *
RET
.endfunc 294,000000000H,1
.sym _initializeBuffer,_initializeBuffer,32,3,0
.func 295
;>>>> static void initializeBuffer()
;>>>> uint i;
******************************************************
* FUNCTION DEF : _initializeBuffer
******************************************************
_initializeBuffer:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,2
LAR AR0,*0+,AR2
.sym _i,1,14,1,16
.line 4
;>>>> bufferInitFlag = 1;
LACK 1
LDPK _bufferInitFlag
SACL _bufferInitFlag
.line 5
;>>>> bufferClrFlag = 0;
LACK 0
SACL _bufferClrFlag
.line 6
;>>>> bufferReadFlag = 0;
SACL _bufferReadFlag
.line 7
;>>>> for(i=0;i<BuffLen;i++)buffer[i]=0; //init to clr buffer
LARK AR2,1
MAR *0+
SACL *
ZALS *
SUBK 511
BGEZ L62
L61:
LAC * ,AR0
ADLK _buffer+0,0
SACL *
LAR AR3,* ,AR3
LACK 0
SACL * ,AR2
LAC *
ADDK 1
SACL *
ZALS *
SUBK 511
BLZ L61
L62:
.line 8
;>>>> if(pcdata[1] == deviceAddr)
LDPK _pcdata+1
LAC _pcdata+1
LDPK _deviceAddr
SUB _deviceAddr
BNZ L63
.line 10
;>>>> pcdata[0] = 6;
LACK 6
LDPK _pcdata
SACL _pcdata
.line 11
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 12
;>>>> pcdata[2] = 0x33;
LACK 51
LDPK _pcdata+2
SACL _pcdata+2
.line 13
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 14
;>>>> wr_crc_resp();
CALL _wr_crc_resp,AR1
L63:
EPI0_6:
.line 16
MAR * ,AR1
SBRK 3
LAR AR0,*-
PSHD *
RET
.endfunc 310,000000000H,2
.sym _readBufferData,_readBufferData,32,3,0
.func 311
;>>>> static void readBufferData()
;>>>> uint i;
;>>>> uchar len;
******************************************************
* FUNCTION DEF : _readBufferData
******************************************************
_readBufferData:
POPD *+
SAR AR0,*+
SAR AR1,*
LARK AR0,3
LAR AR0,*0+
.sym _i,1,14,1,16
.sym _len,2,12,1,16
.line 5
;>>>> if(pcdata[1] == deviceAddr)
LDPK _pcdata+1
LAC _pcdata+1
LDPK _deviceAddr
SUB _deviceAddr
BNZ L64
.line 7
;>>>> if( (bufferInitFlag == 1) && (bufferClrFlag == 0) )
LDPK _bufferInitFlag
LAC _bufferInitFlag
SUBK 1
BNZ L65
LAC _bufferClrFlag
BNZ L65
.line 9
;>>>> bufferReadFlag = 1;
LACK 1
SACL _bufferReadFlag
.line 10
;>>>> if(buffer[0] == 0x00)
LDPK _buffer
LAC _buffer
BNZ L68
.line 12
;>>>> pcdata[0] = 6;
LACK 6
LDPK _pcdata
SACL _pcdata
.line 13
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 14
;>>>> pcdata[2] = 0x21;
LACK 33
LDPK _pcdata+2
SACL _pcdata+2
.line 15
;>>>> pcdata[3] = 0x01; //no tag
LACK 1
LDPK _pcdata+3
SACL _pcdata+3
.line 16
;>>>> wr_crc_resp();
;>>>> else
;>>>> switch(c_tr_data)
;>>>> case 0x01:
CALL _wr_crc_resp
B L64
L69:
.line 24
;>>>> pcdata[0] = 6+buffer[0]*9+2;
LDPK _buffer
LT _buffer
MPYK 9
PAC
ADDK 8
LDPK _pcdata
SACL _pcdata
.line 25
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 26
;>>>> pcdata[2] = 0x21;
LACK 33
LDPK _pcdata+2
SACL _pcdata+2
.line 27
;>>>> pcdata[3] = OK;
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
.line 28
;>>>> pcdata[4] = c_tr_data;
LDPK _c_tr_data
BLDD _c_tr_data,#_pcdata+4
.line 29
;>>>> pcdata[5] = buffer[0];
LDPK _buffer
BLDD _buffer,#_pcdata+5
.line 30
;>>>> for(i=0;i<buffer[0]*9;i++)
MAR * ,AR2
LARK AR2,1
MAR *0+
SACL * ,AR0
LT _buffer
LACK 9
SACL *
MPYU *,AR2
ZALS *
SPAC
BGEZ L71
L70:
.line 32
;>>>> pcdata[6+i] = buffer[1+i];
LAC * ,AR0
ADLK _buffer+1,0
SACL *
LAR AR3,* ,AR2
LAC * ,AR0
ADLK _pcdata+6,0
SACL *
LAR AR4,* ,AR3
LAC * ,AR4
SACL * ,AR2
.line 30
LAC *
ADDK 1
SACL * ,AR0
LDPK _buffer
LT _buffer
LACK 9
SACL *
MPYU *,AR2
ZALS *
SPAC
BLZ L70
L71:
.line 34
;>>>> wr_crc_resp();
CALL _wr_crc_resp,AR1
.line 36
;>>>> break;
;>>>> case 0x02:
B L64
L73:
.line 39
;>>>> len = buffer[0]*(2+(c_db_n+1)*5)+6+2;
LDPK _c_db_n
LAC _c_db_n
ADDK 1
MAR * ,AR0
SACL *
LT *
MPYK 5
PAC
ADDK 2
SACL *
LDPK _buffer
LT _buffer
MPYU * ,AR2
PAC
ADDK 8
LARK AR2,2
MAR *0+
SACL * ,AR0
.line 40
;>>>> pcdata[0] = 6+buffer[0]*(2+(c_db_n+1)*5)+2;
LDPK _c_db_n
LAC _c_db_n
ADDK 1
SACL *
LT *
MPYK 5
PAC
ADDK 2
SACL *
LDPK _buffer
LT _buffer
MPYU * ,AR2
PAC
ADDK 8
LDPK _pcdata
SACL _pcdata
.line 41
;>>>> pcdata[1] = deviceAddr;
LDPK _deviceAddr
BLDD _deviceAddr,#_pcdata+1
.line 42
;>>>> pcdata[2] = 0x21;
LACK 33
LDPK _pcdata+2
SACL _pcdata+2
.line 43
;>>>> if(len<=0xff)pcdata[3] = OK;
ZALS *
SUBK 255
BGZ L74
LACK 0
LDPK _pcdata+3
SACL _pcdata+3
B L75
L74:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -