📄 at45db021.lis
字号:
.module AT45DB021.c
.area text(rom, con, rel)
0000 .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\AT45DB021.c
0000 .dbfunc e SPI_MOSI _SPI_MOSI fV
0000 ; flag -> R16
.even
0000 _SPI_MOSI::
0000 .dbline -1
0000 .dbline 8
0000 ; #include "AT45DB021.h"
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #include "M8Demo.h"
0000 ; #include "Uart.h"
0000 ;
0000 ; void SPI_MOSI(unsigned char flag)
0000 ; {
0000 .dbline 9
0000 ; if(flag)
0000 0023 tst R16
0002 11F0 breq L2
0004 .dbline 10
0004 ; PORTC|=0x02;
0004 A99A sbi 0x15,1
0006 03C0 rjmp L3
0008 L2:
0008 .dbline 12
0008 85B3 in R24,0x15
000A 8D77 andi R24,125
000C 85BB out 0x15,R24
000E L3:
000E .dbline -2
000E L1:
000E .dbline 0 ; func end
000E 0895 ret
0010 .dbsym r flag 16 c
0010 .dbend
0010 .dbfunc e SPI_MISO _SPI_MISO fc
.even
0010 _SPI_MISO::
0010 .dbline -1
0010 .dbline 15
0010 ; else
0010 ; PORTC&=0x7D;
0010 ; }
0010 ; unsigned char SPI_MISO(void)
0010 ; {
0010 .dbline 16
0010 ; if ((PINC & 0x04))
0010 9A9B sbis 0x13,2
0012 02C0 rjmp L5
0014 .dbline 18
0014 ;
0014 ; return 1;
0014 01E0 ldi R16,1
0016 01C0 rjmp L4
0018 L5:
0018 .dbline 20
0018 ; else
0018 ; return 0;
0018 0027 clr R16
001A .dbline -2
001A L4:
001A .dbline 0 ; func end
001A 0895 ret
001C .dbend
001C .dbfunc e SPI_SCK _SPI_SCK fV
001C ; flag -> R16
.even
001C _SPI_SCK::
001C .dbline -1
001C .dbline 24
001C ;
001C ; }
001C ; void SPI_SCK(unsigned char flag)
001C ; {
001C .dbline 25
001C ; if(flag)
001C 0023 tst R16
001E 11F0 breq L8
0020 .dbline 26
0020 ; PORTC|=0x08;
0020 AB9A sbi 0x15,3
0022 03C0 rjmp L9
0024 L8:
0024 .dbline 28
0024 85B3 in R24,0x15
0026 8777 andi R24,119
0028 85BB out 0x15,R24
002A L9:
002A .dbline -2
002A L7:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbsym r flag 16 c
002C .dbend
002C .dbfunc e SPI_CS _SPI_CS fV
002C ; flag -> R16
.even
002C _SPI_CS::
002C .dbline -1
002C .dbline 31
002C ; else
002C ; PORTC&=0x77;
002C ; }
002C ; void SPI_CS(unsigned char flag)
002C ; {
002C .dbline 32
002C ; if(flag)
002C 0023 tst R16
002E 11F0 breq L11
0030 .dbline 33
0030 ; PORTC|=0x01;
0030 A89A sbi 0x15,0
0032 03C0 rjmp L12
0034 L11:
0034 .dbline 35
0034 85B3 in R24,0x15
0036 8E77 andi R24,126
0038 85BB out 0x15,R24
003A L12:
003A .dbline -2
003A L10:
003A .dbline 0 ; func end
003A 0895 ret
003C .dbsym r flag 16 c
003C .dbend
003C .dbfunc e SPI_Start _SPI_Start fV
.even
003C _SPI_Start::
003C .dbline -1
003C .dbline 39
003C ; else
003C ; PORTC&=0x7E;
003C ; }
003C ;
003C ; void SPI_Start(void)
003C ; {
003C .dbline 40
003C ; DDRC|=0x7F;
003C 84B3 in R24,0x14
003E 8F67 ori R24,127
0040 84BB out 0x14,R24
0042 .dbline 41
0042 ; DDRC&=0x7B;
0042 84B3 in R24,0x14
0044 8B77 andi R24,123
0046 84BB out 0x14,R24
0048 .dbline 42
0048 ; PORTC=0x7F;
0048 8FE7 ldi R24,127
004A 85BB out 0x15,R24
004C .dbline 44
004C ; //Delay(100);
004C ; SPI_CS(1);
004C 01E0 ldi R16,1
004E EEDF rcall _SPI_CS
0050 .dbline 45
0050 ; SPI_SCK(1);
0050 01E0 ldi R16,1
0052 E4DF rcall _SPI_SCK
0054 .dbline 46
0054 ; SPI_MOSI(1);
0054 01E0 ldi R16,1
0056 D4DF rcall _SPI_MOSI
0058 .dbline 47
0058 ; SPI_CS(0);
0058 0027 clr R16
005A E8DF rcall _SPI_CS
005C .dbline -2
005C L13:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbend
005E .dbfunc e SPI_End _SPI_End fV
.even
005E _SPI_End::
005E .dbline -1
005E .dbline 50
005E ; }
005E ; void SPI_End(void)
005E ; {
005E .dbline 51
005E ; DDRC|=0x7F;
005E 84B3 in R24,0x14
0060 8F67 ori R24,127
0062 84BB out 0x14,R24
0064 .dbline 52
0064 ; DDRC&=0x79;
0064 84B3 in R24,0x14
0066 8977 andi R24,121
0068 84BB out 0x14,R24
006A .dbline 53
006A ; Delay(100);
006A 04E6 ldi R16,100
006C 10E0 ldi R17,0
006E 00D0 rcall _Delay
0070 .dbline 54
0070 ; SPI_CS(1);
0070 01E0 ldi R16,1
0072 DCDF rcall _SPI_CS
0074 .dbline 55
0074 ; SPI_SCK(1);
0074 01E0 ldi R16,1
0076 D2DF rcall _SPI_SCK
0078 .dbline 56
0078 ; SPI_MOSI(1);
0078 01E0 ldi R16,1
007A C2DF rcall _SPI_MOSI
007C .dbline 57
007C ; SPI_CS(1);
007C 01E0 ldi R16,1
007E D6DF rcall _SPI_CS
0080 .dbline -2
0080 L14:
0080 .dbline 0 ; func end
0080 0895 ret
0082 .dbend
0082 .dbfunc e SPI_Send8BitData _SPI_Send8BitData fV
0082 ; i -> R20
0082 ; Send_data -> R22
.even
0082 _SPI_Send8BitData::
0082 00D0 rcall push_gset2
0084 602F mov R22,R16
0086 .dbline -1
0086 .dbline 60
0086 ; }
0086 ; void SPI_Send8BitData(unsigned char Send_data)
0086 ; {
0086 .dbline 63
0086 ; unsigned char i;
0086 ;
0086 ; for(i=8;i>0;i--)
0086 48E0 ldi R20,8
0088 18C0 rjmp L19
008A L16:
008A .dbline 64
008A ; { Delay(DELAYTIMER );
008A .dbline 64
008A 03E0 ldi R16,3
008C 10E0 ldi R17,0
008E 00D0 rcall _Delay
0090 .dbline 65
0090 ; SPI_SCK(0);
0090 0027 clr R16
0092 C4DF rcall _SPI_SCK
0094 .dbline 66
0094 ; Delay(DELAYTIMER );
0094 03E0 ldi R16,3
0096 10E0 ldi R17,0
0098 00D0 rcall _Delay
009A .dbline 67
009A ; if((Send_data&0x80)==0x80)
009A 862F mov R24,R22
009C 8078 andi R24,128
009E 8038 cpi R24,128
00A0 19F4 brne L20
00A2 .dbline 68
00A2 ; SPI_MOSI(1);
00A2 01E0 ldi R16,1
00A4 ADDF rcall _SPI_MOSI
00A6 02C0 rjmp L21
00A8 L20:
00A8 .dbline 70
00A8 ; else
00A8 ; SPI_MOSI(0);
00A8 0027 clr R16
00AA AADF rcall _SPI_MOSI
00AC L21:
00AC .dbline 71
00AC 660F lsl R22
00AE .dbline 72
00AE 03E0 ldi R16,3
00B0 10E0 ldi R17,0
00B2 00D0 rcall _Delay
00B4 .dbline 73
00B4 01E0 ldi R16,1
00B6 B2DF rcall _SPI_SCK
00B8 .dbline 74
00B8 L17:
00B8 .dbline 63
00B8 4A95 dec R20
00BA L19:
00BA .dbline 63
00BA 2224 clr R2
00BC 2416 cp R2,R20
00BE 28F3 brlo L16
00C0 .dbline 75
00C0 ; Send_data=Send_data<<1;
00C0 ; Delay(DELAYTIMER );
00C0 ; SPI_SCK(1);
00C0 ; }
00C0 ; Delay(DELAYTIMER );
00C0 03E0 ldi R16,3
00C2 10E0 ldi R17,0
00C4 00D0 rcall _Delay
00C6 .dbline -2
00C6 L15:
00C6 00D0 rcall pop_gset2
00C8 .dbline 0 ; func end
00C8 0895 ret
00CA .dbsym r i 20 c
00CA .dbsym r Send_data 22 c
00CA .dbend
00CA .dbfunc e SPI_Receive8BitData _SPI_Receive8BitData fc
00CA ; i -> R22
00CA ; receivedata -> R20
.even
00CA _SPI_Receive8BitData::
00CA 00D0 rcall push_gset2
00CC .dbline -1
00CC .dbline 78
00CC ; }
00CC ; unsigned char SPI_Receive8BitData(void)
00CC ; {
00CC .dbline 80
00CC ; unsigned char i,receivedata;
00CC ; receivedata=0;
00CC 4427 clr R20
00CE .dbline 81
00CE ; for(i=0;i<7;i++)
00CE 6627 clr R22
00D0 13C0 rjmp L26
00D2 L23:
00D2 .dbline 82
00D2 ; {
00D2 .dbline 83
00D2 ; Delay(DELAYTIMER );
00D2 03E0 ldi R16,3
00D4 10E0 ldi R17,0
00D6 00D0 rcall _Delay
00D8 .dbline 84
00D8 ; SPI_SCK(0);
00D8 0027 clr R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -