📄 mainbd.s
字号:
.dbline 496
; while(k--);
mov R2,R16
clr R3
subi R16,1
tst R2
brne L100
.dbline -2
.dbline 497
; }
L99:
.dbline 0 ; func end
ret
.dbsym r k 16 c
.dbend
.dbfunc e I2C_Reset _I2C_Reset fV
.even
_I2C_Reset::
.dbline -1
.dbline 499
; void I2C_Reset()
; {
.dbline 500
; CSL();
in R24,0x15
andi R24,251
out 0x15,R24
.dbline 501
; RSTL();
in R24,0x15
andi R24,223
out 0x15,R24
.dbline 502
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 503
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 504
; RSTH();
sbi 0x15,5
.dbline 506
;
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 507
; SCLH();
sbi 0x15,4
.dbline 508
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 509
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 510
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 511
; RSTL();
in R24,0x15
andi R24,223
out 0x15,R24
.dbline -2
.dbline 512
; }
L103:
.dbline 0 ; func end
ret
.dbend
.dbfunc e I2C_Start _I2C_Start fV
.even
_I2C_Start::
.dbline -1
.dbline 514
; void I2C_Start() //9
; {
.dbline 515
; DDRC=0Xff;
ldi R24,255
out 0x14,R24
.dbline 516
; SDAH();
sbi 0x15,1
.dbline 518
; // sdelay(10);
; SCLH();
sbi 0x15,4
.dbline 520
; //---------
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 521
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 522
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 524
; //----
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 525
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 527
;
; }
L104:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_Stop _I2C_Stop fV
.even
_I2C_Stop::
.dbline -1
.dbline 530
;
; void I2C_Stop() //8
; {
.dbline 532
; //DDRC=0Xff;
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 533
; SCLH();
sbi 0x15,4
.dbline 534
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 535
; SDAH();
sbi 0x15,1
.dbline 536
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 537
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 538
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 539
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 541
;
; }
L105:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_ACK _I2C_ACK fV
.even
_I2C_ACK::
.dbline -1
.dbline 544
;
; void I2C_ACK() //7
; {
.dbline 545
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 546
; SCLH();
sbi 0x15,4
.dbline 547
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 548
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 549
; SDAH();
sbi 0x15,1
.dbline 550
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 551
; }
L106:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_NACK _I2C_NACK fV
.even
_I2C_NACK::
.dbline -1
.dbline 554
;
; void I2C_NACK() //66
; {
.dbline 555
; SDAH();
sbi 0x15,1
.dbline 556
; SCLH();
sbi 0x15,4
.dbline 557
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 558
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 559
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 560
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 562
;
; }
L107:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_CACK _I2C_CACK fV
.even
_I2C_CACK::
.dbline -1
.dbline 564
; void I2C_CACK() //55
; {
.dbline 567
;
; //SDAH();
; SCLH();
sbi 0x15,4
.dbline 568
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 569
; SDAIN();//----
in R24,0x14
andi R24,223
out 0x14,R24
.dbline 570
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 571
; SCLH();
sbi 0x15,4
.dbline 572
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 573
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 574
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 576
;
; SDAOUT();
ldi R24,255
out 0x14,R24
.dbline 577
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 579
;
; }
L108:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_WriteByte _I2C_WriteByte fV
; k -> <dead>
; j -> <dead>
; i -> R22
; WByte -> R20
.even
_I2C_WriteByte::
rcall push_gset2
mov R20,R16
.dbline -1
.dbline 582
;
; void I2C_WriteByte(unsigned char WByte) //44
; {
.dbline 584
; unsigned char i,j,k;
; DDRC=0XFF;
ldi R24,255
out 0x14,R24
.dbline 585
; for(i=0;i<8;i++)
clr R22
rjmp L113
L110:
.dbline 586
; {
.dbline 588
;
; if(WByte&0x80) SDAH();
sbrs R20,7
rjmp L114
.dbline 588
sbi 0x15,1
rjmp L115
L114:
.dbline 589
; else SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
L115:
.dbline 590
ldi R16,10
rcall _sdelay
.dbline 591
sbi 0x15,4
.dbline 592
ldi R16,100
rcall _sdelay
.dbline 593
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 594
ldi R16,100
rcall _sdelay
.dbline 595
lsl R20
.dbline 597
L111:
.dbline 585
inc R22
L113:
.dbline 585
cpi R22,8
brlo L110
.dbline -2
.dbline 600
; sdelay(10);
; SCLH();
; sdelay(100);
; SCLL();
; sdelay(100);
; WByte<<=1;
;
; }
;
;
; }
L109:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l k 1 c
.dbsym l j 1 c
.dbsym r i 22 c
.dbsym r WByte 20 c
.dbend
.dbfunc e I2C_ReadByte _I2C_ReadByte fc
; i -> R20
; RDbyte -> R22
.even
_I2C_ReadByte::
rcall push_gset2
.dbline -1
.dbline 603
;
; unsigned char I2C_ReadByte() //33
; {
.dbline 605
; unsigned char i,RDbyte;
; SDAIN();
in R24,0x14
andi R24,223
out 0x14,R24
.dbline 606
; DDRC=0XFD;
ldi R24,253
out 0x14,R24
.dbline 607
; RDbyte=0;
clr R22
.dbline 608
; for(i=0;i<8;i++)
clr R20
rjmp L120
L117:
.dbline 609
; {
.dbline 610
; SCLH();
sbi 0x15,4
.dbline 611
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 613
; //SDA-->PC1
; if(PINC&0X02) //??
sbis 0x13,1
rjmp L121
.dbline 614
; { RDbyte<<=1;
.dbline 614
lsl R22
.dbline 615
; RDbyte|=0x01;
ori R22,1
.dbline 616
; }
rjmp L122
L121:
.dbline 618
; else
; {
.dbline 619
; RDbyte<<=1;
lsl R22
.dbline 620
; RDbyte&=0xfe;
andi R22,254
.dbline 621
; }
L122:
.dbline 622
ldi R16,10
rcall _sdelay
.dbline 623
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 625
L118:
.dbline 608
inc R20
L120:
.dbline 608
cpi R20,8
brlo L117
.dbline 627
; sdelay(10);
; SCLL();
;
; }
; //SDAOUT();
; DDRC=0XFF;
ldi R24,255
out 0x14,R24
.dbline 628
; return RDbyte;
mov R16,R22
.dbline -2
L116:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r RDbyte 22 c
.dbend
.dbfunc e I2C_Read _I2C_Read fc
; i -> <dead>
; k -> R20
; addr -> R20
.even
_I2C_Read::
rcall push_gset1
mov R20,R16
.dbline -1
.dbline 632
; }
;
; unsigned char I2C_Read(unsigned char addr) //22
; {
.dbline 634
; unsigned char i,k;
; I2C_Start();
rcall _I2C_Start
.dbline 635
; I2C_WriteByte(0xa0);//写 CONTRL
ldi R16,160
rcall _I2C_WriteByte
.dbline 636
; I2C_CACK();
rcall _I2C_CACK
.dbline 637
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 639
;
; I2C_WriteByte(addr);
mov R16,R20
rcall _I2C_WriteByte
.dbline 640
; I2C_CACK();
rcall _I2C_CACK
.dbline 641
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 643
;
; I2C_Start();
rcall _I2C_Start
.dbline 645
;
; I2C_WriteByte(0xa1);//读控制字符 CONTRL
ldi R16,161
rcall _I2C_WriteByte
.dbline 646
; I2C_CACK();
rcall _I2C_CACK
.dbline 647
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 648
; k=I2C_ReadByte();
rcall _I2C_ReadByte
mov R20,R16
.dbline 649
; I2C_NACK();
rcall _I2C_NACK
.dbline 650
; I2C_Stop();
rcall _I2C_Stop
.dbline 651
; return k;
mov R16,R20
.dbline -2
L123:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l i 1 c
.dbsym r k 20 c
.dbsym r addr 20 c
.dbend
.dbfunc e I2C_Write _I2C_Write fV
; k -> <dead>
; i -> <dead>
; Wbyte -> R20
; addr -> R22
.even
_I2C_Write::
rcall push_gset2
mov R20,R18
mov R22,R16
.dbline -1
.dbline 655
; }
; //---写I2C
; void I2C_Write(unsigned char addr,unsigned char Wbyte) // 111
; {
.dbline 657
; unsigned char i,k;
; I2C_Start();
rcall _I2C_Start
.dbline 658
; I2C_WriteByte(0xa0);//写 CONTRL
ldi R16,160
rcall _I2C_WriteByte
.dbline 659
; I2C_CACK();
rcall _I2C_CACK
.dbline 660
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 661
; I2C_WriteByte(addr);
mov R16,R22
rcall _I2C_WriteByte
.dbline 662
; I2C_CACK();
rcall _I2C_CACK
.dbline 663
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 664
; I2C_WriteByte(Wbyte);
mov R16,R20
rcall _I2C_WriteByte
.dbline 665
; I2C_CACK();
rcall _I2C_CACK
.dbline 666
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 667
; I2C_Stop();
rcall _I2C_Stop
.dbline -2
.dbline 669
;
; }
L124:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym l k 1 c
.dbsym l i 1 c
.dbsym r Wbyte 20 c
.dbsym r addr 22 c
.dbend
.dbfunc e IC_Num_Read _IC_Num_Read fV
; datax -> <dead>
; j -> R20
.even
_IC_Num_Read::
rcall push_gset1
sbiw R28,2
.dbline -1
.dbline 673
;
; //----------- IC 卡处理-----------//
; void IC_Num_Read()
; {
.dbline 677
; //老板,PD3=0,插卡了 ,卡座常闭合
; unsigned char datax,j;
;
; if(PIND!=0XA3) ICRead=1;
in R24,0x10
cpi R24,163
breq L126
.dbline 677
ldi R24,1
sts _ICRead,R24
L126:
.dbline 679
;
; if((PIND==0XA3)&&(ICRead>0))
in R24,0x10
cpi R24,163
breq X5
rjmp L128
X5:
clr R2
lds R3,_ICRead
cp R2,R3
brlo X6
rjmp L128
X6:
.dbline 680
; {
.dbline 681
; ICRead=0;
sts _ICRead,R2
.dbline 685
;
; //IC卡:12,14,16 司机号保存处
; //--写SendSbuf[];
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 686
; CLI();
cli
.dbline 687
; for(j=6;j<9;j++)
ldi R20,6
rjmp L133
L130:
.dbline 688
.dbline 692
mov R16,R20
lsl R16
rcall _I2C_Read
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R16
.dbline 693
ldi R16,200
rcall _sdelay
.dbline 696
L131:
.dbline 687
inc R20
L133:
.dbline 687
cpi R20,9
brlo L130
.dbline 698
; {
; // datax=I2C_Read(j*2);
; // if((datax>47)&&(datax<60)) //是ASCII CODE
; // {//写发送
; SendSbuf[j]=I2C_Read(j*2);//I2C_Write(0,0X33);
; sdelay(200);
; //}
; //else j=15;
; }
;
; if(j==9) //写eeprom
cpi R20,9
brne L134
.dbline 699
; {
.dbline 700
; EEPROMWriteBytes(8, &SendSbuf[8], 1);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_SendSbuf+8
ldi R19,>_SendSbuf+8
ldi R16,8
ldi R17,0
rcall _EEPROMWriteBytes
.dbline 701
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 702
; EEPROMWriteBytes(9, &SendSbuf[9], 1);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_SendSbuf+9
ldi R19,>_SendSbuf+9
ldi R16,9
ldi R17,0
rcall _EEPROMWriteBytes
.dbline 703
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 704
; EEPROMWriteBytes(10,&SendSbuf[10],1);
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
ldi R18,<_SendSbuf+10
ldi R19,>_SendSbuf+10
ldi R16,10
ldi R17,0
rcall _EEPROMWriteBytes
.dbline 705
; }
L134:
.dbline 707
;
; }//END OF:if((PIND==0XA3)&&(ICRead<3))
L128:
.dbline 710
;
;
; SEI();
sei
.dbline -2
.dbline 711
; }
L125:
adiw R28,2
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym l datax 3 c
.dbsym r j 20 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\AVR\P_TEST\MainBd.c
_kr2::
.blkb 1
.dbsym e kr2 _kr2 c
_kr1::
.blkb 1
.dbsym e kr1 _kr1 c
_T0_Count::
.blkb 1
.dbsym e T0_Count _T0_Count c
_ICRead::
.blkb 1
.dbsym e ICRead _ICRead c
_TimeForSend::
.blkb 2
.dbsym e TimeForSend _TimeForSend i
_NowSend::
.blkb 2
.dbsym e NowSend _NowSend i
_TimeForCall::
.blkb 1
.dbsym e TimeForCall _TimeForCall c
_Send_flag::
.blkb 1
.dbsym e Send_flag _Send_flag c
_SendPoint::
.blkb 2
.dbsym e SendPoint _SendPoint pc
_ReceiveSbuf::
.blkb 20
.dbsym e ReceiveSbuf _ReceiveSbuf A[20:20]c
_krec::
.blkb 1
.dbsym e krec _krec c
_Sbufx::
.blkb 1
.dbsym e Sbufx _Sbufx c
.area data(ram, con, rel)
.dbfile E:\AVR\P_TEST\MainBd.c
L10:
.blkb 12
.area idata
.byte 'S,'t,'a,'r,'t,32,48,48,32,13,10,0
.area data(ram, con, rel)
.dbfile E:\AVR\P_TEST\MainBd.c
L5:
.blkb 6
.area idata
.byte 49,50,51,52,53,0
.area data(ram, con, rel)
.dbfile E:\AVR\P_TEST\MainBd.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -