📄 rtc.lis
字号:
00AA .dbend
00AA .dbfunc e Ack _Ack fV
.even
00AA _Ack::
00AA .dbline -1
00AA .dbline 69
00AA ;
00AA ; void Ack() //单片机应答信号
00AA ; {SetSDA(0);
00AA .dbline 69
00AA 0027 clr R16
00AC DEDF rcall _SetSDA
00AE .dbline 70
00AE ; SetSCL(1);
00AE 01E0 ldi R16,1
00B0 D4DF rcall _SetSCL
00B2 .dbline 71
00B2 ; NOPNOP(50);
00B2 02E3 ldi R16,50
00B4 CCDF rcall _NOPNOP
00B6 .dbline 72
00B6 ; SetSCL(0);
00B6 0027 clr R16
00B8 D0DF rcall _SetSCL
00BA .dbline 73
00BA ; SetSDA(1);
00BA 01E0 ldi R16,1
00BC .dbline -2
00BC .dbline 74
00BC ; }
00BC L28:
00BC .dbline 0 ; func end
00BC D6CF rjmp _SetSDA
00BE .dbend
00BE .dbfunc e Nack _Nack fV
.even
00BE _Nack::
00BE .dbline -1
00BE .dbline 77
00BE ;
00BE ; void Nack() //单片机非应答信号
00BE ; {SetSDA(1);
00BE .dbline 77
00BE 01E0 ldi R16,1
00C0 D4DF rcall _SetSDA
00C2 .dbline 78
00C2 ; SetSCL(1);
00C2 01E0 ldi R16,1
00C4 CADF rcall _SetSCL
00C6 .dbline 79
00C6 ; NOPNOP(50);
00C6 02E3 ldi R16,50
00C8 C2DF rcall _NOPNOP
00CA .dbline 80
00CA ; SetSCL(0);
00CA 0027 clr R16
00CC C6DF rcall _SetSCL
00CE .dbline 81
00CE ; SetSDA(0);
00CE 0027 clr R16
00D0 .dbline -2
00D0 .dbline 82
00D0 ; }
00D0 L29:
00D0 .dbline 0 ; func end
00D0 CCCF rjmp _SetSDA
00D2 .dbend
00D2 .dbfunc e Check_Ack _Check_Ack fV
.even
00D2 _Check_Ack::
00D2 .dbline -1
00D2 .dbline 85
00D2 ;
00D2 ; void Check_Ack() //器件应答信号检查
00D2 ; {SetSDA(1);
00D2 .dbline 85
00D2 01E0 ldi R16,1
00D4 CADF rcall _SetSDA
00D6 .dbline 86
00D6 ; SetSCL(1);
00D6 01E0 ldi R16,1
00D8 C0DF rcall _SetSCL
00DA .dbline 87
00DA ; F_Flag=0;
00DA 2224 clr R2
00DC 20920000 sts _F_Flag,R2
00E0 .dbline 88
00E0 ; DDRB=DDRB&0xFD;
00E0 87B3 in R24,0x17
00E2 8D7F andi R24,253
00E4 87BB out 0x17,R24
00E6 .dbline 89
00E6 ; if((PINB&0x02)==0)
00E6 B199 sbic 0x16,1
00E8 05C0 rjmp L31
00EA .dbline 90
00EA ; {SetSCL(0);
00EA .dbline 90
00EA 0027 clr R16
00EC B6DF rcall _SetSCL
00EE .dbline 91
00EE ; NOPNOP(50);}
00EE 02E3 ldi R16,50
00F0 AEDF rcall _NOPNOP
00F2 .dbline 91
00F2 07C0 rjmp L32
00F4 L31:
00F4 .dbline 93
00F4 ; else
00F4 ; {F_Flag=1;
00F4 .dbline 93
00F4 81E0 ldi R24,1
00F6 80930000 sts _F_Flag,R24
00FA .dbline 94
00FA ; SetSCL(0);
00FA 0027 clr R16
00FC AEDF rcall _SetSCL
00FE .dbline 95
00FE ; NOPNOP(50);}
00FE 02E3 ldi R16,50
0100 A6DF rcall _NOPNOP
0102 .dbline 95
0102 L32:
0102 .dbline 96
0102 ; DDRB=DDRB|0x02;
0102 B99A sbi 0x17,1
0104 .dbline -2
0104 .dbline 97
0104 ; }
0104 L30:
0104 .dbline 0 ; func end
0104 0895 ret
0106 .dbend
0106 .dbfunc e Write_Bit0 _Write_Bit0 fV
.even
0106 _Write_Bit0::
0106 .dbline -1
0106 .dbline 100
0106 ;
0106 ; void Write_Bit0() //向IIC总线写0
0106 ; {SetSDA(0);
0106 .dbline 100
0106 0027 clr R16
0108 B0DF rcall _SetSDA
010A .dbline 101
010A ; SetSCL(1);
010A 01E0 ldi R16,1
010C A6DF rcall _SetSCL
010E .dbline 102
010E ; NOPNOP(50);
010E 02E3 ldi R16,50
0110 9EDF rcall _NOPNOP
0112 .dbline 103
0112 ; SetSCL(0);
0112 0027 clr R16
0114 .dbline -2
0114 .dbline 104
0114 ; }
0114 L33:
0114 .dbline 0 ; func end
0114 A2CF rjmp _SetSCL
0116 .dbend
0116 .dbfunc e Write_Bit1 _Write_Bit1 fV
.even
0116 _Write_Bit1::
0116 .dbline -1
0116 .dbline 107
0116 ;
0116 ; void Write_Bit1() //向IIC总线写1
0116 ; {SetSDA(1);
0116 .dbline 107
0116 01E0 ldi R16,1
0118 A8DF rcall _SetSDA
011A .dbline 108
011A ; SetSCL(1);
011A 01E0 ldi R16,1
011C 9EDF rcall _SetSCL
011E .dbline 109
011E ; NOPNOP(50);
011E 02E3 ldi R16,50
0120 96DF rcall _NOPNOP
0122 .dbline 110
0122 ; SetSCL(0);
0122 0027 clr R16
0124 9ADF rcall _SetSCL
0126 .dbline 111
0126 ; SetSDA(0);
0126 0027 clr R16
0128 .dbline -2
0128 .dbline 112
0128 ; }
0128 L34:
0128 .dbline 0 ; func end
0128 A0CF rjmp _SetSDA
012A .dbend
012A .dbfunc e Write_Byte _Write_Byte fV
012A ; i -> R20
012A ; Data -> R22
.even
012A _Write_Byte::
012A 00D0 rcall push_gset2
012C 602F mov R22,R16
012E .dbline -1
012E .dbline 115
012E ;
012E ; void Write_Byte(uchar Data) //向IIC总线写一字节数据
012E ; {uchar i;
012E .dbline 116
012E ; for(i=0;i<8;i++)
012E 4427 clr R20
0130 0AC0 rjmp L39
0132 L36:
0132 .dbline 117
0132 ; {if((Data&0x80)>0)
0132 .dbline 117
0132 2224 clr R2
0134 862F mov R24,R22
0136 8078 andi R24,128
0138 2816 cp R2,R24
013A 10F4 brsh L40
013C .dbline 118
013C ; Write_Bit1();
013C ECDF rcall _Write_Bit1
013E 01C0 rjmp L41
0140 L40:
0140 .dbline 120
0140 ; else
0140 ; Write_Bit0();
0140 E2DF rcall _Write_Bit0
0142 L41:
0142 .dbline 121
0142 660F lsl R22
0144 .dbline 122
0144 L37:
0144 .dbline 116
0144 4395 inc R20
0146 L39:
0146 .dbline 116
0146 4830 cpi R20,8
0148 A0F3 brlo L36
014A .dbline -2
014A .dbline 123
014A ; Data<<=1;
014A ; }
014A ; }
014A L35:
014A 00D0 rcall pop_gset2
014C .dbline 0 ; func end
014C 0895 ret
014E .dbsym r i 20 c
014E .dbsym r Data 22 c
014E .dbend
014E .dbfunc e Read_Byte _Read_Byte fc
014E ; j -> R20
014E ; nn -> R22
.even
014E _Read_Byte::
014E 00D0 rcall push_gset2
0150 .dbline -1
0150 .dbline 127
0150 ;
0150 ;
0150 ; uchar Read_Byte() //从IIC总线读一字节数据
0150 ; {uchar nn=0xff;
0150 .dbline 127
0150 6FEF ldi R22,255
0152 .dbline 129
0152 ; uchar j;
0152 ; for (j=0;j<8;j++)
0152 4427 clr R20
0154 13C0 rjmp L46
0156 L43:
0156 .dbline 130
0156 ; {SetSDA(1);
0156 .dbline 130
0156 01E0 ldi R16,1
0158 88DF rcall _SetSDA
015A .dbline 131
015A ; SetSCL(1);
015A 01E0 ldi R16,1
015C 7EDF rcall _SetSCL
015E .dbline 132
015E ; DDRB=DDRB&0xFB;
015E 87B3 in R24,0x17
0160 8B7F andi R24,251
0162 87BB out 0x17,R24
0164 .dbline 134
0164 ;
0164 ; if((PINB&0x02)==0)
0164 B199 sbic 0x16,1
0166 05C0 rjmp L47
0168 .dbline 135
0168 ; {nn<<=1;
0168 .dbline 135
0168 660F lsl R22
016A .dbline 136
016A ; nn=(nn&0xfe);
016A 6E7F andi R22,254
016C .dbline 137
016C ; SetSCL(0);}
016C 0027 clr R16
016E 75DF rcall _SetSCL
0170 .dbline 137
0170 04C0 rjmp L48
0172 L47:
0172 .dbline 139
0172 ; else
0172 ; {nn<<=1;
0172 .dbline 139
0172 660F lsl R22
0174 .dbline 140
0174 ; nn=(nn|0x01);
0174 6160 ori R22,1
0176 .dbline 141
0176 ; SetSCL(0);}
0176 0027 clr R16
0178 70DF rcall _SetSCL
017A .dbline 141
017A L48:
017A .dbline 142
017A L44:
017A .dbline 129
017A 4395 inc R20
017C L46:
017C .dbline 129
017C 4830 cpi R20,8
017E 58F3 brlo L43
0180 .dbline 143
0180 ; }
0180 ; DDRB=DDRB|0x02;
0180 B99A sbi 0x17,1
0182 .dbline 144
0182 ; return(nn);
0182 062F mov R16,R22
0184 .dbline -2
0184 L42:
0184 00D0 rcall pop_gset2
0186 .dbline 0 ; func end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -