📄 p_test.s
字号:
ldi R24,78
std z+0,R24
.dbline 499
;
; NowSend=1000;///???????????????????????????
ldi R24,1000
ldi R25,3
sts _NowSend+1,R25
sts _NowSend,R24
.dbline 500
; NowSend2=NowSend;
movw R2,R24
sts _NowSend2+1,R3
sts _NowSend2,R2
.dbline 502
;
; PORTD&=0XEF; //PD4=0;CS=0';
in R24,0x12
andi R24,239
out 0x12,R24
.dbline 504
;
; }
L93:
.dbline 506
;
; SEI();
sei
.dbline -2
.dbline 507
; }
L91:
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 509
; void WRITEEEPROM()
; {
.dbline 511
; unsigned char jk,CRC,IDX,temp,k;
; CLI();
cli
.dbline 512
; 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 513
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 514
; 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 515
; CRC=0;
clr R20
.dbline 517
;
; if(SendSbuf[0]=='S')
lds R24,_SendSbuf
cpi R24,83
breq X4
rjmp L118
X4:
.dbline 518
; {
.dbline 519
; if(!(SendSbuf[13]-0x31)) //频率选择
lds R24,_SendSbuf+13
subi R24,49
brne L120
.dbline 520
; {
.dbline 521
; PORTD|=(1<<PD4); //CS=1;
sbi 0x12,4
.dbline 522
; }
rjmp L121
L120:
.dbline 524
; else
; PORTD&=0XEF; //PD4=0;CS=0';
in R24,0x12
andi R24,239
out 0x12,R24
L121:
.dbline 527
; //---确定等待时间----//
;
; NowSend=SendSbuf[4]-0x30;
lds R24,_SendSbuf+4
clr R25
sbiw R24,48
sts _NowSend+1,R25
sts _NowSend,R24
.dbline 528
; NowSend*=10;
movw R18,R24
ldi R16,10
ldi R17,0
rcall empy16s
sts _NowSend+1,R17
sts _NowSend,R16
.dbline 529
; NowSend+=(SendSbuf[5]-0x30);
lds R24,_SendSbuf+5
clr R25
sbiw R24,48
movw R2,R16
add R2,R24
adc R3,R25
sts _NowSend+1,R3
sts _NowSend,R2
.dbline 530
; NowSend*=10;
movw R18,R2
ldi R16,10
ldi R17,0
rcall empy16s
sts _NowSend+1,R17
sts _NowSend,R16
.dbline 531
; NowSend+=(SendSbuf[6]-0x30);
lds R24,_SendSbuf+6
clr R25
sbiw R24,48
movw R2,R16
add R2,R24
adc R3,R25
sts _NowSend+1,R3
sts _NowSend,R2
.dbline 533
; //NowSend+=10; //延时后志发送
; NowSend*=36;
movw R18,R2
ldi R16,36
ldi R17,0
rcall empy16s
sts _NowSend+1,R17
sts _NowSend,R16
.dbline 534
; NowSend+=1000;
movw R24,R16
subi R24,24 ; offset = 1000
sbci R25,252
sts _NowSend+1,R25
sts _NowSend,R24
.dbline 535
; NowSend2=NowSend;
movw R2,R24
sts _NowSend2+1,R3
sts _NowSend2,R2
.dbline 541
;
; //-------------
;
;
;
; if(SendSbuf[14]=='G')SendSbuf[15]='G';//最后的
lds R24,_SendSbuf+14
cpi R24,71
brne L126
.dbline 541
ldi R24,71
sts _SendSbuf+15,R24
rjmp L127
L126:
.dbline 542
; else SendSbuf[15]=0; //停止
clr R2
sts _SendSbuf+15,R2
L127:
.dbline 552
;
; //发送: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 L131
.dbline 553
; {
.dbline 554
; IDX=SendSbuf[6];
lds R22,_SendSbuf+6
.dbline 555
; I2C_Write(12,IDX);
mov R18,R22
ldi R16,12
rcall _I2C_Write
.dbline 556
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 557
; IDX=SendSbuf[7];
lds R22,_SendSbuf+7
.dbline 558
; I2C_Write(14,IDX);
mov R18,R22
ldi R16,14
rcall _I2C_Write
.dbline 559
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 560
; IDX=SendSbuf[8];
lds R22,_SendSbuf+8
.dbline 561
; I2C_Write(16,IDX);
mov R18,R22
ldi R16,16
rcall _I2C_Write
.dbline 562
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 563
; }
L131:
.dbline 568
;
; //-----------------------------------------
;
;
; for(jk=2;jk<5;jk++) //把要发送的放在发送上
ldi R24,2
mov R10,R24
rjmp L139
L136:
.dbline 569
.dbline 571
ldi R24,<_SendSbuf+6
ldi R25,>_SendSbuf+6
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R22,z+0
.dbline 572
ldi R24,2
mul R24,R10
mov R24,R0
subi R24,2
mov R12,R24
.dbline 573
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 574
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 575
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 576
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 578
L137:
.dbline 568
inc R10
L139:
.dbline 568
mov R24,R10
cpi R24,5
brsh X5
rjmp L136
X5:
.dbline 580
; {
;
; 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 581
; SendSbuf[11]=SendSbuf[15];
lds R2,_SendSbuf+15
sts _SendSbuf+11,R2
.dbline 582
; SendSbuf[12]=0;
clr R2
sts _SendSbuf+12,R2
.dbline 584
; //-----
; SendSbuf[0]='T';
ldi R24,84
sts _SendSbuf,R24
.dbline 585
; SendSbuf[1]='-';
ldi R24,45
sts _SendSbuf+1,R24
.dbline 588
;
;
; }//end if(SendSbuf[0]=='S')
L118:
.dbline 591
;
;
; SEI();
sei
.dbline -2
.dbline 592
; }
L117:
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 600
;
;
; /************************************************************
; PTR2000 SET FUNC
; *******************************************************
; */
; void PTR2K_SEND()
; {
.dbline 601
; PORTD|=(1<<PD6)|(1<<PD5);
in R24,0x12
ori R24,96
out 0x12,R24
.dbline -2
.dbline 602
; }
L148:
.dbline 0 ; func end
ret
.dbend
.dbfunc e PTR2K_RECEIVE _PTR2K_RECEIVE fV
.even
_PTR2K_RECEIVE::
.dbline -1
.dbline 605
;
; void PTR2K_RECEIVE()
; {
.dbline 606
; PORTD|=(1<<PD6)|(1<<PD5);
in R24,0x12
ori R24,96
out 0x12,R24
.dbline 607
; PORTD&=0XBF;
in R24,0x12
andi R24,191
out 0x12,R24
.dbline -2
.dbline 609
; //CS=0/1 在SET-后就设定好,以后不要动
; }
L149:
.dbline 0 ; func end
ret
.dbend
.dbfunc e sdelay _sdelay fV
; k -> R16
.even
_sdelay::
.dbline -1
.dbline 621
;
; /********************************
; 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)
; {
L151:
.dbline 622
L152:
.dbline 622
; while(k--);
mov R2,R16
clr R3
subi R16,1
tst R2
brne L151
.dbline -2
.dbline 623
; }
L150:
.dbline 0 ; func end
ret
.dbsym r k 16 c
.dbend
.dbfunc e I2C_Reset _I2C_Reset fV
.even
_I2C_Reset::
.dbline -1
.dbline 625
; void I2C_Reset()
; {
.dbline 626
; CSL();
in R24,0x15
andi R24,251
out 0x15,R24
.dbline 627
; RSTL();
in R24,0x15
andi R24,223
out 0x15,R24
.dbline 628
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 629
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 630
; RSTH();
sbi 0x15,5
.dbline 632
;
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 633
; SCLH();
sbi 0x15,4
.dbline 634
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 635
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 636
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 637
; RSTL();
in R24,0x15
andi R24,223
out 0x15,R24
.dbline -2
.dbline 638
; }
L154:
.dbline 0 ; func end
ret
.dbend
.dbfunc e I2C_Start _I2C_Start fV
.even
_I2C_Start::
.dbline -1
.dbline 640
; void I2C_Start() //9
; {
.dbline 641
; DDRC=0Xff;
ldi R24,255
out 0x14,R24
.dbline 642
; SDAH();
sbi 0x15,1
.dbline 644
; // sdelay(10);
; SCLH();
sbi 0x15,4
.dbline 646
; //---------
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 647
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 648
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 650
; //----
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 651
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 653
;
; }
L155:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_Stop _I2C_Stop fV
.even
_I2C_Stop::
.dbline -1
.dbline 656
;
; void I2C_Stop() //8
; {
.dbline 658
; //DDRC=0Xff;
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 659
; SCLH();
sbi 0x15,4
.dbline 660
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 661
; SDAH();
sbi 0x15,1
.dbline 662
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 663
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 664
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 665
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 667
;
; }
L156:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_ACK _I2C_ACK fV
.even
_I2C_ACK::
.dbline -1
.dbline 670
;
; void I2C_ACK() //7
; {
.dbline 671
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 672
; SCLH();
sbi 0x15,4
.dbline 673
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 674
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 675
; SDAH();
sbi 0x15,1
.dbline 676
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 677
; }
L157:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_NACK _I2C_NACK fV
.even
_I2C_NACK::
.dbline -1
.dbline 680
;
; void I2C_NACK() //66
; {
.dbline 681
; SDAH();
sbi 0x15,1
.dbline 682
; SCLH();
sbi 0x15,4
.dbline 683
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 684
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 685
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 686
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 688
;
; }
L158:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_CACK _I2C_CACK fV
.even
_I2C_CACK::
.dbline -1
.dbline 690
; void I2C_CACK() //55
; {
.dbline 693
;
; //SDAH();
; SCLH();
sbi 0x15,4
.dbline 694
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 695
; SDAIN();//----
in R24,0x14
andi R24,223
out 0x14,R24
.dbline 696
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 697
; SCLH();
sbi 0x15,4
.dbline 698
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 699
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 700
; sdelay(10);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -