📄 24c01.lis
字号:
00C8 4395 inc R20
00CA L61:
00CA .dbline 84
00CA ; // SET_SCL();
00CA ; for(i=0;i<10;i++);
00CA 4A30 cpi R20,10
00CC E8F3 brlo L58
00CE .dbline 85
00CE ; if((PIND&0x02)==0x02) /* if Sda=1;*/
00CE 80B3 in R24,0x10
00D0 8270 andi R24,2
00D2 8230 cpi R24,2
00D4 09F4 brne L62
00D6 .dbline 86
00D6 ; temp=temp|0x01;
00D6 2160 ori R18,1
00D8 L62:
00D8 .dbline 87
00D8 L51:
00D8 .dbline 78
00D8 0395 inc R16
00DA L53:
00DA .dbline 78
00DA 0830 cpi R16,8
00DC 68F3 brlo L50
00DE .dbline 88
00DE ; }
00DE ; return temp;
00DE 022F mov R16,R18
00E0 .dbline -2
00E0 L49:
00E0 0E940000 xcall pop_gset1
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbsym r j 16 c
00E6 .dbsym r temp 18 c
00E6 .dbsym r i 20 c
00E6 .dbend
00E6 .dbfunc e WrToROM _WrToROM fV
00E6 ; i -> R20
00E6 ; Num -> R22
00E6 ; Address -> y+6
00E6 ; Data -> R10,R11
.even
00E6 _WrToROM::
00E6 3A93 st -y,r19
00E8 2A93 st -y,r18
00EA 0E940000 xcall push_gset3
00EE 5801 movw R10,R16
00F0 6885 ldd R22,y+8
00F2 .dbline -1
00F2 .dbline 91
00F2 ; }
00F2 ; void WrToROM(unsigned char *Data,unsigned int Address,unsigned char Num)
00F2 ; {
00F2 .dbline 93
00F2 ; unsigned char i;
00F2 ; Start(); /* send start signed*/
00F2 9EDF xcall _Start
00F4 .dbline 94
00F4 ; Send(0xa0); /* send SLA+W*/
00F4 00EA ldi R16,160
00F6 C4DF xcall _Send
00F8 .dbline 95
00F8 ; Ack();
00F8 B5DF xcall _Ack
00FA .dbline 96
00FA ; Send(*((unsigned char *)&Address+1)); /* send address*/
00FA 0F81 ldd R16,y+7
00FC C1DF xcall _Send
00FE .dbline 97
00FE ; Ack();
00FE B2DF xcall _Ack
0100 .dbline 98
0100 ; Send(*((unsigned char *)&Address));
0100 FE01 movw R30,R28
0102 0681 ldd R16,z+6
0104 BDDF xcall _Send
0106 .dbline 99
0106 ; Ack();
0106 AEDF xcall _Ack
0108 .dbline 100
0108 ; for(i=0;i<Num;i++)
0108 4427 clr R20
010A 08C0 xjmp L69
010C L66:
010C .dbline 101
010C .dbline 102
010C E42F mov R30,R20
010E FF27 clr R31
0110 EA0D add R30,R10
0112 FB1D adc R31,R11
0114 0081 ldd R16,z+0
0116 B4DF xcall _Send
0118 .dbline 103
0118 A5DF xcall _Ack
011A .dbline 104
011A L67:
011A .dbline 100
011A 4395 inc R20
011C L69:
011C .dbline 100
011C 4617 cp R20,R22
011E B0F3 brlo L66
0120 .dbline 105
0120 ; {
0120 ; Send(*(Data+i));
0120 ; Ack();
0120 ; }
0120 ; Stop();
0120 94DF xcall _Stop
0122 .dbline 106
0122 ; mDelay(10);
0122 0AE0 ldi R16,10
0124 6DDF xcall _mDelay
0126 .dbline -2
0126 L64:
0126 0E940000 xcall pop_gset3
012A 2296 adiw R28,2
012C .dbline 0 ; func end
012C 0895 ret
012E .dbsym r i 20 c
012E .dbsym r Num 22 c
012E .dbsym l Address 6 i
012E .dbsym r Data 10 pc
012E .dbend
012E .dbfunc e RdFromROM _RdFromROM fV
012E ; i -> R20
012E ; Num -> R22
012E ; Address -> y+6
012E ; Data -> R10,R11
.even
012E _RdFromROM::
012E 3A93 st -y,r19
0130 2A93 st -y,r18
0132 0E940000 xcall push_gset3
0136 5801 movw R10,R16
0138 6885 ldd R22,y+8
013A .dbline -1
013A .dbline 110
013A ;
013A ; }
013A ; void RdFromROM(unsigned char *Data,unsigned int Address,unsigned char Num)
013A ; {
013A .dbline 114
013A ; unsigned char i;
013A ; // unsigned char *PData;
013A ; // PData=Data;
013A ; for(i=0;i<Num;i++)
013A 4427 clr R20
013C 1DC0 xjmp L74
013E L71:
013E .dbline 115
013E .dbline 116
013E 78DF xcall _Start
0140 .dbline 117
0140 00EA ldi R16,160
0142 9EDF xcall _Send
0144 .dbline 118
0144 8FDF xcall _Ack
0146 .dbline 119
0146 0F81 ldd R16,y+7
0148 9BDF xcall _Send
014A .dbline 120
014A 8CDF xcall _Ack
014C .dbline 121
014C FE01 movw R30,R28
014E 0681 ldd R16,z+6
0150 97DF xcall _Send
0152 .dbline 122
0152 88DF xcall _Ack
0154 .dbline 123
0154 6DDF xcall _Start
0156 .dbline 124
0156 01EA ldi R16,161
0158 93DF xcall _Send
015A .dbline 125
015A 84DF xcall _Ack
015C .dbline 126
015C A8DF xcall _Read
015E E42F mov R30,R20
0160 FF27 clr R31
0162 EA0D add R30,R10
0164 FB1D adc R31,R11
0166 0083 std z+0,R16
0168 .dbline 128
0168 84DF xcall _NoAck
016A .dbline 129
016A 6FDF xcall _Stop
016C .dbline 130
016C 8E81 ldd R24,y+6
016E 9F81 ldd R25,y+7
0170 0196 adiw R24,1
0172 9F83 std y+7,R25
0174 8E83 std y+6,R24
0176 .dbline 131
0176 L72:
0176 .dbline 114
0176 4395 inc R20
0178 L74:
0178 .dbline 114
0178 4617 cp R20,R22
017A 08F3 brlo L71
017C .dbline -2
017C L70:
017C 0E940000 xcall pop_gset3
0180 2296 adiw R28,2
0182 .dbline 0 ; func end
0182 0895 ret
0184 .dbsym r i 20 c
0184 .dbsym r Num 22 c
0184 .dbsym l Address 6 i
0184 .dbsym r Data 10 pc
0184 .dbend
0184 .dbfunc e write_byte01 _write_byte01 fV
0184 ; data -> y+2
0184 ; Address -> y+0
.even
0184 _write_byte01::
0184 0E940000 xcall push_arg4
0188 .dbline -1
0188 .dbline 135
0188 ; {
0188 ; Start();
0188 ; Send(0xa0);
0188 ; Ack();
0188 ; Send(*((unsigned char *)&Address+1));
0188 ; Ack();
0188 ; Send(*((unsigned char *)&Address));
0188 ; Ack();
0188 ; Start();
0188 ; Send(0xa1);
0188 ; Ack();
0188 ; *(Data+i)=Read();
0188 ; // CLEAR_SCL();
0188 ; NoAck();
0188 ; Stop();
0188 ; Address++;
0188 ; }
0188 ; }
0188 ;
0188 ; void write_byte01(unsigned int Address,unsigned char data)
0188 ; {
0188 .dbline 136
0188 ; Start(); /* send start signed*/
0188 53DF xcall _Start
018A .dbline 137
018A ; Send(0xa0); /* send SLA+W*/
018A 00EA ldi R16,160
018C 79DF xcall _Send
018E .dbline 138
018E ; Ack();
018E 6ADF xcall _Ack
0190 .dbline 139
0190 ; Send(*((unsigned char *)&Address+1)); /* send address*/
0190 0981 ldd R16,y+1
0192 76DF xcall _Send
0194 .dbline 140
0194 ; Ack();
0194 67DF xcall _Ack
0196 .dbline 141
0196 ; Send(*((unsigned char *)&Address));
0196 FE01 movw R30,R28
0198 0081 ldd R16,z+0
019A 72DF xcall _Send
019C .dbline 142
019C ; Ack();
019C 63DF xcall _Ack
019E .dbline 143
019E ; Send(data);
019E 0A81 ldd R16,y+2
01A0 6FDF xcall _Send
01A2 .dbline 144
01A2 ; Ack();
01A2 60DF xcall _Ack
01A4 .dbline 145
01A4 ; Stop();
01A4 52DF xcall _Stop
01A6 .dbline 146
01A6 ; mDelay(30);
01A6 0EE1 ldi R16,30
01A8 2BDF xcall _mDelay
01AA .dbline -2
01AA L76:
01AA 2496 adiw R28,4
01AC .dbline 0 ; func end
01AC 0895 ret
01AE .dbsym l data 2 c
01AE .dbsym l Address 0 i
01AE .dbend
01AE .dbfunc e read_byte01 _read_byte01 fc
01AE ; temp -> R20
01AE ; Address -> y+2
.even
01AE _read_byte01::
01AE 1A93 st -y,r17
01B0 0A93 st -y,r16
01B2 0E940000 xcall push_gset1
01B6 .dbline -1
01B6 .dbline 150
01B6 ;
01B6 ; }
01B6 ; unsigned char read_byte01(unsigned int Address)
01B6 ; {
01B6 .dbline 152
01B6 ; unsigned char temp;
01B6 ; Start();
01B6 3CDF xcall _Start
01B8 .dbline 153
01B8 ; Send(0xa0);
01B8 00EA ldi R16,160
01BA 62DF xcall _Send
01BC .dbline 154
01BC ; Ack();
01BC 53DF xcall _Ack
01BE .dbline 155
01BE ; Send(*((unsigned char *)&Address+1));
01BE 0B81 ldd R16,y+3
01C0 5FDF xcall _Send
01C2 .dbline 156
01C2 ; Ack();
01C2 50DF xcall _Ack
01C4 .dbline 157
01C4 ; Send(*((unsigned char *)&Address));
01C4 FE01 movw R30,R28
01C6 0281 ldd R16,z+2
01C8 5BDF xcall _Send
01CA .dbline 158
01CA ; Ack();
01CA 4CDF xcall _Ack
01CC .dbline 159
01CC ; Start();
01CC 31DF xcall _Start
01CE .dbline 160
01CE ; Send(0xa1);
01CE 01EA ldi R16,161
01D0 57DF xcall _Send
01D2 .dbline 161
01D2 ; Ack();
01D2 48DF xcall _Ack
01D4 .dbline 162
01D4 ; temp=Read();
01D4 6CDF xcall _Read
01D6 402F mov R20,R16
01D8 .dbline 164
01D8 ; // CLEAR_SCL();
01D8 ; NoAck();
01D8 4CDF xcall _NoAck
01DA .dbline 165
01DA ; Stop();
01DA 37DF xcall _Stop
01DC .dbline 166
01DC ; return temp;
01DC 042F mov R16,R20
01DE .dbline -2
01DE L78:
01DE 0E940000 xcall pop_gset1
01E2 2296 adiw R28,2
01E4 .dbline 0 ; func end
01E4 0895 ret
01E6 .dbsym r temp 20 c
01E6 .dbsym l Address 2 i
01E6 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -