📄 1.lst
字号:
__text_start:
__start:
002F E5CF LDI R28,0x5F
0030 E0D4 LDI R29,4
0031 BFCD OUT 0x3D,R28
0032 BFDE OUT 0x3E,R29
0033 51CE SUBI R28,0x1E
0034 40D0 SBCI R29,0
0035 EA0A LDI R16,0xAA
0036 8308 STD Y+0,R16
0037 2400 CLR R0
0038 E6EA LDI R30,0x6A
0039 E0F0 LDI R31,0
003A E010 LDI R17,0
003B 36EA CPI R30,0x6A
003C 07F1 CPC R31,R17
003D F011 BEQ 0x0040
003E 9201 ST R0,Z+
003F CFFB RJMP 0x003B
0040 8300 STD Z+0,R16
0041 E5E4 LDI R30,0x54
0042 E0F0 LDI R31,0
0043 E6A0 LDI R26,0x60
0044 E0B0 LDI R27,0
0045 E010 LDI R17,0
0046 35EE CPI R30,0x5E
0047 07F1 CPC R31,R17
0048 F021 BEQ 0x004D
0049 95C8 LPM
004A 9631 ADIW R30,1
004B 920D ST R0,X+
004C CFF9 RJMP 0x0046
004D 940E007C CALL _main
_exit:
004F CFFF RJMP _exit
FILE: E:\MYAVRW~1\SPI双~1\1.c
(0001) #include < iom16v.h>
(0002) #include <macros.h>
(0003) unsigned char disp[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
(0004) void delayms(void)
(0005) {
(0006) char a;
(0007) for(a=0;a<141;a++)
_delayms:
a --> R16
0050 2700 CLR R16
0051 C001 RJMP 0x0053
0052 9503 INC R16
0053 380D CPI R16,0x8D
0054 F3E8 BCS 0x0052
0055 9508 RET
_delay:
b --> R20
a --> R22
0056 940E009E CALL push_gset2
0058 01B8 MOVW R22,R16
(0008) ;
(0009) }
(0010) void delay(int a)
(0011) {
(0012) int b;
(0013) for(b=0;b<a;b++)
0059 2744 CLR R20
005A 2755 CLR R21
005B C003 RJMP 0x005F
(0014) delayms();
005C DFF3 RCALL _delayms
005D 5F4F SUBI R20,0xFF
005E 4F5F SBCI R21,0xFF
005F 1746 CP R20,R22
0060 0757 CPC R21,R23
0061 F3D4 BLT 0x005C
0062 940E0095 CALL pop_gset2
0064 9508 RET
(0015) }
(0016) void Spi_init()
(0017) {
(0018) DDRB|=(1<<7)|(1<<5)|(1<<4);
_Spi_init:
0065 B387 IN R24,0x17
0066 6B80 ORI R24,0xB0
0067 BB87 OUT 0x17,R24
(0019) SPCR=0x73;
0068 E783 LDI R24,0x73
0069 B98D OUT 0x0D,R24
(0020) SPSR=0x00;
006A 2422 CLR R2
006B B82E OUT 0x0E,R2
006C 9508 RET
(0021) }
(0022) void Spi_Transmit(int a)
(0023) {
(0024) PORTB&=~(1<<4);
_Spi_Transmit:
a --> R16
006D 98C4 CBI 0x18,4
(0025) SPCR |= (1<<MSTR); // MSTR有时会被清零,这里强制进入主机模式
006E 9A6C SBI 0x0D,4
(0026) SPDR=a;
006F B90F OUT 0x0F,R16
(0027) while(SPSR^0X80);
0070 E880 LDI R24,0x80
0071 E090 LDI R25,0
0072 B02E IN R2,0x0E
0073 2433 CLR R3
0074 2628 EOR R2,R24
0075 2639 EOR R3,R25
0076 2022 TST R2
0077 F7C1 BNE 0x0070
0078 2033 TST R3
0079 F7B1 BNE 0x0070
(0028) PORTB|=(1<<4);
007A 9AC4 SBI 0x18,4
007B 9508 RET
(0029)
(0030) }
(0031)
(0032) void main()
(0033) {
(0034) unsigned char data;
(0035) DDRA=0x00;
_main:
data --> R20
007C 2422 CLR R2
007D BA2A OUT 0x1A,R2
(0036) PORTA=0xFF;
007E EF8F LDI R24,0xFF
007F BB8B OUT 0x1B,R24
(0037) DDRB=0xFF;
0080 BB87 OUT 0x17,R24
(0038) PORTB=0xFF;
0081 BB88 OUT 0x18,R24
(0039) DDRC=0x00;
0082 BA24 OUT 0x14,R2
(0040) PORTC=0x00;
0083 BA25 OUT 0x15,R2
(0041) DDRD=0x00;
0084 BA21 OUT 0x11,R2
(0042) PORTD=0x00;
0085 BA22 OUT 0x12,R2
(0043)
(0044) Spi_init();
0086 DFDE RCALL _Spi_init
0087 C00B RJMP 0x0093
(0045)
(0046) while(1)
(0047) {
(0048) for(data=0;data<111;data++)
0088 2744 CLR R20
0089 C007 RJMP 0x0091
(0049)
(0050) {
(0051) delay(1000);
008A EE08 LDI R16,0xE8
008B E013 LDI R17,3
008C DFC9 RCALL _delay
(0052) Spi_Transmit(data);
FILE: <library>
008D 2F04 MOV R16,R20
008E 2711 CLR R17
008F DFDD RCALL _Spi_Transmit
0090 9543 INC R20
0091 364F CPI R20,0x6F
0092 F3B8 BCS 0x008A
0093 CFF4 RJMP 0x0088
0094 9508 RET
pop_gset2:
0095 E0E2 LDI R30,2
0096 940C00A4 JMP pop
push_gset5:
0098 92FA ST R15,-Y
0099 92EA ST R14,-Y
push_gset4:
009A 92DA ST R13,-Y
009B 92CA ST R12,-Y
push_gset3:
009C 92BA ST R11,-Y
009D 92AA ST R10,-Y
push_gset2:
009E 937A ST R23,-Y
009F 936A ST R22,-Y
push_gset1:
00A0 935A ST R21,-Y
00A1 934A ST R20,-Y
00A2 9508 RET
pop_gset1:
00A3 E0E1 LDI R30,1
pop:
00A4 9149 LD R20,Y+
00A5 9159 LD R21,Y+
00A6 FDE0 SBRC R30,0
00A7 9508 RET
00A8 9169 LD R22,Y+
00A9 9179 LD R23,Y+
00AA FDE1 SBRC R30,1
00AB 9508 RET
00AC 90A9 LD R10,Y+
00AD 90B9 LD R11,Y+
00AE FDE2 SBRC R30,2
00AF 9508 RET
00B0 90C9 LD R12,Y+
00B1 90D9 LD R13,Y+
00B2 FDE3 SBRC R30,3
00B3 9508 RET
00B4 90E9 LD R14,Y+
00B5 90F9 LD R15,Y+
00B6 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -