📄 at45db~1.lis
字号:
.module at45db161.c
.area text(rom, con, rel)
0000 .dbfile D:\gkdoor\oldboardsoftware\at45db161.c
0000 .dbfunc e read_byte _read_byte fc
0000 ; data -> R16
0000 ; i -> R18
.even
0000 _read_byte::
0000 .dbline -1
0000 .dbline 6
0000 ; #include <d:\gkdoor\oldboardsoftware\main.h>
0000 ; #include <d:\gkdoor\oldboardsoftware\at45db161.h>
0000 ; #include <iom128v.h>
0000 ; #include <macros.h>
0000 ; unsigned char read_byte(void)
0000 ; {
0000 .dbline 7
0000 ; unsigned char i,data=0;
0000 0027 clr R16
0002 .dbline 8
0002 ; SET_45IO();
0002 8D98 cbi 0x11,5
0004 .dbline 9
0004 ; for (i=0;i<8;i++)
0004 2227 clr R18
0006 09C0 xjmp L5
0008 L2:
0008 .dbline 10
0008 ; {
0008 .dbline 11
0008 ; SET_45SCK();
0008 8E98 cbi 0x11,6
000A .dbline 12
000A ; data<<=1;
000A 000F lsl R16
000C .dbline 13
000C ; if((PIND&0x20)==0x20) // sda bit input data.
000C 80B3 in R24,0x10
000E 8072 andi R24,32
0010 8032 cpi R24,32
0012 09F4 brne L6
0014 .dbline 14
0014 ; data|=1;
0014 0160 ori R16,1
0016 L6:
0016 .dbline 15
0016 8E9A sbi 0x11,6
0018 .dbline 16
0018 L3:
0018 .dbline 9
0018 2395 inc R18
001A L5:
001A .dbline 9
001A 2830 cpi R18,8
001C A8F3 brlo L2
001E .dbline 17
001E ; CLEAR_45SCK();
001E ; }
001E ; return data;
001E .dbline -2
001E L1:
001E .dbline 0 ; func end
001E 0895 ret
0020 .dbsym r data 16 c
0020 .dbsym r i 18 c
0020 .dbend
0020 .dbfunc e write_byte _write_byte fV
0020 ; i -> R20
0020 ; data1 -> R22
.even
0020 _write_byte::
0020 0E940000 xcall push_gset2
0024 602F mov R22,R16
0026 .dbline -1
0026 .dbline 20
0026 ; }
0026 ; void write_byte(unsigned char data1)
0026 ; {
0026 .dbline 22
0026 ; unsigned char i;
0026 ; for(i=0;i<8;i++)
0026 4427 clr R20
0028 08C0 xjmp L12
002A L9:
002A .dbline 23
002A ; {
002A .dbline 24
002A ; if (data1&0x80)
002A 67FF sbrs R22,7
002C 02C0 rjmp L13
002E .dbline 25
002E ; SET_45IO();
002E 8D98 cbi 0x11,5
0030 01C0 xjmp L14
0032 L13:
0032 .dbline 27
0032 ; else
0032 ; CLEAR_45IO();
0032 8D9A sbi 0x11,5
0034 L14:
0034 .dbline 28
0034 07D0 xcall _CLOCK1
0036 .dbline 29
0036 660F lsl R22
0038 .dbline 30
0038 L10:
0038 .dbline 22
0038 4395 inc R20
003A L12:
003A .dbline 22
003A 4830 cpi R20,8
003C B0F3 brlo L9
003E .dbline -2
003E .dbline 31
003E ; CLOCK1();
003E ; data1<<=1;
003E ; }
003E ; }
003E L8:
003E 0E940000 xcall pop_gset2
0042 .dbline 0 ; func end
0042 0895 ret
0044 .dbsym r i 20 c
0044 .dbsym r data1 22 c
0044 .dbend
0044 .dbfunc e CLOCK1 _CLOCK1 fV
.even
0044 _CLOCK1::
0044 .dbline -1
0044 .dbline 33
0044 ; void CLOCK1(void)
0044 ; {
0044 .dbline 34
0044 ; SET_45SCK();
0044 8E98 cbi 0x11,6
0046 .dbline 35
0046 ; DELAY();
0046 02D0 xcall _DELAY
0048 .dbline 36
0048 ; CLEAR_45SCK();
0048 8E9A sbi 0x11,6
004A .dbline -2
004A .dbline 37
004A ; }
004A L15:
004A .dbline 0 ; func end
004A 0895 ret
004C .dbend
004C .dbfunc e DELAY _DELAY fV
004C ; i -> R16
.even
004C _DELAY::
004C .dbline -1
004C .dbline 39
004C ; void DELAY(void)
004C ; {
004C .dbline 41
004C 0027 clr R16
004E 01C0 xjmp L20
0050 L17:
0050 .dbline 41
0050 L18:
0050 .dbline 41
0050 0395 inc R16
0052 L20:
0052 .dbline 41
0052 ; unsigned char i;
0052 ; for (i=0;i<2;i++);
0052 0230 cpi R16,2
0054 E8F3 brlo L17
0056 .dbline -2
0056 .dbline 42
0056 ; }
0056 L16:
0056 .dbline 0 ; func end
0056 0895 ret
0058 .dbsym r i 16 c
0058 .dbend
0058 .dbfunc e read_status _read_status fc
0058 ; temp2 -> R20
.even
0058 _read_status::
0058 0E940000 xcall push_gset1
005C .dbline -1
005C .dbline 44
005C ; unsigned char read_status(void)
005C ; {
005C .dbline 46
005C ; unsigned char temp2;
005C ; CLEAR_45CS();
005C 8C9A sbi 0x11,4
005E .dbline 47
005E ; CLEAR_45SCK();
005E 8E9A sbi 0x11,6
0060 .dbline 48
0060 ; SET_45IO();
0060 8D98 cbi 0x11,5
0062 .dbline 49
0062 ; write_byte(0x57);
0062 07E5 ldi R16,87
0064 DDDF xcall _write_byte
0066 .dbline 50
0066 ; CLOCK1();
0066 EEDF xcall _CLOCK1
0068 .dbline 51
0068 ; NOP();
0068 0000 nop
006A .dbline 52
006A ; temp2=read_byte();
006A CADF xcall _read_byte
006C 402F mov R20,R16
006E .dbline 53
006E ; SET_45CS();
006E 8C98 cbi 0x11,4
0070 .dbline 54
0070 ; return temp2;
0070 .dbline -2
0070 L21:
0070 0E940000 xcall pop_gset1
0074 .dbline 0 ; func end
0074 0895 ret
0076 .dbsym r temp2 20 c
0076 .dbend
0076 .dbfunc e write_buffer1 _write_buffer1 fV
0076 ; i -> R20,R21
0076 ; pt -> R22,R23
0076 ; bitnum -> R10,R11
.even
0076 _write_buffer1::
0076 0E940000 xcall push_gset3
007A B901 movw R22,R18
007C 5801 movw R10,R16
007E .dbline -1
007E .dbline 57
007E ; }
007E ; void write_buffer1(unsigned int bitnum,unsigned char *pt)
007E ; {
007E .dbline 59
007E ; unsigned int i;
007E ; CLEAR_45CS();
007E 8C9A sbi 0x11,4
0080 .dbline 60
0080 ; CLEAR_45SCK();
0080 8E9A sbi 0x11,6
0082 .dbline 61
0082 ; SET_45IO();
0082 8D98 cbi 0x11,5
0084 .dbline 62
0084 ; write_byte(0x84);
0084 04E8 ldi R16,132
0086 CCDF xcall _write_byte
0088 .dbline 63
0088 ; write_byte(0x00);
0088 0027 clr R16
008A CADF xcall _write_byte
008C .dbline 64
008C ; i=bitnum>>8;
008C A501 movw R20,R10
008E 452F mov R20,R21
0090 5527 clr R21
0092 .dbline 65
0092 ; write_byte((unsigned char)i);
0092 042F mov R16,R20
0094 C5DF xcall _write_byte
0096 .dbline 66
0096 ; write_byte((unsigned char)bitnum);
0096 0A2D mov R16,R10
0098 C3DF xcall _write_byte
009A .dbline 67
009A ; for(i=0;i<528;i++)
009A 4427 clr R20
009C 5527 clr R21
009E 06C0 xjmp L26
00A0 L23:
00A0 .dbline 68
00A0 FB01 movw R30,R22
00A2 0191 ld R16,Z+
00A4 BF01 movw R22,R30
00A6 BCDF xcall _write_byte
00A8 L24:
00A8 .dbline 67
00A8 4F5F subi R20,255 ; offset = 1
00AA 5F4F sbci R21,255
00AC L26:
00AC .dbline 67
00AC 4031 cpi R20,16
00AE E2E0 ldi R30,2
00B0 5E07 cpc R21,R30
00B2 B0F3 brlo L23
00B4 .dbline 69
00B4 ; write_byte(*pt++);
00B4 ; DELAY();
00B4 CBDF xcall _DELAY
00B6 .dbline 70
00B6 ; SET_45CS();
00B6 8C98 cbi 0x11,4
00B8 .dbline -2
00B8 .dbline 71
00B8 ; }
00B8 L22:
00B8 0E940000 xcall pop_gset3
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbsym r i 20 i
00BE .dbsym r pt 22 pc
00BE .dbsym r bitnum 10 i
00BE .dbend
00BE .dbfunc e write_mainmemory _write_mainmemory fV
00BE ; i -> R20,R21
00BE ; pt -> R22,R23
00BE ; pagenum -> R10,R11
.even
00BE _write_mainmemory::
00BE 0E940000 xcall push_gset3
00C2 B901 movw R22,R18
00C4 5801 movw R10,R16
00C6 .dbline -1
00C6 .dbline 73
00C6 ; void write_mainmemory(unsigned int pagenum,unsigned char *pt)
00C6 ; {
00C6 .dbline 75
00C6 ; unsigned int i;
00C6 ; CLEAR_45CS();
00C6 8C9A sbi 0x11,4
00C8 .dbline 76
00C8 ; SET_45IO();
00C8 8D98 cbi 0x11,5
00CA .dbline 77
00CA ; CLEAR_45SCK();
00CA 8E9A sbi 0x11,6
00CC .dbline 78
00CC ; write_byte(0x82);
00CC 02E8 ldi R16,130
00CE A8DF xcall _write_byte
00D0 .dbline 79
00D0 ; i=pagenum>>6;
00D0 26E0 ldi R18,6
00D2 30E0 ldi R19,0
00D4 8501 movw R16,R10
00D6 0E940000 xcall lsr16
00DA .dbline 80
00DA ; write_byte((unsigned char)i);
00DA A2DF xcall _write_byte
00DC .dbline 81
00DC ; i=pagenum<<2;
00DC A501 movw R20,R10
00DE 440F lsl R20
00E0 551F rol R21
00E2 440F lsl R20
00E4 551F rol R21
00E6 .dbline 82
00E6 ; write_byte((unsigned char)i);
00E6 042F mov R16,R20
00E8 9BDF xcall _write_byte
00EA .dbline 83
00EA ; write_byte(0x00);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -