📄 test2.s
字号:
.dbline 695
; SDAH();
sbi 0x15,1
.dbline 696
; SCLH();
sbi 0x15,4
.dbline 697
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 698
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 699
; SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
.dbline 700
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 702
;
; }
L180:
.dbline 0 ; func end
rjmp _sdelay
.dbend
.dbfunc e I2C_CACK _I2C_CACK fV
.even
_I2C_CACK::
.dbline -1
.dbline 704
; void I2C_CACK() //55
; {
.dbline 707
;
; //SDAH();
; SCLH();
sbi 0x15,4
.dbline 708
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 709
; SDAIN();//----
in R24,0x14
andi R24,223
out 0x14,R24
.dbline 710
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 711
; SCLH();
sbi 0x15,4
.dbline 712
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 713
; SCLL();
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 714
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 716
;
; SDAOUT();
ldi R24,255
out 0x14,R24
.dbline 717
; sdelay(10);
ldi R16,10
.dbline -2
.dbline 719
;
; }
L181:
.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 722
;
; void I2C_WriteByte(unsigned char WByte) //44
; {
.dbline 724
; unsigned char i,j,k;
; DDRC=0XFF;
ldi R24,255
out 0x14,R24
.dbline 725
; for(i=0;i<8;i++)
clr R22
rjmp L186
L183:
.dbline 726
; {
.dbline 728
;
; if(WByte&0x80) SDAH();
sbrs R20,7
rjmp L187
.dbline 728
sbi 0x15,1
rjmp L188
L187:
.dbline 729
; else SDAL();
in R24,0x15
andi R24,253
out 0x15,R24
L188:
.dbline 730
ldi R16,10
rcall _sdelay
.dbline 731
sbi 0x15,4
.dbline 732
ldi R16,100
rcall _sdelay
.dbline 733
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 734
ldi R16,100
rcall _sdelay
.dbline 735
lsl R20
.dbline 737
L184:
.dbline 725
inc R22
L186:
.dbline 725
cpi R22,8
brlo L183
.dbline -2
.dbline 740
; sdelay(10);
; SCLH();
; sdelay(100);
; SCLL();
; sdelay(100);
; WByte<<=1;
;
; }
;
;
; }
L182:
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 743
;
; unsigned char I2C_ReadByte() //33
; {
.dbline 745
; unsigned char i,RDbyte;
; SDAIN();
in R24,0x14
andi R24,223
out 0x14,R24
.dbline 746
; DDRC=0XFD;
ldi R24,253
out 0x14,R24
.dbline 747
; RDbyte=0;
clr R22
.dbline 748
; for(i=0;i<8;i++)
clr R20
rjmp L193
L190:
.dbline 749
; {
.dbline 750
; SCLH();
sbi 0x15,4
.dbline 751
; sdelay(100);
ldi R16,100
rcall _sdelay
.dbline 753
; //SDA-->PC1
; if(PINC&0X02) //??
sbis 0x13,1
rjmp L194
.dbline 754
; { RDbyte<<=1;
.dbline 754
lsl R22
.dbline 755
; RDbyte|=0x01;
ori R22,1
.dbline 756
; }
rjmp L195
L194:
.dbline 758
; else
; {
.dbline 759
; RDbyte<<=1;
lsl R22
.dbline 760
; RDbyte&=0xfe;
andi R22,254
.dbline 761
; }
L195:
.dbline 762
ldi R16,10
rcall _sdelay
.dbline 763
in R24,0x15
andi R24,239
out 0x15,R24
.dbline 765
L191:
.dbline 748
inc R20
L193:
.dbline 748
cpi R20,8
brlo L190
.dbline 767
; sdelay(10);
; SCLL();
;
; }
; //SDAOUT();
; DDRC=0XFF;
ldi R24,255
out 0x14,R24
.dbline 768
; return RDbyte;
mov R16,R22
.dbline -2
L189:
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 772
; }
;
; unsigned char I2C_Read(unsigned char addr) //22
; {
.dbline 774
; unsigned char i,k;
; I2C_Start();
rcall _I2C_Start
.dbline 775
; I2C_WriteByte(0xa0);//写 CONTRL
ldi R16,160
rcall _I2C_WriteByte
.dbline 776
; I2C_CACK();
rcall _I2C_CACK
.dbline 777
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 779
;
; I2C_WriteByte(addr);
mov R16,R20
rcall _I2C_WriteByte
.dbline 780
; I2C_CACK();
rcall _I2C_CACK
.dbline 781
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 783
;
; I2C_Start();
rcall _I2C_Start
.dbline 785
;
; I2C_WriteByte(0xa1);//读控制字符 CONTRL
ldi R16,161
rcall _I2C_WriteByte
.dbline 786
; I2C_CACK();
rcall _I2C_CACK
.dbline 787
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 788
; k=I2C_ReadByte();
rcall _I2C_ReadByte
mov R20,R16
.dbline 789
; I2C_NACK();
rcall _I2C_NACK
.dbline 790
; I2C_Stop();
rcall _I2C_Stop
.dbline 791
; return k;
mov R16,R20
.dbline -2
L196:
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 795
; }
; //---写I2C
; void I2C_Write(unsigned char addr,unsigned char Wbyte) // 111
; {
.dbline 797
; unsigned char i,k;
; I2C_Start();
rcall _I2C_Start
.dbline 798
; I2C_WriteByte(0xa0);//写 CONTRL
ldi R16,160
rcall _I2C_WriteByte
.dbline 799
; I2C_CACK();
rcall _I2C_CACK
.dbline 800
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 801
; I2C_WriteByte(addr);
mov R16,R22
rcall _I2C_WriteByte
.dbline 802
; I2C_CACK();
rcall _I2C_CACK
.dbline 803
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 804
; I2C_WriteByte(Wbyte);
mov R16,R20
rcall _I2C_WriteByte
.dbline 805
; I2C_CACK();
rcall _I2C_CACK
.dbline 806
; sdelay(10);
ldi R16,10
rcall _sdelay
.dbline 807
; I2C_Stop();
rcall _I2C_Stop
.dbline -2
.dbline 809
;
; }
L197:
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
; crc -> R20
; datax -> y+2
; j -> R22
; i -> R10
.even
_IC_Num_Read::
rcall push_gset3
sbiw R28,3
.dbline -1
.dbline 813
;
; //----------- IC 卡处理-----------//
; void IC_Num_Read()
; {
.dbline 818
; //老板,PD3=0,插卡了 ,卡座常闭合
; unsigned char datax;
; unsigned char j,i,crc;
;
; if(PIND!=0XA3) ICRead=1;
in R24,0x10
cpi R24,163
breq L199
.dbline 818
ldi R24,1
sts _ICRead,R24
L199:
.dbline 820
;
; if((PIND==0XA3)&&(ICRead>0))
in R24,0x10
cpi R24,163
breq X8
rjmp L201
X8:
clr R2
lds R3,_ICRead
cp R2,R3
brlo X9
rjmp L201
X9:
.dbline 821
; {
.dbline 822
; ICRead=0;
sts _ICRead,R2
.dbline 823
; crc=0;
clr R20
.dbline 824
; T0_Count=0;
sts _T0_Count,R2
L203:
.dbline 825
L204:
.dbline 825
; while(T0_Count<5);// 延时等待
lds R24,_T0_Count
cpi R24,5
brlo L203
.dbline 828
; //IC卡:2,3,4,5, 司机号保存处
; //--写SendSbuf[];
; sdelay(200);
ldi R16,200
rcall _sdelay
.dbline 829
; CLI();
cli
.dbline 830
; for(j=2;j<6;j++)
ldi R22,2
rjmp L209
L206:
.dbline 831
.dbline 835
mov R24,R22
subi R24,1
mov R10,R24
lsl R10
.dbline 836
mov R16,R22
rcall _I2C_Read
std y+2,R16
.dbline 840
ldi R16,200
rcall _sdelay
.dbline 841
ldi R16,200
rcall _sdelay
.dbline 842
ldi R16,200
rcall _sdelay
.dbline 844
ldi R24,1
ldi R25,0
std y+1,R25
std y+0,R24
mov R18,R28
mov R19,R29
subi R18,254 ; offset = 2
sbci R19,255
mov R16,R22
clr R17
subi R16,250 ; offset = 6
sbci R17,255
rcall _EEPROMWriteBytes
.dbline 845
ldi R16,200
rcall _sdelay
.dbline 846
ldi R16,200
rcall _sdelay
.dbline 847
ldi R16,200
rcall _sdelay
.dbline 848
ldi R16,200
rcall _sdelay
.dbline 850
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,y+2
swap R24
andi R24,#0x0F
std z+0,R24
.dbline 851
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R2,R10
clr R3
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
ldd R24,z+0
subi R24,208 ; addi 48
std z+0,R24
.dbline 853
ldi R24,<_SendSbuf
ldi R25,>_SendSbuf
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
eor R20,R2
.dbline 854
ldi R24,<_SendSbuf+1
ldi R25,>_SendSbuf+1
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,y+2
andi R24,15
std z+0,R24
.dbline 855
ldi R24,<_SendSbuf+1
ldi R25,>_SendSbuf+1
mov R2,R10
clr R3
add R2,R24
adc R3,R25
mov R30,R2
mov R31,R3
ldd R24,z+0
subi R24,208 ; addi 48
std z+0,R24
.dbline 857
ldi R24,<_SendSbuf+1
ldi R25,>_SendSbuf+1
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
eor R20,R2
.dbline 859
ldi R16,200
rcall _sdelay
.dbline 863
L207:
.dbline 830
inc R22
L209:
.dbline 830
cpi R22,6
brsh X10
rjmp L206
X10:
.dbline 864
mov R24,R20
subi R24,226 ; addi 30
sts _SendSbuf+10,R24
.dbline 865
clr R2
sts _SendSbuf+11,R2
.dbline 866
sts _SendSbuf+12,R2
.dbline 867
ldi R24,84
sts _SendSbuf,R24
.dbline 868
ldi R24,45
sts _SendSbuf+1,R24
.dbline 872
ldi R16,200
rcall _sdelay
.dbline 879
sei
.dbline 880
L201:
.dbline -2
.dbline 882
; {
; // datax=I2C_Read(j*2);
; // if((datax>47)&&(datax<60)) //是ASCII CODE
; // {//写发送
; i=2*(j-1);
; datax=I2C_Read(j); //I2C_Write(0,0X33);
;
; //写eeprom-------------
; //T-32324578
; sdelay(200);
; sdelay(200);
; sdelay(200);
; //EEPROMWriteBytes(8, &SendSbuf[8], 8);
; EEPROMWriteBytes(j+6, &datax, 1);
; sdelay(200);
; sdelay(200);
; sdelay(200);
; sdelay(200);
; //--------------------
; SendSbuf[i]=datax>>4;
; SendSbuf[i]+=0x30;
; //--------
; crc^=SendSbuf[i];
; SendSbuf[i+1]=datax&0x0f;
; SendSbuf[i+1]+=0x30;
; //-------
; crc^=SendSbuf[i+1];
;
; sdelay(200);
;
; //}
; //else j=15;
; }
; SendSbuf[10]=crc+30;
; SendSbuf[11]=0;
; SendSbuf[12]=0;
; SendSbuf[0]='T';
; SendSbuf[1]='-';
;
;
; // EEPROMWriteBytes(9, &SendSbuf[9], 1);
; sdelay(200);
; // EEPROMWriteBytes(10,&SendSbuf[10],1);
;
;
; //END OF:if((PIND==0XA3)&&(ICRead<3))
;
;
; SEI();
; }
;
; }
L198:
adiw R28,3
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r crc 20 c
.dbsym l datax 2 c
.dbsym r j 22 c
.dbsym r i 10 c
.dbend
.area bss(ram, con, rel)
.dbfile E:\AVR\P_TEST\testAVR\TEST2.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
_CFM_flag::
.blkb 1
.dbsym e CFM_flag _CFM_flag c
_SET_flag::
.blkb 1
.dbsym e SET_flag _SET_flag c
_ICRead::
.blkb 1
.dbsym e ICRead _ICRead c
_TimeForSend::
.blkb 2
.dbsym e TimeForSend _TimeForSend i
_NowSend2::
.blkb 2
.dbsym e NowSend2 _NowSend2 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
_NowSbuf::
.blkb 20
.dbsym e NowSbuf _NowSbuf A[20:20]c
_SendSbuf::
.blkb 20
.dbsym e SendSbuf _SendSbuf A[20:20]c
_Sbufx::
.blkb 1
.dbsym e Sbufx _Sbufx c
.area data(ram, con, rel)
.dbfile E:\AVR\P_TEST\testAVR\TEST2.C
L41:
.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\testAVR\TEST2.C
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -