📄 spi.lis
字号:
00A2 F52F mov R31,R21
00A4 1181 ldd R17,z+1
00A6 04E6 ldi R16,100
00A8 00D0 rcall mpy8s
00AA 262E mov R2,R22
00AC 201A sub R2,R16
00AE E42F mov R30,R20
00B0 F52F mov R31,R21
00B2 1281 ldd R17,z+2
00B4 0AE0 ldi R16,10
00B6 00D0 rcall mpy8s
00B8 201A sub R2,R16
00BA E42F mov R30,R20
00BC F52F mov R31,R21
00BE 2382 std z+3,R2
00C0 .dbline -2
00C0 .dbline 35
00C0 ; }
00C0 L20:
00C0 00D0 rcall pop_gset2
00C2 .dbline 0 ; func end
00C2 0895 ret
00C4 .dbsym r i 22 c
00C4 .dbsym r p 20 pc
00C4 .dbend
00C4 .dbfunc e Write_Byte _Write_Byte fV
00C4 ; clear -> R20
00C4 ; Data -> R18
00C4 ; Address -> R16
.even
00C4 _Write_Byte::
00C4 00D0 rcall push_gset1
00C6 .dbline -1
00C6 .dbline 38
00C6 ;
00C6 ; void Write_Byte(uchar Address,uchar Data)
00C6 ; {uchar clear;
00C6 .dbline 39
00C6 ; PORTB=PORTB|0x10; //使能SPI器件
00C6 C49A sbi 0x18,4
00C8 .dbline 40
00C8 ; SPDR=Address;
00C8 0FB9 out 0xf,R16
00CA L22:
00CA .dbline 41
00CA .dbline 41
00CA .dbline 41
00CA L23:
00CA .dbline 41
00CA ; while(!(SPSR&0x80)) {;}
00CA 779B sbis 0xe,7
00CC FECF rjmp L22
00CE .dbline 42
00CE ; clear=SPSR;
00CE 4EB1 in R20,0xe
00D0 .dbline 43
00D0 ; clear=SPDR;
00D0 4FB1 in R20,0xf
00D2 .dbline 44
00D2 ; SPDR=Data;
00D2 2FB9 out 0xf,R18
00D4 L25:
00D4 .dbline 45
00D4 .dbline 45
00D4 .dbline 45
00D4 L26:
00D4 .dbline 45
00D4 ; while(!(SPSR&0x80)) {;}
00D4 779B sbis 0xe,7
00D6 FECF rjmp L25
00D8 .dbline 46
00D8 ; clear=SPSR;
00D8 4EB1 in R20,0xe
00DA .dbline 47
00DA ; clear=SPDR;
00DA 4FB1 in R20,0xf
00DC .dbline 48
00DC ; PORTB=PORTB&0xef;
00DC 88B3 in R24,0x18
00DE 8F7E andi R24,239
00E0 88BB out 0x18,R24
00E2 .dbline -2
00E2 .dbline 49
00E2 ; }
00E2 L21:
00E2 00D0 rcall pop_gset1
00E4 .dbline 0 ; func end
00E4 0895 ret
00E6 .dbsym r clear 20 c
00E6 .dbsym r Data 18 c
00E6 .dbsym r Address 16 c
00E6 .dbend
00E6 .dbfunc e Read_Byte _Read_Byte fc
00E6 ; Data -> R20
00E6 ; clear -> R22
00E6 ; Address -> R16
.even
00E6 _Read_Byte::
00E6 00D0 rcall push_gset2
00E8 .dbline -1
00E8 .dbline 52
00E8 ;
00E8 ; uchar Read_Byte(uchar Address)
00E8 ; {uchar clear;
00E8 .dbline 54
00E8 ; uchar Data;
00E8 ; PORTB=PORTB|0x10;
00E8 C49A sbi 0x18,4
00EA .dbline 55
00EA ; SPDR=Address;
00EA 0FB9 out 0xf,R16
00EC L29:
00EC .dbline 56
00EC .dbline 56
00EC .dbline 56
00EC L30:
00EC .dbline 56
00EC ; while(!(SPSR&0x80)) {;}
00EC 779B sbis 0xe,7
00EE FECF rjmp L29
00F0 .dbline 57
00F0 ; clear=SPSR;
00F0 6EB1 in R22,0xe
00F2 .dbline 58
00F2 ; clear=SPDR;
00F2 6FB1 in R22,0xf
00F4 .dbline 59
00F4 ; SPDR=Address;//发空数据
00F4 0FB9 out 0xf,R16
00F6 L32:
00F6 .dbline 60
00F6 .dbline 60
00F6 .dbline 60
00F6 L33:
00F6 .dbline 60
00F6 ; while(!(SPSR&0x80)) {;}
00F6 779B sbis 0xe,7
00F8 FECF rjmp L32
00FA .dbline 61
00FA ; clear=SPSR;
00FA 6EB1 in R22,0xe
00FC .dbline 62
00FC ; Data=SPDR;
00FC 4FB1 in R20,0xf
00FE .dbline 63
00FE ; PORTB=PORTB&0xef;
00FE 88B3 in R24,0x18
0100 8F7E andi R24,239
0102 88BB out 0x18,R24
0104 .dbline 64
0104 ; return(Data);
0104 042F mov R16,R20
0106 .dbline -2
0106 L28:
0106 00D0 rcall pop_gset2
0108 .dbline 0 ; func end
0108 0895 ret
010A .dbsym r Data 20 c
010A .dbsym r clear 22 c
010A .dbsym r Address 16 c
010A .dbend
010A .dbfunc e main _main fV
010A ; value -> R20
.even
010A _main::
010A .dbline -1
010A .dbline 68
010A ; }
010A ;
010A ; void main(void)
010A ; {uchar value;
010A .dbline 69
010A ; DDRA=0xff;
010A 8FEF ldi R24,255
010C 8ABB out 0x1a,R24
010E .dbline 70
010E ; DDRC=0xff;
010E 84BB out 0x14,R24
0110 .dbline 71
0110 ; DDRB=0xbf;
0110 8FEB ldi R24,191
0112 87BB out 0x17,R24
0114 .dbline 72
0114 ; PORTA=0xff;
0114 8FEF ldi R24,255
0116 8BBB out 0x1b,R24
0118 .dbline 73
0118 ; PORTC=0x00;
0118 2224 clr R2
011A 25BA out 0x15,R2
011C .dbline 74
011C ; DelayMs(3000);
011C 08EB ldi R16,3000
011E 1BE0 ldi R17,11
0120 6FDF rcall _DelayMs
0122 .dbline 75
0122 ; PORTC=0xff;
0122 8FEF ldi R24,255
0124 85BB out 0x15,R24
0126 .dbline 76
0126 ; SPCR=0x5c;//0101 1100
0126 8CE5 ldi R24,92
0128 8DB9 out 0xd,R24
012A .dbline 77
012A ; Write_Byte(0x80,0xf0);//8位,自由转换模式
012A 20EF ldi R18,240
012C 00E8 ldi R16,128
012E CADF rcall _Write_Byte
0130 0CC0 rjmp L37
0132 L36:
0132 .dbline 79
0132 .dbline 79
0132 01E0 ldi R16,1
0134 D8DF rcall _Read_Byte
0136 .dbline 80
0136 02E0 ldi R16,2
0138 D6DF rcall _Read_Byte
013A 402F mov R20,R16
013C .dbline 81
013C 242F mov R18,R20
013E 00E0 ldi R16,<_Data
0140 10E0 ldi R17,>_Data
0142 93DF rcall _Convert
0144 .dbline 82
0144 00E0 ldi R16,<_Data
0146 10E0 ldi R17,>_Data
0148 69DF rcall _Display
014A .dbline 82
014A L37:
014A .dbline 78
014A F3CF rjmp L36
014C X1:
014C .dbline -2
014C .dbline 83
014C ; while(1)
014C ; {value=Read_Byte(0x01);
014C ; value=Read_Byte(0x02);
014C ; Convert(Data,value);
014C ; Display(Data);}
014C ; }
014C L35:
014C .dbline 0 ; func end
014C 0895 ret
014E .dbsym r value 20 c
014E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -