📄 nrf905_temperature.s
字号:
subi R24,249 ; addi 7
cp R20,R24
brlo L126
X30:
.dbline 451
; tx_buf[7+num*2] = GetLPC(tx_buf,7+num*2);
lds R2,_num
clr R3
lsl R2
rol R3
movw R18,R2
subi R18,249 ; offset = 7
sbci R19,255
ldi R16,<_tx_buf
ldi R17,>_tx_buf
push R2
push R3
rcall _GetLPC
pop R3
pop R2
ldi R24,<_tx_buf+7
ldi R25,>_tx_buf+7
movw R30,R2
add R30,R24
adc R31,R25
std z+0,R16
.dbline 452
; tx_len = 8+num*2;
lds R24,_num
lsl R24
subi R24,248 ; addi 8
sts _tx_len,R24
.dbline 454
;
; }
rjmp L125
L124:
.dbline 455
; else{
.dbline 456
; if(startnum == 0){
lds R2,_startnum
tst R2
brne L132
X31:
.dbline 456
.dbline 457
; for(i=7;i<15;i++){
ldi R20,7
rjmp L137
L134:
.dbline 457
.dbline 458
; tx_buf[i] = data[startnum*2+i-7];
mov R2,R20
clr R3
lds R30,_startnum
clr R31
lsl R30
rol R31
add R30,R2
adc R31,R3
ldi R24,<_data-7
ldi R25,>_data-7
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_tx_buf
ldi R25,>_tx_buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 459
; }
L135:
.dbline 457
inc R20
L137:
.dbline 457
cpi R20,15
brlo L134
X32:
.dbline 460
; tx_buf[15] = GetLPC(tx_buf,15);
ldi R18,15
ldi R19,0
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
mov R10,R16
sts _tx_buf+15,R10
.dbline 461
; tx_len = 16;
ldi R24,16
sts _tx_len,R24
.dbline 462
; }
L132:
.dbline 463
; if(startnum == 4){
lds R24,_startnum
cpi R24,4
breq X36
rjmp L140
X36:
X33:
.dbline 463
.dbline 464
; for(i=7;i<((num-4)*2+7);i++){
ldi R20,7
rjmp L145
L142:
.dbline 464
.dbline 465
; tx_buf[i] = data[(startnum+2)*2+i-7];
mov R2,R20
clr R3
lds R30,_startnum
clr R31
adiw R30,2
lsl R30
rol R31
add R30,R2
adc R31,R3
ldi R24,<_data-7
ldi R25,>_data-7
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_tx_buf
ldi R25,>_tx_buf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 466
; }
L143:
.dbline 464
inc R20
L145:
.dbline 464
lds R24,_num
subi R24,4
lsl R24
subi R24,249 ; addi 7
cp R20,R24
brlo L142
X34:
.dbline 467
; tx_buf[7+(num-4)*2] = GetLPC(tx_buf,7+(num-4)*2);
lds R20,_num
clr R21
subi R20,4
sbci R21,0
lsl R20
rol R21
movw R18,R20
subi R18,249 ; offset = 7
sbci R19,255
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
mov R10,R16
ldi R24,<_tx_buf+7
ldi R25,>_tx_buf+7
movw R30,R20
add R30,R24
adc R31,R25
std z+0,R10
.dbline 468
; tx_len = 8+(num-4)*2;
lds R24,_num
subi R24,4
lsl R24
subi R24,248 ; addi 8
sts _tx_len,R24
.dbline 469
; }
L140:
.dbline 470
; }
L125:
.dbline -2
L117:
.dbline 0 ; func end
rjmp pop_xgset300C
.dbsym r i 20 c
.dbend
.dbfunc e DownPara _DownPara fV
; no -> R10
.even
_DownPara::
st -y,R10
mov R10,R16
.dbline -1
.dbline 476
;
; }
;
; /////////////////////////////////////////////////////////////////////////////////
; void DownPara(BYTE no)
; {
.dbline 477
; tx_buf[0] = 0xeb;
ldi R24,235
sts _tx_buf,R24
.dbline 478
; tx_buf[1] = 0x90;
ldi R24,144
sts _tx_buf+1,R24
.dbline 479
; tx_buf[2] = CMD_DOWNPARA;
ldi R24,2
sts _tx_buf+2,R24
.dbline 480
; tx_buf[3] = ID_L;
lds R2,_ID_L
sts _tx_buf+3,R2
.dbline 481
; tx_buf[4] = ID_H;
lds R2,_ID_H
sts _tx_buf+4,R2
.dbline 482
; tx_buf[5] = num;
lds R2,_num
sts _tx_buf+5,R2
.dbline 483
; tx_buf[6] = no;
sts _tx_buf+6,R10
.dbline 484
; tx_buf[7] = (limit[no][0] & 0xff);
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit
ldi R25,>_limit
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R25,0
sts _tx_buf+7,R24
.dbline 485
; tx_buf[8] = (limit[no][0] & 0xff00) >> 8;
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit
ldi R25,>_limit
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R24,0
movw R2,R24
mov R2,R3
clr R3
sts _tx_buf+8,R2
.dbline 486
; tx_buf[9] = (limit[no][1] & 0xff);
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+2
ldi R25,>_limit+2
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R25,0
sts _tx_buf+9,R24
.dbline 487
; tx_buf[10] = (limit[no][1] & 0xff00) >> 8;
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+2
ldi R25,>_limit+2
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R24,0
movw R2,R24
mov R2,R3
clr R3
sts _tx_buf+10,R2
.dbline 488
; tx_buf[11] = (limit[no][2] & 0xff);
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+4
ldi R25,>_limit+4
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R25,0
sts _tx_buf+11,R24
.dbline 489
; tx_buf[12] = (limit[no][2] & 0xff00) >> 8;
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+4
ldi R25,>_limit+4
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R24,0
movw R2,R24
mov R2,R3
clr R3
sts _tx_buf+12,R2
.dbline 490
; tx_buf[13] = GetLPC(tx_buf,10);
ldi R18,10
ldi R19,0
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
sts _tx_buf+13,R16
.dbline 491
; tx_len = 14;
ldi R24,14
sts _tx_len,R24
.dbline -2
L148:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r no 10 c
.dbend
.dbfunc e RetPara _RetPara fV
; i -> R10
.even
_RetPara::
st -y,R10
mov R10,R16
.dbline -1
.dbline 496
; }
;
; /////////////////////////////////////////////////////////////////////////////////
; void RetPara(BYTE i)
; {
.dbline 497
; tx_buf[0] = 0xeb;
ldi R24,235
sts _tx_buf,R24
.dbline 498
; tx_buf[1] = 0x90;
ldi R24,144
sts _tx_buf+1,R24
.dbline 499
; tx_buf[2] = CMD_RETPARA;
ldi R24,3
sts _tx_buf+2,R24
.dbline 500
; tx_buf[3] = ID_L;
lds R2,_ID_L
sts _tx_buf+3,R2
.dbline 501
; tx_buf[4] = ID_H;
lds R2,_ID_H
sts _tx_buf+4,R2
.dbline 502
; tx_buf[5] = num;
lds R2,_num
sts _tx_buf+5,R2
.dbline 503
; tx_buf[6] = i;
sts _tx_buf+6,R10
.dbline 504
; tx_buf[7] = (limit[i][0] & 0xff);
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit
ldi R25,>_limit
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R25,0
sts _tx_buf+7,R24
.dbline 505
; tx_buf[8] = (limit[i][0] & 0xff00) >> 8;
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit
ldi R25,>_limit
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R24,0
movw R2,R24
mov R2,R3
clr R3
sts _tx_buf+8,R2
.dbline 506
; tx_buf[9] = (limit[i][1] & 0xff);
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+2
ldi R25,>_limit+2
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R25,0
sts _tx_buf+9,R24
.dbline 507
; tx_buf[10] = (limit[i][1] & 0xff00) >> 8;
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+2
ldi R25,>_limit+2
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R24,0
movw R2,R24
mov R2,R3
clr R3
sts _tx_buf+10,R2
.dbline 508
; tx_buf[11] = (limit[i][2] & 0xff);
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+4
ldi R25,>_limit+4
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R25,0
sts _tx_buf+11,R24
.dbline 509
; tx_buf[12] = (limit[i][2] & 0xff00) >> 8;
ldi R24,6
mul R24,R10
movw R30,R0
ldi R24,<_limit+4
ldi R25,>_limit+4
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
andi R24,0
movw R2,R24
mov R2,R3
clr R3
sts _tx_buf+12,R2
.dbline 510
; tx_buf[13] = GetLPC(tx_buf,13);
ldi R18,13
ldi R19,0
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
sts _tx_buf+13,R16
.dbline 511
; tx_len = 14;
ldi R24,14
sts _tx_len,R24
.dbline -2
L166:
.dbline 0 ; func end
ld R10,y+
ret
.dbsym r i 10 c
.dbend
.dbfunc e SetID _SetID fV
.even
_SetID::
.dbline -1
.dbline 516
; }
;
; /////////////////////////////////////////////////////////////////////////////////
; void SetID(void)
; {
.dbline 517
; tx_buf[0] = 0xeb;
ldi R24,235
sts _tx_buf,R24
.dbline 518
; tx_buf[1] = 0x90;
ldi R24,144
sts _tx_buf+1,R24
.dbline 519
; tx_buf[2] = CMD_SETID;
ldi R24,5
sts _tx_buf+2,R24
.dbline 520
; tx_buf[3] = ID_L;
lds R2,_ID_L
sts _tx_buf+3,R2
.dbline 521
; tx_buf[4] = ID_H;
lds R2,_ID_H
sts _tx_buf+4,R2
.dbline 522
; tx_buf[5] = GetLPC(tx_buf,5);
ldi R18,5
ldi R19,0
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
sts _tx_buf+5,R16
.dbline 523
; tx_len = 6;
ldi R24,6
sts _tx_len,R24
.dbline -2
L184:
.dbline 0 ; func end
ret
.dbend
.dbfunc e SetIDOK _SetIDOK fV
.even
_SetIDOK::
.dbline -1
.dbline 527
; }
;
; void SetIDOK(void)
; {
.dbline 528
; tx_buf[0] = 0xeb;
ldi R24,235
sts _tx_buf,R24
.dbline 529
; tx_buf[1] = 0x90;
ldi R24,144
sts _tx_buf+1,R24
.dbline 530
; tx_buf[2] = CMD_SETID_OK;
ldi R24,6
sts _tx_buf+2,R24
.dbline 531
; tx_buf[3] = ID_L;
lds R2,_ID_L
sts _tx_buf+3,R2
.dbline 532
; tx_buf[4] = ID_H;
lds R2,_ID_H
sts _tx_buf+4,R2
.dbline 533
; tx_buf[5] = GetLPC(tx_buf,5);
ldi R18,5
ldi R19,0
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
sts _tx_buf+5,R16
.dbline 534
; tx_len = 6;
ldi R24,6
sts _tx_len,R24
.dbline -2
L190:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ReadID _ReadID fV
.even
_ReadID::
.dbline -1
.dbline 538
; }
;
; void ReadID(void)
; {
.dbline 539
; tx_buf[0] = 0xeb;
ldi R24,235
sts _tx_buf,R24
.dbline 540
; tx_buf[1] = 0x90;
ldi R24,144
sts _tx_buf+1,R24
.dbline 541
; tx_buf[2] = CMD_READID;
ldi R24,7
sts _tx_buf+2,R24
.dbline 542
; tx_buf[3] = GetLPC(tx_buf,3);
ldi R18,3
ldi R19,0
ldi R16,<_tx_buf
ldi R17,>_tx_buf
rcall _GetLPC
sts _tx_buf+3,R16
.dbline 543
; tx_len = 4;
ldi R24,4
sts _tx_len,R24
.dbline -2
L196:
.dbline 0 ; func end
ret
.dbend
.dbfunc e SPI_MasterInit _SPI_MasterInit fV
; temp -> R16
.even
_SPI_MasterInit::
.dbline -1
.dbline 547
; }
; /////////////////////////////////////////////////////////////
; void SPI_MasterInit(void)
; {
.dbline 551
; BYTE temp;
;
; // PD7(LED)PD6(TRX_CE),PD5(TX_EN) PD2(CD),PD3(DR),PD4(AM)
; PORTD = 0x1C;
ldi R24,28
out 0x12,R24
.dbline 552
; DDRD = 0x80 | 0x40 |0x20;
ldi R24,224
out 0x11,R24
.dbline 553
; TX_EN_L;
cbi 0x12,5
.dbline 554
; TRX_CE_L;
cbi 0x12,6
.dbline 555
; LED_L;
cbi 0x12,7
.dbline 558
; // Set MOSI, SCK, SS, POWER_UP output,all others input
; // PB3 PB5 PB2 PB0
; CLI();
cli
.dbline 559
; DDRB = 0x08 |0x20| 0x04|0x01;
ldi R24,45
out 0x17,R24
.dbline 560
; MISO_H;
sbi 0x18,4
.dbline 561
; CSN_H;
sbi 0x18,2
.dbline 565
; // Enable SPI,Master,Set clock rate fck/16,interrupt enable
; // SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE)|(1<<CPHA);
; // SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPIE);
; SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0);
ldi R24,81
out 0xd,R24
.dbline 567
; // SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<CPHA);
; SPSR = 0x00;
clr R2
out 0xe,R2
.dbline 568
; temp = SPSR;
in R16,0xe
.dbline 569
; temp = SPCR;
in R16,0xd
.dbline 570
; SEI();
sei
.dbline -2
L200:
.dbline 0 ; func end
ret
.dbsym r temp 16 c
.dbend
.dbfunc e SPI_Char _SPI_Char fV
; c -> R18
; rxflag -> R16
.even
_SPI_Char::
.dbline -1
.dbline 575
; }
;
; /////////////////////////////////////////////////////////////
; void SPI_Char(BYTE rxflag,char c)
; {
.dbline 576
; SPDR = c;
out 0xf,R18
L202:
.dbline 577
; while(!(SPSR & (1<<SPIF)));
L203:
.dbline 577
sbis 0xe,7
rjmp L202
X37:
.dbline 579
;
; if ( rxflag ) {
tst R16
breq L205
X38:
.dbline 579
.dbline 580
; spi_rxbuf[spi_rxpt] = SPDR;
ldi R24,<_spi_rxbuf
ldi R25,>_spi_rxbuf
lds R30,_spi_rxpt
clr R31
add R30,R24
adc R31,R25
in R2,0xf
std z+0,R2
.dbline 581
; spi_rxpt = (spi_rxpt+1)&SPI_BUF_LEN1;
lds R24,_spi_rxpt
subi R24,255 ; addi 1
andi R24,15
sts _spi_rxpt,R24
.dbline 582
; }
L205:
.dbline -2
L201:
.dbline 0 ; func end
ret
.dbsym r c 18 c
.dbsym r rxflag 16 c
.dbend
.dbfunc e nrF905_PowerOff_Mode _nrF905_PowerOff_Mode fV
.even
_nrF905_PowerOff_Mode::
.dbline -1
.dbline 587
; }
;
; /////////////////////////////////////////////////////////////
; void nrF905_PowerOff_Mode()
; {
.dbline 588
; PWR_UP_L;
cbi 0x18,0
.dbline -2
L207:
.dbline 0 ; func end
ret
.dbend
.dbfunc e nrF905_Standby_Mode _nrF905_Standby_Mode fV
.even
_nrF905_Standby_Mode::
.dbline -1
.dbline 593
; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -