📄 test2.s
字号:
adc R31,R25
ldi R24,45
std z+0,R24
.dbline 506
; SendSbuf[jk++]='0';
mov R2,R20
clr R3
subi R20,255 ; addi 1
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldi R24,48
std z+0,R24
.dbline 507
; SendSbuf[jk++]='0';
mov R2,R20
clr R3
subi R20,255 ; addi 1
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldi R24,48
std z+0,R24
.dbline 508
; SendSbuf[jk++]='0';
mov R2,R20
clr R3
subi R20,255 ; addi 1
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldi R24,48
std z+0,R24
.dbline 509
; SendSbuf[jk++]='-';
mov R2,R20
clr R3
subi R20,255 ; addi 1
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldi R24,45
std z+0,R24
.dbline 510
; SendSbuf[jk++]='0';
mov R2,R20
clr R3
subi R20,255 ; addi 1
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldi R24,48
std z+0,R24
.dbline 511
; SendSbuf[jk++]='N';
mov R2,R20
clr R3
subi R20,255 ; addi 1
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldi R24,78
std z+0,R24
.dbline 513
;
; NowSend=2000;///???????????????????????????
ldi R24,2000
ldi R25,7
sts _NowSend+1,R25
sts _NowSend,R24
.dbline 514
; NowSend2=NowSend;
mov R2,R24
mov R3,R25
sts _NowSend2+1,R3
sts _NowSend2,R2
.dbline 516
;
; PORTD&=0XEF; //PD4=0;CS=0';
in R24,0x12
andi R24,239
out 0x12,R24
.dbline 518
;
; }
L115:
.dbline 520
;
; SEI();
sei
.dbline -2
.dbline 521
; }
L113:
adiw R28,2
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r CRC 22 c
.dbsym r temp 10 c
.dbsym r k 12 c
.dbsym r jk 20 c
.dbend
.dbfunc e WRITEEEPROM _WRITEEEPROM fV
; IDX -> R22
; CRC -> R20
; temp -> R22
; jk -> R10
; k -> R12
.even
_WRITEEEPROM::
rcall push_gset4
sbiw R28,2
.dbline -1
.dbline 523
; void WRITEEEPROM()
; {
.dbline 525
; unsigned char jk,CRC,IDX,temp,k;
; CLI();
cli
.dbline 526
; EEPROMWriteBytes(0, ReceiveSbuf, 18);
ldi R24,18
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_ReceiveSbuf
ldi R19,>_ReceiveSbuf
clr R16
clr R17
rcall _EEPROMWriteBytes
.dbline 527
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 528
; EEPROMReadBytes(0, SendSbuf, 18);
ldi R24,18
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_SendSbuf
ldi R19,>_SendSbuf
clr R16
clr R17
rcall _EEPROMReadBytes
.dbline 529
; CRC=0;
clr R20
.dbline 531
;
; if(SendSbuf[0]=='S')
lds R24,_SendSbuf
cpi R24,83
breq X6
rjmp L140
X6:
.dbline 532
; {
.dbline 533
; if(!(SendSbuf[13]-0x31)) //频率选择
lds R24,_SendSbuf+13
subi R24,49
brne L142
.dbline 534
; {
.dbline 535
; PORTD|=(1<<PD4); //CS=1;
sbi 0x12,4
.dbline 536
; }
rjmp L143
L142:
.dbline 538
; else
; PORTD&=0XEF; //PD4=0;CS=0';
in R24,0x12
andi R24,239
out 0x12,R24
L143:
.dbline 541
; //---确定等待时间----//
;
; NowSend=SendSbuf[4]-0x30;
lds R24,_SendSbuf+4
clr R25
sbiw R24,48
sts _NowSend+1,R25
sts _NowSend,R24
.dbline 542
; NowSend*=10;
mov R18,R24
mov R19,R25
ldi R16,10
ldi R17,0
rcall mpy16s
sts _NowSend+1,R17
sts _NowSend,R16
.dbline 543
; NowSend+=(SendSbuf[5]-0x30);
lds R24,_SendSbuf+5
clr R25
sbiw R24,48
mov R2,R16
mov R3,R17
add R2,R24
adc R3,R25
sts _NowSend+1,R3
sts _NowSend,R2
.dbline 544
; NowSend*=10;
mov R18,R2
mov R19,R3
ldi R16,10
ldi R17,0
rcall mpy16s
sts _NowSend+1,R17
sts _NowSend,R16
.dbline 545
; NowSend+=(SendSbuf[6]-0x30);
lds R24,_SendSbuf+6
clr R25
sbiw R24,48
mov R2,R16
mov R3,R17
add R2,R24
adc R3,R25
sts _NowSend+1,R3
sts _NowSend,R2
.dbline 547
; //NowSend+=10; //延时后志发送
; NowSend*=36;
mov R18,R2
mov R19,R3
ldi R16,36
ldi R17,0
rcall mpy16s
sts _NowSend+1,R17
sts _NowSend,R16
.dbline 548
; NowSend+=1000;
mov R24,R16
mov R25,R17
subi R24,24 ; offset = 1000
sbci R25,252
sts _NowSend+1,R25
sts _NowSend,R24
.dbline 549
; NowSend2=NowSend;
mov R2,R24
mov R3,R25
sts _NowSend2+1,R3
sts _NowSend2,R2
.dbline 555
;
; //-------------
;
;
;
; if(SendSbuf[14]=='G')SendSbuf[15]='G';//最后的
lds R24,_SendSbuf+14
cpi R24,71
brne L148
.dbline 555
ldi R24,71
sts _SendSbuf+15,R24
rjmp L149
L148:
.dbline 556
; else SendSbuf[15]=0; //停止
clr R2
sts _SendSbuf+15,R2
L149:
.dbline 566
;
; //发送:T-001-015<CRC> /\: T-001-015<CRC>G --最后车发送
; // for(jk=0;jk<9;jk++) //把要发送的放在发送上
; // {
; // SendSbuf[jk]=SendSbuf[jk+2];
; // CRC^=SendSbuf[jk];
; // }
; //------------------写 IC 卡= 司机号--------
; // I2C_Write(0,0X33); 12,14,16 IC卡存放处
; if(!(PIND&0X08)) // IC IN
sbic 0x10,3
rjmp L153
.dbline 567
; {
.dbline 568
; IDX=SendSbuf[6];
lds R22,_SendSbuf+6
.dbline 569
; I2C_Write(12,IDX);
mov R18,R22
ldi R16,12
rcall _I2C_Write
.dbline 570
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 571
; IDX=SendSbuf[7];
lds R22,_SendSbuf+7
.dbline 572
; I2C_Write(14,IDX);
mov R18,R22
ldi R16,14
rcall _I2C_Write
.dbline 573
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 574
; IDX=SendSbuf[8];
lds R22,_SendSbuf+8
.dbline 575
; I2C_Write(16,IDX);
mov R18,R22
ldi R16,16
rcall _I2C_Write
.dbline 576
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 577
; }
L153:
.dbline 582
;
; //-----------------------------------------
;
;
; for(jk=2;jk<5;jk++) //把要发送的放在发送上
ldi R24,2
mov R10,R24
rjmp L161
L158:
.dbline 583
.dbline 585
ldi R24,<_SendSbuf+6
ldi R25,>_SendSbuf+6
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R22,z+0
.dbline 586
mov R24,R10
subi R24,1
mov R12,R24
lsl R12
.dbline 587
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R12
clr R31
add R30,R24
adc R31,R25
mov R24,R22
swap R24
andi R24,#0x0F
subi R24,208 ; addi 48
std z+0,R24
.dbline 588
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R12
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
eor R20,R2
.dbline 589
ldi R24,<_SendSbuf+1
ldi R25,>_SendSbuf+1
mov R30,R12
clr R31
add R30,R24
adc R31,R25
mov R24,R22
andi R24,15
subi R24,208 ; addi 48
std z+0,R24
.dbline 590
ldi R24,<_SendSbuf+1
ldi R25,>_SendSbuf+1
mov R30,R12
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
eor R20,R2
.dbline 592
L159:
.dbline 582
inc R10
L161:
.dbline 582
mov R24,R10
cpi R24,5
brsh X7
rjmp L158
X7:
.dbline 594
; {
;
; temp=SendSbuf[jk+6];
; k=2*(jk-1);
; SendSbuf[k]=(temp>>4)+0x30;
; CRC^=SendSbuf[k];
; SendSbuf[k+1]=(temp&0x0f)+0x30;
; CRC^=SendSbuf[k+1];
;
; }
;
; SendSbuf[10]=CRC; //jk=9;
sts _SendSbuf+10,R20
.dbline 595
; SendSbuf[11]=SendSbuf[15];
lds R2,_SendSbuf+15
sts _SendSbuf+11,R2
.dbline 596
; SendSbuf[12]=0;
clr R2
sts _SendSbuf+12,R2
.dbline 598
; //-----
; SendSbuf[0]='T';
ldi R24,84
sts _SendSbuf,R24
.dbline 599
; SendSbuf[1]='-';
ldi R24,45
sts _SendSbuf+1,R24
.dbline 602
;
;
; }//end if(SendSbuf[0]=='S')
L140:
.dbline 605
;
;
; SEI();
sei
.dbline -2
.dbline 606
; }
L139:
adiw R28,2
rcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r IDX 22 c
.dbsym r CRC 20 c
.dbsym r temp 22 c
.dbsym r jk 10 c
.dbsym r k 12 c
.dbend
.dbfunc e PTR2K_SEND _PTR2K_SEND fV
.even
_PTR2K_SEND::
.dbline -1
.dbline 614
;
;
; /************************************************************
; PTR2000 SET FUNC
; *******************************************************
; */
; void PTR2K_SEND()
; {
.dbline 615
; PORTD|=(1<<PD6)|(1<<PD5);
in R24,0x12
ori R24,96
out 0x12,R24
.dbline -2
.dbline 616
; }
L170:
.dbline 0 ; func end
ret
.dbend
.dbfunc e PTR2K_RECEIVE _PTR2K_RECEIVE fV
.even
_PTR2K_RECEIVE::
.dbline -1
.dbline 619
;
; void PTR2K_RECEIVE()
; {
.dbline 620
; PORTD|=(1<<PD6)|(1<<PD5);
in R24,0x12
ori R24,96
out 0x12,R24
.dbline 621
; PORTD&=0XBF;
in R24,0x12
andi R24,191
out 0x12,R24
.dbline -2
.dbline 623
; //CS=0/1 在SET-后就设定好,以后不要动
; }
L171:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sdelay _sdelay fV
; k -> R16
.even
_sdelay::
.dbline -1
.dbline 635
;
; /********************************
; I2C 模拟
;
; *************************************************************/
; //--i2c \
;
; //#define Start() (TWCR=(1<<TWINT)|(1<<TWSTA)|(1<<TWEN))
; //#define Stop() (TWCR=(1<<TWINT)|(1<<TWSTO)|(1<<TWEN))
; //#define Wait() {while(!(TWCR&(1<<TWINT)));}
; void sdelay(unsigned char k)
; {
L173:
.dbline 636
L174:
.dbline 636
; while(k--);
mov R2,R16
clr R3
subi R16,1
tst R2
brne L173
.dbline -2
.dbline 637
; }
L172:
.dbline 0 ; func end
ret
.dbsym r k 16 c
.dbend
.dbfunc e I2C_Reset _I2C_Reset fV
.even
_I2C_Reset::
.dbline -1
.dbline 639
; void I2C_Reset()
; {
.dbline 640
; CSL();
in R24,0x15
andi R24,251
out 0x15,R24
.dbline 641
; RSTL();
in R24,0x15
andi R24,223
out 0x15,R24
.dbline 642
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 643
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 644
; RSTH();
sbi 0x15,5
.dbline 646
;
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 647
; SCLH();
sbi 0x15,4
.dbline 648
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 649
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 650
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 651
; RSTL();
in R24,0x15
andi R24,223
out 0x15,R24
.dbline -2
.dbline 652
; }
L176:
.dbline 0 ; func end
ret
.dbend
.dbfunc e I2C_Start _I2C_Start fV
.even
_I2C_Start::
.dbline -1
.dbline 654
; void I2C_Start() //9
; {
.dbline 655
; DDRC=0Xff;
ldi R24,255
out 0x14,R24
.dbline 656
; SDAH();
sbi 0x15,1
.dbline 658
; // sdelay(10);
; SCLH();
sbi 0x15,4
.dbline 660
; //---------
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 661
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 662
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 664
; //----
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 665
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 667
;
; }
L177:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_Stop _I2C_Stop fV
.even
_I2C_Stop::
.dbline -1
.dbline 670
;
; void I2C_Stop() //8
; {
.dbline 672
; //DDRC=0Xff;
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 673
; SCLH();
sbi 0x15,4
.dbline 674
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 675
; SDAH();
sbi 0x15,1
.dbline 676
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 677
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 678
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 679
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 681
;
; }
L178:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_ACK _I2C_ACK fV
.even
_I2C_ACK::
.dbline -1
.dbline 684
;
; void I2C_ACK() //7
; {
.dbline 685
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 686
; SCLH();
sbi 0x15,4
.dbline 687
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 688
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 689
; SDAH();
sbi 0x15,1
.dbline 690
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 691
; }
L179:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_NACK _I2C_NACK fV
.even
_I2C_NACK::
.dbline -1
.dbline 694
;
; void I2C_NACK() //66
; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -