📄 nrf905_temperature.s
字号:
L281:
.dbline 756
inc R10
L283:
.dbline 756
cp R10,R20
brlo L280
X60:
.dbline 759
; CSN_H;
sbi 0x18,2
.dbline -2
L278:
.dbline 0 ; func end
ld R20,y+
ld R10,y+
ret
.dbsym r len 20 c
.dbsym r i 10 c
.dbend
.dbfunc e SPI_R_RX_PAYLOAD _SPI_R_RX_PAYLOAD fc
; i -> <dead>
; len -> R20
.even
_SPI_R_RX_PAYLOAD::
st -y,R20
.dbline -1
.dbline 764
; }
;
; /////////////////////////////////////////////////////////////
; BYTE SPI_R_RX_PAYLOAD()
; {
.dbline 767
; BYTE i,len;
;
; spi_rxpt = 0;
clr R2
sts _spi_rxpt,R2
.dbline 768
; spi_handlept = 0;
sts _spi_handlept,R2
.dbline 769
; TRX_CE_L;
cbi 0x12,6
.dbline 771
; // nrF905_Standby_Mode();
; CSN_L;
cbi 0x18,2
.dbline 772
; SPI_Char(0,R_RX_PAYLOAD);
ldi R18,36
clr R16
rcall _SPI_Char
.dbline 773
; len = Register[3] & 0x3f;
lds R20,_Register+3
andi R20,63
rjmp L287
L286:
.dbline 774
; while(DR) {
.dbline 775
; SPI_Char(1,0xff);
ldi R18,255
ldi R16,1
rcall _SPI_Char
.dbline 776
; }
L287:
.dbline 774
sbic 0x10,3
rjmp L286
X61:
.dbline 778
;
; CSN_H;
sbi 0x18,2
.dbline 779
; return spi_handle(R_RX_PAYLOAD);
ldi R16,36
rcall _spi_handle
.dbline -2
L284:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym l i 1 c
.dbsym r len 20 c
.dbend
.dbfunc e MakeFrame _MakeFrame fV
; i -> R20
; cmd -> R10
.even
_MakeFrame::
rcall push_xgset300C
mov R10,R16
.dbline -1
.dbline 784
; }
;
; /////////////////////////////////////////////////////////////
; void MakeFrame(BYTE cmd)
; {
.dbline 786
; BYTE i;
; switch(cmd) {
mov R20,R10
clr R21
cpi R20,0
cpc R20,R21
breq L293
X62:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L294
X63:
cpi R20,2
ldi R30,0
cpc R21,R30
breq L295
X64:
cpi R20,3
ldi R30,0
cpc R21,R30
breq L297
X65:
cpi R20,5
ldi R30,0
cpc R21,R30
breq L299
X66:
cpi R20,6
ldi R30,0
cpc R21,R30
breq L300
X67:
rjmp L291
L293:
.dbline 788
; case CMD_ASKDATA:
; ms(100);
ldi R16,100
ldi R17,0
rcall _ms
.dbline 789
; CallData();
rcall _CallData
.dbline 790
; break;
rjmp L291
L294:
.dbline 792
; case CMD_RETDATA:
; ms(5);
ldi R16,5
ldi R17,0
rcall _ms
.dbline 793
; RetData();
rcall _RetData
.dbline 795
;
; break;
rjmp L291
L295:
.dbline 797
; case CMD_DOWNPARA:
; DownPara(spi_rxbuf[6]);
lds R16,_spi_rxbuf+6
rcall _DownPara
.dbline 798
; break;
rjmp L291
L297:
.dbline 800
; case CMD_RETPARA:
; RetPara(spi_rxbuf[6]);
lds R16,_spi_rxbuf+6
rcall _RetPara
.dbline 801
; break;
rjmp L291
L299:
.dbline 803
; case CMD_SETID:
; SetID();
rcall _SetID
.dbline 804
; break;
rjmp L291
L300:
.dbline 806
; case CMD_SETID_OK:
; SetIDOK();
rcall _SetIDOK
.dbline 807
; break;
.dbline 808
; default: break;
L291:
.dbline 811
; }
;
; for ( i=0; i<tx_len; i++ ) uart_TxChar(tx_buf[i]);
clr R20
rjmp L304
L301:
.dbline 811
ldi R24,<_tx_buf
ldi R25,>_tx_buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R16,z+0
rcall _uart_TxChar
L302:
.dbline 811
inc R20
L304:
.dbline 811
lds R2,_tx_len
cp R20,R2
brlo L301
X68:
.dbline 813
;
; for ( i=tx_len; i<16; i++ ) tx_buf[i] = 0;
mov R20,R2
rjmp L308
L305:
.dbline 813
ldi R24,<_tx_buf
ldi R25,>_tx_buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
L306:
.dbline 813
inc R20
L308:
.dbline 813
cpi R20,16
brlo L305
X69:
.dbline -2
L289:
.dbline 0 ; func end
rjmp pop_xgset300C
.dbsym r i 20 c
.dbsym r cmd 10 c
.dbend
.dbfunc e SendGram _SendGram fV
; cmd -> R10
.even
_SendGram::
st -y,R10
mov R10,R16
.dbline -1
.dbline 818
; }
;
; /////////////////////////////////////////////////////////////
; void SendGram(BYTE cmd)
; {
.dbline 819
; MakeFrame(cmd);
mov R16,R10
rcall _MakeFrame
.dbline 820
; nrF905_RX_Mode();
rcall _nrF905_RX_Mode
L310:
.dbline 821
; while(CD) {;}
.dbline 821
.dbline 821
L311:
.dbline 821
sbic 0x10,2
rjmp L310
X70:
L313:
.dbline 822
; while(AM) {;}
.dbline 822
.dbline 822
L314:
.dbline 822
sbic 0x10,4
rjmp L313
X71:
.dbline 824
;
; nrF905_TX_Mode();
rcall _nrF905_TX_Mode
.dbline 825
; SPI_W_TX_ADDRESS();
rcall _SPI_W_TX_ADDRESS
.dbline 826
; SPI_W_TX_PAYLOAD();
rcall _SPI_W_TX_PAYLOAD
.dbline 827
; TRX_CE_H;
sbi 0x12,6
.dbline 828
; us(20);
ldi R16,20
ldi R17,0
rcall _us
.dbline 829
; TRX_CE_L;
cbi 0x12,6
L316:
.dbline 830
; while (!DR);
L317:
.dbline 830
sbis 0x10,3
rjmp L316
X72:
.dbline 832
;
; nrF905_RX_Mode();
rcall _nrF905_RX_Mode
.dbline -2
L309:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r cmd 10 c
.dbend
.dbfunc e handle _handle fV
; lpc -> <dead>
; len -> R20
; i -> R20
.even
_handle::
rcall push_xgset300C
.dbline -1
.dbline 837
; }
;
; /////////////////////////////////////////////////////////////
; void handle(void)
; {
.dbline 840
; BYTE len,i;
; BYTE lpc;
; if ( spi_rxbuf[0] != 0xeb ) return;
lds R24,_spi_rxbuf
cpi R24,235
breq L320
X73:
.dbline 840
rjmp L319
L320:
.dbline 841
; if ( spi_rxbuf[1] != 0x90 ) return;
lds R24,_spi_rxbuf+1
cpi R24,144
breq L322
X74:
.dbline 841
rjmp L319
L322:
.dbline 843
;
; if ( (spi_rxbuf[2] != CMD_SETID) && (spi_rxbuf[2] != CMD_READID) ) {
lds R24,_spi_rxbuf+2
cpi R24,5
breq L325
X75:
cpi R24,7
breq L325
X76:
.dbline 843
.dbline 844
; if (( spi_rxbuf[3] != ID_L ) || (spi_rxbuf[4] != ID_H)) return;
lds R2,_ID_L
lds R3,_spi_rxbuf+3
cp R3,R2
brne L333
X77:
lds R2,_ID_H
lds R3,_spi_rxbuf+4
cp R3,R2
breq L329
X78:
L333:
.dbline 844
rjmp L319
L329:
.dbline 845
; }
L325:
.dbline 847
;
; switch(spi_rxbuf[2]) {
lds R20,_spi_rxbuf+2
clr R21
cpi R20,0
cpc R20,R21
breq L338
X79:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L340
X80:
cpi R20,2
ldi R30,0
cpc R21,R30
breq L341
X81:
cpi R20,5
ldi R30,0
cpc R21,R30
breq L339
X82:
cpi R20,7
ldi R30,0
cpc R21,R30
breq L342
X83:
rjmp L319
L338:
.dbline 849
; case CMD_ASKDATA:
; len = 7;
ldi R20,7
.dbline 850
; break;
rjmp L335
L339:
.dbline 852
; case CMD_SETID:
; len = 6;
ldi R20,6
.dbline 853
; break;
rjmp L335
L340:
.dbline 855
; case CMD_RETDATA:
; len = 8+2*(num-startnum);
lds R2,_startnum
lds R20,_num
sub R20,R2
lsl R20
subi R20,248 ; addi 8
.dbline 856
; break;
rjmp L335
L341:
.dbline 858
; case CMD_DOWNPARA:
; len = 14;
ldi R20,14
.dbline 859
; break;
rjmp L335
L342:
.dbline 861
; case CMD_READID:
; len = 4;
ldi R20,4
.dbline 862
; break;
.dbline 863
; default: return;
L335:
.dbline 866
; }
;
; if ( GetLPC(spi_rxbuf,len) ) return;
mov R18,R20
clr R19
ldi R16,<_spi_rxbuf
ldi R17,>_spi_rxbuf
rcall _GetLPC
tst R16
breq L343
X84:
.dbline 866
rjmp L319
L343:
.dbline 869
;
;
; switch(spi_rxbuf[2]) {
lds R20,_spi_rxbuf+2
clr R21
cpi R20,0
cpc R20,R21
breq L349
X85:
cpi R20,2
ldi R30,0
cpc R21,R30
brne X93
rjmp L361
X93:
X86:
cpi R20,5
ldi R30,0
cpc R21,R30
breq L357
X87:
cpi R20,7
ldi R30,0
cpc R21,R30
brne X94
rjmp L360
X94:
X88:
rjmp L346
L349:
.dbline 871
; case CMD_ASKDATA:
; num = spi_rxbuf[5];
lds R2,_spi_rxbuf+5
sts _num,R2
.dbline 873
;
; if(num>6) num = 6;
ldi R24,6
cp R24,R2
brsh L351
X89:
.dbline 873
sts _num,R24
L351:
.dbline 875
;
; if(num != EEPROM_read(num_ADDR)) EEPROM_write(num_ADDR, num);
ldi R16,432
ldi R17,1
rcall _EEPROM_read
lds R2,_num
cp R2,R16
breq L353
X90:
.dbline 875
mov R18,R2
ldi R16,432
ldi R17,1
rcall _EEPROM_write
L353:
.dbline 877
;
; startnum = 0;
clr R2
sts _startnum,R2
.dbline 879
;
; SendGram(CMD_RETDATA);
ldi R16,1
rcall _SendGram
.dbline 881
;
; if( num >4) {
ldi R24,4
lds R2,_num
cp R24,R2
brlo X95
rjmp L346
X95:
X91:
.dbline 881
.dbline 882
; us(20);
ldi R16,20
ldi R17,0
rcall _us
.dbline 883
; startnum = 4;
ldi R24,4
sts _startnum,R24
.dbline 884
; SendGram(CMD_RETDATA);
ldi R16,1
rcall _SendGram
.dbline 885
; }
.dbline 888
;
;
; break;
rjmp L346
L357:
.dbline 890
; case CMD_SETID:
; ID_L = spi_rxbuf[3];
lds R2,_spi_rxbuf+3
sts _ID_L,R2
.dbline 891
; ID_H = spi_rxbuf[4];
lds R2,_spi_rxbuf+4
sts _ID_H,R2
.dbline 892
; EEPROM_write(ID_L_ADDR,ID_L);
lds R18,_ID_L
ldi R16,510
ldi R17,1
rcall _EEPROM_write
.dbline 893
; EEPROM_write(ID_H_ADDR,ID_H);
lds R18,_ID_H
ldi R16,509
ldi R17,1
rcall _EEPROM_write
.dbline 894
; SendGram(CMD_SETID_OK);
ldi R16,6
rcall _SendGram
.dbline 895
; break;
rjmp L346
L360:
.dbline 898
;
; case CMD_READID:
; SendGram(CMD_SETID_OK);
ldi R16,6
rcall _SendGram
.dbline 899
; break;
rjmp L346
L361:
.dbline 901
; case CMD_DOWNPARA:
; num = spi_rxbuf[5];
lds R2,_spi_rxbuf+5
sts _num,R2
.dbline 902
; EEPROM_write(num_ADDR, num);
mov R18,R2
ldi R16,432
ldi R17,1
rcall _EEPROM_write
.dbline 904
;
; for(i=0;i<3;i++) {
clr R20
rjmp L366
L363:
.dbline 904
.dbline 905
; limit[spi_rxbuf[6]][i] = (spi_rxbuf[8+2*i] << 8) + spi_rxbuf[7+2*i];
mov R10,R20
clr R11
lsl R10
rol R11
ldi R24,<_spi_rxbuf+7
ldi R25,>_spi_rxbuf+7
movw R30,R10
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_spi_rxbuf+8
ldi R25,>_spi_rxbuf+8
movw R30,R10
add R30,R24
adc R31,R25
ldd R3,z+0
lds R4,_spi_rxbuf+6
ldi R24,6
mul R24,R4
movw R4,R0
ldi R24,<_limit
ldi R25,>_limit
add R4,R24
adc R5,R25
movw R30,R10
add R30,R4
adc R31,R5
std z+1,R3
std z+0,R2
.dbline 906
; EEPROM_write((LIMIT_START_ARRD+spi_rxbuf[6]*6+i*2),spi_rxbuf[7+2*i]);
mov R10,R20
clr R11
lsl R10
rol R11
ldi R24,<_spi_rxbuf+7
ldi R25,>_spi_rxbuf+7
movw R30,R10
add R30,R24
adc R31,R25
ldd R18,z+0
lds R2,_spi_rxbuf+6
ldi R24,6
mul R24,R2
movw R16,R0
subi R16,64 ; offset = 448
sbci R17,254
add R16,R10
adc R17,R11
rcall _EEPROM_write
.dbline 907
; EEPROM_write((LIMIT_START_ARRD+spi_rxbuf[6]*6+i*2+1), spi_rxbuf[8+2*i] << 8);
mov R10,R20
clr R11
lsl R10
rol R11
ldi R24,<_spi_rxbuf+8
ldi R25,>_spi_rxbuf+8
movw R30,R10
add R30,R24
adc R31,R25
ldd R18,z+0
lsl R18
lsl R18
lsl R18
lsl R18
lsl R18
lsl R18
lsl R18
lsl R18
lds R2,_spi_rxbuf+6
ldi R24,6
mul R24,R2
movw R16,R0
subi R16,64 ; offset = 448
sbci R17,254
add R16,R10
adc R17,R11
subi R16,255 ; offset = 1
sbci R17,255
rcall _EEPROM_write
.dbline 908
; }
L364:
.dbline 904
inc R20
L366:
.dbline 904
cpi R20,3
brsh X96
rjmp L363
X96:
X92:
.dbline 910
;
; SendGram(CMD_RETPARA);
ldi R16,3
rcall _SendGram
.dbline 912
;
; break;
.dbline 913
; default: break;
L346:
.dbline -2
L319:
.dbline 0 ; func end
rjmp pop_xgset300C
.dbsym l lpc 1 c
.dbsym r len 20 c
.dbsym r i 20 c
.dbend
.dbfunc e ReceiveGram _Recei
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -