📄 newmain.lis
字号:
00EE 81BB out 0x11,R24
00F0 .dbline 101
00F0 ; PORTE = 0x02;
00F0 82E0 ldi R24,2
00F2 83B9 out 0x3,R24
00F4 .dbline 102
00F4 ; DDRE = 0x02;
00F4 82B9 out 0x2,R24
00F6 .dbline 103
00F6 ; PORTF = 0x00;
00F6 20926200 sts 98,R2
00FA .dbline 104
00FA ; DDRF = 0x00;
00FA 20926100 sts 97,R2
00FE .dbline 105
00FE ; PORTG = 0x0;
00FE 20926500 sts 101,R2
0102 .dbline 106
0102 ; DDRG = 0x0;
0102 20926400 sts 100,R2
0106 .dbline -2
0106 L21:
0106 .dbline 0 ; func end
0106 0895 ret
0108 .dbend
0108 .dbfunc e Init_SPI _Init_SPI fV
.even
0108 _Init_SPI::
0108 .dbline -1
0108 .dbline 110
0108 ; }
0108 ; //初始化 SPI
0108 ; void Init_SPI(void)
0108 ; {
0108 .dbline 111
0108 ; SPCR = 0x5e; //setup SPI
0108 8EE5 ldi R24,94
010A 8DB9 out 0xd,R24
010C .dbline 112
010C ; SPSR = 0x00; //setup SPI
010C 2224 clr R2
010E 2EB8 out 0xe,R2
0110 .dbline -2
0110 L22:
0110 .dbline 0 ; func end
0110 0895 ret
0112 .dbend
0112 .dbfunc e delay_ms _delay_ms fV
0112 ; time -> R20,R21
.even
0112 _delay_ms::
0112 0E940000 xcall push_gset1
0116 A801 movw R20,R16
0118 .dbline -1
0118 .dbline 117
0118 ; }
0118 ;
0118 ; /* 毫秒级延时程序 */
0118 ; void delay_ms(unsigned int time)
0118 ; {
0118 0CC0 xjmp L25
011A L24:
011A .dbline 119
011A ; while(time!=0)
011A ; {
011A .dbline 120
011A ; delay_us(1850);
011A 0AE3 ldi R16,1850
011C 17E0 ldi R17,7
011E 70DF xcall _delay_us
0120 .dbline 121
0120 ; time--;
0120 4150 subi R20,1
0122 5040 sbci R21,0
0124 .dbline 122
0124 ; if(PORTD&0x01==1)PORTD=PORTD&0xfe;
0124 909B sbis 0x12,0
0126 04C0 rjmp L27
0128 .dbline 122
0128 82B3 in R24,0x12
012A 8E7F andi R24,254
012C 82BB out 0x12,R24
012E 01C0 xjmp L28
0130 L27:
0130 .dbline 123
0130 ; else PORTD=PORTD|0x1;
0130 909A sbi 0x12,0
0132 L28:
0132 .dbline 124
0132 L25:
0132 .dbline 118
0132 4030 cpi R20,0
0134 4507 cpc R20,R21
0136 89F7 brne L24
0138 X2:
0138 .dbline -2
0138 L23:
0138 0E940000 xcall pop_gset1
013C .dbline 0 ; func end
013C 0895 ret
013E .dbsym r time 20 i
013E .dbend
013E .dbfunc e clr_dog _clr_dog fV
.even
013E _clr_dog::
013E .dbline -1
013E .dbline 127
013E ; }
013E ; }
013E ; void clr_dog(void)
013E ; {
013E .dbline 128
013E ; if(PORTD&0x01==1)PORTD=PORTD&0xfe;
013E 909B sbis 0x12,0
0140 04C0 rjmp L30
0142 .dbline 128
0142 82B3 in R24,0x12
0144 8E7F andi R24,254
0146 82BB out 0x12,R24
0148 01C0 xjmp L31
014A L30:
014A .dbline 129
014A 909A sbi 0x12,0
014C L31:
014C .dbline -2
014C L29:
014C .dbline 0 ; func end
014C 0895 ret
014E .dbend
014E .dbfunc e df_reset _df_reset fV
.even
014E _df_reset::
014E .dbline -1
014E .dbline 134
014E ; else PORTD=PORTD|0x1;
014E ; }
014E ; //spi模式3
014E ; //flash复位
014E ; void df_reset(void)
014E ; {
014E .dbline 135
014E ; PORTB&=~(1<<RESET);
014E C798 cbi 0x18,7
0150 .dbline 136
0150 ; delay_us(500);
0150 04EF ldi R16,500
0152 11E0 ldi R17,1
0154 55DF xcall _delay_us
0156 .dbline 137
0156 ; PORTB|=1<<RESET;
0156 C79A sbi 0x18,7
0158 .dbline -2
0158 L32:
0158 .dbline 0 ; func end
0158 0895 ret
015A .dbend
015A .dbfunc e SPI_TranByte _SPI_TranByte fc
015A ; cData -> R16
.even
015A _SPI_TranByte::
015A .dbline -1
015A .dbline 141
015A ; }
015A ; //主模式下发送一个字节或接收一个字节
015A ; unsigned char SPI_TranByte(unsigned char cData)
015A ; {
015A .dbline 142
015A ; SPDR=cData;
015A 0FB9 out 0xf,R16
015C L34:
015C .dbline 143
015C L35:
015C .dbline 143
015C ; while(!(SPSR&0x80));
015C 779B sbis 0xe,7
015E FECF rjmp L34
0160 .dbline 144
0160 ; return SPDR;
0160 0FB1 in R16,0xf
0162 .dbline -2
0162 L33:
0162 .dbline 0 ; func end
0162 0895 ret
0164 .dbsym r cData 16 c
0164 .dbend
0164 .dbfunc e Read_Testfile _Read_Testfile fV
0164 ; j -> <dead>
0164 ; i -> <dead>
0164 ; len -> R22,R23
0164 ; File -> R20,R21
.even
0164 _Read_Testfile::
0164 0E940000 xcall push_gset2
0168 B901 movw R22,R18
016A A801 movw R20,R16
016C .dbline -1
016C .dbline 148
016C ; }
016C ;
016C ; void Read_Testfile(char *File ,int len )
016C ; {
016C L38:
016C .dbline 150
016C L39:
016C .dbline 150
016C ; unsigned char i,j;
016C ; while(!(PINB&0x20));
016C B59B sbis 0x16,5
016E FECF rjmp L38
0170 .dbline 151
0170 ; PORTB&=~(1<<CS);//使能 at45
0170 C498 cbi 0x18,4
0172 .dbline 152
0172 ; SPI_TranByte(0x3);
0172 03E0 ldi R16,3
0174 F2DF xcall _SPI_TranByte
0176 .dbline 153
0176 ; SPI_TranByte((char)(page_counter_rd>>6));//页地址PA11-PA6
0176 26E0 ldi R18,6
0178 30E0 ldi R19,0
017A 00910C00 lds R16,_page_counter_rd
017E 10910D00 lds R17,_page_counter_rd+1
0182 0E940000 xcall lsr16
0186 E9DF xcall _SPI_TranByte
0188 .dbline 154
0188 ; SPI_TranByte((char)((page_counter_rd<<2)|(page_offset_rd>>8)));////页地址PA5-PA0
0188 20900A00 lds R2,_page_offset_rd
018C 30900B00 lds R3,_page_offset_rd+1
0190 232C mov R2,R3
0192 3324 clr R3
0194 00910C00 lds R16,_page_counter_rd
0198 000F lsl R16
019A 111F rol R17
019C 000F lsl R16
019E 111F rol R17
01A0 0229 or R16,R2
01A2 1329 or R17,R3
01A4 DADF xcall _SPI_TranByte
01A6 .dbline 155
01A6 ; SPI_TranByte((char)page_offset_rd);
01A6 00910A00 lds R16,_page_offset_rd
01AA D7DF xcall _SPI_TranByte
01AC 32C0 xjmp L42
01AE L41:
01AE .dbline 157
01AE ; while(len)
01AE ; {
01AE .dbline 158
01AE ; SPDR=0;
01AE 2224 clr R2
01B0 2FB8 out 0xf,R2
01B2 L44:
01B2 .dbline 159
01B2 L45:
01B2 .dbline 159
01B2 ; while(!(SPSR&0x80));
01B2 779B sbis 0xe,7
01B4 FECF rjmp L44
01B6 .dbline 160
01B6 ; *File=SPDR;
01B6 2FB0 in R2,0xf
01B8 FA01 movw R30,R20
01BA 2082 std z+0,R2
01BC .dbline 161
01BC ; File++;
01BC 4F5F subi R20,255 ; offset = 1
01BE 5F4F sbci R21,255
01C0 .dbline 162
01C0 ; len--;
01C0 6150 subi R22,1
01C2 7040 sbci R23,0
01C4 .dbline 163
01C4 ; page_offset_rd++;
01C4 80910A00 lds R24,_page_offset_rd
01C8 90910B00 lds R25,_page_offset_rd+1
01CC 0196 adiw R24,1
01CE 90930B00 sts _page_offset_rd+1,R25
01D2 80930A00 sts _page_offset_rd,R24
01D6 .dbline 164
01D6 ; if(page_offset_rd>=528)
01D6 8031 cpi R24,16
01D8 E2E0 ldi R30,2
01DA 9E07 cpc R25,R30
01DC D0F0 brlo L47
01DE .dbline 165
01DE ; {
01DE .dbline 166
01DE ; page_offset_rd=0;
01DE 2224 clr R2
01E0 3324 clr R3
01E2 30920B00 sts _page_offset_rd+1,R3
01E6 20920A00 sts _page_offset_rd,R2
01EA .dbline 167
01EA ; page_counter_rd++;
01EA 80910C00 lds R24,_page_counter_rd
01EE 90910D00 lds R25,_page_counter_rd+1
01F2 0196 adiw R24,1
01F4 90930D00 sts _page_counter_rd+1,R25
01F8 80930C00 sts _page_counter_rd,R24
01FC .dbline 168
01FC ; if(page_counter_rd>=4096){quit();page_counter_rd=3849;}
01FC 8030 cpi R24,0
01FE E0E1 ldi R30,16
0200 9E07 cpc R25,R30
0202 38F0 brlo L49
0204 .dbline 168
0204 .dbline 168
0204 60DF xcall _quit
0206 .dbline 168
0206 89E0 ldi R24,3849
0208 9FE0 ldi R25,15
020A 90930D00 sts _page_counter_rd+1,R25
020E 80930C00 sts _page_counter_rd,R24
0212 .dbline 168
0212 L49:
0212 .dbline 169
0212 ; }
0212 L47:
0212 .dbline 171
0212 L42:
0212 .dbline 156
0212 6030 cpi R22,0
0214 6707 cpc R22,R23
0216 59F6 brne L41
0218 X3:
0218 .dbline 172
0218 ;
0218 ; }
0218 ; PORTB|=1<<CS;
0218 C49A sbi 0x18,4
021A .dbline -2
021A L37:
021A 0E940000 xcall pop_gset2
021E .dbline 0 ; func end
021E 0895 ret
0220 .dbsym l j 1 c
0220 .dbsym l i 1 c
0220 .dbsym r len 22 I
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -