📄 nrf905_jinju.s
字号:
adc R31,R25
ldd R18,z+0
clr R16
rcall _SPI_Char
.dbline 516
; //uart_TxChar(tx_buf[i]);
; }
L147:
.dbline 513
inc R20
L149:
.dbline 513
cpi R20,16
brlo L146
X37:
.dbline 517
; CSN_H;
sbi 0x18,2
.dbline -2
L144:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym r len 20 c
.dbsym r i 20 c
.dbend
.dbfunc e SPI_R_TX_ADDRESS _SPI_R_TX_ADDRESS fc
; len -> R20
; i -> R10
.even
_SPI_R_TX_ADDRESS::
st -y,R10
st -y,R20
.dbline -1
.dbline 522
; }
;
; /////////////////////////////////////////////////////////////
; BYTE SPI_R_TX_ADDRESS()
; {
.dbline 525
; BYTE i,len;
;
; spi_rxpt = 0;
clr R2
sts _spi_rxpt,R2
.dbline 526
; spi_handlept = 0;
sts _spi_handlept,R2
.dbline 527
; nrF905_Standby_Mode();
rcall _nrF905_Standby_Mode
.dbline 528
; CSN_L;
cbi 0x18,2
.dbline 529
; SPI_Char(0,R_TX_ADDRESS);
ldi R18,35
clr R16
rcall _SPI_Char
.dbline 530
; len = (Register[2] >> 4) & 0x07;
lds R20,_Register+2
swap R20
andi R20,#0x0F
andi R20,7
.dbline 531
; for ( i=0; i<len; i++ ) SPI_Char(1,0xff);
clr R10
rjmp L155
L152:
.dbline 531
ldi R18,255
ldi R16,1
rcall _SPI_Char
L153:
.dbline 531
inc R10
L155:
.dbline 531
cp R10,R20
brlo L152
X38:
.dbline 533
;
; CSN_H;
sbi 0x18,2
.dbline 534
; return spi_handle(R_TX_ADDRESS);
ldi R16,35
rcall _spi_handle
.dbline -2
L150:
.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_W_TX_ADDRESS _SPI_W_TX_ADDRESS fV
; len -> R20
; i -> R10
.even
_SPI_W_TX_ADDRESS::
st -y,R10
st -y,R20
.dbline -1
.dbline 539
; }
;
; /////////////////////////////////////////////////////////////
; void SPI_W_TX_ADDRESS()
; {
.dbline 542
; BYTE i,len;
;
; CSN_L;
cbi 0x18,2
.dbline 543
; SPI_Char(0,W_TX_ADDRESS);
ldi R18,34
clr R16
rcall _SPI_Char
.dbline 544
; len = (Register[2] >> 4) & 0x07;
lds R20,_Register+2
swap R20
andi R20,#0x0F
andi R20,7
.dbline 545
; for ( i=0; i<len; i++ ) {
clr R10
rjmp L161
L158:
.dbline 545
.dbline 546
; SPI_Char(0,tx_addr[i]);
ldi R24,<_tx_addr
ldi R25,>_tx_addr
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R18,z+0
clr R16
rcall _SPI_Char
.dbline 547
; }
L159:
.dbline 545
inc R10
L161:
.dbline 545
cp R10,R20
brlo L158
X39:
.dbline 548
; CSN_H;
sbi 0x18,2
.dbline -2
L156:
.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 553
; }
;
; /////////////////////////////////////////////////////////////
; BYTE SPI_R_RX_PAYLOAD()
; {
.dbline 556
; BYTE i,len;
;
; spi_rxpt = 0;
clr R2
sts _spi_rxpt,R2
.dbline 557
; spi_handlept = 0;
sts _spi_handlept,R2
.dbline 558
; TRX_CE_L;
cbi 0x12,6
.dbline 560
; // nrF905_Standby_Mode();
; CSN_L;
cbi 0x18,2
.dbline 561
; SPI_Char(0,R_RX_PAYLOAD);
ldi R18,36
clr R16
rcall _SPI_Char
.dbline 562
; len = Register[3] & 0x3f;
lds R20,_Register+3
andi R20,63
rjmp L165
L164:
.dbline 563
; while(DR) {
.dbline 564
; SPI_Char(1,0xff);
ldi R18,255
ldi R16,1
rcall _SPI_Char
.dbline 565
; }
L165:
.dbline 563
sbic 0x10,3
rjmp L164
X40:
.dbline 567
;
; CSN_H;
sbi 0x18,2
.dbline 568
; return spi_handle(R_RX_PAYLOAD);
ldi R16,36
rcall _spi_handle
.dbline -2
L162:
.dbline 0 ; func end
ld R20,y+
ret
.dbsym l i 1 c
.dbsym r len 20 c
.dbend
.dbfunc e SendGram _SendGram fV
.even
_SendGram::
.dbline -1
.dbline 599
; }
;
; /*////////////////////////////////////////////////////////////
; void MakeFrame(BYTE cmd)
; {
; BYTE i;
; switch(cmd) {
; case CMD_ASKDATA:
; // CallData();
; break;
; case CMD_RETDATA:
; // ReportData();
; break;
; case CMD_DOWNPARA:
; // SetPara();
; break;
; case CMD_RETPARA:
; // RetPara();
; break;
; }
;
; for ( i=0; i<tx_len; i++ ) uart_TxChar(tx_buf[i]);
;
; for ( i=tx_len; i<16; i++ ) tx_buf[i] = 0;
; }
;
; /////////////////////////////////////////////////////////////
; */
; //void SendGram(BYTE cmd)
; void SendGram()
; {
.dbline 601
; // MakeFrame(cmd);
; nrF905_RX_Mode();
rcall _nrF905_RX_Mode
L168:
.dbline 604
;
; // uart_TxChar('1');
; while(CD) {;}
.dbline 604
.dbline 604
L169:
.dbline 604
sbic 0x10,2
rjmp L168
X41:
L171:
.dbline 606
; // uart_TxChar('2');
; while(AM) {;}
.dbline 606
.dbline 606
L172:
.dbline 606
sbic 0x10,4
rjmp L171
X42:
.dbline 609
; // uart_TxChar('3');
;
; nrF905_TX_Mode();
rcall _nrF905_TX_Mode
.dbline 610
; SPI_W_TX_ADDRESS();
rcall _SPI_W_TX_ADDRESS
.dbline 611
; SPI_W_TX_PAYLOAD();
rcall _SPI_W_TX_PAYLOAD
.dbline 613
; // uart_TxChar('4');
; TRX_CE_H;
sbi 0x12,6
.dbline 614
; us(20);
ldi R16,20
ldi R17,0
rcall _us
.dbline 616
; // uart_TxChar('5');
; TRX_CE_L;
cbi 0x12,6
L174:
.dbline 617
; while (!DR);
L175:
.dbline 617
sbis 0x10,3
rjmp L174
X43:
.dbline 619
;
; nrF905_RX_Mode();
rcall _nrF905_RX_Mode
.dbline -2
L167:
.dbline 0 ; func end
ret
.dbend
.dbfunc e handle _handle fV
; i -> <dead>
; startno -> R12
; num -> R10
; len -> R20
.even
_handle::
rcall push_xgset303C
.dbline -1
.dbline 624
; }
;
; /////////////////////////////////////////////////////////////
; void handle(void)
; {
.dbline 628
; BYTE len,i,num,startno;
; // WORD id;
; // BYTE lpc;
; if ( spi_rxbuf[0] != 0xeb ) return;
lds R24,_spi_rxbuf
cpi R24,235
breq L178
X44:
.dbline 628
rjmp L177
L178:
.dbline 629
; if ( spi_rxbuf[1] != 0x90 ) return;
lds R24,_spi_rxbuf+1
cpi R24,144
breq L180
X45:
.dbline 629
rjmp L177
L180:
.dbline 631
;
; switch(spi_rxbuf[2]) {
lds R20,_spi_rxbuf+2
clr R21
cpi R20,1
ldi R30,0
cpc R21,R30
breq L187
X46:
cpi R20,3
ldi R30,0
cpc R21,R30
breq L194
X47:
cpi R20,6
ldi R30,0
cpc R21,R30
breq L195
X48:
cpi R20,7
ldi R30,0
cpc R21,R30
breq L196
X49:
rjmp L177
L187:
.dbline 633
; case CMD_RETDATA:
; num = spi_rxbuf[5];
lds R10,_spi_rxbuf+5
.dbline 634
; startno = spi_rxbuf[6];
lds R12,_spi_rxbuf+6
.dbline 635
; if(num > 3){
ldi R24,3
cp R24,R10
brsh L190
X50:
.dbline 635
.dbline 636
; if(startno == 0) len = 16;
tst R12
brne L192
X51:
.dbline 636
ldi R20,16
rjmp L184
L192:
.dbline 637
; else len = 8+(num-startno)*2;
mov R20,R10
sub R20,R12
lsl R20
subi R20,248 ; addi 8
.dbline 638
; }
rjmp L184
L190:
.dbline 639
; else len = 8+num*2;
mov R20,R10
lsl R20
subi R20,248 ; addi 8
.dbline 640
; break;
rjmp L184
L194:
.dbline 642
; case CMD_RETPARA:
; len=14;
ldi R20,14
.dbline 643
; break;
rjmp L184
L195:
.dbline 646
;
; case CMD_SETID_OK:
; len = 6;
ldi R20,6
.dbline 647
; break;
rjmp L184
L196:
.dbline 649
; case CMD_READID:
; len = 6;
ldi R20,6
.dbline 650
; break;
.dbline 652
; default:
; return;
L184:
.dbline 667
; }
;
; /* if ( GetLPC(spi_rxbuf,len) ) return;
;
; switch(spi_rxbuf[2]) {
; case CMD_RETDATA:
; // put_bytes(spi_rxbuf,len);
; break;
; case CMD_RETPARA:
; // put_bytes(spi_rxbuf,len);
; break;
; }
; */
; //uart_TxChar(len);
; put_bytes(spi_rxbuf,len);
mov R18,R20
clr R19
ldi R16,<_spi_rxbuf
ldi R17,>_spi_rxbuf
rcall _put_bytes
.dbline -2
L177:
.dbline 0 ; func end
rjmp pop_xgset303C
.dbsym l i 1 c
.dbsym r startno 12 c
.dbsym r num 10 c
.dbsym r len 20 c
.dbend
.dbfunc e ReceiveGram _ReceiveGram fV
.even
_ReceiveGram::
.dbline -1
.dbline 672
; }
;
; /////////////////////////////////////////////////////////////
; void ReceiveGram()
; {
.dbline 673
; if ( !DR ) return;
sbic 0x10,3
rjmp L198
X52:
.dbline 673
rjmp L197
L198:
.dbline 676
;
; // SPI_R_CONFIG();
; SPI_R_RX_PAYLOAD();
rcall _SPI_R_RX_PAYLOAD
.dbline -2
L197:
.dbline 0 ; func end
ret
.dbend
.dbfunc e timer1_init _timer1_init fV
; timer -> R16,R17
.even
_timer1_init::
.dbline -1
.dbline 681
; }
;
; /////////////////////////////////////////////////////////////
; void timer1_init(void)
; {
.dbline 684
; WORD timer;
;
; timer=fosc/1024;
ldi R16,7200
ldi R17,28
.dbline 685
; TCNTData=0xffff-timer;
ldi R24,65535
ldi R25,255
movw R2,R24
sub R2,R16
sbc R3,R17
sts _TCNTData+1,R3
sts _TCNTData,R2
.dbline 686
; TIMSK |= 0x04;
in R24,0x39
ori R24,4
out 0x39,R24
.dbline 687
; NOP();
nop
.dbline 688
; TCCR1B = 0x00;
clr R2
out 0x2e,R2
.dbline 689
; TCNT1H = (TCNTData>>8)&0xff;
lds R24,_TCNTData
lds R25,_TCNTData+1
mov R24,R25
clr R25
andi R25,0
out 0x2d,R24
.dbline 690
; TCNT1L = TCNTData&0xff;
lds R24,_TCNTData
lds R25,_TCNTData+1
andi R25,0
out 0x2c,R24
.dbline 691
; OCR1AH = 0x00;
out 0x2b,R2
.dbline 692
; NOP();
nop
.dbline 693
; OCR1AL = 0x00;
out 0x2a,R2
.dbline 694
; NOP();
nop
.dbline 695
; OCR1BH = 0x00;
out 0x29,R2
.dbline 696
; NOP();
nop
.dbline 697
; OCR1BL = 0x00;
out 0x28,R2
.dbline 698
; NOP();
nop
.dbline 699
; TCCR1A = 0x00;
out 0x2f,R2
.dbline 700
; NOP();
nop
.dbline 701
; TCCR1B = 0x05;
ldi R24,5
out 0x2e,R24
.dbline -2
L200:
.dbline 0 ; func end
ret
.dbsym r timer 16 i
.dbend
.area vector(rom, abs)
.org 16
rjmp _timer1_ovf_isr
.area text(rom, con, rel)
.dbfile E:\变电站测温\测温主控\nrf905_JinJu.c
.dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
_timer1_ovf_isr::
st -y,R2
st -y,R3
st -y,R16
st -y,R17
st -y,R24
st -y,R25
st -y,R26
st -y,R30
in R2,0x3f
st -y,R2
.dbline -1
.dbline 707
; }
;
; /////////////////////////////////////////////////////////////////////////////////
; #pragma interrupt_handler timer1_ovf_isr:iv_TIMER1_OVF
; void timer1_ovf_isr(void)
; {
.dbline 708
; TCNT1H = (TCNTData>>8)&0xff;;
lds R24,_TCNTData
lds R25,_TCNTData+1
mov R24,R25
clr R25
andi R25,0
out 0x2d,R24
.dbline 708
.dbline 709
; NOP();
nop
.dbline 710
; TCNT1L = TCNTData&0xff;
lds R24,_TCNTData
lds R25,_TCNTData+1
andi R25,0
out 0x2c,R24
.dbline 712
;
; Count++;
lds R24,_Count
lds R25,_Count+1
adiw R24,1
sts _Count+1,R25
sts _Count,R24
.dbline 713
; if ( Count < 120 ) WDR();
cpi R24,120
ldi R30,0
cpc R25,R30
brsh L202
X53:
.dbline 713
wdr
L202:
.dbline 715
;
; if ( FlashFlag ) {
lds R2,_FlashFlag
tst R2
breq L204
X54:
.dbline 715
.dbline 716
; if ( FlashFlag % 2 ) LED_L;
ldi R17,2
mov R16,R2
rcall mod8u
tst R16
breq L206
X55:
.dbline 716
cbi 0x12,7
rjmp L207
L206:
.dbline 717
; else LED_H;
sbi 0x12,7
L207:
.dbline 719
;
; FlashFlag--;
lds R24,_FlashFlag
subi R24,1
sts _FlashFlag,R24
.dbline 720
; }
rjmp L205
L204:
.dbline 721
; else LED_H;
sbi 0x12,7
L205:
.dbline 723
;
; SecondCount++;
lds R24,_SecondCount
lds R25,_SecondCount+1
adiw R24,1
sts _SecondCount+1,R25
sts _SecondCount,R24
.dbline 724
; if ( SecondCount % 2 ) SendDataFlag = 1;
sbrs R24,0
rjmp L208
X56:
.dbline 724
ldi R24,1
sts _SendDataFlag,R24
L208:
.dbline 726
;
; if ( SecondCount >= SENDTIMER ) {
lds R24,_SecondCount
lds R25,_SecondCount+1
cpi R24,3
ldi R30,0
cpc R25,R30
brlo L210
X57:
.dbline 726
.dbline 727
; SecondCount = 0;
clr R2
clr R3
sts _SecondCount+1,R3
sts _SecondCount,R2
.dbline 729
; // spi_txflag = 1;
; }
L210:
.dbline 732
;
;
; NoDataCount++;
lds R24,_NoDataCount
lds R25,_NoDataCount+1
adiw R24,1
sts _NoDataCount+1,R25
sts _NoDataCount,R24
.dbline -2
L201:
.dbline 0 ; func end
ld R2,y+
out 0x3f,R2
ld R30,y+
ld R26,y+
ld R25,y+
ld R24,y+
ld R17,y+
ld R16,y+
ld R3,y+
ld R2,y+
reti
.dbend
.dbfunc e put_str _put_str fV
; len -> R12,R13
; i -> R20,R21
; str -> R10,R11
.even
_put_str::
rcall push_xgset303C
movw R10,R16
.dbline -1
.dbline 736
; }
; /////////////////////////////////////////////////////////////////////////////////
; void put_str(char *str)
; {
.dbline 738
; int i,len;
; len = strlen(str);
movw R16,R10
rcall _strlen
movw R12,R16
.dbline 739
; for ( i=0; i<len; i++ )
clr R20
clr R21
rjmp L216
L213:
.dbline 740
; uart_TxChar(str[i]);
movw R30,R20
add R30,R10
adc R31,R11
ldd R16,z+0
rcall _uart_TxChar
L214:
.dbline 739
subi R20,255 ; offset = 1
sbci R21,255
L216:
.dbline 739
cp R20,R12
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -