📄 spi.lis
字号:
.module SPI.C
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile J:\AVRpractice\BOOK\SPI\SPI.C
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile J:\AVRpractice\BOOK\SPI\SPI.C
000C .blkb 2
.area idata
000C 0000 .byte 0,0
.area data(ram, con, rel)
000E .dbfile J:\AVRpractice\BOOK\SPI\SPI.C
000E .dbsym e Data _Data A[4:4]c
.area text(rom, con, rel)
0000 .dbfile J:\AVRpractice\BOOK\SPI\SPI.C
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20
0000 ; i -> R16,R17
.even
0000 _DelayMs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 10
0002 ; #include<io8535v.h>
0002 ; #include<macros.h>
0002 ; #define uchar unsigned char
0002 ; #define uint unsigned int
0002 ;
0002 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0002 ; uchar Data[4]={0,0,0,0};
0002 ;
0002 ; void DelayMs(uint i)
0002 ; {uchar j;
0002 .dbline 11
0002 ; for(;i!=0;i--)
0002 07C0 rjmp L5
0004 L2:
0004 .dbline 12
0004 .dbline 12
0004 40ED ldi R20,208
0006 01C0 rjmp L9
0008 L6:
0008 .dbline 12
0008 .dbline 12
0008 .dbline 12
0008 L7:
0008 .dbline 12
0008 4A95 dec R20
000A L9:
000A .dbline 12
000A 4423 tst R20
000C E9F7 brne L6
000E .dbline 12
000E L3:
000E .dbline 11
000E 0150 subi R16,1
0010 1040 sbci R17,0
0012 L5:
0012 .dbline 11
0012 0030 cpi R16,0
0014 0107 cpc R16,R17
0016 B1F7 brne L2
0018 X0:
0018 .dbline -2
0018 .dbline 13
0018 ; {for(j=2000;j!=0;j--) {;}}
0018 ; }
0018 L1:
0018 00D0 rcall pop_gset1
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r j 20 c
001C .dbsym r i 16 i
001C .dbend
001C .dbfunc e Display _Display fV
001C ; sel -> R20
001C ; i -> R22
001C ; p -> R10,R11
.even
001C _Display::
001C 00D0 rcall push_gset3
001E A02E mov R10,R16
0020 B12E mov R11,R17
0022 .dbline -1
0022 .dbline 16
0022 ;
0022 ; void Display(uchar *p)
0022 ; {uchar i,sel=0x01;
0022 .dbline 16
0022 41E0 ldi R20,1
0024 .dbline 17
0024 ; for(i=0;i<4;i++)
0024 6627 clr R22
0026 17C0 rjmp L14
0028 L11:
0028 .dbline 18
0028 .dbline 18
0028 4BBB out 0x1b,R20
002A .dbline 19
002A E62F mov R30,R22
002C FF27 clr R31
002E EA0D add R30,R10
0030 FB1D adc R31,R11
0032 E081 ldd R30,z+0
0034 FF27 clr R31
0036 80E0 ldi R24,<_Table
0038 90E0 ldi R25,>_Table
003A E80F add R30,R24
003C F91F adc R31,R25
003E 2080 ldd R2,z+0
0040 3324 clr R3
0042 8FEF ldi R24,255
0044 90E0 ldi R25,0
0046 8219 sub R24,R2
0048 9309 sbc R25,R3
004A 85BB out 0x15,R24
004C .dbline 20
004C 0AE0 ldi R16,10
004E 10E0 ldi R17,0
0050 D7DF rcall _DelayMs
0052 .dbline 21
0052 440F lsl R20
0054 .dbline 22
0054 L12:
0054 .dbline 17
0054 6395 inc R22
0056 L14:
0056 .dbline 17
0056 6430 cpi R22,4
0058 38F3 brlo L11
005A .dbline -2
005A .dbline 23
005A ; {PORTA=sel;
005A ; PORTC=0xff-Table[p[i]];
005A ; DelayMs(10);
005A ; sel=sel<<1;
005A ; }
005A ; }
005A L10:
005A 00D0 rcall pop_gset3
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r sel 20 c
005E .dbsym r i 22 c
005E .dbsym r p 10 pc
005E .dbend
005E .dbfunc e DelayNOP _DelayNOP fV
005E ; i -> R16
.even
005E _DelayNOP::
005E .dbline -1
005E .dbline 26
005E ;
005E ; void DelayNOP(uchar i)
005E ; {for(;i!=0;i--)
005E .dbline 26
005E 02C0 rjmp L19
0060 L16:
0060 .dbline 27
0060 .dbline 27
0060 0000 nop
0062 .dbline 27
0062 L17:
0062 .dbline 26
0062 0A95 dec R16
0064 L19:
0064 .dbline 26
0064 0023 tst R16
0066 E1F7 brne L16
0068 .dbline -2
0068 .dbline 28
0068 ; { NOP();}
0068 ; }
0068 L15:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r i 16 c
006A .dbend
006A .dbfunc e Convert _Convert fV
006A ; i -> R22
006A ; p -> R20,R21
.even
006A _Convert::
006A 00D0 rcall push_gset2
006C 622F mov R22,R18
006E 402F mov R20,R16
0070 512F mov R21,R17
0072 .dbline -1
0072 .dbline 31
0072 ;
0072 ; void Convert(uchar *p,uchar i)
0072 ; {p[0]=0;
0072 .dbline 31
0072 2224 clr R2
0074 E42F mov R30,R20
0076 F52F mov R31,R21
0078 2082 std z+0,R2
007A .dbline 32
007A ; p[1]=i/100;
007A 14E6 ldi R17,100
007C 062F mov R16,R22
007E 00D0 rcall div8u
0080 E42F mov R30,R20
0082 F52F mov R31,R21
0084 0183 std z+1,R16
0086 .dbline 33
0086 ; p[2]=(i-p[1]*100)/10;
0086 E42F mov R30,R20
0088 F52F mov R31,R21
008A 1181 ldd R17,z+1
008C 04E6 ldi R16,100
008E 00D0 rcall mpy8s
0090 202E mov R2,R16
0092 062F mov R16,R22
0094 0219 sub R16,R2
0096 1AE0 ldi R17,10
0098 00D0 rcall div8u
009A E42F mov R30,R20
009C F52F mov R31,R21
009E 0283 std z+2,R16
00A0 .dbline 34
00A0 ; p[3]=i-p[1]*100-p[2]*10;
00A0 E42F mov R30,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -